Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
987,149,397.584548208 KEYS
Holders
6,492
Market
Price
$0.00 @ 0.000000 ETH (+18.14%)
Onchain Market Cap
$783,105.62
Circulating Supply Market Cap
$0.00
Other Info
Token Contract (WITH 9 Decimals)
Balance
22,681.971509993 KEYSValue
$17.99 ( ~0.00690861409029518 Eth) [0.0023%]Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
KEYS
Compiler Version
v0.8.4+commit.c7e474f2
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: MIT pragma solidity 0.8.4; import "./SafeMath.sol"; import "./Address.sol"; import "./IERC20.sol"; import "./IUniswapV2Router02.sol"; /** * Contract: KEYS Token * Contract Developed By: DeFi Mark ( MoonMark ) * * Keys is a project aimed to create revolutionary blockchain products built * Around the exchange of luxury assets in both the metaverse and physical world * Exlusive only to $KEYS Token Holders * * Join us on Discord: * https://discord.gg/keystoken * */ contract KEYS is IERC20 { using SafeMath for uint256; using Address for address; // token data string constant _name = "Keys"; string constant _symbol = "KEYS"; uint8 constant _decimals = 9; // 1 Billion Starting Supply uint256 _totalSupply = 10**9 * 10**_decimals; // Bot Prevention uint256 maxTransfer; bool maxTransferCheckEnabled; // balances mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; // Fees uint256 public fee = 3; // 3% transfer fee // fee exemption for staking / utility mapping ( address => bool ) public isFeeExempt; // Uniswap Router IUniswapV2Router02 _router; // ETH -> Token address[] path; // Tokens -> ETH address[] sellPath; // owner address _owner; // multisignature wallet address _developmentFund; // Auto Swapper Enabled bool swapEnabled; modifier onlyOwner() { require(msg.sender == _owner, 'Only Owner Function'); _; } // initialize some stuff constructor () { // router _router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // ETH -> Token path = new address[](2); path[0] = _router.WETH(); path[1] = address(this); // Token -> ETH sellPath = new address[](2); sellPath[0] = address(this); sellPath[1] = _router.WETH(); // Dev Fund _developmentFund = 0xfCacEAa7b4cf845f2cfcE6a3dA680dF1BB05015c; // Enable Auto Swapper swapEnabled = true; // Anti-Bot Prevention maxTransfer = _totalSupply.div(100); maxTransferCheckEnabled = true; // fee exempt fund + owner + router for LP injection isFeeExempt[msg.sender] = true; isFeeExempt[_developmentFund] = true; isFeeExempt[address(this)] = true; // allocate tokens to owner _balances[msg.sender] = _totalSupply; // ownership _owner = msg.sender; // emit allocations emit Transfer(address(0), msg.sender, _totalSupply); } function totalSupply() external view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function name() public pure override returns (string memory) { return _name; } function symbol() public pure override returns (string memory) { return _symbol; } function decimals() public pure override returns (uint8) { return _decimals; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } /** Transfer Function */ function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } /** Transfer Function */ function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, 'Insufficient Allowance'); return _transferFrom(sender, recipient, amount); } /** Internal Transfer */ function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { // make standard checks require(recipient != address(0) && sender != address(0), "Transfer To Zero Address"); require(amount > 0, "Transfer amount must be greater than zero"); // check anti-bot if (maxTransferCheckEnabled && msg.sender != _owner) { require(amount <= maxTransfer, 'Maximum Transfer Threshold Reached'); } // subtract full amount from sender _balances[sender] = _balances[sender].sub(amount, 'Insufficient Balance'); // fee exempt bool takeFee = !( isFeeExempt[sender] || isFeeExempt[recipient] ); // calculate taxed amount uint256 taxAmount = takeFee ? amount.mul(fee).div(10**2) : 0; // amount to give to recipient (amount - tax) uint256 receiveAmount = amount.sub(taxAmount); // give potentially reduced amount to recipient _balances[recipient] = _balances[recipient].add(receiveAmount); emit Transfer(sender, recipient, receiveAmount); // allocate to marketing if (taxAmount > 0) { _balances[_developmentFund] = _balances[_developmentFund].add(taxAmount); emit Transfer(sender, _developmentFund, taxAmount); } return true; } function burnTokens(uint256 numTokens) external { _burnTokens(numTokens * 10**_decimals); } function burnAllTokens() external { _burnTokens(_balances[msg.sender]); } function burnTokensIncludingDecimals(uint256 numTokens) external { _burnTokens(numTokens); } function purchaseTokenForAddress(address receiver) external payable { require(msg.value >= 10**4, 'Amount Too Few'); _purchaseToken(receiver); } function sellTokensForETH(address receiver, uint256 numTokens) external { _sellTokensForETH(receiver, numTokens); } function sellTokensForETH(uint256 numTokens) external { _sellTokensForETH(msg.sender, numTokens); } function sellTokensForETHWholeTokenAmounts(uint256 numTokens) external { _sellTokensForETH(msg.sender, numTokens*10**_decimals); } /////////////////////////////////// ////// OWNER FUNCTIONS /////// /////////////////////////////////// function setUniswapRouterAddress(address router) external onlyOwner { _router = IUniswapV2Router02(router); emit SetUniswapRouterAddress(router); } function setSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; emit SetSwapEnabled(enabled); } /** Withdraws Tokens Mistakingly Sent To Contract */ function withdrawTokens(address token) external onlyOwner { uint256 bal = IERC20(token).balanceOf(address(this)); require(bal > 0, 'Zero Balance'); IERC20(token).transfer(msg.sender, bal); } /** Sets Maximum Transaction Data */ function setMaxTransactionData(bool checkEnabled, uint256 transferThreshold) external onlyOwner { if (checkEnabled) { require(transferThreshold >= _totalSupply.div(1000), 'Threshold Too Few'); } maxTransferCheckEnabled = checkEnabled; maxTransfer = transferThreshold; emit MaxTransactionDataSet(checkEnabled, transferThreshold); } /** Updates The Address Of The Development Fund Receiver */ function updateDevelopmentFundingAddress(address newFund) external onlyOwner { _developmentFund = newFund; emit UpdatedDevelopmentFundingAddress(newFund); } /** Excludes Contract From Fees */ function setFeeExemption(address wallet, bool exempt) external onlyOwner { require(wallet != address(0)); isFeeExempt[wallet] = exempt; emit SetFeeExemption(wallet, exempt); } /** Sets Transfer Fees */ function setFee(uint256 newFee) external onlyOwner { require(newFee <= 10, 'Fee Too High'); fee = newFee; emit SetFee(newFee); } /** Transfers Ownership To Another User */ function transferOwnership(address newOwner) external onlyOwner { _owner = newOwner; emit TransferOwnership(newOwner); } /** Transfers Ownership To Zero Address */ function renounceOwnership() external onlyOwner { _owner = address(0); emit TransferOwnership(address(0)); } /////////////////////////////////// ////// INTERNAL FUNCTIONS /////// /////////////////////////////////// function _sellTokensForETH(address receiver, uint256 numberTokens) internal { // checks require(_balances[msg.sender] >= numberTokens, 'Insufficient Balance'); require(receiver != address(this) && receiver != address(0), 'Insufficient Destination'); require(swapEnabled, 'Swapping Disabled'); // transfer in tokens _balances[msg.sender] = _balances[msg.sender].sub(numberTokens, 'Insufficient Balance'); // divvy up amount uint256 tax = isFeeExempt[msg.sender] ? 0 : numberTokens.mul(fee).div(10**2); // amount to send to recipient uint256 sendAmount = numberTokens.sub(tax); require(sendAmount > 0, 'Zero Tokens To Send'); // Allocate To Contract _balances[address(this)] = _balances[address(this)].add(sendAmount); emit Transfer(msg.sender, address(this), sendAmount); // Allocate Tax if (tax > 0) { _balances[_developmentFund] = _balances[_developmentFund].add(tax); emit Transfer(msg.sender, _developmentFund, tax); } // Approve Of Router To Move Tokens _allowances[address(this)][address(_router)] = sendAmount; // make the swap _router.swapExactTokensForETH( sendAmount, 0, sellPath, receiver, block.timestamp + 30 ); } function _purchaseToken(address receiver) internal { _router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}( 0, path, receiver, block.timestamp + 30 ); } function _burnTokens(uint256 numTokens) internal { require(_balances[msg.sender] >= numTokens && numTokens > 0, 'Insufficient Balance'); // remove from balance and supply _balances[msg.sender] = _balances[msg.sender].sub(numTokens, 'Insufficient Balance'); _totalSupply = _totalSupply.sub(numTokens, 'Insufficient Supply'); // emit transfer to zero emit Transfer(msg.sender, address(0), numTokens); } /** Purchase Tokens For Holder */ receive() external payable { _purchaseToken(msg.sender); } /////////////////////////////////// ////// EVENTS /////// /////////////////////////////////// event UpdatedDevelopmentFundingAddress(address newFund); event TransferOwnership(address newOwner); event SetSwapEnabled(bool enabled); event SetFee(uint256 newFee); event SetUniswapRouterAddress(address router); event SetFeeExemption(address Contract, bool exempt); event MaxTransactionDataSet(bool checkEnabled, uint256 transferThreshold); }
//SPDX-License-Identifier: MIT pragma solidity 0.8.4; 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; } }
//SPDX-License-Identifier: MIT pragma solidity 0.8.4; 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); } } } }
//SPDX-License-Identifier: MIT pragma solidity 0.8.4; interface IERC20 { function totalSupply() external view returns (uint256); function symbol() external view returns(string memory); function name() external view returns(string memory); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Returns the number of decimal places */ function decimals() external view returns (uint8); /** * @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); }
//SPDX-License-Identifier: MIT pragma solidity 0.8.4; 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; }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"checkEnabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"transferThreshold","type":"uint256"}],"name":"MaxTransactionDataSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"SetFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Contract","type":"address"},{"indexed":false,"internalType":"bool","name":"exempt","type":"bool"}],"name":"SetFeeExemption","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SetSwapEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"router","type":"address"}],"name":"SetUniswapRouterAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"TransferOwnership","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newFund","type":"address"}],"name":"UpdatedDevelopmentFundingAddress","type":"event"},{"inputs":[{"internalType":"address","name":"holder","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":"burnAllTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numTokens","type":"uint256"}],"name":"burnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numTokens","type":"uint256"}],"name":"burnTokensIncludingDecimals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"purchaseTokenForAddress","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"numTokens","type":"uint256"}],"name":"sellTokensForETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numTokens","type":"uint256"}],"name":"sellTokensForETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numTokens","type":"uint256"}],"name":"sellTokensForETHWholeTokenAmounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setFeeExemption","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"checkEnabled","type":"bool"},{"internalType":"uint256","name":"transferThreshold","type":"uint256"}],"name":"setMaxTransactionData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"}],"name":"setUniswapRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":[{"internalType":"address","name":"newFund","type":"address"}],"name":"updateDevelopmentFundingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526009600a62000014919062000aba565b633b9aca0062000025919062000bf7565b60005560036005553480156200003a57600080fd5b50737a250d5630b4cf539739df2c5dacb4c659f2488d600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600267ffffffffffffffff811115620000d2577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015620001015781602001602082028036833780820191505090505b50600890805190602001906200011992919062000887565b50600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200018357600080fd5b505afa15801562000198573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001be91906200094c565b6008600081548110620001fa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503060086001815481106200027f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600267ffffffffffffffff81111562000309577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015620003385781602001602082028036833780820191505090505b50600990805190602001906200035092919062000887565b503060096000815481106200038e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200043f57600080fd5b505afa15801562000454573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047a91906200094c565b6009600181548110620004b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073fcaceaa7b4cf845f2cfce6a3da680df1bb05015c600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60146101000a81548160ff0219169083151502179055506200058b6064600054620007cd60201b620016b11790919060201c565b6001819055506001600260006101000a81548160ff0219169083151502179055506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600054600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600054604051620007bf9190620009ee565b60405180910390a362000d6f565b60006200081783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200081f60201b60201c565b905092915050565b6000808311829062000869576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008609190620009ca565b60405180910390fd5b50600083856200087a919062000a27565b9050809150509392505050565b82805482825590600052602060002090810192821562000903579160200282015b82811115620009025782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190620008a8565b5b50905062000912919062000916565b5090565b5b808211156200093157600081600090555060010162000917565b5090565b600081519050620009468162000d55565b92915050565b6000602082840312156200095f57600080fd5b60006200096f8482850162000935565b91505092915050565b6000620009858262000a0b565b62000991818562000a16565b9350620009a381856020860162000ca3565b620009ae8162000d37565b840191505092915050565b620009c48162000c8c565b82525050565b60006020820190508181036000830152620009e6818462000978565b905092915050565b600060208201905062000a056000830184620009b9565b92915050565b600081519050919050565b600082825260208201905092915050565b600062000a348262000c8c565b915062000a418362000c8c565b92508262000a545762000a5362000d08565b5b828204905092915050565b6000808291508390505b600185111562000ab15780860481111562000a895762000a8862000cd9565b5b600185161562000a995780820291505b808102905062000aa98562000d48565b945062000a69565b94509492505050565b600062000ac78262000c8c565b915062000ad48362000c96565b925062000b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b0b565b905092915050565b60008262000b1d576001905062000bf0565b8162000b2d576000905062000bf0565b816001811462000b46576002811462000b515762000b87565b600191505062000bf0565b60ff84111562000b665762000b6562000cd9565b5b8360020a91508482111562000b805762000b7f62000cd9565b5b5062000bf0565b5060208310610133831016604e8410600b841016171562000bc15782820a90508381111562000bbb5762000bba62000cd9565b5b62000bf0565b62000bd0848484600162000a5f565b9250905081840481111562000bea5762000be962000cd9565b5b81810290505b9392505050565b600062000c048262000c8c565b915062000c118362000c8c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c4d5762000c4c62000cd9565b5b828202905092915050565b600062000c658262000c6c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101562000cc357808201518184015260208101905062000ca6565b8381111562000cd3576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b62000d608162000c58565b811462000d6c57600080fd5b50565b6139ab8062000d7f6000396000f3fe6080604052600436106101a05760003560e01c8063751fd179116100ec578063ddca3f431161008a578063f209d36511610064578063f209d365146105b5578063f2fde38b146105de578063f417fbed14610607578063ff329ca014610630576101b0565b8063ddca3f4314610545578063e01af92c14610570578063e3f241f814610599576101b0565b8063bd240bb7116100c6578063bd240bb71461049f578063c17e2aa1146104c8578063db15d185146104df578063dd62ed3e14610508576101b0565b8063751fd1791461040e57806395d89b4114610437578063a9059cbb14610462576101b0565b80633f4218e01161015957806369fe0e2d1161013357806369fe0e2d146103685780636d1b229d1461039157806370a08231146103ba578063715018a6146103f7576101b0565b80633f4218e0146102d957806349df728c14610316578063670ecb1c1461033f576101b0565b806306fdde03146101b5578063095ea7b3146101e057806318160ddd1461021d57806323b872dd14610248578063313ce5671461028557806336c1c541146102b0576101b0565b366101b0576101ae33610659565b005b600080fd5b3480156101c157600080fd5b506101ca6106fe565b6040516101d79190612f0d565b60405180910390f35b3480156101ec57600080fd5b50610207600480360381019061020291906129b9565b61073b565b6040516102149190612e7d565b60405180910390f35b34801561022957600080fd5b5061023261082d565b60405161023f91906130ef565b60405180910390f35b34801561025457600080fd5b5061026f600480360381019061026a919061292e565b610836565b60405161027c9190612e7d565b60405180910390f35b34801561029157600080fd5b5061029a610992565b6040516102a79190613164565b60405180910390f35b3480156102bc57600080fd5b506102d760048036038101906102d29190612ac4565b61099b565b005b3480156102e557600080fd5b5061030060048036038101906102fb91906128c9565b6109a7565b60405161030d9190612e7d565b60405180910390f35b34801561032257600080fd5b5061033d600480360381019061033891906128c9565b6109c7565b005b34801561034b57600080fd5b5061036660048036038101906103619190612ac4565b610bb9565b005b34801561037457600080fd5b5061038f600480360381019061038a9190612ac4565b610bde565b005b34801561039d57600080fd5b506103b860048036038101906103b39190612ac4565b610cf2565b005b3480156103c657600080fd5b506103e160048036038101906103dc91906128c9565b610d16565b6040516103ee91906130ef565b60405180910390f35b34801561040357600080fd5b5061040c610d5f565b005b34801561041a57600080fd5b506104356004803603810190610430919061297d565b610e6b565b005b34801561044357600080fd5b5061044c610fc9565b6040516104599190612f0d565b60405180910390f35b34801561046e57600080fd5b50610489600480360381019061048491906129b9565b611006565b6040516104969190612e7d565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c191906129b9565b61101b565b005b3480156104d457600080fd5b506104dd611029565b005b3480156104eb57600080fd5b50610506600480360381019061050191906128c9565b611073565b005b34801561051457600080fd5b5061052f600480360381019061052a91906128f2565b61117e565b60405161053c91906130ef565b60405180910390f35b34801561055157600080fd5b5061055a611205565b60405161056791906130ef565b60405180910390f35b34801561057c57600080fd5b5061059760048036038101906105929190612a36565b61120b565b005b6105b360048036038101906105ae91906128c9565b6112ef565b005b3480156105c157600080fd5b506105dc60048036038101906105d79190612a88565b611340565b005b3480156105ea57600080fd5b50610605600480360381019061060091906128c9565b61148e565b005b34801561061357600080fd5b5061062e60048036038101906106299190612ac4565b611599565b005b34801561063c57600080fd5b50610657600480360381019061065291906128c9565b6115a6565b005b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de95346000600885601e426106aa919061322a565b6040518663ffffffff1660e01b81526004016106c99493929190612ec1565b6000604051808303818588803b1580156106e257600080fd5b505af11580156106f6573d6000803e3d6000fd5b505050505050565b60606040518060400160405280600481526020017f4b65797300000000000000000000000000000000000000000000000000000000815250905090565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161081b91906130ef565b60405180910390a36001905092915050565b60008054905090565b60006108fe826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fb9092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061098984848461175f565b90509392505050565b60006009905090565b6109a481611d35565b50565b60066020528060005260406000206000915054906101000a900460ff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4e9061300f565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a929190612e10565b60206040518083038186803b158015610aaa57600080fd5b505afa158015610abe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae29190612aed565b905060008111610b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1e906130cf565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610b62929190612e54565b602060405180830381600087803b158015610b7c57600080fd5b505af1158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb49190612a5f565b505050565b610bdb336009600a610bcb9190613304565b83610bd69190613422565b611f4a565b50565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c659061300f565b60405180910390fd5b600a811115610cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca99061308f565b60405180910390fd5b806005819055507e172ddfc5ae88d08b3de01a5a187667c37a5a53989e8c175055cb6c993792a781604051610ce791906130ef565b60405180910390a150565b610d136009600a610d039190613304565b82610d0e9190613422565b611d35565b50565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de69061300f565b60405180910390fd5b6000600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fcfaaa26691e16e66e73290fc725eee1a6b4e0e693a1640484937aac25ffb55a46000604051610e619190612e10565b60405180910390a1565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef29061300f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f3557600080fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f2293b760d6615c0f087e78599ce64d67197a7dba78cdd9e241f3cd23b46101f38282604051610fbd929190612e2b565b60405180910390a15050565b60606040518060400160405280600481526020017f4b45595300000000000000000000000000000000000000000000000000000000815250905090565b600061101333848461175f565b905092915050565b6110258282611f4a565b5050565b611071600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d35565b565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa9061300f565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f912f0fa470efc452dee6f5bbed07c0e92665e5c56d9911da09910623af977116816040516111739190612e10565b60405180910390a150565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60055481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461129b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112929061300f565b60405180910390fd5b80600b60146101000a81548160ff0219169083151502179055507f8bcc108c7d867d0a70433f71ecba3056c4dcc48eaabe4ca987f9fb1f836091d5816040516112e49190612e7d565b60405180910390a150565b612710341015611334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132b90612f8f565b60405180910390fd5b61133d81610659565b50565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c79061300f565b60405180910390fd5b8115611430576113ed6103e86000546116b190919063ffffffff16565b81101561142f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114269061306f565b60405180910390fd5b5b81600260006101000a81548160ff021916908315150217905550806001819055507f2c86c6a74f488fc3878b83a7fed7b39783317aff443f0890ea7e2a750eb16c238282604051611482929190612e98565b60405180910390a15050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461151e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115159061300f565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fcfaaa26691e16e66e73290fc725eee1a6b4e0e693a1640484937aac25ffb55a48160405161158e9190612e10565b60405180910390a150565b6115a33382611f4a565b50565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162d9061300f565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f7b226bf062af8f4c1ef7acc85de6e11339590a21f25da9a45aa4bd5fdb98b89e816040516116a69190612e10565b60405180910390a150565b60006116f383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612644565b905092915050565b6000838311158290611743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173a9190612f0d565b60405180910390fd5b5060008385611752919061347c565b9050809150509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117ca5750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b611809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180090612f2f565b60405180910390fd5b6000821161184c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184390612fef565b60405180910390fd5b600260009054906101000a900460ff1680156118b65750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1561190157600154821115611900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f790612f6f565b60405180910390fd5b5b61198a826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fb9092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a705750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b159050600081611a81576000611aaa565b611aa96064611a9b600554876126a790919063ffffffff16565b6116b190919063ffffffff16565b5b90506000611ac1828661272290919063ffffffff16565b9050611b1581600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461276c90919063ffffffff16565b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bb591906130ef565b60405180910390a36000821115611d2757611c3a8260036000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461276c90919063ffffffff16565b60036000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d1e91906130ef565b60405180910390a35b600193505050509392505050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015611d845750600081115b611dc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dba9061304f565b60405180910390fd5b611e4c816040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fb9092919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611edb816040518060400160405280601381526020017f496e73756666696369656e7420537570706c79000000000000000000000000008152506000546116fb9092919063ffffffff16565b600081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f3f91906130ef565b60405180910390a350565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611fcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc39061304f565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156120355750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206b90612fcf565b60405180910390fd5b600b60149054906101000a900460ff166120c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ba9061302f565b60405180910390fd5b61214c816040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fb9092919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661220f5761220a60646121fc600554856126a790919063ffffffff16565b6116b190919063ffffffff16565b612212565b60005b90506000612229828461272290919063ffffffff16565b90506000811161226e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612265906130af565b60405180910390fd5b6122c081600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461276c90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161236091906130ef565b60405180910390a360008211156124d2576123e58260036000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461276c90919063ffffffff16565b60036000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124c991906130ef565b60405180910390a35b80600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe5826000600988601e426125c6919061322a565b6040518663ffffffff1660e01b81526004016125e695949392919061310a565b600060405180830381600087803b15801561260057600080fd5b505af1158015612614573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061263d91906129f5565b5050505050565b6000808311829061268b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126829190612f0d565b60405180910390fd5b506000838561269a9190613280565b9050809150509392505050565b6000808314156126ba576000905061271c565b600082846126c89190613422565b90508284826126d79190613280565b14612717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270e90612faf565b60405180910390fd5b809150505b92915050565b600061276483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116fb565b905092915050565b600080828461277b919061322a565b9050838110156127c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b790612f4f565b60405180910390fd5b8091505092915050565b60006127dd6127d8846131a4565b61317f565b905080838252602082019050828560208602820111156127fc57600080fd5b60005b8581101561282c578161281288826128b4565b8452602084019350602083019250506001810190506127ff565b5050509392505050565b60008135905061284581613930565b92915050565b600082601f83011261285c57600080fd5b815161286c8482602086016127ca565b91505092915050565b60008135905061288481613947565b92915050565b60008151905061289981613947565b92915050565b6000813590506128ae8161395e565b92915050565b6000815190506128c38161395e565b92915050565b6000602082840312156128db57600080fd5b60006128e984828501612836565b91505092915050565b6000806040838503121561290557600080fd5b600061291385828601612836565b925050602061292485828601612836565b9150509250929050565b60008060006060848603121561294357600080fd5b600061295186828701612836565b935050602061296286828701612836565b92505060406129738682870161289f565b9150509250925092565b6000806040838503121561299057600080fd5b600061299e85828601612836565b92505060206129af85828601612875565b9150509250929050565b600080604083850312156129cc57600080fd5b60006129da85828601612836565b92505060206129eb8582860161289f565b9150509250929050565b600060208284031215612a0757600080fd5b600082015167ffffffffffffffff811115612a2157600080fd5b612a2d8482850161284b565b91505092915050565b600060208284031215612a4857600080fd5b6000612a5684828501612875565b91505092915050565b600060208284031215612a7157600080fd5b6000612a7f8482850161288a565b91505092915050565b60008060408385031215612a9b57600080fd5b6000612aa985828601612875565b9250506020612aba8582860161289f565b9150509250929050565b600060208284031215612ad657600080fd5b6000612ae48482850161289f565b91505092915050565b600060208284031215612aff57600080fd5b6000612b0d848285016128b4565b91505092915050565b6000612b228383612b2e565b60208301905092915050565b612b37816134d0565b82525050565b612b46816134d0565b82525050565b6000612b57826131e5565b612b618185613208565b9350612b6c836131d0565b8060005b83811015612ba457612b8182613642565b612b8b8882612b16565b9750612b96836131fb565b925050600181019050612b70565b5085935050505092915050565b612bba816134e2565b82525050565b612bc981613525565b82525050565b6000612bda826131f0565b612be48185613219565b9350612bf4818560208601613537565b612bfd81613655565b840191505092915050565b6000612c15601883613219565b9150612c2082613680565b602082019050919050565b6000612c38601b83613219565b9150612c43826136a9565b602082019050919050565b6000612c5b602283613219565b9150612c66826136d2565b604082019050919050565b6000612c7e600e83613219565b9150612c8982613721565b602082019050919050565b6000612ca1602183613219565b9150612cac8261374a565b604082019050919050565b6000612cc4601883613219565b9150612ccf82613799565b602082019050919050565b6000612ce7602983613219565b9150612cf2826137c2565b604082019050919050565b6000612d0a601383613219565b9150612d1582613811565b602082019050919050565b6000612d2d601183613219565b9150612d388261383a565b602082019050919050565b6000612d50601483613219565b9150612d5b82613863565b602082019050919050565b6000612d73601183613219565b9150612d7e8261388c565b602082019050919050565b6000612d96600c83613219565b9150612da1826138b5565b602082019050919050565b6000612db9601383613219565b9150612dc4826138de565b602082019050919050565b6000612ddc600c83613219565b9150612de782613907565b602082019050919050565b612dfb8161350e565b82525050565b612e0a81613518565b82525050565b6000602082019050612e256000830184612b3d565b92915050565b6000604082019050612e406000830185612b3d565b612e4d6020830184612bb1565b9392505050565b6000604082019050612e696000830185612b3d565b612e766020830184612df2565b9392505050565b6000602082019050612e926000830184612bb1565b92915050565b6000604082019050612ead6000830185612bb1565b612eba6020830184612df2565b9392505050565b6000608082019050612ed66000830187612bc0565b8181036020830152612ee88186612b4c565b9050612ef76040830185612b3d565b612f046060830184612df2565b95945050505050565b60006020820190508181036000830152612f278184612bcf565b905092915050565b60006020820190508181036000830152612f4881612c08565b9050919050565b60006020820190508181036000830152612f6881612c2b565b9050919050565b60006020820190508181036000830152612f8881612c4e565b9050919050565b60006020820190508181036000830152612fa881612c71565b9050919050565b60006020820190508181036000830152612fc881612c94565b9050919050565b60006020820190508181036000830152612fe881612cb7565b9050919050565b6000602082019050818103600083015261300881612cda565b9050919050565b6000602082019050818103600083015261302881612cfd565b9050919050565b6000602082019050818103600083015261304881612d20565b9050919050565b6000602082019050818103600083015261306881612d43565b9050919050565b6000602082019050818103600083015261308881612d66565b9050919050565b600060208201905081810360008301526130a881612d89565b9050919050565b600060208201905081810360008301526130c881612dac565b9050919050565b600060208201905081810360008301526130e881612dcf565b9050919050565b60006020820190506131046000830184612df2565b92915050565b600060a08201905061311f6000830188612df2565b61312c6020830187612bc0565b818103604083015261313e8186612b4c565b905061314d6060830185612b3d565b61315a6080830184612df2565b9695505050505050565b60006020820190506131796000830184612e01565b92915050565b600061318961319a565b90506131958282613584565b919050565b6000604051905090565b600067ffffffffffffffff8211156131bf576131be613613565b5b602082029050602081019050919050565b60008190508160005260206000209050919050565b600081549050919050565b600081519050919050565b6000600182019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006132358261350e565b91506132408361350e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613275576132746135b5565b5b828201905092915050565b600061328b8261350e565b91506132968361350e565b9250826132a6576132a56135e4565b5b828204905092915050565b6000808291508390505b60018511156132fb578086048111156132d7576132d66135b5565b5b60018516156132e65780820291505b80810290506132f485613673565b94506132bb565b94509492505050565b600061330f8261350e565b915061331a83613518565b92506133477fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461334f565b905092915050565b60008261335f576001905061341b565b8161336d576000905061341b565b8160018114613383576002811461338d576133bc565b600191505061341b565b60ff84111561339f5761339e6135b5565b5b8360020a9150848211156133b6576133b56135b5565b5b5061341b565b5060208310610133831016604e8410600b84101617156133f15782820a9050838111156133ec576133eb6135b5565b5b61341b565b6133fe84848460016132b1565b92509050818404811115613415576134146135b5565b5b81810290505b9392505050565b600061342d8261350e565b91506134388361350e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613471576134706135b5565b5b828202905092915050565b60006134878261350e565b91506134928361350e565b9250828210156134a5576134a46135b5565b5b828203905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134db826134ee565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006135308261350e565b9050919050565b60005b8381101561355557808201518184015260208101905061353a565b83811115613564576000848401525b50505050565b600061357d61357883613666565b6134b0565b9050919050565b61358d82613655565b810181811067ffffffffffffffff821117156135ac576135ab613613565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600061364e825461356a565b9050919050565b6000601f19601f8301169050919050565b60008160001c9050919050565b60008160011c9050919050565b7f5472616e7366657220546f205a65726f20416464726573730000000000000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4d6178696d756d205472616e73666572205468726573686f6c6420526561636860008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e7420546f6f20466577000000000000000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f496e73756666696369656e742044657374696e6174696f6e0000000000000000600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4f6e6c79204f776e65722046756e6374696f6e00000000000000000000000000600082015250565b7f5377617070696e672044697361626c6564000000000000000000000000000000600082015250565b7f496e73756666696369656e742042616c616e6365000000000000000000000000600082015250565b7f5468726573686f6c6420546f6f20466577000000000000000000000000000000600082015250565b7f46656520546f6f20486967680000000000000000000000000000000000000000600082015250565b7f5a65726f20546f6b656e7320546f2053656e6400000000000000000000000000600082015250565b7f5a65726f2042616c616e63650000000000000000000000000000000000000000600082015250565b613939816134d0565b811461394457600080fd5b50565b613950816134e2565b811461395b57600080fd5b50565b6139678161350e565b811461397257600080fd5b5056fea2646970667358221220820cb2998012b43e1d442e166f730d382bf5d4877a4be72036e91a6717c05edb64736f6c63430008040033
Deployed Bytecode
0x6080604052600436106101a05760003560e01c8063751fd179116100ec578063ddca3f431161008a578063f209d36511610064578063f209d365146105b5578063f2fde38b146105de578063f417fbed14610607578063ff329ca014610630576101b0565b8063ddca3f4314610545578063e01af92c14610570578063e3f241f814610599576101b0565b8063bd240bb7116100c6578063bd240bb71461049f578063c17e2aa1146104c8578063db15d185146104df578063dd62ed3e14610508576101b0565b8063751fd1791461040e57806395d89b4114610437578063a9059cbb14610462576101b0565b80633f4218e01161015957806369fe0e2d1161013357806369fe0e2d146103685780636d1b229d1461039157806370a08231146103ba578063715018a6146103f7576101b0565b80633f4218e0146102d957806349df728c14610316578063670ecb1c1461033f576101b0565b806306fdde03146101b5578063095ea7b3146101e057806318160ddd1461021d57806323b872dd14610248578063313ce5671461028557806336c1c541146102b0576101b0565b366101b0576101ae33610659565b005b600080fd5b3480156101c157600080fd5b506101ca6106fe565b6040516101d79190612f0d565b60405180910390f35b3480156101ec57600080fd5b50610207600480360381019061020291906129b9565b61073b565b6040516102149190612e7d565b60405180910390f35b34801561022957600080fd5b5061023261082d565b60405161023f91906130ef565b60405180910390f35b34801561025457600080fd5b5061026f600480360381019061026a919061292e565b610836565b60405161027c9190612e7d565b60405180910390f35b34801561029157600080fd5b5061029a610992565b6040516102a79190613164565b60405180910390f35b3480156102bc57600080fd5b506102d760048036038101906102d29190612ac4565b61099b565b005b3480156102e557600080fd5b5061030060048036038101906102fb91906128c9565b6109a7565b60405161030d9190612e7d565b60405180910390f35b34801561032257600080fd5b5061033d600480360381019061033891906128c9565b6109c7565b005b34801561034b57600080fd5b5061036660048036038101906103619190612ac4565b610bb9565b005b34801561037457600080fd5b5061038f600480360381019061038a9190612ac4565b610bde565b005b34801561039d57600080fd5b506103b860048036038101906103b39190612ac4565b610cf2565b005b3480156103c657600080fd5b506103e160048036038101906103dc91906128c9565b610d16565b6040516103ee91906130ef565b60405180910390f35b34801561040357600080fd5b5061040c610d5f565b005b34801561041a57600080fd5b506104356004803603810190610430919061297d565b610e6b565b005b34801561044357600080fd5b5061044c610fc9565b6040516104599190612f0d565b60405180910390f35b34801561046e57600080fd5b50610489600480360381019061048491906129b9565b611006565b6040516104969190612e7d565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c191906129b9565b61101b565b005b3480156104d457600080fd5b506104dd611029565b005b3480156104eb57600080fd5b50610506600480360381019061050191906128c9565b611073565b005b34801561051457600080fd5b5061052f600480360381019061052a91906128f2565b61117e565b60405161053c91906130ef565b60405180910390f35b34801561055157600080fd5b5061055a611205565b60405161056791906130ef565b60405180910390f35b34801561057c57600080fd5b5061059760048036038101906105929190612a36565b61120b565b005b6105b360048036038101906105ae91906128c9565b6112ef565b005b3480156105c157600080fd5b506105dc60048036038101906105d79190612a88565b611340565b005b3480156105ea57600080fd5b50610605600480360381019061060091906128c9565b61148e565b005b34801561061357600080fd5b5061062e60048036038101906106299190612ac4565b611599565b005b34801561063c57600080fd5b50610657600480360381019061065291906128c9565b6115a6565b005b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de95346000600885601e426106aa919061322a565b6040518663ffffffff1660e01b81526004016106c99493929190612ec1565b6000604051808303818588803b1580156106e257600080fd5b505af11580156106f6573d6000803e3d6000fd5b505050505050565b60606040518060400160405280600481526020017f4b65797300000000000000000000000000000000000000000000000000000000815250905090565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161081b91906130ef565b60405180910390a36001905092915050565b60008054905090565b60006108fe826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fb9092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061098984848461175f565b90509392505050565b60006009905090565b6109a481611d35565b50565b60066020528060005260406000206000915054906101000a900460ff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4e9061300f565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a929190612e10565b60206040518083038186803b158015610aaa57600080fd5b505afa158015610abe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae29190612aed565b905060008111610b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1e906130cf565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610b62929190612e54565b602060405180830381600087803b158015610b7c57600080fd5b505af1158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb49190612a5f565b505050565b610bdb336009600a610bcb9190613304565b83610bd69190613422565b611f4a565b50565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c659061300f565b60405180910390fd5b600a811115610cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca99061308f565b60405180910390fd5b806005819055507e172ddfc5ae88d08b3de01a5a187667c37a5a53989e8c175055cb6c993792a781604051610ce791906130ef565b60405180910390a150565b610d136009600a610d039190613304565b82610d0e9190613422565b611d35565b50565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de69061300f565b60405180910390fd5b6000600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fcfaaa26691e16e66e73290fc725eee1a6b4e0e693a1640484937aac25ffb55a46000604051610e619190612e10565b60405180910390a1565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef29061300f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f3557600080fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f2293b760d6615c0f087e78599ce64d67197a7dba78cdd9e241f3cd23b46101f38282604051610fbd929190612e2b565b60405180910390a15050565b60606040518060400160405280600481526020017f4b45595300000000000000000000000000000000000000000000000000000000815250905090565b600061101333848461175f565b905092915050565b6110258282611f4a565b5050565b611071600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d35565b565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa9061300f565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f912f0fa470efc452dee6f5bbed07c0e92665e5c56d9911da09910623af977116816040516111739190612e10565b60405180910390a150565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60055481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461129b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112929061300f565b60405180910390fd5b80600b60146101000a81548160ff0219169083151502179055507f8bcc108c7d867d0a70433f71ecba3056c4dcc48eaabe4ca987f9fb1f836091d5816040516112e49190612e7d565b60405180910390a150565b612710341015611334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132b90612f8f565b60405180910390fd5b61133d81610659565b50565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c79061300f565b60405180910390fd5b8115611430576113ed6103e86000546116b190919063ffffffff16565b81101561142f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114269061306f565b60405180910390fd5b5b81600260006101000a81548160ff021916908315150217905550806001819055507f2c86c6a74f488fc3878b83a7fed7b39783317aff443f0890ea7e2a750eb16c238282604051611482929190612e98565b60405180910390a15050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461151e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115159061300f565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fcfaaa26691e16e66e73290fc725eee1a6b4e0e693a1640484937aac25ffb55a48160405161158e9190612e10565b60405180910390a150565b6115a33382611f4a565b50565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162d9061300f565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f7b226bf062af8f4c1ef7acc85de6e11339590a21f25da9a45aa4bd5fdb98b89e816040516116a69190612e10565b60405180910390a150565b60006116f383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612644565b905092915050565b6000838311158290611743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173a9190612f0d565b60405180910390fd5b5060008385611752919061347c565b9050809150509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117ca5750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b611809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180090612f2f565b60405180910390fd5b6000821161184c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184390612fef565b60405180910390fd5b600260009054906101000a900460ff1680156118b65750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1561190157600154821115611900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f790612f6f565b60405180910390fd5b5b61198a826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fb9092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a705750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b159050600081611a81576000611aaa565b611aa96064611a9b600554876126a790919063ffffffff16565b6116b190919063ffffffff16565b5b90506000611ac1828661272290919063ffffffff16565b9050611b1581600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461276c90919063ffffffff16565b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bb591906130ef565b60405180910390a36000821115611d2757611c3a8260036000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461276c90919063ffffffff16565b60036000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d1e91906130ef565b60405180910390a35b600193505050509392505050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015611d845750600081115b611dc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dba9061304f565b60405180910390fd5b611e4c816040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fb9092919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611edb816040518060400160405280601381526020017f496e73756666696369656e7420537570706c79000000000000000000000000008152506000546116fb9092919063ffffffff16565b600081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f3f91906130ef565b60405180910390a350565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611fcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc39061304f565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156120355750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206b90612fcf565b60405180910390fd5b600b60149054906101000a900460ff166120c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ba9061302f565b60405180910390fd5b61214c816040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fb9092919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661220f5761220a60646121fc600554856126a790919063ffffffff16565b6116b190919063ffffffff16565b612212565b60005b90506000612229828461272290919063ffffffff16565b90506000811161226e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612265906130af565b60405180910390fd5b6122c081600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461276c90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161236091906130ef565b60405180910390a360008211156124d2576123e58260036000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461276c90919063ffffffff16565b60036000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124c991906130ef565b60405180910390a35b80600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe5826000600988601e426125c6919061322a565b6040518663ffffffff1660e01b81526004016125e695949392919061310a565b600060405180830381600087803b15801561260057600080fd5b505af1158015612614573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061263d91906129f5565b5050505050565b6000808311829061268b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126829190612f0d565b60405180910390fd5b506000838561269a9190613280565b9050809150509392505050565b6000808314156126ba576000905061271c565b600082846126c89190613422565b90508284826126d79190613280565b14612717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270e90612faf565b60405180910390fd5b809150505b92915050565b600061276483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116fb565b905092915050565b600080828461277b919061322a565b9050838110156127c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b790612f4f565b60405180910390fd5b8091505092915050565b60006127dd6127d8846131a4565b61317f565b905080838252602082019050828560208602820111156127fc57600080fd5b60005b8581101561282c578161281288826128b4565b8452602084019350602083019250506001810190506127ff565b5050509392505050565b60008135905061284581613930565b92915050565b600082601f83011261285c57600080fd5b815161286c8482602086016127ca565b91505092915050565b60008135905061288481613947565b92915050565b60008151905061289981613947565b92915050565b6000813590506128ae8161395e565b92915050565b6000815190506128c38161395e565b92915050565b6000602082840312156128db57600080fd5b60006128e984828501612836565b91505092915050565b6000806040838503121561290557600080fd5b600061291385828601612836565b925050602061292485828601612836565b9150509250929050565b60008060006060848603121561294357600080fd5b600061295186828701612836565b935050602061296286828701612836565b92505060406129738682870161289f565b9150509250925092565b6000806040838503121561299057600080fd5b600061299e85828601612836565b92505060206129af85828601612875565b9150509250929050565b600080604083850312156129cc57600080fd5b60006129da85828601612836565b92505060206129eb8582860161289f565b9150509250929050565b600060208284031215612a0757600080fd5b600082015167ffffffffffffffff811115612a2157600080fd5b612a2d8482850161284b565b91505092915050565b600060208284031215612a4857600080fd5b6000612a5684828501612875565b91505092915050565b600060208284031215612a7157600080fd5b6000612a7f8482850161288a565b91505092915050565b60008060408385031215612a9b57600080fd5b6000612aa985828601612875565b9250506020612aba8582860161289f565b9150509250929050565b600060208284031215612ad657600080fd5b6000612ae48482850161289f565b91505092915050565b600060208284031215612aff57600080fd5b6000612b0d848285016128b4565b91505092915050565b6000612b228383612b2e565b60208301905092915050565b612b37816134d0565b82525050565b612b46816134d0565b82525050565b6000612b57826131e5565b612b618185613208565b9350612b6c836131d0565b8060005b83811015612ba457612b8182613642565b612b8b8882612b16565b9750612b96836131fb565b925050600181019050612b70565b5085935050505092915050565b612bba816134e2565b82525050565b612bc981613525565b82525050565b6000612bda826131f0565b612be48185613219565b9350612bf4818560208601613537565b612bfd81613655565b840191505092915050565b6000612c15601883613219565b9150612c2082613680565b602082019050919050565b6000612c38601b83613219565b9150612c43826136a9565b602082019050919050565b6000612c5b602283613219565b9150612c66826136d2565b604082019050919050565b6000612c7e600e83613219565b9150612c8982613721565b602082019050919050565b6000612ca1602183613219565b9150612cac8261374a565b604082019050919050565b6000612cc4601883613219565b9150612ccf82613799565b602082019050919050565b6000612ce7602983613219565b9150612cf2826137c2565b604082019050919050565b6000612d0a601383613219565b9150612d1582613811565b602082019050919050565b6000612d2d601183613219565b9150612d388261383a565b602082019050919050565b6000612d50601483613219565b9150612d5b82613863565b602082019050919050565b6000612d73601183613219565b9150612d7e8261388c565b602082019050919050565b6000612d96600c83613219565b9150612da1826138b5565b602082019050919050565b6000612db9601383613219565b9150612dc4826138de565b602082019050919050565b6000612ddc600c83613219565b9150612de782613907565b602082019050919050565b612dfb8161350e565b82525050565b612e0a81613518565b82525050565b6000602082019050612e256000830184612b3d565b92915050565b6000604082019050612e406000830185612b3d565b612e4d6020830184612bb1565b9392505050565b6000604082019050612e696000830185612b3d565b612e766020830184612df2565b9392505050565b6000602082019050612e926000830184612bb1565b92915050565b6000604082019050612ead6000830185612bb1565b612eba6020830184612df2565b9392505050565b6000608082019050612ed66000830187612bc0565b8181036020830152612ee88186612b4c565b9050612ef76040830185612b3d565b612f046060830184612df2565b95945050505050565b60006020820190508181036000830152612f278184612bcf565b905092915050565b60006020820190508181036000830152612f4881612c08565b9050919050565b60006020820190508181036000830152612f6881612c2b565b9050919050565b60006020820190508181036000830152612f8881612c4e565b9050919050565b60006020820190508181036000830152612fa881612c71565b9050919050565b60006020820190508181036000830152612fc881612c94565b9050919050565b60006020820190508181036000830152612fe881612cb7565b9050919050565b6000602082019050818103600083015261300881612cda565b9050919050565b6000602082019050818103600083015261302881612cfd565b9050919050565b6000602082019050818103600083015261304881612d20565b9050919050565b6000602082019050818103600083015261306881612d43565b9050919050565b6000602082019050818103600083015261308881612d66565b9050919050565b600060208201905081810360008301526130a881612d89565b9050919050565b600060208201905081810360008301526130c881612dac565b9050919050565b600060208201905081810360008301526130e881612dcf565b9050919050565b60006020820190506131046000830184612df2565b92915050565b600060a08201905061311f6000830188612df2565b61312c6020830187612bc0565b818103604083015261313e8186612b4c565b905061314d6060830185612b3d565b61315a6080830184612df2565b9695505050505050565b60006020820190506131796000830184612e01565b92915050565b600061318961319a565b90506131958282613584565b919050565b6000604051905090565b600067ffffffffffffffff8211156131bf576131be613613565b5b602082029050602081019050919050565b60008190508160005260206000209050919050565b600081549050919050565b600081519050919050565b6000600182019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006132358261350e565b91506132408361350e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613275576132746135b5565b5b828201905092915050565b600061328b8261350e565b91506132968361350e565b9250826132a6576132a56135e4565b5b828204905092915050565b6000808291508390505b60018511156132fb578086048111156132d7576132d66135b5565b5b60018516156132e65780820291505b80810290506132f485613673565b94506132bb565b94509492505050565b600061330f8261350e565b915061331a83613518565b92506133477fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461334f565b905092915050565b60008261335f576001905061341b565b8161336d576000905061341b565b8160018114613383576002811461338d576133bc565b600191505061341b565b60ff84111561339f5761339e6135b5565b5b8360020a9150848211156133b6576133b56135b5565b5b5061341b565b5060208310610133831016604e8410600b84101617156133f15782820a9050838111156133ec576133eb6135b5565b5b61341b565b6133fe84848460016132b1565b92509050818404811115613415576134146135b5565b5b81810290505b9392505050565b600061342d8261350e565b91506134388361350e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613471576134706135b5565b5b828202905092915050565b60006134878261350e565b91506134928361350e565b9250828210156134a5576134a46135b5565b5b828203905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134db826134ee565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006135308261350e565b9050919050565b60005b8381101561355557808201518184015260208101905061353a565b83811115613564576000848401525b50505050565b600061357d61357883613666565b6134b0565b9050919050565b61358d82613655565b810181811067ffffffffffffffff821117156135ac576135ab613613565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600061364e825461356a565b9050919050565b6000601f19601f8301169050919050565b60008160001c9050919050565b60008160011c9050919050565b7f5472616e7366657220546f205a65726f20416464726573730000000000000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4d6178696d756d205472616e73666572205468726573686f6c6420526561636860008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e7420546f6f20466577000000000000000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f496e73756666696369656e742044657374696e6174696f6e0000000000000000600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4f6e6c79204f776e65722046756e6374696f6e00000000000000000000000000600082015250565b7f5377617070696e672044697361626c6564000000000000000000000000000000600082015250565b7f496e73756666696369656e742042616c616e6365000000000000000000000000600082015250565b7f5468726573686f6c6420546f6f20466577000000000000000000000000000000600082015250565b7f46656520546f6f20486967680000000000000000000000000000000000000000600082015250565b7f5a65726f20546f6b656e7320546f2053656e6400000000000000000000000000600082015250565b7f5a65726f2042616c616e63650000000000000000000000000000000000000000600082015250565b613939816134d0565b811461394457600080fd5b50565b613950816134e2565b811461395b57600080fd5b50565b6139678161350e565b811461397257600080fd5b5056fea2646970667358221220820cb2998012b43e1d442e166f730d382bf5d4877a4be72036e91a6717c05edb64736f6c63430008040033
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.