Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
NFT
Overview
Max Total Supply
10,000 BPUNKS
Holders
1,046 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.215725411926333843 BPUNKSValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BabyPunks
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-08-09 */ /** /$$$$$$$ /$$ /$$$$$$$ /$$ | $$__ $$ | $$ | $$__ $$ | $$ | $$ \ $$ /$$$$$$ | $$$$$$$ /$$ /$$ | $$ \ $$ /$$ /$$ /$$$$$$$ | $$ /$$ /$$$$$$$ | $$$$$$$ |____ $$| $$__ $$| $$ | $$ | $$$$$$$/| $$ | $$| $$__ $$| $$ /$$/ /$$_____/ | $$__ $$ /$$$$$$$| $$ \ $$| $$ | $$ | $$____/ | $$ | $$| $$ \ $$| $$$$$$/ | $$$$$$ | $$ \ $$ /$$__ $$| $$ | $$| $$ | $$ | $$ | $$ | $$| $$ | $$| $$_ $$ \____ $$ | $$$$$$$/| $$$$$$$| $$$$$$$/| $$$$$$$ | $$ | $$$$$$/| $$ | $$| $$ \ $$ /$$$$$$$/ |_______/ \_______/|_______/ \____ $$ |__/ \______/ |__/ |__/|__/ \__/|_______/ /$$ | $$ | $$$$$$/ \______/ */ 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 geUnlockTime() public view returns (uint256) { return _lockTime; } //Locks the contract for owner for the amount of time provided function lock(uint256 time) public virtual onlyOwner { _previousOwner = _owner; _owner = address(0); _lockTime = now + time; emit OwnershipTransferred(_owner, address(0)); } //Unlocks the contract for owner when _lockTime is exceeds function unlock() public virtual { require(_previousOwner == msg.sender, "You don't have permission to unlock"); require(now > _lockTime , "Contract is locked until 7 days"); emit OwnershipTransferred(_owner, _previousOwner); _owner = _previousOwner; } } 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 implementation contract BabyPunks 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; event ExcludeFromFee(address indexed account, bool isExcluded); event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded); uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 10000 * 10**18; //10,000 uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = 'BabyPunks'; string private _symbol = 'BPUNKS'; uint8 private _decimals = 18; // Tax and Punk fees will start at 0 so we don't have a big impact when deploying to Uniswap // Punk wallet address is null but the method to set the address is exposed uint256 public _taxFee = 1; uint256 private _PunkFee = 30; uint256 private _previousTaxFee = _taxFee; uint256 private _previousPunkFee = _PunkFee; address payable public _PunkWalletAddress; address payable public _marketingWalletAddress; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwap = false; bool public swapEnabled = true; uint256 public _maxTxAmount = 200 * 10**18; //no max tx limit rn uint256 private _numOfTokensToExchangeForPunk = 5 * 10**15; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapEnabledUpdated(bool enabled); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor (address payable PunkWalletAddress, address payable marketingWalletAddress) public { _PunkWalletAddress = PunkWalletAddress; _marketingWalletAddress = marketingWalletAddress; _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // UniswapV2 for Ethereum network // 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; _isExcludedFromFee[address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view 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 isBlackListed(address account) public view returns (bool) { return _isBlackListedBot[account]; } function setExcludeFromFee(address account, bool excluded) external onlyOwner() { _isExcludedFromFee[account] = excluded; } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFee[accounts[i]] = excluded; } emit ExcludeMultipleAccountsFromFees(accounts, 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 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 already 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 addBotToBlackList(address account) external onlyOwner() { require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not 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 removeAllFee() private { if(_taxFee == 0 && _PunkFee == 0) return; _previousTaxFee = _taxFee; _previousPunkFee = _PunkFee; _taxFee = 0; _PunkFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _PunkFee = _previousPunkFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() { _maxTxAmount = _tTotal.mul(maxTxPercent).div( 10**2 ); } function setNumofTokensForExchange(uint256 numOfTokensToExchangeForPunk) external onlyOwner() { _numOfTokensToExchangeForPunk = numOfTokensToExchangeForPunk; } 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 have no power here!"); require(!_isBlackListedBot[msg.sender], "You have no power here!"); if(sender != owner() && recipient != owner()) require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); // 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 Punk event. // also, don't swap if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForPunk; if (!inSwap && swapEnabled && overMinTokenBalance && sender != uniswapV2Pair) { // We need to swap the current tokens to ETH and send to the Punk wallet swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToPunk(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 Punk 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 sendETHToPunk(uint256 amount) private { _PunkWalletAddress.transfer(amount.div(2)); _marketingWalletAddress.transfer(amount.div(2)); } // We are exposing these functions to be able to manual swap and send // in case the token is highly valued and 5M becomes too much function manualSwap() external onlyOwner() { uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualSend() external onlyOwner() { uint256 contractETHBalance = address(this).balance; sendETHToPunk(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 tPunk) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takePunk(tPunk); _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 tPunk) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takePunk(tPunk); _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 tPunk) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takePunk(tPunk); _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 tPunk) = _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); _takePunk(tPunk); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takePunk(uint256 tPunk) private { uint256 currentRate = _getRate(); uint256 rPunk = tPunk.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rPunk); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tPunk); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div( 10**2 ); } function calculatePunkFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_PunkFee).div( 10**2 ); } 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 tPunk) = _getTValues(tAmount); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tPunk, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tPunk); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) { uint256 tFee = calculateTaxFee(tAmount); uint256 tPunk = calculatePunkFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tPunk); return (tTransferAmount, tFee, tPunk); } function _getRValues(uint256 tAmount, uint256 tFee,uint256 tPunk, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rPunk = tPunk.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rPunk); 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() private view returns(uint256) { return _taxFee; } function _getMaxTxAmount() private view returns(uint256) { return _maxTxAmount; } function _getETHBalance() public view returns(uint256 balance) { return address(this).balance; } function _setTaxFee(uint256 taxFee) external onlyOwner() { require(taxFee >= 0 && taxFee <= 100, 'taxFee should be in 1 - 10'); _taxFee = taxFee.div(10); } function _setPunkFee(uint256 PunkFee) external onlyOwner() { require(PunkFee >= 0 && PunkFee <= 40, 'PunkFee should be in 1 - 40'); _PunkFee = PunkFee; } function _setPunkWallet(address payable PunkWalletAddress) external onlyOwner() { _PunkWalletAddress = PunkWalletAddress; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"PunkWalletAddress","type":"address"},{"internalType":"address payable","name":"marketingWalletAddress","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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","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"},{"inputs":[],"name":"_PunkWalletAddress","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":"_marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"PunkFee","type":"uint256"}],"name":"_setPunkFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"PunkWalletAddress","type":"address"}],"name":"_setPunkWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"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":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","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":"isBlackListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","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":"view","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":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numOfTokensToExchangeForPunk","type":"uint256"}],"name":"setNumofTokensForExchange","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":"view","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"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
69021e19e0c9bab2400000600b55690200b25812c4f53fffff19600c55610100604052600960c0819052684261627950756e6b7360b81b60e09081526200004a91600e91906200045f565b50604080518082019091526006808252654250554e4b5360d01b60209092019182526200007a91600f916200045f565b506010805460ff1916601290811790915560016011819055601e918290556013556014556016805461ffff60a01b1916600160a81b179055680ad78ebc5ac62000006017556611c37937e08000601855348015620000d757600080fd5b50604051620038383803806200383883398181016040526040811015620000fd57600080fd5b5080516020909101516000620001126200044c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601580546001600160a01b038085166001600160a01b0319928316179092556016805492841692909116919091179055600c54600360006200019d6200044c565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200021457600080fd5b505afa15801562000229573d6000803e3d6000fd5b505050506040513d60208110156200024057600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b1580156200029157600080fd5b505afa158015620002a6573d6000803e3d6000fd5b505050506040513d6020811015620002bd57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b1580156200031057600080fd5b505af115801562000325573d6000803e3d6000fd5b505050506040513d60208110156200033c57600080fd5b50516001600160601b0319606091821b811660a0529082901b166080526001600660006200036962000450565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260069092528120805483166001908117909155737a250d5630b4cf539739df2c5dacb4c659f2488d9091527f8cb3563b79eac8102a826f0dcb81e7e954d7df2b15d07edcb2dd2b236c2078b48054909216179055620003f66200044c565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040518082815260200191505060405180910390a3505050620004fb565b3390565b6000546001600160a01b031690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004a257805160ff1916838001178555620004d2565b82800160010185558215620004d2579182015b82811115620004d2578251825591602001919060010190620004b5565b50620004e0929150620004e4565b5090565b5b80821115620004e05760008155600101620004e5565b60805160601c60a05160601c6132ff620005396000398061106b5280612321525080610bf8528061262e52806126e6528061270d52506132ff6000f3fe6080604052600436106102815760003560e01c80637ded4d6a1161014f578063d543dbeb116100c1578063f2cc0c181161007a578063f2cc0c181461099c578063f2fde38b146109cf578063f429389014610a02578063f815a84214610a17578063f84354f114610a2c578063fee8f1a514610a5f57610288565b8063d543dbeb14610899578063dd467064146108c3578063dd62ed3e146108ed578063e01af92c14610928578063e47d606014610954578063ea8846131461098757610288565b8063a69df4b511610113578063a69df4b514610749578063a9059cbb1461075e578063af9549e014610797578063b6c52324146107d2578063c492f046146107e7578063cba0e9961461086657610288565b80637ded4d6a146106805780638da5cb5b146106b35780638e522925146106c857806395d89b41146106fb578063a457c2d71461071057610288565b80633bd5d173116101f35780635342acb4116101ac5780635342acb4146105b15780635880b873146105e45780636ddd17131461060e57806370a0823114610623578063715018a6146106565780637d1db4a51461066b57610288565b80633bd5d173146104e35780634144d9e41461050d5780634303443d146105225780634549b0391461055557806349bd5a5e1461058757806351bc3c851461059c57610288565b806318160ddd1161024557806318160ddd146103e857806323b872dd146103fd5780632d83811914610440578063313ce5671461046a57806339509351146104955780633b124fe7146104ce57610288565b806306fdde031461028d578063095ea7b3146103175780630d3672e81461036457806313114a9d146103905780631694505e146103b757610288565b3661028857005b600080fd5b34801561029957600080fd5b506102a2610a89565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102dc5781810151838201526020016102c4565b50505050905090810190601f1680156103095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561032357600080fd5b506103506004803603604081101561033a57600080fd5b506001600160a01b038135169060200135610b1f565b604080519115158252519081900360200190f35b34801561037057600080fd5b5061038e6004803603602081101561038757600080fd5b5035610b3d565b005b34801561039c57600080fd5b506103a5610bf0565b60408051918252519081900360200190f35b3480156103c357600080fd5b506103cc610bf6565b604080516001600160a01b039092168252519081900360200190f35b3480156103f457600080fd5b506103a5610c1a565b34801561040957600080fd5b506103506004803603606081101561042057600080fd5b506001600160a01b03813581169160208101359091169060400135610c20565b34801561044c57600080fd5b506103a56004803603602081101561046357600080fd5b5035610ca7565b34801561047657600080fd5b5061047f610d09565b6040805160ff9092168252519081900360200190f35b3480156104a157600080fd5b50610350600480360360408110156104b857600080fd5b506001600160a01b038135169060200135610d12565b3480156104da57600080fd5b506103a5610d60565b3480156104ef57600080fd5b5061038e6004803603602081101561050657600080fd5b5035610d66565b34801561051957600080fd5b506103cc610e40565b34801561052e57600080fd5b5061038e6004803603602081101561054557600080fd5b50356001600160a01b0316610e4f565b34801561056157600080fd5b506103a56004803603604081101561057857600080fd5b50803590602001351515610fd7565b34801561059357600080fd5b506103cc611069565b3480156105a857600080fd5b5061038e61108d565b3480156105bd57600080fd5b50610350600480360360208110156105d457600080fd5b50356001600160a01b03166110fe565b3480156105f057600080fd5b5061038e6004803603602081101561060757600080fd5b503561111c565b34801561061a57600080fd5b506103506111db565b34801561062f57600080fd5b506103a56004803603602081101561064657600080fd5b50356001600160a01b03166111eb565b34801561066257600080fd5b5061038e61124d565b34801561067757600080fd5b506103a56112dd565b34801561068c57600080fd5b5061038e600480360360208110156106a357600080fd5b50356001600160a01b03166112e3565b3480156106bf57600080fd5b506103cc61149b565b3480156106d457600080fd5b5061038e600480360360208110156106eb57600080fd5b50356001600160a01b03166114aa565b34801561070757600080fd5b506102a2611524565b34801561071c57600080fd5b506103506004803603604081101561073357600080fd5b506001600160a01b038135169060200135611585565b34801561075557600080fd5b5061038e6115ed565b34801561076a57600080fd5b506103506004803603604081101561078157600080fd5b506001600160a01b0381351690602001356116db565b3480156107a357600080fd5b5061038e600480360360408110156107ba57600080fd5b506001600160a01b03813516906020013515156116ef565b3480156107de57600080fd5b506103a5611772565b3480156107f357600080fd5b5061038e6004803603604081101561080a57600080fd5b81019060208101813564010000000081111561082557600080fd5b82018360208201111561083757600080fd5b8035906020019184602083028401116401000000008311171561085957600080fd5b9193509150351515611778565b34801561087257600080fd5b506103506004803603602081101561088957600080fd5b50356001600160a01b0316611898565b3480156108a557600080fd5b5061038e600480360360208110156108bc57600080fd5b50356118b6565b3480156108cf57600080fd5b5061038e600480360360208110156108e657600080fd5b5035611934565b3480156108f957600080fd5b506103a56004803603604081101561091057600080fd5b506001600160a01b03813581169160200135166119d2565b34801561093457600080fd5b5061038e6004803603602081101561094b57600080fd5b503515156119fd565b34801561096057600080fd5b506103506004803603602081101561097757600080fd5b50356001600160a01b0316611a73565b34801561099357600080fd5b506103cc611a91565b3480156109a857600080fd5b5061038e600480360360208110156109bf57600080fd5b50356001600160a01b0316611aa0565b3480156109db57600080fd5b5061038e600480360360208110156109f257600080fd5b50356001600160a01b0316611c82565b348015610a0e57600080fd5b5061038e611d68565b348015610a2357600080fd5b506103a5611dca565b348015610a3857600080fd5b5061038e60048036036020811015610a4f57600080fd5b50356001600160a01b0316611dce565b348015610a6b57600080fd5b5061038e60048036036020811015610a8257600080fd5b5035611f64565b600e8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b155780601f10610aea57610100808354040283529160200191610b15565b820191906000526020600020905b815481529060010190602001808311610af857829003601f168201915b5050505050905090565b6000610b33610b2c611fc1565b8484611fc5565b5060015b92915050565b610b45611fc1565b6000546001600160a01b03908116911614610b95576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b6028811115610beb576040805162461bcd60e51b815260206004820152601b60248201527f50756e6b4665652073686f756c6420626520696e2031202d2034300000000000604482015290519081900360640190fd5b601255565b600d5490565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b5490565b6000610c2d8484846120b1565b610c9d84610c39611fc1565b610c9885604051806060016040528060288152602001613136602891396001600160a01b038a16600090815260056020526040812090610c77611fc1565b6001600160a01b0316815260208101919091526040016000205491906123d5565b611fc5565b5060019392505050565b6000600c54821115610cea5760405162461bcd60e51b815260040180806020018281038252602a81526020018061307b602a913960400191505060405180910390fd5b6000610cf461246c565b9050610d00838261248f565b9150505b919050565b60105460ff1690565b6000610b33610d1f611fc1565b84610c988560056000610d30611fc1565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906124d8565b60115481565b6000610d70611fc1565b6001600160a01b03811660009081526007602052604090205490915060ff1615610dcb5760405162461bcd60e51b815260040180806020018281038252602c815260200180613256602c913960400191505060405180910390fd5b6000610dd683612532565b505050506001600160a01b038416600090815260036020526040902054919250610e0291905082612589565b6001600160a01b038316600090815260036020526040902055600c54610e289082612589565b600c55600d54610e3890846124d8565b600d55505050565b6016546001600160a01b031681565b610e57611fc1565b6000546001600160a01b03908116911614610ea7576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415610f035760405162461bcd60e51b81526004018080602001828103825260248152602001806131c76024913960400191505060405180910390fd5b6001600160a01b03811660009081526009602052604090205460ff1615610f71576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c69737465640000604482015290519081900360640190fd5b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6000600b54831115611030576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b8161104f57600061104084612532565b50939550610b37945050505050565b600061105a84612532565b50929550610b37945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b611095611fc1565b6000546001600160a01b039081169116146110e5576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b60006110f0306111eb565b90506110fb816125cb565b50565b6001600160a01b031660009081526006602052604090205460ff1690565b611124611fc1565b6000546001600160a01b03908116911614611174576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b60648111156111ca576040805162461bcd60e51b815260206004820152601a60248201527f7461784665652073686f756c6420626520696e2031202d203130000000000000604482015290519081900360640190fd5b6111d581600a61248f565b60115550565b601654600160a81b900460ff1681565b6001600160a01b03811660009081526007602052604081205460ff161561122b57506001600160a01b038116600090815260046020526040902054610d04565b6001600160a01b038216600090815260036020526040902054610b3790610ca7565b611255611fc1565b6000546001600160a01b039081169116146112a5576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b600080546040516001600160a01b039091169060008051602061317e833981519152908390a3600080546001600160a01b0319169055565b60175481565b6112eb611fc1565b6000546001600160a01b0390811691161461133b576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526009602052604090205460ff166113a8576040805162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000604482015290519081900360640190fd5b60005b600a5481101561149757816001600160a01b0316600a82815481106113cc57fe5b6000918252602090912001546001600160a01b0316141561148f57600a805460001981019081106113f957fe5b600091825260209091200154600a80546001600160a01b03909216918390811061141f57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600990915260409020805460ff19169055600a80548061146857fe5b600082815260209020810160001990810180546001600160a01b0319169055019055611497565b6001016113ab565b5050565b6000546001600160a01b031690565b6114b2611fc1565b6000546001600160a01b03908116911614611502576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b601580546001600160a01b0319166001600160a01b0392909216919091179055565b600f8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b155780601f10610aea57610100808354040283529160200191610b15565b6000610b33611592611fc1565b84610c98856040518060600160405280602581526020016132a560259139600560006115bc611fc1565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906123d5565b6001546001600160a01b031633146116365760405162461bcd60e51b81526004018080602001828103825260238152602001806132826023913960400191505060405180910390fd5b600254421161168c576040805162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300604482015290519081900360640190fd5b600154600080546040516001600160a01b03938416939091169160008051602061317e83398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610b336116e8611fc1565b84846120b1565b6116f7611fc1565b6000546001600160a01b03908116911614611747576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b60025490565b611780611fc1565b6000546001600160a01b039081169116146117d0576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b60005b828110156118255781600660008686858181106117ec57fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff19169115159190911790556001016117d3565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b35838383604051808060200183151581526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b6001600160a01b031660009081526007602052604090205460ff1690565b6118be611fc1565b6000546001600160a01b0390811691161461190e576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b61192e606461192883600b5461280290919063ffffffff16565b9061248f565b60175550565b61193c611fc1565b6000546001600160a01b0390811691161461198c576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b60008054600180546001600160a01b03199081166001600160a01b03841617909155168155428201600255604051819060008051602061317e833981519152908290a350565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b611a05611fc1565b6000546001600160a01b03908116911614611a55576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b60168054911515600160a81b0260ff60a81b19909216919091179055565b6001600160a01b031660009081526009602052604090205460ff1690565b6015546001600160a01b031681565b611aa8611fc1565b6000546001600160a01b03908116911614611af8576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415611b545760405162461bcd60e51b81526004018080602001828103825260228152602001806132346022913960400191505060405180910390fd5b6001600160a01b03811660009081526007602052604090205460ff1615611bc2576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b03811660009081526003602052604090205415611c1c576001600160a01b038116600090815260036020526040902054611c0290610ca7565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b611c8a611fc1565b6000546001600160a01b03908116911614611cda576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b6001600160a01b038116611d1f5760405162461bcd60e51b81526004018080602001828103825260268152602001806130a56026913960400191505060405180910390fd5b600080546040516001600160a01b038085169392169160008051602061317e83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b611d70611fc1565b6000546001600160a01b03908116911614611dc0576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b476110fb8161285b565b4790565b611dd6611fc1565b6000546001600160a01b03908116911614611e26576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff16611e93576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b60085481101561149757816001600160a01b031660088281548110611eb757fe5b6000918252602090912001546001600160a01b03161415611f5c57600880546000198101908110611ee457fe5b600091825260209091200154600880546001600160a01b039092169183908110611f0a57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff19169055600880548061146857fe5b600101611e96565b611f6c611fc1565b6000546001600160a01b03908116911614611fbc576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b601855565b3390565b6001600160a01b03831661200a5760405162461bcd60e51b81526004018080602001828103825260248152602001806132106024913960400191505060405180910390fd5b6001600160a01b03821661204f5760405162461bcd60e51b81526004018080602001828103825260228152602001806130cb6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166120f65760405162461bcd60e51b81526004018080602001828103825260258152602001806131eb6025913960400191505060405180910390fd5b6001600160a01b03821661213b5760405162461bcd60e51b81526004018080602001828103825260238152602001806130586023913960400191505060405180910390fd5b6000811161217a5760405162461bcd60e51b815260040180806020018281038252602981526020018061319e6029913960400191505060405180910390fd5b6001600160a01b03831660009081526009602052604090205460ff16156121e2576040805162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b604482015290519081900360640190fd5b3360009081526009602052604090205460ff1615612241576040805162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b604482015290519081900360640190fd5b61224961149b565b6001600160a01b0316836001600160a01b031614158015612283575061226d61149b565b6001600160a01b0316826001600160a01b031614155b156122c9576017548111156122c95760405162461bcd60e51b81526004018080602001828103825260288152602001806130ed6028913960400191505060405180910390fd5b60006122d4306111eb565b905060175481106122e457506017545b6018546016549082101590600160a01b900460ff1615801561230f5750601654600160a81b900460ff165b80156123185750805b801561235657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b1561237657612364826125cb565b478015612374576123744761285b565b505b6001600160a01b03851660009081526006602052604090205460019060ff16806123b857506001600160a01b03851660009081526006602052604090205460ff165b156123c1575060005b6123cd868686846128e0565b505050505050565b600081848411156124645760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612429578181015183820152602001612411565b50505050905090810190601f1680156124565780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000806000612479612a54565b9092509050612488828261248f565b9250505090565b60006124d183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bb7565b9392505050565b6000828201838110156124d1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008060008060008060008060006125498a612c1c565b925092509250600061255961246c565b9050600080600061256c8e878787612c5e565b919e509c509a509598509396509194505050505091939550919395565b60006124d183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506123d5565b6016805460ff60a01b1916600160a01b1790556040805160028082526060808301845292602083019080368337019050509050308160008151811061260c57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561268557600080fd5b505afa158015612699573d6000803e3d6000fd5b505050506040513d60208110156126af57600080fd5b50518151829060019081106126c057fe5b60200260200101906001600160a01b031690816001600160a01b03168152505061270b307f000000000000000000000000000000000000000000000000000000000000000084611fc5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156127b0578181015183820152602001612798565b505050509050019650505050505050600060405180830381600087803b1580156127d957600080fd5b505af11580156127ed573d6000803e3d6000fd5b50506016805460ff60a01b1916905550505050565b60008261281157506000610b37565b8282028284828161281e57fe5b04146124d15760405162461bcd60e51b81526004018080602001828103825260218152602001806131156021913960400191505060405180910390fd5b6015546001600160a01b03166108fc61287583600261248f565b6040518115909202916000818181858888f1935050505015801561289d573d6000803e3d6000fd5b506016546001600160a01b03166108fc6128b883600261248f565b6040518115909202916000818181858888f19350505050158015611497573d6000803e3d6000fd5b806128ed576128ed612cae565b6001600160a01b03841660009081526007602052604090205460ff16801561292e57506001600160a01b03831660009081526007602052604090205460ff16155b156129435761293e848484612ce0565b612a41565b6001600160a01b03841660009081526007602052604090205460ff1615801561298457506001600160a01b03831660009081526007602052604090205460ff165b156129945761293e848484612e04565b6001600160a01b03841660009081526007602052604090205460ff161580156129d657506001600160a01b03831660009081526007602052604090205460ff16155b156129e65761293e848484612ead565b6001600160a01b03841660009081526007602052604090205460ff168015612a2657506001600160a01b03831660009081526007602052604090205460ff165b15612a365761293e848484612ef1565b612a41848484612ead565b80612a4e57612a4e612f64565b50505050565b600c54600b546000918291825b600854811015612b8557826003600060088481548110612a7d57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612ae25750816004600060088481548110612abb57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612af957600c54600b5494509450505050612bb3565b612b396003600060088481548110612b0d57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612589565b9250612b7b6004600060088481548110612b4f57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612589565b9150600101612a61565b50600b54600c54612b959161248f565b821015612bad57600c54600b54935093505050612bb3565b90925090505b9091565b60008183612c065760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612429578181015183820152602001612411565b506000838581612c1257fe5b0495945050505050565b600080600080612c2b85612f72565b90506000612c3886612f8e565b90506000612c5082612c4a8986612589565b90612589565b979296509094509092505050565b6000808080612c6d8886612802565b90506000612c7b8887612802565b90506000612c898888612802565b90506000612c9b82612c4a8686612589565b939b939a50919850919650505050505050565b601154158015612cbe5750601254155b15612cc857612cde565b6011805460135560128054601455600091829055555b565b600080600080600080612cf287612532565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612d249088612589565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054612d539087612589565b6001600160a01b03808b1660009081526003602052604080822093909355908a1681522054612d8290866124d8565b6001600160a01b038916600090815260036020526040902055612da481612faa565b612dae8483613033565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080612e1687612532565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150612e489087612589565b6001600160a01b03808b16600090815260036020908152604080832094909455918b16815260049091522054612e7e90846124d8565b6001600160a01b038916600090815260046020908152604080832093909355600390522054612d8290866124d8565b600080600080600080612ebf87612532565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150612d539087612589565b600080600080600080612f0387612532565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612f359088612589565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054612e489087612589565b601354601155601454601255565b6000610b3760646119286011548561280290919063ffffffff16565b6000610b3760646119286012548561280290919063ffffffff16565b6000612fb461246c565b90506000612fc28383612802565b30600090815260036020526040902054909150612fdf90826124d8565b3060009081526003602090815260408083209390935560079052205460ff161561302e573060009081526004602052604090205461301d90846124d8565b306000908152600460205260409020555b505050565b600c546130409083612589565b600c55600d5461305090826124d8565b600d55505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f57652063616e206e6f7420626c61636b6c69737420556e697377617020726f757465722e45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220409718f45cbdf0f8336d06282514af847e1ec44f46e97241e6d9025d27e3394864736f6c634300060c00330000000000000000000000007e26eefc31273a1f577c679a3d5b8c7ec61d0063000000000000000000000000a0b3fac9ff77c0aa9abce68d5aade3e0e292fd47
Deployed Bytecode
0x6080604052600436106102815760003560e01c80637ded4d6a1161014f578063d543dbeb116100c1578063f2cc0c181161007a578063f2cc0c181461099c578063f2fde38b146109cf578063f429389014610a02578063f815a84214610a17578063f84354f114610a2c578063fee8f1a514610a5f57610288565b8063d543dbeb14610899578063dd467064146108c3578063dd62ed3e146108ed578063e01af92c14610928578063e47d606014610954578063ea8846131461098757610288565b8063a69df4b511610113578063a69df4b514610749578063a9059cbb1461075e578063af9549e014610797578063b6c52324146107d2578063c492f046146107e7578063cba0e9961461086657610288565b80637ded4d6a146106805780638da5cb5b146106b35780638e522925146106c857806395d89b41146106fb578063a457c2d71461071057610288565b80633bd5d173116101f35780635342acb4116101ac5780635342acb4146105b15780635880b873146105e45780636ddd17131461060e57806370a0823114610623578063715018a6146106565780637d1db4a51461066b57610288565b80633bd5d173146104e35780634144d9e41461050d5780634303443d146105225780634549b0391461055557806349bd5a5e1461058757806351bc3c851461059c57610288565b806318160ddd1161024557806318160ddd146103e857806323b872dd146103fd5780632d83811914610440578063313ce5671461046a57806339509351146104955780633b124fe7146104ce57610288565b806306fdde031461028d578063095ea7b3146103175780630d3672e81461036457806313114a9d146103905780631694505e146103b757610288565b3661028857005b600080fd5b34801561029957600080fd5b506102a2610a89565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102dc5781810151838201526020016102c4565b50505050905090810190601f1680156103095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561032357600080fd5b506103506004803603604081101561033a57600080fd5b506001600160a01b038135169060200135610b1f565b604080519115158252519081900360200190f35b34801561037057600080fd5b5061038e6004803603602081101561038757600080fd5b5035610b3d565b005b34801561039c57600080fd5b506103a5610bf0565b60408051918252519081900360200190f35b3480156103c357600080fd5b506103cc610bf6565b604080516001600160a01b039092168252519081900360200190f35b3480156103f457600080fd5b506103a5610c1a565b34801561040957600080fd5b506103506004803603606081101561042057600080fd5b506001600160a01b03813581169160208101359091169060400135610c20565b34801561044c57600080fd5b506103a56004803603602081101561046357600080fd5b5035610ca7565b34801561047657600080fd5b5061047f610d09565b6040805160ff9092168252519081900360200190f35b3480156104a157600080fd5b50610350600480360360408110156104b857600080fd5b506001600160a01b038135169060200135610d12565b3480156104da57600080fd5b506103a5610d60565b3480156104ef57600080fd5b5061038e6004803603602081101561050657600080fd5b5035610d66565b34801561051957600080fd5b506103cc610e40565b34801561052e57600080fd5b5061038e6004803603602081101561054557600080fd5b50356001600160a01b0316610e4f565b34801561056157600080fd5b506103a56004803603604081101561057857600080fd5b50803590602001351515610fd7565b34801561059357600080fd5b506103cc611069565b3480156105a857600080fd5b5061038e61108d565b3480156105bd57600080fd5b50610350600480360360208110156105d457600080fd5b50356001600160a01b03166110fe565b3480156105f057600080fd5b5061038e6004803603602081101561060757600080fd5b503561111c565b34801561061a57600080fd5b506103506111db565b34801561062f57600080fd5b506103a56004803603602081101561064657600080fd5b50356001600160a01b03166111eb565b34801561066257600080fd5b5061038e61124d565b34801561067757600080fd5b506103a56112dd565b34801561068c57600080fd5b5061038e600480360360208110156106a357600080fd5b50356001600160a01b03166112e3565b3480156106bf57600080fd5b506103cc61149b565b3480156106d457600080fd5b5061038e600480360360208110156106eb57600080fd5b50356001600160a01b03166114aa565b34801561070757600080fd5b506102a2611524565b34801561071c57600080fd5b506103506004803603604081101561073357600080fd5b506001600160a01b038135169060200135611585565b34801561075557600080fd5b5061038e6115ed565b34801561076a57600080fd5b506103506004803603604081101561078157600080fd5b506001600160a01b0381351690602001356116db565b3480156107a357600080fd5b5061038e600480360360408110156107ba57600080fd5b506001600160a01b03813516906020013515156116ef565b3480156107de57600080fd5b506103a5611772565b3480156107f357600080fd5b5061038e6004803603604081101561080a57600080fd5b81019060208101813564010000000081111561082557600080fd5b82018360208201111561083757600080fd5b8035906020019184602083028401116401000000008311171561085957600080fd5b9193509150351515611778565b34801561087257600080fd5b506103506004803603602081101561088957600080fd5b50356001600160a01b0316611898565b3480156108a557600080fd5b5061038e600480360360208110156108bc57600080fd5b50356118b6565b3480156108cf57600080fd5b5061038e600480360360208110156108e657600080fd5b5035611934565b3480156108f957600080fd5b506103a56004803603604081101561091057600080fd5b506001600160a01b03813581169160200135166119d2565b34801561093457600080fd5b5061038e6004803603602081101561094b57600080fd5b503515156119fd565b34801561096057600080fd5b506103506004803603602081101561097757600080fd5b50356001600160a01b0316611a73565b34801561099357600080fd5b506103cc611a91565b3480156109a857600080fd5b5061038e600480360360208110156109bf57600080fd5b50356001600160a01b0316611aa0565b3480156109db57600080fd5b5061038e600480360360208110156109f257600080fd5b50356001600160a01b0316611c82565b348015610a0e57600080fd5b5061038e611d68565b348015610a2357600080fd5b506103a5611dca565b348015610a3857600080fd5b5061038e60048036036020811015610a4f57600080fd5b50356001600160a01b0316611dce565b348015610a6b57600080fd5b5061038e60048036036020811015610a8257600080fd5b5035611f64565b600e8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b155780601f10610aea57610100808354040283529160200191610b15565b820191906000526020600020905b815481529060010190602001808311610af857829003601f168201915b5050505050905090565b6000610b33610b2c611fc1565b8484611fc5565b5060015b92915050565b610b45611fc1565b6000546001600160a01b03908116911614610b95576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b6028811115610beb576040805162461bcd60e51b815260206004820152601b60248201527f50756e6b4665652073686f756c6420626520696e2031202d2034300000000000604482015290519081900360640190fd5b601255565b600d5490565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b600b5490565b6000610c2d8484846120b1565b610c9d84610c39611fc1565b610c9885604051806060016040528060288152602001613136602891396001600160a01b038a16600090815260056020526040812090610c77611fc1565b6001600160a01b0316815260208101919091526040016000205491906123d5565b611fc5565b5060019392505050565b6000600c54821115610cea5760405162461bcd60e51b815260040180806020018281038252602a81526020018061307b602a913960400191505060405180910390fd5b6000610cf461246c565b9050610d00838261248f565b9150505b919050565b60105460ff1690565b6000610b33610d1f611fc1565b84610c988560056000610d30611fc1565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906124d8565b60115481565b6000610d70611fc1565b6001600160a01b03811660009081526007602052604090205490915060ff1615610dcb5760405162461bcd60e51b815260040180806020018281038252602c815260200180613256602c913960400191505060405180910390fd5b6000610dd683612532565b505050506001600160a01b038416600090815260036020526040902054919250610e0291905082612589565b6001600160a01b038316600090815260036020526040902055600c54610e289082612589565b600c55600d54610e3890846124d8565b600d55505050565b6016546001600160a01b031681565b610e57611fc1565b6000546001600160a01b03908116911614610ea7576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415610f035760405162461bcd60e51b81526004018080602001828103825260248152602001806131c76024913960400191505060405180910390fd5b6001600160a01b03811660009081526009602052604090205460ff1615610f71576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c69737465640000604482015290519081900360640190fd5b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6000600b54831115611030576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b8161104f57600061104084612532565b50939550610b37945050505050565b600061105a84612532565b50929550610b37945050505050565b7f000000000000000000000000dd62297e29a06879e56187abb84975578e045ee181565b611095611fc1565b6000546001600160a01b039081169116146110e5576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b60006110f0306111eb565b90506110fb816125cb565b50565b6001600160a01b031660009081526006602052604090205460ff1690565b611124611fc1565b6000546001600160a01b03908116911614611174576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b60648111156111ca576040805162461bcd60e51b815260206004820152601a60248201527f7461784665652073686f756c6420626520696e2031202d203130000000000000604482015290519081900360640190fd5b6111d581600a61248f565b60115550565b601654600160a81b900460ff1681565b6001600160a01b03811660009081526007602052604081205460ff161561122b57506001600160a01b038116600090815260046020526040902054610d04565b6001600160a01b038216600090815260036020526040902054610b3790610ca7565b611255611fc1565b6000546001600160a01b039081169116146112a5576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b600080546040516001600160a01b039091169060008051602061317e833981519152908390a3600080546001600160a01b0319169055565b60175481565b6112eb611fc1565b6000546001600160a01b0390811691161461133b576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526009602052604090205460ff166113a8576040805162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000604482015290519081900360640190fd5b60005b600a5481101561149757816001600160a01b0316600a82815481106113cc57fe5b6000918252602090912001546001600160a01b0316141561148f57600a805460001981019081106113f957fe5b600091825260209091200154600a80546001600160a01b03909216918390811061141f57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600990915260409020805460ff19169055600a80548061146857fe5b600082815260209020810160001990810180546001600160a01b0319169055019055611497565b6001016113ab565b5050565b6000546001600160a01b031690565b6114b2611fc1565b6000546001600160a01b03908116911614611502576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b601580546001600160a01b0319166001600160a01b0392909216919091179055565b600f8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b155780601f10610aea57610100808354040283529160200191610b15565b6000610b33611592611fc1565b84610c98856040518060600160405280602581526020016132a560259139600560006115bc611fc1565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906123d5565b6001546001600160a01b031633146116365760405162461bcd60e51b81526004018080602001828103825260238152602001806132826023913960400191505060405180910390fd5b600254421161168c576040805162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300604482015290519081900360640190fd5b600154600080546040516001600160a01b03938416939091169160008051602061317e83398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610b336116e8611fc1565b84846120b1565b6116f7611fc1565b6000546001600160a01b03908116911614611747576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b60025490565b611780611fc1565b6000546001600160a01b039081169116146117d0576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b60005b828110156118255781600660008686858181106117ec57fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff19169115159190911790556001016117d3565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b35838383604051808060200183151581526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b6001600160a01b031660009081526007602052604090205460ff1690565b6118be611fc1565b6000546001600160a01b0390811691161461190e576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b61192e606461192883600b5461280290919063ffffffff16565b9061248f565b60175550565b61193c611fc1565b6000546001600160a01b0390811691161461198c576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b60008054600180546001600160a01b03199081166001600160a01b03841617909155168155428201600255604051819060008051602061317e833981519152908290a350565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b611a05611fc1565b6000546001600160a01b03908116911614611a55576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b60168054911515600160a81b0260ff60a81b19909216919091179055565b6001600160a01b031660009081526009602052604090205460ff1690565b6015546001600160a01b031681565b611aa8611fc1565b6000546001600160a01b03908116911614611af8576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415611b545760405162461bcd60e51b81526004018080602001828103825260228152602001806132346022913960400191505060405180910390fd5b6001600160a01b03811660009081526007602052604090205460ff1615611bc2576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b03811660009081526003602052604090205415611c1c576001600160a01b038116600090815260036020526040902054611c0290610ca7565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b611c8a611fc1565b6000546001600160a01b03908116911614611cda576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b6001600160a01b038116611d1f5760405162461bcd60e51b81526004018080602001828103825260268152602001806130a56026913960400191505060405180910390fd5b600080546040516001600160a01b038085169392169160008051602061317e83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b611d70611fc1565b6000546001600160a01b03908116911614611dc0576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b476110fb8161285b565b4790565b611dd6611fc1565b6000546001600160a01b03908116911614611e26576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff16611e93576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b60085481101561149757816001600160a01b031660088281548110611eb757fe5b6000918252602090912001546001600160a01b03161415611f5c57600880546000198101908110611ee457fe5b600091825260209091200154600880546001600160a01b039092169183908110611f0a57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff19169055600880548061146857fe5b600101611e96565b611f6c611fc1565b6000546001600160a01b03908116911614611fbc576040805162461bcd60e51b8152602060048201819052602482015260008051602061315e833981519152604482015290519081900360640190fd5b601855565b3390565b6001600160a01b03831661200a5760405162461bcd60e51b81526004018080602001828103825260248152602001806132106024913960400191505060405180910390fd5b6001600160a01b03821661204f5760405162461bcd60e51b81526004018080602001828103825260228152602001806130cb6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166120f65760405162461bcd60e51b81526004018080602001828103825260258152602001806131eb6025913960400191505060405180910390fd5b6001600160a01b03821661213b5760405162461bcd60e51b81526004018080602001828103825260238152602001806130586023913960400191505060405180910390fd5b6000811161217a5760405162461bcd60e51b815260040180806020018281038252602981526020018061319e6029913960400191505060405180910390fd5b6001600160a01b03831660009081526009602052604090205460ff16156121e2576040805162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b604482015290519081900360640190fd5b3360009081526009602052604090205460ff1615612241576040805162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b604482015290519081900360640190fd5b61224961149b565b6001600160a01b0316836001600160a01b031614158015612283575061226d61149b565b6001600160a01b0316826001600160a01b031614155b156122c9576017548111156122c95760405162461bcd60e51b81526004018080602001828103825260288152602001806130ed6028913960400191505060405180910390fd5b60006122d4306111eb565b905060175481106122e457506017545b6018546016549082101590600160a01b900460ff1615801561230f5750601654600160a81b900460ff165b80156123185750805b801561235657507f000000000000000000000000dd62297e29a06879e56187abb84975578e045ee16001600160a01b0316856001600160a01b031614155b1561237657612364826125cb565b478015612374576123744761285b565b505b6001600160a01b03851660009081526006602052604090205460019060ff16806123b857506001600160a01b03851660009081526006602052604090205460ff165b156123c1575060005b6123cd868686846128e0565b505050505050565b600081848411156124645760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612429578181015183820152602001612411565b50505050905090810190601f1680156124565780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000806000612479612a54565b9092509050612488828261248f565b9250505090565b60006124d183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bb7565b9392505050565b6000828201838110156124d1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008060008060008060008060006125498a612c1c565b925092509250600061255961246c565b9050600080600061256c8e878787612c5e565b919e509c509a509598509396509194505050505091939550919395565b60006124d183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506123d5565b6016805460ff60a01b1916600160a01b1790556040805160028082526060808301845292602083019080368337019050509050308160008151811061260c57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561268557600080fd5b505afa158015612699573d6000803e3d6000fd5b505050506040513d60208110156126af57600080fd5b50518151829060019081106126c057fe5b60200260200101906001600160a01b031690816001600160a01b03168152505061270b307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611fc5565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156127b0578181015183820152602001612798565b505050509050019650505050505050600060405180830381600087803b1580156127d957600080fd5b505af11580156127ed573d6000803e3d6000fd5b50506016805460ff60a01b1916905550505050565b60008261281157506000610b37565b8282028284828161281e57fe5b04146124d15760405162461bcd60e51b81526004018080602001828103825260218152602001806131156021913960400191505060405180910390fd5b6015546001600160a01b03166108fc61287583600261248f565b6040518115909202916000818181858888f1935050505015801561289d573d6000803e3d6000fd5b506016546001600160a01b03166108fc6128b883600261248f565b6040518115909202916000818181858888f19350505050158015611497573d6000803e3d6000fd5b806128ed576128ed612cae565b6001600160a01b03841660009081526007602052604090205460ff16801561292e57506001600160a01b03831660009081526007602052604090205460ff16155b156129435761293e848484612ce0565b612a41565b6001600160a01b03841660009081526007602052604090205460ff1615801561298457506001600160a01b03831660009081526007602052604090205460ff165b156129945761293e848484612e04565b6001600160a01b03841660009081526007602052604090205460ff161580156129d657506001600160a01b03831660009081526007602052604090205460ff16155b156129e65761293e848484612ead565b6001600160a01b03841660009081526007602052604090205460ff168015612a2657506001600160a01b03831660009081526007602052604090205460ff165b15612a365761293e848484612ef1565b612a41848484612ead565b80612a4e57612a4e612f64565b50505050565b600c54600b546000918291825b600854811015612b8557826003600060088481548110612a7d57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612ae25750816004600060088481548110612abb57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612af957600c54600b5494509450505050612bb3565b612b396003600060088481548110612b0d57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612589565b9250612b7b6004600060088481548110612b4f57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612589565b9150600101612a61565b50600b54600c54612b959161248f565b821015612bad57600c54600b54935093505050612bb3565b90925090505b9091565b60008183612c065760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612429578181015183820152602001612411565b506000838581612c1257fe5b0495945050505050565b600080600080612c2b85612f72565b90506000612c3886612f8e565b90506000612c5082612c4a8986612589565b90612589565b979296509094509092505050565b6000808080612c6d8886612802565b90506000612c7b8887612802565b90506000612c898888612802565b90506000612c9b82612c4a8686612589565b939b939a50919850919650505050505050565b601154158015612cbe5750601254155b15612cc857612cde565b6011805460135560128054601455600091829055555b565b600080600080600080612cf287612532565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612d249088612589565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054612d539087612589565b6001600160a01b03808b1660009081526003602052604080822093909355908a1681522054612d8290866124d8565b6001600160a01b038916600090815260036020526040902055612da481612faa565b612dae8483613033565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080612e1687612532565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150612e489087612589565b6001600160a01b03808b16600090815260036020908152604080832094909455918b16815260049091522054612e7e90846124d8565b6001600160a01b038916600090815260046020908152604080832093909355600390522054612d8290866124d8565b600080600080600080612ebf87612532565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150612d539087612589565b600080600080600080612f0387612532565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612f359088612589565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054612e489087612589565b601354601155601454601255565b6000610b3760646119286011548561280290919063ffffffff16565b6000610b3760646119286012548561280290919063ffffffff16565b6000612fb461246c565b90506000612fc28383612802565b30600090815260036020526040902054909150612fdf90826124d8565b3060009081526003602090815260408083209390935560079052205460ff161561302e573060009081526004602052604090205461301d90846124d8565b306000908152600460205260409020555b505050565b600c546130409083612589565b600c55600d5461305090826124d8565b600d55505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f57652063616e206e6f7420626c61636b6c69737420556e697377617020726f757465722e45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220409718f45cbdf0f8336d06282514af847e1ec44f46e97241e6d9025d27e3394864736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007e26eefc31273a1f577c679a3d5b8c7ec61d0063000000000000000000000000a0b3fac9ff77c0aa9abce68d5aade3e0e292fd47
-----Decoded View---------------
Arg [0] : PunkWalletAddress (address): 0x7e26eefC31273A1f577C679A3D5b8c7Ec61d0063
Arg [1] : marketingWalletAddress (address): 0xa0b3faC9FF77C0AA9ABCe68D5aADe3E0E292FD47
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007e26eefc31273a1f577c679a3d5b8c7ec61d0063
Arg [1] : 000000000000000000000000a0b3fac9ff77c0aa9abce68d5aade3e0e292fd47
Deployed Bytecode Sourcemap
27352:21388:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30566:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31570:173;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;31570:173:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;48384:188;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;48384:188:0;;:::i;:::-;;33374:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;28925:51;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;28925:51:0;;;;;;;;;;;;;;30879:103;;;;;;;;;;;;;:::i;31755:329::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;31755:329:0;;;;;;;;;;;;;;;;;:::i;34382:269::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34382:269:0;;:::i;30776:91::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32096:230;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;32096:230:0;;;;;;;;:::i;28629:26::-;;;;;;;;;;;;;:::i;33481:405::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33481:405:0;;:::i;28866:46::-;;;;;;;;;;;;;:::i;35684:372::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35684:372:0;-1:-1:-1;;;;;35684:372:0;;:::i;33898:472::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33898:472:0;;;;;;;;;:::i;28987:38::-;;;;;;;;;;;;;:::i;41039:168::-;;;;;;;;;;;;;:::i;37009:131::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37009:131:0;-1:-1:-1;;;;;37009:131:0;;:::i;48182:190::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;48182:190:0;;:::i;29068:30::-;;;;;;;;;;;;;:::i;30994:210::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30994:210:0;-1:-1:-1;;;;;30994:210:0;;:::i;17198:160::-;;;;;;;;;;;;;:::i;29111:42::-;;;;;;;;;;;;;:::i;36068:540::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36068:540:0;-1:-1:-1;;;;;36068:540:0;;:::i;16496:87::-;;;;;;;;;;;;;:::i;48584:145::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;48584:145:0;-1:-1:-1;;;;;48584:145:0;;:::i;30669:95::-;;;;;;;;;;;;;:::i;32338:281::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;32338:281:0;;;;;;;;:::i;18297:313::-;;;;;;;;;;;;;:::i;31216:179::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;31216:179:0;;;;;;;;:::i;32900:145::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;32900:145:0;;;;;;;;;;:::i;17802:97::-;;;;;;;;;;;;;:::i;33057:303::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33057:303:0;-1:-1:-1;33057:303:0;;;;:::i;32631:118::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32631:118:0;-1:-1:-1;;;;;32631:118:0;;:::i;37156:166::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37156:166:0;;:::i;17983:234::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17983:234:0;;:::i;31407:151::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;31407:151:0;;;;;;;;;;:::i;41399:106::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;41399:106:0;;;;:::i;32761:127::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32761:127:0;-1:-1:-1;;;;;32761:127:0;;:::i;28814:41::-;;;;;;;;;;;;;:::i;34663:475::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34663:475:0;-1:-1:-1;;;;;34663:475:0;;:::i;17530:260::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17530:260:0;-1:-1:-1;;;;;17530:260:0;;:::i;41219:168::-;;;;;;;;;;;;;:::i;48052:118::-;;;;;;;;;;;;;:::i;35150:522::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35150:522:0;-1:-1:-1;;;;;35150:522:0;;:::i;37339:177::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37339:177:0;;:::i;30566:91::-;30640:5;30633:12;;;;;;;;-1:-1:-1;;30633:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30603:13;;30633:12;;30640:5;;30633:12;;30640:5;30633:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30566:91;:::o;31570:173::-;31645:4;31666:39;31675:12;:10;:12::i;:::-;31689:7;31698:6;31666:8;:39::i;:::-;-1:-1:-1;31727:4:0;31570:173;;;;;:::o;48384:188::-;16744:12;:10;:12::i;:::-;16734:6;;-1:-1:-1;;;;;16734:6:0;;;:22;;;16726:67;;;;;-1:-1:-1;;;16726:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16726:67:0;;;;;;;;;;;;;;;48493:2:::1;48482:7;:13;;48458:69;;;::::0;;-1:-1:-1;;;48458:69:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;48542:8;:18:::0;48384:188::o;33374:95::-;33447:10;;33374:95;:::o;28925:51::-;;;:::o;30879:103::-;30963:7;;30879:103;:::o;31755:329::-;31853:4;31874:36;31884:6;31892:9;31903:6;31874:9;:36::i;:::-;31925:121;31934:6;31942:12;:10;:12::i;:::-;31956:89;31994:6;31956:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31956:19:0;;;;;;:11;:19;;;;;;31976:12;:10;:12::i;:::-;-1:-1:-1;;;;;31956:33:0;;;;;;;;;;;;-1:-1:-1;31956:33:0;;;:89;:37;:89::i;:::-;31925:8;:121::i;:::-;-1:-1:-1;32068:4:0;31755:329;;;;;:::o;34382:269::-;34448:7;34491;;34480;:18;;34472:73;;;;-1:-1:-1;;;34472:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34560:19;34583:10;:8;:10::i;:::-;34560:33;-1:-1:-1;34615:24:0;:7;34560:33;34615:11;:24::i;:::-;34608:31;;;34382:269;;;;:::o;30776:91::-;30846:9;;;;30776:91;:::o;32096:230::-;32184:4;32205:83;32214:12;:10;:12::i;:::-;32228:7;32237:50;32276:10;32237:11;:25;32249:12;:10;:12::i;:::-;-1:-1:-1;;;;;32237:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;32237:25:0;;;:34;;;;;;;;;;;:38;:50::i;28629:26::-;;;;:::o;33481:405::-;33537:14;33554:12;:10;:12::i;:::-;-1:-1:-1;;;;;33590:19:0;;;;;;:11;:19;;;;;;33537:29;;-1:-1:-1;33590:19:0;;33589:20;33581:77;;;;-1:-1:-1;;;33581:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33674:15;33698:19;33709:7;33698:10;:19::i;:::-;-1:-1:-1;;;;;;;;;33750:15:0;;;;;;:7;:15;;;;;;33673:44;;-1:-1:-1;33750:28:0;;:15;-1:-1:-1;33673:44:0;33750:19;:28::i;:::-;-1:-1:-1;;;;;33732:15:0;;;;;;:7;:15;;;;;:46;33803:7;;:20;;33815:7;33803:11;:20::i;:::-;33793:7;:30;33851:10;;:23;;33866:7;33851:14;:23::i;:::-;33838:10;:36;-1:-1:-1;;;33481:405:0:o;28866:46::-;;;-1:-1:-1;;;;;28866:46:0;;:::o;35684:372::-;16744:12;:10;:12::i;:::-;16734:6;;-1:-1:-1;;;;;16734:6:0;;;:22;;;16726:67;;;;;-1:-1:-1;;;16726:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16726:67:0;;;;;;;;;;;;;;;35783:42:::1;-1:-1:-1::0;;;;;35772:53:0;::::1;;;35764:102;;;;-1:-1:-1::0;;;35764:102:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;35890:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;35889:27;35881:70;;;::::0;;-1:-1:-1;;;35881:70:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;35966:26:0::1;;::::0;;;:17:::1;:26;::::0;;;;:33;;-1:-1:-1;;35966:33:0::1;35995:4;35966:33:::0;;::::1;::::0;;;36014:16:::1;:30:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;36014:30:0::1;::::0;;::::1;::::0;;35684:372::o;33898:472::-;33988:7;34031;;34020;:18;;34012:62;;;;;-1:-1:-1;;;34012:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;34094:17;34089:270;;34133:15;34157:19;34168:7;34157:10;:19::i;:::-;-1:-1:-1;34132:44:0;;-1:-1:-1;34195:14:0;;-1:-1:-1;;;;;34195:14:0;34089:270;34252:23;34283:19;34294:7;34283:10;:19::i;:::-;-1:-1:-1;34250:52:0;;-1:-1:-1;34321:22:0;;-1:-1:-1;;;;;34321:22:0;28987:38;;;:::o;41039:168::-;16744:12;:10;:12::i;:::-;16734:6;;-1:-1:-1;;;;;16734:6:0;;;:22;;;16726:67;;;;;-1:-1:-1;;;16726:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16726:67:0;;;;;;;;;;;;;;;41097:23:::1;41123:24;41141:4;41123:9;:24::i;:::-;41097:50;;41162:33;41179:15;41162:16;:33::i;:::-;16808:1;41039:168::o:0;37009:131::-;-1:-1:-1;;;;;37101:27:0;37073:4;37101:27;;;:18;:27;;;;;;;;;37009:131::o;48182:190::-;16744:12;:10;:12::i;:::-;16734:6;;-1:-1:-1;;;;;16734:6:0;;;:22;;;16726:67;;;;;-1:-1:-1;;;16726:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16726:67:0;;;;;;;;;;;;;;;48287:3:::1;48277:6;:13;;48254:67;;;::::0;;-1:-1:-1;;;48254:67:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;48346:14;:6:::0;48357:2:::1;48346:10;:14::i;:::-;48336:7;:24:::0;-1:-1:-1;48182:190:0:o;29068:30::-;;;-1:-1:-1;;;29068:30:0;;;;;:::o;30994:210::-;-1:-1:-1;;;;;31088:20:0;;31060:7;31088:20;;;:11;:20;;;;;;;;31084:49;;;-1:-1:-1;;;;;;31117:16:0;;;;;;:7;:16;;;;;;31110:23;;31084:49;-1:-1:-1;;;;;31175:16:0;;;;;;:7;:16;;;;;;31155:37;;:19;:37::i;17198:160::-;16744:12;:10;:12::i;:::-;16734:6;;-1:-1:-1;;;;;16734:6:0;;;:22;;;16726:67;;;;;-1:-1:-1;;;16726:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16726:67:0;;;;;;;;;;;;;;;17309:1:::1;17293:6:::0;;17272:40:::1;::::0;-1:-1:-1;;;;;17293:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;17272:40:0;17309:1;;17272:40:::1;17344:1;17327:19:::0;;-1:-1:-1;;;;;;17327:19:0::1;::::0;;17198:160::o;29111:42::-;;;;:::o;36068:540::-;16744:12;:10;:12::i;:::-;16734:6;;-1:-1:-1;;;;;16734:6:0;;;:22;;;16726:67;;;;;-1:-1:-1;;;16726:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16726:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;36161:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;36153:65;;;::::0;;-1:-1:-1;;;36153:65:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;36238:9;36233:364;36257:16;:23:::0;36253:27;::::1;36233:364;;;36333:7;-1:-1:-1::0;;;;;36310:30:0::1;:16;36327:1;36310:19;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;36310:19:0::1;:30;36306:276;;;36387:16;36404:23:::0;;-1:-1:-1;;36404:27:0;;;36387:45;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;36365:16:::1;:19:::0;;-1:-1:-1;;;;;36387:45:0;;::::1;::::0;36382:1;;36365:19;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:67:::0;;-1:-1:-1;;;;;;36365:67:0::1;-1:-1:-1::0;;;;;36365:67:0;;::::1;;::::0;;36455:26;;::::1;::::0;;:17:::1;:26:::0;;;;;;:34;;-1:-1:-1;;36455:34:0::1;::::0;;36512:16:::1;:22:::0;;;::::1;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;36512:22:0;;;;;-1:-1:-1;;;;;;36512:22:0::1;::::0;;;;;36557:5:::1;;36306:276;36282:3;;36233:364;;;;36068:540:::0;:::o;16496:87::-;16534:7;16565:6;-1:-1:-1;;;;;16565:6:0;16496:87;:::o;48584:145::-;16744:12;:10;:12::i;:::-;16734:6;;-1:-1:-1;;;;;16734:6:0;;;:22;;;16726:67;;;;;-1:-1:-1;;;16726:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16726:67:0;;;;;;;;;;;;;;;48679:18:::1;:38:::0;;-1:-1:-1;;;;;;48679:38:0::1;-1:-1:-1::0;;;;;48679:38:0;;;::::1;::::0;;;::::1;::::0;;48584:145::o;30669:95::-;30745:7;30738:14;;;;;;;;-1:-1:-1;;30738:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30708:13;;30738:14;;30745:7;;30738:14;;30745:7;30738:14;;;;;;;;;;;;;;;;;;;;;;;;32338:281;32431:4;32452:129;32461:12;:10;:12::i;:::-;32475:7;32484:96;32523:15;32484:96;;;;;;;;;;;;;;;;;:11;:25;32496:12;:10;:12::i;:::-;-1:-1:-1;;;;;32484:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;32484:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;18297:313::-;18353:14;;-1:-1:-1;;;;;18353:14:0;18371:10;18353:28;18345:76;;;;-1:-1:-1;;;18345:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18450:9;;18444:3;:15;18436:60;;;;;-1:-1:-1;;;18436:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18545:14;;;18537:6;;18516:44;;-1:-1:-1;;;;;18545:14:0;;;;18537:6;;;;-1:-1:-1;;;;;;;;;;;18516:44:0;;18584:14;;;18575:23;;-1:-1:-1;;;;;;18575:23:0;-1:-1:-1;;;;;18584:14:0;;;18575:23;;;;;;18297:313::o;31216:179::-;31294:4;31315:42;31325:12;:10;:12::i;:::-;31339:9;31350:6;31315:9;:42::i;32900:145::-;16744:12;:10;:12::i;:::-;16734:6;;-1:-1:-1;;;;;16734:6:0;;;:22;;;16726:67;;;;;-1:-1:-1;;;16726:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16726:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;32995:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:38;;-1:-1:-1;;32995:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;32900:145::o;17802:97::-;17878:9;;17802:97;:::o;33057:303::-;16744:12;:10;:12::i;:::-;16734:6;;-1:-1:-1;;;;;16734:6:0;;;:22;;;16726:67;;;;;-1:-1:-1;;;16726:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16726:67:0;;;;;;;;;;;;;;;33172:9:::1;33168:110;33187:19:::0;;::::1;33168:110;;;33260:8;33226:18;:31;33245:8;;33254:1;33245:11;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;33245:11:0::1;33226:31:::0;;-1:-1:-1;33226:31:0;::::1;::::0;;;;;;-1:-1:-1;33226:31:0;:42;;-1:-1:-1;;33226:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;33208:3:0::1;33168:110;;;;33299:51;33331:8;;33341;33299:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;33299:51:0::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;33299:51:0;;-1:-1:-1;;;;;33299:51:0::1;33057:303:::0;;;:::o;32631:118::-;-1:-1:-1;;;;;32717:20:0;32689:4;32717:20;;;:11;:20;;;;;;;;;32631:118::o;37156:166::-;16744:12;:10;:12::i;:::-;16734:6;;-1:-1:-1;;;;;16734:6:0;;;:22;;;16726:67;;;;;-1:-1:-1;;;16726:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16726:67:0;;;;;;;;;;;;;;;37250:60:::1;37294:5;37250:25;37262:12;37250:7;;:11;;:25;;;;:::i;:::-;:29:::0;::::1;:60::i;:::-;37235:12;:75:::0;-1:-1:-1;37156:166:0:o;17983:234::-;16744:12;:10;:12::i;:::-;16734:6;;-1:-1:-1;;;;;16734:6:0;;;:22;;;16726:67;;;;;-1:-1:-1;;;16726:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16726:67:0;;;;;;;;;;;;;;;18068:6:::1;::::0;;;18051:23;;-1:-1:-1;;;;;;18051:23:0;;::::1;-1:-1:-1::0;;;;;18068:6:0;::::1;18051:23;::::0;;;18089:19:::1;::::0;;18135:3:::1;:10:::0;::::1;18123:9;:22:::0;18165:40:::1;::::0;18068:6;;-1:-1:-1;;;;;;;;;;;18165:40:0;18068:6;;18165:40:::1;17983:234:::0;:::o;31407:151::-;-1:-1:-1;;;;;31519:18:0;;;31488:7;31519:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;31407:151::o;41399:106::-;16744:12;:10;:12::i;:::-;16734:6;;-1:-1:-1;;;;;16734:6:0;;;:22;;;16726:67;;;;;-1:-1:-1;;;16726:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16726:67:0;;;;;;;;;;;;;;;41472:11:::1;:21:::0;;;::::1;;-1:-1:-1::0;;;41472:21:0::1;-1:-1:-1::0;;;;41472:21:0;;::::1;::::0;;;::::1;::::0;;41399:106::o;32761:127::-;-1:-1:-1;;;;;32850:26:0;32822:4;32850:26;;;:17;:26;;;;;;;;;32761:127::o;28814:41::-;;;-1:-1:-1;;;;;28814:41:0;;:::o;34663:475::-;16744:12;:10;:12::i;:::-;16734:6;;-1:-1:-1;;;;;16734:6:0;;;:22;;;16726:67;;;;;-1:-1:-1;;;16726:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16726:67:0;;;;;;;;;;;;;;;34759:42:::1;-1:-1:-1::0;;;;;34748:53:0;::::1;;;34740:100;;;;-1:-1:-1::0;;;34740:100:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;34864:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;34863:21;34855:61;;;::::0;;-1:-1:-1;;;34855:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;34934:16:0;::::1;34953:1;34934:16:::0;;;:7:::1;:16;::::0;;;;;:20;34931:116:::1;;-1:-1:-1::0;;;;;35014:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;34994:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;34975:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;34931:116:::1;-1:-1:-1::0;;;;;35061:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;35061:27:0::1;35084:4;35061:27:::0;;::::1;::::0;;;35103:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;35103:23:0::1;::::0;;::::1;::::0;;34663:475::o;17530:260::-;16744:12;:10;:12::i;:::-;16734:6;;-1:-1:-1;;;;;16734:6:0;;;:22;;;16726:67;;;;;-1:-1:-1;;;16726:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16726:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;17623:22:0;::::1;17615:73;;;;-1:-1:-1::0;;;17615:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17729:6;::::0;;17708:38:::1;::::0;-1:-1:-1;;;;;17708:38:0;;::::1;::::0;17729:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;17708:38:0;::::1;17761:6;:17:::0;;-1:-1:-1;;;;;;17761:17:0::1;-1:-1:-1::0;;;;;17761:17:0;;;::::1;::::0;;;::::1;::::0;;17530:260::o;41219:168::-;16744:12;:10;:12::i;:::-;16734:6;;-1:-1:-1;;;;;16734:6:0;;;:22;;;16726:67;;;;;-1:-1:-1;;;16726:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16726:67:0;;;;;;;;;;;;;;;41306:21:::1;41342:33;41306:21:::0;41342:13:::1;:33::i;48052:118::-:0;48137:21;48052:118;:::o;35150:522::-;16744:12;:10;:12::i;:::-;16734:6;;-1:-1:-1;;;;;16734:6:0;;;:22;;;16726:67;;;;;-1:-1:-1;;;16726:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16726:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;35235:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;35227:60;;;::::0;;-1:-1:-1;;;35227:60:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;35307:9;35302:359;35326:9;:16:::0;35322:20;::::1;35302:359;;;35388:7;-1:-1:-1::0;;;;;35372:23:0::1;:9;35382:1;35372:12;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;35372:12:0::1;:23;35368:278;;;35435:9;35445:16:::0;;-1:-1:-1;;35445:20:0;;;35435:31;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;35420:9:::1;:12:::0;;-1:-1:-1;;;;;35435:31:0;;::::1;::::0;35430:1;;35420:12;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;35420:46:0::1;-1:-1:-1::0;;;;;35420:46:0;;::::1;;::::0;;35489:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;35532:11:::1;:20:::0;;;;:28;;-1:-1:-1;;35532:28:0::1;::::0;;35583:9:::1;:15:::0;;;::::1;;;35368:278;35344:3;;35302:359;;37339:177:::0;16744:12;:10;:12::i;:::-;16734:6;;-1:-1:-1;;;;;16734:6:0;;;:22;;;16726:67;;;;;-1:-1:-1;;;16726:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16726:67:0;;;;;;;;;;;;;;;37444:29:::1;:60:::0;37339:177::o;953:114::-;1045:10;953:114;:::o;37528:357::-;-1:-1:-1;;;;;37625:19:0;;37617:68;;;;-1:-1:-1;;;37617:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37708:21:0;;37700:68;;;;-1:-1:-1;;;37700:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37785:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;37841:32;;;;;;;;;;;;;;;;;37528:357;;;:::o;37897:2122::-;-1:-1:-1;;;;;37998:20:0;;37990:70;;;;-1:-1:-1;;;37990:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;38083:23:0;;38075:71;;;;-1:-1:-1;;;38075:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38178:1;38169:6;:10;38161:64;;;;-1:-1:-1;;;38161:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;38249:25:0;;;;;;:17;:25;;;;;;;;38248:26;38240:62;;;;;-1:-1:-1;;;38240:62:0;;;;;;;;;;;;-1:-1:-1;;;38240:62:0;;;;;;;;;;;;;;;38344:10;38326:29;;;;:17;:29;;;;;;;;38325:30;38317:66;;;;;-1:-1:-1;;;38317:66:0;;;;;;;;;;;;-1:-1:-1;;;38317:66:0;;;;;;;;;;;;;;;38413:7;:5;:7::i;:::-;-1:-1:-1;;;;;38403:17:0;:6;-1:-1:-1;;;;;38403:17:0;;;:41;;;;;38437:7;:5;:7::i;:::-;-1:-1:-1;;;;;38424:20:0;:9;-1:-1:-1;;;;;38424:20:0;;;38403:41;38400:138;;;38481:12;;38471:6;:22;;38463:75;;;;-1:-1:-1;;;38463:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38821:28;38852:24;38870:4;38852:9;:24::i;:::-;38821:55;;38920:12;;38896:20;:36;38893:124;;-1:-1:-1;38989:12:0;;38893:124;39084:29;;39133:6;;39060:53;;;;;-1:-1:-1;;;39133:6:0;;;;39132:7;:22;;;;-1:-1:-1;39143:11:0;;-1:-1:-1;;;39143:11:0;;;;39132:22;:45;;;;;39158:19;39132:45;:72;;;;;39191:13;-1:-1:-1;;;;;39181:23:0;:6;-1:-1:-1;;;;;39181:23:0;;;39132:72;39128:436;;;39315:38;39332:20;39315:16;:38::i;:::-;39403:21;39446:22;;39443:106;;39493:36;39507:21;39493:13;:36::i;:::-;39128:436;;-1:-1:-1;;;;;39772:26:0;;39645:12;39772:26;;;:18;:26;;;;;;39660:4;;39772:26;;;:59;;-1:-1:-1;;;;;;39802:29:0;;;;;;:18;:29;;;;;;;;39772:59;39769:113;;;-1:-1:-1;39861:5:0;39769:113;39960:47;39975:6;39982:9;39992:6;39999:7;39960:14;:47::i;:::-;37897:2122;;;;;;:::o;5480:208::-;5566:7;5606:12;5598:6;;;;5590:29;;;;-1:-1:-1;;;5590:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5646:5:0;;;5480:208::o;47038:175::-;47079:7;47104:15;47121;47140:19;:17;:19::i;:::-;47103:56;;-1:-1:-1;47103:56:0;-1:-1:-1;47181:20:0;47103:56;;47181:11;:20::i;:::-;47174:27;;;;47038:175;:::o;7010:140::-;7068:7;7099:39;7103:1;7106;7099:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;7092:46;7010:140;-1:-1:-1;;;7010:140:0:o;4483:197::-;4541:7;4577:5;;;4605:6;;;;4597:46;;;;;-1:-1:-1;;;4597:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;45768:469;45827:7;45836;45845;45854;45863;45872;45897:23;45922:12;45936:13;45953:20;45965:7;45953:11;:20::i;:::-;45896:77;;;;;;45988:19;46011:10;:8;:10::i;:::-;45988:33;;46037:15;46054:23;46079:12;46095:46;46107:7;46116:4;46122:5;46129:11;46095;:46::i;:::-;46036:105;;-1:-1:-1;46036:105:0;-1:-1:-1;46036:105:0;-1:-1:-1;46196:15:0;;-1:-1:-1;46213:4:0;;-1:-1:-1;46219:5:0;;-1:-1:-1;;;;;45768:469:0;;;;;;;:::o;4998:144::-;5056:7;5087:43;5091:1;5094;5087:43;;;;;;;;;;;;;;;;;:3;:43::i;40031:656::-;29417:6;:13;;-1:-1:-1;;;;29417:13:0;-1:-1:-1;;;29417:13:0;;;40200:16:::1;::::0;;40214:1:::1;40200:16:::0;;;40176:21:::1;40200:16:::0;;::::1;::::0;;40176:21;40200:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;40200:16:0::1;40176:40;;40249:4;40231;40236:1;40231:7;;;;;;;;;;;;;:23;-1:-1:-1::0;;;;;40231:23:0::1;;;-1:-1:-1::0;;;;;40231:23:0::1;;;::::0;::::1;40279:15;-1:-1:-1::0;;;;;40279:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;40279:22:0;40269:7;;:4;;40274:1:::1;::::0;40269:7;::::1;;;;;;;;;;:32;-1:-1:-1::0;;;;;40269:32:0::1;;;-1:-1:-1::0;;;;;40269:32:0::1;;;::::0;::::1;40318:62;40335:4;40350:15;40368:11;40318:8;:62::i;:::-;40427:15;-1:-1:-1::0;;;;;40427:66:0::1;;40512:11;40542:1;40590:4;40621;40645:15;40427:248;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;40427:248:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;29461:6:0;:14;;-1:-1:-1;;;;29461:14:0;;;-1:-1:-1;;;;40031:656:0:o;5982:511::-;6040:7;6301:6;6297:55;;-1:-1:-1;6335:1:0;6328:8;;6297:55;6380:5;;;6384:1;6380;:5;:1;6408:5;;;;;:10;6400:56;;;;-1:-1:-1;;;6400:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40699:178;40761:18;;-1:-1:-1;;;;;40761:18:0;:42;40789:13;:6;40800:1;40789:10;:13::i;:::-;40761:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;40818:23:0;;-1:-1:-1;;;;;40818:23:0;:47;40851:13;:6;40862:1;40851:10;:13::i;:::-;40818:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41517:883;41633:7;41629:44;;41659:14;:12;:14::i;:::-;-1:-1:-1;;;;;41694:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;41718:22:0;;;;;;:11;:22;;;;;;;;41717:23;41694:46;41690:637;;;41761:48;41783:6;41791:9;41802:6;41761:21;:48::i;:::-;41690:637;;;-1:-1:-1;;;;;41836:19:0;;;;;;:11;:19;;;;;;;;41835:20;:46;;;;-1:-1:-1;;;;;;41859:22:0;;;;;;:11;:22;;;;;;;;41835:46;41831:496;;;41902:46;41922:6;41930:9;41941:6;41902:19;:46::i;41831:496::-;-1:-1:-1;;;;;41975:19:0;;;;;;:11;:19;;;;;;;;41974:20;:47;;;;-1:-1:-1;;;;;;41999:22:0;;;;;;:11;:22;;;;;;;;41998:23;41974:47;41970:357;;;42042:44;42060:6;42068:9;42079:6;42042:17;:44::i;41970:357::-;-1:-1:-1;;;;;42112:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;42135:22:0;;;;;;:11;:22;;;;;;;;42112:45;42108:219;;;42178:48;42200:6;42208:9;42219:6;42178:21;:48::i;42108:219::-;42267:44;42285:6;42293:9;42304:6;42267:17;:44::i;:::-;42347:7;42343:45;;42373:15;:13;:15::i;:::-;41517:883;;;;:::o;47225:595::-;47326:7;;47366;;47275;;;;;47388:305;47412:9;:16;47408:20;;47388:305;;;47482:7;47458;:21;47466:9;47476:1;47466:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;47466:12:0;47458:21;;;;;;;;;;;;;:31;;:66;;;47517:7;47493;:21;47501:9;47511:1;47501:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;47501:12:0;47493:21;;;;;;;;;;;;;:31;47458:66;47454:97;;;47534:7;;47543;;47526:25;;;;;;;;;47454:97;47580:34;47592:7;:21;47600:9;47610:1;47600:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;47600:12:0;47592:21;;;;;;;;;;;;;47580:7;;:11;:34::i;:::-;47570:44;;47643:34;47655:7;:21;47663:9;47673:1;47663:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;47663:12:0;47655:21;;;;;;;;;;;;;47643:7;;:11;:34::i;:::-;47633:44;-1:-1:-1;47430:3:0;;47388:305;;;-1:-1:-1;47733:7:0;;47721;;:20;;:11;:20::i;:::-;47711:7;:30;47707:61;;;47751:7;;47760;;47743:25;;;;;;;;47707:61;47791:7;;-1:-1:-1;47800:7:0;-1:-1:-1;47225:595:0;;;:::o;7687:298::-;7773:7;7812:12;7805:5;7797:28;;;;-1:-1:-1;;;7797:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7840:9;7856:1;7852;:5;;;;;;;7687:298;-1:-1:-1;;;;;7687:298:0:o;46249:330::-;46309:7;46318;46327;46351:12;46366:24;46382:7;46366:15;:24::i;:::-;46351:39;;46405:13;46421:25;46438:7;46421:16;:25::i;:::-;46405:41;-1:-1:-1;46461:23:0;46487:28;46405:41;46487:17;:7;46499:4;46487:11;:17::i;:::-;:21;;:28::i;:::-;46461:54;46555:4;;-1:-1:-1;46561:5:0;;-1:-1:-1;46249:330:0;;-1:-1:-1;;;46249:330:0:o;46591:435::-;46700:7;;;;46760:24;:7;46772:11;46760;:24::i;:::-;46742:42;-1:-1:-1;46799:12:0;46814:21;:4;46823:11;46814:8;:21::i;:::-;46799:36;-1:-1:-1;46853:13:0;46869:22;:5;46879:11;46869:9;:22::i;:::-;46853:38;-1:-1:-1;46906:23:0;46932:28;46853:38;46932:17;:7;46944:4;46932:11;:17::i;:28::-;46983:7;;;;-1:-1:-1;47009:4:0;;-1:-1:-1;46591:435:0;;-1:-1:-1;;;;;;;46591:435:0:o;36620:238::-;36670:7;;:12;:29;;;;-1:-1:-1;36686:8:0;;:13;36670:29;36667:41;;;36701:7;;36667:41;36742:7;;;36724:15;:25;36783:8;;;36764:16;:27;-1:-1:-1;36808:11:0;;;;36834:12;36620:238;:::o;43543:580::-;43650:15;43667:23;43692:12;43706:23;43731:12;43745:13;43762:19;43773:7;43762:10;:19::i;:::-;-1:-1:-1;;;;;43814:15:0;;;;;;:7;:15;;;;;;43649:132;;-1:-1:-1;43649:132:0;;-1:-1:-1;43649:132:0;;-1:-1:-1;43649:132:0;-1:-1:-1;43649:132:0;-1:-1:-1;43649:132:0;-1:-1:-1;43814:28:0;;43834:7;43814:19;:28::i;:::-;-1:-1:-1;;;;;43796:15:0;;;;;;:7;:15;;;;;;;;:46;;;;43875:7;:15;;;;:28;;43895:7;43875:19;:28::i;:::-;-1:-1:-1;;;;;43857:15:0;;;;;;;:7;:15;;;;;;:46;;;;43939:18;;;;;;;:39;;43962:15;43939:22;:39::i;:::-;-1:-1:-1;;;;;43918:18:0;;;;;;:7;:18;;;;;:60;43993:16;44003:5;43993:9;:16::i;:::-;44024:23;44036:4;44042;44024:11;:23::i;:::-;44084:9;-1:-1:-1;;;;;44067:44:0;44076:6;-1:-1:-1;;;;;44067:44:0;;44095:15;44067:44;;;;;;;;;;;;;;;;;;43543:580;;;;;;;;;:::o;42939:592::-;43044:15;43061:23;43086:12;43100:23;43125:12;43139:13;43156:19;43167:7;43156:10;:19::i;:::-;-1:-1:-1;;;;;43208:15:0;;;;;;:7;:15;;;;;;43043:132;;-1:-1:-1;43043:132:0;;-1:-1:-1;43043:132:0;;-1:-1:-1;43043:132:0;-1:-1:-1;43043:132:0;-1:-1:-1;43043:132:0;-1:-1:-1;43208:28:0;;43043:132;43208:19;:28::i;:::-;-1:-1:-1;;;;;43190:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;43272:18;;;;;:7;:18;;;;;:39;;43295:15;43272:22;:39::i;:::-;-1:-1:-1;;;;;43251:18:0;;;;;;:7;:18;;;;;;;;:60;;;;43347:7;:18;;;;:39;;43370:15;43347:22;:39::i;42412:515::-;42515:15;42532:23;42557:12;42571:23;42596:12;42610:13;42627:19;42638:7;42627:10;:19::i;:::-;-1:-1:-1;;;;;42679:15:0;;;;;;:7;:15;;;;;;42514:132;;-1:-1:-1;42514:132:0;;-1:-1:-1;42514:132:0;;-1:-1:-1;42514:132:0;-1:-1:-1;42514:132:0;-1:-1:-1;42514:132:0;-1:-1:-1;42679:28:0;;42514:132;42679:19;:28::i;44135:655::-;44242:15;44259:23;44284:12;44298:23;44323:12;44337:13;44354:19;44365:7;44354:10;:19::i;:::-;-1:-1:-1;;;;;44406:15:0;;;;;;:7;:15;;;;;;44241:132;;-1:-1:-1;44241:132:0;;-1:-1:-1;44241:132:0;;-1:-1:-1;44241:132:0;-1:-1:-1;44241:132:0;-1:-1:-1;44241:132:0;-1:-1:-1;44406:28:0;;44426:7;44406:19;:28::i;:::-;-1:-1:-1;;;;;44388:15:0;;;;;;:7;:15;;;;;;;;:46;;;;44467:7;:15;;;;:28;;44487:7;44467:19;:28::i;36870:127::-;36928:15;;36918:7;:25;36969:16;;36958:8;:27;36870:127::o;45165:154::-;45229:7;45256:55;45295:5;45256:20;45268:7;;45256;:11;;:20;;;;:::i;45327:156::-;45392:7;45419:56;45459:5;45419:21;45431:8;;45419:7;:11;;:21;;;;:::i;44802:349::-;44859:19;44882:10;:8;:10::i;:::-;44859:33;-1:-1:-1;44907:13:0;44923:22;:5;44859:33;44923:9;:22::i;:::-;45001:4;44985:22;;;;:7;:22;;;;;;44907:38;;-1:-1:-1;44985:33:0;;44907:38;44985:26;:33::i;:::-;44976:4;44960:22;;;;:7;:22;;;;;;;;:58;;;;45036:11;:26;;;;;;45033:106;;;45122:4;45106:22;;;;:7;:22;;;;;;:33;;45133:5;45106:26;:33::i;:::-;45097:4;45081:22;;;;:7;:22;;;;;:58;45033:106;44802:349;;;:::o;45495:159::-;45577:7;;:17;;45589:4;45577:11;:17::i;:::-;45567:7;:27;45622:10;;:20;;45637:4;45622:14;:20::i;:::-;45609:10;:33;-1:-1:-1;;45495:159:0:o
Swarm Source
ipfs://409718f45cbdf0f8336d06282514af847e1ec44f46e97241e6d9025d27e33948
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.