Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000 ORCAI
Holders
157
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 6 Decimals)
Balance
555.255648 ORCAIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
OracleAI
Compiler Version
v0.8.18+commit.87f61d96
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
/* Oracle AI $ORCAI */ // Official Website: https://orcai.io/ // Official Telegram: https://t.me/oracleaiofficial // Official Twitter: https://twitter.com/@orcai_ // Official Gitbook: https://oracleai.gitbook.io/oracle-ai/ //SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.18; 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; } } 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 OracleAI is Context, IERC20, Ownable { string private constant _name = "Oracle AI"; string private constant _symbol = "ORCAI"; uint8 private constant _decimals = 6; mapping(address => uint256) private _rOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1000000 * 10 ** 6; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 public launchBlock; //Buy Fee uint256 private _redisFeeOnBuy = 0; // uint256 private _taxFeeOnBuy = 0; // updated //Sell Fee uint256 private _redisFeeOnSell = 0; // uint256 private _taxFeeOnSell = 20; // updated //Original Fee uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; mapping(address => bool) public bots; address payable private _developmentAddress = payable(0x5b1142dBcE016194Ba81Bdf2053C9A2fa8E1246B); // updated address payable private _marketingAddress = payable(0xCeA7Efde861047d024f34d2c78ACa05A01f89868); // updated IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen = false; bool private inSwap = false; bool private swapEnabled = true; uint256 public _maxTxAmount = 100000000; // 100% uint256 public _maxWalletSize = 100000000 * 10 ** 6; // 100% uint256 public _swapTokensAtAmount = 500 * 10 ** 6; // 0.05% event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap() { inSwap = true; _; inSwap = false; } constructor() { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D //uniswap ); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_developmentAddress] = true; _isExcludedFromFee[_marketingAddress] = true; bots[address(0x66f049111958809841Bbe4b81c034Da2D953AA0c)] = true; bots[address(0x000000005736775Feb0C8568e7DEe77222a26880)] = true; bots[address(0x34822A742BDE3beF13acabF14244869841f06A73)] = true; bots[address(0x69611A66d0CF67e5Ddd1957e6499b5C5A3E44845)] = true; bots[address(0x69611A66d0CF67e5Ddd1957e6499b5C5A3E44845)] = true; bots[address(0x8484eFcBDa76955463aa12e1d504D7C6C89321F8)] = true; bots[address(0xe5265ce4D0a3B191431e1bac056d72b2b9F0Fe44)] = true; bots[address(0x33F9Da98C57674B5FC5AE7349E3C732Cf2E6Ce5C)] = true; bots[address(0xc59a8E2d2c476BA9122aa4eC19B4c5E2BBAbbC28)] = true; bots[address(0x21053Ff2D9Fc37D4DB8687d48bD0b57581c1333D)] = true; bots[address(0x4dd6A0D3191A41522B84BC6b65d17f6f5e6a4192)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public 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()] - amount ); 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 / 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" ); } require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); require( !bots[from] && !bots[to], "TOKEN: Your account is blacklisted!" ); if ( block.number <= launchBlock && from == uniswapV2Pair && to != address(uniswapV2Router) && to != address(this) ) { bots[to] = true; } if (to != uniswapV2Pair) { require( balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!" ); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if (contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } if ( canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to] ) { swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } 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 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 { _developmentAddress.transfer(amount); // _marketingAddress.transfer(amount / 2); } function setTrading() public onlyOwner { require(!tradingOpen, "Trading already enabled"); tradingOpen = true; launchBlock = block.number; } 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 _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] - rAmount; _rOwned[recipient] = _rOwned[recipient] + rTransferAmount; _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam * currentRate; _rOwned[address(this)] = _rOwned[address(this)] + rTeam; } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal - rFee; _tFeeTotal = _tFeeTotal + 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 * redisFee) / 100; uint256 tTeam = (tAmount * taxFee) / 100; uint256 tTransferAmount = tAmount - tFee - tTeam; return (tTransferAmount, tFee, tTeam); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate ) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount * currentRate; uint256 rFee = tFee * currentRate; uint256 rTeam = tTeam * currentRate; uint256 rTransferAmount = rAmount - rFee - rTeam; return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply / tSupply; } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal); return (rSupply, tSupply); } function setFee( uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell ) public onlyOwner { require( _taxFeeOnBuy <= 20 && _taxFeeOnSell <= 20 && redisFeeOnBuy <= 20 && redisFeeOnSell <= 20, "Tax can't be higher than 20" ); _redisFeeOnBuy = redisFeeOnBuy; _redisFeeOnSell = redisFeeOnSell; _taxFeeOnBuy = taxFeeOnBuy; _taxFeeOnSell = taxFeeOnSell; } //Set minimum tokens required to swap. function setMinSwapTokensThreshold( uint256 swapTokensAtAmount ) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } //Set minimum tokens required to swap. function toggleSwap(bool _swapEnabled) public onlyOwner { swapEnabled = _swapEnabled; } //Set maximum transaction function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner { require(_maxTxAmount > 0, "Max TX Amount needs to be larger than 0"); _maxTxAmount = maxTxAmount; } function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner { require( _maxWalletSize > 0, "Max wallet size needs to be larger than 0" ); _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" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"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":[],"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":"","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":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"setTrading","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
608060405264e8d4a5100060001962000019919062000bbd565b60001962000028919062000c24565b600555600060085560006009556000600a556014600b55600a54600c55600b54600d55600c54600e55600d54600f55735b1142dbce016194ba81bdf2053c9a2fa8e1246b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073cea7efde861047d024f34d2c78aca05a01f89868601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006014806101000a81548160ff0219169083151502179055506000601460156101000a81548160ff0219169083151502179055506001601460166101000a81548160ff0219169083151502179055506305f5e100601555655af3107a4000601655631dcd65006017553480156200017857600080fd5b5060006200018b62000b5360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600554600260006200024062000b5360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034a919062000cc9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d8919062000cc9565b6040518363ffffffff1660e01b8152600401620003f792919062000d0c565b6020604051808303816000875af115801562000417573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200043d919062000cc9565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460006200049362000b5b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060007366f049111958809841bbe4b81c034da2d953aa0c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060006f5736775feb0c8568e7dee77222a2688073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060007334822a742bde3bef13acabf14244869841f06a7373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060007369611a66d0cf67e5ddd1957e6499b5c5a3e4484573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060007369611a66d0cf67e5ddd1957e6499b5c5a3e4484573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000738484efcbda76955463aa12e1d504d7c6c89321f873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600073e5265ce4d0a3b191431e1bac056d72b2b9f0fe4473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060007333f9da98c57674b5fc5ae7349e3c732cf2e6ce5c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600073c59a8e2d2c476ba9122aa4ec19b4c5e2bbabbc2873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060007321053ff2d9fc37d4db8687d48bd0b57581c1333d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000734dd6a0d3191a41522b84bc6b65d17f6f5e6a419273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000ae062000b5360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef64e8d4a5100060405162000b44919062000d4a565b60405180910390a35062000d67565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000bca8262000b84565b915062000bd78362000b84565b92508262000bea5762000be962000b8e565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c318262000b84565b915062000c3e8362000b84565b925082820390508181111562000c595762000c5862000bf5565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c918262000c64565b9050919050565b62000ca38162000c84565b811462000caf57600080fd5b50565b60008151905062000cc38162000c98565b92915050565b60006020828403121562000ce25762000ce162000c5f565b5b600062000cf28482850162000cb2565b91505092915050565b62000d068162000c84565b82525050565b600060408201905062000d23600083018562000cfb565b62000d32602083018462000cfb565b9392505050565b62000d448162000b84565b82525050565b600060208201905062000d61600083018462000d39565b92915050565b6139f08062000d776000396000f3fe6080604052600436106101bb5760003560e01c80637d1db4a5116100ec578063bfd792841161008a578063d00efb2f11610064578063d00efb2f146105cf578063dd62ed3e146105fa578063ea1644d514610637578063f2fde38b14610660576101c2565b8063bfd7928414610552578063c3c8cd801461058f578063c492f046146105a6576101c2565b806395d89b41116100c657806395d89b411461049857806398a5c315146104c3578063a2a957bb146104ec578063a9059cbb14610515576101c2565b80637d1db4a5146104175780638da5cb5b146104425780638f9a55c01461046d576101c2565b806349bd5a5e1161015957806370a082311161013357806370a0823114610383578063715018a6146103c057806374010ece146103d75780637c519ffb14610400576101c2565b806349bd5a5e146103185780636d8aa8f8146103435780636fc3eaec1461036c576101c2565b806318160ddd1161019557806318160ddd1461025a57806323b872dd146102855780632fd689e3146102c2578063313ce567146102ed576101c2565b806306fdde03146101c7578063095ea7b3146101f25780631694505e1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc610689565b6040516101e99190612911565b60405180910390f35b3480156101fe57600080fd5b50610219600480360381019061021491906129d1565b6106c6565b6040516102269190612a2c565b60405180910390f35b34801561023b57600080fd5b506102446106e4565b6040516102519190612aa6565b60405180910390f35b34801561026657600080fd5b5061026f61070a565b60405161027c9190612ad0565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190612aeb565b610717565b6040516102b99190612a2c565b60405180910390f35b3480156102ce57600080fd5b506102d76107cf565b6040516102e49190612ad0565b60405180910390f35b3480156102f957600080fd5b506103026107d5565b60405161030f9190612b5a565b60405180910390f35b34801561032457600080fd5b5061032d6107de565b60405161033a9190612b84565b60405180910390f35b34801561034f57600080fd5b5061036a60048036038101906103659190612bcb565b610804565b005b34801561037857600080fd5b506103816108b6565b005b34801561038f57600080fd5b506103aa60048036038101906103a59190612bf8565b610987565b6040516103b79190612ad0565b60405180910390f35b3480156103cc57600080fd5b506103d56109d8565b005b3480156103e357600080fd5b506103fe60048036038101906103f99190612c25565b610b2b565b005b34801561040c57600080fd5b50610415610c0f565b005b34801561042357600080fd5b5061042c610d15565b6040516104399190612ad0565b60405180910390f35b34801561044e57600080fd5b50610457610d1b565b6040516104649190612b84565b60405180910390f35b34801561047957600080fd5b50610482610d44565b60405161048f9190612ad0565b60405180910390f35b3480156104a457600080fd5b506104ad610d4a565b6040516104ba9190612911565b60405180910390f35b3480156104cf57600080fd5b506104ea60048036038101906104e59190612c25565b610d87565b005b3480156104f857600080fd5b50610513600480360381019061050e9190612c52565b610e26565b005b34801561052157600080fd5b5061053c600480360381019061053791906129d1565b610f4c565b6040516105499190612a2c565b60405180910390f35b34801561055e57600080fd5b5061057960048036038101906105749190612bf8565b610f6a565b6040516105869190612a2c565b60405180910390f35b34801561059b57600080fd5b506105a4610f8a565b005b3480156105b257600080fd5b506105cd60048036038101906105c89190612d1e565b611063565b005b3480156105db57600080fd5b506105e461119d565b6040516105f19190612ad0565b60405180910390f35b34801561060657600080fd5b50610621600480360381019061061c9190612d7e565b6111a3565b60405161062e9190612ad0565b60405180910390f35b34801561064357600080fd5b5061065e60048036038101906106599190612c25565b61122a565b005b34801561066c57600080fd5b5061068760048036038101906106829190612bf8565b61130e565b005b60606040518060400160405280600981526020017f4f7261636c652041490000000000000000000000000000000000000000000000815250905090565b60006106da6106d36114cf565b84846114d7565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600064e8d4a51000905090565b60006107248484846116a0565b6107c4846107306114cf565b84600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061077a6114cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107bf9190612ded565b6114d7565b600190509392505050565b60175481565b60006006905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61080c6114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089090612e6d565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108f76114cf565b73ffffffffffffffffffffffffffffffffffffffff16148061096d5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109556114cf565b73ffffffffffffffffffffffffffffffffffffffff16145b61097657600080fd5b600047905061098481612072565b50565b60006109d1600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120de565b9050919050565b6109e06114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6490612e6d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b336114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb790612e6d565b60405180910390fd5b600060155411610c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfc90612eff565b60405180910390fd5b8060158190555050565b610c176114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9b90612e6d565b60405180910390fd5b60148054906101000a900460ff1615610cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce990612f6b565b60405180910390fd5b60016014806101000a81548160ff02191690831515021790555043600781905550565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b60606040518060400160405280600581526020017f4f52434149000000000000000000000000000000000000000000000000000000815250905090565b610d8f6114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1390612e6d565b60405180910390fd5b8060178190555050565b610e2e6114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb290612e6d565b60405180910390fd5b601460095411158015610ed157506014600b5411155b8015610ede575060148411155b8015610eeb575060148311155b610f2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2190612fd7565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610f60610f596114cf565b84846116a0565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fcb6114cf565b73ffffffffffffffffffffffffffffffffffffffff1614806110415750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110296114cf565b73ffffffffffffffffffffffffffffffffffffffff16145b61104a57600080fd5b600061105530610987565b905061106081612145565b50565b61106b6114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ef90612e6d565b60405180910390fd5b60005b8383905081101561119757816004600086868581811061111e5761111d612ff7565b5b90506020020160208101906111339190612bf8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061118f90613026565b9150506110fb565b50505050565b60075481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112326114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b690612e6d565b60405180910390fd5b600060165411611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb906130e0565b60405180910390fd5b8060168190555050565b6113166114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a90612e6d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140990613172565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153d90613204565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ac90613296565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116939190612ad0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361170f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170690613328565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361177e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611775906133ba565b60405180910390fd5b600081116117c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b89061344c565b60405180910390fd5b6117c9610d1b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118375750611807610d1b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d715760148054906101000a900460ff166118c457611856610d1b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ba906134de565b60405180910390fd5b5b601554811115611909576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119009061354a565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119ad5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e3906135dc565b60405180910390fd5b6007544311158015611a4b5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015611aa55750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611add57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611b3b576001601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611be85760165481611b9d84610987565b611ba791906135fc565b10611be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bde906136a2565b60405180910390fd5b5b6000611bf330610987565b9050600060175482101590506015548210611c0e5760155491505b808015611c285750601460159054906101000a900460ff16155b8015611c825750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c9a5750601460169054906101000a900460ff165b8015611cf05750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d465750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d6e57611d5482612145565b60004790506000811115611d6c57611d6b47612072565b5b505b50505b600060019050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e185750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611ecb5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611eca5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611ed95760009050612060565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f845750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f9c57600854600c81905550600954600d819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120475750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561205f57600a54600c81905550600b54600d819055505b5b61206c848484846123be565b50505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120da573d6000803e3d6000fd5b5050565b6000600554821115612125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211c90613734565b60405180910390fd5b600061212f6123eb565b9050808361213d9190613783565b915050919050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561217d5761217c6137b4565b5b6040519080825280602002602001820160405280156121ab5781602001602082028036833780820191505090505b50905030816000815181106121c3576121c2612ff7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561226a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228e91906137f8565b816001815181106122a2576122a1612ff7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230930601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114d7565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161236d95949392919061391e565b600060405180830381600087803b15801561238757600080fd5b505af115801561239b573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b806123cc576123cb61240f565b5b6123d784848461244c565b806123e5576123e4612609565b5b50505050565b60008060006123f861261d565b9150915080826124089190613783565b9250505090565b6000600c5414801561242357506000600d54145b61244a57600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061245e8761266c565b95509550955095509550955085600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124b59190612ded565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254391906135fc565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061258f816126d4565b6125998483612783565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125f69190612ad0565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006005549050600064e8d4a51000905064e8d4a510006005546126449190613783565b82101561265f5760055464e8d4a51000935093505050612668565b81819350935050505b9091565b60008060008060008060008060006126898a600c54600d546127af565b92509250925060006126996123eb565b905060008060006126ac8e87878761281b565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006126de6123eb565b9050600081836126ee9190613978565b905080600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461273b91906135fc565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b816005546127919190612ded565b600581905550806006546127a591906135fc565b6006819055505050565b600080600080606486886127c39190613978565b6127cd9190613783565b90506000606486896127df9190613978565b6127e99190613783565b9050600081838a6127fa9190612ded565b6128049190612ded565b905080838395509550955050505093509350939050565b600080600080848861282d9190613978565b90506000858861283d9190613978565b90506000868861284d9190613978565b9050600081838561285e9190612ded565b6128689190612ded565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128bb5780820151818401526020810190506128a0565b60008484015250505050565b6000601f19601f8301169050919050565b60006128e382612881565b6128ed818561288c565b93506128fd81856020860161289d565b612906816128c7565b840191505092915050565b6000602082019050818103600083015261292b81846128d8565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129688261293d565b9050919050565b6129788161295d565b811461298357600080fd5b50565b6000813590506129958161296f565b92915050565b6000819050919050565b6129ae8161299b565b81146129b957600080fd5b50565b6000813590506129cb816129a5565b92915050565b600080604083850312156129e8576129e7612933565b5b60006129f685828601612986565b9250506020612a07858286016129bc565b9150509250929050565b60008115159050919050565b612a2681612a11565b82525050565b6000602082019050612a416000830184612a1d565b92915050565b6000819050919050565b6000612a6c612a67612a628461293d565b612a47565b61293d565b9050919050565b6000612a7e82612a51565b9050919050565b6000612a9082612a73565b9050919050565b612aa081612a85565b82525050565b6000602082019050612abb6000830184612a97565b92915050565b612aca8161299b565b82525050565b6000602082019050612ae56000830184612ac1565b92915050565b600080600060608486031215612b0457612b03612933565b5b6000612b1286828701612986565b9350506020612b2386828701612986565b9250506040612b34868287016129bc565b9150509250925092565b600060ff82169050919050565b612b5481612b3e565b82525050565b6000602082019050612b6f6000830184612b4b565b92915050565b612b7e8161295d565b82525050565b6000602082019050612b996000830184612b75565b92915050565b612ba881612a11565b8114612bb357600080fd5b50565b600081359050612bc581612b9f565b92915050565b600060208284031215612be157612be0612933565b5b6000612bef84828501612bb6565b91505092915050565b600060208284031215612c0e57612c0d612933565b5b6000612c1c84828501612986565b91505092915050565b600060208284031215612c3b57612c3a612933565b5b6000612c49848285016129bc565b91505092915050565b60008060008060808587031215612c6c57612c6b612933565b5b6000612c7a878288016129bc565b9450506020612c8b878288016129bc565b9350506040612c9c878288016129bc565b9250506060612cad878288016129bc565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612cde57612cdd612cb9565b5b8235905067ffffffffffffffff811115612cfb57612cfa612cbe565b5b602083019150836020820283011115612d1757612d16612cc3565b5b9250929050565b600080600060408486031215612d3757612d36612933565b5b600084013567ffffffffffffffff811115612d5557612d54612938565b5b612d6186828701612cc8565b93509350506020612d7486828701612bb6565b9150509250925092565b60008060408385031215612d9557612d94612933565b5b6000612da385828601612986565b9250506020612db485828601612986565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612df88261299b565b9150612e038361299b565b9250828203905081811115612e1b57612e1a612dbe565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612e5760208361288c565b9150612e6282612e21565b602082019050919050565b60006020820190508181036000830152612e8681612e4a565b9050919050565b7f4d617820545820416d6f756e74206e6565647320746f206265206c617267657260008201527f207468616e203000000000000000000000000000000000000000000000000000602082015250565b6000612ee960278361288c565b9150612ef482612e8d565b604082019050919050565b60006020820190508181036000830152612f1881612edc565b9050919050565b7f54726164696e6720616c726561647920656e61626c6564000000000000000000600082015250565b6000612f5560178361288c565b9150612f6082612f1f565b602082019050919050565b60006020820190508181036000830152612f8481612f48565b9050919050565b7f5461782063616e277420626520686967686572207468616e2032300000000000600082015250565b6000612fc1601b8361288c565b9150612fcc82612f8b565b602082019050919050565b60006020820190508181036000830152612ff081612fb4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006130318261299b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361306357613062612dbe565b5b600182019050919050565b7f4d61782077616c6c65742073697a65206e6565647320746f206265206c61726760008201527f6572207468616e20300000000000000000000000000000000000000000000000602082015250565b60006130ca60298361288c565b91506130d58261306e565b604082019050919050565b600060208201905081810360008301526130f9816130bd565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061315c60268361288c565b915061316782613100565b604082019050919050565b6000602082019050818103600083015261318b8161314f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006131ee60248361288c565b91506131f982613192565b604082019050919050565b6000602082019050818103600083015261321d816131e1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061328060228361288c565b915061328b82613224565b604082019050919050565b600060208201905081810360008301526132af81613273565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061331260258361288c565b915061331d826132b6565b604082019050919050565b6000602082019050818103600083015261334181613305565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006133a460238361288c565b91506133af82613348565b604082019050919050565b600060208201905081810360008301526133d381613397565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061343660298361288c565b9150613441826133da565b604082019050919050565b6000602082019050818103600083015261346581613429565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006134c8603f8361288c565b91506134d38261346c565b604082019050919050565b600060208201905081810360008301526134f7816134bb565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613534601c8361288c565b915061353f826134fe565b602082019050919050565b6000602082019050818103600083015261356381613527565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006135c660238361288c565b91506135d18261356a565b604082019050919050565b600060208201905081810360008301526135f5816135b9565b9050919050565b60006136078261299b565b91506136128361299b565b925082820190508082111561362a57613629612dbe565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061368c60238361288c565b915061369782613630565b604082019050919050565b600060208201905081810360008301526136bb8161367f565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061371e602a8361288c565b9150613729826136c2565b604082019050919050565b6000602082019050818103600083015261374d81613711565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061378e8261299b565b91506137998361299b565b9250826137a9576137a8613754565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506137f28161296f565b92915050565b60006020828403121561380e5761380d612933565b5b600061381c848285016137e3565b91505092915050565b6000819050919050565b600061384a61384561384084613825565b612a47565b61299b565b9050919050565b61385a8161382f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138958161295d565b82525050565b60006138a7838361388c565b60208301905092915050565b6000602082019050919050565b60006138cb82613860565b6138d5818561386b565b93506138e08361387c565b8060005b838110156139115781516138f8888261389b565b9750613903836138b3565b9250506001810190506138e4565b5085935050505092915050565b600060a0820190506139336000830188612ac1565b6139406020830187613851565b818103604083015261395281866138c0565b90506139616060830185612b75565b61396e6080830184612ac1565b9695505050505050565b60006139838261299b565b915061398e8361299b565b925082820261399c8161299b565b915082820484148315176139b3576139b2612dbe565b5b509291505056fea264697066735822122034c6f04b97d9f3a5ae79a94f9153ec016aa0e8876c5300288deb2520d33debb864736f6c63430008120033
Deployed Bytecode
0x6080604052600436106101bb5760003560e01c80637d1db4a5116100ec578063bfd792841161008a578063d00efb2f11610064578063d00efb2f146105cf578063dd62ed3e146105fa578063ea1644d514610637578063f2fde38b14610660576101c2565b8063bfd7928414610552578063c3c8cd801461058f578063c492f046146105a6576101c2565b806395d89b41116100c657806395d89b411461049857806398a5c315146104c3578063a2a957bb146104ec578063a9059cbb14610515576101c2565b80637d1db4a5146104175780638da5cb5b146104425780638f9a55c01461046d576101c2565b806349bd5a5e1161015957806370a082311161013357806370a0823114610383578063715018a6146103c057806374010ece146103d75780637c519ffb14610400576101c2565b806349bd5a5e146103185780636d8aa8f8146103435780636fc3eaec1461036c576101c2565b806318160ddd1161019557806318160ddd1461025a57806323b872dd146102855780632fd689e3146102c2578063313ce567146102ed576101c2565b806306fdde03146101c7578063095ea7b3146101f25780631694505e1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc610689565b6040516101e99190612911565b60405180910390f35b3480156101fe57600080fd5b50610219600480360381019061021491906129d1565b6106c6565b6040516102269190612a2c565b60405180910390f35b34801561023b57600080fd5b506102446106e4565b6040516102519190612aa6565b60405180910390f35b34801561026657600080fd5b5061026f61070a565b60405161027c9190612ad0565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190612aeb565b610717565b6040516102b99190612a2c565b60405180910390f35b3480156102ce57600080fd5b506102d76107cf565b6040516102e49190612ad0565b60405180910390f35b3480156102f957600080fd5b506103026107d5565b60405161030f9190612b5a565b60405180910390f35b34801561032457600080fd5b5061032d6107de565b60405161033a9190612b84565b60405180910390f35b34801561034f57600080fd5b5061036a60048036038101906103659190612bcb565b610804565b005b34801561037857600080fd5b506103816108b6565b005b34801561038f57600080fd5b506103aa60048036038101906103a59190612bf8565b610987565b6040516103b79190612ad0565b60405180910390f35b3480156103cc57600080fd5b506103d56109d8565b005b3480156103e357600080fd5b506103fe60048036038101906103f99190612c25565b610b2b565b005b34801561040c57600080fd5b50610415610c0f565b005b34801561042357600080fd5b5061042c610d15565b6040516104399190612ad0565b60405180910390f35b34801561044e57600080fd5b50610457610d1b565b6040516104649190612b84565b60405180910390f35b34801561047957600080fd5b50610482610d44565b60405161048f9190612ad0565b60405180910390f35b3480156104a457600080fd5b506104ad610d4a565b6040516104ba9190612911565b60405180910390f35b3480156104cf57600080fd5b506104ea60048036038101906104e59190612c25565b610d87565b005b3480156104f857600080fd5b50610513600480360381019061050e9190612c52565b610e26565b005b34801561052157600080fd5b5061053c600480360381019061053791906129d1565b610f4c565b6040516105499190612a2c565b60405180910390f35b34801561055e57600080fd5b5061057960048036038101906105749190612bf8565b610f6a565b6040516105869190612a2c565b60405180910390f35b34801561059b57600080fd5b506105a4610f8a565b005b3480156105b257600080fd5b506105cd60048036038101906105c89190612d1e565b611063565b005b3480156105db57600080fd5b506105e461119d565b6040516105f19190612ad0565b60405180910390f35b34801561060657600080fd5b50610621600480360381019061061c9190612d7e565b6111a3565b60405161062e9190612ad0565b60405180910390f35b34801561064357600080fd5b5061065e60048036038101906106599190612c25565b61122a565b005b34801561066c57600080fd5b5061068760048036038101906106829190612bf8565b61130e565b005b60606040518060400160405280600981526020017f4f7261636c652041490000000000000000000000000000000000000000000000815250905090565b60006106da6106d36114cf565b84846114d7565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600064e8d4a51000905090565b60006107248484846116a0565b6107c4846107306114cf565b84600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061077a6114cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107bf9190612ded565b6114d7565b600190509392505050565b60175481565b60006006905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61080c6114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089090612e6d565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108f76114cf565b73ffffffffffffffffffffffffffffffffffffffff16148061096d5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109556114cf565b73ffffffffffffffffffffffffffffffffffffffff16145b61097657600080fd5b600047905061098481612072565b50565b60006109d1600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120de565b9050919050565b6109e06114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6490612e6d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b336114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb790612e6d565b60405180910390fd5b600060155411610c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfc90612eff565b60405180910390fd5b8060158190555050565b610c176114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9b90612e6d565b60405180910390fd5b60148054906101000a900460ff1615610cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce990612f6b565b60405180910390fd5b60016014806101000a81548160ff02191690831515021790555043600781905550565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b60606040518060400160405280600581526020017f4f52434149000000000000000000000000000000000000000000000000000000815250905090565b610d8f6114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1390612e6d565b60405180910390fd5b8060178190555050565b610e2e6114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb290612e6d565b60405180910390fd5b601460095411158015610ed157506014600b5411155b8015610ede575060148411155b8015610eeb575060148311155b610f2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2190612fd7565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610f60610f596114cf565b84846116a0565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fcb6114cf565b73ffffffffffffffffffffffffffffffffffffffff1614806110415750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110296114cf565b73ffffffffffffffffffffffffffffffffffffffff16145b61104a57600080fd5b600061105530610987565b905061106081612145565b50565b61106b6114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ef90612e6d565b60405180910390fd5b60005b8383905081101561119757816004600086868581811061111e5761111d612ff7565b5b90506020020160208101906111339190612bf8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061118f90613026565b9150506110fb565b50505050565b60075481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112326114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b690612e6d565b60405180910390fd5b600060165411611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb906130e0565b60405180910390fd5b8060168190555050565b6113166114cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a90612e6d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140990613172565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153d90613204565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ac90613296565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116939190612ad0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361170f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170690613328565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361177e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611775906133ba565b60405180910390fd5b600081116117c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b89061344c565b60405180910390fd5b6117c9610d1b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118375750611807610d1b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d715760148054906101000a900460ff166118c457611856610d1b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ba906134de565b60405180910390fd5b5b601554811115611909576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119009061354a565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119ad5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e3906135dc565b60405180910390fd5b6007544311158015611a4b5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015611aa55750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611add57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611b3b576001601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611be85760165481611b9d84610987565b611ba791906135fc565b10611be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bde906136a2565b60405180910390fd5b5b6000611bf330610987565b9050600060175482101590506015548210611c0e5760155491505b808015611c285750601460159054906101000a900460ff16155b8015611c825750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c9a5750601460169054906101000a900460ff165b8015611cf05750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d465750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d6e57611d5482612145565b60004790506000811115611d6c57611d6b47612072565b5b505b50505b600060019050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e185750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611ecb5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611eca5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611ed95760009050612060565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f845750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f9c57600854600c81905550600954600d819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120475750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561205f57600a54600c81905550600b54600d819055505b5b61206c848484846123be565b50505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120da573d6000803e3d6000fd5b5050565b6000600554821115612125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211c90613734565b60405180910390fd5b600061212f6123eb565b9050808361213d9190613783565b915050919050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561217d5761217c6137b4565b5b6040519080825280602002602001820160405280156121ab5781602001602082028036833780820191505090505b50905030816000815181106121c3576121c2612ff7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561226a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228e91906137f8565b816001815181106122a2576122a1612ff7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230930601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114d7565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161236d95949392919061391e565b600060405180830381600087803b15801561238757600080fd5b505af115801561239b573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b806123cc576123cb61240f565b5b6123d784848461244c565b806123e5576123e4612609565b5b50505050565b60008060006123f861261d565b9150915080826124089190613783565b9250505090565b6000600c5414801561242357506000600d54145b61244a57600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061245e8761266c565b95509550955095509550955085600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124b59190612ded565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254391906135fc565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061258f816126d4565b6125998483612783565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125f69190612ad0565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006005549050600064e8d4a51000905064e8d4a510006005546126449190613783565b82101561265f5760055464e8d4a51000935093505050612668565b81819350935050505b9091565b60008060008060008060008060006126898a600c54600d546127af565b92509250925060006126996123eb565b905060008060006126ac8e87878761281b565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006126de6123eb565b9050600081836126ee9190613978565b905080600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461273b91906135fc565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b816005546127919190612ded565b600581905550806006546127a591906135fc565b6006819055505050565b600080600080606486886127c39190613978565b6127cd9190613783565b90506000606486896127df9190613978565b6127e99190613783565b9050600081838a6127fa9190612ded565b6128049190612ded565b905080838395509550955050505093509350939050565b600080600080848861282d9190613978565b90506000858861283d9190613978565b90506000868861284d9190613978565b9050600081838561285e9190612ded565b6128689190612ded565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128bb5780820151818401526020810190506128a0565b60008484015250505050565b6000601f19601f8301169050919050565b60006128e382612881565b6128ed818561288c565b93506128fd81856020860161289d565b612906816128c7565b840191505092915050565b6000602082019050818103600083015261292b81846128d8565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129688261293d565b9050919050565b6129788161295d565b811461298357600080fd5b50565b6000813590506129958161296f565b92915050565b6000819050919050565b6129ae8161299b565b81146129b957600080fd5b50565b6000813590506129cb816129a5565b92915050565b600080604083850312156129e8576129e7612933565b5b60006129f685828601612986565b9250506020612a07858286016129bc565b9150509250929050565b60008115159050919050565b612a2681612a11565b82525050565b6000602082019050612a416000830184612a1d565b92915050565b6000819050919050565b6000612a6c612a67612a628461293d565b612a47565b61293d565b9050919050565b6000612a7e82612a51565b9050919050565b6000612a9082612a73565b9050919050565b612aa081612a85565b82525050565b6000602082019050612abb6000830184612a97565b92915050565b612aca8161299b565b82525050565b6000602082019050612ae56000830184612ac1565b92915050565b600080600060608486031215612b0457612b03612933565b5b6000612b1286828701612986565b9350506020612b2386828701612986565b9250506040612b34868287016129bc565b9150509250925092565b600060ff82169050919050565b612b5481612b3e565b82525050565b6000602082019050612b6f6000830184612b4b565b92915050565b612b7e8161295d565b82525050565b6000602082019050612b996000830184612b75565b92915050565b612ba881612a11565b8114612bb357600080fd5b50565b600081359050612bc581612b9f565b92915050565b600060208284031215612be157612be0612933565b5b6000612bef84828501612bb6565b91505092915050565b600060208284031215612c0e57612c0d612933565b5b6000612c1c84828501612986565b91505092915050565b600060208284031215612c3b57612c3a612933565b5b6000612c49848285016129bc565b91505092915050565b60008060008060808587031215612c6c57612c6b612933565b5b6000612c7a878288016129bc565b9450506020612c8b878288016129bc565b9350506040612c9c878288016129bc565b9250506060612cad878288016129bc565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612cde57612cdd612cb9565b5b8235905067ffffffffffffffff811115612cfb57612cfa612cbe565b5b602083019150836020820283011115612d1757612d16612cc3565b5b9250929050565b600080600060408486031215612d3757612d36612933565b5b600084013567ffffffffffffffff811115612d5557612d54612938565b5b612d6186828701612cc8565b93509350506020612d7486828701612bb6565b9150509250925092565b60008060408385031215612d9557612d94612933565b5b6000612da385828601612986565b9250506020612db485828601612986565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612df88261299b565b9150612e038361299b565b9250828203905081811115612e1b57612e1a612dbe565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612e5760208361288c565b9150612e6282612e21565b602082019050919050565b60006020820190508181036000830152612e8681612e4a565b9050919050565b7f4d617820545820416d6f756e74206e6565647320746f206265206c617267657260008201527f207468616e203000000000000000000000000000000000000000000000000000602082015250565b6000612ee960278361288c565b9150612ef482612e8d565b604082019050919050565b60006020820190508181036000830152612f1881612edc565b9050919050565b7f54726164696e6720616c726561647920656e61626c6564000000000000000000600082015250565b6000612f5560178361288c565b9150612f6082612f1f565b602082019050919050565b60006020820190508181036000830152612f8481612f48565b9050919050565b7f5461782063616e277420626520686967686572207468616e2032300000000000600082015250565b6000612fc1601b8361288c565b9150612fcc82612f8b565b602082019050919050565b60006020820190508181036000830152612ff081612fb4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006130318261299b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361306357613062612dbe565b5b600182019050919050565b7f4d61782077616c6c65742073697a65206e6565647320746f206265206c61726760008201527f6572207468616e20300000000000000000000000000000000000000000000000602082015250565b60006130ca60298361288c565b91506130d58261306e565b604082019050919050565b600060208201905081810360008301526130f9816130bd565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061315c60268361288c565b915061316782613100565b604082019050919050565b6000602082019050818103600083015261318b8161314f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006131ee60248361288c565b91506131f982613192565b604082019050919050565b6000602082019050818103600083015261321d816131e1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061328060228361288c565b915061328b82613224565b604082019050919050565b600060208201905081810360008301526132af81613273565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061331260258361288c565b915061331d826132b6565b604082019050919050565b6000602082019050818103600083015261334181613305565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006133a460238361288c565b91506133af82613348565b604082019050919050565b600060208201905081810360008301526133d381613397565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061343660298361288c565b9150613441826133da565b604082019050919050565b6000602082019050818103600083015261346581613429565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006134c8603f8361288c565b91506134d38261346c565b604082019050919050565b600060208201905081810360008301526134f7816134bb565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613534601c8361288c565b915061353f826134fe565b602082019050919050565b6000602082019050818103600083015261356381613527565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006135c660238361288c565b91506135d18261356a565b604082019050919050565b600060208201905081810360008301526135f5816135b9565b9050919050565b60006136078261299b565b91506136128361299b565b925082820190508082111561362a57613629612dbe565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061368c60238361288c565b915061369782613630565b604082019050919050565b600060208201905081810360008301526136bb8161367f565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061371e602a8361288c565b9150613729826136c2565b604082019050919050565b6000602082019050818103600083015261374d81613711565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061378e8261299b565b91506137998361299b565b9250826137a9576137a8613754565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506137f28161296f565b92915050565b60006020828403121561380e5761380d612933565b5b600061381c848285016137e3565b91505092915050565b6000819050919050565b600061384a61384561384084613825565b612a47565b61299b565b9050919050565b61385a8161382f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138958161295d565b82525050565b60006138a7838361388c565b60208301905092915050565b6000602082019050919050565b60006138cb82613860565b6138d5818561386b565b93506138e08361387c565b8060005b838110156139115781516138f8888261389b565b9750613903836138b3565b9250506001810190506138e4565b5085935050505092915050565b600060a0820190506139336000830188612ac1565b6139406020830187613851565b818103604083015261395281866138c0565b90506139616060830185612b75565b61396e6080830184612ac1565b9695505050505050565b60006139838261299b565b915061398e8361299b565b925082820261399c8161299b565b915082820484148315176139b3576139b2612dbe565b5b509291505056fea264697066735822122034c6f04b97d9f3a5ae79a94f9153ec016aa0e8876c5300288deb2520d33debb864736f6c63430008120033
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.