More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 144 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 20175153 | 150 days ago | IN | 0 ETH | 0.00019901 | ||||
Transfer | 19755695 | 209 days ago | IN | 0 ETH | 0.00036596 | ||||
Approve | 19503824 | 244 days ago | IN | 0 ETH | 0.00077731 | ||||
Approve | 19093921 | 302 days ago | IN | 0 ETH | 0.00059135 | ||||
Approve | 18873436 | 333 days ago | IN | 0 ETH | 0.00069367 | ||||
Transfer | 18873419 | 333 days ago | IN | 0 ETH | 0.00082555 | ||||
Transfer | 18873415 | 333 days ago | IN | 0 ETH | 0.00072219 | ||||
Transfer | 18873410 | 333 days ago | IN | 0 ETH | 0.0007536 | ||||
Transfer | 18873387 | 333 days ago | IN | 0 ETH | 0.00069539 | ||||
Transfer | 18873375 | 333 days ago | IN | 0 ETH | 0.0007434 | ||||
Approve | 18872888 | 333 days ago | IN | 0 ETH | 0.00073323 | ||||
Transfer | 18872882 | 333 days ago | IN | 0 ETH | 0.00111754 | ||||
Approve | 18833247 | 338 days ago | IN | 0 ETH | 0.00165536 | ||||
Approve | 18731124 | 353 days ago | IN | 0 ETH | 0.00179934 | ||||
Approve | 18404117 | 398 days ago | IN | 0 ETH | 0.00018318 | ||||
Approve | 18398825 | 399 days ago | IN | 0 ETH | 0.00037883 | ||||
Approve | 18277509 | 416 days ago | IN | 0 ETH | 0.00074902 | ||||
Transfer | 18277482 | 416 days ago | IN | 0 ETH | 0.00052212 | ||||
Approve | 18216639 | 425 days ago | IN | 0 ETH | 0.000323 | ||||
Approve | 18204820 | 426 days ago | IN | 0 ETH | 0.00036359 | ||||
Approve | 18041840 | 449 days ago | IN | 0 ETH | 0.000926 | ||||
Approve | 18041739 | 449 days ago | IN | 0 ETH | 0.000926 | ||||
Approve | 18039039 | 449 days ago | IN | 0 ETH | 0.00029836 | ||||
Approve | 18038006 | 450 days ago | IN | 0 ETH | 0.00067225 | ||||
Approve | 18031420 | 451 days ago | IN | 0 ETH | 0.00031039 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
20175161 | 150 days ago | 0.00943115 ETH | ||||
20175161 | 150 days ago | 0.05658691 ETH | ||||
20175161 | 150 days ago | 0.02829345 ETH | ||||
20175161 | 150 days ago | 0.09431152 ETH | ||||
19503827 | 244 days ago | 0.00073364 ETH | ||||
19503827 | 244 days ago | 0.00440186 ETH | ||||
19503827 | 244 days ago | 0.00220093 ETH | ||||
19503827 | 244 days ago | 0.00733644 ETH | ||||
19093927 | 302 days ago | 0.0021532 ETH | ||||
19093927 | 302 days ago | 0.01291921 ETH | ||||
19093927 | 302 days ago | 0.0064596 ETH | ||||
19093927 | 302 days ago | 0.02153202 ETH | ||||
18873445 | 333 days ago | 0.0018607 ETH | ||||
18873445 | 333 days ago | 0.01116424 ETH | ||||
18873445 | 333 days ago | 0.00558212 ETH | ||||
18873445 | 333 days ago | 0.01860707 ETH | ||||
18872890 | 333 days ago | 0.00062338 ETH | ||||
18872890 | 333 days ago | 0.00374029 ETH | ||||
18872890 | 333 days ago | 0.00187014 ETH | ||||
18872890 | 333 days ago | 0.00623381 ETH | ||||
18731126 | 353 days ago | 0.00229668 ETH | ||||
18731126 | 353 days ago | 0.01378009 ETH | ||||
18731126 | 353 days ago | 0.00689004 ETH | ||||
18731126 | 353 days ago | 0.02296683 ETH | ||||
18277519 | 416 days ago | 0.00202868 ETH |
Loading...
Loading
Contract Name:
SpriteOnsenSolar
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-03-12 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.19; 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 IFactory { function createPair(address tokenA, address tokenB) external returns (address pair); function getPair(address tokenA, address tokenB) external view returns (address pair); } interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); 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; } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); (bool success, ) = recipient.call{value: amount}(""); require( success, "Address: unable to send value, recipient may have reverted" ); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue( target, data, value, "Address: low-level call with value failed" ); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require( address(this).balance >= value, "Address: insufficient balance for call" ); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}( data ); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall( target, data, "Address: low-level static call failed" ); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall( target, data, "Address: low-level delegate call failed" ); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns (bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } 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 to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, 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) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } contract SpriteOnsenSolar is Ownable, ERC20 { using Address for address; IRouter public uniswapV2Router; address public immutable uniswapV2Pair; string private constant _name = "Sprite Onsen: Solar Token"; string private constant _symbol = "SOLAR"; uint256 public initialSupply = 40000 * (10**18); bool private _swapping; uint256 public minimumTokensBeforeSwap = initialSupply * 25 / 100000; address public targetAWallet; address public targetBWallet; address public targetCWallet; address public USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48; struct CustomTaxPeriod { bytes23 periodName; uint8 targetAFeeOnBuy; uint8 targetAFeeOnSell; uint8 targetBFeeOnBuy; uint8 targetBFeeOnSell; uint8 targetCFeeOnBuy; uint8 targetCFeeOnSell; } // Base taxes CustomTaxPeriod private _base = CustomTaxPeriod("base", 5, 5, 5, 5, 1, 1); mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) public automatedMarketMakerPairs; uint8 private _targetAFee; uint8 private _targetBFee; uint8 private _targetCFee; uint8 private _totalFee; event AutomatedMarketMakerPairChange(address indexed pair, bool indexed value); event UniswapV2RouterChange(address indexed newAddress, address indexed oldAddress); event WalletChange(string indexed indentifier,address indexed newWallet,address indexed oldWallet); event FeeChange(string indexed identifier,uint8 targetAFee, uint8 targetBFee, uint8 targetCFee); event CustomTaxPeriodChange(uint256 indexed newValue,uint256 indexed oldValue,string indexed taxType,bytes23 period); event ExcludeFromFeesChange(address indexed account, bool isExcluded); event MinTokenAmountBeforeSwapChange(uint256 indexed newValue, uint256 indexed oldValue); event ClaimOverflow(address token, uint256 amount); event FeesApplied(uint8 targetAFee, uint8 targetBFee, uint8 targetCFee, uint8 totalFee); constructor() ERC20(_name, _symbol) { targetAWallet = owner(); targetBWallet = owner(); targetCWallet = owner(); IRouter _uniswapV2Router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address _uniswapV2Pair = IFactory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = _uniswapV2Pair; _setAutomatedMarketMakerPair(_uniswapV2Pair, true); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _mint(owner(), initialSupply); } receive() external payable {} function _setAutomatedMarketMakerPair(address pair, bool value) private { require(automatedMarketMakerPairs[pair] != value,"Test Token: Automated market maker pair is already set to that value"); automatedMarketMakerPairs[pair] = value; emit AutomatedMarketMakerPairChange(pair, value); } function excludeFromFees(address account, bool excluded) external onlyOwner { require(_isExcludedFromFee[account] != excluded,"Test Token: Account is already the value of 'excluded'"); _isExcludedFromFee[account] = excluded; emit ExcludeFromFeesChange(account, excluded); } function setWallets(address newTargetAWallet, address newTargetBWallet, address newTargetCWallet) external onlyOwner { if (targetAWallet != newTargetAWallet) { require(newTargetAWallet != address(0), "Test Token: The targetAWallet cannot be 0"); emit WalletChange("targetAWallet", newTargetAWallet, targetAWallet); targetAWallet = newTargetAWallet; } if (targetBWallet != newTargetBWallet) { require(newTargetBWallet != address(0), "Test Token: The targetBWallet cannot be 0"); emit WalletChange("targetBWallet", newTargetBWallet, targetBWallet); targetBWallet = newTargetBWallet; } if (targetCWallet != newTargetCWallet) { require(newTargetCWallet != address(0), "Test Token: The targetCWallet cannot be 0"); emit WalletChange("targetCWallet", newTargetCWallet, targetCWallet); targetCWallet = newTargetCWallet; } } // Base fees function setBaseFeesOnBuy(uint8 _targetAFeeOnBuy, uint8 _targetBFeeOnBuy, uint8 _targetCFeeOnBuy) external onlyOwner { _setCustomBuyTaxPeriod(_base,_targetAFeeOnBuy,_targetBFeeOnBuy, _targetCFeeOnBuy); emit FeeChange("baseFees-Buy",_targetAFeeOnBuy,_targetBFeeOnBuy, _targetCFeeOnBuy); } function setBaseFeesOnSell(uint8 _targetAFeeOnSell, uint8 _targetBFeeOnSell, uint8 _targetCFeeOnSell ) external onlyOwner { _setCustomSellTaxPeriod(_base,_targetAFeeOnSell, _targetBFeeOnSell, _targetCFeeOnSell); emit FeeChange("baseFees-Sell",_targetAFeeOnSell, _targetBFeeOnSell, _targetCFeeOnSell); } function setUniswapRouter(address newAddress) external onlyOwner { require(newAddress != address(uniswapV2Router),"Test Token: The router already has that address"); emit UniswapV2RouterChange(newAddress, address(uniswapV2Router)); uniswapV2Router = IRouter(newAddress); } function setMinimumTokensBeforeSwap(uint256 newValue) external onlyOwner { require(newValue != minimumTokensBeforeSwap,"Test Token: Cannot update minimumTokensBeforeSwap to same value"); emit MinTokenAmountBeforeSwapChange(newValue, minimumTokensBeforeSwap); minimumTokensBeforeSwap = newValue; } function claimETHOverflow(uint256 amount) external onlyOwner { require(amount <= address(this).balance, "Test Token: Cannot send more than contract balance"); (bool success, ) = address(owner()).call{ value: amount }(""); if (success) { emit ClaimOverflow(uniswapV2Router.WETH(), amount); } } // Getters function getBaseBuyFees() external view returns (uint8,uint8, uint8) { return (_base.targetAFeeOnBuy,_base.targetBFeeOnBuy, _base.targetCFeeOnBuy); } function getBaseSellFees() external view returns (uint8,uint8,uint8) { return (_base.targetAFeeOnSell,_base.targetBFeeOnSell, _base.targetCFeeOnSell); } // Main 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; } _adjustTaxes(automatedMarketMakerPairs[from], automatedMarketMakerPairs[to]); bool canSwap = balanceOf(address(this)) >= minimumTokensBeforeSwap; if ( canSwap && !_swapping && _totalFee > 0 && automatedMarketMakerPairs[to] ) { _swapping = true; _swapAndTransfer(); _swapping = false; } bool takeFee = !_swapping; if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { takeFee = false; } if (takeFee && _totalFee > 0) { uint256 fee = (amount * _totalFee) / 100; amount = amount - fee; super._transfer(from, address(this), fee); } super._transfer(from, to, amount); } function _adjustTaxes(bool isBuyFromLp,bool isSelltoLp) private { _targetAFee = 0; _targetBFee = 0; _targetCFee = 0; if (isBuyFromLp) { _targetAFee = _base.targetAFeeOnBuy; _targetBFee = _base.targetBFeeOnBuy; _targetCFee = _base.targetCFeeOnBuy; } if (isSelltoLp) { _targetAFee = _base.targetAFeeOnSell; _targetBFee = _base.targetBFeeOnSell; _targetCFee = _base.targetCFeeOnSell; } _totalFee = _targetAFee + _targetBFee + _targetCFee; emit FeesApplied(_targetAFee, _targetBFee, _targetCFee, _totalFee); } function _setCustomSellTaxPeriod(CustomTaxPeriod storage map,uint8 _targetAFeeOnSell, uint8 _targetBFeeOnSell, uint8 _targetCFeeOnSell ) private { if (map.targetAFeeOnSell != _targetAFeeOnSell) { emit CustomTaxPeriodChange(_targetAFeeOnSell,map.targetAFeeOnSell,"targetAFeeOnSell",map.periodName); map.targetAFeeOnSell = _targetAFeeOnSell; } if (map.targetBFeeOnSell != _targetBFeeOnSell) { emit CustomTaxPeriodChange(_targetBFeeOnSell,map.targetBFeeOnSell,"targetBFeeOnSell",map.periodName); map.targetBFeeOnSell = _targetBFeeOnSell; } if (map.targetCFeeOnSell != _targetCFeeOnSell) { emit CustomTaxPeriodChange(_targetCFeeOnSell,map.targetCFeeOnSell,"targetCFeeOnSell",map.periodName); map.targetCFeeOnSell = _targetCFeeOnSell; } } function _setCustomBuyTaxPeriod(CustomTaxPeriod storage map,uint8 _targetAFeeOnBuy, uint8 _targetBFeeOnBuy, uint8 _targetCFeeOnBuy) private { if (map.targetAFeeOnBuy != _targetAFeeOnBuy) { emit CustomTaxPeriodChange(_targetAFeeOnBuy,map.targetAFeeOnBuy,"targetAFeeOnBuy",map.periodName); map.targetAFeeOnBuy = _targetAFeeOnBuy; } if (map.targetBFeeOnBuy != _targetBFeeOnBuy) { emit CustomTaxPeriodChange(_targetBFeeOnBuy,map.targetBFeeOnBuy,"targetBFeeOnBuy",map.periodName); map.targetBFeeOnBuy = _targetBFeeOnBuy; } if (map.targetCFeeOnBuy != _targetCFeeOnBuy) { emit CustomTaxPeriodChange(_targetCFeeOnBuy,map.targetCFeeOnBuy,"targetCFeeOnBuy",map.periodName); map.targetCFeeOnBuy = _targetCFeeOnBuy; } } function _swapAndTransfer() private { uint256 contractBalance = balanceOf(address(this)); uint256 initialETHBalance = address(this).balance; uint16 _totalFeePrior = _totalFee; _swapTokensForETH(contractBalance); uint256 ETHBalanceAfterSwap = address(this).balance - initialETHBalance; uint256 amountETHTargetA = (ETHBalanceAfterSwap * _targetAFee) / _totalFeePrior; uint256 amountETHTargetB = (ETHBalanceAfterSwap * _targetBFee) / _totalFeePrior; uint256 amountETHTargetC = ETHBalanceAfterSwap - (amountETHTargetA + amountETHTargetB); Address.sendValue(payable(targetAWallet),amountETHTargetA); _swapETHForCustomToken(amountETHTargetB, USDC, targetBWallet); _swapETHForCustomToken(amountETHTargetC, USDC, targetCWallet); } function _swapTokensForETH(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 1, // accept any amount of ETH path, address(this), block.timestamp ); } function _swapETHForCustomToken(uint256 ethAmount, address token, address wallet) private { address[] memory path = new address[](2); path[0] = uniswapV2Router.WETH(); path[1] = token; uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value : ethAmount}( 1, // accept any amount of ETH path, wallet, 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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"AutomatedMarketMakerPairChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClaimOverflow","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":true,"internalType":"string","name":"taxType","type":"string"},{"indexed":false,"internalType":"bytes23","name":"period","type":"bytes23"}],"name":"CustomTaxPeriodChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFeesChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"identifier","type":"string"},{"indexed":false,"internalType":"uint8","name":"targetAFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"targetBFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"targetCFee","type":"uint8"}],"name":"FeeChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"targetAFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"targetBFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"targetCFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"totalFee","type":"uint8"}],"name":"FeesApplied","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"MinTokenAmountBeforeSwapChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UniswapV2RouterChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"indentifier","type":"string"},{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"WalletChange","type":"event"},{"inputs":[],"name":"USDC","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claimETHOverflow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBaseBuyFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaseSellFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","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":"initialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_targetAFeeOnBuy","type":"uint8"},{"internalType":"uint8","name":"_targetBFeeOnBuy","type":"uint8"},{"internalType":"uint8","name":"_targetCFeeOnBuy","type":"uint8"}],"name":"setBaseFeesOnBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_targetAFeeOnSell","type":"uint8"},{"internalType":"uint8","name":"_targetBFeeOnSell","type":"uint8"},{"internalType":"uint8","name":"_targetCFeeOnSell","type":"uint8"}],"name":"setBaseFeesOnSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMinimumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setUniswapRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTargetAWallet","type":"address"},{"internalType":"address","name":"newTargetBWallet","type":"address"},{"internalType":"address","name":"newTargetCWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"targetAWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"targetBWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"targetCWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a0604052690878678326eac9000000600755620186a06007546019620000279190620005cc565b620000339190620005ec565b600955600d80546001600160a01b03191673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb481790556040805160e081018252636261736560e01b8152600560208201819052918101829052606081018290526080810191909152600160a0820181905260c090910152600e8054690101050505056261736560981b6001600160e81b0319909116179055348015620000cb57600080fd5b506040518060400160405280601981526020017f537072697465204f6e73656e3a20536f6c617220546f6b656e000000000000008152506040518060400160405280600581526020016429a7a620a960d91b815250600062000132620003ea60201b60201c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060046200018a8382620006b3565b506005620001998282620006b3565b505060008054600a80546001600160a01b039092166001600160a01b03199283168117909155600b8054831682179055600c80549092161790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9350839163c45a01559160048083019260209291908290030181865afa15801562000227573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024d91906200077f565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200029b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c191906200077f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200030f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033591906200077f565b600680546001600160a01b0319166001600160a01b03858116919091179091558116608052905062000369816001620003ee565b6001600f6000620003826000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600f909252902080549091166001179055620003e2620003d96000546001600160a01b031690565b600754620004ec565b5050620007c7565b3390565b6001600160a01b03821660009081526010602052604090205481151560ff909116151503620004985760405162461bcd60e51b8152602060048201526044602482018190527f5465737420546f6b656e3a204175746f6d61746564206d61726b6574206d616b908201527f6572207061697220697320616c72656164792073657420746f20746861742076606482015263616c756560e01b608482015260a4015b60405180910390fd5b6001600160a01b038216600081815260106020526040808220805460ff191685151590811790915590519092917fa666b9b2dc2c8f2d86fda7ba3a115be30d3a958fd84d359cbc6bc919df97990a91a35050565b6001600160a01b038216620005445760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200048f565b8060036000828254620005589190620007b1565b90915550506001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620005e657620005e6620005b6565b92915050565b6000826200060a57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200063a57607f821691505b6020821081036200065b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005b157600081815260208120601f850160051c810160208610156200068a5750805b601f850160051c820191505b81811015620006ab5782815560010162000696565b505050505050565b81516001600160401b03811115620006cf57620006cf6200060f565b620006e781620006e0845462000625565b8462000661565b602080601f8311600181146200071f5760008415620007065750858301515b600019600386901b1c1916600185901b178555620006ab565b600085815260208120601f198616915b8281101562000750578886015182559484019460019091019084016200072f565b50858210156200076f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200079257600080fd5b81516001600160a01b0381168114620007aa57600080fd5b9392505050565b80820180821115620005e657620005e6620005b6565b608051612532620007e3600039600061036b01526125326000f3fe6080604052600436106101e75760003560e01c806389af172511610102578063c024666811610095578063e3ed417f11610064578063e3ed417f146105e5578063e625724614610605578063f2fde38b14610625578063fe0175351461064557600080fd5b8063c02466681461053b578063cd43e2281461055b578063d2d7ad83146105af578063dd62ed3e146105c557600080fd5b8063a9059cbb116100d1578063a9059cbb146104ab578063aee50b1e146104cb578063b62496f5146104eb578063bea9849e1461051b57600080fd5b806389af1725146104385780638da5cb5b1461045857806395d89b4114610476578063a457c2d71461048b57600080fd5b8063378dc3dc1161017a578063715018a611610149578063715018a6146103c357806375cb1bd1146103d857806376dca835146103f857806389a302711461041857600080fd5b8063378dc3dc14610323578063395093511461033957806349bd5a5e1461035957806370a082311461038d57600080fd5b806318160ddd116101b657806318160ddd146102a85780631eb9caec146102c757806323b872dd146102e7578063313ce5671461030757600080fd5b806306fdde03146101f3578063095ea7b31461021e578063098df5851461024e5780631694505e1461027057600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b50610208610679565b6040516102159190612038565b60405180910390f35b34801561022a57600080fd5b5061023e61023936600461209e565b61070b565b6040519015158152602001610215565b34801561025a57600080fd5b5061026e6102693660046120ca565b610725565b005b34801561027c57600080fd5b50600654610290906001600160a01b031681565b6040516001600160a01b039091168152602001610215565b3480156102b457600080fd5b506003545b604051908152602001610215565b3480156102d357600080fd5b50600c54610290906001600160a01b031681565b3480156102f357600080fd5b5061023e6103023660046120e3565b6108d3565b34801561031357600080fd5b5060405160128152602001610215565b34801561032f57600080fd5b506102b960075481565b34801561034557600080fd5b5061023e61035436600461209e565b6108f7565b34801561036557600080fd5b506102907f000000000000000000000000000000000000000000000000000000000000000081565b34801561039957600080fd5b506102b96103a8366004612124565b6001600160a01b031660009081526001602052604090205490565b3480156103cf57600080fd5b5061026e610919565b3480156103e457600080fd5b5061026e6103f3366004612148565b61098d565b34801561040457600080fd5b5061026e6104133660046121a9565b610c98565b34801561042457600080fd5b50600d54610290906001600160a01b031681565b34801561044457600080fd5b50600b54610290906001600160a01b031681565b34801561046457600080fd5b506000546001600160a01b0316610290565b34801561048257600080fd5b50610208610d3c565b34801561049757600080fd5b5061023e6104a636600461209e565b610d4b565b3480156104b757600080fd5b5061023e6104c636600461209e565b610dc6565b3480156104d757600080fd5b5061026e6104e63660046120ca565b610dd4565b3480156104f757600080fd5b5061023e610506366004612124565b60106020526000908152604090205460ff1681565b34801561052757600080fd5b5061026e610536366004612124565b610ea8565b34801561054757600080fd5b5061026e6105563660046121ec565b610fa5565b34801561056757600080fd5b50600e5460ff600160b81b8204811691600160c81b8104821691600160d81b909104165b6040805160ff94851681529284166020840152921691810191909152606001610215565b3480156105bb57600080fd5b506102b960095481565b3480156105d157600080fd5b506102b96105e036600461222a565b6110bd565b3480156105f157600080fd5b50600a54610290906001600160a01b031681565b34801561061157600080fd5b5061026e6106203660046121a9565b6110e8565b34801561063157600080fd5b5061026e610640366004612124565b61113c565b34801561065157600080fd5b50600e5460ff600160c01b8204811691600160d01b8104821691600160e01b9091041661058b565b60606004805461068890612258565b80601f01602080910402602001604051908101604052809291908181526020018280546106b490612258565b80156107015780601f106106d657610100808354040283529160200191610701565b820191906000526020600020905b8154815290600101906020018083116106e457829003601f168201915b5050505050905090565b600033610719818585611226565b60019150505b92915050565b6000546001600160a01b031633146107585760405162461bcd60e51b815260040161074f90612292565b60405180910390fd5b478111156107c35760405162461bcd60e51b815260206004820152603260248201527f5465737420546f6b656e3a2043616e6e6f742073656e64206d6f7265207468616044820152716e20636f6e74726163742062616c616e636560701b606482015260840161074f565b600080546040516001600160a01b039091169083908381818185875af1925050503d8060008114610810576040519150601f19603f3d011682016040523d82523d6000602084013e610815565b606091505b5050905080156108cf57600654604080516315ab88c960e31b815290517fb16273d5dd95f4997020a9e2e429331d472940f09fe08af28db9672639cc251d926001600160a01b03169163ad5c46489160048083019260209291908290030181865afa158015610888573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ac91906122c7565b604080516001600160a01b03909216825260208201859052015b60405180910390a15b5050565b6000336108e185828561134a565b6108ec8585856113c4565b506001949350505050565b60003361071981858561090a83836110bd565b61091491906122fa565b611226565b6000546001600160a01b031633146109435760405162461bcd60e51b815260040161074f90612292565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146109b75760405162461bcd60e51b815260040161074f90612292565b600a546001600160a01b03848116911614610aab576001600160a01b038316610a345760405162461bcd60e51b815260206004820152602960248201527f5465737420546f6b656e3a20546865207461726765744157616c6c657420636160448201526806e6e6f7420626520360bc1b606482015260840161074f565b600a546040516c1d185c99d95d1055d85b1b195d609a1b81526001600160a01b0391821691851690600d01604051908190038120907f4af24be54adc5e716fbcaa3fca0ad593e28dff90dffd49487c0a33b1547c6b5290600090a4600a80546001600160a01b0319166001600160a01b0385161790555b600b546001600160a01b03838116911614610b9f576001600160a01b038216610b285760405162461bcd60e51b815260206004820152602960248201527f5465737420546f6b656e3a20546865207461726765744257616c6c657420636160448201526806e6e6f7420626520360bc1b606482015260840161074f565b600b546040516c1d185c99d95d1095d85b1b195d609a1b81526001600160a01b0391821691841690600d01604051908190038120907f4af24be54adc5e716fbcaa3fca0ad593e28dff90dffd49487c0a33b1547c6b5290600090a4600b80546001600160a01b0319166001600160a01b0384161790555b600c546001600160a01b03828116911614610c93576001600160a01b038116610c1c5760405162461bcd60e51b815260206004820152602960248201527f5465737420546f6b656e3a20546865207461726765744357616c6c657420636160448201526806e6e6f7420626520360bc1b606482015260840161074f565b600c546040516c1d185c99d95d10d5d85b1b195d609a1b81526001600160a01b0391821691831690600d01604051908190038120907f4af24be54adc5e716fbcaa3fca0ad593e28dff90dffd49487c0a33b1547c6b5290600090a4600c80546001600160a01b0319166001600160a01b0383161790555b505050565b6000546001600160a01b03163314610cc25760405162461bcd60e51b815260040161074f90612292565b610ccf600e84848461159e565b6040516c18985cd95199595ccb54d95b1b609a1b8152600d015b6040805191829003822060ff86811684528581166020850152841683830152905190917f0fc5b99eebb78c10fca186b25746da968ffa81b56e2a79e89fd5ed16f238b576919081900360600190a2505050565b60606005805461068890612258565b60003381610d5982866110bd565b905083811015610db95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161074f565b6108ec8286868403611226565b6000336107198185856113c4565b6000546001600160a01b03163314610dfe5760405162461bcd60e51b815260040161074f90612292565b6009548103610e755760405162461bcd60e51b815260206004820152603f60248201527f5465737420546f6b656e3a2043616e6e6f7420757064617465206d696e696d7560448201527f6d546f6b656e734265666f72655377617020746f2073616d652076616c756500606482015260840161074f565b60095460405182907f5b0491f767c1463bea8972339f785795be1a38784cc6483cf649cdcbb28c46b090600090a3600955565b6000546001600160a01b03163314610ed25760405162461bcd60e51b815260040161074f90612292565b6006546001600160a01b0390811690821603610f485760405162461bcd60e51b815260206004820152602f60248201527f5465737420546f6b656e3a2054686520726f7574657220616c7265616479206860448201526e61732074686174206164647265737360881b606482015260840161074f565b6006546040516001600160a01b03918216918316907f2afbff3ed601a8723765c7072d8ea8445e08f6f1874afd34a2b747a272c3ebad90600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610fcf5760405162461bcd60e51b815260040161074f90612292565b6001600160a01b0382166000908152600f602052604090205481151560ff90911615150361105e5760405162461bcd60e51b815260206004820152603660248201527f5465737420546f6b656e3a204163636f756e7420697320616c7265616479207460448201527568652076616c7565206f6620276578636c756465642760501b606482015260840161074f565b6001600160a01b0382166000818152600f6020908152604091829020805460ff191685151590811790915591519182527fa856ba9fdc54a5434b2359874c95612f520a2d7f858864ae98d15c1b2099ca8b910160405180910390a25050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6000546001600160a01b031633146111125760405162461bcd60e51b815260040161074f90612292565b61111f600e84848461174c565b6040516b62617365466565732d42757960a01b8152600c01610ce9565b6000546001600160a01b031633146111665760405162461bcd60e51b815260040161074f90612292565b6001600160a01b0381166111cb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161074f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166112885760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161074f565b6001600160a01b0382166112e95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161074f565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061135684846110bd565b905060001981146113be57818110156113b15760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161074f565b6113be8484848403611226565b50505050565b6001600160a01b0383166113ea5760405162461bcd60e51b815260040161074f9061230d565b6001600160a01b0382166114105760405162461bcd60e51b815260040161074f90612352565b8060000361142457610c93838360006118f7565b6001600160a01b038084166000908152601060205260408082205492851682529020546114579160ff9081169116611a28565b6009543060009081526001602052604090205410801590819061147d575060085460ff16155b801561149457506011546301000000900460ff1615155b80156114b857506001600160a01b03831660009081526010602052604090205460ff165b156114dd576008805460ff191660011790556114d2611b77565b6008805460ff191690555b6008546001600160a01b0385166000908152600f602052604090205460ff9182161591168061152457506001600160a01b0384166000908152600f602052604090205460ff165b1561152d575060005b80801561154557506011546301000000900460ff1615155b1561158c57601154600090606490611567906301000000900460ff1686612395565b61157191906123ac565b905061157d81856123ce565b935061158a8630836118f7565b505b6115978585856118f7565b5050505050565b835460ff848116600160c01b909204161461162b576040516f1d185c99d95d1051995953db94d95b1b60821b81526010016040519081900381208554909160ff600160c01b8304811692908716916000805160206124dd8339815191529161160c9160489190911b906123e1565b60405180910390a4835460ff60c01b1916600160c01b60ff8516021784555b835460ff838116600160d01b90920416146116b8576040516f1d185c99d95d1091995953db94d95b1b60821b81526010016040519081900381208554909160ff600160d01b8304811692908616916000805160206124dd833981519152916116999160489190911b906123e1565b60405180910390a4835460ff60d01b1916600160d01b60ff8416021784555b835460ff828116600160e01b90920416146113be576040516f1d185c99d95d10d1995953db94d95b1b60821b81526010016040519081900381208554909160ff600160e01b8304811692908516916000805160206124dd833981519152916117269160489190911b906123e1565b60405180910390a4835460ff8216600160e01b0260ff60e01b1990911617845550505050565b835460ff848116600160b81b90920416146117d8576040516e746172676574414665654f6e42757960881b8152600f016040519081900381208554909160ff600160b81b8304811692908716916000805160206124dd833981519152916117b99160489190911b906123e1565b60405180910390a4835460ff60b81b1916600160b81b60ff8516021784555b835460ff838116600160c81b9092041614611864576040516e746172676574424665654f6e42757960881b8152600f016040519081900381208554909160ff600160c81b8304811692908616916000805160206124dd833981519152916118459160489190911b906123e1565b60405180910390a4835460ff60c81b1916600160c81b60ff8416021784555b835460ff828116600160d81b90920416146113be576040516e746172676574434665654f6e42757960881b8152600f016040519081900381208554909160ff600160d81b8304811692908516916000805160206124dd833981519152916118d19160489190911b906123e1565b60405180910390a4835460ff8216600160d81b0260ff60d81b1990911617845550505050565b6001600160a01b03831661191d5760405162461bcd60e51b815260040161074f9061230d565b6001600160a01b0382166119435760405162461bcd60e51b815260040161074f90612352565b6001600160a01b038316600090815260016020526040902054818110156119bb5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161074f565b6001600160a01b0380851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a1b9086815260200190565b60405180910390a36113be565b6011805462ffffff191690558115611a8157600e5460118054600160b81b830460ff90811661ffff1990921691909117610100600160c81b85048316021762ff00001916600160d81b9093041662010000029190911790555b8015611ace57600e5460118054600160c01b830460ff90811661ffff1990921691909117610100600160d01b85048316021762ff00001916600160e01b9093041662010000029190911790555b60115460ff620100008204811691611aee916101008204811691166123f8565b611af891906123f8565b6011805463ff000000198116630100000060ff9485168102918217938490556040805193861692861692909217835261010084048516602084015262010000840485169183019190915290910490911660608201527fe732842e0997f2bd5f26f9b53d4f761dfb12c53c4352fa949eb7b4d8522dd25b906080016108c6565b3060009081526001602052604090205460115447906301000000900460ff16611b9f83611c72565b6000611bab83476123ce565b60115490915060009061ffff841690611bc79060ff1684612395565b611bd191906123ac565b60115490915060009061ffff851690611bf290610100900460ff1685612395565b611bfc91906123ac565b90506000611c0a82846122fa565b611c1490856123ce565b600a54909150611c2d906001600160a01b031684611dcc565b600d54600b54611c4b9184916001600160a01b039182169116611ee5565b600d54600c54611c699183916001600160a01b039182169116611ee5565b50505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611ca757611ca7612411565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611d00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2491906122c7565b81600181518110611d3757611d37612411565b6001600160a01b039283166020918202929092010152600654611d5d9130911684611226565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d9690859060019086903090429060040161246b565b600060405180830381600087803b158015611db057600080fd5b505af1158015611dc4573d6000803e3d6000fd5b505050505050565b80471015611e1c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161074f565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611e69576040519150601f19603f3d011682016040523d82523d6000602084013e611e6e565b606091505b5050905080610c935760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161074f565b6040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611f4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7391906122c7565b81600081518110611f8657611f86612411565b60200260200101906001600160a01b031690816001600160a01b0316815250508281600181518110611fba57611fba612411565b6001600160a01b03928316602091820292909201015260065460405163b6f9de9560e01b815291169063b6f9de95908690612000906001908690889042906004016124a7565b6000604051808303818588803b15801561201957600080fd5b505af115801561202d573d6000803e3d6000fd5b505050505050505050565b600060208083528351808285015260005b8181101561206557858101830151858201604001528201612049565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461209b57600080fd5b50565b600080604083850312156120b157600080fd5b82356120bc81612086565b946020939093013593505050565b6000602082840312156120dc57600080fd5b5035919050565b6000806000606084860312156120f857600080fd5b833561210381612086565b9250602084013561211381612086565b929592945050506040919091013590565b60006020828403121561213657600080fd5b813561214181612086565b9392505050565b60008060006060848603121561215d57600080fd5b833561216881612086565b9250602084013561217881612086565b9150604084013561218881612086565b809150509250925092565b803560ff811681146121a457600080fd5b919050565b6000806000606084860312156121be57600080fd5b6121c784612193565b92506121d560208501612193565b91506121e360408501612193565b90509250925092565b600080604083850312156121ff57600080fd5b823561220a81612086565b91506020830135801515811461221f57600080fd5b809150509250929050565b6000806040838503121561223d57600080fd5b823561224881612086565b9150602083013561221f81612086565b600181811c9082168061226c57607f821691505b60208210810361228c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156122d957600080fd5b815161214181612086565b634e487b7160e01b600052601160045260246000fd5b8082018082111561071f5761071f6122e4565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b808202811582820484141761071f5761071f6122e4565b6000826123c957634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561071f5761071f6122e4565b68ffffffffffffffffff1991909116815260200190565b60ff818116838216019081111561071f5761071f6122e4565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156124605781516001600160a01b03168752958201959082019060010161243b565b509495945050505050565b85815284602082015260a06040820152600061248a60a0830186612427565b6001600160a01b0394909416606083015250608001529392505050565b8481526080602082015260006124c06080830186612427565b6001600160a01b0394909416604083015250606001529291505056fe00edc71549f0cbe47086c2237ce0cf874d6897fd1d7ce43ee6b65c0230d7606ea2646970667358221220887c35cf94838037583fa66360f6f2c9d75fa5d51be9fd323926428d5d8bbded64736f6c63430008130033
Deployed Bytecode
0x6080604052600436106101e75760003560e01c806389af172511610102578063c024666811610095578063e3ed417f11610064578063e3ed417f146105e5578063e625724614610605578063f2fde38b14610625578063fe0175351461064557600080fd5b8063c02466681461053b578063cd43e2281461055b578063d2d7ad83146105af578063dd62ed3e146105c557600080fd5b8063a9059cbb116100d1578063a9059cbb146104ab578063aee50b1e146104cb578063b62496f5146104eb578063bea9849e1461051b57600080fd5b806389af1725146104385780638da5cb5b1461045857806395d89b4114610476578063a457c2d71461048b57600080fd5b8063378dc3dc1161017a578063715018a611610149578063715018a6146103c357806375cb1bd1146103d857806376dca835146103f857806389a302711461041857600080fd5b8063378dc3dc14610323578063395093511461033957806349bd5a5e1461035957806370a082311461038d57600080fd5b806318160ddd116101b657806318160ddd146102a85780631eb9caec146102c757806323b872dd146102e7578063313ce5671461030757600080fd5b806306fdde03146101f3578063095ea7b31461021e578063098df5851461024e5780631694505e1461027057600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b50610208610679565b6040516102159190612038565b60405180910390f35b34801561022a57600080fd5b5061023e61023936600461209e565b61070b565b6040519015158152602001610215565b34801561025a57600080fd5b5061026e6102693660046120ca565b610725565b005b34801561027c57600080fd5b50600654610290906001600160a01b031681565b6040516001600160a01b039091168152602001610215565b3480156102b457600080fd5b506003545b604051908152602001610215565b3480156102d357600080fd5b50600c54610290906001600160a01b031681565b3480156102f357600080fd5b5061023e6103023660046120e3565b6108d3565b34801561031357600080fd5b5060405160128152602001610215565b34801561032f57600080fd5b506102b960075481565b34801561034557600080fd5b5061023e61035436600461209e565b6108f7565b34801561036557600080fd5b506102907f000000000000000000000000c713c7f681ee5960799c995edfe2e2ee508d512081565b34801561039957600080fd5b506102b96103a8366004612124565b6001600160a01b031660009081526001602052604090205490565b3480156103cf57600080fd5b5061026e610919565b3480156103e457600080fd5b5061026e6103f3366004612148565b61098d565b34801561040457600080fd5b5061026e6104133660046121a9565b610c98565b34801561042457600080fd5b50600d54610290906001600160a01b031681565b34801561044457600080fd5b50600b54610290906001600160a01b031681565b34801561046457600080fd5b506000546001600160a01b0316610290565b34801561048257600080fd5b50610208610d3c565b34801561049757600080fd5b5061023e6104a636600461209e565b610d4b565b3480156104b757600080fd5b5061023e6104c636600461209e565b610dc6565b3480156104d757600080fd5b5061026e6104e63660046120ca565b610dd4565b3480156104f757600080fd5b5061023e610506366004612124565b60106020526000908152604090205460ff1681565b34801561052757600080fd5b5061026e610536366004612124565b610ea8565b34801561054757600080fd5b5061026e6105563660046121ec565b610fa5565b34801561056757600080fd5b50600e5460ff600160b81b8204811691600160c81b8104821691600160d81b909104165b6040805160ff94851681529284166020840152921691810191909152606001610215565b3480156105bb57600080fd5b506102b960095481565b3480156105d157600080fd5b506102b96105e036600461222a565b6110bd565b3480156105f157600080fd5b50600a54610290906001600160a01b031681565b34801561061157600080fd5b5061026e6106203660046121a9565b6110e8565b34801561063157600080fd5b5061026e610640366004612124565b61113c565b34801561065157600080fd5b50600e5460ff600160c01b8204811691600160d01b8104821691600160e01b9091041661058b565b60606004805461068890612258565b80601f01602080910402602001604051908101604052809291908181526020018280546106b490612258565b80156107015780601f106106d657610100808354040283529160200191610701565b820191906000526020600020905b8154815290600101906020018083116106e457829003601f168201915b5050505050905090565b600033610719818585611226565b60019150505b92915050565b6000546001600160a01b031633146107585760405162461bcd60e51b815260040161074f90612292565b60405180910390fd5b478111156107c35760405162461bcd60e51b815260206004820152603260248201527f5465737420546f6b656e3a2043616e6e6f742073656e64206d6f7265207468616044820152716e20636f6e74726163742062616c616e636560701b606482015260840161074f565b600080546040516001600160a01b039091169083908381818185875af1925050503d8060008114610810576040519150601f19603f3d011682016040523d82523d6000602084013e610815565b606091505b5050905080156108cf57600654604080516315ab88c960e31b815290517fb16273d5dd95f4997020a9e2e429331d472940f09fe08af28db9672639cc251d926001600160a01b03169163ad5c46489160048083019260209291908290030181865afa158015610888573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ac91906122c7565b604080516001600160a01b03909216825260208201859052015b60405180910390a15b5050565b6000336108e185828561134a565b6108ec8585856113c4565b506001949350505050565b60003361071981858561090a83836110bd565b61091491906122fa565b611226565b6000546001600160a01b031633146109435760405162461bcd60e51b815260040161074f90612292565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146109b75760405162461bcd60e51b815260040161074f90612292565b600a546001600160a01b03848116911614610aab576001600160a01b038316610a345760405162461bcd60e51b815260206004820152602960248201527f5465737420546f6b656e3a20546865207461726765744157616c6c657420636160448201526806e6e6f7420626520360bc1b606482015260840161074f565b600a546040516c1d185c99d95d1055d85b1b195d609a1b81526001600160a01b0391821691851690600d01604051908190038120907f4af24be54adc5e716fbcaa3fca0ad593e28dff90dffd49487c0a33b1547c6b5290600090a4600a80546001600160a01b0319166001600160a01b0385161790555b600b546001600160a01b03838116911614610b9f576001600160a01b038216610b285760405162461bcd60e51b815260206004820152602960248201527f5465737420546f6b656e3a20546865207461726765744257616c6c657420636160448201526806e6e6f7420626520360bc1b606482015260840161074f565b600b546040516c1d185c99d95d1095d85b1b195d609a1b81526001600160a01b0391821691841690600d01604051908190038120907f4af24be54adc5e716fbcaa3fca0ad593e28dff90dffd49487c0a33b1547c6b5290600090a4600b80546001600160a01b0319166001600160a01b0384161790555b600c546001600160a01b03828116911614610c93576001600160a01b038116610c1c5760405162461bcd60e51b815260206004820152602960248201527f5465737420546f6b656e3a20546865207461726765744357616c6c657420636160448201526806e6e6f7420626520360bc1b606482015260840161074f565b600c546040516c1d185c99d95d10d5d85b1b195d609a1b81526001600160a01b0391821691831690600d01604051908190038120907f4af24be54adc5e716fbcaa3fca0ad593e28dff90dffd49487c0a33b1547c6b5290600090a4600c80546001600160a01b0319166001600160a01b0383161790555b505050565b6000546001600160a01b03163314610cc25760405162461bcd60e51b815260040161074f90612292565b610ccf600e84848461159e565b6040516c18985cd95199595ccb54d95b1b609a1b8152600d015b6040805191829003822060ff86811684528581166020850152841683830152905190917f0fc5b99eebb78c10fca186b25746da968ffa81b56e2a79e89fd5ed16f238b576919081900360600190a2505050565b60606005805461068890612258565b60003381610d5982866110bd565b905083811015610db95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161074f565b6108ec8286868403611226565b6000336107198185856113c4565b6000546001600160a01b03163314610dfe5760405162461bcd60e51b815260040161074f90612292565b6009548103610e755760405162461bcd60e51b815260206004820152603f60248201527f5465737420546f6b656e3a2043616e6e6f7420757064617465206d696e696d7560448201527f6d546f6b656e734265666f72655377617020746f2073616d652076616c756500606482015260840161074f565b60095460405182907f5b0491f767c1463bea8972339f785795be1a38784cc6483cf649cdcbb28c46b090600090a3600955565b6000546001600160a01b03163314610ed25760405162461bcd60e51b815260040161074f90612292565b6006546001600160a01b0390811690821603610f485760405162461bcd60e51b815260206004820152602f60248201527f5465737420546f6b656e3a2054686520726f7574657220616c7265616479206860448201526e61732074686174206164647265737360881b606482015260840161074f565b6006546040516001600160a01b03918216918316907f2afbff3ed601a8723765c7072d8ea8445e08f6f1874afd34a2b747a272c3ebad90600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610fcf5760405162461bcd60e51b815260040161074f90612292565b6001600160a01b0382166000908152600f602052604090205481151560ff90911615150361105e5760405162461bcd60e51b815260206004820152603660248201527f5465737420546f6b656e3a204163636f756e7420697320616c7265616479207460448201527568652076616c7565206f6620276578636c756465642760501b606482015260840161074f565b6001600160a01b0382166000818152600f6020908152604091829020805460ff191685151590811790915591519182527fa856ba9fdc54a5434b2359874c95612f520a2d7f858864ae98d15c1b2099ca8b910160405180910390a25050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6000546001600160a01b031633146111125760405162461bcd60e51b815260040161074f90612292565b61111f600e84848461174c565b6040516b62617365466565732d42757960a01b8152600c01610ce9565b6000546001600160a01b031633146111665760405162461bcd60e51b815260040161074f90612292565b6001600160a01b0381166111cb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161074f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166112885760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161074f565b6001600160a01b0382166112e95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161074f565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061135684846110bd565b905060001981146113be57818110156113b15760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161074f565b6113be8484848403611226565b50505050565b6001600160a01b0383166113ea5760405162461bcd60e51b815260040161074f9061230d565b6001600160a01b0382166114105760405162461bcd60e51b815260040161074f90612352565b8060000361142457610c93838360006118f7565b6001600160a01b038084166000908152601060205260408082205492851682529020546114579160ff9081169116611a28565b6009543060009081526001602052604090205410801590819061147d575060085460ff16155b801561149457506011546301000000900460ff1615155b80156114b857506001600160a01b03831660009081526010602052604090205460ff165b156114dd576008805460ff191660011790556114d2611b77565b6008805460ff191690555b6008546001600160a01b0385166000908152600f602052604090205460ff9182161591168061152457506001600160a01b0384166000908152600f602052604090205460ff165b1561152d575060005b80801561154557506011546301000000900460ff1615155b1561158c57601154600090606490611567906301000000900460ff1686612395565b61157191906123ac565b905061157d81856123ce565b935061158a8630836118f7565b505b6115978585856118f7565b5050505050565b835460ff848116600160c01b909204161461162b576040516f1d185c99d95d1051995953db94d95b1b60821b81526010016040519081900381208554909160ff600160c01b8304811692908716916000805160206124dd8339815191529161160c9160489190911b906123e1565b60405180910390a4835460ff60c01b1916600160c01b60ff8516021784555b835460ff838116600160d01b90920416146116b8576040516f1d185c99d95d1091995953db94d95b1b60821b81526010016040519081900381208554909160ff600160d01b8304811692908616916000805160206124dd833981519152916116999160489190911b906123e1565b60405180910390a4835460ff60d01b1916600160d01b60ff8416021784555b835460ff828116600160e01b90920416146113be576040516f1d185c99d95d10d1995953db94d95b1b60821b81526010016040519081900381208554909160ff600160e01b8304811692908516916000805160206124dd833981519152916117269160489190911b906123e1565b60405180910390a4835460ff8216600160e01b0260ff60e01b1990911617845550505050565b835460ff848116600160b81b90920416146117d8576040516e746172676574414665654f6e42757960881b8152600f016040519081900381208554909160ff600160b81b8304811692908716916000805160206124dd833981519152916117b99160489190911b906123e1565b60405180910390a4835460ff60b81b1916600160b81b60ff8516021784555b835460ff838116600160c81b9092041614611864576040516e746172676574424665654f6e42757960881b8152600f016040519081900381208554909160ff600160c81b8304811692908616916000805160206124dd833981519152916118459160489190911b906123e1565b60405180910390a4835460ff60c81b1916600160c81b60ff8416021784555b835460ff828116600160d81b90920416146113be576040516e746172676574434665654f6e42757960881b8152600f016040519081900381208554909160ff600160d81b8304811692908516916000805160206124dd833981519152916118d19160489190911b906123e1565b60405180910390a4835460ff8216600160d81b0260ff60d81b1990911617845550505050565b6001600160a01b03831661191d5760405162461bcd60e51b815260040161074f9061230d565b6001600160a01b0382166119435760405162461bcd60e51b815260040161074f90612352565b6001600160a01b038316600090815260016020526040902054818110156119bb5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161074f565b6001600160a01b0380851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a1b9086815260200190565b60405180910390a36113be565b6011805462ffffff191690558115611a8157600e5460118054600160b81b830460ff90811661ffff1990921691909117610100600160c81b85048316021762ff00001916600160d81b9093041662010000029190911790555b8015611ace57600e5460118054600160c01b830460ff90811661ffff1990921691909117610100600160d01b85048316021762ff00001916600160e01b9093041662010000029190911790555b60115460ff620100008204811691611aee916101008204811691166123f8565b611af891906123f8565b6011805463ff000000198116630100000060ff9485168102918217938490556040805193861692861692909217835261010084048516602084015262010000840485169183019190915290910490911660608201527fe732842e0997f2bd5f26f9b53d4f761dfb12c53c4352fa949eb7b4d8522dd25b906080016108c6565b3060009081526001602052604090205460115447906301000000900460ff16611b9f83611c72565b6000611bab83476123ce565b60115490915060009061ffff841690611bc79060ff1684612395565b611bd191906123ac565b60115490915060009061ffff851690611bf290610100900460ff1685612395565b611bfc91906123ac565b90506000611c0a82846122fa565b611c1490856123ce565b600a54909150611c2d906001600160a01b031684611dcc565b600d54600b54611c4b9184916001600160a01b039182169116611ee5565b600d54600c54611c699183916001600160a01b039182169116611ee5565b50505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611ca757611ca7612411565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611d00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2491906122c7565b81600181518110611d3757611d37612411565b6001600160a01b039283166020918202929092010152600654611d5d9130911684611226565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d9690859060019086903090429060040161246b565b600060405180830381600087803b158015611db057600080fd5b505af1158015611dc4573d6000803e3d6000fd5b505050505050565b80471015611e1c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161074f565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611e69576040519150601f19603f3d011682016040523d82523d6000602084013e611e6e565b606091505b5050905080610c935760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161074f565b6040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611f4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7391906122c7565b81600081518110611f8657611f86612411565b60200260200101906001600160a01b031690816001600160a01b0316815250508281600181518110611fba57611fba612411565b6001600160a01b03928316602091820292909201015260065460405163b6f9de9560e01b815291169063b6f9de95908690612000906001908690889042906004016124a7565b6000604051808303818588803b15801561201957600080fd5b505af115801561202d573d6000803e3d6000fd5b505050505050505050565b600060208083528351808285015260005b8181101561206557858101830151858201604001528201612049565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461209b57600080fd5b50565b600080604083850312156120b157600080fd5b82356120bc81612086565b946020939093013593505050565b6000602082840312156120dc57600080fd5b5035919050565b6000806000606084860312156120f857600080fd5b833561210381612086565b9250602084013561211381612086565b929592945050506040919091013590565b60006020828403121561213657600080fd5b813561214181612086565b9392505050565b60008060006060848603121561215d57600080fd5b833561216881612086565b9250602084013561217881612086565b9150604084013561218881612086565b809150509250925092565b803560ff811681146121a457600080fd5b919050565b6000806000606084860312156121be57600080fd5b6121c784612193565b92506121d560208501612193565b91506121e360408501612193565b90509250925092565b600080604083850312156121ff57600080fd5b823561220a81612086565b91506020830135801515811461221f57600080fd5b809150509250929050565b6000806040838503121561223d57600080fd5b823561224881612086565b9150602083013561221f81612086565b600181811c9082168061226c57607f821691505b60208210810361228c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156122d957600080fd5b815161214181612086565b634e487b7160e01b600052601160045260246000fd5b8082018082111561071f5761071f6122e4565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b808202811582820484141761071f5761071f6122e4565b6000826123c957634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561071f5761071f6122e4565b68ffffffffffffffffff1991909116815260200190565b60ff818116838216019081111561071f5761071f6122e4565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156124605781516001600160a01b03168752958201959082019060010161243b565b509495945050505050565b85815284602082015260a06040820152600061248a60a0830186612427565b6001600160a01b0394909416606083015250608001529392505050565b8481526080602082015260006124c06080830186612427565b6001600160a01b0394909416604083015250606001529291505056fe00edc71549f0cbe47086c2237ce0cf874d6897fd1d7ce43ee6b65c0230d7606ea2646970667358221220887c35cf94838037583fa66360f6f2c9d75fa5d51be9fd323926428d5d8bbded64736f6c63430008130033
Deployed Bytecode Sourcemap
12266:11765:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6931:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7862:201;;;;;;;;;;-1:-1:-1;7862:201:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7862:201:0;1023:187:1;17973:346:0;;;;;;;;;;-1:-1:-1;17973:346:0;;;;;:::i;:::-;;:::i;:::-;;12351:30;;;;;;;;;;-1:-1:-1;12351:30:0;;;;-1:-1:-1;;;;;12351:30:0;;;;;;-1:-1:-1;;;;;1579:32:1;;;1561:51;;1549:2;1534:18;12351:30:0;1400:218:1;7251:108:0;;;;;;;;;;-1:-1:-1;7339:12:0;;7251:108;;;1769:25:1;;;1757:2;1742:18;7251:108:0;1623:177:1;12783:28:0;;;;;;;;;;-1:-1:-1;12783:28:0;;;;-1:-1:-1;;;;;12783:28:0;;;8073:295;;;;;;;;;;-1:-1:-1;8073:295:0;;;;;:::i;:::-;;:::i;7150:93::-;;;;;;;;;;-1:-1:-1;7150:93:0;;7233:2;2616:36:1;;2604:2;2589:18;7150:93:0;2474:184:1;12551:47:0;;;;;;;;;;;;;;;;8376:238;;;;;;;;;;-1:-1:-1;8376:238:0;;;;;:::i;:::-;;:::i;12388:38::-;;;;;;;;;;;;;;;7367:127;;;;;;;;;;-1:-1:-1;7367:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7468:18:0;7441:7;7468:18;;;:9;:18;;;;;;;7367:127;6118:148;;;;;;;;;;;;;:::i;15666:992::-;;;;;;;;;;-1:-1:-1;15666:992:0;;;;;:::i;:::-;;:::i;16998:325::-;;;;;;;;;;-1:-1:-1;16998:325:0;;;;;:::i;:::-;;:::i;12820:64::-;;;;;;;;;;-1:-1:-1;12820:64:0;;;;-1:-1:-1;;;;;12820:64:0;;;12748:28;;;;;;;;;;-1:-1:-1;12748:28:0;;;;-1:-1:-1;;;;;12748:28:0;;;5904:79;;;;;;;;;;-1:-1:-1;5942:7:0;5969:6;-1:-1:-1;;;;;5969:6:0;5904:79;;7039:104;;;;;;;;;;;;;:::i;8622:436::-;;;;;;;;;;-1:-1:-1;8622:436:0;;;;;:::i;:::-;;:::i;7502:193::-;;;;;;;;;;-1:-1:-1;7502:193:0;;;;;:::i;:::-;;:::i;17639:328::-;;;;;;;;;;-1:-1:-1;17639:328:0;;;;;:::i;:::-;;:::i;13315:57::-;;;;;;;;;;-1:-1:-1;13315:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17329:304;;;;;;;;;;-1:-1:-1;17329:304:0;;;;;:::i;:::-;;:::i;15355:305::-;;;;;;;;;;-1:-1:-1;15355:305:0;;;;;:::i;:::-;;:::i;18343:163::-;;;;;;;;;;-1:-1:-1;18431:5:0;:21;;-1:-1:-1;;;18431:21:0;;;;;-1:-1:-1;;;18453:21:0;;;;;-1:-1:-1;;;18476:21:0;;;;18343:163;;;;4578:4:1;4566:17;;;4548:36;;4620:17;;;4615:2;4600:18;;4593:45;4674:17;;4654:18;;;4647:45;;;;4536:2;4521:18;18343:163:0;4358:340:1;12636:68:0;;;;;;;;;;;;;;;;7703:151;;;;;;;;;;-1:-1:-1;7703:151:0;;;;;:::i;:::-;;:::i;12713:28::-;;;;;;;;;;-1:-1:-1;12713:28:0;;;;-1:-1:-1;;;;;12713:28:0;;;16682:310;;;;;;;;;;-1:-1:-1;16682:310:0;;;;;:::i;:::-;;:::i;6274:244::-;;;;;;;;;;-1:-1:-1;6274:244:0;;;;;:::i;:::-;;:::i;18512:166::-;;;;;;;;;;-1:-1:-1;18600:5:0;:22;;-1:-1:-1;;;18600:22:0;;;;;-1:-1:-1;;;18623:22:0;;;;;-1:-1:-1;;;18647:22:0;;;;18512:166;;6931:100;6985:13;7018:5;7011:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6931:100;:::o;7862:201::-;7945:4;5317:10;8001:32;5317:10;8017:7;8026:6;8001:8;:32::i;:::-;8051:4;8044:11;;;7862:201;;;;;:::o;17973:346::-;6031:6;;-1:-1:-1;;;;;6031:6:0;5317:10;6031:22;6023:67;;;;-1:-1:-1;;;6023:67:0;;;;;;;:::i;:::-;;;;;;;;;18063:21:::1;18053:6;:31;;18045:94;;;::::0;-1:-1:-1;;;18045:94:0;;6044:2:1;18045:94:0::1;::::0;::::1;6026:21:1::0;6083:2;6063:18;;;6056:30;6122:34;6102:18;;;6095:62;-1:-1:-1;;;6173:18:1;;;6166:48;6231:19;;18045:94:0::1;5842:414:1::0;18045:94:0::1;18151:12;5969:6:::0;;18169:42:::1;::::0;-1:-1:-1;;;;;5969:6:0;;;;18199;;18151:12;18169:42;18151:12;18169:42;18199:6;5969;18169:42:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18150:61;;;18226:7;18222:90;;;18269:15;::::0;:22:::1;::::0;;-1:-1:-1;;;18269:22:0;;;;18255:45:::1;::::0;-1:-1:-1;;;;;18269:15:0::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18255:45;::::0;;-1:-1:-1;;;;;6919:32:1;;;6901:51;;6983:2;6968:18;;6961:34;;;6874:18;18255:45:0::1;;;;;;;;18222:90;18034:285;17973:346:::0;:::o;8073:295::-;8204:4;5317:10;8262:38;8278:4;5317:10;8293:6;8262:15;:38::i;:::-;8311:27;8321:4;8327:2;8331:6;8311:9;:27::i;:::-;-1:-1:-1;8356:4:0;;8073:295;-1:-1:-1;;;;8073:295:0:o;8376:238::-;8464:4;5317:10;8520:64;5317:10;8536:7;8573:10;8545:25;5317:10;8536:7;8545:9;:25::i;:::-;:38;;;;:::i;:::-;8520:8;:64::i;6118:148::-;6031:6;;-1:-1:-1;;;;;6031:6:0;5317:10;6031:22;6023:67;;;;-1:-1:-1;;;6023:67:0;;;;;;;:::i;:::-;6225:1:::1;6209:6:::0;;6188:40:::1;::::0;-1:-1:-1;;;;;6209:6:0;;::::1;::::0;6188:40:::1;::::0;6225:1;;6188:40:::1;6256:1;6239:19:::0;;-1:-1:-1;;;;;;6239:19:0::1;::::0;;6118:148::o;15666:992::-;6031:6;;-1:-1:-1;;;;;6031:6:0;5317:10;6031:22;6023:67;;;;-1:-1:-1;;;6023:67:0;;;;;;;:::i;:::-;15798:13:::1;::::0;-1:-1:-1;;;;;15798:33:0;;::::1;:13:::0;::::1;:33;15794:279;;-1:-1:-1::0;;;;;15856:30:0;::::1;15848:84;;;::::0;-1:-1:-1;;;15848:84:0;;7470:2:1;15848:84:0::1;::::0;::::1;7452:21:1::0;7509:2;7489:18;;;7482:30;7548:34;7528:18;;;7521:62;-1:-1:-1;;;7599:18:1;;;7592:39;7648:19;;15848:84:0::1;7268:405:1::0;15848:84:0::1;16000:13;::::0;15952:62:::1;::::0;-1:-1:-1;;;7880:28:1;;-1:-1:-1;;;;;16000:13:0;;::::1;::::0;15952:62;::::1;::::0;7933:2:1;7924:12;15952:62:0::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;16029:13;:32:::0;;-1:-1:-1;;;;;;16029:32:0::1;-1:-1:-1::0;;;;;16029:32:0;::::1;;::::0;;15794:279:::1;16087:13;::::0;-1:-1:-1;;;;;16087:33:0;;::::1;:13:::0;::::1;:33;16083:279;;-1:-1:-1::0;;;;;16145:30:0;::::1;16137:84;;;::::0;-1:-1:-1;;;16137:84:0;;8149:2:1;16137:84:0::1;::::0;::::1;8131:21:1::0;8188:2;8168:18;;;8161:30;8227:34;8207:18;;;8200:62;-1:-1:-1;;;8278:18:1;;;8271:39;8327:19;;16137:84:0::1;7947:405:1::0;16137:84:0::1;16289:13;::::0;16241:62:::1;::::0;-1:-1:-1;;;8559:28:1;;-1:-1:-1;;;;;16289:13:0;;::::1;::::0;16241:62;::::1;::::0;8612:2:1;8603:12;16241:62:0::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;16318:13;:32:::0;;-1:-1:-1;;;;;;16318:32:0::1;-1:-1:-1::0;;;;;16318:32:0;::::1;;::::0;;16083:279:::1;16376:13;::::0;-1:-1:-1;;;;;16376:33:0;;::::1;:13:::0;::::1;:33;16372:279;;-1:-1:-1::0;;;;;16434:30:0;::::1;16426:84;;;::::0;-1:-1:-1;;;16426:84:0;;8828:2:1;16426:84:0::1;::::0;::::1;8810:21:1::0;8867:2;8847:18;;;8840:30;8906:34;8886:18;;;8879:62;-1:-1:-1;;;8957:18:1;;;8950:39;9006:19;;16426:84:0::1;8626:405:1::0;16426:84:0::1;16578:13;::::0;16530:62:::1;::::0;-1:-1:-1;;;9238:28:1;;-1:-1:-1;;;;;16578:13:0;;::::1;::::0;16530:62;::::1;::::0;9291:2:1;9282:12;16530:62:0::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;16607:13;:32:::0;;-1:-1:-1;;;;;;16607:32:0::1;-1:-1:-1::0;;;;;16607:32:0;::::1;;::::0;;16372:279:::1;15666:992:::0;;;:::o;16998:325::-;6031:6;;-1:-1:-1;;;;;6031:6:0;5317:10;6031:22;6023:67;;;;-1:-1:-1;;;6023:67:0;;;;;;;:::i;:::-;17131:86:::1;17155:5;17161:17;17180;17199;17131:23;:86::i;:::-;17233:82;::::0;-1:-1:-1;;;9507:28:1;;9560:2;9551:12;17233:82:0::1;;::::0;;;;;::::1;::::0;;4578:4:1;4566:17;;;4548:36;;4620:17;;;4615:2;4600:18;;4593:45;4674:17;;4654:18;;;4647:45;17233:82:0;;;;::::1;::::0;;;;;4536:2:1;17233:82:0;;::::1;16998:325:::0;;;:::o;7039:104::-;7095:13;7128:7;7121:14;;;;;:::i;8622:436::-;8715:4;5317:10;8715:4;8798:25;5317:10;8815:7;8798:9;:25::i;:::-;8771:52;;8862:15;8842:16;:35;;8834:85;;;;-1:-1:-1;;;8834:85:0;;9776:2:1;8834:85:0;;;9758:21:1;9815:2;9795:18;;;9788:30;9854:34;9834:18;;;9827:62;-1:-1:-1;;;9905:18:1;;;9898:35;9950:19;;8834:85:0;9574:401:1;8834:85:0;8955:60;8964:5;8971:7;8999:15;8980:16;:34;8955:8;:60::i;7502:193::-;7581:4;5317:10;7637:28;5317:10;7654:2;7658:6;7637:9;:28::i;17639:328::-;6031:6;;-1:-1:-1;;;;;6031:6:0;5317:10;6031:22;6023:67;;;;-1:-1:-1;;;6023:67:0;;;;;;;:::i;:::-;17743:23:::1;;17731:8;:35:::0;17723:110:::1;;;::::0;-1:-1:-1;;;17723:110:0;;10182:2:1;17723:110:0::1;::::0;::::1;10164:21:1::0;10221:2;10201:18;;;10194:30;10260:34;10240:18;;;10233:62;10331:33;10311:18;;;10304:61;10382:19;;17723:110:0::1;9980:427:1::0;17723:110:0::1;17890:23;::::0;17849:65:::1;::::0;17880:8;;17849:65:::1;::::0;;;::::1;17925:23;:34:::0;17639:328::o;17329:304::-;6031:6;;-1:-1:-1;;;;;6031:6:0;5317:10;6031:22;6023:67;;;;-1:-1:-1;;;6023:67:0;;;;;;;:::i;:::-;17435:15:::1;::::0;-1:-1:-1;;;;;17435:15:0;;::::1;17413:38:::0;;::::1;::::0;17405:97:::1;;;::::0;-1:-1:-1;;;17405:97:0;;10614:2:1;17405:97:0::1;::::0;::::1;10596:21:1::0;10653:2;10633:18;;;10626:30;10692:34;10672:18;;;10665:62;-1:-1:-1;;;10743:18:1;;;10736:45;10798:19;;17405:97:0::1;10412:411:1::0;17405:97:0::1;17560:15;::::0;17518:59:::1;::::0;-1:-1:-1;;;;;17560:15:0;;::::1;::::0;17518:59;::::1;::::0;::::1;::::0;17560:15:::1;::::0;17518:59:::1;17588:15;:37:::0;;-1:-1:-1;;;;;;17588:37:0::1;-1:-1:-1::0;;;;;17588:37:0;;;::::1;::::0;;;::::1;::::0;;17329:304::o;15355:305::-;6031:6;;-1:-1:-1;;;;;6031:6:0;5317:10;6031:22;6023:67;;;;-1:-1:-1;;;6023:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15450:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;:39;::::1;;:27;::::0;;::::1;:39;;::::0;15442:105:::1;;;::::0;-1:-1:-1;;;15442:105:0;;11030:2:1;15442:105:0::1;::::0;::::1;11012:21:1::0;11069:2;11049:18;;;11042:30;11108:34;11088:18;;;11081:62;-1:-1:-1;;;11159:18:1;;;11152:52;11221:19;;15442:105:0::1;10828:418:1::0;15442:105:0::1;-1:-1:-1::0;;;;;15558:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;:38;;-1:-1:-1;;15558:38:0::1;::::0;::::1;;::::0;;::::1;::::0;;;15612:40;;1163:41:1;;;15612:40:0::1;::::0;1136:18:1;15612:40:0::1;;;;;;;15355:305:::0;;:::o;7703:151::-;-1:-1:-1;;;;;7819:18:0;;;7792:7;7819:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7703:151::o;16682:310::-;6031:6;;-1:-1:-1;;;;;6031:6:0;5317:10;6031:22;6023:67;;;;-1:-1:-1;;;6023:67:0;;;;;;;:::i;:::-;16810:81:::1;16833:5;16839:16;16856;16874;16810:22;:81::i;:::-;16907:77;::::0;-1:-1:-1;;;11453:27:1;;11505:2;11496:12;16907:77:0::1;11251:263:1::0;6274:244:0;6031:6;;-1:-1:-1;;;;;6031:6:0;5317:10;6031:22;6023:67;;;;-1:-1:-1;;;6023:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6363:22:0;::::1;6355:73;;;::::0;-1:-1:-1;;;6355:73:0;;11721:2:1;6355:73:0::1;::::0;::::1;11703:21:1::0;11760:2;11740:18;;;11733:30;11799:34;11779:18;;;11772:62;-1:-1:-1;;;11850:18:1;;;11843:36;11896:19;;6355:73:0::1;11519:402:1::0;6355:73:0::1;6465:6;::::0;;6444:38:::1;::::0;-1:-1:-1;;;;;6444:38:0;;::::1;::::0;6465:6;::::1;::::0;6444:38:::1;::::0;::::1;6493:6;:17:::0;;-1:-1:-1;;;;;;6493:17:0::1;-1:-1:-1::0;;;;;6493:17:0;;;::::1;::::0;;;::::1;::::0;;6274:244::o;11153:380::-;-1:-1:-1;;;;;11289:19:0;;11281:68;;;;-1:-1:-1;;;11281:68:0;;12128:2:1;11281:68:0;;;12110:21:1;12167:2;12147:18;;;12140:30;12206:34;12186:18;;;12179:62;-1:-1:-1;;;12257:18:1;;;12250:34;12301:19;;11281:68:0;11926:400:1;11281:68:0;-1:-1:-1;;;;;11368:21:0;;11360:68;;;;-1:-1:-1;;;11360:68:0;;12533:2:1;11360:68:0;;;12515:21:1;12572:2;12552:18;;;12545:30;12611:34;12591:18;;;12584:62;-1:-1:-1;;;12662:18:1;;;12655:32;12704:19;;11360:68:0;12331:398:1;11360:68:0;-1:-1:-1;;;;;11441:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11493:32;;1769:25:1;;;11493:32:0;;1742:18:1;11493:32:0;;;;;;;11153:380;;;:::o;11541:453::-;11676:24;11703:25;11713:5;11720:7;11703:9;:25::i;:::-;11676:52;;-1:-1:-1;;11743:16:0;:37;11739:248;;11825:6;11805:16;:26;;11797:68;;;;-1:-1:-1;;;11797:68:0;;12936:2:1;11797:68:0;;;12918:21:1;12975:2;12955:18;;;12948:30;13014:31;12994:18;;;12987:59;13063:18;;11797:68:0;12734:353:1;11797:68:0;11909:51;11918:5;11925:7;11953:6;11934:16;:25;11909:8;:51::i;:::-;11665:329;11541:453;;;:::o;18697:1197::-;-1:-1:-1;;;;;18829:18:0;;18821:68;;;;-1:-1:-1;;;18821:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18908:16:0;;18900:64;;;;-1:-1:-1;;;18900:64:0;;;;;;;:::i;:::-;18981:6;18991:1;18981:11;18977:93;;19009:28;19025:4;19031:2;19035:1;19009:15;:28::i;18977:93::-;-1:-1:-1;;;;;19095:31:0;;;;;;;:25;:31;;;;;;;19128:29;;;;;;;;19082:76;;19095:31;;;;;19128:29;19082:12;:76::i;:::-;19212:23;;19202:4;19169:12;7468:18;;;:9;:18;;;;;;-1:-1:-1;19184:51:0;;;;;19266:34;;-1:-1:-1;19291:9:0;;;;19290:10;19266:34;:64;;;;-1:-1:-1;19317:9:0;;;;;;;:13;;19266:64;:110;;;;-1:-1:-1;;;;;;19347:29:0;;;;;;:25;:29;;;;;;;;19266:110;19248:248;;;19403:9;:16;;-1:-1:-1;;19403:16:0;19415:4;19403:16;;;19434:18;:16;:18::i;:::-;19467:9;:17;;-1:-1:-1;;19467:17:0;;;19248:248;19524:9;;-1:-1:-1;;;;;19550:24:0;;19508:12;19550:24;;;:18;:24;;;;;;19524:9;;;;19523:10;;19550:24;;:50;;-1:-1:-1;;;;;;19578:22:0;;;;;;:18;:22;;;;;;;;19550:50;19546:98;;;-1:-1:-1;19627:5:0;19546:98;19658:7;:24;;;;-1:-1:-1;19669:9:0;;;;;;;:13;;19658:24;19654:189;;;19723:9;;19699:11;;19736:3;;19714:18;;19723:9;;;;;19714:6;:18;:::i;:::-;19713:26;;;;:::i;:::-;19699:40;-1:-1:-1;19763:12:0;19699:40;19763:6;:12;:::i;:::-;19754:21;;19790:41;19806:4;19820;19827:3;19790:15;:41::i;:::-;19684:159;19654:189;19853:33;19869:4;19875:2;19879:6;19853:15;:33::i;:::-;18810:1084;;18697:1197;;;:::o;20577:870::-;20737:20;;:41;;;;-1:-1:-1;;;20737:20:0;;;;:41;20733:229;;20800:95;;-1:-1:-1;;;14632:31:1;;14688:2;14679:12;20800:95:0;;;;;;;;20840:20;;20800:95;;20840:20;-1:-1:-1;;;20840:20:0;;;;;20800:95;;;;-1:-1:-1;;;;;;;;;;;20800:95:0;;;20880:14;;;;;;20800:95;:::i;:::-;;;;;;;;20910:40;;-1:-1:-1;;;;20910:40:0;-1:-1:-1;;;20910:40:0;;;;;;;20733:229;20976:20;;:41;;;;-1:-1:-1;;;20976:20:0;;;;:41;20972:229;;21039:95;;-1:-1:-1;;;15118:31:1;;15174:2;15165:12;21039:95:0;;;;;;;;21079:20;;21039:95;;21079:20;-1:-1:-1;;;21079:20:0;;;;;21039:95;;;;-1:-1:-1;;;;;;;;;;;21039:95:0;;;21119:14;;;;;;21039:95;:::i;:::-;;;;;;;;21149:40;;-1:-1:-1;;;;21149:40:0;-1:-1:-1;;;21149:40:0;;;;;;;20972:229;21215:20;;:41;;;;-1:-1:-1;;;21215:20:0;;;;:41;21211:229;;21278:95;;-1:-1:-1;;;15390:31:1;;15446:2;15437:12;21278:95:0;;;;;;;;21318:20;;21278:95;;21318:20;-1:-1:-1;;;21318:20:0;;;;;21278:95;;;;-1:-1:-1;;;;;;;;;;;21278:95:0;;;21358:14;;;;;;21278:95;:::i;:::-;;;;;;;;21388:40;;;;;-1:-1:-1;;;21388:40:0;-1:-1:-1;;;;21388:40:0;;;;;;20577:870;;;;:::o;21453:844::-;21608:19;;:39;;;;-1:-1:-1;;;21608:19:0;;;;:39;21604:222;;21669:92;;-1:-1:-1;;;15662:30:1;;15717:2;15708:12;21669:92:0;;;;;;;;21708:19;;21669:92;;21708:19;-1:-1:-1;;;21708:19:0;;;;;21669:92;;;;-1:-1:-1;;;;;;;;;;;21669:92:0;;;21746:14;;;;;;21669:92;:::i;:::-;;;;;;;;21776:38;;-1:-1:-1;;;;21776:38:0;-1:-1:-1;;;21776:38:0;;;;;;;21604:222;21840:19;;:39;;;;-1:-1:-1;;;21840:19:0;;;;:39;21836:222;;21901:92;;-1:-1:-1;;;15933:30:1;;15988:2;15979:12;21901:92:0;;;;;;;;21940:19;;21901:92;;21940:19;-1:-1:-1;;;21940:19:0;;;;;21901:92;;;;-1:-1:-1;;;;;;;;;;;21901:92:0;;;21978:14;;;;;;21901:92;:::i;:::-;;;;;;;;22008:38;;-1:-1:-1;;;;22008:38:0;-1:-1:-1;;;22008:38:0;;;;;;;21836:222;22072:19;;:39;;;;-1:-1:-1;;;22072:19:0;;;;:39;22068:222;;22133:92;;-1:-1:-1;;;16204:30:1;;16259:2;16250:12;22133:92:0;;;;;;;;22172:19;;22133:92;;22172:19;-1:-1:-1;;;22172:19:0;;;;;22133:92;;;;-1:-1:-1;;;;;;;;;;;22133:92:0;;;22210:14;;;;;;22133:92;:::i;:::-;;;;;;;;22240:38;;;;;-1:-1:-1;;;22240:38:0;-1:-1:-1;;;;22240:38:0;;;;;;21453:844;;;;:::o;9066:840::-;-1:-1:-1;;;;;9197:18:0;;9189:68;;;;-1:-1:-1;;;9189:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9276:16:0;;9268:64;;;;-1:-1:-1;;;9268:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9418:15:0;;9396:19;9418:15;;;:9;:15;;;;;;9452:21;;;;9444:72;;;;-1:-1:-1;;;9444:72:0;;16475:2:1;9444:72:0;;;16457:21:1;16514:2;16494:18;;;16487:30;16553:34;16533:18;;;16526:62;-1:-1:-1;;;16604:18:1;;;16597:36;16650:19;;9444:72:0;16273:402:1;9444:72:0;-1:-1:-1;;;;;9552:15:0;;;;;;;:9;:15;;;;;;9570:20;;;9552:38;;9770:13;;;;;;;;;;:23;;;;;;9822:26;;;;;;9584:6;1769:25:1;;1757:2;1742:18;;1623:177;9822:26:0;;;;;;;;9861:37;15666:992;19900:671;19975:11;:15;;-1:-1:-1;;20027:15:0;;;20055:179;;;;20101:5;:21;20087:11;:35;;-1:-1:-1;;;20101:21:0;;;;;;-1:-1:-1;;20137:35:0;;;;;;;20101:21;-1:-1:-1;;;20151:21:0;;;;20137:35;;-1:-1:-1;;20187:35:0;-1:-1:-1;;;20201:21:0;;;;20187:35;;;;;;;;20055:179;20248:10;20244:181;;;20289:5;:22;20275:11;:36;;-1:-1:-1;;;20289:22:0;;;;;;-1:-1:-1;;20326:36:0;;;;;;;20289:22;-1:-1:-1;;;20340:22:0;;;;20326:36;;-1:-1:-1;;20377:36:0;-1:-1:-1;;;20391:22:0;;;;20377:36;;;;;;;;20244:181;20475:11;;;;;;;;;20447:25;;20475:11;20461;;;;;20447;:25;:::i;:::-;:39;;;;:::i;:::-;20435:9;:51;;-1:-1:-1;;20435:51:0;;;;;;;;;;;;;;;;20502:61;;;20514:11;;;;;;;;;;17048:36:1;;20435:51:0;20527:11;;;;17115:2:1;17100:18;;17093:45;20540:11:0;;;;;17154:18:1;;;17147:45;;;;20553:9:0;;;;;;17223:2:1;17208:18;;17201:45;20502:61:0;;17035:3:1;17020:19;20502:61:0;16833:419:1;22303:834:0;22394:4;22350:23;7468:18;;;:9;:18;;;;;;22495:9;;22439:21;;22495:9;;;;;22517:34;7468:18;22517:17;:34::i;:::-;22564:27;22594:41;22618:17;22594:21;:41;:::i;:::-;22696:11;;22564:71;;-1:-1:-1;22646:24:0;;22673:52;;;;22674:33;;22696:11;;22564:71;22674:33;:::i;:::-;22673:52;;;;:::i;:::-;22786:11;;22646:79;;-1:-1:-1;22736:24:0;;22763:52;;;;22764:33;;22786:11;;;;;22764:19;:33;:::i;:::-;22763:52;;;;:::i;:::-;22736:79;-1:-1:-1;22826:24:0;22876:35;22736:79;22876:16;:35;:::i;:::-;22853:59;;:19;:59;:::i;:::-;22951:13;;22826:86;;-1:-1:-1;22925:58:0;;-1:-1:-1;;;;;22951:13:0;22966:16;22925:17;:58::i;:::-;23037:4;;23043:13;;22996:61;;23019:16;;-1:-1:-1;;;;;23037:4:0;;;;23043:13;22996:22;:61::i;:::-;23109:4;;23115:13;;23068:61;;23091:16;;-1:-1:-1;;;;;23109:4:0;;;;23115:13;23068:22;:61::i;:::-;22339:798;;;;;;;22303:834::o;23143:500::-;23234:16;;;23248:1;23234:16;;;;;;;;23210:21;;23234:16;;;;;;;;;;-1:-1:-1;23234:16:0;23210:40;;23279:4;23261;23266:1;23261:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23261:23:0;;;:7;;;;;;;;;;:23;;;;23305:15;;:22;;;-1:-1:-1;;;23305:22:0;;;;:15;;;;;:20;;:22;;;;;23261:7;;23305:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23295:4;23300:1;23295:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23295:32:0;;;:7;;;;;;;;;:32;23370:15;;23338:62;;23355:4;;23370:15;23388:11;23338:8;:62::i;:::-;23411:15;;:224;;-1:-1:-1;;;23411:224:0;;-1:-1:-1;;;;;23411:15:0;;;;:66;;:224;;23492:11;;23411:15;;23562:4;;23589;;23609:15;;23411:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23199:444;23143:500;:::o;2177:322::-;2291:6;2266:21;:31;;2253:86;;;;-1:-1:-1;;;2253:86:0;;18776:2:1;2253:86:0;;;18758:21:1;18815:2;18795:18;;;18788:30;18854:31;18834:18;;;18827:59;18903:18;;2253:86:0;18574:353:1;2253:86:0;2347:12;2365:9;-1:-1:-1;;;;;2365:14:0;2387:6;2365:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2346:52;;;2416:7;2403:91;;;;-1:-1:-1;;;2403:91:0;;19134:2:1;2403:91:0;;;19116:21:1;19173:2;19153:18;;;19146:30;19212:34;19192:18;;;19185:62;19283:28;19263:18;;;19256:56;19329:19;;2403:91:0;18932:422:1;23649:379:0;23774:16;;;23788:1;23774:16;;;;;;;;23750:21;;23774:16;;;;;;;;-1:-1:-1;;23805:15:0;;:22;;;-1:-1:-1;;;23805:22:0;;;;23750:40;;-1:-1:-1;;;;;;23805:15:0;;;;:20;;-1:-1:-1;23805:22:0;;;;;;;;;;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23795:4;23800:1;23795:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;23795:32:0;;;-1:-1:-1;;;;;23795:32:0;;;;;23842:5;23832:4;23837:1;23832:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23832:15:0;;;:7;;;;;;;;;:15;23852;;:168;;-1:-1:-1;;;23852:168:0;;:15;;;:66;;23927:9;;23852:168;;:15;;23978:4;;23988:6;;24000:15;;23852:168;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23739:289;23649:379;;;:::o;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;622:70;567:131;:::o;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:180::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;-1:-1:-1;1366:23:1;;1215:180;-1:-1:-1;1215:180:1:o;2013:456::-;2090:6;2098;2106;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;:::-;2283:5;-1:-1:-1;2340:2:1;2325:18;;2312:32;2353:33;2312:32;2353:33;:::i;:::-;2013:456;;2405:7;;-1:-1:-1;;;2459:2:1;2444:18;;;;2431:32;;2013:456::o;2663:247::-;2722:6;2775:2;2763:9;2754:7;2750:23;2746:32;2743:52;;;2791:1;2788;2781:12;2743:52;2830:9;2817:23;2849:31;2874:5;2849:31;:::i;:::-;2899:5;2663:247;-1:-1:-1;;;2663:247:1:o;2915:529::-;2992:6;3000;3008;3061:2;3049:9;3040:7;3036:23;3032:32;3029:52;;;3077:1;3074;3067:12;3029:52;3116:9;3103:23;3135:31;3160:5;3135:31;:::i;:::-;3185:5;-1:-1:-1;3242:2:1;3227:18;;3214:32;3255:33;3214:32;3255:33;:::i;:::-;3307:7;-1:-1:-1;3366:2:1;3351:18;;3338:32;3379:33;3338:32;3379:33;:::i;:::-;3431:7;3421:17;;;2915:529;;;;;:::o;3449:156::-;3515:20;;3575:4;3564:16;;3554:27;;3544:55;;3595:1;3592;3585:12;3544:55;3449:156;;;:::o;3610:322::-;3681:6;3689;3697;3750:2;3738:9;3729:7;3725:23;3721:32;3718:52;;;3766:1;3763;3756:12;3718:52;3789:27;3806:9;3789:27;:::i;:::-;3779:37;;3835:36;3867:2;3856:9;3852:18;3835:36;:::i;:::-;3825:46;;3890:36;3922:2;3911:9;3907:18;3890:36;:::i;:::-;3880:46;;3610:322;;;;;:::o;3937:416::-;4002:6;4010;4063:2;4051:9;4042:7;4038:23;4034:32;4031:52;;;4079:1;4076;4069:12;4031:52;4118:9;4105:23;4137:31;4162:5;4137:31;:::i;:::-;4187:5;-1:-1:-1;4244:2:1;4229:18;;4216:32;4286:15;;4279:23;4267:36;;4257:64;;4317:1;4314;4307:12;4257:64;4340:7;4330:17;;;3937:416;;;;;:::o;4703:388::-;4771:6;4779;4832:2;4820:9;4811:7;4807:23;4803:32;4800:52;;;4848:1;4845;4838:12;4800:52;4887:9;4874:23;4906:31;4931:5;4906:31;:::i;:::-;4956:5;-1:-1:-1;5013:2:1;4998:18;;4985:32;5026:33;4985:32;5026:33;:::i;5096:380::-;5175:1;5171:12;;;;5218;;;5239:61;;5293:4;5285:6;5281:17;5271:27;;5239:61;5346:2;5338:6;5335:14;5315:18;5312:38;5309:161;;5392:10;5387:3;5383:20;5380:1;5373:31;5427:4;5424:1;5417:15;5455:4;5452:1;5445:15;5309:161;;5096:380;;;:::o;5481:356::-;5683:2;5665:21;;;5702:18;;;5695:30;5761:34;5756:2;5741:18;;5734:62;5828:2;5813:18;;5481:356::o;6471:251::-;6541:6;6594:2;6582:9;6573:7;6569:23;6565:32;6562:52;;;6610:1;6607;6600:12;6562:52;6642:9;6636:16;6661:31;6686:5;6661:31;:::i;7006:127::-;7067:10;7062:3;7058:20;7055:1;7048:31;7098:4;7095:1;7088:15;7122:4;7119:1;7112:15;7138:125;7203:9;;;7224:10;;;7221:36;;;7237:18;;:::i;13092:401::-;13294:2;13276:21;;;13333:2;13313:18;;;13306:30;13372:34;13367:2;13352:18;;13345:62;-1:-1:-1;;;13438:2:1;13423:18;;13416:35;13483:3;13468:19;;13092:401::o;13498:399::-;13700:2;13682:21;;;13739:2;13719:18;;;13712:30;13778:34;13773:2;13758:18;;13751:62;-1:-1:-1;;;13844:2:1;13829:18;;13822:33;13887:3;13872:19;;13498:399::o;13902:168::-;13975:9;;;14006;;14023:15;;;14017:22;;14003:37;13993:71;;14044:18;;:::i;14075:217::-;14115:1;14141;14131:132;;14185:10;14180:3;14176:20;14173:1;14166:31;14220:4;14217:1;14210:15;14248:4;14245:1;14238:15;14131:132;-1:-1:-1;14277:9:1;;14075:217::o;14297:128::-;14364:9;;;14385:11;;;14382:37;;;14399:18;;:::i;14702:209::-;-1:-1:-1;;14866:38:1;;;;14848:57;;14836:2;14821:18;;14702:209::o;16680:148::-;16768:4;16747:12;;;16761;;;16743:31;;16786:13;;16783:39;;;16802:18;;:::i;17389:127::-;17450:10;17445:3;17441:20;17438:1;17431:31;17481:4;17478:1;17471:15;17505:4;17502:1;17495:15;17521:461;17574:3;17612:5;17606:12;17639:6;17634:3;17627:19;17665:4;17694:2;17689:3;17685:12;17678:19;;17731:2;17724:5;17720:14;17752:1;17762:195;17776:6;17773:1;17770:13;17762:195;;;17841:13;;-1:-1:-1;;;;;17837:39:1;17825:52;;17897:12;;;;17932:15;;;;17873:1;17791:9;17762:195;;;-1:-1:-1;17973:3:1;;17521:461;-1:-1:-1;;;;;17521:461:1:o;17987:582::-;18286:6;18275:9;18268:25;18329:6;18324:2;18313:9;18309:18;18302:34;18372:3;18367:2;18356:9;18352:18;18345:31;18249:4;18393:57;18445:3;18434:9;18430:19;18422:6;18393:57;:::i;:::-;-1:-1:-1;;;;;18486:32:1;;;;18481:2;18466:18;;18459:60;-1:-1:-1;18550:3:1;18535:19;18528:35;18385:65;17987:582;-1:-1:-1;;;17987:582:1:o;19359:510::-;19630:6;19619:9;19612:25;19673:3;19668:2;19657:9;19653:18;19646:31;19593:4;19694:57;19746:3;19735:9;19731:19;19723:6;19694:57;:::i;:::-;-1:-1:-1;;;;;19787:32:1;;;;19782:2;19767:18;;19760:60;-1:-1:-1;19851:2:1;19836:18;19829:34;19686:65;19359:510;-1:-1:-1;;19359:510:1:o
Swarm Source
ipfs://887c35cf94838037583fa66360f6f2c9d75fa5d51be9fd323926428d5d8bbded
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.