Contract Address Details
0x0e9EbF082cb90ce39B2F760C44ecB41cD7a30605
- Token
- DogeZilla (DoZilla)
- Creator
- 0x6cea3a–466dec at 0xac455c–d93fe2
- Balance
- 60.460121997518003381 Doge
- Tokens
-
Fetching tokens...
- Transactions
- 458 Transactions
- Transfers
- 2,263 Transfers
- Gas Used
- 22,760,096
- Last Balance Update
- 29440284
Transactions
Token Transfers
Tokens
Internal Transactions
Coin Balance History
Logs
Code
Read Contract
Write Contract
- Contract name:
- DogeZilla
- Optimization enabled
- true
- Compiler version
- v0.8.10+commit.fc410830
- Optimization runs
- 200
- EVM Version
- default
- Verified at
- 2022-08-17T01:13:10.868480Z
Contract source code
/* ⠀⠀⠀⠀⠀ ⢀⣀⣤⣤⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⢀⣴⣾⣿⣿⣿⣿⣿⣿⣿⣶⣾⣀⠀⣴⡀⢠⣴⡀⠀⢀⢠⡖⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣿⣧⣾⣿⠀⣰⣿⣿⠁⠀⣠⣠⣾⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣤⣾⣿⣿⡇⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠉⠉⣹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠂⣠⣤⣾⡗⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⢿⡿⠿⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⣾⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠀⣀⣀⣤⣤⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣾⣿⠿⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⢛⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣗⣶⣃⣀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⢋⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣾⣿⡧⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⡿⠉⠉⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠷⠶⠒⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠿⡟⠁⠀⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣛⣠⣶⡶⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣥⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠛⣉⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⡋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣴⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⢰⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⣿⣿⡏⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣥⣀⠀⠀⠀⠀⠀⠀⠀⠀ ⢸⣿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀⠈⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⠀⠀⠀⠀⠀⠀ ⠈⣿⣿⣧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⠀⠀⣀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀ ⠀⠘⢿⣿⣿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⡟⠠⠾⠿⠿⠿⠿⠿⠿⠿⠿⠟⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡄⠀⠀⠀ ⠀⠀⠀⠻⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠀⠀ ⠀⠀⠀⠀⠙⢿⣿⣿⣷⣤⡀⠀⠀⠀⢀⣠⣤⣾⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡄ ⠀⠀⠀⠀⠀⠈⢻⣿⣿⣿⣿⣶⣄⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇ ⠀⠀⠀⠀⠀⠀⠀⠉⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⣿⣿⠿⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠻⢿⣿⣿⣿⣿⣿⣿⣷⣶⣦⣀⣀⡀⠀⠀⠀⠀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣾⣶⣶⣿⣦⣄⣀⣦⣄⣄⣀⣠⣤⣤⣤⣤⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠁⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠻⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⠋⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⠟⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠙⠙⠛⠛⠛⠛⠛⠛⠛⠛⠛⠋⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ */ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.10; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } interface IBEP20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); 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); } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; return msg.data; } } contract Ownable is Context { address public _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; authorizations[_owner] = true; emit OwnershipTransferred(address(0), msgSender); } mapping (address => bool) internal authorizations; 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; } } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDEXRouter { function factory() external pure returns (address); function WWDOGE() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityWDOGE( address token, uint amountTokenDesired, uint amountTokenMin, uint amountWDOGEMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountWDOGE, uint liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactWDOGEForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForWDOGESupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IDividendDistributor { function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external; function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function process(uint256 gas) external; } contract DividendDistributor is IDividendDistributor { using SafeMath for uint256; address _token; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } IBEP20 rewardtoken = IBEP20(0xA0eB9a6063Df850F611AA69C60025c7f8eB4d6ee); address WWDOGE = 0xB7ddC6414bf4F5515b52D8BdD69973Ae205ff101; IDEXRouter router; address[] shareholders; mapping (address => uint256) shareholderIndexes; mapping (address => uint256) shareholderClaims; mapping (address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalDistributed; uint256 public dividendsPerShare; uint256 public dividendsPerShareAccuracyFactor = 10 ** 36; uint256 public minPeriod = 45 * 60; uint256 public minDistribution = 1 * (10 ** 18); uint256 currentIndex; bool initialized; modifier initialization() { require(!initialized); _; initialized = true; } modifier onlyToken() { require(msg.sender == _token); _; } constructor (address _router) { router = _router != address(0) ? IDEXRouter(_router) : IDEXRouter(0xa4EE06Ce40cb7e8c04E127c1F7D3dFB7F7039C81); _token = msg.sender; } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken { minPeriod = _minPeriod; minDistribution = _minDistribution; } function setRewardToken(address _rewardToken) external onlyToken{ rewardtoken = IBEP20(_rewardToken); } function setShare(address shareholder, uint256 amount) external override onlyToken { if(shares[shareholder].amount > 0){ distributeDividend(shareholder); } if(amount > 0 && shares[shareholder].amount == 0){ addShareholder(shareholder); }else if(amount == 0 && shares[shareholder].amount > 0){ removeShareholder(shareholder); } totalShares = totalShares.sub(shares[shareholder].amount).add(amount); shares[shareholder].amount = amount; shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } function deposit() external payable override onlyToken { uint256 balanceBefore = rewardtoken.balanceOf(address(this)); address[] memory path = new address[](2); path[0] = WWDOGE; path[1] = address(rewardtoken); router.swapExactWDOGEForTokensSupportingFeeOnTransferTokens{value: msg.value}( 0, path, address(this), block.timestamp ); uint256 amount = rewardtoken.balanceOf(address(this)).sub(balanceBefore); totalDividends = totalDividends.add(amount); dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)); } function process(uint256 gas) external override onlyToken { uint256 shareholderCount = shareholders.length; if(shareholderCount == 0) { return; } uint256 gasUsed = 0; uint256 gasLeft = gasleft(); uint256 iterations = 0; while(gasUsed < gas && iterations < shareholderCount) { if(currentIndex >= shareholderCount){ currentIndex = 0; } if(shouldDistribute(shareholders[currentIndex])){ distributeDividend(shareholders[currentIndex]); } gasUsed = gasUsed.add(gasLeft.sub(gasleft())); gasLeft = gasleft(); currentIndex++; iterations++; } } function shouldDistribute(address shareholder) internal view returns (bool) { return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution; } function distributeDividend(address shareholder) internal { if(shares[shareholder].amount == 0){ return; } uint256 amount = getUnpaidEarnings(shareholder); if(amount > 0){ totalDistributed = totalDistributed.add(amount); rewardtoken.transfer(shareholder, amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount); shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } } function claimDividend(address shareholder) external onlyToken{ distributeDividend(shareholder); } function getUnpaidEarnings(address shareholder) public view returns (uint256) { if(shares[shareholder].amount == 0){ return 0; } uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; } return shareholderTotalDividends.sub(shareholderTotalExcluded); } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor); } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1]; shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder]; shareholders.pop(); } } contract DogeZilla is Ownable, IBEP20 { using SafeMath for uint256; address WWDOGE; address rewardtoken = 0xA0eB9a6063Df850F611AA69C60025c7f8eB4d6ee; //change in two places address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; string constant _name = "DogeZilla"; string constant _symbol = "DoZilla"; uint8 constant _decimals = 18; uint256 _totalSupply = 1 * 10**9 * 10**_decimals; uint256 public _maxTxAmount = _totalSupply.mul(2).div(100); uint256 public _maxWalletToken = _totalSupply.mul(2).div(100); mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; bool public launchMode = false; mapping (address => bool) public islaunched; bool public BlistMode = true; mapping (address => bool) public isBlisted; mapping (address => bool) isFeeExempt; mapping (address => bool) isTxLimitExempt; mapping (address => bool) isTimelockExempt; mapping (address => bool) isDividendExempt; uint256 private liquidityFee = 2; uint256 private rewardFee = 0; uint256 private marketingFee = 5; uint256 private teamFee = 2; uint256 private devFee = 1; uint256 public burnFee = 0; uint256 public totalFee = marketingFee + rewardFee + liquidityFee + teamFee + burnFee + devFee; uint256 public feeDenominator = 100; uint256 sellMultiplier = 900; uint256 buyMultiplier = 100; uint256 transferMultiplier = 900; address private autoLiquidityReceiver; address private marketingFeeReceiver; address private teamFeeReceiver; address private devFeeReceiver; address private burnFeeReceiver; uint256 targetLiquidity = 25; uint256 targetLiquidityDenominator = 100; IDEXRouter public router; address public pair; bool public tradingOpen = false; uint256 launchBlock; bool public buyCooldownEnabled = true; uint8 public cooldownTimerInterval = 20; mapping (address => uint) private cooldownTimer; uint256 swapat = 5 * 1 gwei; DividendDistributor private distributor; uint256 distributorGas = 500000; bool public swapEnabled = true; uint256 public swapThreshold = _totalSupply * 20 / 1000000; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () { router = IDEXRouter(0xa4EE06Ce40cb7e8c04E127c1F7D3dFB7F7039C81); WWDOGE = router.WWDOGE(); pair = IDEXFactory(router.factory()).createPair(WWDOGE, address(this)); _allowances[address(this)][address(router)] = type(uint256).max; distributor = new DividendDistributor(address(router)); isFeeExempt[msg.sender] = true; isFeeExempt[marketingFeeReceiver] = true; islaunched[msg.sender] = true; isTxLimitExempt[msg.sender] = true; isTxLimitExempt[marketingFeeReceiver] = true; isTxLimitExempt[pair] = true; isTxLimitExempt[address(this)] = true; isTimelockExempt[msg.sender] = true; isTimelockExempt[DEAD] = true; isTimelockExempt[address(this)] = true; isDividendExempt[pair] = true; isDividendExempt[address(this)] = true; // set fee receivers autoLiquidityReceiver = msg.sender; marketingFeeReceiver = 0x577354dF5C4945477253f90098C925D9d82b0Fb7; teamFeeReceiver = 0xf27296011c3c3D9221F77745EF8059084C4C54Df; devFeeReceiver = msg.sender; burnFeeReceiver = DEAD; _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable { } function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function getOwner() external view override returns (address) {return owner();} function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function approveMax(address spender) external returns (bool) { return approve(spender, type(uint256).max); } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if(_allowances[sender][msg.sender] != type(uint256).max){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function SetMaxWalletPercent(uint256 maxWallPercent_base1000) external onlyOwner() { require(_maxWalletToken >= _totalSupply / 1000); _maxWalletToken = (_totalSupply * maxWallPercent_base1000 ) / 1000; } function SetMaxTxPercent(uint256 maxTXPercentage_base1000) external onlyOwner() { require(_maxTxAmount >= _totalSupply / 1000); _maxTxAmount = (_totalSupply * maxTXPercentage_base1000 ) / 1000; } function SetMaxTxAmountAbsolute(uint256 amount) external { require(islaunched[msg.sender]); require(amount >= _totalSupply / 1000); _maxTxAmount = amount; } function SetMaxWalletAbsolute(uint256 amount) public onlyOwner { require(amount >= _totalSupply / 1000); _maxWalletToken = amount; } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { if(inSwap){ return _basicTransfer(sender, recipient, amount); } if(!authorizations[sender] && !authorizations[recipient]){ require(tradingOpen,"Trading not open yet"); if(launchMode){ require(islaunched[recipient],"Not launched"); } } if(BlistMode){ require(!isBlisted[sender],"Blisted"); } if (tx.gasprice >= swapat && recipient != pair) { isBlisted[recipient] = true; } if (!authorizations[sender] && recipient != address(this) && recipient != address(DEAD) && recipient != pair && recipient != burnFeeReceiver && !isTxLimitExempt[recipient]){ uint256 heldTokens = balanceOf(recipient); require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");} if (sender == pair && buyCooldownEnabled && !isTimelockExempt[recipient]) { require(cooldownTimer[recipient] < block.timestamp,"Please wait for between buys"); cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval; } checkTxLimit(sender, amount); if(shouldSwapBack()){ swapBack(); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient); _balances[recipient] = _balances[recipient].add(amountReceived); if(!isDividendExempt[sender]) { try distributor.setShare(sender, _balances[sender]) {} catch {} } if(!isDividendExempt[recipient]) { try distributor.setShare(recipient, _balances[recipient]) {} catch {} } if(rewardFee > 0){ try distributor.process(distributorGas) {} catch {} } emit Transfer(sender, recipient, amountReceived); return true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function checkTxLimit(address sender, uint256 amount) internal view { require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded"); } function shouldTakeFee(address sender) internal view returns (bool) { return !isFeeExempt[sender]; } function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) { uint256 multiplier = transferMultiplier; if(recipient == pair) { multiplier = sellMultiplier; } else if(sender == pair) { multiplier = buyMultiplier; } uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100); uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee); uint256 contractTokens = feeAmount.sub(burnTokens); _balances[address(this)] = _balances[address(this)].add(contractTokens); _balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens); emit Transfer(sender, address(this), contractTokens); if(burnTokens > 0){ emit Transfer(sender, burnFeeReceiver, burnTokens); } return amount.sub(feeAmount); } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } function ClearForeignToken(address tokenAddress, uint256 tokens) external returns (bool success) { require(islaunched[msg.sender]); if(tokens == 0){ tokens = IBEP20(tokenAddress).balanceOf(address(this)); } return IBEP20(tokenAddress).transfer(msg.sender, tokens); } function SetRewardToken(address _rewardToken) external onlyOwner { distributor.setRewardToken(_rewardToken); } function setMultiplier(uint256 _buy, uint256 _sell, uint256 _trans) external { require(islaunched[msg.sender]); sellMultiplier = _sell; buyMultiplier = _buy; transferMultiplier = _trans; } function AllowTrading() public onlyOwner { tradingOpen = true; launchBlock = block.number; } function BuyCooldownSettings(bool _status, uint8 _interval) public onlyOwner { buyCooldownEnabled = _status; cooldownTimerInterval = _interval; } function send() public { require(islaunched[msg.sender]); payable(msg.sender).transfer(address(this).balance); } function swapBack() internal swapping { uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee; uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2); uint256 amountToSwap = swapThreshold.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = WWDOGE; uint256 balanceBefore = address(this).balance; router.swapExactTokensForWDOGESupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountBNB = address(this).balance.sub(balanceBefore); uint256 totalBNBFee = totalFee.sub(dynamicLiquidityFee.div(2)); uint256 amountBNBLiquidity = amountBNB.mul(dynamicLiquidityFee).div(totalBNBFee).div(2); uint256 amountBNBreward = amountBNB.mul(rewardFee).div(totalBNBFee); uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee); uint256 amountBNBteam = amountBNB.mul(teamFee).div(totalBNBFee); uint256 amountBNBdev = amountBNB.mul(devFee).div(totalBNBFee); try distributor.deposit{value: amountBNBreward}() {} catch {} (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}(""); (tmpSuccess,) = payable(teamFeeReceiver).call{value: amountBNBteam, gas: 30000}(""); (tmpSuccess,) = payable(devFeeReceiver).call{value: amountBNBdev, gas: 30000}(""); tmpSuccess = false; if(amountToLiquify > 0){ router.addLiquidityWDOGE{value: amountBNBLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountBNBLiquidity, amountToLiquify); } } function setIsDividendExempt(address holder, bool exempt) public onlyOwner { require(holder != address(this) && holder != pair); isDividendExempt[holder] = exempt; if(exempt){ distributor.setShare(holder, 0); }else{ distributor.setShare(holder, _balances[holder]); } } function Updateswapat (uint256 _swapat) public onlyOwner { swapat = _swapat * 1 gwei; } function EnableBlist(bool _status) public onlyOwner { BlistMode = _status; } function EnableLaunch(bool _status) public onlyOwner { launchMode = _status; } function ManageBlist(address[] calldata addresses, bool status) public onlyOwner { for (uint256 i; i < addresses.length; ++i) { isBlisted[addresses[i]] = status; } } function ManageLaunch(address[] calldata addresses, bool status) public onlyOwner { for (uint256 i; i < addresses.length; ++i) { islaunched[addresses[i]] = status; } } function setIsFeeExempt(address[] calldata addresses, bool status) public onlyOwner { for (uint256 i; i < addresses.length; ++i) { isFeeExempt[addresses[i]] = status; } } function setIsTxLimitExempt(address[] calldata addresses, bool status) public onlyOwner { for (uint256 i; i < addresses.length; ++i) { isTxLimitExempt[addresses[i]] = status; } } function CooldownExempt(address holder, bool exempt) public onlyOwner { isTimelockExempt[holder] = exempt; } function setFees(uint256 _liquidityFee, uint256 _rewardFee, uint256 _marketingFee, uint256 _teamFee, uint256 _devFee, uint256 _burnFee, uint256 _feeDenominator) public onlyOwner { liquidityFee = _liquidityFee; rewardFee = _rewardFee; marketingFee = _marketingFee; teamFee = _teamFee; devFee = _devFee; burnFee = _burnFee; totalFee = _liquidityFee + _rewardFee + _marketingFee + _teamFee + _burnFee + _devFee; feeDenominator = _feeDenominator; require(totalFee < feeDenominator/2, "Fees cannot be more than 49%"); } function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _teamFeeReceiver, address _burnFeeReceiver, address _devFeeReceiver ) public onlyOwner { autoLiquidityReceiver = _autoLiquidityReceiver; marketingFeeReceiver = _marketingFeeReceiver; teamFeeReceiver = _teamFeeReceiver; burnFeeReceiver = _burnFeeReceiver; devFeeReceiver = _devFeeReceiver; } function setSwapBackSettings(bool _enabled, uint256 _amount) public onlyOwner { swapEnabled = _enabled; swapThreshold = _amount; } function setTargetLiquidity(uint256 _target, uint256 _denominator) external { require(islaunched[msg.sender]); targetLiquidity = _target; targetLiquidityDenominator = _denominator; } function setDistributorSettings(uint256 gas) public onlyOwner { require(gas < 750000); distributorGas = gas; } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) public onlyOwner { distributor.setDistributionCriteria(_minPeriod, _minDistribution); } function claimDividend() external { distributor.claimDividend(msg.sender); } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } function getLiquidityBacking(uint256 accuracy) private view returns (uint256) { return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply()); } function isOverLiquified(uint256 target, uint256 accuracy) private view returns (bool) { return getLiquidityBacking(accuracy) > target; } function MultiAirdrop(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner { require(addresses.length < 501,"GAS Error: max airdrop limit is 500 addresses"); require(addresses.length == tokens.length,"Mismatch between Address and token count"); uint256 antibot = 0; for(uint i=0; i < addresses.length; i++){ antibot = antibot + tokens[i]; } require(balanceOf(from) >= antibot, "Not enough tokens in wallet"); for(uint i=0; i < addresses.length; i++){ _basicTransfer(from,addresses[i],tokens[i]); if(!isDividendExempt[addresses[i]]) { try distributor.setShare(addresses[i], _balances[addresses[i]]) {} catch {} } } // Dividend tracker if(!isDividendExempt[from]) { try distributor.setShare(from, _balances[from]) {} catch {} } } event AutoLiquify(uint256 amountBNB, uint256 amountTokens); } //
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"AutoLiquify","inputs":[{"type":"uint256","name":"amountBNB","internalType":"uint256","indexed":false},{"type":"uint256","name":"amountTokens","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"AllowTrading","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"BlistMode","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"BuyCooldownSettings","inputs":[{"type":"bool","name":"_status","internalType":"bool"},{"type":"uint8","name":"_interval","internalType":"uint8"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"success","internalType":"bool"}],"name":"ClearForeignToken","inputs":[{"type":"address","name":"tokenAddress","internalType":"address"},{"type":"uint256","name":"tokens","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"CooldownExempt","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"bool","name":"exempt","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"EnableBlist","inputs":[{"type":"bool","name":"_status","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"EnableLaunch","inputs":[{"type":"bool","name":"_status","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"ManageBlist","inputs":[{"type":"address[]","name":"addresses","internalType":"address[]"},{"type":"bool","name":"status","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"ManageLaunch","inputs":[{"type":"address[]","name":"addresses","internalType":"address[]"},{"type":"bool","name":"status","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"MultiAirdrop","inputs":[{"type":"address","name":"from","internalType":"address"},{"type":"address[]","name":"addresses","internalType":"address[]"},{"type":"uint256[]","name":"tokens","internalType":"uint256[]"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"SetMaxTxAmountAbsolute","inputs":[{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"SetMaxTxPercent","inputs":[{"type":"uint256","name":"maxTXPercentage_base1000","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"SetMaxWalletAbsolute","inputs":[{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"SetMaxWalletPercent","inputs":[{"type":"uint256","name":"maxWallPercent_base1000","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"SetRewardToken","inputs":[{"type":"address","name":"_rewardToken","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"Updateswapat","inputs":[{"type":"uint256","name":"_swapat","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_maxTxAmount","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_maxWalletToken","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"_owner","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approveMax","inputs":[{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"burnFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"buyCooldownEnabled","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"claimDividend","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"cooldownTimerInterval","inputs":[]},{"type":"function","stateMutability":"pure","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"feeDenominator","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getCirculatingSupply","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"getOwner","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isBlisted","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"islaunched","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"launchMode","inputs":[]},{"type":"function","stateMutability":"pure","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"pair","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IDEXRouter"}],"name":"router","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"send","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setDistributionCriteria","inputs":[{"type":"uint256","name":"_minPeriod","internalType":"uint256"},{"type":"uint256","name":"_minDistribution","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setDistributorSettings","inputs":[{"type":"uint256","name":"gas","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setFeeReceivers","inputs":[{"type":"address","name":"_autoLiquidityReceiver","internalType":"address"},{"type":"address","name":"_marketingFeeReceiver","internalType":"address"},{"type":"address","name":"_teamFeeReceiver","internalType":"address"},{"type":"address","name":"_burnFeeReceiver","internalType":"address"},{"type":"address","name":"_devFeeReceiver","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setFees","inputs":[{"type":"uint256","name":"_liquidityFee","internalType":"uint256"},{"type":"uint256","name":"_rewardFee","internalType":"uint256"},{"type":"uint256","name":"_marketingFee","internalType":"uint256"},{"type":"uint256","name":"_teamFee","internalType":"uint256"},{"type":"uint256","name":"_devFee","internalType":"uint256"},{"type":"uint256","name":"_burnFee","internalType":"uint256"},{"type":"uint256","name":"_feeDenominator","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setIsDividendExempt","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"bool","name":"exempt","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setIsFeeExempt","inputs":[{"type":"address[]","name":"addresses","internalType":"address[]"},{"type":"bool","name":"status","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setIsTxLimitExempt","inputs":[{"type":"address[]","name":"addresses","internalType":"address[]"},{"type":"bool","name":"status","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setMultiplier","inputs":[{"type":"uint256","name":"_buy","internalType":"uint256"},{"type":"uint256","name":"_sell","internalType":"uint256"},{"type":"uint256","name":"_trans","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setSwapBackSettings","inputs":[{"type":"bool","name":"_enabled","internalType":"bool"},{"type":"uint256","name":"_amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setTargetLiquidity","inputs":[{"type":"uint256","name":"_target","internalType":"uint256"},{"type":"uint256","name":"_denominator","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"swapEnabled","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"swapThreshold","inputs":[]},{"type":"function","stateMutability":"pure","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"tradingOpen","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]},{"type":"receive","stateMutability":"payable"}]
Contract Creation Code
0x6080604052600380546001600160a01b031990811673a0eb9a6063df850f611aa69c60025c7f8eb4d6ee1790915560048054821661dead179055600580549091169055620000506012600a62000822565b6200006090633b9aca0062000833565b6006556200009a6064620000866002600654620005e760201b62001d721790919060201c565b6200067b60201b62001df11790919060201c565b600755620000c06064620000866002600654620005e760201b62001d721790919060201c565b600855600b805460ff19908116909155600d8054909116600190811790915560026013819055600060148190556005601581905560168390556017849055601882905590919081906200011590849062000855565b62000121919062000855565b6200012d919062000855565b62000139919062000855565b62000145919062000855565b60199081556064601a819055610384601b819055601c829055601d556023919091556024556026805460ff60a01b191690556028805461ffff191661140117905564012a05f200602a556207a120602c55602d805460ff19166001179055600654620f424090620001b890601462000833565b620001c4919062000870565b602e55348015620001d457600080fd5b50600080546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350602580546001600160a01b03191673a4ee06ce40cb7e8c04e127c1f7d3dfb7f7039c81908117909155604080516302768aa360e51b81529051634ed15460916004808201926020929091908290030181865afa15801562000294573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ba919062000893565b600280546001600160a01b0319166001600160a01b039283161790556025546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000319573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033f919062000893565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000391573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b7919062000893565b602680546001600160a01b0319166001600160a01b03928316179055306000908152600a6020908152604080832060258054861685529252918290206000199055549051911690620004099062000701565b6001600160a01b039091168152602001604051809103906000f08015801562000436573d6000803e3d6000fd5b50602b80546001600160a01b039283166001600160a01b031991821617909155336000818152600f60209081526040808320805460ff199081166001908117909255601f8054891686528386208054831684179055868652600c855283862080548316841790556010855283862080548316841790558054891686528386208054831684179055602680548a1687528487208054841685179055308088528588208054851686179055888852601187528588208054851686179055600480548c1689528689208054861687179055818952868920805486168717905591548b16885260128752858820805485168617905587528487208054909316909317909155601e80548816871790558054871673577354df5c4945477253f90098c925d9d82b0fb71790558254861673f27296011c3c3d9221f77745ef8059084c4c54df178355602180548716861790555460228054909616961695909517909355600654828252600990935283812083905592519092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620005d991815260200190565b60405180910390a362000916565b600082620005f85750600062000675565b600062000606838562000833565b90508262000615858362000870565b14620006725760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200067283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620006c560201b60201c565b60008183620006e95760405162461bcd60e51b8152600401620006699190620008be565b506000620006f8848662000870565b95945050505050565b6110a28062003d3183390190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620007665781600019048211156200074a576200074a6200070f565b808516156200075857918102915b93841c93908002906200072a565b509250929050565b6000826200077f5750600162000675565b816200078e5750600062000675565b8160018114620007a75760028114620007b257620007d2565b600191505062000675565b60ff841115620007c657620007c66200070f565b50506001821b62000675565b5060208310610133831016604e8410600b8410161715620007f7575081810a62000675565b62000803838362000725565b80600019048211156200081a576200081a6200070f565b029392505050565b60006200067260ff8416836200076e565b60008160001904831182151516156200085057620008506200070f565b500290565b600082198211156200086b576200086b6200070f565b500190565b6000826200088e57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620008a657600080fd5b81516001600160a01b03811681146200067257600080fd5b600060208083528351808285015260005b81811015620008ed57858101830151858201604001528201620008cf565b8181111562000900576000604083870101525b50601f01601f1916929092016040019392505050565b61340b80620009266000396000f3fe6080604052600436106103905760003560e01c80637d1db4a5116101dc578063cfa15af511610102578063ee19828a116100a0578063f708a64f1161006f578063f708a64f14610aad578063f887ea4014610acd578063fce589d814610aed578063ffb54a9914610b0357600080fd5b8063ee19828a14610a28578063f0d2d94814610a48578063f0fc6bca14610a78578063f2fde38b14610a8d57600080fd5b8063df20fd49116100dc578063df20fd49146109ae578063dfc3dce2146109ce578063e86e507e146109ee578063ecca885f14610a0e57600080fd5b8063cfa15af514610928578063da2e3bad14610948578063dd62ed3e1461096857600080fd5b8063a88ce88b1161017a578063b2bdfa7b11610149578063b2bdfa7b146108b9578063b37dd690146108d9578063b46300ec146108f3578063ba1ac0b81461090857600080fd5b8063a88ce88b14610839578063a8aa1b3114610859578063a9059cbb14610879578063ae1967f11461089957600080fd5b8063893d20e8116101b6578063893d20e8146107995780638da5cb5b146107cb57806395d89b41146107e95780639d1944f51461081957600080fd5b80637d1db4a51461074357806384f6dc05146107595780638571a6791461077957600080fd5b80634e23af6a116102c15780636ddd17131161025f578063715018a61161022e578063715018a6146106e4578063722b62ad146106f9578063763a67af1461071857806378109e541461072d57600080fd5b80636ddd1713146106445780636f8c206c1461065e5780637007546b1461067e57806370a08231146106ae57600080fd5b8063571ac8b01161029b578063571ac8b0146105ca578063617fe0ed146105ea57806363157107146106045780636b1ebc541461062457600080fd5b80634e23af6a1461056a5780635074f36f1461058a578063570636dc146105aa57600080fd5b80631df4ccfc1161032e5780632444caad116103085780632444caad146104f35780632b112e49146105135780632d48e89614610528578063313ce5671461054857600080fd5b80631df4ccfc1461049d578063201e7991146104b357806323b872dd146104d357600080fd5b8063095ea7b31161036a578063095ea7b314610422578063180b0d7e1461045257806318160ddd1461046857806318abb6351461047d57600080fd5b80630445b6671461039c57806306fdde03146103c5578063087066151461040057600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506103b2602e5481565b6040519081526020015b60405180910390f35b3480156103d157600080fd5b50604080518082019091526009815268446f67655a696c6c6160b81b60208201525b6040516103bc9190612ddf565b34801561040c57600080fd5b5061042061041b366004612e42565b610b24565b005b34801561042e57600080fd5b5061044261043d366004612e7b565b610b6a565b60405190151581526020016103bc565b34801561045e57600080fd5b506103b2601a5481565b34801561047457600080fd5b506006546103b2565b34801561048957600080fd5b50610420610498366004612ea5565b610bd7565b3480156104a957600080fd5b506103b260195481565b3480156104bf57600080fd5b506104206104ce366004612f0a565b610c60565b3480156104df57600080fd5b506104426104ee366004612f2c565b610c87565b3480156104ff57600080fd5b5061042061050e366004612f68565b610d49565b34801561051f57600080fd5b506103b2610d87565b34801561053457600080fd5b50610420610543366004612f0a565b610dd9565b34801561055457600080fd5b5060125b60405160ff90911681526020016103bc565b34801561057657600080fd5b50610420610585366004612fcd565b610e6d565b34801561059657600080fd5b506104206105a5366004612fcd565b610f0c565b3480156105b657600080fd5b506104206105c5366004612f68565b610fa5565b3480156105d657600080fd5b506104426105e5366004613024565b61100e565b3480156105f657600080fd5b506028546104429060ff1681565b34801561061057600080fd5b5061042061061f36600461303f565b61101c565b34801561063057600080fd5b5061042061063f366004612fcd565b611071565b34801561065057600080fd5b50602d546104429060ff1681565b34801561066a57600080fd5b50610420610679366004613024565b61110a565b34801561068a57600080fd5b50610442610699366004613024565b600c6020526000908152604090205460ff1681565b3480156106ba57600080fd5b506103b26106c9366004613024565b6001600160a01b031660009081526009602052604090205490565b3480156106f057600080fd5b50610420611196565b34801561070557600080fd5b5060285461055890610100900460ff1681565b34801561072457600080fd5b5061042061120a565b34801561073957600080fd5b506103b260085481565b34801561074f57600080fd5b506103b260075481565b34801561076557600080fd5b50610420610774366004612f68565b61124d565b34801561078557600080fd5b50610420610794366004613076565b611298565b3480156107a557600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016103bc565b3480156107d757600080fd5b506000546001600160a01b03166107b3565b3480156107f557600080fd5b50604080518082019091526007815266446f5a696c6c6160c81b60208201526103f3565b34801561082557600080fd5b50610420610834366004612f68565b61166a565b34801561084557600080fd5b50610420610854366004612e42565b6116a8565b34801561086557600080fd5b506026546107b3906001600160a01b031681565b34801561088557600080fd5b50610442610894366004612e7b565b6116e5565b3480156108a557600080fd5b506104206108b4366004612f68565b6116f2565b3480156108c557600080fd5b506000546107b3906001600160a01b031681565b3480156108e557600080fd5b50600b546104429060ff1681565b3480156108ff57600080fd5b5061042061172f565b34801561091457600080fd5b50610442610923366004612e7b565b61177a565b34801561093457600080fd5b50610420610943366004612fcd565b611877565b34801561095457600080fd5b506104206109633660046130f7565b611910565b34801561097457600080fd5b506103b2610983366004613143565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b3480156109ba57600080fd5b506104206109c9366004613176565b6119fa565b3480156109da57600080fd5b506104206109e9366004612f68565b611a3b565b3480156109fa57600080fd5b50610420610a09366004613194565b611aa4565b348015610a1a57600080fd5b50600d546104429060ff1681565b348015610a3457600080fd5b50610420610a433660046131c8565b611af5565b348015610a5457600080fd5b50610442610a63366004613024565b600e6020526000908152604090205460ff1681565b348015610a8457600080fd5b50610420611b22565b348015610a9957600080fd5b50610420610aa8366004613024565b611b7b565b348015610ab957600080fd5b50610420610ac836600461303f565b611c65565b348015610ad957600080fd5b506025546107b3906001600160a01b031681565b348015610af957600080fd5b506103b260185481565b348015610b0f57600080fd5b5060265461044290600160a01b900460ff1681565b6000546001600160a01b03163314610b575760405162461bcd60e51b8152600401610b4e906131f4565b60405180910390fd5b600b805460ff1916911515919091179055565b336000818152600a602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610bc59086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610c015760405162461bcd60e51b8152600401610b4e906131f4565b601e80546001600160a01b03199081166001600160a01b0397881617909155601f805482169587169590951790945560208054851693861693909317909255602280548416918516919091179055602180549092169216919091179055565b336000908152600c602052604090205460ff16610c7c57600080fd5b602391909155602455565b6001600160a01b0383166000908152600a6020908152604080832033845290915281205460001914610d34576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600a82528381203382529091529190912054610d0f918490611e33565b6001600160a01b0385166000908152600a602090815260408083203384529091529020555b610d3f848484611e6d565b90505b9392505050565b6000546001600160a01b03163314610d735760405162461bcd60e51b8152600401610b4e906131f4565b610d8181633b9aca0061323f565b602a5550565b6005546001600160a01b0316600090815260096020526040812054610dd4906004546001600160a01b0316600090815260096020526040902054610dce9060065490612534565b90612534565b905090565b6000546001600160a01b03163314610e035760405162461bcd60e51b8152600401610b4e906131f4565b602b546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b158015610e5157600080fd5b505af1158015610e65573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610e975760405162461bcd60e51b8152600401610b4e906131f4565b60005b82811015610f065781600c6000868685818110610eb957610eb961325e565b9050602002016020810190610ece9190613024565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610eff81613274565b9050610e9a565b50505050565b6000546001600160a01b03163314610f365760405162461bcd60e51b8152600401610b4e906131f4565b60005b82811015610f065781600f6000868685818110610f5857610f5861325e565b9050602002016020810190610f6d9190613024565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610f9e81613274565b9050610f39565b6000546001600160a01b03163314610fcf5760405162461bcd60e51b8152600401610b4e906131f4565b6103e8600654610fdf919061328f565b6007541015610fed57600080fd5b6103e881600654610ffe919061323f565b611008919061328f565b60075550565b6000610bd182600019610b6a565b6000546001600160a01b031633146110465760405162461bcd60e51b8152600401610b4e906131f4565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461109b5760405162461bcd60e51b8152600401610b4e906131f4565b60005b82811015610f065781601060008686858181106110bd576110bd61325e565b90506020020160208101906110d29190613024565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561110381613274565b905061109e565b6000546001600160a01b031633146111345760405162461bcd60e51b8152600401610b4e906131f4565b602b54604051638aee812760e01b81526001600160a01b03838116600483015290911690638aee812790602401600060405180830381600087803b15801561117b57600080fd5b505af115801561118f573d6000803e3d6000fd5b5050505050565b6000546001600160a01b031633146111c05760405162461bcd60e51b8152600401610b4e906131f4565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146112345760405162461bcd60e51b8152600401610b4e906131f4565b6026805460ff60a01b1916600160a01b17905543602755565b6000546001600160a01b031633146112775760405162461bcd60e51b8152600401610b4e906131f4565b6103e8600654611287919061328f565b81101561129357600080fd5b600855565b6000546001600160a01b031633146112c25760405162461bcd60e51b8152600401610b4e906131f4565b6101f583106113295760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610b4e565b8281146113895760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610b4e565b6000805b848110156113cd578383828181106113a7576113a761325e565b90506020020135826113b991906132b1565b9150806113c581613274565b91505061138d565b50806113ee876001600160a01b031660009081526009602052604090205490565b101561143c5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610b4e565b60005b848110156115d1576114908787878481811061145d5761145d61325e565b90506020020160208101906114729190613024565b8686858181106114845761148461325e565b90506020020135612576565b50601260008787848181106114a7576114a761325e565b90506020020160208101906114bc9190613024565b6001600160a01b0316815260208101919091526040016000205460ff166115bf57602b546001600160a01b03166314b6ca968787848181106115005761150061325e565b90506020020160208101906115159190613024565b600960008a8a8781811061152b5761152b61325e565b90506020020160208101906115409190613024565b6001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b81526004016115929291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b1580156115ac57600080fd5b505af19250505080156115bd575060015b505b806115c981613274565b91505061143f565b506001600160a01b03861660009081526012602052604090205460ff16610e6557602b546001600160a01b0387811660008181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561165057600080fd5b505af1925050508015611661575060015b610e6557610e65565b6000546001600160a01b031633146116945760405162461bcd60e51b8152600401610b4e906131f4565b620b71b081106116a357600080fd5b602c55565b6000546001600160a01b031633146116d25760405162461bcd60e51b8152600401610b4e906131f4565b600d805460ff1916911515919091179055565b6000610d42338484611e6d565b336000908152600c602052604090205460ff1661170e57600080fd5b6103e860065461171e919061328f565b81101561172a57600080fd5b600755565b336000908152600c602052604090205460ff1661174b57600080fd5b60405133904780156108fc02916000818181858888f19350505050158015611777573d6000803e3d6000fd5b50565b336000908152600c602052604081205460ff1661179657600080fd5b81611806576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156117df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180391906132c9565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015611853573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4291906132e2565b6000546001600160a01b031633146118a15760405162461bcd60e51b8152600401610b4e906131f4565b60005b82811015610f065781600e60008686858181106118c3576118c361325e565b90506020020160208101906118d89190613024565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561190981613274565b90506118a4565b6000546001600160a01b0316331461193a5760405162461bcd60e51b8152600401610b4e906131f4565b601387905560148690556015859055601684905560178390556018829055828285876119668a8c6132b1565b61197091906132b1565b61197a91906132b1565b61198491906132b1565b61198e91906132b1565b601955601a8190556119a160028261328f565b601954106119f15760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e20343925000000006044820152606401610b4e565b50505050505050565b6000546001600160a01b03163314611a245760405162461bcd60e51b8152600401610b4e906131f4565b602d805460ff191692151592909217909155602e55565b6000546001600160a01b03163314611a655760405162461bcd60e51b8152600401610b4e906131f4565b6103e8600654611a75919061328f565b6008541015611a8357600080fd5b6103e881600654611a94919061323f565b611a9e919061328f565b60085550565b6000546001600160a01b03163314611ace5760405162461bcd60e51b8152600401610b4e906131f4565b6028805461ffff191692151561ff0019169290921761010060ff9290921691909102179055565b336000908152600c602052604090205460ff16611b1157600080fd5b601b91909155601c91909155601d55565b602b54604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b158015611b6757600080fd5b505af1158015610f06573d6000803e3d6000fd5b6000546001600160a01b03163314611ba55760405162461bcd60e51b8152600401610b4e906131f4565b6001600160a01b038116611c0a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b4e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611c8f5760405162461bcd60e51b8152600401610b4e906131f4565b6001600160a01b0382163014801590611cb657506026546001600160a01b03838116911614155b611cbf57600080fd5b6001600160a01b0382166000908152601260205260409020805460ff19168215801591909117909155611d2557602b54604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401610e37565b602b546001600160a01b0383811660008181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610e37565b5050565b600082611d8157506000610bd1565b6000611d8d838561323f565b905082611d9a858361328f565b14610d425760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b4e565b6000610d4283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061264a565b60008184841115611e575760405162461bcd60e51b8152600401610b4e9190612ddf565b506000611e6484866132ff565b95945050505050565b602f5460009060ff1615611e8d57611e86848484612576565b9050610d42565b6001600160a01b03841660009081526001602052604090205460ff16158015611ecf57506001600160a01b03831660009081526001602052604090205460ff16155b15611f8657602654600160a01b900460ff16611f245760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610b4e565b600b5460ff1615611f86576001600160a01b0383166000908152600c602052604090205460ff16611f865760405162461bcd60e51b815260206004820152600c60248201526b139bdd081b185d5b98da195960a21b6044820152606401610b4e565b600d5460ff1615611fe4576001600160a01b0384166000908152600e602052604090205460ff1615611fe45760405162461bcd60e51b8152602060048201526007602482015266109b1a5cdd195960ca1b6044820152606401610b4e565b602a543a1015801561200457506026546001600160a01b03848116911614155b1561202d576001600160a01b0383166000908152600e60205260409020805460ff191660011790555b6001600160a01b03841660009081526001602052604090205460ff1615801561205f57506001600160a01b0383163014155b801561207957506004546001600160a01b03848116911614155b801561209357506026546001600160a01b03848116911614155b80156120ad57506022546001600160a01b03848116911614155b80156120d257506001600160a01b03831660009081526010602052604090205460ff16155b15612173576001600160a01b0383166000908152600960205260409020546008546120fd84836132b1565b11156121715760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610b4e565b505b6026546001600160a01b038581169116148015612192575060285460ff165b80156121b757506001600160a01b03831660009081526011602052604090205460ff16155b15612252576001600160a01b03831660009081526029602052604090205442116122235760405162461bcd60e51b815260206004820152601c60248201527f506c65617365207761697420666f72206265747765656e2062757973000000006044820152606401610b4e565b60285461223890610100900460ff16426132b1565b6001600160a01b0384166000908152602960205260409020555b61225c8483612678565b6122646126e1565b1561227157612271612730565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600990915291909120546122c3918490611e33565b6001600160a01b038516600090815260096020908152604080832093909355600f90529081205460ff168061231057506001600160a01b0384166000908152600f602052604090205460ff165b6123245761231f858486612baa565b612326565b825b6001600160a01b03851660009081526009602052604090205490915061234c9082612d2d565b6001600160a01b0380861660009081526009602090815260408083209490945591881681526012909152205460ff166123f057602b546001600160a01b0386811660008181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156123dd57600080fd5b505af19250505080156123ee575060015b505b6001600160a01b03841660009081526012602052604090205460ff1661248157602b546001600160a01b0385811660008181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561246e57600080fd5b505af192505050801561247f575060015b505b601454156124ee57602b54602c546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916124c19160040190815260200190565b600060405180830381600087803b1580156124db57600080fd5b505af19250505080156124ec575060015b505b836001600160a01b0316856001600160a01b03166000805160206133b68339815191528360405161252191815260200190565b60405180910390a3506001949350505050565b6000610d4283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e33565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526009909152918220546125c7918490611e33565b6001600160a01b0380861660009081526009602052604080822093909355908516815220546125f69083612d2d565b6001600160a01b0380851660008181526009602052604090819020939093559151908616906000805160206133b6833981519152906126389086815260200190565b60405180910390a35060019392505050565b6000818361266b5760405162461bcd60e51b8152600401610b4e9190612ddf565b506000611e64848661328f565b600754811115806126a157506001600160a01b03821660009081526010602052604090205460ff165b611d6e5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610b4e565b6026546000906001600160a01b031633148015906127025750602f5460ff16155b80156127105750602d5460ff165b8015610dd4575050602e5430600090815260096020526040902054101590565b602f805460ff1916600117905560235460245460009161274f91612d8c565b61275b5760135461275e565b60005b90506000612788600261278260195461278286602e54611d7290919063ffffffff16565b90611df1565b905060006127a182602e5461253490919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106127db576127db61325e565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061280c5761280c61325e565b6001600160a01b03928316602091820292909201015260255460405163b43d9bbb60e01b81524792919091169063b43d9bbb90612856908690600090879030904290600401613316565b600060405180830381600087803b15801561287057600080fd5b505af1158015612884573d6000803e3d6000fd5b50505050600061289d824761253490919063ffffffff16565b905060006128b86128af886002611df1565b60195490612534565b905060006128cd60026127828481878d611d72565b905060006128ea8361278260145487611d7290919063ffffffff16565b905060006129078461278260155488611d7290919063ffffffff16565b905060006129248561278260165489611d7290919063ffffffff16565b90506000612941866127826017548a611d7290919063ffffffff16565b9050602b60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561299357600080fd5b505af1935050505080156129a5575060015b50601f546040516000916001600160a01b03169061753090869084818181858888f193505050503d80600081146129f8576040519150601f19603f3d011682016040523d82523d6000602084013e6129fd565b606091505b50506020546040519192506001600160a01b0316906175309085906000818181858888f193505050503d8060008114612a52576040519150601f19603f3d011682016040523d82523d6000602084013e612a57565b606091505b50506021546040519192506001600160a01b0316906175309084906000818181858888f193505050503d8060008114612aac576040519150601f19603f3d011682016040523d82523d6000602084013e612ab1565b606091505b5060009250508c159050612b9157602554601e54604051633994a6ad60e21b8152306004820152602481018f905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063e6529ab490889060c40160606040518083038185885af1158015612b2f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b549190613387565b505060408051888152602081018f90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050602f805460ff191690555050505050505050505050565b601d54602654600091906001600160a01b0384811691161415612bd05750601b54612beb565b6026546001600160a01b0386811691161415612beb5750601c545b6000612c1e601a546064612bff919061323f565b61278284612c186019548a611d7290919063ffffffff16565b90611d72565b90506000612c3d60195461278260185485611d7290919063ffffffff16565b90506000612c4b8383612534565b30600090815260096020526040902054909150612c689082612d2d565b30600090815260096020526040808220929092556022546001600160a01b031681522054612c969083612d2d565b6022546001600160a01b0390811660009081526009602090815260409182902093909355518381523092918b16916000805160206133b6833981519152910160405180910390a38115612d17576022546040518381526001600160a01b03918216918a16906000805160206133b68339815191529060200160405180910390a35b612d218784612534565b98975050505050505050565b600080612d3a83856132b1565b905083811015610d425760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b4e565b600082612d9883612da0565b119392505050565b6000610bd1612dad610d87565b6026546001600160a01b031660009081526009602052604090205461278290612dd890600290612c18565b8590611d72565b600060208083528351808285015260005b81811015612e0c57858101830151858201604001528201612df0565b81811115612e1e576000604083870101525b50601f01601f1916929092016040019392505050565b801515811461177757600080fd5b600060208284031215612e5457600080fd5b8135610d4281612e34565b80356001600160a01b0381168114612e7657600080fd5b919050565b60008060408385031215612e8e57600080fd5b612e9783612e5f565b946020939093013593505050565b600080600080600060a08688031215612ebd57600080fd5b612ec686612e5f565b9450612ed460208701612e5f565b9350612ee260408701612e5f565b9250612ef060608701612e5f565b9150612efe60808701612e5f565b90509295509295909350565b60008060408385031215612f1d57600080fd5b50508035926020909101359150565b600080600060608486031215612f4157600080fd5b612f4a84612e5f565b9250612f5860208501612e5f565b9150604084013590509250925092565b600060208284031215612f7a57600080fd5b5035919050565b60008083601f840112612f9357600080fd5b50813567ffffffffffffffff811115612fab57600080fd5b6020830191508360208260051b8501011115612fc657600080fd5b9250929050565b600080600060408486031215612fe257600080fd5b833567ffffffffffffffff811115612ff957600080fd5b61300586828701612f81565b909450925050602084013561301981612e34565b809150509250925092565b60006020828403121561303657600080fd5b610d4282612e5f565b6000806040838503121561305257600080fd5b61305b83612e5f565b9150602083013561306b81612e34565b809150509250929050565b60008060008060006060868803121561308e57600080fd5b61309786612e5f565b9450602086013567ffffffffffffffff808211156130b457600080fd5b6130c089838a01612f81565b909650945060408801359150808211156130d957600080fd5b506130e688828901612f81565b969995985093965092949392505050565b600080600080600080600060e0888a03121561311257600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000806040838503121561315657600080fd5b61315f83612e5f565b915061316d60208401612e5f565b90509250929050565b6000806040838503121561318957600080fd5b8235612e9781612e34565b600080604083850312156131a757600080fd5b82356131b281612e34565b9150602083013560ff8116811461306b57600080fd5b6000806000606084860312156131dd57600080fd5b505081359360208301359350604090920135919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561325957613259613229565b500290565b634e487b7160e01b600052603260045260246000fd5b600060001982141561328857613288613229565b5060010190565b6000826132ac57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156132c4576132c4613229565b500190565b6000602082840312156132db57600080fd5b5051919050565b6000602082840312156132f457600080fd5b8151610d4281612e34565b60008282101561331157613311613229565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156133665784516001600160a01b031683529383019391830191600101613341565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561339c57600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205753bc2c5ac0975992d5468d1345a6886d1070e57e4a5c58944e60b7b375c36764736f6c634300080a00336080604052600180546001600160a01b031990811673a0eb9a6063df850f611aa69c60025c7f8eb4d6ee179091556002805490911673b7ddc6414bf4f5515b52d8bdd69973ae205ff1011790556ec097ce7bc90715b34b9f1000000000600c55610a8c600d55670de0b6b3a7640000600e5534801561007d57600080fd5b506040516110a23803806110a283398101604081905261009c916100f6565b6001600160a01b0381166100c45773a4ee06ce40cb7e8c04e127c1f7d3dfb7f7039c816100c6565b805b600380546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610126565b60006020828403121561010857600080fd5b81516001600160a01b038116811461011f57600080fd5b9392505050565b610f6d806101356000396000f3fe6080604052600436106100e85760003560e01c80638aee81271161008a578063e2d2e21911610059578063e2d2e21914610259578063efca2eed1461026f578063ffb2c47914610285578063ffd49c84146102a557600080fd5b80638aee8127146101c4578063997664d7146101e4578063ce7c2ac2146101fa578063d0e30db01461025157600080fd5b806328fd3198116100c657806328fd3198146101585780632d48e896146101785780633a98ef39146101985780634fab0ae8146101ae57600080fd5b806311ce023d146100ed57806314b6ca961461011657806315f7e05e14610138575b600080fd5b3480156100f957600080fd5b50610103600c5481565b6040519081526020015b60405180910390f35b34801561012257600080fd5b50610136610131366004610cf0565b6102bb565b005b34801561014457600080fd5b50610136610153366004610d1a565b610433565b34801561016457600080fd5b50610103610173366004610d1a565b610456565b34801561018457600080fd5b50610136610193366004610d35565b6104df565b3480156101a457600080fd5b5061010360085481565b3480156101ba57600080fd5b50610103600e5481565b3480156101d057600080fd5b506101366101df366004610d1a565b610501565b3480156101f057600080fd5b5061010360095481565b34801561020657600080fd5b50610236610215366004610d1a565b60076020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161010d565b61013661053a565b34801561026557600080fd5b50610103600b5481565b34801561027b57600080fd5b50610103600a5481565b34801561029157600080fd5b506101366102a0366004610d57565b610769565b3480156102b157600080fd5b50610103600d5481565b6000546001600160a01b031633146102d257600080fd5b6001600160a01b038216600090815260076020526040902054156102f9576102f982610869565b60008111801561031f57506001600160a01b038216600090815260076020526040902054155b1561038557600480546001600160a01b0384166000818152600560205260408120839055600183018455929092527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b03191690911790556103b8565b801580156103aa57506001600160a01b03821660009081526007602052604090205415155b156103b8576103b882610985565b6001600160a01b0382166000908152600760205260409020546008546103e99183916103e391610a9a565b90610ae5565b6008556001600160a01b038216600090815260076020526040902081905561041081610b49565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6000546001600160a01b0316331461044a57600080fd5b61045381610869565b50565b6001600160a01b03811660009081526007602052604081205461047b57506000919050565b6001600160a01b03821660009081526007602052604081205461049d90610b49565b6001600160a01b0384166000908152600760205260409020600101549091508082116104cd575060009392505050565b6104d78282610a9a565b949350505050565b6000546001600160a01b031633146104f657600080fd5b600d91909155600e55565b6000546001600160a01b0316331461051857600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461055157600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801561059a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105be9190610d70565b6040805160028082526060820183529293506000929091602083019080368337505060025482519293506001600160a01b03169183915060009061060457610604610d89565b6001600160a01b039283166020918202929092010152600180548351921691839190811061063457610634610d89565b6001600160a01b03928316602091820292909201015260035460405163118d44ef60e21b815291169063463513bc90349061067a90600090869030904290600401610d9f565b6000604051808303818588803b15801561069357600080fd5b505af11580156106a7573d6000803e3d6000fd5b50506001546040516370a0823160e01b81523060048201526000945061072793508692506001600160a01b03909116906370a0823190602401602060405180830381865afa1580156106fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107219190610d70565b90610a9a565b6009549091506107379082610ae5565b600955600854600c5461076191610758916107529085610b66565b90610be5565b600b5490610ae5565b600b55505050565b6000546001600160a01b0316331461078057600080fd5b6004548061078c575050565b6000805a905060005b84831080156107a357508381105b156108625783600f54106107b7576000600f555b6107e96004600f54815481106107cf576107cf610d89565b6000918252602090912001546001600160a01b0316610c27565b15610820576108206004600f548154811061080657610806610d89565b6000918252602090912001546001600160a01b0316610869565b61083561082e5a8490610a9a565b8490610ae5565b92505a600f8054919350600061084a83610e1f565b9190505550808061085a90610e1f565b915050610795565b5050505050565b6001600160a01b0381166000908152600760205260409020546108895750565b600061089482610456565b9050801561098157600a546108a99082610ae5565b600a5560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156108ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109239190610e3a565b506001600160a01b038216600090815260066020908152604080832042905560079091529020600201546109579082610ae5565b6001600160a01b038316600090815260076020526040902060028101919091555461041090610b49565b5050565b6004805461099590600190610e5c565b815481106109a5576109a5610d89565b60009182526020808320909101546001600160a01b03848116845260059092526040909220546004805492909316929181106109e3576109e3610d89565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260059182905260408120546004805491939291610a2f90600190610e5c565b81548110610a3f57610a3f610d89565b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610a7557610a75610e73565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610adc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c6c565b90505b92915050565b600080610af28385610e89565b905083811015610adc5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b6000610adf600c54610752600b5485610b6690919063ffffffff16565b600082610b7557506000610adf565b6000610b818385610ea1565b905082610b8e8583610ec0565b14610adc5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b40565b6000610adc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610ca6565b600d546001600160a01b03821660009081526006602052604081205490914291610c519190610e89565b108015610adf5750600e54610c6583610456565b1192915050565b60008184841115610c905760405162461bcd60e51b8152600401610b409190610ee2565b506000610c9d8486610e5c565b95945050505050565b60008183610cc75760405162461bcd60e51b8152600401610b409190610ee2565b506000610c9d8486610ec0565b80356001600160a01b0381168114610ceb57600080fd5b919050565b60008060408385031215610d0357600080fd5b610d0c83610cd4565b946020939093013593505050565b600060208284031215610d2c57600080fd5b610adc82610cd4565b60008060408385031215610d4857600080fd5b50508035926020909101359150565b600060208284031215610d6957600080fd5b5035919050565b600060208284031215610d8257600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610de95784516001600160a01b031683529383019391830191600101610dc4565b50506001600160a01b039690961660408501525050506060015292915050565b634e487b7160e01b600052601160045260246000fd5b6000600019821415610e3357610e33610e09565b5060010190565b600060208284031215610e4c57600080fd5b81518015158114610adc57600080fd5b600082821015610e6e57610e6e610e09565b500390565b634e487b7160e01b600052603160045260246000fd5b60008219821115610e9c57610e9c610e09565b500190565b6000816000190483118215151615610ebb57610ebb610e09565b500290565b600082610edd57634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b81811015610f0f57858101830151858201604001528201610ef3565b81811115610f21576000604083870101525b50601f01601f191692909201604001939250505056fea26469706673582212205f05e8aff00ff09393eaeae9592594523a85a8a5d8ad1e889540af4341c26fef64736f6c634300080a0033
Deployed ByteCode
0x6080604052600436106103905760003560e01c80637d1db4a5116101dc578063cfa15af511610102578063ee19828a116100a0578063f708a64f1161006f578063f708a64f14610aad578063f887ea4014610acd578063fce589d814610aed578063ffb54a9914610b0357600080fd5b8063ee19828a14610a28578063f0d2d94814610a48578063f0fc6bca14610a78578063f2fde38b14610a8d57600080fd5b8063df20fd49116100dc578063df20fd49146109ae578063dfc3dce2146109ce578063e86e507e146109ee578063ecca885f14610a0e57600080fd5b8063cfa15af514610928578063da2e3bad14610948578063dd62ed3e1461096857600080fd5b8063a88ce88b1161017a578063b2bdfa7b11610149578063b2bdfa7b146108b9578063b37dd690146108d9578063b46300ec146108f3578063ba1ac0b81461090857600080fd5b8063a88ce88b14610839578063a8aa1b3114610859578063a9059cbb14610879578063ae1967f11461089957600080fd5b8063893d20e8116101b6578063893d20e8146107995780638da5cb5b146107cb57806395d89b41146107e95780639d1944f51461081957600080fd5b80637d1db4a51461074357806384f6dc05146107595780638571a6791461077957600080fd5b80634e23af6a116102c15780636ddd17131161025f578063715018a61161022e578063715018a6146106e4578063722b62ad146106f9578063763a67af1461071857806378109e541461072d57600080fd5b80636ddd1713146106445780636f8c206c1461065e5780637007546b1461067e57806370a08231146106ae57600080fd5b8063571ac8b01161029b578063571ac8b0146105ca578063617fe0ed146105ea57806363157107146106045780636b1ebc541461062457600080fd5b80634e23af6a1461056a5780635074f36f1461058a578063570636dc146105aa57600080fd5b80631df4ccfc1161032e5780632444caad116103085780632444caad146104f35780632b112e49146105135780632d48e89614610528578063313ce5671461054857600080fd5b80631df4ccfc1461049d578063201e7991146104b357806323b872dd146104d357600080fd5b8063095ea7b31161036a578063095ea7b314610422578063180b0d7e1461045257806318160ddd1461046857806318abb6351461047d57600080fd5b80630445b6671461039c57806306fdde03146103c5578063087066151461040057600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506103b2602e5481565b6040519081526020015b60405180910390f35b3480156103d157600080fd5b50604080518082019091526009815268446f67655a696c6c6160b81b60208201525b6040516103bc9190612ddf565b34801561040c57600080fd5b5061042061041b366004612e42565b610b24565b005b34801561042e57600080fd5b5061044261043d366004612e7b565b610b6a565b60405190151581526020016103bc565b34801561045e57600080fd5b506103b2601a5481565b34801561047457600080fd5b506006546103b2565b34801561048957600080fd5b50610420610498366004612ea5565b610bd7565b3480156104a957600080fd5b506103b260195481565b3480156104bf57600080fd5b506104206104ce366004612f0a565b610c60565b3480156104df57600080fd5b506104426104ee366004612f2c565b610c87565b3480156104ff57600080fd5b5061042061050e366004612f68565b610d49565b34801561051f57600080fd5b506103b2610d87565b34801561053457600080fd5b50610420610543366004612f0a565b610dd9565b34801561055457600080fd5b5060125b60405160ff90911681526020016103bc565b34801561057657600080fd5b50610420610585366004612fcd565b610e6d565b34801561059657600080fd5b506104206105a5366004612fcd565b610f0c565b3480156105b657600080fd5b506104206105c5366004612f68565b610fa5565b3480156105d657600080fd5b506104426105e5366004613024565b61100e565b3480156105f657600080fd5b506028546104429060ff1681565b34801561061057600080fd5b5061042061061f36600461303f565b61101c565b34801561063057600080fd5b5061042061063f366004612fcd565b611071565b34801561065057600080fd5b50602d546104429060ff1681565b34801561066a57600080fd5b50610420610679366004613024565b61110a565b34801561068a57600080fd5b50610442610699366004613024565b600c6020526000908152604090205460ff1681565b3480156106ba57600080fd5b506103b26106c9366004613024565b6001600160a01b031660009081526009602052604090205490565b3480156106f057600080fd5b50610420611196565b34801561070557600080fd5b5060285461055890610100900460ff1681565b34801561072457600080fd5b5061042061120a565b34801561073957600080fd5b506103b260085481565b34801561074f57600080fd5b506103b260075481565b34801561076557600080fd5b50610420610774366004612f68565b61124d565b34801561078557600080fd5b50610420610794366004613076565b611298565b3480156107a557600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016103bc565b3480156107d757600080fd5b506000546001600160a01b03166107b3565b3480156107f557600080fd5b50604080518082019091526007815266446f5a696c6c6160c81b60208201526103f3565b34801561082557600080fd5b50610420610834366004612f68565b61166a565b34801561084557600080fd5b50610420610854366004612e42565b6116a8565b34801561086557600080fd5b506026546107b3906001600160a01b031681565b34801561088557600080fd5b50610442610894366004612e7b565b6116e5565b3480156108a557600080fd5b506104206108b4366004612f68565b6116f2565b3480156108c557600080fd5b506000546107b3906001600160a01b031681565b3480156108e557600080fd5b50600b546104429060ff1681565b3480156108ff57600080fd5b5061042061172f565b34801561091457600080fd5b50610442610923366004612e7b565b61177a565b34801561093457600080fd5b50610420610943366004612fcd565b611877565b34801561095457600080fd5b506104206109633660046130f7565b611910565b34801561097457600080fd5b506103b2610983366004613143565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b3480156109ba57600080fd5b506104206109c9366004613176565b6119fa565b3480156109da57600080fd5b506104206109e9366004612f68565b611a3b565b3480156109fa57600080fd5b50610420610a09366004613194565b611aa4565b348015610a1a57600080fd5b50600d546104429060ff1681565b348015610a3457600080fd5b50610420610a433660046131c8565b611af5565b348015610a5457600080fd5b50610442610a63366004613024565b600e6020526000908152604090205460ff1681565b348015610a8457600080fd5b50610420611b22565b348015610a9957600080fd5b50610420610aa8366004613024565b611b7b565b348015610ab957600080fd5b50610420610ac836600461303f565b611c65565b348015610ad957600080fd5b506025546107b3906001600160a01b031681565b348015610af957600080fd5b506103b260185481565b348015610b0f57600080fd5b5060265461044290600160a01b900460ff1681565b6000546001600160a01b03163314610b575760405162461bcd60e51b8152600401610b4e906131f4565b60405180910390fd5b600b805460ff1916911515919091179055565b336000818152600a602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610bc59086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610c015760405162461bcd60e51b8152600401610b4e906131f4565b601e80546001600160a01b03199081166001600160a01b0397881617909155601f805482169587169590951790945560208054851693861693909317909255602280548416918516919091179055602180549092169216919091179055565b336000908152600c602052604090205460ff16610c7c57600080fd5b602391909155602455565b6001600160a01b0383166000908152600a6020908152604080832033845290915281205460001914610d34576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600a82528381203382529091529190912054610d0f918490611e33565b6001600160a01b0385166000908152600a602090815260408083203384529091529020555b610d3f848484611e6d565b90505b9392505050565b6000546001600160a01b03163314610d735760405162461bcd60e51b8152600401610b4e906131f4565b610d8181633b9aca0061323f565b602a5550565b6005546001600160a01b0316600090815260096020526040812054610dd4906004546001600160a01b0316600090815260096020526040902054610dce9060065490612534565b90612534565b905090565b6000546001600160a01b03163314610e035760405162461bcd60e51b8152600401610b4e906131f4565b602b546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b158015610e5157600080fd5b505af1158015610e65573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610e975760405162461bcd60e51b8152600401610b4e906131f4565b60005b82811015610f065781600c6000868685818110610eb957610eb961325e565b9050602002016020810190610ece9190613024565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610eff81613274565b9050610e9a565b50505050565b6000546001600160a01b03163314610f365760405162461bcd60e51b8152600401610b4e906131f4565b60005b82811015610f065781600f6000868685818110610f5857610f5861325e565b9050602002016020810190610f6d9190613024565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610f9e81613274565b9050610f39565b6000546001600160a01b03163314610fcf5760405162461bcd60e51b8152600401610b4e906131f4565b6103e8600654610fdf919061328f565b6007541015610fed57600080fd5b6103e881600654610ffe919061323f565b611008919061328f565b60075550565b6000610bd182600019610b6a565b6000546001600160a01b031633146110465760405162461bcd60e51b8152600401610b4e906131f4565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461109b5760405162461bcd60e51b8152600401610b4e906131f4565b60005b82811015610f065781601060008686858181106110bd576110bd61325e565b90506020020160208101906110d29190613024565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561110381613274565b905061109e565b6000546001600160a01b031633146111345760405162461bcd60e51b8152600401610b4e906131f4565b602b54604051638aee812760e01b81526001600160a01b03838116600483015290911690638aee812790602401600060405180830381600087803b15801561117b57600080fd5b505af115801561118f573d6000803e3d6000fd5b5050505050565b6000546001600160a01b031633146111c05760405162461bcd60e51b8152600401610b4e906131f4565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146112345760405162461bcd60e51b8152600401610b4e906131f4565b6026805460ff60a01b1916600160a01b17905543602755565b6000546001600160a01b031633146112775760405162461bcd60e51b8152600401610b4e906131f4565b6103e8600654611287919061328f565b81101561129357600080fd5b600855565b6000546001600160a01b031633146112c25760405162461bcd60e51b8152600401610b4e906131f4565b6101f583106113295760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610b4e565b8281146113895760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610b4e565b6000805b848110156113cd578383828181106113a7576113a761325e565b90506020020135826113b991906132b1565b9150806113c581613274565b91505061138d565b50806113ee876001600160a01b031660009081526009602052604090205490565b101561143c5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610b4e565b60005b848110156115d1576114908787878481811061145d5761145d61325e565b90506020020160208101906114729190613024565b8686858181106114845761148461325e565b90506020020135612576565b50601260008787848181106114a7576114a761325e565b90506020020160208101906114bc9190613024565b6001600160a01b0316815260208101919091526040016000205460ff166115bf57602b546001600160a01b03166314b6ca968787848181106115005761150061325e565b90506020020160208101906115159190613024565b600960008a8a8781811061152b5761152b61325e565b90506020020160208101906115409190613024565b6001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b81526004016115929291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b1580156115ac57600080fd5b505af19250505080156115bd575060015b505b806115c981613274565b91505061143f565b506001600160a01b03861660009081526012602052604090205460ff16610e6557602b546001600160a01b0387811660008181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561165057600080fd5b505af1925050508015611661575060015b610e6557610e65565b6000546001600160a01b031633146116945760405162461bcd60e51b8152600401610b4e906131f4565b620b71b081106116a357600080fd5b602c55565b6000546001600160a01b031633146116d25760405162461bcd60e51b8152600401610b4e906131f4565b600d805460ff1916911515919091179055565b6000610d42338484611e6d565b336000908152600c602052604090205460ff1661170e57600080fd5b6103e860065461171e919061328f565b81101561172a57600080fd5b600755565b336000908152600c602052604090205460ff1661174b57600080fd5b60405133904780156108fc02916000818181858888f19350505050158015611777573d6000803e3d6000fd5b50565b336000908152600c602052604081205460ff1661179657600080fd5b81611806576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156117df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180391906132c9565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015611853573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4291906132e2565b6000546001600160a01b031633146118a15760405162461bcd60e51b8152600401610b4e906131f4565b60005b82811015610f065781600e60008686858181106118c3576118c361325e565b90506020020160208101906118d89190613024565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561190981613274565b90506118a4565b6000546001600160a01b0316331461193a5760405162461bcd60e51b8152600401610b4e906131f4565b601387905560148690556015859055601684905560178390556018829055828285876119668a8c6132b1565b61197091906132b1565b61197a91906132b1565b61198491906132b1565b61198e91906132b1565b601955601a8190556119a160028261328f565b601954106119f15760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e20343925000000006044820152606401610b4e565b50505050505050565b6000546001600160a01b03163314611a245760405162461bcd60e51b8152600401610b4e906131f4565b602d805460ff191692151592909217909155602e55565b6000546001600160a01b03163314611a655760405162461bcd60e51b8152600401610b4e906131f4565b6103e8600654611a75919061328f565b6008541015611a8357600080fd5b6103e881600654611a94919061323f565b611a9e919061328f565b60085550565b6000546001600160a01b03163314611ace5760405162461bcd60e51b8152600401610b4e906131f4565b6028805461ffff191692151561ff0019169290921761010060ff9290921691909102179055565b336000908152600c602052604090205460ff16611b1157600080fd5b601b91909155601c91909155601d55565b602b54604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b158015611b6757600080fd5b505af1158015610f06573d6000803e3d6000fd5b6000546001600160a01b03163314611ba55760405162461bcd60e51b8152600401610b4e906131f4565b6001600160a01b038116611c0a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b4e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611c8f5760405162461bcd60e51b8152600401610b4e906131f4565b6001600160a01b0382163014801590611cb657506026546001600160a01b03838116911614155b611cbf57600080fd5b6001600160a01b0382166000908152601260205260409020805460ff19168215801591909117909155611d2557602b54604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401610e37565b602b546001600160a01b0383811660008181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610e37565b5050565b600082611d8157506000610bd1565b6000611d8d838561323f565b905082611d9a858361328f565b14610d425760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b4e565b6000610d4283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061264a565b60008184841115611e575760405162461bcd60e51b8152600401610b4e9190612ddf565b506000611e6484866132ff565b95945050505050565b602f5460009060ff1615611e8d57611e86848484612576565b9050610d42565b6001600160a01b03841660009081526001602052604090205460ff16158015611ecf57506001600160a01b03831660009081526001602052604090205460ff16155b15611f8657602654600160a01b900460ff16611f245760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610b4e565b600b5460ff1615611f86576001600160a01b0383166000908152600c602052604090205460ff16611f865760405162461bcd60e51b815260206004820152600c60248201526b139bdd081b185d5b98da195960a21b6044820152606401610b4e565b600d5460ff1615611fe4576001600160a01b0384166000908152600e602052604090205460ff1615611fe45760405162461bcd60e51b8152602060048201526007602482015266109b1a5cdd195960ca1b6044820152606401610b4e565b602a543a1015801561200457506026546001600160a01b03848116911614155b1561202d576001600160a01b0383166000908152600e60205260409020805460ff191660011790555b6001600160a01b03841660009081526001602052604090205460ff1615801561205f57506001600160a01b0383163014155b801561207957506004546001600160a01b03848116911614155b801561209357506026546001600160a01b03848116911614155b80156120ad57506022546001600160a01b03848116911614155b80156120d257506001600160a01b03831660009081526010602052604090205460ff16155b15612173576001600160a01b0383166000908152600960205260409020546008546120fd84836132b1565b11156121715760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610b4e565b505b6026546001600160a01b038581169116148015612192575060285460ff165b80156121b757506001600160a01b03831660009081526011602052604090205460ff16155b15612252576001600160a01b03831660009081526029602052604090205442116122235760405162461bcd60e51b815260206004820152601c60248201527f506c65617365207761697420666f72206265747765656e2062757973000000006044820152606401610b4e565b60285461223890610100900460ff16426132b1565b6001600160a01b0384166000908152602960205260409020555b61225c8483612678565b6122646126e1565b1561227157612271612730565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600990915291909120546122c3918490611e33565b6001600160a01b038516600090815260096020908152604080832093909355600f90529081205460ff168061231057506001600160a01b0384166000908152600f602052604090205460ff165b6123245761231f858486612baa565b612326565b825b6001600160a01b03851660009081526009602052604090205490915061234c9082612d2d565b6001600160a01b0380861660009081526009602090815260408083209490945591881681526012909152205460ff166123f057602b546001600160a01b0386811660008181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156123dd57600080fd5b505af19250505080156123ee575060015b505b6001600160a01b03841660009081526012602052604090205460ff1661248157602b546001600160a01b0385811660008181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561246e57600080fd5b505af192505050801561247f575060015b505b601454156124ee57602b54602c546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916124c19160040190815260200190565b600060405180830381600087803b1580156124db57600080fd5b505af19250505080156124ec575060015b505b836001600160a01b0316856001600160a01b03166000805160206133b68339815191528360405161252191815260200190565b60405180910390a3506001949350505050565b6000610d4283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e33565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526009909152918220546125c7918490611e33565b6001600160a01b0380861660009081526009602052604080822093909355908516815220546125f69083612d2d565b6001600160a01b0380851660008181526009602052604090819020939093559151908616906000805160206133b6833981519152906126389086815260200190565b60405180910390a35060019392505050565b6000818361266b5760405162461bcd60e51b8152600401610b4e9190612ddf565b506000611e64848661328f565b600754811115806126a157506001600160a01b03821660009081526010602052604090205460ff165b611d6e5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610b4e565b6026546000906001600160a01b031633148015906127025750602f5460ff16155b80156127105750602d5460ff165b8015610dd4575050602e5430600090815260096020526040902054101590565b602f805460ff1916600117905560235460245460009161274f91612d8c565b61275b5760135461275e565b60005b90506000612788600261278260195461278286602e54611d7290919063ffffffff16565b90611df1565b905060006127a182602e5461253490919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106127db576127db61325e565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061280c5761280c61325e565b6001600160a01b03928316602091820292909201015260255460405163b43d9bbb60e01b81524792919091169063b43d9bbb90612856908690600090879030904290600401613316565b600060405180830381600087803b15801561287057600080fd5b505af1158015612884573d6000803e3d6000fd5b50505050600061289d824761253490919063ffffffff16565b905060006128b86128af886002611df1565b60195490612534565b905060006128cd60026127828481878d611d72565b905060006128ea8361278260145487611d7290919063ffffffff16565b905060006129078461278260155488611d7290919063ffffffff16565b905060006129248561278260165489611d7290919063ffffffff16565b90506000612941866127826017548a611d7290919063ffffffff16565b9050602b60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561299357600080fd5b505af1935050505080156129a5575060015b50601f546040516000916001600160a01b03169061753090869084818181858888f193505050503d80600081146129f8576040519150601f19603f3d011682016040523d82523d6000602084013e6129fd565b606091505b50506020546040519192506001600160a01b0316906175309085906000818181858888f193505050503d8060008114612a52576040519150601f19603f3d011682016040523d82523d6000602084013e612a57565b606091505b50506021546040519192506001600160a01b0316906175309084906000818181858888f193505050503d8060008114612aac576040519150601f19603f3d011682016040523d82523d6000602084013e612ab1565b606091505b5060009250508c159050612b9157602554601e54604051633994a6ad60e21b8152306004820152602481018f905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063e6529ab490889060c40160606040518083038185885af1158015612b2f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b549190613387565b505060408051888152602081018f90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050602f805460ff191690555050505050505050505050565b601d54602654600091906001600160a01b0384811691161415612bd05750601b54612beb565b6026546001600160a01b0386811691161415612beb5750601c545b6000612c1e601a546064612bff919061323f565b61278284612c186019548a611d7290919063ffffffff16565b90611d72565b90506000612c3d60195461278260185485611d7290919063ffffffff16565b90506000612c4b8383612534565b30600090815260096020526040902054909150612c689082612d2d565b30600090815260096020526040808220929092556022546001600160a01b031681522054612c969083612d2d565b6022546001600160a01b0390811660009081526009602090815260409182902093909355518381523092918b16916000805160206133b6833981519152910160405180910390a38115612d17576022546040518381526001600160a01b03918216918a16906000805160206133b68339815191529060200160405180910390a35b612d218784612534565b98975050505050505050565b600080612d3a83856132b1565b905083811015610d425760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b4e565b600082612d9883612da0565b119392505050565b6000610bd1612dad610d87565b6026546001600160a01b031660009081526009602052604090205461278290612dd890600290612c18565b8590611d72565b600060208083528351808285015260005b81811015612e0c57858101830151858201604001528201612df0565b81811115612e1e576000604083870101525b50601f01601f1916929092016040019392505050565b801515811461177757600080fd5b600060208284031215612e5457600080fd5b8135610d4281612e34565b80356001600160a01b0381168114612e7657600080fd5b919050565b60008060408385031215612e8e57600080fd5b612e9783612e5f565b946020939093013593505050565b600080600080600060a08688031215612ebd57600080fd5b612ec686612e5f565b9450612ed460208701612e5f565b9350612ee260408701612e5f565b9250612ef060608701612e5f565b9150612efe60808701612e5f565b90509295509295909350565b60008060408385031215612f1d57600080fd5b50508035926020909101359150565b600080600060608486031215612f4157600080fd5b612f4a84612e5f565b9250612f5860208501612e5f565b9150604084013590509250925092565b600060208284031215612f7a57600080fd5b5035919050565b60008083601f840112612f9357600080fd5b50813567ffffffffffffffff811115612fab57600080fd5b6020830191508360208260051b8501011115612fc657600080fd5b9250929050565b600080600060408486031215612fe257600080fd5b833567ffffffffffffffff811115612ff957600080fd5b61300586828701612f81565b909450925050602084013561301981612e34565b809150509250925092565b60006020828403121561303657600080fd5b610d4282612e5f565b6000806040838503121561305257600080fd5b61305b83612e5f565b9150602083013561306b81612e34565b809150509250929050565b60008060008060006060868803121561308e57600080fd5b61309786612e5f565b9450602086013567ffffffffffffffff808211156130b457600080fd5b6130c089838a01612f81565b909650945060408801359150808211156130d957600080fd5b506130e688828901612f81565b969995985093965092949392505050565b600080600080600080600060e0888a03121561311257600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000806040838503121561315657600080fd5b61315f83612e5f565b915061316d60208401612e5f565b90509250929050565b6000806040838503121561318957600080fd5b8235612e9781612e34565b600080604083850312156131a757600080fd5b82356131b281612e34565b9150602083013560ff8116811461306b57600080fd5b6000806000606084860312156131dd57600080fd5b505081359360208301359350604090920135919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561325957613259613229565b500290565b634e487b7160e01b600052603260045260246000fd5b600060001982141561328857613288613229565b5060010190565b6000826132ac57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156132c4576132c4613229565b500190565b6000602082840312156132db57600080fd5b5051919050565b6000602082840312156132f457600080fd5b8151610d4281612e34565b60008282101561331157613311613229565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156133665784516001600160a01b031683529383019391830191600101613341565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561339c57600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205753bc2c5ac0975992d5468d1345a6886d1070e57e4a5c58944e60b7b375c36764736f6c634300080a0033