Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000 MOKA
Holders
34
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
MOKA
Compiler Version
v0.8.26+commit.8a97fa7a
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
/** Telegram: t.me/mokaerc https://x.com/ModdedQuad/status/1803649716749824471 The name of the cat is Moka Proof: https://x.com/cocolog_cat/media https://www.instagram.com/cocolog_cat/ https://www.instagram.com/p/BaMfdemBE0e */ //SPDX-License-Identifier: NONE pragma solidity ^0.8.21; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } 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 ); } contract MOKA is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "Moka"; string private constant _symbol = "MOKA"; uint8 private constant _decimals = 9; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _redisFeeOnBuy = 0; uint256 private _taxFeeOnBuy = 20; uint256 private _redisFeeOnSell = 0; uint256 private _taxFeeOnSell = 25; uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; address payable private _developmentAddress; address payable private _marketingAddress; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen = true; bool private inSwap = false; bool private swapEnabled = true; uint256 private sellCount = 0; uint256 public maxsalesCount = 3; uint256 private lastSellBlock = 0; uint256 public _maxTxAmount = 20000 * 10**9; uint256 public _maxWalletSize = 20000 * 10**9; uint256 public _swapTokensAtAmount = 20000 * 10**9; uint256 public _initMaxTxAmount = 20000 * 10**9; event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor() payable { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);// uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_developmentAddress] = true; _isExcludedFromFee[_marketingAddress] = true; _developmentAddress = payable(_msgSender()); _marketingAddress = payable(_msgSender()); emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function tokenFromReflection(uint256 rAmount) private view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function removeAllFee() private { if (_redisFee == 0 && _taxFee == 0) return; _previousredisFee = _redisFee; _previoustaxFee = _taxFee; _redisFee = 0; _taxFee = 0; } function restoreAllFee() private { _redisFee = _previousredisFee; _taxFee = _previoustaxFee; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (from != owner() && to != owner()) { //Trade start check if (!tradingOpen) { require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled"); } if (from != address(this)) //add liquidity quick fix require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!"); if(to != uniswapV2Pair) { require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if(contractTokenBalance >= _initMaxTxAmount) { contractTokenBalance = min(amount,min(contractTokenBalance,_initMaxTxAmount)); } if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { if (block.number > lastSellBlock) { sellCount = 0; } require(sellCount < maxsalesCount, "Block sell limit"); swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } sellCount++; lastSellBlock = block.number; } } bool takeFee = true; //Transfer Tokens if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) { takeFee = false; } else { //Set Fee for Buys if(from == uniswapV2Pair && to != address(uniswapV2Router)) { _redisFee = _redisFeeOnBuy; _taxFee = _taxFeeOnBuy; } //Set Fee for Sells if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _redisFee = _redisFeeOnSell; _taxFee = _taxFeeOnSell; } } _tokenTransfer(from, to, amount, takeFee); } function min(uint256 a, uint256 b) private pure returns (uint256){ return (a>b)?b:a; } function swapTokensForEth(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 sendETHToFee(uint256 amount) private { _marketingAddress.transfer(amount); } function openTrading() public onlyOwner { tradingOpen = true; _addLiquidity(address(this).balance); } function _addLiquidity(uint256 ethAmount) internal { _approve(address(this), address(uniswapV2Router), type(uint256).max); transfer(address(this), balanceOf(msg.sender).mul(96).div(100)); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), balanceOf(address(this)), 0, 0, address(owner()), block.timestamp ); } function manualswap() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function blockBots(address[] memory bots_) public onlyOwner { for (uint256 i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function Bot(address notbot) public onlyOwner { bots[notbot] = false; } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); _transferStandard(sender, recipient, amount); if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _redisFee, _taxFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues( uint256 tAmount, uint256 redisFee, uint256 taxFee ) private pure returns ( uint256, uint256, uint256 ) { uint256 tFee = tAmount.mul(redisFee).div(100); uint256 tTeam = tAmount.mul(taxFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner { _redisFeeOnBuy = redisFeeOnBuy; _redisFeeOnSell = redisFeeOnSell; _taxFeeOnBuy = taxFeeOnBuy; _taxFeeOnSell = taxFeeOnSell; } function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } function toggleSwap(bool _swapEnabled) public onlyOwner { swapEnabled = _swapEnabled; } function SellBlockAmount(uint256 _maxsells) public onlyOwner { maxsalesCount = _maxsells; } function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner { _maxTxAmount = maxTxAmount; } function Trading() public onlyOwner { _maxTxAmount = _initMaxTxAmount; } function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner { _maxWalletSize = maxWalletSize; } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFee[accounts[i]] = excluded; } } }
{ "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":"payable","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":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":[{"internalType":"address","name":"notbot","type":"address"}],"name":"Bot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxsells","type":"uint256"}],"name":"SellBlockAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Trading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_initMaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","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":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxsalesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","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":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","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
608060405266038d7ea4c680005f1961001891906106db565b5f196100249190610738565b6006555f60085560146009555f600a556019600b55600a54600c55600b54600d55600c54600e55600d54600f556001601560146101000a81548160ff0219169083151502179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055505f60165560036017555f6018556512309ce540006019556512309ce54000601a556512309ce54000601b556512309ce54000601c555f6100e461067760201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f61019461067760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610272573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061029691906107c9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031f91906107c9565b6040518363ffffffff1660e01b815260040161033c929190610803565b6020604051808303815f875af1158015610358573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037c91906107c9565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f6103ce61067e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061056c61067760201b60201c565b60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506105b961067760201b60201c565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061060661067760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c680006040516106699190610839565b60405180910390a350610852565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6106e5826106a5565b91506106f0836106a5565b925082610700576106ff6106ae565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610742826106a5565b915061074d836106a5565b92508282039050818111156107655761076461070b565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6107988261076f565b9050919050565b6107a88161078e565b81146107b2575f80fd5b50565b5f815190506107c38161079f565b92915050565b5f602082840312156107de576107dd61076b565b5b5f6107eb848285016107b5565b91505092915050565b6107fd8161078e565b82525050565b5f6040820190506108165f8301856107f4565b61082360208301846107f4565b9392505050565b610833816106a5565b82525050565b5f60208201905061084c5f83018461082a565b92915050565b61412c8061085f5f395ff3fe6080604052600436106101fb575f3560e01c80637f2feddc1161010c578063bc0ad5a31161009f578063c9567bf91161006e578063c9567bf9146106d6578063dd62ed3e146106ec578063ea1644d514610728578063f2fde38b14610750578063fe5e71761461077857610202565b8063bc0ad5a314610646578063bfd792841461065c578063c3c8cd8014610698578063c492f046146106ae57610202565b806398a5c315116100db57806398a5c315146105905780639f431789146105b8578063a2a957bb146105e2578063a9059cbb1461060a57610202565b80637f2feddc146104d65780638da5cb5b146105125780638f9a55c01461053c57806395d89b411461056657610202565b80634424e26f1161018f57806370a082311161015e57806370a0823114610408578063715018a61461044457806374010ece1461045a5780637d1db4a5146104825780637ddd1a32146104ac57610202565b80634424e26f1461037857806349bd5a5e146103a05780636d8aa8f8146103ca5780636fc3eaec146103f257610202565b806318160ddd116101cb57806318160ddd146102be57806323b872dd146102e85780632fd689e314610324578063313ce5671461034e57610202565b8062b8cf2a1461020657806306fdde031461022e578063095ea7b3146102585780631694505e1461029457610202565b3661020257005b5f80fd5b348015610211575f80fd5b5061022c6004803603810190610227919061306f565b6107a0565b005b348015610239575f80fd5b506102426108bf565b60405161024f9190613116565b60405180910390f35b348015610263575f80fd5b5061027e60048036038101906102799190613169565b6108fc565b60405161028b91906131c1565b60405180910390f35b34801561029f575f80fd5b506102a8610919565b6040516102b59190613235565b60405180910390f35b3480156102c9575f80fd5b506102d261093e565b6040516102df919061325d565b60405180910390f35b3480156102f3575f80fd5b5061030e60048036038101906103099190613276565b61094c565b60405161031b91906131c1565b60405180910390f35b34801561032f575f80fd5b50610338610a20565b604051610345919061325d565b60405180910390f35b348015610359575f80fd5b50610362610a26565b60405161036f91906132e1565b60405180910390f35b348015610383575f80fd5b5061039e600480360381019061039991906132fa565b610a2e565b005b3480156103ab575f80fd5b506103b4610b19565b6040516103c19190613334565b60405180910390f35b3480156103d5575f80fd5b506103f060048036038101906103eb9190613377565b610b3e565b005b3480156103fd575f80fd5b50610406610bef565b005b348015610413575f80fd5b5061042e600480360381019061042991906132fa565b610cbc565b60405161043b919061325d565b60405180910390f35b34801561044f575f80fd5b50610458610d0a565b005b348015610465575f80fd5b50610480600480360381019061047b91906133a2565b610e58565b005b34801561048d575f80fd5b50610496610ef6565b6040516104a3919061325d565b60405180910390f35b3480156104b7575f80fd5b506104c0610efc565b6040516104cd919061325d565b60405180910390f35b3480156104e1575f80fd5b506104fc60048036038101906104f791906132fa565b610f02565b604051610509919061325d565b60405180910390f35b34801561051d575f80fd5b50610526610f17565b6040516105339190613334565b60405180910390f35b348015610547575f80fd5b50610550610f3e565b60405161055d919061325d565b60405180910390f35b348015610571575f80fd5b5061057a610f44565b6040516105879190613116565b60405180910390f35b34801561059b575f80fd5b506105b660048036038101906105b191906133a2565b610f81565b005b3480156105c3575f80fd5b506105cc61101f565b6040516105d9919061325d565b60405180910390f35b3480156105ed575f80fd5b50610608600480360381019061060391906133cd565b611025565b005b348015610615575f80fd5b50610630600480360381019061062b9190613169565b6110db565b60405161063d91906131c1565b60405180910390f35b348015610651575f80fd5b5061065a6110f8565b005b348015610667575f80fd5b50610682600480360381019061067d91906132fa565b611197565b60405161068f91906131c1565b60405180910390f35b3480156106a3575f80fd5b506106ac6111b4565b005b3480156106b9575f80fd5b506106d460048036038101906106cf919061348a565b611289565b005b3480156106e1575f80fd5b506106ea6113b8565b005b3480156106f7575f80fd5b50610712600480360381019061070d91906134e7565b611472565b60405161071f919061325d565b60405180910390f35b348015610733575f80fd5b5061074e600480360381019061074991906133a2565b6114f4565b005b34801561075b575f80fd5b50610776600480360381019061077191906132fa565b611592565b005b348015610783575f80fd5b5061079e600480360381019061079991906133a2565b61174f565b005b6107a86117ed565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082b9061356f565b60405180910390fd5b5f5b81518110156108bb57600160105f8484815181106108575761085661358d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610836565b5050565b60606040518060400160405280600481526020017f4d6f6b6100000000000000000000000000000000000000000000000000000000815250905090565b5f61090f6109086117ed565b84846117f4565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f66038d7ea4c68000905090565b5f6109588484846119b7565b610a15846109646117ed565b610a10856040518060600160405280602881526020016140cf6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109c76117ed565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122d39092919063ffffffff16565b6117f4565b600190509392505050565b601b5481565b5f6009905090565b610a366117ed565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab99061356f565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b466117ed565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc99061356f565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c2f6117ed565b73ffffffffffffffffffffffffffffffffffffffff161480610ca4575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c8c6117ed565b73ffffffffffffffffffffffffffffffffffffffff16145b610cac575f80fd5b5f479050610cb981612335565b50565b5f610d0360025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461239d565b9050919050565b610d126117ed565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d959061356f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e606117ed565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee39061356f565b60405180910390fd5b8060198190555050565b60195481565b60175481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601a5481565b60606040518060400160405280600481526020017f4d4f4b4100000000000000000000000000000000000000000000000000000000815250905090565b610f896117ed565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100c9061356f565b60405180910390fd5b80601b8190555050565b601c5481565b61102d6117ed565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b09061356f565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f6110ee6110e76117ed565b84846119b7565b6001905092915050565b6111006117ed565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461118c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111839061356f565b60405180910390fd5b601c54601981905550565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111f46117ed565b73ffffffffffffffffffffffffffffffffffffffff161480611269575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112516117ed565b73ffffffffffffffffffffffffffffffffffffffff16145b611271575f80fd5b5f61127b30610cbc565b905061128681612409565b50565b6112916117ed565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461131d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113149061356f565b60405180910390fd5b5f5b838390508110156113b2578160055f8686858181106113415761134061358d565b5b905060200201602081019061135691906132fa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061131f565b50505050565b6113c06117ed565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461144c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114439061356f565b60405180910390fd5b6001601560146101000a81548160ff02191690831515021790555061147047612672565b565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6114fc6117ed565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157f9061356f565b60405180910390fd5b80601a8190555050565b61159a6117ed565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161d9061356f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168b9061362a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6117576117ed565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117da9061356f565b60405180910390fd5b8060178190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611862576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611859906136b8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c790613746565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119aa919061325d565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c906137d4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8a90613862565b60405180910390fd5b5f8111611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc906138f0565b60405180910390fd5b611add610f17565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b4b5750611b1b610f17565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611fe057601560149054906101000a900460ff16611bda57611b6c610f17565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611bd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd09061397e565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611c5357601954811115611c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c49906139e6565b60405180910390fd5b5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611cf1575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611d30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2790613a74565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ddc57601a5481611d9184610cbc565b611d9b9190613abf565b10611ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd290613b62565b60405180910390fd5b5b5f611de630610cbc565b90505f601b548210159050601c548210611e1257611e0f83611e0a84601c546127b2565b6127b2565b91505b808015611e2a575060158054906101000a900460ff16155b8015611e83575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611e9b5750601560169054906101000a900460ff165b8015611eee575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611f41575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611fdd57601854431115611f58575f6016819055505b60175460165410611f9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9590613bca565b60405180910390fd5b611fa782612409565b5f4790505f811115611fbd57611fbc47612335565b5b60165f815480929190611fcf90613be8565b919050555043601881905550505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612080575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612131575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612130575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561213e575f90506122c1565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156121e7575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156121ff57600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156122a8575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156122c057600a54600c81905550600b54600d819055505b5b6122cd848484846127ca565b50505050565b5f83831115829061231a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123119190613116565b60405180910390fd5b505f83856123289190613c2f565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612399573d5f803e3d5ffd5b5050565b5f6006548211156123e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123da90613cd2565b60405180910390fd5b5f6123ec6127f7565b9050612401818461282090919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561243f5761243e612ed9565b5b60405190808252806020026020018201604052801561246d5781602001602082028036833780820191505090505b50905030815f815181106124845761248361358d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612528573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061254c9190613d04565b816001815181106125605761255f61358d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125c63060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117f4565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612628959493929190613e1f565b5f604051808303815f87803b15801561263f575f80fd5b505af1158015612651573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b6126be3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6117f4565b6126f6306126f160646126e360606126d533610cbc565b61286990919063ffffffff16565b61282090919063ffffffff16565b6110db565b5060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823061273f30610cbc565b5f80612749610f17565b426040518863ffffffff1660e01b815260040161276b96959493929190613e77565b60606040518083038185885af1158015612787573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906127ac9190613eea565b50505050565b5f8183116127c057826127c2565b815b905092915050565b806127d8576127d76128e0565b5b6127e3848484612919565b806127f1576127f0612ad9565b5b50505050565b5f805f612802612aed565b91509150612819818361282090919063ffffffff16565b9250505090565b5f61286183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b46565b905092915050565b5f808303612879575f90506128da565b5f82846128869190613f3a565b90508284826128959190613fa8565b146128d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128cc90614048565b60405180910390fd5b809150505b92915050565b5f600c541480156128f257505f600d54145b61291757600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061292887612ba7565b9550955095509550955095506129848660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c0790919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612a158560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c5090919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612a5f81612cad565b612a698483612d64565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612ac6919061325d565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f66038d7ea4c680009050612b1c66038d7ea4c6800060065461282090919063ffffffff16565b821015612b395760065466038d7ea4c68000935093505050612b42565b81819350935050505b9091565b5f8083118290612b8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b839190613116565b60405180910390fd5b505f8385612b9a9190613fa8565b9050809150509392505050565b5f805f805f805f805f612bbf8a600c54600d54612d9e565b9250925092505f612bce6127f7565b90505f805f612bdf8e878787612e30565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f612c4883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122d3565b905092915050565b5f808284612c5e9190613abf565b905083811015612ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9a906140b0565b60405180910390fd5b8091505092915050565b5f612cb66127f7565b90505f612ccc828461286990919063ffffffff16565b9050612d1e8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c5090919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612d7982600654612c0790919063ffffffff16565b600681905550612d9481600754612c5090919063ffffffff16565b6007819055505050565b5f805f80612dc86064612dba888a61286990919063ffffffff16565b61282090919063ffffffff16565b90505f612df16064612de3888b61286990919063ffffffff16565b61282090919063ffffffff16565b90505f612e1982612e0b858c612c0790919063ffffffff16565b612c0790919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612e47858961286990919063ffffffff16565b90505f612e5d868961286990919063ffffffff16565b90505f612e73878961286990919063ffffffff16565b90505f612e9b82612e8d8587612c0790919063ffffffff16565b612c0790919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612f0f82612ec9565b810181811067ffffffffffffffff82111715612f2e57612f2d612ed9565b5b80604052505050565b5f612f40612eb4565b9050612f4c8282612f06565b919050565b5f67ffffffffffffffff821115612f6b57612f6a612ed9565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612fa982612f80565b9050919050565b612fb981612f9f565b8114612fc3575f80fd5b50565b5f81359050612fd481612fb0565b92915050565b5f612fec612fe784612f51565b612f37565b9050808382526020820190506020840283018581111561300f5761300e612f7c565b5b835b8181101561303857806130248882612fc6565b845260208401935050602081019050613011565b5050509392505050565b5f82601f83011261305657613055612ec5565b5b8135613066848260208601612fda565b91505092915050565b5f6020828403121561308457613083612ebd565b5b5f82013567ffffffffffffffff8111156130a1576130a0612ec1565b5b6130ad84828501613042565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f6130e8826130b6565b6130f281856130c0565b93506131028185602086016130d0565b61310b81612ec9565b840191505092915050565b5f6020820190508181035f83015261312e81846130de565b905092915050565b5f819050919050565b61314881613136565b8114613152575f80fd5b50565b5f813590506131638161313f565b92915050565b5f806040838503121561317f5761317e612ebd565b5b5f61318c85828601612fc6565b925050602061319d85828601613155565b9150509250929050565b5f8115159050919050565b6131bb816131a7565b82525050565b5f6020820190506131d45f8301846131b2565b92915050565b5f819050919050565b5f6131fd6131f86131f384612f80565b6131da565b612f80565b9050919050565b5f61320e826131e3565b9050919050565b5f61321f82613204565b9050919050565b61322f81613215565b82525050565b5f6020820190506132485f830184613226565b92915050565b61325781613136565b82525050565b5f6020820190506132705f83018461324e565b92915050565b5f805f6060848603121561328d5761328c612ebd565b5b5f61329a86828701612fc6565b93505060206132ab86828701612fc6565b92505060406132bc86828701613155565b9150509250925092565b5f60ff82169050919050565b6132db816132c6565b82525050565b5f6020820190506132f45f8301846132d2565b92915050565b5f6020828403121561330f5761330e612ebd565b5b5f61331c84828501612fc6565b91505092915050565b61332e81612f9f565b82525050565b5f6020820190506133475f830184613325565b92915050565b613356816131a7565b8114613360575f80fd5b50565b5f813590506133718161334d565b92915050565b5f6020828403121561338c5761338b612ebd565b5b5f61339984828501613363565b91505092915050565b5f602082840312156133b7576133b6612ebd565b5b5f6133c484828501613155565b91505092915050565b5f805f80608085870312156133e5576133e4612ebd565b5b5f6133f287828801613155565b945050602061340387828801613155565b935050604061341487828801613155565b925050606061342587828801613155565b91505092959194509250565b5f80fd5b5f8083601f84011261344a57613449612ec5565b5b8235905067ffffffffffffffff81111561346757613466613431565b5b60208301915083602082028301111561348357613482612f7c565b5b9250929050565b5f805f604084860312156134a1576134a0612ebd565b5b5f84013567ffffffffffffffff8111156134be576134bd612ec1565b5b6134ca86828701613435565b935093505060206134dd86828701613363565b9150509250925092565b5f80604083850312156134fd576134fc612ebd565b5b5f61350a85828601612fc6565b925050602061351b85828601612fc6565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6135596020836130c0565b915061356482613525565b602082019050919050565b5f6020820190508181035f8301526135868161354d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6136146026836130c0565b915061361f826135ba565b604082019050919050565b5f6020820190508181035f83015261364181613608565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6136a26024836130c0565b91506136ad82613648565b604082019050919050565b5f6020820190508181035f8301526136cf81613696565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6137306022836130c0565b915061373b826136d6565b604082019050919050565b5f6020820190508181035f83015261375d81613724565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6137be6025836130c0565b91506137c982613764565b604082019050919050565b5f6020820190508181035f8301526137eb816137b2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61384c6023836130c0565b9150613857826137f2565b604082019050919050565b5f6020820190508181035f83015261387981613840565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6138da6029836130c0565b91506138e582613880565b604082019050919050565b5f6020820190508181035f830152613907816138ce565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613968603f836130c0565b91506139738261390e565b604082019050919050565b5f6020820190508181035f8301526139958161395c565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6139d0601c836130c0565b91506139db8261399c565b602082019050919050565b5f6020820190508181035f8301526139fd816139c4565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f613a5e6023836130c0565b9150613a6982613a04565b604082019050919050565b5f6020820190508181035f830152613a8b81613a52565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613ac982613136565b9150613ad483613136565b9250828201905080821115613aec57613aeb613a92565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613b4c6023836130c0565b9150613b5782613af2565b604082019050919050565b5f6020820190508181035f830152613b7981613b40565b9050919050565b7f426c6f636b2073656c6c206c696d6974000000000000000000000000000000005f82015250565b5f613bb46010836130c0565b9150613bbf82613b80565b602082019050919050565b5f6020820190508181035f830152613be181613ba8565b9050919050565b5f613bf282613136565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c2457613c23613a92565b5b600182019050919050565b5f613c3982613136565b9150613c4483613136565b9250828203905081811115613c5c57613c5b613a92565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613cbc602a836130c0565b9150613cc782613c62565b604082019050919050565b5f6020820190508181035f830152613ce981613cb0565b9050919050565b5f81519050613cfe81612fb0565b92915050565b5f60208284031215613d1957613d18612ebd565b5b5f613d2684828501613cf0565b91505092915050565b5f819050919050565b5f613d52613d4d613d4884613d2f565b6131da565b613136565b9050919050565b613d6281613d38565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613d9a81612f9f565b82525050565b5f613dab8383613d91565b60208301905092915050565b5f602082019050919050565b5f613dcd82613d68565b613dd78185613d72565b9350613de283613d82565b805f5b83811015613e12578151613df98882613da0565b9750613e0483613db7565b925050600181019050613de5565b5085935050505092915050565b5f60a082019050613e325f83018861324e565b613e3f6020830187613d59565b8181036040830152613e518186613dc3565b9050613e606060830185613325565b613e6d608083018461324e565b9695505050505050565b5f60c082019050613e8a5f830189613325565b613e97602083018861324e565b613ea46040830187613d59565b613eb16060830186613d59565b613ebe6080830185613325565b613ecb60a083018461324e565b979650505050505050565b5f81519050613ee48161313f565b92915050565b5f805f60608486031215613f0157613f00612ebd565b5b5f613f0e86828701613ed6565b9350506020613f1f86828701613ed6565b9250506040613f3086828701613ed6565b9150509250925092565b5f613f4482613136565b9150613f4f83613136565b9250828202613f5d81613136565b91508282048414831517613f7457613f73613a92565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613fb282613136565b9150613fbd83613136565b925082613fcd57613fcc613f7b565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6140326021836130c0565b915061403d82613fd8565b604082019050919050565b5f6020820190508181035f83015261405f81614026565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61409a601b836130c0565b91506140a582614066565b602082019050919050565b5f6020820190508181035f8301526140c78161408e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d8c2a20e2af33c306e46464e8b39bb612b7c99e617737b299b0d42d9397e004864736f6c634300081a0033
Deployed Bytecode
0x6080604052600436106101fb575f3560e01c80637f2feddc1161010c578063bc0ad5a31161009f578063c9567bf91161006e578063c9567bf9146106d6578063dd62ed3e146106ec578063ea1644d514610728578063f2fde38b14610750578063fe5e71761461077857610202565b8063bc0ad5a314610646578063bfd792841461065c578063c3c8cd8014610698578063c492f046146106ae57610202565b806398a5c315116100db57806398a5c315146105905780639f431789146105b8578063a2a957bb146105e2578063a9059cbb1461060a57610202565b80637f2feddc146104d65780638da5cb5b146105125780638f9a55c01461053c57806395d89b411461056657610202565b80634424e26f1161018f57806370a082311161015e57806370a0823114610408578063715018a61461044457806374010ece1461045a5780637d1db4a5146104825780637ddd1a32146104ac57610202565b80634424e26f1461037857806349bd5a5e146103a05780636d8aa8f8146103ca5780636fc3eaec146103f257610202565b806318160ddd116101cb57806318160ddd146102be57806323b872dd146102e85780632fd689e314610324578063313ce5671461034e57610202565b8062b8cf2a1461020657806306fdde031461022e578063095ea7b3146102585780631694505e1461029457610202565b3661020257005b5f80fd5b348015610211575f80fd5b5061022c6004803603810190610227919061306f565b6107a0565b005b348015610239575f80fd5b506102426108bf565b60405161024f9190613116565b60405180910390f35b348015610263575f80fd5b5061027e60048036038101906102799190613169565b6108fc565b60405161028b91906131c1565b60405180910390f35b34801561029f575f80fd5b506102a8610919565b6040516102b59190613235565b60405180910390f35b3480156102c9575f80fd5b506102d261093e565b6040516102df919061325d565b60405180910390f35b3480156102f3575f80fd5b5061030e60048036038101906103099190613276565b61094c565b60405161031b91906131c1565b60405180910390f35b34801561032f575f80fd5b50610338610a20565b604051610345919061325d565b60405180910390f35b348015610359575f80fd5b50610362610a26565b60405161036f91906132e1565b60405180910390f35b348015610383575f80fd5b5061039e600480360381019061039991906132fa565b610a2e565b005b3480156103ab575f80fd5b506103b4610b19565b6040516103c19190613334565b60405180910390f35b3480156103d5575f80fd5b506103f060048036038101906103eb9190613377565b610b3e565b005b3480156103fd575f80fd5b50610406610bef565b005b348015610413575f80fd5b5061042e600480360381019061042991906132fa565b610cbc565b60405161043b919061325d565b60405180910390f35b34801561044f575f80fd5b50610458610d0a565b005b348015610465575f80fd5b50610480600480360381019061047b91906133a2565b610e58565b005b34801561048d575f80fd5b50610496610ef6565b6040516104a3919061325d565b60405180910390f35b3480156104b7575f80fd5b506104c0610efc565b6040516104cd919061325d565b60405180910390f35b3480156104e1575f80fd5b506104fc60048036038101906104f791906132fa565b610f02565b604051610509919061325d565b60405180910390f35b34801561051d575f80fd5b50610526610f17565b6040516105339190613334565b60405180910390f35b348015610547575f80fd5b50610550610f3e565b60405161055d919061325d565b60405180910390f35b348015610571575f80fd5b5061057a610f44565b6040516105879190613116565b60405180910390f35b34801561059b575f80fd5b506105b660048036038101906105b191906133a2565b610f81565b005b3480156105c3575f80fd5b506105cc61101f565b6040516105d9919061325d565b60405180910390f35b3480156105ed575f80fd5b50610608600480360381019061060391906133cd565b611025565b005b348015610615575f80fd5b50610630600480360381019061062b9190613169565b6110db565b60405161063d91906131c1565b60405180910390f35b348015610651575f80fd5b5061065a6110f8565b005b348015610667575f80fd5b50610682600480360381019061067d91906132fa565b611197565b60405161068f91906131c1565b60405180910390f35b3480156106a3575f80fd5b506106ac6111b4565b005b3480156106b9575f80fd5b506106d460048036038101906106cf919061348a565b611289565b005b3480156106e1575f80fd5b506106ea6113b8565b005b3480156106f7575f80fd5b50610712600480360381019061070d91906134e7565b611472565b60405161071f919061325d565b60405180910390f35b348015610733575f80fd5b5061074e600480360381019061074991906133a2565b6114f4565b005b34801561075b575f80fd5b50610776600480360381019061077191906132fa565b611592565b005b348015610783575f80fd5b5061079e600480360381019061079991906133a2565b61174f565b005b6107a86117ed565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082b9061356f565b60405180910390fd5b5f5b81518110156108bb57600160105f8484815181106108575761085661358d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610836565b5050565b60606040518060400160405280600481526020017f4d6f6b6100000000000000000000000000000000000000000000000000000000815250905090565b5f61090f6109086117ed565b84846117f4565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f66038d7ea4c68000905090565b5f6109588484846119b7565b610a15846109646117ed565b610a10856040518060600160405280602881526020016140cf6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109c76117ed565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122d39092919063ffffffff16565b6117f4565b600190509392505050565b601b5481565b5f6009905090565b610a366117ed565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab99061356f565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b466117ed565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc99061356f565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c2f6117ed565b73ffffffffffffffffffffffffffffffffffffffff161480610ca4575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c8c6117ed565b73ffffffffffffffffffffffffffffffffffffffff16145b610cac575f80fd5b5f479050610cb981612335565b50565b5f610d0360025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461239d565b9050919050565b610d126117ed565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d959061356f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e606117ed565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee39061356f565b60405180910390fd5b8060198190555050565b60195481565b60175481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601a5481565b60606040518060400160405280600481526020017f4d4f4b4100000000000000000000000000000000000000000000000000000000815250905090565b610f896117ed565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100c9061356f565b60405180910390fd5b80601b8190555050565b601c5481565b61102d6117ed565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b09061356f565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f6110ee6110e76117ed565b84846119b7565b6001905092915050565b6111006117ed565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461118c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111839061356f565b60405180910390fd5b601c54601981905550565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111f46117ed565b73ffffffffffffffffffffffffffffffffffffffff161480611269575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112516117ed565b73ffffffffffffffffffffffffffffffffffffffff16145b611271575f80fd5b5f61127b30610cbc565b905061128681612409565b50565b6112916117ed565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461131d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113149061356f565b60405180910390fd5b5f5b838390508110156113b2578160055f8686858181106113415761134061358d565b5b905060200201602081019061135691906132fa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061131f565b50505050565b6113c06117ed565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461144c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114439061356f565b60405180910390fd5b6001601560146101000a81548160ff02191690831515021790555061147047612672565b565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6114fc6117ed565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157f9061356f565b60405180910390fd5b80601a8190555050565b61159a6117ed565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161d9061356f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168b9061362a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6117576117ed565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117da9061356f565b60405180910390fd5b8060178190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611862576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611859906136b8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c790613746565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119aa919061325d565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c906137d4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8a90613862565b60405180910390fd5b5f8111611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc906138f0565b60405180910390fd5b611add610f17565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b4b5750611b1b610f17565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611fe057601560149054906101000a900460ff16611bda57611b6c610f17565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611bd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd09061397e565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611c5357601954811115611c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c49906139e6565b60405180910390fd5b5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611cf1575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611d30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2790613a74565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ddc57601a5481611d9184610cbc565b611d9b9190613abf565b10611ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd290613b62565b60405180910390fd5b5b5f611de630610cbc565b90505f601b548210159050601c548210611e1257611e0f83611e0a84601c546127b2565b6127b2565b91505b808015611e2a575060158054906101000a900460ff16155b8015611e83575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611e9b5750601560169054906101000a900460ff165b8015611eee575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611f41575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611fdd57601854431115611f58575f6016819055505b60175460165410611f9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9590613bca565b60405180910390fd5b611fa782612409565b5f4790505f811115611fbd57611fbc47612335565b5b60165f815480929190611fcf90613be8565b919050555043601881905550505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612080575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612131575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612130575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561213e575f90506122c1565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156121e7575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156121ff57600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156122a8575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156122c057600a54600c81905550600b54600d819055505b5b6122cd848484846127ca565b50505050565b5f83831115829061231a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123119190613116565b60405180910390fd5b505f83856123289190613c2f565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612399573d5f803e3d5ffd5b5050565b5f6006548211156123e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123da90613cd2565b60405180910390fd5b5f6123ec6127f7565b9050612401818461282090919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561243f5761243e612ed9565b5b60405190808252806020026020018201604052801561246d5781602001602082028036833780820191505090505b50905030815f815181106124845761248361358d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612528573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061254c9190613d04565b816001815181106125605761255f61358d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125c63060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117f4565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612628959493929190613e1f565b5f604051808303815f87803b15801561263f575f80fd5b505af1158015612651573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b6126be3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6117f4565b6126f6306126f160646126e360606126d533610cbc565b61286990919063ffffffff16565b61282090919063ffffffff16565b6110db565b5060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823061273f30610cbc565b5f80612749610f17565b426040518863ffffffff1660e01b815260040161276b96959493929190613e77565b60606040518083038185885af1158015612787573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906127ac9190613eea565b50505050565b5f8183116127c057826127c2565b815b905092915050565b806127d8576127d76128e0565b5b6127e3848484612919565b806127f1576127f0612ad9565b5b50505050565b5f805f612802612aed565b91509150612819818361282090919063ffffffff16565b9250505090565b5f61286183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b46565b905092915050565b5f808303612879575f90506128da565b5f82846128869190613f3a565b90508284826128959190613fa8565b146128d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128cc90614048565b60405180910390fd5b809150505b92915050565b5f600c541480156128f257505f600d54145b61291757600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061292887612ba7565b9550955095509550955095506129848660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c0790919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612a158560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c5090919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612a5f81612cad565b612a698483612d64565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612ac6919061325d565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f66038d7ea4c680009050612b1c66038d7ea4c6800060065461282090919063ffffffff16565b821015612b395760065466038d7ea4c68000935093505050612b42565b81819350935050505b9091565b5f8083118290612b8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b839190613116565b60405180910390fd5b505f8385612b9a9190613fa8565b9050809150509392505050565b5f805f805f805f805f612bbf8a600c54600d54612d9e565b9250925092505f612bce6127f7565b90505f805f612bdf8e878787612e30565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f612c4883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122d3565b905092915050565b5f808284612c5e9190613abf565b905083811015612ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9a906140b0565b60405180910390fd5b8091505092915050565b5f612cb66127f7565b90505f612ccc828461286990919063ffffffff16565b9050612d1e8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c5090919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612d7982600654612c0790919063ffffffff16565b600681905550612d9481600754612c5090919063ffffffff16565b6007819055505050565b5f805f80612dc86064612dba888a61286990919063ffffffff16565b61282090919063ffffffff16565b90505f612df16064612de3888b61286990919063ffffffff16565b61282090919063ffffffff16565b90505f612e1982612e0b858c612c0790919063ffffffff16565b612c0790919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612e47858961286990919063ffffffff16565b90505f612e5d868961286990919063ffffffff16565b90505f612e73878961286990919063ffffffff16565b90505f612e9b82612e8d8587612c0790919063ffffffff16565b612c0790919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612f0f82612ec9565b810181811067ffffffffffffffff82111715612f2e57612f2d612ed9565b5b80604052505050565b5f612f40612eb4565b9050612f4c8282612f06565b919050565b5f67ffffffffffffffff821115612f6b57612f6a612ed9565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612fa982612f80565b9050919050565b612fb981612f9f565b8114612fc3575f80fd5b50565b5f81359050612fd481612fb0565b92915050565b5f612fec612fe784612f51565b612f37565b9050808382526020820190506020840283018581111561300f5761300e612f7c565b5b835b8181101561303857806130248882612fc6565b845260208401935050602081019050613011565b5050509392505050565b5f82601f83011261305657613055612ec5565b5b8135613066848260208601612fda565b91505092915050565b5f6020828403121561308457613083612ebd565b5b5f82013567ffffffffffffffff8111156130a1576130a0612ec1565b5b6130ad84828501613042565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f6130e8826130b6565b6130f281856130c0565b93506131028185602086016130d0565b61310b81612ec9565b840191505092915050565b5f6020820190508181035f83015261312e81846130de565b905092915050565b5f819050919050565b61314881613136565b8114613152575f80fd5b50565b5f813590506131638161313f565b92915050565b5f806040838503121561317f5761317e612ebd565b5b5f61318c85828601612fc6565b925050602061319d85828601613155565b9150509250929050565b5f8115159050919050565b6131bb816131a7565b82525050565b5f6020820190506131d45f8301846131b2565b92915050565b5f819050919050565b5f6131fd6131f86131f384612f80565b6131da565b612f80565b9050919050565b5f61320e826131e3565b9050919050565b5f61321f82613204565b9050919050565b61322f81613215565b82525050565b5f6020820190506132485f830184613226565b92915050565b61325781613136565b82525050565b5f6020820190506132705f83018461324e565b92915050565b5f805f6060848603121561328d5761328c612ebd565b5b5f61329a86828701612fc6565b93505060206132ab86828701612fc6565b92505060406132bc86828701613155565b9150509250925092565b5f60ff82169050919050565b6132db816132c6565b82525050565b5f6020820190506132f45f8301846132d2565b92915050565b5f6020828403121561330f5761330e612ebd565b5b5f61331c84828501612fc6565b91505092915050565b61332e81612f9f565b82525050565b5f6020820190506133475f830184613325565b92915050565b613356816131a7565b8114613360575f80fd5b50565b5f813590506133718161334d565b92915050565b5f6020828403121561338c5761338b612ebd565b5b5f61339984828501613363565b91505092915050565b5f602082840312156133b7576133b6612ebd565b5b5f6133c484828501613155565b91505092915050565b5f805f80608085870312156133e5576133e4612ebd565b5b5f6133f287828801613155565b945050602061340387828801613155565b935050604061341487828801613155565b925050606061342587828801613155565b91505092959194509250565b5f80fd5b5f8083601f84011261344a57613449612ec5565b5b8235905067ffffffffffffffff81111561346757613466613431565b5b60208301915083602082028301111561348357613482612f7c565b5b9250929050565b5f805f604084860312156134a1576134a0612ebd565b5b5f84013567ffffffffffffffff8111156134be576134bd612ec1565b5b6134ca86828701613435565b935093505060206134dd86828701613363565b9150509250925092565b5f80604083850312156134fd576134fc612ebd565b5b5f61350a85828601612fc6565b925050602061351b85828601612fc6565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6135596020836130c0565b915061356482613525565b602082019050919050565b5f6020820190508181035f8301526135868161354d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6136146026836130c0565b915061361f826135ba565b604082019050919050565b5f6020820190508181035f83015261364181613608565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6136a26024836130c0565b91506136ad82613648565b604082019050919050565b5f6020820190508181035f8301526136cf81613696565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6137306022836130c0565b915061373b826136d6565b604082019050919050565b5f6020820190508181035f83015261375d81613724565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6137be6025836130c0565b91506137c982613764565b604082019050919050565b5f6020820190508181035f8301526137eb816137b2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61384c6023836130c0565b9150613857826137f2565b604082019050919050565b5f6020820190508181035f83015261387981613840565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6138da6029836130c0565b91506138e582613880565b604082019050919050565b5f6020820190508181035f830152613907816138ce565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613968603f836130c0565b91506139738261390e565b604082019050919050565b5f6020820190508181035f8301526139958161395c565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6139d0601c836130c0565b91506139db8261399c565b602082019050919050565b5f6020820190508181035f8301526139fd816139c4565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f613a5e6023836130c0565b9150613a6982613a04565b604082019050919050565b5f6020820190508181035f830152613a8b81613a52565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613ac982613136565b9150613ad483613136565b9250828201905080821115613aec57613aeb613a92565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613b4c6023836130c0565b9150613b5782613af2565b604082019050919050565b5f6020820190508181035f830152613b7981613b40565b9050919050565b7f426c6f636b2073656c6c206c696d6974000000000000000000000000000000005f82015250565b5f613bb46010836130c0565b9150613bbf82613b80565b602082019050919050565b5f6020820190508181035f830152613be181613ba8565b9050919050565b5f613bf282613136565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c2457613c23613a92565b5b600182019050919050565b5f613c3982613136565b9150613c4483613136565b9250828203905081811115613c5c57613c5b613a92565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613cbc602a836130c0565b9150613cc782613c62565b604082019050919050565b5f6020820190508181035f830152613ce981613cb0565b9050919050565b5f81519050613cfe81612fb0565b92915050565b5f60208284031215613d1957613d18612ebd565b5b5f613d2684828501613cf0565b91505092915050565b5f819050919050565b5f613d52613d4d613d4884613d2f565b6131da565b613136565b9050919050565b613d6281613d38565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613d9a81612f9f565b82525050565b5f613dab8383613d91565b60208301905092915050565b5f602082019050919050565b5f613dcd82613d68565b613dd78185613d72565b9350613de283613d82565b805f5b83811015613e12578151613df98882613da0565b9750613e0483613db7565b925050600181019050613de5565b5085935050505092915050565b5f60a082019050613e325f83018861324e565b613e3f6020830187613d59565b8181036040830152613e518186613dc3565b9050613e606060830185613325565b613e6d608083018461324e565b9695505050505050565b5f60c082019050613e8a5f830189613325565b613e97602083018861324e565b613ea46040830187613d59565b613eb16060830186613d59565b613ebe6080830185613325565b613ecb60a083018461324e565b979650505050505050565b5f81519050613ee48161313f565b92915050565b5f805f60608486031215613f0157613f00612ebd565b5b5f613f0e86828701613ed6565b9350506020613f1f86828701613ed6565b9250506040613f3086828701613ed6565b9150509250925092565b5f613f4482613136565b9150613f4f83613136565b9250828202613f5d81613136565b91508282048414831517613f7457613f73613a92565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613fb282613136565b9150613fbd83613136565b925082613fcd57613fcc613f7b565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6140326021836130c0565b915061403d82613fd8565b604082019050919050565b5f6020820190508181035f83015261405f81614026565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61409a601b836130c0565b91506140a582614066565b602082019050919050565b5f6020820190508181035f8301526140c78161408e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d8c2a20e2af33c306e46464e8b39bb612b7c99e617737b299b0d42d9397e004864736f6c634300081a0033
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.