Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 10 from a total of 10 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
_set Team Fee | 18073210 | 376 days ago | IN | 0 ETH | 0.00076744 | ||||
_set Tax Fee | 18073209 | 376 days ago | IN | 0 ETH | 0.00078756 | ||||
_set Max Tx Amou... | 18073207 | 376 days ago | IN | 0 ETH | 0.028662 | ||||
Approve | 18073206 | 376 days ago | IN | 0 ETH | 0.00152802 | ||||
Approve | 18073205 | 376 days ago | IN | 0 ETH | 0.0014145 | ||||
Approve | 18073205 | 376 days ago | IN | 0 ETH | 0.00201981 | ||||
Approve | 18073205 | 376 days ago | IN | 0 ETH | 0.00225262 | ||||
Approve | 18073202 | 376 days ago | IN | 0 ETH | 0.0013515 | ||||
Approve | 18072404 | 376 days ago | IN | 0 ETH | 0.00082846 | ||||
0x60c06040 | 18072395 | 376 days ago | IN | 0 ETH | 0.08082491 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
BoostCoin
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-09-05 */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.6.12; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function getUnlockTime() public view returns (uint256) { return _lockTime; } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract BoostCoin is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; mapping (address => bool) private _isBlackListedBot; address[] private _blackListedBots; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1000000000 * 10**18; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private constant _name = 'Boost Coin'; string private constant _symbol = 'BOOST'; uint8 private constant _decimals = 18; uint256 private _taxFee = 25; uint256 private _teamFee = 5; uint256 private _previousTaxFee = _taxFee; uint256 private _previousTeamFee = _teamFee; address payable public _devWalletAddress; address payable public _marketingWalletAddress; address payable public _dipWalletAddress; address payable public _marketingWalletAddress2; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwap = false; bool public swapEnabled = true; uint256 private _maxTxAmount = 20000000 * 10**18; uint256 private constant _numOfTokensToExchangeForTeam = 5000 * 10**18; uint256 private _maxWalletSize = 20000000 * 10**18; event botAddedToBlacklist(address account); event botRemovedFromBlacklist(address account); // event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); // event SwapEnabledUpdated(bool enabled); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor (address payable devWalletAddress, address payable marketingWalletAddress, address payable dipWalletAddress, address payable marketingWalletAddress2) public { _devWalletAddress = devWalletAddress; _marketingWalletAddress = marketingWalletAddress; _dipWalletAddress = dipWalletAddress; _marketingWalletAddress2 = marketingWalletAddress2; _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; // Exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcluded(address account) public view returns (bool) { return _isExcluded[account]; } function setExcludeFromFee(address account, bool excluded) external onlyOwner() { _isExcludedFromFee[account] = excluded; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount,,,,,) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount,,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,,) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function addBotToBlacklist (address account) external onlyOwner() { require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We cannot blacklist UniSwap router'); require (!_isBlackListedBot[account], 'Account is already blacklisted'); _isBlackListedBot[account] = true; _blackListedBots.push(account); } function removeBotFromBlacklist(address account) external onlyOwner() { require (_isBlackListedBot[account], 'Account is not blacklisted'); for (uint256 i = 0; i < _blackListedBots.length; i++) { if (_blackListedBots[i] == account) { _blackListedBots[i] = _blackListedBots[_blackListedBots.length - 1]; _isBlackListedBot[account] = false; _blackListedBots.pop(); break; } } } function excludeAccount(address account) external onlyOwner() { require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.'); require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeAccount(address account) external onlyOwner() { require(_isExcluded[account], "Account is not excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function removeAllFee() private { if(_taxFee == 0 && _teamFee == 0) return; _previousTaxFee = _taxFee; _previousTeamFee = _teamFee; _taxFee = 0; _teamFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _teamFee = _previousTeamFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address sender, address recipient, uint256 amount) private { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(!_isBlackListedBot[sender], "You are blacklisted"); require(!_isBlackListedBot[msg.sender], "You are blacklisted"); require(!_isBlackListedBot[tx.origin], "You are blacklisted"); if(sender != owner() && recipient != owner()) { require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } if(sender != owner() && recipient != owner() && recipient != uniswapV2Pair && recipient != address(0xdead)) { uint256 tokenBalanceRecipient = balanceOf(recipient); require(tokenBalanceRecipient + amount <= _maxWalletSize, "Recipient exceeds max wallet size."); } // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap? // also, don't get caught in a circular team event. // also, don't swap if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForTeam; if (!inSwap && swapEnabled && overMinTokenBalance && sender != uniswapV2Pair) { // Swap tokens for ETH and send to resepctive wallets swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToTeam(address(this).balance); } } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){ takeFee = false; } //transfer amount, it will take tax and team fee _tokenTransfer(sender,recipient,amount,takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap{ // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function sendETHToTeam(uint256 amount) private { _devWalletAddress.transfer(amount.div(4)); _marketingWalletAddress.transfer(amount.div(12).mul(5)); _dipWalletAddress.transfer(amount.div(9).mul(2)); _marketingWalletAddress2.transfer(amount.div(9)); } function manualSwap() external onlyOwner() { uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualSend() external onlyOwner() { uint256 contractETHBalance = address(this).balance; sendETHToTeam(contractETHBalance); } function setSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private { if(!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if(!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _taxFee, _teamFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues(uint256 tAmount, uint256 taxFee, uint256 teamFee) private pure returns (uint256, uint256, uint256) { uint256 tFee = tAmount.mul(taxFee).div(100); uint256 tTeam = tAmount.mul(teamFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _getTaxFee() public view returns(uint256) { return _taxFee; } function _getTeamFee() public view returns (uint256) { return _teamFee; } function _getMaxTxAmount() public view returns(uint256) { return _maxTxAmount; } function _getETHBalance() public view returns(uint256 balance) { return address(this).balance; } function _setTaxFee(uint256 taxFee) external onlyOwner() { require(taxFee >= 1 && taxFee <= 50, 'taxFee should be in 1 - 50'); _taxFee = taxFee; } function _setTeamFee(uint256 teamFee) external onlyOwner() { require(teamFee >= 1 && teamFee <= 50, 'teamFee should be in 1 - 50'); _teamFee = teamFee; } function _setDevWallet(address payable devWalletAddress) external onlyOwner() { _devWalletAddress = devWalletAddress; } function _setMarketingWallet(address payable marketingWalletAddress) external onlyOwner() { _marketingWalletAddress = marketingWalletAddress; } function _setMarketingWallet2(address payable marketingWalletAddress2) external onlyOwner() { _marketingWalletAddress2 = marketingWalletAddress2; } function _setDipWallet(address payable dipWalletAddress) external onlyOwner() { _dipWalletAddress = dipWalletAddress; } function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { _maxTxAmount = maxTxAmount; } function _setMaxWalletSize (uint256 maxWalletSize) external onlyOwner() { _maxWalletSize = maxWalletSize; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"devWalletAddress","type":"address"},{"internalType":"address payable","name":"marketingWalletAddress","type":"address"},{"internalType":"address payable","name":"dipWalletAddress","type":"address"},{"internalType":"address payable","name":"marketingWalletAddress2","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"botAddedToBlacklist","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"botRemovedFromBlacklist","type":"event"},{"inputs":[],"name":"_devWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_dipWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getMaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress2","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"devWalletAddress","type":"address"}],"name":"_setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"dipWalletAddress","type":"address"}],"name":"_setDipWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketingWalletAddress","type":"address"}],"name":"_setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketingWalletAddress2","type":"address"}],"name":"_setMarketingWallet2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"_setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"teamFee","type":"uint256"}],"name":"_setTeamFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBotToBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBotFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526b01d290004395eb7bbfffffff19600b556019600d8190556005600e819055600f919091556010556014805461ffff60a01b1916600160a81b1790556a108b2a2c2802909400000060158190556016553480156200006157600080fd5b506040516200371138038062003711833981810160405260808110156200008757600080fd5b50805160208201516040830151606090930151919290916000620000aa620003c7565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601180546001600160a01b038087166001600160a01b03199283161790925560128054868416908316179055601380548584169083161790556014805492841692909116919091179055600b54600360006200014f620003c7565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001c657600080fd5b505afa158015620001db573d6000803e3d6000fd5b505050506040513d6020811015620001f257600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b1580156200024357600080fd5b505afa15801562000258573d6000803e3d6000fd5b505050506040513d60208110156200026f57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b158015620002c257600080fd5b505af1158015620002d7573d6000803e3d6000fd5b505050506040513d6020811015620002ee57600080fd5b50516001600160601b0319606091821b811660a0529082901b166080526001600660006200031b620003cb565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600690925290208054909116600117905562000365620003c7565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b033b2e3c9fd0803ce80000006040518082815260200191505060405180910390a35050505050620003da565b3390565b6000546001600160a01b031690565b60805160601c60a05160601c6132f46200041d600039806111ec5280612198528061229a525080610bd252806125ad5280612665528061268c52506132f46000f3fe6080604052600436106102965760003560e01c8063602bc62b1161015a578063b08c81ee116100c1578063f2cc0c181161007a578063f2cc0c18146109ad578063f2fde38b146109e0578063f429389014610a13578063f7a9159114610a28578063f815a84214610a3d578063f84354f114610a525761029d565b8063b08c81ee146108b6578063b425bac3146108e9578063cba0e996146108fe578063dd62ed3e14610931578063deb22cb01461096c578063e01af92c146109815761029d565b80639e6c7529116101135780639e6c752914610797578063a457c2d7146107c1578063a5e8c954146107fa578063a9059cbb1461080f578063af9549e014610848578063b030b34a146108835761029d565b8063602bc62b146106fb5780636ddd17131461071057806370a0823114610725578063715018a6146107585780638da5cb5b1461076d57806395d89b41146107825761029d565b806328667162116101fe5780634144d9e4116101b75780634144d9e41461062d5780634549b0391461064257806349bd5a5e1461067457806351bc3c85146106895780635342acb41461069e5780635880b873146106d15761029d565b806328667162146105365780632d838119146105605780632fbff0301461058a578063313ce5671461059f57806339509351146105ca5780633bd5d173146106035761029d565b80631694505e116102505780631694505e1461043957806318160ddd1461044e5780631bbae6e0146104635780631d7ef8791461048d5780631ff53b60146104c057806323b872dd146104f35761029d565b80622410e0146102a257806306fdde03146102d757806307203a7c14610361578063095ea7b3146103925780630a1f8ea8146103df57806313114a9d146104125761029d565b3661029d57005b600080fd5b3480156102ae57600080fd5b506102d5600480360360208110156102c557600080fd5b50356001600160a01b0316610a85565b005b3480156102e357600080fd5b506102ec610aff565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561032657818101518382015260200161030e565b50505050905090810190601f1680156103535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036d57600080fd5b50610376610b23565b604080516001600160a01b039092168252519081900360200190f35b34801561039e57600080fd5b506103cb600480360360408110156103b557600080fd5b506001600160a01b038135169060200135610b32565b604080519115158252519081900360200190f35b3480156103eb57600080fd5b506102d56004803603602081101561040257600080fd5b50356001600160a01b0316610b50565b34801561041e57600080fd5b50610427610bca565b60408051918252519081900360200190f35b34801561044557600080fd5b50610376610bd0565b34801561045a57600080fd5b50610427610bf4565b34801561046f57600080fd5b506102d56004803603602081101561048657600080fd5b5035610c04565b34801561049957600080fd5b506102d5600480360360208110156104b057600080fd5b50356001600160a01b0316610c61565b3480156104cc57600080fd5b506102d5600480360360208110156104e357600080fd5b50356001600160a01b0316610de9565b3480156104ff57600080fd5b506103cb6004803603606081101561051657600080fd5b506001600160a01b03813581169160208101359091169060400135610e63565b34801561054257600080fd5b506102d56004803603602081101561055957600080fd5b5035610eea565b34801561056c57600080fd5b506104276004803603602081101561058357600080fd5b5035610faa565b34801561059657600080fd5b5061042761100c565b3480156105ab57600080fd5b506105b4611012565b6040805160ff9092168252519081900360200190f35b3480156105d657600080fd5b506103cb600480360360408110156105ed57600080fd5b506001600160a01b038135169060200135611017565b34801561060f57600080fd5b506102d56004803603602081101561062657600080fd5b5035611065565b34801561063957600080fd5b5061037661113f565b34801561064e57600080fd5b506104276004803603604081101561066557600080fd5b5080359060200135151561114e565b34801561068057600080fd5b506103766111ea565b34801561069557600080fd5b506102d561120e565b3480156106aa57600080fd5b506103cb600480360360208110156106c157600080fd5b50356001600160a01b031661127f565b3480156106dd57600080fd5b506102d5600480360360208110156106f457600080fd5b503561129d565b34801561070757600080fd5b5061042761135d565b34801561071c57600080fd5b506103cb611363565b34801561073157600080fd5b506104276004803603602081101561074857600080fd5b50356001600160a01b0316611373565b34801561076457600080fd5b506102d56113d5565b34801561077957600080fd5b50610376611477565b34801561078e57600080fd5b506102ec611486565b3480156107a357600080fd5b506102d5600480360360208110156107ba57600080fd5b50356114a5565b3480156107cd57600080fd5b506103cb600480360360408110156107e457600080fd5b506001600160a01b038135169060200135611502565b34801561080657600080fd5b5061042761156a565b34801561081b57600080fd5b506103cb6004803603604081101561083257600080fd5b506001600160a01b038135169060200135611570565b34801561085457600080fd5b506102d56004803603604081101561086b57600080fd5b506001600160a01b0381351690602001351515611584565b34801561088f57600080fd5b506102d5600480360360208110156108a657600080fd5b50356001600160a01b0316611607565b3480156108c257600080fd5b506102d5600480360360208110156108d957600080fd5b50356001600160a01b03166117bf565b3480156108f557600080fd5b50610376611839565b34801561090a57600080fd5b506103cb6004803603602081101561092157600080fd5b50356001600160a01b0316611848565b34801561093d57600080fd5b506104276004803603604081101561095457600080fd5b506001600160a01b0381358116916020013516611866565b34801561097857600080fd5b50610376611891565b34801561098d57600080fd5b506102d5600480360360208110156109a457600080fd5b503515156118a0565b3480156109b957600080fd5b506102d5600480360360208110156109d057600080fd5b50356001600160a01b0316611916565b3480156109ec57600080fd5b506102d560048036036020811015610a0357600080fd5b50356001600160a01b0316611af8565b348015610a1f57600080fd5b506102d5611bf0565b348015610a3457600080fd5b50610427611c52565b348015610a4957600080fd5b50610427611c58565b348015610a5e57600080fd5b506102d560048036036020811015610a7557600080fd5b50356001600160a01b0316611c5c565b610a8d611df2565b6000546001600160a01b03908116911614610add576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b601480546001600160a01b0319166001600160a01b0392909216919091179055565b60408051808201909152600a8152692137b7b9ba1021b7b4b760b11b602082015290565b6013546001600160a01b031681565b6000610b46610b3f611df2565b8484611df6565b5060015b92915050565b610b58611df2565b6000546001600160a01b03908116911614610ba8576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b600c5490565b7f000000000000000000000000000000000000000000000000000000000000000081565b6b033b2e3c9fd0803ce800000090565b610c0c611df2565b6000546001600160a01b03908116911614610c5c576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b601555565b610c69611df2565b6000546001600160a01b03908116911614610cb9576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415610d155760405162461bcd60e51b81526004018080602001828103825260228152602001806131706022913960400191505060405180910390fd5b6001600160a01b03811660009081526009602052604090205460ff1615610d83576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c69737465640000604482015290519081900360640190fd5b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b610df1611df2565b6000546001600160a01b03908116911614610e41576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e70848484611ee2565b610ee084610e7c611df2565b610edb85604051806060016040528060288152602001613192602891396001600160a01b038a16600090815260056020526040812090610eba611df2565b6001600160a01b03168152602081019190915260400160002054919061234e565b611df6565b5060019392505050565b610ef2611df2565b6000546001600160a01b03908116911614610f42576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b60018110158015610f54575060328111155b610fa5576040805162461bcd60e51b815260206004820152601b60248201527f7465616d4665652073686f756c6420626520696e2031202d2035300000000000604482015290519081900360640190fd5b600e55565b6000600b54821115610fed5760405162461bcd60e51b815260040180806020018281038252602a815260200180613093602a913960400191505060405180910390fd5b6000610ff76123e5565b90506110038382612408565b9150505b919050565b600d5490565b601290565b6000610b46611024611df2565b84610edb8560056000611035611df2565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490612451565b600061106f611df2565b6001600160a01b03811660009081526007602052604090205490915060ff16156110ca5760405162461bcd60e51b815260040180806020018281038252602c81526020018061326e602c913960400191505060405180910390fd5b60006110d5836124ab565b505050506001600160a01b03841660009081526003602052604090205491925061110191905082612508565b6001600160a01b038316600090815260036020526040902055600b546111279082612508565b600b55600c546111379084612451565b600c55505050565b6012546001600160a01b031681565b60006b033b2e3c9fd0803ce80000008311156111b1576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b816111d05760006111c1846124ab565b50939550610b4a945050505050565b60006111db846124ab565b50929550610b4a945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b611216611df2565b6000546001600160a01b03908116911614611266576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b600061127130611373565b905061127c8161254a565b50565b6001600160a01b031660009081526006602052604090205460ff1690565b6112a5611df2565b6000546001600160a01b039081169116146112f5576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b60018110158015611307575060328111155b611358576040805162461bcd60e51b815260206004820152601a60248201527f7461784665652073686f756c6420626520696e2031202d203530000000000000604482015290519081900360640190fd5b600d55565b60025490565b601454600160a81b900460ff1681565b6001600160a01b03811660009081526007602052604081205460ff16156113b357506001600160a01b038116600090815260046020526040902054611007565b6001600160a01b038216600090815260036020526040902054610b4a90610faa565b6113dd611df2565b6000546001600160a01b0390811691161461142d576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6040805180820190915260058152641093d3d4d560da1b602082015290565b6114ad611df2565b6000546001600160a01b039081169116146114fd576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b601655565b6000610b4661150f611df2565b84610edb8560405180606001604052806025815260200161329a6025913960056000611539611df2565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061234e565b600e5490565b6000610b4661157d611df2565b8484611ee2565b61158c611df2565b6000546001600160a01b039081169116146115dc576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b61160f611df2565b6000546001600160a01b0390811691161461165f576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526009602052604090205460ff166116cc576040805162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000604482015290519081900360640190fd5b60005b600a548110156117bb57816001600160a01b0316600a82815481106116f057fe5b6000918252602090912001546001600160a01b031614156117b357600a8054600019810190811061171d57fe5b600091825260209091200154600a80546001600160a01b03909216918390811061174357fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600990915260409020805460ff19169055600a80548061178c57fe5b600082815260209020810160001990810180546001600160a01b03191690550190556117bb565b6001016116cf565b5050565b6117c7611df2565b6000546001600160a01b03908116911614611817576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6011546001600160a01b031681565b6001600160a01b031660009081526007602052604090205460ff1690565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b6014546001600160a01b031681565b6118a8611df2565b6000546001600160a01b039081169116146118f8576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b60148054911515600160a81b0260ff60a81b19909216919091179055565b61191e611df2565b6000546001600160a01b0390811691161461196e576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03821614156119ca5760405162461bcd60e51b815260040180806020018281038252602281526020018061324c6022913960400191505060405180910390fd5b6001600160a01b03811660009081526007602052604090205460ff1615611a38576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b03811660009081526003602052604090205415611a92576001600160a01b038116600090815260036020526040902054611a7890610faa565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b611b00611df2565b6000546001600160a01b03908116911614611b50576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b6001600160a01b038116611b955760405162461bcd60e51b81526004018080602001828103825260268152602001806130bd6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b611bf8611df2565b6000546001600160a01b03908116911614611c48576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b4761127c81612781565b60155490565b4790565b611c64611df2565b6000546001600160a01b03908116911614611cb4576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff16611d21576040805162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c75646564000000000000000000604482015290519081900360640190fd5b60005b6008548110156117bb57816001600160a01b031660088281548110611d4557fe5b6000918252602090912001546001600160a01b03161415611dea57600880546000198101908110611d7257fe5b600091825260209091200154600880546001600160a01b039092169183908110611d9857fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff19169055600880548061178c57fe5b600101611d24565b3390565b6001600160a01b038316611e3b5760405162461bcd60e51b81526004018080602001828103825260248152602001806132286024913960400191505060405180910390fd5b6001600160a01b038216611e805760405162461bcd60e51b81526004018080602001828103825260228152602001806130e36022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316611f275760405162461bcd60e51b81526004018080602001828103825260258152602001806132036025913960400191505060405180910390fd5b6001600160a01b038216611f6c5760405162461bcd60e51b81526004018080602001828103825260238152602001806130706023913960400191505060405180910390fd5b60008111611fab5760405162461bcd60e51b81526004018080602001828103825260298152602001806131da6029913960400191505060405180910390fd5b6001600160a01b03831660009081526009602052604090205460ff161561200f576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b3360009081526009602052604090205460ff161561206a576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b3260009081526009602052604090205460ff16156120c5576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b6120cd611477565b6001600160a01b0316836001600160a01b03161415801561210757506120f1611477565b6001600160a01b0316826001600160a01b031614155b1561214d5760155481111561214d5760405162461bcd60e51b81526004018080602001828103825260288152602001806131276028913960400191505060405180910390fd5b612155611477565b6001600160a01b0316836001600160a01b03161415801561218f5750612179611477565b6001600160a01b0316826001600160a01b031614155b80156121cd57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b80156121e457506001600160a01b03821661dead14155b1561223b5760006121f483611373565b905060165482820111156122395760405162461bcd60e51b81526004018080602001828103825260228152602001806131056022913960400191505060405180910390fd5b505b600061224630611373565b9050601554811061225657506015545b60145469010f0cf064dd5920000082101590600160a01b900460ff161580156122885750601454600160a81b900460ff165b80156122915750805b80156122cf57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b156122ef576122dd8261254a565b4780156122ed576122ed47612781565b505b6001600160a01b03851660009081526006602052604090205460019060ff168061233157506001600160a01b03851660009081526006602052604090205460ff165b1561233a575060005b6123468686868461289c565b505050505050565b600081848411156123dd5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156123a257818101518382015260200161238a565b50505050905090810190601f1680156123cf5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008060006123f2612a10565b90925090506124018282612408565b9250505090565b600061244a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b9b565b9392505050565b60008282018381101561244a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008060008060008060008060006124c88a600d54600e54612c00565b92509250925060006124d86123e5565b905060008060006124eb8e878787612c55565b919e509c509a509598509396509194505050505091939550919395565b600061244a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061234e565b6014805460ff60a01b1916600160a01b1790556040805160028082526060808301845292602083019080368337019050509050308160008151811061258b57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561260457600080fd5b505afa158015612618573d6000803e3d6000fd5b505050506040513d602081101561262e57600080fd5b505181518290600190811061263f57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505061268a307f000000000000000000000000000000000000000000000000000000000000000084611df6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561272f578181015183820152602001612717565b505050509050019650505050505050600060405180830381600087803b15801561275857600080fd5b505af115801561276c573d6000803e3d6000fd5b50506014805460ff60a01b1916905550505050565b6011546001600160a01b03166108fc61279b836004612408565b6040518115909202916000818181858888f193505050501580156127c3573d6000803e3d6000fd5b506012546001600160a01b03166108fc6127e960056127e385600c612408565b90612ca5565b6040518115909202916000818181858888f19350505050158015612811573d6000803e3d6000fd5b506013546001600160a01b03166108fc61283160026127e3856009612408565b6040518115909202916000818181858888f19350505050158015612859573d6000803e3d6000fd5b506014546001600160a01b03166108fc612874836009612408565b6040518115909202916000818181858888f193505050501580156117bb573d6000803e3d6000fd5b806128a9576128a9612cfe565b6001600160a01b03841660009081526007602052604090205460ff1680156128ea57506001600160a01b03831660009081526007602052604090205460ff16155b156128ff576128fa848484612d30565b6129fd565b6001600160a01b03841660009081526007602052604090205460ff1615801561294057506001600160a01b03831660009081526007602052604090205460ff165b15612950576128fa848484612e54565b6001600160a01b03841660009081526007602052604090205460ff1615801561299257506001600160a01b03831660009081526007602052604090205460ff16155b156129a2576128fa848484612efd565b6001600160a01b03841660009081526007602052604090205460ff1680156129e257506001600160a01b03831660009081526007602052604090205460ff165b156129f2576128fa848484612f41565b6129fd848484612efd565b80612a0a57612a0a612fb4565b50505050565b600b5460009081906b033b2e3c9fd0803ce8000000825b600854811015612b5557826003600060088481548110612a4357fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612aa85750816004600060088481548110612a8157fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612ac957600b546b033b2e3c9fd0803ce800000094509450505050612b97565b612b096003600060088481548110612add57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612508565b9250612b4b6004600060088481548110612b1f57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612508565b9150600101612a27565b50600b54612b6f906b033b2e3c9fd0803ce8000000612408565b821015612b9157600b546b033b2e3c9fd0803ce8000000935093505050612b97565b90925090505b9091565b60008183612bea5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156123a257818101518382015260200161238a565b506000838581612bf657fe5b0495945050505050565b6000808080612c1a6064612c148989612ca5565b90612408565b90506000612c2d6064612c148a89612ca5565b90506000612c4582612c3f8b86612508565b90612508565b9992985090965090945050505050565b6000808080612c648886612ca5565b90506000612c728887612ca5565b90506000612c808888612ca5565b90506000612c9282612c3f8686612508565b939b939a50919850919650505050505050565b600082612cb457506000610b4a565b82820282848281612cc157fe5b041461244a5760405162461bcd60e51b815260040180806020018281038252602181526020018061314f6021913960400191505060405180910390fd5b600d54158015612d0e5750600e54155b15612d1857612d2e565b600d8054600f55600e8054601055600091829055555b565b600080600080600080612d42876124ab565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612d749088612508565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054612da39087612508565b6001600160a01b03808b1660009081526003602052604080822093909355908a1681522054612dd29086612451565b6001600160a01b038916600090815260036020526040902055612df481612fc2565b612dfe848361304b565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080612e66876124ab565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150612e989087612508565b6001600160a01b03808b16600090815260036020908152604080832094909455918b16815260049091522054612ece9084612451565b6001600160a01b038916600090815260046020908152604080832093909355600390522054612dd29086612451565b600080600080600080612f0f876124ab565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150612da39087612508565b600080600080600080612f53876124ab565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612f859088612508565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054612e989087612508565b600f54600d55601054600e55565b6000612fcc6123e5565b90506000612fda8383612ca5565b30600090815260036020526040902054909150612ff79082612451565b3060009081526003602090815260408083209390935560079052205460ff161561304657306000908152600460205260409020546130359084612451565b306000908152600460205260409020555b505050565b600b546130589083612508565b600b55600c546130689082612451565b600c55505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373526563697069656e742065786365656473206d61782077616c6c65742073697a652e5472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7757652063616e6e6f7420626c61636b6c69737420556e695377617020726f7574657245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220868b97f60381b7c81780461a5d5f274739d83c1dc58fef17d1dcbfa906527a1b64736f6c634300060c0033000000000000000000000000037b039869e4b64aab70ba02c841874f1a05a627000000000000000000000000d11907c3cd193c7a368e6a011edec757da0dddfc0000000000000000000000009dcccf27c231ebe856b101ba9df6ba5ebc0a7b0b00000000000000000000000020998434fccdf04c182069b4c1fd13dd14711573
Deployed Bytecode
0x6080604052600436106102965760003560e01c8063602bc62b1161015a578063b08c81ee116100c1578063f2cc0c181161007a578063f2cc0c18146109ad578063f2fde38b146109e0578063f429389014610a13578063f7a9159114610a28578063f815a84214610a3d578063f84354f114610a525761029d565b8063b08c81ee146108b6578063b425bac3146108e9578063cba0e996146108fe578063dd62ed3e14610931578063deb22cb01461096c578063e01af92c146109815761029d565b80639e6c7529116101135780639e6c752914610797578063a457c2d7146107c1578063a5e8c954146107fa578063a9059cbb1461080f578063af9549e014610848578063b030b34a146108835761029d565b8063602bc62b146106fb5780636ddd17131461071057806370a0823114610725578063715018a6146107585780638da5cb5b1461076d57806395d89b41146107825761029d565b806328667162116101fe5780634144d9e4116101b75780634144d9e41461062d5780634549b0391461064257806349bd5a5e1461067457806351bc3c85146106895780635342acb41461069e5780635880b873146106d15761029d565b806328667162146105365780632d838119146105605780632fbff0301461058a578063313ce5671461059f57806339509351146105ca5780633bd5d173146106035761029d565b80631694505e116102505780631694505e1461043957806318160ddd1461044e5780631bbae6e0146104635780631d7ef8791461048d5780631ff53b60146104c057806323b872dd146104f35761029d565b80622410e0146102a257806306fdde03146102d757806307203a7c14610361578063095ea7b3146103925780630a1f8ea8146103df57806313114a9d146104125761029d565b3661029d57005b600080fd5b3480156102ae57600080fd5b506102d5600480360360208110156102c557600080fd5b50356001600160a01b0316610a85565b005b3480156102e357600080fd5b506102ec610aff565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561032657818101518382015260200161030e565b50505050905090810190601f1680156103535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036d57600080fd5b50610376610b23565b604080516001600160a01b039092168252519081900360200190f35b34801561039e57600080fd5b506103cb600480360360408110156103b557600080fd5b506001600160a01b038135169060200135610b32565b604080519115158252519081900360200190f35b3480156103eb57600080fd5b506102d56004803603602081101561040257600080fd5b50356001600160a01b0316610b50565b34801561041e57600080fd5b50610427610bca565b60408051918252519081900360200190f35b34801561044557600080fd5b50610376610bd0565b34801561045a57600080fd5b50610427610bf4565b34801561046f57600080fd5b506102d56004803603602081101561048657600080fd5b5035610c04565b34801561049957600080fd5b506102d5600480360360208110156104b057600080fd5b50356001600160a01b0316610c61565b3480156104cc57600080fd5b506102d5600480360360208110156104e357600080fd5b50356001600160a01b0316610de9565b3480156104ff57600080fd5b506103cb6004803603606081101561051657600080fd5b506001600160a01b03813581169160208101359091169060400135610e63565b34801561054257600080fd5b506102d56004803603602081101561055957600080fd5b5035610eea565b34801561056c57600080fd5b506104276004803603602081101561058357600080fd5b5035610faa565b34801561059657600080fd5b5061042761100c565b3480156105ab57600080fd5b506105b4611012565b6040805160ff9092168252519081900360200190f35b3480156105d657600080fd5b506103cb600480360360408110156105ed57600080fd5b506001600160a01b038135169060200135611017565b34801561060f57600080fd5b506102d56004803603602081101561062657600080fd5b5035611065565b34801561063957600080fd5b5061037661113f565b34801561064e57600080fd5b506104276004803603604081101561066557600080fd5b5080359060200135151561114e565b34801561068057600080fd5b506103766111ea565b34801561069557600080fd5b506102d561120e565b3480156106aa57600080fd5b506103cb600480360360208110156106c157600080fd5b50356001600160a01b031661127f565b3480156106dd57600080fd5b506102d5600480360360208110156106f457600080fd5b503561129d565b34801561070757600080fd5b5061042761135d565b34801561071c57600080fd5b506103cb611363565b34801561073157600080fd5b506104276004803603602081101561074857600080fd5b50356001600160a01b0316611373565b34801561076457600080fd5b506102d56113d5565b34801561077957600080fd5b50610376611477565b34801561078e57600080fd5b506102ec611486565b3480156107a357600080fd5b506102d5600480360360208110156107ba57600080fd5b50356114a5565b3480156107cd57600080fd5b506103cb600480360360408110156107e457600080fd5b506001600160a01b038135169060200135611502565b34801561080657600080fd5b5061042761156a565b34801561081b57600080fd5b506103cb6004803603604081101561083257600080fd5b506001600160a01b038135169060200135611570565b34801561085457600080fd5b506102d56004803603604081101561086b57600080fd5b506001600160a01b0381351690602001351515611584565b34801561088f57600080fd5b506102d5600480360360208110156108a657600080fd5b50356001600160a01b0316611607565b3480156108c257600080fd5b506102d5600480360360208110156108d957600080fd5b50356001600160a01b03166117bf565b3480156108f557600080fd5b50610376611839565b34801561090a57600080fd5b506103cb6004803603602081101561092157600080fd5b50356001600160a01b0316611848565b34801561093d57600080fd5b506104276004803603604081101561095457600080fd5b506001600160a01b0381358116916020013516611866565b34801561097857600080fd5b50610376611891565b34801561098d57600080fd5b506102d5600480360360208110156109a457600080fd5b503515156118a0565b3480156109b957600080fd5b506102d5600480360360208110156109d057600080fd5b50356001600160a01b0316611916565b3480156109ec57600080fd5b506102d560048036036020811015610a0357600080fd5b50356001600160a01b0316611af8565b348015610a1f57600080fd5b506102d5611bf0565b348015610a3457600080fd5b50610427611c52565b348015610a4957600080fd5b50610427611c58565b348015610a5e57600080fd5b506102d560048036036020811015610a7557600080fd5b50356001600160a01b0316611c5c565b610a8d611df2565b6000546001600160a01b03908116911614610add576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b601480546001600160a01b0319166001600160a01b0392909216919091179055565b60408051808201909152600a8152692137b7b9ba1021b7b4b760b11b602082015290565b6013546001600160a01b031681565b6000610b46610b3f611df2565b8484611df6565b5060015b92915050565b610b58611df2565b6000546001600160a01b03908116911614610ba8576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b600c5490565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6b033b2e3c9fd0803ce800000090565b610c0c611df2565b6000546001600160a01b03908116911614610c5c576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b601555565b610c69611df2565b6000546001600160a01b03908116911614610cb9576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415610d155760405162461bcd60e51b81526004018080602001828103825260228152602001806131706022913960400191505060405180910390fd5b6001600160a01b03811660009081526009602052604090205460ff1615610d83576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c69737465640000604482015290519081900360640190fd5b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b610df1611df2565b6000546001600160a01b03908116911614610e41576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e70848484611ee2565b610ee084610e7c611df2565b610edb85604051806060016040528060288152602001613192602891396001600160a01b038a16600090815260056020526040812090610eba611df2565b6001600160a01b03168152602081019190915260400160002054919061234e565b611df6565b5060019392505050565b610ef2611df2565b6000546001600160a01b03908116911614610f42576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b60018110158015610f54575060328111155b610fa5576040805162461bcd60e51b815260206004820152601b60248201527f7465616d4665652073686f756c6420626520696e2031202d2035300000000000604482015290519081900360640190fd5b600e55565b6000600b54821115610fed5760405162461bcd60e51b815260040180806020018281038252602a815260200180613093602a913960400191505060405180910390fd5b6000610ff76123e5565b90506110038382612408565b9150505b919050565b600d5490565b601290565b6000610b46611024611df2565b84610edb8560056000611035611df2565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490612451565b600061106f611df2565b6001600160a01b03811660009081526007602052604090205490915060ff16156110ca5760405162461bcd60e51b815260040180806020018281038252602c81526020018061326e602c913960400191505060405180910390fd5b60006110d5836124ab565b505050506001600160a01b03841660009081526003602052604090205491925061110191905082612508565b6001600160a01b038316600090815260036020526040902055600b546111279082612508565b600b55600c546111379084612451565b600c55505050565b6012546001600160a01b031681565b60006b033b2e3c9fd0803ce80000008311156111b1576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b816111d05760006111c1846124ab565b50939550610b4a945050505050565b60006111db846124ab565b50929550610b4a945050505050565b7f000000000000000000000000336776f1041c211f391558b04124f6dc24e0619681565b611216611df2565b6000546001600160a01b03908116911614611266576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b600061127130611373565b905061127c8161254a565b50565b6001600160a01b031660009081526006602052604090205460ff1690565b6112a5611df2565b6000546001600160a01b039081169116146112f5576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b60018110158015611307575060328111155b611358576040805162461bcd60e51b815260206004820152601a60248201527f7461784665652073686f756c6420626520696e2031202d203530000000000000604482015290519081900360640190fd5b600d55565b60025490565b601454600160a81b900460ff1681565b6001600160a01b03811660009081526007602052604081205460ff16156113b357506001600160a01b038116600090815260046020526040902054611007565b6001600160a01b038216600090815260036020526040902054610b4a90610faa565b6113dd611df2565b6000546001600160a01b0390811691161461142d576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6040805180820190915260058152641093d3d4d560da1b602082015290565b6114ad611df2565b6000546001600160a01b039081169116146114fd576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b601655565b6000610b4661150f611df2565b84610edb8560405180606001604052806025815260200161329a6025913960056000611539611df2565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061234e565b600e5490565b6000610b4661157d611df2565b8484611ee2565b61158c611df2565b6000546001600160a01b039081169116146115dc576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b61160f611df2565b6000546001600160a01b0390811691161461165f576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526009602052604090205460ff166116cc576040805162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000604482015290519081900360640190fd5b60005b600a548110156117bb57816001600160a01b0316600a82815481106116f057fe5b6000918252602090912001546001600160a01b031614156117b357600a8054600019810190811061171d57fe5b600091825260209091200154600a80546001600160a01b03909216918390811061174357fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600990915260409020805460ff19169055600a80548061178c57fe5b600082815260209020810160001990810180546001600160a01b03191690550190556117bb565b6001016116cf565b5050565b6117c7611df2565b6000546001600160a01b03908116911614611817576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6011546001600160a01b031681565b6001600160a01b031660009081526007602052604090205460ff1690565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b6014546001600160a01b031681565b6118a8611df2565b6000546001600160a01b039081169116146118f8576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b60148054911515600160a81b0260ff60a81b19909216919091179055565b61191e611df2565b6000546001600160a01b0390811691161461196e576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03821614156119ca5760405162461bcd60e51b815260040180806020018281038252602281526020018061324c6022913960400191505060405180910390fd5b6001600160a01b03811660009081526007602052604090205460ff1615611a38576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b03811660009081526003602052604090205415611a92576001600160a01b038116600090815260036020526040902054611a7890610faa565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b611b00611df2565b6000546001600160a01b03908116911614611b50576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b6001600160a01b038116611b955760405162461bcd60e51b81526004018080602001828103825260268152602001806130bd6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b611bf8611df2565b6000546001600160a01b03908116911614611c48576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b4761127c81612781565b60155490565b4790565b611c64611df2565b6000546001600160a01b03908116911614611cb4576040805162461bcd60e51b815260206004820181905260248201526000805160206131ba833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff16611d21576040805162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c75646564000000000000000000604482015290519081900360640190fd5b60005b6008548110156117bb57816001600160a01b031660088281548110611d4557fe5b6000918252602090912001546001600160a01b03161415611dea57600880546000198101908110611d7257fe5b600091825260209091200154600880546001600160a01b039092169183908110611d9857fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff19169055600880548061178c57fe5b600101611d24565b3390565b6001600160a01b038316611e3b5760405162461bcd60e51b81526004018080602001828103825260248152602001806132286024913960400191505060405180910390fd5b6001600160a01b038216611e805760405162461bcd60e51b81526004018080602001828103825260228152602001806130e36022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316611f275760405162461bcd60e51b81526004018080602001828103825260258152602001806132036025913960400191505060405180910390fd5b6001600160a01b038216611f6c5760405162461bcd60e51b81526004018080602001828103825260238152602001806130706023913960400191505060405180910390fd5b60008111611fab5760405162461bcd60e51b81526004018080602001828103825260298152602001806131da6029913960400191505060405180910390fd5b6001600160a01b03831660009081526009602052604090205460ff161561200f576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b3360009081526009602052604090205460ff161561206a576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b3260009081526009602052604090205460ff16156120c5576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b6120cd611477565b6001600160a01b0316836001600160a01b03161415801561210757506120f1611477565b6001600160a01b0316826001600160a01b031614155b1561214d5760155481111561214d5760405162461bcd60e51b81526004018080602001828103825260288152602001806131276028913960400191505060405180910390fd5b612155611477565b6001600160a01b0316836001600160a01b03161415801561218f5750612179611477565b6001600160a01b0316826001600160a01b031614155b80156121cd57507f000000000000000000000000336776f1041c211f391558b04124f6dc24e061966001600160a01b0316826001600160a01b031614155b80156121e457506001600160a01b03821661dead14155b1561223b5760006121f483611373565b905060165482820111156122395760405162461bcd60e51b81526004018080602001828103825260228152602001806131056022913960400191505060405180910390fd5b505b600061224630611373565b9050601554811061225657506015545b60145469010f0cf064dd5920000082101590600160a01b900460ff161580156122885750601454600160a81b900460ff165b80156122915750805b80156122cf57507f000000000000000000000000336776f1041c211f391558b04124f6dc24e061966001600160a01b0316856001600160a01b031614155b156122ef576122dd8261254a565b4780156122ed576122ed47612781565b505b6001600160a01b03851660009081526006602052604090205460019060ff168061233157506001600160a01b03851660009081526006602052604090205460ff165b1561233a575060005b6123468686868461289c565b505050505050565b600081848411156123dd5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156123a257818101518382015260200161238a565b50505050905090810190601f1680156123cf5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008060006123f2612a10565b90925090506124018282612408565b9250505090565b600061244a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b9b565b9392505050565b60008282018381101561244a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008060008060008060008060006124c88a600d54600e54612c00565b92509250925060006124d86123e5565b905060008060006124eb8e878787612c55565b919e509c509a509598509396509194505050505091939550919395565b600061244a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061234e565b6014805460ff60a01b1916600160a01b1790556040805160028082526060808301845292602083019080368337019050509050308160008151811061258b57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561260457600080fd5b505afa158015612618573d6000803e3d6000fd5b505050506040513d602081101561262e57600080fd5b505181518290600190811061263f57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505061268a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611df6565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561272f578181015183820152602001612717565b505050509050019650505050505050600060405180830381600087803b15801561275857600080fd5b505af115801561276c573d6000803e3d6000fd5b50506014805460ff60a01b1916905550505050565b6011546001600160a01b03166108fc61279b836004612408565b6040518115909202916000818181858888f193505050501580156127c3573d6000803e3d6000fd5b506012546001600160a01b03166108fc6127e960056127e385600c612408565b90612ca5565b6040518115909202916000818181858888f19350505050158015612811573d6000803e3d6000fd5b506013546001600160a01b03166108fc61283160026127e3856009612408565b6040518115909202916000818181858888f19350505050158015612859573d6000803e3d6000fd5b506014546001600160a01b03166108fc612874836009612408565b6040518115909202916000818181858888f193505050501580156117bb573d6000803e3d6000fd5b806128a9576128a9612cfe565b6001600160a01b03841660009081526007602052604090205460ff1680156128ea57506001600160a01b03831660009081526007602052604090205460ff16155b156128ff576128fa848484612d30565b6129fd565b6001600160a01b03841660009081526007602052604090205460ff1615801561294057506001600160a01b03831660009081526007602052604090205460ff165b15612950576128fa848484612e54565b6001600160a01b03841660009081526007602052604090205460ff1615801561299257506001600160a01b03831660009081526007602052604090205460ff16155b156129a2576128fa848484612efd565b6001600160a01b03841660009081526007602052604090205460ff1680156129e257506001600160a01b03831660009081526007602052604090205460ff165b156129f2576128fa848484612f41565b6129fd848484612efd565b80612a0a57612a0a612fb4565b50505050565b600b5460009081906b033b2e3c9fd0803ce8000000825b600854811015612b5557826003600060088481548110612a4357fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612aa85750816004600060088481548110612a8157fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612ac957600b546b033b2e3c9fd0803ce800000094509450505050612b97565b612b096003600060088481548110612add57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612508565b9250612b4b6004600060088481548110612b1f57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612508565b9150600101612a27565b50600b54612b6f906b033b2e3c9fd0803ce8000000612408565b821015612b9157600b546b033b2e3c9fd0803ce8000000935093505050612b97565b90925090505b9091565b60008183612bea5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156123a257818101518382015260200161238a565b506000838581612bf657fe5b0495945050505050565b6000808080612c1a6064612c148989612ca5565b90612408565b90506000612c2d6064612c148a89612ca5565b90506000612c4582612c3f8b86612508565b90612508565b9992985090965090945050505050565b6000808080612c648886612ca5565b90506000612c728887612ca5565b90506000612c808888612ca5565b90506000612c9282612c3f8686612508565b939b939a50919850919650505050505050565b600082612cb457506000610b4a565b82820282848281612cc157fe5b041461244a5760405162461bcd60e51b815260040180806020018281038252602181526020018061314f6021913960400191505060405180910390fd5b600d54158015612d0e5750600e54155b15612d1857612d2e565b600d8054600f55600e8054601055600091829055555b565b600080600080600080612d42876124ab565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612d749088612508565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054612da39087612508565b6001600160a01b03808b1660009081526003602052604080822093909355908a1681522054612dd29086612451565b6001600160a01b038916600090815260036020526040902055612df481612fc2565b612dfe848361304b565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080612e66876124ab565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150612e989087612508565b6001600160a01b03808b16600090815260036020908152604080832094909455918b16815260049091522054612ece9084612451565b6001600160a01b038916600090815260046020908152604080832093909355600390522054612dd29086612451565b600080600080600080612f0f876124ab565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150612da39087612508565b600080600080600080612f53876124ab565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612f859088612508565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054612e989087612508565b600f54600d55601054600e55565b6000612fcc6123e5565b90506000612fda8383612ca5565b30600090815260036020526040902054909150612ff79082612451565b3060009081526003602090815260408083209390935560079052205460ff161561304657306000908152600460205260409020546130359084612451565b306000908152600460205260409020555b505050565b600b546130589083612508565b600b55600c546130689082612451565b600c55505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373526563697069656e742065786365656473206d61782077616c6c65742073697a652e5472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7757652063616e6e6f7420626c61636b6c69737420556e695377617020726f7574657245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220868b97f60381b7c81780461a5d5f274739d83c1dc58fef17d1dcbfa906527a1b64736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000037b039869e4b64aab70ba02c841874f1a05a627000000000000000000000000d11907c3cd193c7a368e6a011edec757da0dddfc0000000000000000000000009dcccf27c231ebe856b101ba9df6ba5ebc0a7b0b00000000000000000000000020998434fccdf04c182069b4c1fd13dd14711573
-----Decoded View---------------
Arg [0] : devWalletAddress (address): 0x037B039869E4B64aAb70ba02C841874f1A05A627
Arg [1] : marketingWalletAddress (address): 0xd11907c3cd193c7A368E6a011EdEc757da0dDDFc
Arg [2] : dipWalletAddress (address): 0x9dccCf27c231eBe856b101BA9Df6bA5EBC0a7b0b
Arg [3] : marketingWalletAddress2 (address): 0x20998434fCCDf04C182069b4C1fD13dd14711573
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000037b039869e4b64aab70ba02c841874f1a05a627
Arg [1] : 000000000000000000000000d11907c3cd193c7a368e6a011edec757da0dddfc
Arg [2] : 0000000000000000000000009dcccf27c231ebe856b101ba9df6ba5ebc0a7b0b
Arg [3] : 00000000000000000000000020998434fccdf04c182069b4c1fd13dd14711573
Deployed Bytecode Sourcemap
25768:21520:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46688:169;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46688:169:0;-1:-1:-1;;;;;46688:169:0;;:::i;:::-;;29012:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27029:40;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;27029:40:0;;;;;;;;;;;;;;30016:173;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30016:173:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;46358:141;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46358:141:0;-1:-1:-1;;;;;46358:141:0;;:::i;31364:95::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;27140:51;;;;;;;;;;;;;:::i;29325:103::-;;;;;;;;;;;;;:::i;47022:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47022:120:0;;:::i;32653:368::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32653:368:0;-1:-1:-1;;;;;32653:368:0;;:::i;46511:165::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46511:165:0;-1:-1:-1;;;;;46511:165:0;;:::i;30201:329::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30201:329:0;;;;;;;;;;;;;;;;;:::i;46158:188::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46158:188:0;;:::i;32372:269::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32372:269:0;;:::i;45512:92::-;;;;;;;;;;;;;:::i;29222:91::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30542:230;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30542:230:0;;;;;;;;:::i;31471:405::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31471:405:0;;:::i;26972:46::-;;;;;;;;;;;;;:::i;31888:472::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31888:472:0;;;;;;;;;:::i;27202:38::-;;;;;;;;;;;;;:::i;39014:168::-;;;;;;;;;;;;;:::i;34992:131::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34992:131:0;-1:-1:-1;;;;;34992:131:0;;:::i;45965:181::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;45965:181:0;;:::i;16958:98::-;;;;;;;;;;;;;:::i;27283:30::-;;;;;;;;;;;;;:::i;29440:210::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29440:210:0;-1:-1:-1;;;;;29440:210:0;;:::i;16354:160::-;;;;;;;;;;;;;:::i;15652:87::-;;;;;;;;;;;;;:::i;29115:95::-;;;;;;;;;;;;;:::i;47154:127::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47154:127:0;;:::i;30784:281::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30784:281:0;;;;;;;;:::i;45616:93::-;;;;;;;;;;;;;:::i;29662:179::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29662:179:0;;;;;;;;:::i;31207:145::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;31207:145:0;;;;;;;;;;:::i;33033:541::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33033:541:0;-1:-1:-1;;;;;33033:541:0;;:::i;46869:141::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46869:141:0;-1:-1:-1;;;;;46869:141:0;;:::i;26921:40::-;;;;;;;;;;;;;:::i;31077:118::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31077:118:0;-1:-1:-1;;;;;31077:118:0;;:::i;29853:151::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29853:151:0;;;;;;;;;;:::i;27080:47::-;;;;;;;;;;;;;:::i;39374:106::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39374:106:0;;;;:::i;33586:475::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33586:475:0;-1:-1:-1;;;;;33586:475:0;;:::i;16686:260::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16686:260:0;-1:-1:-1;;;;;16686:260:0;;:::i;39194:168::-;;;;;;;;;;;;;:::i;45721:102::-;;;;;;;;;;;;;:::i;45835:118::-;;;;;;;;;;;;;:::i;34073:518::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34073:518:0;-1:-1:-1;;;;;34073:518:0;;:::i;46688:169::-;15900:12;:10;:12::i;:::-;15890:6;;-1:-1:-1;;;;;15890:6:0;;;:22;;;15882:67;;;;;-1:-1:-1;;;15882:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15882:67:0;;;;;;;;;;;;;;;46795:24:::1;:50:::0;;-1:-1:-1;;;;;;46795:50:0::1;-1:-1:-1::0;;;;;46795:50:0;;;::::1;::::0;;;::::1;::::0;;46688:169::o;29012:91::-;29086:5;;;;;;;;;;;;-1:-1:-1;;;29086:5:0;;;;29012:91;:::o;27029:40::-;;;-1:-1:-1;;;;;27029:40:0;;:::o;30016:173::-;30091:4;30112:39;30121:12;:10;:12::i;:::-;30135:7;30144:6;30112:8;:39::i;:::-;-1:-1:-1;30173:4:0;30016:173;;;;;:::o;46358:141::-;15900:12;:10;:12::i;:::-;15890:6;;-1:-1:-1;;;;;15890:6:0;;;:22;;;15882:67;;;;;-1:-1:-1;;;15882:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15882:67:0;;;;;;;;;;;;;;;46451:17:::1;:36:::0;;-1:-1:-1;;;;;;46451:36:0::1;-1:-1:-1::0;;;;;46451:36:0;;;::::1;::::0;;;::::1;::::0;;46358:141::o;31364:95::-;31437:10;;31364:95;:::o;27140:51::-;;;:::o;29325:103::-;26449:19;29325:103;:::o;47022:120::-;15900:12;:10;:12::i;:::-;15890:6;;-1:-1:-1;;;;;15890:6:0;;;:22;;;15882:67;;;;;-1:-1:-1;;;15882:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15882:67:0;;;;;;;;;;;;;;;47104:12:::1;:26:::0;47022:120::o;32653:368::-;15900:12;:10;:12::i;:::-;15890:6;;-1:-1:-1;;;;;15890:6:0;;;:22;;;15882:67;;;;;-1:-1:-1;;;15882:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15882:67:0;;;;;;;;;;;;;;;32752:42:::1;-1:-1:-1::0;;;;;32741:53:0;::::1;;;32733:100;;;;-1:-1:-1::0;;;32733:100:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;32857:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;32856:27;32847:71;;;::::0;;-1:-1:-1;;;32847:71:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;32932:26:0::1;;::::0;;;:17:::1;:26;::::0;;;;:33;;-1:-1:-1;;32932:33:0::1;32961:4;32932:33:::0;;::::1;::::0;;;32979:16:::1;:30:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;32979:30:0::1;::::0;;::::1;::::0;;32653:368::o;46511:165::-;15900:12;:10;:12::i;:::-;15890:6;;-1:-1:-1;;;;;15890:6:0;;;:22;;;15882:67;;;;;-1:-1:-1;;;15882:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15882:67:0;;;;;;;;;;;;;;;46616:23:::1;:48:::0;;-1:-1:-1;;;;;;46616:48:0::1;-1:-1:-1::0;;;;;46616:48:0;;;::::1;::::0;;;::::1;::::0;;46511:165::o;30201:329::-;30299:4;30320:36;30330:6;30338:9;30349:6;30320:9;:36::i;:::-;30371:121;30380:6;30388:12;:10;:12::i;:::-;30402:89;30440:6;30402:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30402:19:0;;;;;;:11;:19;;;;;;30422:12;:10;:12::i;:::-;-1:-1:-1;;;;;30402:33:0;;;;;;;;;;;;-1:-1:-1;30402:33:0;;;:89;:37;:89::i;:::-;30371:8;:121::i;:::-;-1:-1:-1;30514:4:0;30201:329;;;;;:::o;46158:188::-;15900:12;:10;:12::i;:::-;15890:6;;-1:-1:-1;;;;;15890:6:0;;;:22;;;15882:67;;;;;-1:-1:-1;;;15882:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15882:67:0;;;;;;;;;;;;;;;46251:1:::1;46240:7;:12;;:29;;;;;46267:2;46256:7;:13;;46240:29;46232:69;;;::::0;;-1:-1:-1;;;46232:69:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;46316:8;:18:::0;46158:188::o;32372:269::-;32438:7;32481;;32470;:18;;32462:73;;;;-1:-1:-1;;;32462:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32550:19;32573:10;:8;:10::i;:::-;32550:33;-1:-1:-1;32605:24:0;:7;32550:33;32605:11;:24::i;:::-;32598:31;;;32372:269;;;;:::o;45512:92::-;45585:7;;45512:92;:::o;29222:91::-;26720:2;29222:91;:::o;30542:230::-;30630:4;30651:83;30660:12;:10;:12::i;:::-;30674:7;30683:50;30722:10;30683:11;:25;30695:12;:10;:12::i;:::-;-1:-1:-1;;;;;30683:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;30683:25:0;;;:34;;;;;;;;;;;:38;:50::i;31471:405::-;31527:14;31544:12;:10;:12::i;:::-;-1:-1:-1;;;;;31580:19:0;;;;;;:11;:19;;;;;;31527:29;;-1:-1:-1;31580:19:0;;31579:20;31571:77;;;;-1:-1:-1;;;31571:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31664:15;31688:19;31699:7;31688:10;:19::i;:::-;-1:-1:-1;;;;;;;;;31740:15:0;;;;;;:7;:15;;;;;;31663:44;;-1:-1:-1;31740:28:0;;:15;-1:-1:-1;31663:44:0;31740:19;:28::i;:::-;-1:-1:-1;;;;;31722:15:0;;;;;;:7;:15;;;;;:46;31793:7;;:20;;31805:7;31793:11;:20::i;:::-;31783:7;:30;31841:10;;:23;;31856:7;31841:14;:23::i;:::-;31828:10;:36;-1:-1:-1;;;31471:405:0:o;26972:46::-;;;-1:-1:-1;;;;;26972:46:0;;:::o;31888:472::-;31978:7;26449:19;32010:7;:18;;32002:62;;;;;-1:-1:-1;;;32002:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;32084:17;32079:270;;32123:15;32147:19;32158:7;32147:10;:19::i;:::-;-1:-1:-1;32122:44:0;;-1:-1:-1;32185:14:0;;-1:-1:-1;;;;;32185:14:0;32079:270;32242:23;32273:19;32284:7;32273:10;:19::i;:::-;-1:-1:-1;32240:52:0;;-1:-1:-1;32311:22:0;;-1:-1:-1;;;;;32311:22:0;27202:38;;;:::o;39014:168::-;15900:12;:10;:12::i;:::-;15890:6;;-1:-1:-1;;;;;15890:6:0;;;:22;;;15882:67;;;;;-1:-1:-1;;;15882:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15882:67:0;;;;;;;;;;;;;;;39072:23:::1;39098:24;39116:4;39098:9;:24::i;:::-;39072:50;;39137:33;39154:15;39137:16;:33::i;:::-;15964:1;39014:168::o:0;34992:131::-;-1:-1:-1;;;;;35084:27:0;35056:4;35084:27;;;:18;:27;;;;;;;;;34992:131::o;45965:181::-;15900:12;:10;:12::i;:::-;15890:6;;-1:-1:-1;;;;;15890:6:0;;;:22;;;15882:67;;;;;-1:-1:-1;;;15882:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15882:67:0;;;;;;;;;;;;;;;46055:1:::1;46045:6;:11;;:27;;;;;46070:2;46060:6;:12;;46045:27;46037:66;;;::::0;;-1:-1:-1;;;46037:66:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;46118:7;:16:::0;45965:181::o;16958:98::-;17035:9;;16958:98;:::o;27283:30::-;;;-1:-1:-1;;;27283:30:0;;;;;:::o;29440:210::-;-1:-1:-1;;;;;29534:20:0;;29506:7;29534:20;;;:11;:20;;;;;;;;29530:49;;;-1:-1:-1;;;;;;29563:16:0;;;;;;:7;:16;;;;;;29556:23;;29530:49;-1:-1:-1;;;;;29621:16:0;;;;;;:7;:16;;;;;;29601:37;;:19;:37::i;16354:160::-;15900:12;:10;:12::i;:::-;15890:6;;-1:-1:-1;;;;;15890:6:0;;;:22;;;15882:67;;;;;-1:-1:-1;;;15882:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15882:67:0;;;;;;;;;;;;;;;16465:1:::1;16449:6:::0;;16428:40:::1;::::0;-1:-1:-1;;;;;16449:6:0;;::::1;::::0;16428:40:::1;::::0;16465:1;;16428:40:::1;16500:1;16483:19:::0;;-1:-1:-1;;;;;;16483:19:0::1;::::0;;16354:160::o;15652:87::-;15690:7;15721:6;-1:-1:-1;;;;;15721:6:0;15652:87;:::o;29115:95::-;29191:7;;;;;;;;;;;;-1:-1:-1;;;29191:7:0;;;;29115:95;:::o;47154:127::-;15900:12;:10;:12::i;:::-;15890:6;;-1:-1:-1;;;;;15890:6:0;;;:22;;;15882:67;;;;;-1:-1:-1;;;15882:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15882:67:0;;;;;;;;;;;;;;;47239:14:::1;:30:::0;47154:127::o;30784:281::-;30877:4;30898:129;30907:12;:10;:12::i;:::-;30921:7;30930:96;30969:15;30930:96;;;;;;;;;;;;;;;;;:11;:25;30942:12;:10;:12::i;:::-;-1:-1:-1;;;;;30930:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;30930:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;45616:93::-;45689:8;;45616:93;:::o;29662:179::-;29740:4;29761:42;29771:12;:10;:12::i;:::-;29785:9;29796:6;29761:9;:42::i;31207:145::-;15900:12;:10;:12::i;:::-;15890:6;;-1:-1:-1;;;;;15890:6:0;;;:22;;;15882:67;;;;;-1:-1:-1;;;15882:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15882:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;31302:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:38;;-1:-1:-1;;31302:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;31207:145::o;33033:541::-;15900:12;:10;:12::i;:::-;15890:6;;-1:-1:-1;;;;;15890:6:0;;;:22;;;15882:67;;;;;-1:-1:-1;;;15882:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15882:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;33125:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;33116:66;;;::::0;;-1:-1:-1;;;33116:66:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;33200:9;33195:369;33219:16;:23:::0;33215:27;::::1;33195:369;;;33296:7;-1:-1:-1::0;;;;;33273:30:0::1;:16;33290:1;33273:19;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;33273:19:0::1;:30;33269:281;;;33351:16;33368:23:::0;;-1:-1:-1;;33368:27:0;;;33351:45;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;33329:16:::1;:19:::0;;-1:-1:-1;;;;;33351:45:0;;::::1;::::0;33346:1;;33329:19;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:67:::0;;-1:-1:-1;;;;;;33329:67:0::1;-1:-1:-1::0;;;;;33329:67:0;;::::1;;::::0;;33420:26;;::::1;::::0;;:17:::1;:26:::0;;;;;;:34;;-1:-1:-1;;33420:34:0::1;::::0;;33478:16:::1;:22:::0;;;::::1;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;33478:22:0;;;;;-1:-1:-1;;;;;;33478:22:0::1;::::0;;;;;33524:5:::1;;33269:281;33244:3;;33195:369;;;;33033:541:::0;:::o;46869:141::-;15900:12;:10;:12::i;:::-;15890:6;;-1:-1:-1;;;;;15890:6:0;;;:22;;;15882:67;;;;;-1:-1:-1;;;15882:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15882:67:0;;;;;;;;;;;;;;;46962:17:::1;:36:::0;;-1:-1:-1;;;;;;46962:36:0::1;-1:-1:-1::0;;;;;46962:36:0;;;::::1;::::0;;;::::1;::::0;;46869:141::o;26921:40::-;;;-1:-1:-1;;;;;26921:40:0;;:::o;31077:118::-;-1:-1:-1;;;;;31163:20:0;31135:4;31163:20;;;:11;:20;;;;;;;;;31077:118::o;29853:151::-;-1:-1:-1;;;;;29965:18:0;;;29934:7;29965:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;29853:151::o;27080:47::-;;;-1:-1:-1;;;;;27080:47:0;;:::o;39374:106::-;15900:12;:10;:12::i;:::-;15890:6;;-1:-1:-1;;;;;15890:6:0;;;:22;;;15882:67;;;;;-1:-1:-1;;;15882:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15882:67:0;;;;;;;;;;;;;;;39447:11:::1;:21:::0;;;::::1;;-1:-1:-1::0;;;39447:21:0::1;-1:-1:-1::0;;;;39447:21:0;;::::1;::::0;;;::::1;::::0;;39374:106::o;33586:475::-;15900:12;:10;:12::i;:::-;15890:6;;-1:-1:-1;;;;;15890:6:0;;;:22;;;15882:67;;;;;-1:-1:-1;;;15882:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15882:67:0;;;;;;;;;;;;;;;33682:42:::1;-1:-1:-1::0;;;;;33671:53:0;::::1;;;33663:100;;;;-1:-1:-1::0;;;33663:100:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;33787:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;33786:21;33778:61;;;::::0;;-1:-1:-1;;;33778:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;33857:16:0;::::1;33876:1;33857:16:::0;;;:7:::1;:16;::::0;;;;;:20;33854:116:::1;;-1:-1:-1::0;;;;;33937:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;33917:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;33898:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;33854:116:::1;-1:-1:-1::0;;;;;33984:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;33984:27:0::1;34007:4;33984:27:::0;;::::1;::::0;;;34026:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;34026:23:0::1;::::0;;::::1;::::0;;33586:475::o;16686:260::-;15900:12;:10;:12::i;:::-;15890:6;;-1:-1:-1;;;;;15890:6:0;;;:22;;;15882:67;;;;;-1:-1:-1;;;15882:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15882:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;16779:22:0;::::1;16771:73;;;;-1:-1:-1::0;;;16771:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16885:6;::::0;;16864:38:::1;::::0;-1:-1:-1;;;;;16864:38:0;;::::1;::::0;16885:6;::::1;::::0;16864:38:::1;::::0;::::1;16917:6;:17:::0;;-1:-1:-1;;;;;;16917:17:0::1;-1:-1:-1::0;;;;;16917:17:0;;;::::1;::::0;;;::::1;::::0;;16686:260::o;39194:168::-;15900:12;:10;:12::i;:::-;15890:6;;-1:-1:-1;;;;;15890:6:0;;;:22;;;15882:67;;;;;-1:-1:-1;;;15882:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15882:67:0;;;;;;;;;;;;;;;39281:21:::1;39317:33;39281:21:::0;39317:13:::1;:33::i;45721:102::-:0;45799:12;;45721:102;:::o;45835:118::-;45920:21;45835:118;:::o;34073:518::-;15900:12;:10;:12::i;:::-;15890:6;;-1:-1:-1;;;;;15890:6:0;;;:22;;;15882:67;;;;;-1:-1:-1;;;15882:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15882:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;34158:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;34150:56;;;::::0;;-1:-1:-1;;;34150:56:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;34226:9;34221:359;34245:9;:16:::0;34241:20;::::1;34221:359;;;34307:7;-1:-1:-1::0;;;;;34291:23:0::1;:9;34301:1;34291:12;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;34291:12:0::1;:23;34287:278;;;34354:9;34364:16:::0;;-1:-1:-1;;34364:20:0;;;34354:31;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;34339:9:::1;:12:::0;;-1:-1:-1;;;;;34354:31:0;;::::1;::::0;34349:1;;34339:12;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;34339:46:0::1;-1:-1:-1::0;;;;;34339:46:0;;::::1;;::::0;;34408:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;34451:11:::1;:20:::0;;;;:28;;-1:-1:-1;;34451:28:0::1;::::0;;34502:9:::1;:15:::0;;;::::1;;;34287:278;34263:3;;34221:359;;109:114:::0;201:10;109:114;:::o;35135:357::-;-1:-1:-1;;;;;35232:19:0;;35224:68;;;;-1:-1:-1;;;35224:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;35315:21:0;;35307:68;;;;-1:-1:-1;;;35307:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;35392:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;35448:32;;;;;;;;;;;;;;;;;35135:357;;;:::o;35504:2507::-;-1:-1:-1;;;;;35605:20:0;;35597:70;;;;-1:-1:-1;;;35597:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;35690:23:0;;35682:71;;;;-1:-1:-1;;;35682:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35785:1;35776:6;:10;35768:64;;;;-1:-1:-1;;;35768:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;35856:25:0;;;;;;:17;:25;;;;;;;;35855:26;35847:58;;;;;-1:-1:-1;;;35847:58:0;;;;;;;;;;;;-1:-1:-1;;;35847:58:0;;;;;;;;;;;;;;;35947:10;35929:29;;;;:17;:29;;;;;;;;35928:30;35920:62;;;;;-1:-1:-1;;;35920:62:0;;;;;;;;;;;;-1:-1:-1;;;35920:62:0;;;;;;;;;;;;;;;36024:9;36006:28;;;;:17;:28;;;;;;;;36005:29;35997:61;;;;;-1:-1:-1;;;35997:61:0;;;;;;;;;;;;-1:-1:-1;;;35997:61:0;;;;;;;;;;;;;;;36086:7;:5;:7::i;:::-;-1:-1:-1;;;;;36076:17:0;:6;-1:-1:-1;;;;;36076:17:0;;;:41;;;;;36110:7;:5;:7::i;:::-;-1:-1:-1;;;;;36097:20:0;:9;-1:-1:-1;;;;;36097:20:0;;;36076:41;36073:156;;;36156:12;;36146:6;:22;;36138:75;;;;-1:-1:-1;;;36138:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36256:7;:5;:7::i;:::-;-1:-1:-1;;;;;36246:17:0;:6;-1:-1:-1;;;;;36246:17:0;;;:41;;;;;36280:7;:5;:7::i;:::-;-1:-1:-1;;;;;36267:20:0;:9;-1:-1:-1;;;;;36267:20:0;;;36246:41;:71;;;;;36304:13;-1:-1:-1;;;;;36291:26:0;:9;-1:-1:-1;;;;;36291:26:0;;;36246:71;:103;;;;-1:-1:-1;;;;;;36321:28:0;;36342:6;36321:28;;36246:103;36243:309;;;36370:29;36402:20;36412:9;36402;:20::i;:::-;36370:52;;36483:14;;36473:6;36449:21;:30;:48;;36441:95;;;;-1:-1:-1;;;36441:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36243:309;;36832:28;36863:24;36881:4;36863:9;:24::i;:::-;36832:55;;36931:12;;36907:20;:36;36904:124;;-1:-1:-1;37000:12:0;;36904:124;37144:6;;27442:13;37071:53;;;;-1:-1:-1;;;37144:6:0;;;;37143:7;:22;;;;-1:-1:-1;37154:11:0;;-1:-1:-1;;;37154:11:0;;;;37143:22;:45;;;;;37169:19;37143:45;:72;;;;;37202:13;-1:-1:-1;;;;;37192:23:0;:6;-1:-1:-1;;;;;37192:23:0;;;37143:72;37139:417;;;37307:38;37324:20;37307:16;:38::i;:::-;37395:21;37438:22;;37435:106;;37485:36;37499:21;37485:13;:36::i;:::-;37139:417;;-1:-1:-1;;;;;37764:26:0;;37637:12;37764:26;;;:18;:26;;;;;;37652:4;;37764:26;;;:59;;-1:-1:-1;;;;;;37794:29:0;;;;;;:18;:29;;;;;;;;37764:59;37761:113;;;-1:-1:-1;37853:5:0;37761:113;37952:47;37967:6;37974:9;37984:6;37991:7;37952:14;:47::i;:::-;35504:2507;;;;;;:::o;4636:208::-;4722:7;4762:12;4754:6;;;;4746:29;;;;-1:-1:-1;;;4746:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4802:5:0;;;4636:208::o;44718:175::-;44759:7;44784:15;44801;44820:19;:17;:19::i;:::-;44783:56;;-1:-1:-1;44783:56:0;-1:-1:-1;44861:20:0;44783:56;;44861:11;:20::i;:::-;44854:27;;;;44718:175;:::o;6166:140::-;6224:7;6255:39;6259:1;6262;6255:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6248:46;6166:140;-1:-1:-1;;;6166:140:0:o;3639:197::-;3697:7;3733:5;;;3761:6;;;;3753:46;;;;;-1:-1:-1;;;3753:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;43411:467;43470:7;43479;43488;43497;43506;43515;43536:23;43561:12;43575:13;43592:39;43604:7;43613;;43622:8;;43592:11;:39::i;:::-;43535:96;;;;;;43642:19;43664:10;:8;:10::i;:::-;43642:32;;43686:15;43703:23;43728:12;43744:46;43756:7;43765:4;43771:5;43778:11;43744;:46::i;:::-;43685:105;;-1:-1:-1;43685:105:0;-1:-1:-1;43685:105:0;-1:-1:-1;43841:15:0;;-1:-1:-1;43858:4:0;;-1:-1:-1;43864:5:0;;-1:-1:-1;;;;;43411:467:0;;;;;;;:::o;4154:144::-;4212:7;4243:43;4247:1;4250;4243:43;;;;;;;;;;;;;;;;;:3;:43::i;38023:656::-;27806:6;:13;;-1:-1:-1;;;;27806:13:0;-1:-1:-1;;;27806:13:0;;;38192:16:::1;::::0;;38206:1:::1;38192:16:::0;;;38168:21:::1;38192:16:::0;;::::1;::::0;;38168:21;38192:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;38192:16:0::1;38168:40;;38241:4;38223;38228:1;38223:7;;;;;;;;;;;;;:23;-1:-1:-1::0;;;;;38223:23:0::1;;;-1:-1:-1::0;;;;;38223:23:0::1;;;::::0;::::1;38271:15;-1:-1:-1::0;;;;;38271:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;38271:22:0;38261:7;;:4;;38266:1:::1;::::0;38261:7;::::1;;;;;;;;;;:32;-1:-1:-1::0;;;;;38261:32:0::1;;;-1:-1:-1::0;;;;;38261:32:0::1;;;::::0;::::1;38310:62;38327:4;38342:15;38360:11;38310:8;:62::i;:::-;38419:15;-1:-1:-1::0;;;;;38419:66:0::1;;38504:11;38534:1;38582:4;38613;38637:15;38419:248;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;38419:248:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;27850:6:0;:14;;-1:-1:-1;;;;27850:14:0;;;-1:-1:-1;;;;38023:656:0:o;38691:311::-;38753:17;;-1:-1:-1;;;;;38753:17:0;:41;38780:13;:6;38791:1;38780:10;:13::i;:::-;38753:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38809:23:0;;-1:-1:-1;;;;;38809:23:0;:55;38842:21;38861:1;38842:14;:6;38853:2;38842:10;:14::i;:::-;:18;;:21::i;:::-;38809:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38879:17:0;;-1:-1:-1;;;;;38879:17:0;:48;38906:20;38924:1;38906:13;:6;38917:1;38906:10;:13::i;:20::-;38879:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38942:24:0;;-1:-1:-1;;;;;38942:24:0;:48;38976:13;:6;38987:1;38976:10;:13::i;:::-;38942:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39492:883;39608:7;39604:44;;39634:14;:12;:14::i;:::-;-1:-1:-1;;;;;39669:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;39693:22:0;;;;;;:11;:22;;;;;;;;39692:23;39669:46;39665:637;;;39736:48;39758:6;39766:9;39777:6;39736:21;:48::i;:::-;39665:637;;;-1:-1:-1;;;;;39811:19:0;;;;;;:11;:19;;;;;;;;39810:20;:46;;;;-1:-1:-1;;;;;;39834:22:0;;;;;;:11;:22;;;;;;;;39810:46;39806:496;;;39877:46;39897:6;39905:9;39916:6;39877:19;:46::i;39806:496::-;-1:-1:-1;;;;;39950:19:0;;;;;;:11;:19;;;;;;;;39949:20;:47;;;;-1:-1:-1;;;;;;39974:22:0;;;;;;:11;:22;;;;;;;;39973:23;39949:47;39945:357;;;40017:44;40035:6;40043:9;40054:6;40017:17;:44::i;39945:357::-;-1:-1:-1;;;;;40087:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;40110:22:0;;;;;;:11;:22;;;;;;;;40087:45;40083:219;;;40153:48;40175:6;40183:9;40194:6;40153:21;:48::i;40083:219::-;40242:44;40260:6;40268:9;40279:6;40242:17;:44::i;:::-;40322:7;40318:45;;40348:15;:13;:15::i;:::-;39492:883;;;;:::o;44905:595::-;45006:7;;44955;;;;26449:19;44955:7;45068:305;45092:9;:16;45088:20;;45068:305;;;45162:7;45138;:21;45146:9;45156:1;45146:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;45146:12:0;45138:21;;;;;;;;;;;;;:31;;:66;;;45197:7;45173;:21;45181:9;45191:1;45181:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;45181:12:0;45173:21;;;;;;;;;;;;;:31;45138:66;45134:97;;;45214:7;;26449:19;45206:25;;;;;;;;;45134:97;45260:34;45272:7;:21;45280:9;45290:1;45280:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;45280:12:0;45272:21;;;;;;;;;;;;;45260:7;;:11;:34::i;:::-;45250:44;;45323:34;45335:7;:21;45343:9;45353:1;45343:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;45343:12:0;45335:21;;;;;;;;;;;;;45323:7;;:11;:34::i;:::-;45313:44;-1:-1:-1;45110:3:0;;45068:305;;;-1:-1:-1;45401:7:0;;:20;;26449:19;45401:11;:20::i;:::-;45391:7;:30;45387:61;;;45431:7;;26449:19;45423:25;;;;;;;;45387:61;45471:7;;-1:-1:-1;45480:7:0;-1:-1:-1;44905:595:0;;;:::o;6843:298::-;6929:7;6968:12;6961:5;6953:28;;;;-1:-1:-1;;;6953:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6996:9;7012:1;7008;:5;;;;;;;6843:298;-1:-1:-1;;;;;6843:298:0:o;43890:371::-;43983:7;;;;44040:28;44064:3;44040:19;:7;44052:6;44040:11;:19::i;:::-;:23;;:28::i;:::-;44025:43;-1:-1:-1;44083:13:0;44099:29;44124:3;44099:20;:7;44111;44099:11;:20::i;:29::-;44083:45;-1:-1:-1;44143:23:0;44169:28;44083:45;44169:17;:7;44181:4;44169:11;:17::i;:::-;:21;;:28::i;:::-;44143:54;44237:4;;-1:-1:-1;44243:5:0;;-1:-1:-1;43890:371:0;;-1:-1:-1;;;;;43890:371:0:o;44273:433::-;44383:7;;;;44443:24;:7;44455:11;44443;:24::i;:::-;44425:42;-1:-1:-1;44482:12:0;44497:21;:4;44506:11;44497:8;:21::i;:::-;44482:36;-1:-1:-1;44533:13:0;44549:22;:5;44559:11;44549:9;:22::i;:::-;44533:38;-1:-1:-1;44586:23:0;44612:28;44533:38;44612:17;:7;44624:4;44612:11;:17::i;:28::-;44663:7;;;;-1:-1:-1;44689:4:0;;-1:-1:-1;44273:433:0;;-1:-1:-1;;;;;;;44273:433:0:o;5138:511::-;5196:7;5457:6;5453:55;;-1:-1:-1;5491:1:0;5484:8;;5453:55;5536:5;;;5540:1;5536;:5;:1;5564:5;;;;;:10;5556:56;;;;-1:-1:-1;;;5556:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34603:238;34653:7;;:12;:29;;;;-1:-1:-1;34669:8:0;;:13;34653:29;34650:41;;;34684:7;;34650:41;34725:7;;;34707:15;:25;34766:8;;;34747:16;:27;-1:-1:-1;34791:11:0;;;;34817:12;34603:238;:::o;41518:580::-;41625:15;41642:23;41667:12;41681:23;41706:12;41720:13;41737:19;41748:7;41737:10;:19::i;:::-;-1:-1:-1;;;;;41789:15:0;;;;;;:7;:15;;;;;;41624:132;;-1:-1:-1;41624:132:0;;-1:-1:-1;41624:132:0;;-1:-1:-1;41624:132:0;-1:-1:-1;41624:132:0;-1:-1:-1;41624:132:0;-1:-1:-1;41789:28:0;;41809:7;41789:19;:28::i;:::-;-1:-1:-1;;;;;41771:15:0;;;;;;:7;:15;;;;;;;;:46;;;;41850:7;:15;;;;:28;;41870:7;41850:19;:28::i;:::-;-1:-1:-1;;;;;41832:15:0;;;;;;;:7;:15;;;;;;:46;;;;41914:18;;;;;;;:39;;41937:15;41914:22;:39::i;:::-;-1:-1:-1;;;;;41893:18:0;;;;;;:7;:18;;;;;:60;41968:16;41978:5;41968:9;:16::i;:::-;41999:23;42011:4;42017;41999:11;:23::i;:::-;42059:9;-1:-1:-1;;;;;42042:44:0;42051:6;-1:-1:-1;;;;;42042:44:0;;42070:15;42042:44;;;;;;;;;;;;;;;;;;41518:580;;;;;;;;;:::o;40914:592::-;41019:15;41036:23;41061:12;41075:23;41100:12;41114:13;41131:19;41142:7;41131:10;:19::i;:::-;-1:-1:-1;;;;;41183:15:0;;;;;;:7;:15;;;;;;41018:132;;-1:-1:-1;41018:132:0;;-1:-1:-1;41018:132:0;;-1:-1:-1;41018:132:0;-1:-1:-1;41018:132:0;-1:-1:-1;41018:132:0;-1:-1:-1;41183:28:0;;41018:132;41183:19;:28::i;:::-;-1:-1:-1;;;;;41165:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;41247:18;;;;;:7;:18;;;;;:39;;41270:15;41247:22;:39::i;:::-;-1:-1:-1;;;;;41226:18:0;;;;;;:7;:18;;;;;;;;:60;;;;41322:7;:18;;;;:39;;41345:15;41322:22;:39::i;40387:515::-;40490:15;40507:23;40532:12;40546:23;40571:12;40585:13;40602:19;40613:7;40602:10;:19::i;:::-;-1:-1:-1;;;;;40654:15:0;;;;;;:7;:15;;;;;;40489:132;;-1:-1:-1;40489:132:0;;-1:-1:-1;40489:132:0;;-1:-1:-1;40489:132:0;-1:-1:-1;40489:132:0;-1:-1:-1;40489:132:0;-1:-1:-1;40654:28:0;;40489:132;40654:19;:28::i;42110:655::-;42217:15;42234:23;42259:12;42273:23;42298:12;42312:13;42329:19;42340:7;42329:10;:19::i;:::-;-1:-1:-1;;;;;42381:15:0;;;;;;:7;:15;;;;;;42216:132;;-1:-1:-1;42216:132:0;;-1:-1:-1;42216:132:0;;-1:-1:-1;42216:132:0;-1:-1:-1;42216:132:0;-1:-1:-1;42216:132:0;-1:-1:-1;42381:28:0;;42401:7;42381:19;:28::i;:::-;-1:-1:-1;;;;;42363:15:0;;;;;;:7;:15;;;;;;;;:46;;;;42442:7;:15;;;;:28;;42462:7;42442:19;:28::i;34853:127::-;34911:15;;34901:7;:25;34952:16;;34941:8;:27;34853:127::o;42777:349::-;42834:19;42857:10;:8;:10::i;:::-;42834:33;-1:-1:-1;42882:13:0;42898:22;:5;42834:33;42898:9;:22::i;:::-;42976:4;42960:22;;;;:7;:22;;;;;;42882:38;;-1:-1:-1;42960:33:0;;42882:38;42960:26;:33::i;:::-;42951:4;42935:22;;;;:7;:22;;;;;;;;:58;;;;43011:11;:26;;;;;;43008:106;;;43097:4;43081:22;;;;:7;:22;;;;;;:33;;43108:5;43081:26;:33::i;:::-;43072:4;43056:22;;;;:7;:22;;;;;:58;43008:106;42777:349;;;:::o;43138:159::-;43220:7;;:17;;43232:4;43220:11;:17::i;:::-;43210:7;:27;43265:10;;:20;;43280:4;43265:14;:20::i;:::-;43252:10;:33;-1:-1:-1;;43138:159:0:o
Swarm Source
ipfs://868b97f60381b7c81780461a5d5f274739d83c1dc58fef17d1dcbfa906527a1b
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.