ERC-20
Artificial Intelligence
Overview
Max Total Supply
100,000,000 BLD
Holders
372 (0.00%)
Market
Price
$0.00 @ 0.000000 ETH (-0.61%)
Onchain Market Cap
$15,396.00
Circulating Supply Market Cap
$0.00
Other Info
Token Contract (WITH 9 Decimals)
Balance
141,236.274201898 BLDValue
$21.74 ( ~0.00827127624965885 Eth) [0.1412%]Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
BlackderAi
Compiler Version
v0.8.25+commit.b61c2a91
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
import "@openzeppelin/[email protected]/access/Ownable.sol"; import "@openzeppelin/contracts/interfaces/IERC20.sol"; import "./IUniswapV2Router02.sol"; import "./safeMath.sol"; /* Website: https://blackder.ai/ Twitter(X): https://twitter.com/blackder_ai Telegram: https://t.me/blackder_ai */ // SPDX-License-Identifier: Unlicensed pragma solidity 0.8.25; contract BlackderAi is Context, IERC20, Ownable { using SafeMath for uint256; uint256 private _rTotal = (MAX - (MAX % _totalSupply)); uint256 private constant MAX = ~uint256(0); uint256 private _feeOnBuy = 5; uint256 private _feeOnSell = 5; uint256 private _tempFee = _fee; uint256 private _fee = _feeOnSell; address payable private _marketingWallet = payable(0xe85e3a6EA4432f2CD44d3FCc8C73828d7ab89149); mapping(address => uint256) private _rOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; uint8 private constant _decimals = 9; string private constant _name = "Blackder AI"; string private constant _symbol = "BLD"; bool private _maxTxn = false; bool private _maxWallet = false; IUniswapV2Router02 public uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address public uniswapV2Pair; bool private autoSwapEnabled = true; bool private inSwap = false; bool private _tradingOpen; uint256 private constant _totalSupply = 100_000_000 * 10**9; uint256 public _maxTxnSize = 1_000_000 * 10**9; uint256 public _maxHoldSize = 2_000_000 * 10**9; uint256 public _minSwappableAmount = 1000 * 10**9; modifier lockTheSwap() { inSwap = true; _; inSwap = false; } constructor() { _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[_marketingWallet] = true; _rOwned[_msgSender()] = _rTotal; uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair( address(this), uniswapV2Router.WETH() ); emit Transfer(address(0), _msgSender(), _totalSupply); } function totalSupply() public pure override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } function excludeMultipleAccountsFromFees( address[] calldata accounts, bool excluded ) public onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFee[accounts[i]] = excluded; } } function decimals() public pure returns (uint8) { return _decimals; } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function _getTValues(uint256 tAmount, uint256 fee) private pure returns (uint256, uint256) { uint256 tTeam = tAmount.mul(fee).div(100); uint256 tTransferAmount = tAmount.sub(tTeam); return (tTransferAmount, tTeam); } function _getCurrentSupply() private view returns (uint256, uint256) { return (_rTotal, _totalSupply); } function toggleautoSwapEnabled(bool _autoSwapEnabled) public onlyOwner { autoSwapEnabled = _autoSwapEnabled; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function tokenFromReflection(uint256 rAmount) private view returns (uint256) { require( rAmount <= _rTotal, "Amount has to be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function switchTrading(bool __tradingOpen) public onlyOwner { _tradingOpen = __tradingOpen; } function dropFee() private { if (_fee == 0) return; _tempFee = _fee; _fee = 0; } function restoreFee() private { _fee = _tempFee; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "Can't approve from zero address"); require(spender != address(0), "Can't approve to zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "Cant transfer from address zero"); require(to != address(0), "Cant transfer to address zero"); require(amount > 0, "Amount should be above zero"); if (from != owner() && to != owner()) { //Trade start check if (!_tradingOpen) { require( from == owner(), "Only owner can trade before trading activation" ); } require(amount <= _maxTxnSize, "Exceeded max transaction limit"); if (to != uniswapV2Pair) { require( balanceOf(to) + amount < _maxHoldSize, "Exceeds max hold balance" ); } uint256 contractTokenBalance = balanceOf(address(this)); bool swapAllowed = contractTokenBalance >= _minSwappableAmount; if (contractTokenBalance >= _maxTxnSize) { contractTokenBalance = _maxTxnSize; } if ( swapAllowed && autoSwapEnabled && from != uniswapV2Pair && !_isExcludedFromFee[from] && !inSwap && !_isExcludedFromFee[to] ) { swap2Eth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { _sendFeesToMarketing(address(this).balance); } } } bool takeFee = true; if ( (_isExcludedFromFee[to] || _isExcludedFromFee[from]) || (to != uniswapV2Pair && from != uniswapV2Pair) ) { takeFee = false; } else { if (from == uniswapV2Pair && to != address(uniswapV2Router)) { _fee = _feeOnBuy; } if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _fee = _feeOnSell; } } _tokenTransfer(from, to, amount, takeFee); } function swap2Eth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function manualswap() external { require(_msgSender() == _marketingWallet); uint256 contractBalance = balanceOf(address(this)); swap2Eth(contractBalance); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "the transfer amount exceeds allowance" ) ); return true; } function setMinSwapTokensThreshold(uint256 minSwappableAmount) public onlyOwner { _minSwappableAmount = minSwappableAmount; } function setFees(uint256 feeOnBuy, uint256 feeOnSell) public onlyOwner { require( feeOnBuy >= 0 && feeOnBuy <= 95, "Buy tax must be between 0% and 95%" ); require( feeOnSell >= 0 && feeOnSell <= 95, "Sell tax must be between 0% and 95%" ); _feeOnBuy = feeOnBuy; _feeOnSell = feeOnSell; } function _transferApplyingFees( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 tTransferAmount, uint256 tTeam ) = _getFeeValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _transferFeeDev(tTeam); emit Transfer(sender, recipient, tTransferAmount); } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) dropFee(); _transferApplyingFees(sender, recipient, amount); if (!takeFee) restoreFee(); } function _transferFeeDev(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _getFeeValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tTeam) = _getTValues(tAmount, _fee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount) = _getRValues( tAmount, tTeam, currentRate ); return (rAmount, rTransferAmount, tTransferAmount, tTeam); } function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner { _maxTxnSize = maxTxAmount; } receive() external payable {} function setMaxHoldSize(uint256 maxHoldSize) public onlyOwner { _maxHoldSize = maxHoldSize; } function _getRValues( uint256 tAmount, uint256 tTeam, uint256 currentRate ) private pure returns (uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rTeam); return (rAmount, rTransferAmount); } function _sendFeesToMarketing(uint256 amount) private { _marketingWallet.transfer(amount); } function manualSwap() external { require(_msgSender() == _marketingWallet); uint256 contractETHBalance = address(this).balance; _sendFeesToMarketing(contractETHBalance); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } }
// SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.18; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } }
// SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.18; interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol) pragma solidity ^0.8.20; import {IERC20} from "../token/ERC20/IERC20.sol";
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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); /** * @dev Returns the value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 value) 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 a `value` amount of tokens 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 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 value) external returns (bool); }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxHoldSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxnSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_minSwappableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeOnBuy","type":"uint256"},{"internalType":"uint256","name":"feeOnSell","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxHoldSize","type":"uint256"}],"name":"setMaxHoldSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minSwappableAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"__tradingOpen","type":"bool"}],"name":"switchTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_autoSwapEnabled","type":"bool"}],"name":"toggleautoSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405267016345785d8a00005f19610019919061068e565b5f1961002591906106eb565b6001556005600255600560035560055460045560035460055573e85e3a6ea4432f2cd44d3fcc8c73828d7ab8914960065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600a5f6101000a81548160ff0219169083151502179055505f600a60016101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600a60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60146101000a81548160ff0219169083151502179055505f600b60156101000a81548160ff02191690831515021790555066038d7ea4c68000600c5566071afd498d0000600d5564e8d4a51000600e55348015610179575f80fd5b5061019661018b61056960201b60201c565b61057060201b60201c565b600160095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f6101fe61063160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060015460075f6102d761056960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600a60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561037f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103a3919061077c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600a60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561042a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061044e919061077c565b6040518363ffffffff1660e01b815260040161046b9291906107b6565b6020604051808303815f875af1158015610487573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104ab919061077c565b600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506104f861056960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a000060405161055c91906107ec565b60405180910390a3610805565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61069882610658565b91506106a383610658565b9250826106b3576106b2610661565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6106f582610658565b915061070083610658565b9250828203905081811115610718576107176106be565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61074b82610722565b9050919050565b61075b81610741565b8114610765575f80fd5b50565b5f8151905061077681610752565b92915050565b5f602082840312156107915761079061071e565b5b5f61079e84828501610768565b91505092915050565b6107b081610741565b82525050565b5f6040820190506107c95f8301856107a7565b6107d660208301846107a7565b9392505050565b6107e681610658565b82525050565b5f6020820190506107ff5f8301846107dd565b92915050565b612f29806108125f395ff3fe608060405260043610610184575f3560e01c806374010ece116100d0578063a9059cbb11610089578063c492f04611610063578063c492f0461461052b578063dd62ed3e14610553578063e5c436331461058f578063f2fde38b146105b95761018b565b8063a9059cbb146104b1578063b2021e0a146104ed578063c3c8cd80146105155761018b565b806374010ece146103bb578063874949c9146103e35780638da5cb5b1461040b57806395d89b411461043557806398a5c3151461045f5780639e0ba25d146104875761018b565b8063313ce5671161013d578063577009e411610117578063577009e4146103175780636279c6941461033f57806370a0823114610369578063715018a6146103a55761018b565b8063313ce567146102ad57806349bd5a5e146102d757806351bc3c85146103015761018b565b806306fdde031461018f578063095ea7b3146101b95780630b78f9c0146101f55780631694505e1461021d57806318160ddd1461024757806323b872dd146102715761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105e1565b6040516101b0919061206d565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da9190612122565b61061e565b6040516101ec919061217a565b60405180910390f35b348015610200575f80fd5b5061021b60048036038101906102169190612193565b61063b565b005b348015610228575f80fd5b506102316106f5565b60405161023e919061222c565b60405180910390f35b348015610252575f80fd5b5061025b61071b565b6040516102689190612254565b60405180910390f35b34801561027c575f80fd5b506102976004803603810190610292919061226d565b61072a565b6040516102a4919061217a565b60405180910390f35b3480156102b8575f80fd5b506102c16107fe565b6040516102ce91906122d8565b60405180910390f35b3480156102e2575f80fd5b506102eb610806565b6040516102f89190612300565b60405180910390f35b34801561030c575f80fd5b5061031561082b565b005b348015610322575f80fd5b5061033d60048036038101906103389190612319565b61089a565b005b34801561034a575f80fd5b506103536108ac565b6040516103609190612254565b60405180910390f35b348015610374575f80fd5b5061038f600480360381019061038a9190612344565b6108b2565b60405161039c9190612254565b60405180910390f35b3480156103b0575f80fd5b506103b9610900565b005b3480156103c6575f80fd5b506103e160048036038101906103dc9190612319565b610913565b005b3480156103ee575f80fd5b5061040960048036038101906104049190612399565b610925565b005b348015610416575f80fd5b5061041f61094a565b60405161042c9190612300565b60405180910390f35b348015610440575f80fd5b50610449610971565b604051610456919061206d565b60405180910390f35b34801561046a575f80fd5b5061048560048036038101906104809190612319565b6109ae565b005b348015610492575f80fd5b5061049b6109c0565b6040516104a89190612254565b60405180910390f35b3480156104bc575f80fd5b506104d760048036038101906104d29190612122565b6109c6565b6040516104e4919061217a565b60405180910390f35b3480156104f8575f80fd5b50610513600480360381019061050e9190612399565b6109e3565b005b348015610520575f80fd5b50610529610a08565b005b348015610536575f80fd5b50610551600480360381019061054c9190612425565b610a7f565b005b34801561055e575f80fd5b5061057960048036038101906105749190612482565b610b22565b6040516105869190612254565b60405180910390f35b34801561059a575f80fd5b506105a3610ba4565b6040516105b09190612254565b60405180910390f35b3480156105c4575f80fd5b506105df60048036038101906105da9190612344565b610baa565b005b60606040518060400160405280600b81526020017f426c61636b646572204149000000000000000000000000000000000000000000815250905090565b5f61063161062a610c2c565b8484610c33565b6001905092915050565b610643610df6565b5f82101580156106545750605f8211155b610693576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068a90612530565b60405180910390fd5b5f81101580156106a45750605f8111155b6106e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106da906125be565b60405180910390fd5b81600281905550806003819055505050565b600a60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f67016345785d8a0000905090565b5f610736848484610e74565b6107f384610742610c2c565b6107ee85604051806060016040528060258152602001612ecf6025913960085f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6107a5610c2c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546115e99092919063ffffffff16565b610c33565b600190509392505050565b5f6009905090565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661086b610c2c565b73ffffffffffffffffffffffffffffffffffffffff161461088a575f80fd5b5f4790506108978161164b565b50565b6108a2610df6565b80600d8190555050565b600d5481565b5f6108f960075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546116b3565b9050919050565b610908610df6565b6109115f61171f565b565b61091b610df6565b80600c8190555050565b61092d610df6565b80600b60146101000a81548160ff02191690831515021790555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f424c440000000000000000000000000000000000000000000000000000000000815250905090565b6109b6610df6565b80600e8190555050565b600c5481565b5f6109d96109d2610c2c565b8484610e74565b6001905092915050565b6109eb610df6565b80600b60166101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a48610c2c565b73ffffffffffffffffffffffffffffffffffffffff1614610a67575f80fd5b5f610a71306108b2565b9050610a7c816117e0565b50565b610a87610df6565b5f5b83839050811015610b1c578160095f868685818110610aab57610aaa6125dc565b5b9050602002016020810190610ac09190612344565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610a89565b50505050565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600e5481565b610bb2610df6565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1790612679565b60405180910390fd5b610c298161171f565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c98906126e1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0690612749565b60405180910390fd5b8060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610de99190612254565b60405180910390a3505050565b610dfe610c2c565b73ffffffffffffffffffffffffffffffffffffffff16610e1c61094a565b73ffffffffffffffffffffffffffffffffffffffff1614610e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e69906127b1565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed990612819565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4790612881565b60405180910390fd5b5f8111610f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f89906128e9565b60405180910390fd5b610f9a61094a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156110085750610fd861094a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561130657600b60169054906101000a900460ff166110975761102961094a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108d90612977565b60405180910390fd5b5b600c548111156110dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d3906129df565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461118857600d548161113d846108b2565b6111479190612a2a565b10611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117e90612aa7565b60405180910390fd5b5b5f611192306108b2565b90505f600e548210159050600c5482106111ac57600c5491505b8080156111c55750600b60149054906101000a900460ff165b801561121e5750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611271575060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561128a5750600b60159054906101000a900460ff16155b80156112dd575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611303576112eb826117e0565b5f4790505f811115611301576113004761164b565b5b505b50505b5f6001905060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806113a6575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806114575750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156114565750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b5b15611464575f90506115d7565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561150e5750600a60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561151d576002546005819055505b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156115c75750600a60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156115d6576003546005819055505b5b6115e384848484611a4e565b50505050565b5f838311158290611630576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611627919061206d565b60405180910390fd5b505f838561163e9190612ac5565b9050809150509392505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156116af573d5f803e3d5ffd5b5050565b5f6001548211156116f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f090612b68565b60405180910390fd5b5f611702611a7b565b90506117178184611aa490919063ffffffff16565b915050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600b60156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561181757611816612b86565b5b6040519080825280602002602001820160405280156118455781602001602082028036833780820191505090505b50905030815f8151811061185c5761185b6125dc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611901573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119259190612bc7565b81600181518110611939576119386125dc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506119a030600a60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610c33565b600a60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611a03959493929190612ce2565b5f604051808303815f87803b158015611a1a575f80fd5b505af1158015611a2c573d5f803e3d5ffd5b50505050505f600b60156101000a81548160ff02191690831515021790555050565b80611a5c57611a5b611aed565b5b611a67848484611b0a565b80611a7557611a74611cb8565b5b50505050565b5f805f611a86611cc3565b91509150611a9d8183611aa490919063ffffffff16565b9250505090565b5f611ae583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611cd9565b905092915050565b5f6005540315611b08576005546004819055505f6005819055505b565b5f805f80611b1785611d3a565b9350935093509350611b6f8460075f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d8490919063ffffffff16565b60075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611c008360075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611dcd90919063ffffffff16565b60075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611c4a81611e2a565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ca79190612254565b60405180910390a350505050505050565b600454600581905550565b5f8060015467016345785d8a0000915091509091565b5f8083118290611d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d16919061206d565b60405180910390fd5b505f8385611d2d9190612d67565b9050809150509392505050565b5f805f805f80611d4c87600554611ee1565b915091505f611d59611a7b565b90505f80611d688a8585611f31565b9150915081818686985098509850985050505050509193509193565b5f611dc583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115e9565b905092915050565b5f808284611ddb9190612a2a565b905083811015611e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1790612de1565b60405180910390fd5b8091505092915050565b5f611e33611a7b565b90505f611e498284611f8690919063ffffffff16565b9050611e9b8160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611dcd90919063ffffffff16565b60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b5f805f611f0a6064611efc8688611f8690919063ffffffff16565b611aa490919063ffffffff16565b90505f611f208287611d8490919063ffffffff16565b905080829350935050509250929050565b5f805f611f478487611f8690919063ffffffff16565b90505f611f5d8587611f8690919063ffffffff16565b90505f611f738284611d8490919063ffffffff16565b9050828194509450505050935093915050565b5f808303611f96575f9050611ff7565b5f8284611fa39190612dff565b9050828482611fb29190612d67565b14611ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe990612eb0565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61203f82611ffd565b6120498185612007565b9350612059818560208601612017565b61206281612025565b840191505092915050565b5f6020820190508181035f8301526120858184612035565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120be82612095565b9050919050565b6120ce816120b4565b81146120d8575f80fd5b50565b5f813590506120e9816120c5565b92915050565b5f819050919050565b612101816120ef565b811461210b575f80fd5b50565b5f8135905061211c816120f8565b92915050565b5f80604083850312156121385761213761208d565b5b5f612145858286016120db565b92505060206121568582860161210e565b9150509250929050565b5f8115159050919050565b61217481612160565b82525050565b5f60208201905061218d5f83018461216b565b92915050565b5f80604083850312156121a9576121a861208d565b5b5f6121b68582860161210e565b92505060206121c78582860161210e565b9150509250929050565b5f819050919050565b5f6121f46121ef6121ea84612095565b6121d1565b612095565b9050919050565b5f612205826121da565b9050919050565b5f612216826121fb565b9050919050565b6122268161220c565b82525050565b5f60208201905061223f5f83018461221d565b92915050565b61224e816120ef565b82525050565b5f6020820190506122675f830184612245565b92915050565b5f805f606084860312156122845761228361208d565b5b5f612291868287016120db565b93505060206122a2868287016120db565b92505060406122b38682870161210e565b9150509250925092565b5f60ff82169050919050565b6122d2816122bd565b82525050565b5f6020820190506122eb5f8301846122c9565b92915050565b6122fa816120b4565b82525050565b5f6020820190506123135f8301846122f1565b92915050565b5f6020828403121561232e5761232d61208d565b5b5f61233b8482850161210e565b91505092915050565b5f602082840312156123595761235861208d565b5b5f612366848285016120db565b91505092915050565b61237881612160565b8114612382575f80fd5b50565b5f813590506123938161236f565b92915050565b5f602082840312156123ae576123ad61208d565b5b5f6123bb84828501612385565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126123e5576123e46123c4565b5b8235905067ffffffffffffffff811115612402576124016123c8565b5b60208301915083602082028301111561241e5761241d6123cc565b5b9250929050565b5f805f6040848603121561243c5761243b61208d565b5b5f84013567ffffffffffffffff81111561245957612458612091565b5b612465868287016123d0565b9350935050602061247886828701612385565b9150509250925092565b5f80604083850312156124985761249761208d565b5b5f6124a5858286016120db565b92505060206124b6858286016120db565b9150509250929050565b7f42757920746178206d757374206265206265747765656e20302520616e6420395f8201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b5f61251a602283612007565b9150612525826124c0565b604082019050919050565b5f6020820190508181035f8301526125478161250e565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e64205f8201527f3935250000000000000000000000000000000000000000000000000000000000602082015250565b5f6125a8602383612007565b91506125b38261254e565b604082019050919050565b5f6020820190508181035f8301526125d58161259c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612663602683612007565b915061266e82612609565b604082019050919050565b5f6020820190508181035f83015261269081612657565b9050919050565b7f43616e277420617070726f76652066726f6d207a65726f2061646472657373005f82015250565b5f6126cb601f83612007565b91506126d682612697565b602082019050919050565b5f6020820190508181035f8301526126f8816126bf565b9050919050565b7f43616e277420617070726f766520746f207a65726f20616464726573730000005f82015250565b5f612733601d83612007565b915061273e826126ff565b602082019050919050565b5f6020820190508181035f83015261276081612727565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61279b602083612007565b91506127a682612767565b602082019050919050565b5f6020820190508181035f8301526127c88161278f565b9050919050565b7f43616e74207472616e736665722066726f6d2061646472657373207a65726f005f82015250565b5f612803601f83612007565b915061280e826127cf565b602082019050919050565b5f6020820190508181035f830152612830816127f7565b9050919050565b7f43616e74207472616e7366657220746f2061646472657373207a65726f0000005f82015250565b5f61286b601d83612007565b915061287682612837565b602082019050919050565b5f6020820190508181035f8301526128988161285f565b9050919050565b7f416d6f756e742073686f756c642062652061626f7665207a65726f00000000005f82015250565b5f6128d3601b83612007565b91506128de8261289f565b602082019050919050565b5f6020820190508181035f830152612900816128c7565b9050919050565b7f4f6e6c79206f776e65722063616e207472616465206265666f726520747261645f8201527f696e672061637469766174696f6e000000000000000000000000000000000000602082015250565b5f612961602e83612007565b915061296c82612907565b604082019050919050565b5f6020820190508181035f83015261298e81612955565b9050919050565b7f4578636565646564206d6178207472616e73616374696f6e206c696d697400005f82015250565b5f6129c9601e83612007565b91506129d482612995565b602082019050919050565b5f6020820190508181035f8301526129f6816129bd565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612a34826120ef565b9150612a3f836120ef565b9250828201905080821115612a5757612a566129fd565b5b92915050565b7f45786365656473206d617820686f6c642062616c616e636500000000000000005f82015250565b5f612a91601883612007565b9150612a9c82612a5d565b602082019050919050565b5f6020820190508181035f830152612abe81612a85565b9050919050565b5f612acf826120ef565b9150612ada836120ef565b9250828203905081811115612af257612af16129fd565b5b92915050565b7f416d6f756e742068617320746f206265206c657373207468616e20746f74616c5f8201527f207265666c656374696f6e730000000000000000000000000000000000000000602082015250565b5f612b52602c83612007565b9150612b5d82612af8565b604082019050919050565b5f6020820190508181035f830152612b7f81612b46565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050612bc1816120c5565b92915050565b5f60208284031215612bdc57612bdb61208d565b5b5f612be984828501612bb3565b91505092915050565b5f819050919050565b5f612c15612c10612c0b84612bf2565b6121d1565b6120ef565b9050919050565b612c2581612bfb565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612c5d816120b4565b82525050565b5f612c6e8383612c54565b60208301905092915050565b5f602082019050919050565b5f612c9082612c2b565b612c9a8185612c35565b9350612ca583612c45565b805f5b83811015612cd5578151612cbc8882612c63565b9750612cc783612c7a565b925050600181019050612ca8565b5085935050505092915050565b5f60a082019050612cf55f830188612245565b612d026020830187612c1c565b8181036040830152612d148186612c86565b9050612d2360608301856122f1565b612d306080830184612245565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612d71826120ef565b9150612d7c836120ef565b925082612d8c57612d8b612d3a565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f612dcb601b83612007565b9150612dd682612d97565b602082019050919050565b5f6020820190508181035f830152612df881612dbf565b9050919050565b5f612e09826120ef565b9150612e14836120ef565b9250828202612e22816120ef565b91508282048414831517612e3957612e386129fd565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612e9a602183612007565b9150612ea582612e40565b604082019050919050565b5f6020820190508181035f830152612ec781612e8e565b905091905056fe746865207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208acbcd9b8859c669f7e069baa24d18df479737b815e99a8fae0bcb0a876effa164736f6c63430008190033
Deployed Bytecode
0x608060405260043610610184575f3560e01c806374010ece116100d0578063a9059cbb11610089578063c492f04611610063578063c492f0461461052b578063dd62ed3e14610553578063e5c436331461058f578063f2fde38b146105b95761018b565b8063a9059cbb146104b1578063b2021e0a146104ed578063c3c8cd80146105155761018b565b806374010ece146103bb578063874949c9146103e35780638da5cb5b1461040b57806395d89b411461043557806398a5c3151461045f5780639e0ba25d146104875761018b565b8063313ce5671161013d578063577009e411610117578063577009e4146103175780636279c6941461033f57806370a0823114610369578063715018a6146103a55761018b565b8063313ce567146102ad57806349bd5a5e146102d757806351bc3c85146103015761018b565b806306fdde031461018f578063095ea7b3146101b95780630b78f9c0146101f55780631694505e1461021d57806318160ddd1461024757806323b872dd146102715761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105e1565b6040516101b0919061206d565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da9190612122565b61061e565b6040516101ec919061217a565b60405180910390f35b348015610200575f80fd5b5061021b60048036038101906102169190612193565b61063b565b005b348015610228575f80fd5b506102316106f5565b60405161023e919061222c565b60405180910390f35b348015610252575f80fd5b5061025b61071b565b6040516102689190612254565b60405180910390f35b34801561027c575f80fd5b506102976004803603810190610292919061226d565b61072a565b6040516102a4919061217a565b60405180910390f35b3480156102b8575f80fd5b506102c16107fe565b6040516102ce91906122d8565b60405180910390f35b3480156102e2575f80fd5b506102eb610806565b6040516102f89190612300565b60405180910390f35b34801561030c575f80fd5b5061031561082b565b005b348015610322575f80fd5b5061033d60048036038101906103389190612319565b61089a565b005b34801561034a575f80fd5b506103536108ac565b6040516103609190612254565b60405180910390f35b348015610374575f80fd5b5061038f600480360381019061038a9190612344565b6108b2565b60405161039c9190612254565b60405180910390f35b3480156103b0575f80fd5b506103b9610900565b005b3480156103c6575f80fd5b506103e160048036038101906103dc9190612319565b610913565b005b3480156103ee575f80fd5b5061040960048036038101906104049190612399565b610925565b005b348015610416575f80fd5b5061041f61094a565b60405161042c9190612300565b60405180910390f35b348015610440575f80fd5b50610449610971565b604051610456919061206d565b60405180910390f35b34801561046a575f80fd5b5061048560048036038101906104809190612319565b6109ae565b005b348015610492575f80fd5b5061049b6109c0565b6040516104a89190612254565b60405180910390f35b3480156104bc575f80fd5b506104d760048036038101906104d29190612122565b6109c6565b6040516104e4919061217a565b60405180910390f35b3480156104f8575f80fd5b50610513600480360381019061050e9190612399565b6109e3565b005b348015610520575f80fd5b50610529610a08565b005b348015610536575f80fd5b50610551600480360381019061054c9190612425565b610a7f565b005b34801561055e575f80fd5b5061057960048036038101906105749190612482565b610b22565b6040516105869190612254565b60405180910390f35b34801561059a575f80fd5b506105a3610ba4565b6040516105b09190612254565b60405180910390f35b3480156105c4575f80fd5b506105df60048036038101906105da9190612344565b610baa565b005b60606040518060400160405280600b81526020017f426c61636b646572204149000000000000000000000000000000000000000000815250905090565b5f61063161062a610c2c565b8484610c33565b6001905092915050565b610643610df6565b5f82101580156106545750605f8211155b610693576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068a90612530565b60405180910390fd5b5f81101580156106a45750605f8111155b6106e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106da906125be565b60405180910390fd5b81600281905550806003819055505050565b600a60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f67016345785d8a0000905090565b5f610736848484610e74565b6107f384610742610c2c565b6107ee85604051806060016040528060258152602001612ecf6025913960085f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6107a5610c2c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546115e99092919063ffffffff16565b610c33565b600190509392505050565b5f6009905090565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661086b610c2c565b73ffffffffffffffffffffffffffffffffffffffff161461088a575f80fd5b5f4790506108978161164b565b50565b6108a2610df6565b80600d8190555050565b600d5481565b5f6108f960075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546116b3565b9050919050565b610908610df6565b6109115f61171f565b565b61091b610df6565b80600c8190555050565b61092d610df6565b80600b60146101000a81548160ff02191690831515021790555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f424c440000000000000000000000000000000000000000000000000000000000815250905090565b6109b6610df6565b80600e8190555050565b600c5481565b5f6109d96109d2610c2c565b8484610e74565b6001905092915050565b6109eb610df6565b80600b60166101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a48610c2c565b73ffffffffffffffffffffffffffffffffffffffff1614610a67575f80fd5b5f610a71306108b2565b9050610a7c816117e0565b50565b610a87610df6565b5f5b83839050811015610b1c578160095f868685818110610aab57610aaa6125dc565b5b9050602002016020810190610ac09190612344565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610a89565b50505050565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600e5481565b610bb2610df6565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1790612679565b60405180910390fd5b610c298161171f565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c98906126e1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0690612749565b60405180910390fd5b8060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610de99190612254565b60405180910390a3505050565b610dfe610c2c565b73ffffffffffffffffffffffffffffffffffffffff16610e1c61094a565b73ffffffffffffffffffffffffffffffffffffffff1614610e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e69906127b1565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed990612819565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4790612881565b60405180910390fd5b5f8111610f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f89906128e9565b60405180910390fd5b610f9a61094a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156110085750610fd861094a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561130657600b60169054906101000a900460ff166110975761102961094a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108d90612977565b60405180910390fd5b5b600c548111156110dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d3906129df565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461118857600d548161113d846108b2565b6111479190612a2a565b10611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117e90612aa7565b60405180910390fd5b5b5f611192306108b2565b90505f600e548210159050600c5482106111ac57600c5491505b8080156111c55750600b60149054906101000a900460ff165b801561121e5750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611271575060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561128a5750600b60159054906101000a900460ff16155b80156112dd575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611303576112eb826117e0565b5f4790505f811115611301576113004761164b565b5b505b50505b5f6001905060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806113a6575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806114575750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156114565750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b5b15611464575f90506115d7565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561150e5750600a60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561151d576002546005819055505b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156115c75750600a60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156115d6576003546005819055505b5b6115e384848484611a4e565b50505050565b5f838311158290611630576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611627919061206d565b60405180910390fd5b505f838561163e9190612ac5565b9050809150509392505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156116af573d5f803e3d5ffd5b5050565b5f6001548211156116f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f090612b68565b60405180910390fd5b5f611702611a7b565b90506117178184611aa490919063ffffffff16565b915050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600b60156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561181757611816612b86565b5b6040519080825280602002602001820160405280156118455781602001602082028036833780820191505090505b50905030815f8151811061185c5761185b6125dc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611901573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119259190612bc7565b81600181518110611939576119386125dc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506119a030600a60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610c33565b600a60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611a03959493929190612ce2565b5f604051808303815f87803b158015611a1a575f80fd5b505af1158015611a2c573d5f803e3d5ffd5b50505050505f600b60156101000a81548160ff02191690831515021790555050565b80611a5c57611a5b611aed565b5b611a67848484611b0a565b80611a7557611a74611cb8565b5b50505050565b5f805f611a86611cc3565b91509150611a9d8183611aa490919063ffffffff16565b9250505090565b5f611ae583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611cd9565b905092915050565b5f6005540315611b08576005546004819055505f6005819055505b565b5f805f80611b1785611d3a565b9350935093509350611b6f8460075f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d8490919063ffffffff16565b60075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611c008360075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611dcd90919063ffffffff16565b60075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611c4a81611e2a565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ca79190612254565b60405180910390a350505050505050565b600454600581905550565b5f8060015467016345785d8a0000915091509091565b5f8083118290611d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d16919061206d565b60405180910390fd5b505f8385611d2d9190612d67565b9050809150509392505050565b5f805f805f80611d4c87600554611ee1565b915091505f611d59611a7b565b90505f80611d688a8585611f31565b9150915081818686985098509850985050505050509193509193565b5f611dc583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115e9565b905092915050565b5f808284611ddb9190612a2a565b905083811015611e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1790612de1565b60405180910390fd5b8091505092915050565b5f611e33611a7b565b90505f611e498284611f8690919063ffffffff16565b9050611e9b8160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611dcd90919063ffffffff16565b60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b5f805f611f0a6064611efc8688611f8690919063ffffffff16565b611aa490919063ffffffff16565b90505f611f208287611d8490919063ffffffff16565b905080829350935050509250929050565b5f805f611f478487611f8690919063ffffffff16565b90505f611f5d8587611f8690919063ffffffff16565b90505f611f738284611d8490919063ffffffff16565b9050828194509450505050935093915050565b5f808303611f96575f9050611ff7565b5f8284611fa39190612dff565b9050828482611fb29190612d67565b14611ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe990612eb0565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61203f82611ffd565b6120498185612007565b9350612059818560208601612017565b61206281612025565b840191505092915050565b5f6020820190508181035f8301526120858184612035565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120be82612095565b9050919050565b6120ce816120b4565b81146120d8575f80fd5b50565b5f813590506120e9816120c5565b92915050565b5f819050919050565b612101816120ef565b811461210b575f80fd5b50565b5f8135905061211c816120f8565b92915050565b5f80604083850312156121385761213761208d565b5b5f612145858286016120db565b92505060206121568582860161210e565b9150509250929050565b5f8115159050919050565b61217481612160565b82525050565b5f60208201905061218d5f83018461216b565b92915050565b5f80604083850312156121a9576121a861208d565b5b5f6121b68582860161210e565b92505060206121c78582860161210e565b9150509250929050565b5f819050919050565b5f6121f46121ef6121ea84612095565b6121d1565b612095565b9050919050565b5f612205826121da565b9050919050565b5f612216826121fb565b9050919050565b6122268161220c565b82525050565b5f60208201905061223f5f83018461221d565b92915050565b61224e816120ef565b82525050565b5f6020820190506122675f830184612245565b92915050565b5f805f606084860312156122845761228361208d565b5b5f612291868287016120db565b93505060206122a2868287016120db565b92505060406122b38682870161210e565b9150509250925092565b5f60ff82169050919050565b6122d2816122bd565b82525050565b5f6020820190506122eb5f8301846122c9565b92915050565b6122fa816120b4565b82525050565b5f6020820190506123135f8301846122f1565b92915050565b5f6020828403121561232e5761232d61208d565b5b5f61233b8482850161210e565b91505092915050565b5f602082840312156123595761235861208d565b5b5f612366848285016120db565b91505092915050565b61237881612160565b8114612382575f80fd5b50565b5f813590506123938161236f565b92915050565b5f602082840312156123ae576123ad61208d565b5b5f6123bb84828501612385565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126123e5576123e46123c4565b5b8235905067ffffffffffffffff811115612402576124016123c8565b5b60208301915083602082028301111561241e5761241d6123cc565b5b9250929050565b5f805f6040848603121561243c5761243b61208d565b5b5f84013567ffffffffffffffff81111561245957612458612091565b5b612465868287016123d0565b9350935050602061247886828701612385565b9150509250925092565b5f80604083850312156124985761249761208d565b5b5f6124a5858286016120db565b92505060206124b6858286016120db565b9150509250929050565b7f42757920746178206d757374206265206265747765656e20302520616e6420395f8201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b5f61251a602283612007565b9150612525826124c0565b604082019050919050565b5f6020820190508181035f8301526125478161250e565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e64205f8201527f3935250000000000000000000000000000000000000000000000000000000000602082015250565b5f6125a8602383612007565b91506125b38261254e565b604082019050919050565b5f6020820190508181035f8301526125d58161259c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612663602683612007565b915061266e82612609565b604082019050919050565b5f6020820190508181035f83015261269081612657565b9050919050565b7f43616e277420617070726f76652066726f6d207a65726f2061646472657373005f82015250565b5f6126cb601f83612007565b91506126d682612697565b602082019050919050565b5f6020820190508181035f8301526126f8816126bf565b9050919050565b7f43616e277420617070726f766520746f207a65726f20616464726573730000005f82015250565b5f612733601d83612007565b915061273e826126ff565b602082019050919050565b5f6020820190508181035f83015261276081612727565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61279b602083612007565b91506127a682612767565b602082019050919050565b5f6020820190508181035f8301526127c88161278f565b9050919050565b7f43616e74207472616e736665722066726f6d2061646472657373207a65726f005f82015250565b5f612803601f83612007565b915061280e826127cf565b602082019050919050565b5f6020820190508181035f830152612830816127f7565b9050919050565b7f43616e74207472616e7366657220746f2061646472657373207a65726f0000005f82015250565b5f61286b601d83612007565b915061287682612837565b602082019050919050565b5f6020820190508181035f8301526128988161285f565b9050919050565b7f416d6f756e742073686f756c642062652061626f7665207a65726f00000000005f82015250565b5f6128d3601b83612007565b91506128de8261289f565b602082019050919050565b5f6020820190508181035f830152612900816128c7565b9050919050565b7f4f6e6c79206f776e65722063616e207472616465206265666f726520747261645f8201527f696e672061637469766174696f6e000000000000000000000000000000000000602082015250565b5f612961602e83612007565b915061296c82612907565b604082019050919050565b5f6020820190508181035f83015261298e81612955565b9050919050565b7f4578636565646564206d6178207472616e73616374696f6e206c696d697400005f82015250565b5f6129c9601e83612007565b91506129d482612995565b602082019050919050565b5f6020820190508181035f8301526129f6816129bd565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612a34826120ef565b9150612a3f836120ef565b9250828201905080821115612a5757612a566129fd565b5b92915050565b7f45786365656473206d617820686f6c642062616c616e636500000000000000005f82015250565b5f612a91601883612007565b9150612a9c82612a5d565b602082019050919050565b5f6020820190508181035f830152612abe81612a85565b9050919050565b5f612acf826120ef565b9150612ada836120ef565b9250828203905081811115612af257612af16129fd565b5b92915050565b7f416d6f756e742068617320746f206265206c657373207468616e20746f74616c5f8201527f207265666c656374696f6e730000000000000000000000000000000000000000602082015250565b5f612b52602c83612007565b9150612b5d82612af8565b604082019050919050565b5f6020820190508181035f830152612b7f81612b46565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050612bc1816120c5565b92915050565b5f60208284031215612bdc57612bdb61208d565b5b5f612be984828501612bb3565b91505092915050565b5f819050919050565b5f612c15612c10612c0b84612bf2565b6121d1565b6120ef565b9050919050565b612c2581612bfb565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612c5d816120b4565b82525050565b5f612c6e8383612c54565b60208301905092915050565b5f602082019050919050565b5f612c9082612c2b565b612c9a8185612c35565b9350612ca583612c45565b805f5b83811015612cd5578151612cbc8882612c63565b9750612cc783612c7a565b925050600181019050612ca8565b5085935050505092915050565b5f60a082019050612cf55f830188612245565b612d026020830187612c1c565b8181036040830152612d148186612c86565b9050612d2360608301856122f1565b612d306080830184612245565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612d71826120ef565b9150612d7c836120ef565b925082612d8c57612d8b612d3a565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f612dcb601b83612007565b9150612dd682612d97565b602082019050919050565b5f6020820190508181035f830152612df881612dbf565b9050919050565b5f612e09826120ef565b9150612e14836120ef565b9250828202612e22816120ef565b91508282048414831517612e3957612e386129fd565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612e9a602183612007565b9150612ea582612e40565b604082019050919050565b5f6020820190508181035f830152612ec781612e8e565b905091905056fe746865207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208acbcd9b8859c669f7e069baa24d18df479737b815e99a8fae0bcb0a876effa164736f6c63430008190033
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.