ERC-20
Overview
Max Total Supply
1,000,000,000 ELEKTRO
Holders
101
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 8 Decimals)
Balance
0.00000001 ELEKTROValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ELEKTRO
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-11-10 */ // SPDX-License-Identifier: MIT /** TG: https://t.me/ElektroRobot Web: https://elektrorobot.xyz/ **/ pragma solidity 0.8.20; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function factory() external pure returns (address); 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); } contract ELEKTRO is Context, IERC20, Ownable { using SafeMath for uint256; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private bots; mapping(address => uint256) private _holderLastTransferTimestamp; bool public transferDelayToggle = false; address payable private _taxWallet; uint256 private _initialBuyTax=25; uint256 private _initialSellTax=25; uint256 private _finalBuyTax=0; uint256 private _finalSellTax=0; uint256 private _reduceBuyTaxAt=1; uint256 private _reduceSellTaxAt=1; uint256 private _preventSwapBefore=20; uint256 private _buyCount=0; uint8 private constant _decimals = 8; uint256 private constant _tTotal = 1000000000 * 10**_decimals; string private constant _name = unicode"Elektro"; string private constant _symbol = unicode"ELEKTRO"; uint256 public _maxTx = 20000000 * 10**_decimals; uint256 public _maxWalletAmount = 20000000 * 10**_decimals; // taxSwapThreshold uint256 public _taxSellThreshold = 1000000 * 10**_decimals; uint256 public _maxSwapTax=10000000 * 10**_decimals; IUniswapV2Router02 private uniswapV2Router; address private uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = false; // Limit TX mapping(address => mapping(uint256 => uint256)) txlimit; uint256 public txLimitAmount = 2; event MaxTxAmountUpdated(uint _maxTx); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor () { _taxWallet = payable(_msgSender()); _balances[_msgSender()] = _tTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_taxWallet] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); uint256 taxAmount=0; if (from != owner() && to != owner()) { if (transferDelayToggle) { if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) { require(_holderLastTransferTimestamp[tx.origin] < block.number,"Only one transfer per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number; } } if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to]) { require(amount <= _maxTx, "Exceeds the _maxTx."); require(balanceOf(to) + amount <= _maxWalletAmount, "Exceeds the maxWalletSize."); if(_buyCount<_preventSwapBefore){ require(!isContract(to)); } _buyCount++; } taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100); if(to == uniswapV2Pair && from!= address(this) ){ require(amount <= _maxTx, "Exceeds the _maxTx."); taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100); } uint256 contractTokenBalance = balanceOf(address(this)); if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSellThreshold && _buyCount>_preventSwapBefore && txlimit[tx.origin][block.number] < txLimitAmount) { swapTokensForEth(min(amount,min(contractTokenBalance,_maxSwapTax))); uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToFee(address(this).balance); } txlimit[tx.origin][block.number]++; } } if(taxAmount>0){ _balances[address(this)]=_balances[address(this)].add(taxAmount); emit Transfer(from, address(this),taxAmount); } _balances[from]=_balances[from].sub(amount); _balances[to]=_balances[to].add(amount.sub(taxAmount)); emit Transfer(from, to, amount.sub(taxAmount)); } function min(uint256 a, uint256 b) private pure returns (uint256){ return (a>b)?b:a; } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { if(tokenAmount==0){return;} if(!tradingOpen){return;} address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } // Remove Limits function RemoveLimits() external onlyOwner{ _maxTx = _tTotal; _maxWalletAmount=_tTotal; transferDelayToggle=false; emit MaxTxAmountUpdated(_tTotal); } function setBotOrNoBot(address account, bool state) external onlyOwner{ bots[account] = state; } function sendETHToFee(uint256 amount) private { _taxWallet.transfer(amount); } function BotOrNot(address a) public view returns (bool){ return bots[a]; } function openTrading() external onlyOwner() { require(!tradingOpen,"trading is already open"); uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _approve(address(this), address(uniswapV2Router), _tTotal); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH()); uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp); IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); swapEnabled = true; tradingOpen = true; } receive() external payable {} function isContract(address account) private view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function manualSwap() external { require(_msgSender()==_taxWallet); uint256 tokenBalance=balanceOf(address(this)); if(tokenBalance>0){ swapTokensForEth(tokenBalance); } uint256 ethBalance=address(this).balance; if(ethBalance>0){ sendETHToFee(ethBalance); } } function setTxnMax(uint256 _amount) external onlyOwner { txLimitAmount = _amount; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTx","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"BotOrNot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RemoveLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxSwapTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSellThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setBotOrNoBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setTxnMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayToggle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"txLimitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040525f60065f6101000a81548160ff021916908315150217905550601960075560196008555f6009555f600a556001600b556001600c556014600d555f600e556008600a62000052919062000610565b6301312d0062000063919062000660565b600f556008600a62000076919062000610565b6301312d0062000087919062000660565b6010556008600a6200009a919062000610565b620f4240620000aa919062000660565b6011556008600a620000bd919062000610565b62989680620000cd919062000660565b6012555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff021916908315150217905550600260165534801562000115575f80fd5b505f620001276200045060201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001d36200045060201b60201c565b600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008600a62000223919062000610565b633b9aca0062000234919062000660565b60015f620002476200045060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002996200045760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620003c46200045060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008600a62000422919062000610565b633b9aca0062000433919062000660565b604051620004429190620006bb565b60405180910390a3620006d6565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200050857808604811115620004e057620004df6200047e565b5b6001851615620004f05780820291505b80810290506200050085620004ab565b9450620004c0565b94509492505050565b5f82620005225760019050620005f4565b8162000531575f9050620005f4565b81600181146200054a576002811462000555576200058b565b6001915050620005f4565b60ff8411156200056a57620005696200047e565b5b8360020a9150848211156200058457620005836200047e565b5b50620005f4565b5060208310610133831016604e8410600b8410161715620005c55782820a905083811115620005bf57620005be6200047e565b5b620005f4565b620005d48484846001620004b7565b92509050818404811115620005ee57620005ed6200047e565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200061c82620005fb565b9150620006298362000604565b9250620006587fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000511565b905092915050565b5f6200066c82620005fb565b91506200067983620005fb565b92508282026200068981620005fb565b91508282048414831517620006a357620006a26200047e565b5b5092915050565b620006b581620005fb565b82525050565b5f602082019050620006d05f830184620006aa565b92915050565b6133b580620006e45f395ff3fe608060405260043610610143575f3560e01c8063715018a6116100b557806395d89b411161006e57806395d89b41146104225780639b00ea421461044c578063a9059cbb14610476578063c9567bf9146104b2578063dd62ed3e146104c8578063e100f3d1146105045761014a565b8063715018a61461033a5780637830b0721461035057806380e4cebf1461037a578063813a3042146103a45780638da5cb5b146103ce57806392e90c75146103f85761014a565b8063313ce56711610107578063313ce5671461025657806351bc3c851461028057806356cd40e7146102965780636912e5b4146102ac5780636c0a24eb146102d457806370a08231146102fe5761014a565b806306fdde031461014e578063095ea7b3146101785780630b2dc07d146101b457806318160ddd146101f057806323b872dd1461021a5761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b5061016261052c565b60405161016f9190612450565b60405180910390f35b348015610183575f80fd5b5061019e60048036038101906101999190612501565b610569565b6040516101ab9190612559565b60405180910390f35b3480156101bf575f80fd5b506101da60048036038101906101d59190612572565b610586565b6040516101e79190612559565b60405180910390f35b3480156101fb575f80fd5b506102046105d8565b60405161021191906125ac565b60405180910390f35b348015610225575f80fd5b50610240600480360381019061023b91906125c5565b6105fb565b60405161024d9190612559565b60405180910390f35b348015610261575f80fd5b5061026a6106cf565b6040516102779190612630565b60405180910390f35b34801561028b575f80fd5b506102946106d7565b005b3480156102a1575f80fd5b506102aa61076f565b005b3480156102b7575f80fd5b506102d260048036038101906102cd9190612673565b6108b7565b005b3480156102df575f80fd5b506102e86109a3565b6040516102f591906125ac565b60405180910390f35b348015610309575f80fd5b50610324600480360381019061031f9190612572565b6109a9565b60405161033191906125ac565b60405180910390f35b348015610345575f80fd5b5061034e6109ef565b005b34801561035b575f80fd5b50610364610b3d565b60405161037191906125ac565b60405180910390f35b348015610385575f80fd5b5061038e610b43565b60405161039b91906125ac565b60405180910390f35b3480156103af575f80fd5b506103b8610b49565b6040516103c59190612559565b60405180910390f35b3480156103d9575f80fd5b506103e2610b5b565b6040516103ef91906126c0565b60405180910390f35b348015610403575f80fd5b5061040c610b82565b60405161041991906125ac565b60405180910390f35b34801561042d575f80fd5b50610436610b88565b6040516104439190612450565b60405180910390f35b348015610457575f80fd5b50610460610bc5565b60405161046d91906125ac565b60405180910390f35b348015610481575f80fd5b5061049c60048036038101906104979190612501565b610bcb565b6040516104a99190612559565b60405180910390f35b3480156104bd575f80fd5b506104c6610be8565b005b3480156104d3575f80fd5b506104ee60048036038101906104e991906126d9565b611107565b6040516104fb91906125ac565b60405180910390f35b34801561050f575f80fd5b5061052a60048036038101906105259190612717565b611189565b005b60606040518060400160405280600781526020017f456c656b74726f00000000000000000000000000000000000000000000000000815250905090565b5f61057c610575611227565b848461122e565b6001905092915050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f6008600a6105e7919061289e565b633b9aca006105f691906128e8565b905090565b5f6106078484846113f1565b6106c484610613611227565b6106bf856040518060600160405280602881526020016133586028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610676611227565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e849092919063ffffffff16565b61122e565b600190509392505050565b5f6008905090565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610718611227565b73ffffffffffffffffffffffffffffffffffffffff1614610737575f80fd5b5f610741306109a9565b90505f8111156107555761075481611ee6565b5b5f4790505f81111561076b5761076a8161216d565b5b5050565b610777611227565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fa90612973565b60405180910390fd5b6008600a610811919061289e565b633b9aca0061082091906128e8565b600f819055506008600a610834919061289e565b633b9aca0061084391906128e8565b6010819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a610891919061289e565b633b9aca006108a091906128e8565b6040516108ad91906125ac565b60405180910390a1565b6108bf611227565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461094b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094290612973565b60405180910390fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60105481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6109f7611227565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7a90612973565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b60115481565b60065f9054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60606040518060400160405280600781526020017f454c454b54524f00000000000000000000000000000000000000000000000000815250905090565b60165481565b5f610bde610bd7611227565b84846113f1565b6001905092915050565b610bf0611227565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7390612973565b60405180910390fd5b60148054906101000a900460ff1615610cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc1906129db565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610d663060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a610d52919061289e565b633b9aca00610d6191906128e8565b61122e565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dd0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610df49190612a0d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e7a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e9e9190612a0d565b6040518363ffffffff1660e01b8152600401610ebb929190612a38565b6020604051808303815f875af1158015610ed7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efb9190612a0d565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610f82306109a9565b5f80610f8c610b5b565b426040518863ffffffff1660e01b8152600401610fae96959493929190612aa1565b60606040518083038185885af1158015610fca573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fef9190612b14565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161108f929190612b64565b6020604051808303815f875af11580156110ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110cf9190612b9f565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611191611227565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461121d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121490612973565b60405180910390fd5b8060168190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361129c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129390612c3a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361130a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130190612cc8565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113e491906125ac565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361145f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145690612d56565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c490612de4565b60405180910390fd5b5f811161150f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150690612e72565b60405180910390fd5b5f611518610b5b565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156115865750611556610b5b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bd45760065f9054906101000a900460ff16156117115760135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611649575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611710574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106116cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c490612f00565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156117ba575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561180d575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118e657600f54821115611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e90612f68565b60405180910390fd5b60105482611864856109a9565b61186e9190612f86565b11156118af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a690613003565b60405180910390fd5b600d54600e5410156118ce576118c4836121d6565b156118cd575f80fd5b5b600e5f8154809291906118e090613021565b91905055505b6119226064611914600b54600e541161190157600754611905565b6009545b856121e790919063ffffffff16565b61225e90919063ffffffff16565b905060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156119ac57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a3557600f548211156119f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ed90612f68565b60405180910390fd5b611a326064611a24600c54600e5411611a1157600854611a15565b600a545b856121e790919063ffffffff16565b61225e90919063ffffffff16565b90505b5f611a3f306109a9565b9050601460159054906101000a900460ff16158015611aaa575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611ac25750601460169054906101000a900460ff165b8015611acf575060115481115b8015611ade5750600d54600e54115b8015611b37575060165460155f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f4381526020019081526020015f2054105b15611bd257611b59611b5484611b4f846012546122a7565b6122a7565b611ee6565b5f4790505f811115611b6f57611b6e4761216d565b5b60155f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f4381526020019081526020015f205f815480929190611bcb90613021565b9190505550505b505b5f811115611cd357611c2c8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122bf90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cca91906125ac565b60405180910390a35b611d238260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461231c90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611dc6611d7a828461231c90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122bf90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611e69848661231c90919063ffffffff16565b604051611e7691906125ac565b60405180910390a350505050565b5f838311158290611ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec29190612450565b60405180910390fd5b505f8385611ed99190613068565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f8103156121505760148054906101000a900460ff1615612150575f600267ffffffffffffffff811115611f3857611f3761309b565b5b604051908082528060200260200182016040528015611f665781602001602082028036833780820191505090505b50905030815f81518110611f7d57611f7c6130c8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612021573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120459190612a0d565b81600181518110612059576120586130c8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120bf3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461122e565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016121219594939291906131ac565b5f604051808303815f87803b158015612138575f80fd5b505af115801561214a573d5f803e3d5ffd5b50505050505b5f601460156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156121d2573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f8083036121f7575f9050612258565b5f828461220491906128e8565b90508284826122139190613231565b14612253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224a906132d1565b60405180910390fd5b809150505b92915050565b5f61229f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612365565b905092915050565b5f8183116122b557826122b7565b815b905092915050565b5f8082846122cd9190612f86565b905083811015612312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230990613339565b60405180910390fd5b8091505092915050565b5f61235d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e84565b905092915050565b5f80831182906123ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a29190612450565b60405180910390fd5b505f83856123b99190613231565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156123fd5780820151818401526020810190506123e2565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612422826123c6565b61242c81856123d0565b935061243c8185602086016123e0565b61244581612408565b840191505092915050565b5f6020820190508181035f8301526124688184612418565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61249d82612474565b9050919050565b6124ad81612493565b81146124b7575f80fd5b50565b5f813590506124c8816124a4565b92915050565b5f819050919050565b6124e0816124ce565b81146124ea575f80fd5b50565b5f813590506124fb816124d7565b92915050565b5f806040838503121561251757612516612470565b5b5f612524858286016124ba565b9250506020612535858286016124ed565b9150509250929050565b5f8115159050919050565b6125538161253f565b82525050565b5f60208201905061256c5f83018461254a565b92915050565b5f6020828403121561258757612586612470565b5b5f612594848285016124ba565b91505092915050565b6125a6816124ce565b82525050565b5f6020820190506125bf5f83018461259d565b92915050565b5f805f606084860312156125dc576125db612470565b5b5f6125e9868287016124ba565b93505060206125fa868287016124ba565b925050604061260b868287016124ed565b9150509250925092565b5f60ff82169050919050565b61262a81612615565b82525050565b5f6020820190506126435f830184612621565b92915050565b6126528161253f565b811461265c575f80fd5b50565b5f8135905061266d81612649565b92915050565b5f806040838503121561268957612688612470565b5b5f612696858286016124ba565b92505060206126a78582860161265f565b9150509250929050565b6126ba81612493565b82525050565b5f6020820190506126d35f8301846126b1565b92915050565b5f80604083850312156126ef576126ee612470565b5b5f6126fc858286016124ba565b925050602061270d858286016124ba565b9150509250929050565b5f6020828403121561272c5761272b612470565b5b5f612739848285016124ed565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156127c4578086048111156127a05761279f612742565b5b60018516156127af5780820291505b80810290506127bd8561276f565b9450612784565b94509492505050565b5f826127dc5760019050612897565b816127e9575f9050612897565b81600181146127ff576002811461280957612838565b6001915050612897565b60ff84111561281b5761281a612742565b5b8360020a91508482111561283257612831612742565b5b50612897565b5060208310610133831016604e8410600b841016171561286d5782820a90508381111561286857612867612742565b5b612897565b61287a848484600161277b565b9250905081840481111561289157612890612742565b5b81810290505b9392505050565b5f6128a8826124ce565b91506128b383612615565b92506128e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846127cd565b905092915050565b5f6128f2826124ce565b91506128fd836124ce565b925082820261290b816124ce565b9150828204841483151761292257612921612742565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61295d6020836123d0565b915061296882612929565b602082019050919050565b5f6020820190508181035f83015261298a81612951565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6129c56017836123d0565b91506129d082612991565b602082019050919050565b5f6020820190508181035f8301526129f2816129b9565b9050919050565b5f81519050612a07816124a4565b92915050565b5f60208284031215612a2257612a21612470565b5b5f612a2f848285016129f9565b91505092915050565b5f604082019050612a4b5f8301856126b1565b612a5860208301846126b1565b9392505050565b5f819050919050565b5f819050919050565b5f612a8b612a86612a8184612a5f565b612a68565b6124ce565b9050919050565b612a9b81612a71565b82525050565b5f60c082019050612ab45f8301896126b1565b612ac1602083018861259d565b612ace6040830187612a92565b612adb6060830186612a92565b612ae860808301856126b1565b612af560a083018461259d565b979650505050505050565b5f81519050612b0e816124d7565b92915050565b5f805f60608486031215612b2b57612b2a612470565b5b5f612b3886828701612b00565b9350506020612b4986828701612b00565b9250506040612b5a86828701612b00565b9150509250925092565b5f604082019050612b775f8301856126b1565b612b84602083018461259d565b9392505050565b5f81519050612b9981612649565b92915050565b5f60208284031215612bb457612bb3612470565b5b5f612bc184828501612b8b565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612c246024836123d0565b9150612c2f82612bca565b604082019050919050565b5f6020820190508181035f830152612c5181612c18565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612cb26022836123d0565b9150612cbd82612c58565b604082019050919050565b5f6020820190508181035f830152612cdf81612ca6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612d406025836123d0565b9150612d4b82612ce6565b604082019050919050565b5f6020820190508181035f830152612d6d81612d34565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612dce6023836123d0565b9150612dd982612d74565b604082019050919050565b5f6020820190508181035f830152612dfb81612dc2565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612e5c6029836123d0565b9150612e6782612e02565b604082019050919050565b5f6020820190508181035f830152612e8981612e50565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f612eea6024836123d0565b9150612ef582612e90565b604082019050919050565b5f6020820190508181035f830152612f1781612ede565b9050919050565b7f4578636565647320746865205f6d617854782e000000000000000000000000005f82015250565b5f612f526013836123d0565b9150612f5d82612f1e565b602082019050919050565b5f6020820190508181035f830152612f7f81612f46565b9050919050565b5f612f90826124ce565b9150612f9b836124ce565b9250828201905080821115612fb357612fb2612742565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612fed601a836123d0565b9150612ff882612fb9565b602082019050919050565b5f6020820190508181035f83015261301a81612fe1565b9050919050565b5f61302b826124ce565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361305d5761305c612742565b5b600182019050919050565b5f613072826124ce565b915061307d836124ce565b925082820390508181111561309557613094612742565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61312781612493565b82525050565b5f613138838361311e565b60208301905092915050565b5f602082019050919050565b5f61315a826130f5565b61316481856130ff565b935061316f8361310f565b805f5b8381101561319f578151613186888261312d565b975061319183613144565b925050600181019050613172565b5085935050505092915050565b5f60a0820190506131bf5f83018861259d565b6131cc6020830187612a92565b81810360408301526131de8186613150565b90506131ed60608301856126b1565b6131fa608083018461259d565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61323b826124ce565b9150613246836124ce565b92508261325657613255613204565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132bb6021836123d0565b91506132c682613261565b604082019050919050565b5f6020820190508181035f8301526132e8816132af565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613323601b836123d0565b915061332e826132ef565b602082019050919050565b5f6020820190508181035f83015261335081613317565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207e1c8a85424305075ef6833f61438c33c63eeac2e6ea65722674daf0524e327b64736f6c63430008140033
Deployed Bytecode
0x608060405260043610610143575f3560e01c8063715018a6116100b557806395d89b411161006e57806395d89b41146104225780639b00ea421461044c578063a9059cbb14610476578063c9567bf9146104b2578063dd62ed3e146104c8578063e100f3d1146105045761014a565b8063715018a61461033a5780637830b0721461035057806380e4cebf1461037a578063813a3042146103a45780638da5cb5b146103ce57806392e90c75146103f85761014a565b8063313ce56711610107578063313ce5671461025657806351bc3c851461028057806356cd40e7146102965780636912e5b4146102ac5780636c0a24eb146102d457806370a08231146102fe5761014a565b806306fdde031461014e578063095ea7b3146101785780630b2dc07d146101b457806318160ddd146101f057806323b872dd1461021a5761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b5061016261052c565b60405161016f9190612450565b60405180910390f35b348015610183575f80fd5b5061019e60048036038101906101999190612501565b610569565b6040516101ab9190612559565b60405180910390f35b3480156101bf575f80fd5b506101da60048036038101906101d59190612572565b610586565b6040516101e79190612559565b60405180910390f35b3480156101fb575f80fd5b506102046105d8565b60405161021191906125ac565b60405180910390f35b348015610225575f80fd5b50610240600480360381019061023b91906125c5565b6105fb565b60405161024d9190612559565b60405180910390f35b348015610261575f80fd5b5061026a6106cf565b6040516102779190612630565b60405180910390f35b34801561028b575f80fd5b506102946106d7565b005b3480156102a1575f80fd5b506102aa61076f565b005b3480156102b7575f80fd5b506102d260048036038101906102cd9190612673565b6108b7565b005b3480156102df575f80fd5b506102e86109a3565b6040516102f591906125ac565b60405180910390f35b348015610309575f80fd5b50610324600480360381019061031f9190612572565b6109a9565b60405161033191906125ac565b60405180910390f35b348015610345575f80fd5b5061034e6109ef565b005b34801561035b575f80fd5b50610364610b3d565b60405161037191906125ac565b60405180910390f35b348015610385575f80fd5b5061038e610b43565b60405161039b91906125ac565b60405180910390f35b3480156103af575f80fd5b506103b8610b49565b6040516103c59190612559565b60405180910390f35b3480156103d9575f80fd5b506103e2610b5b565b6040516103ef91906126c0565b60405180910390f35b348015610403575f80fd5b5061040c610b82565b60405161041991906125ac565b60405180910390f35b34801561042d575f80fd5b50610436610b88565b6040516104439190612450565b60405180910390f35b348015610457575f80fd5b50610460610bc5565b60405161046d91906125ac565b60405180910390f35b348015610481575f80fd5b5061049c60048036038101906104979190612501565b610bcb565b6040516104a99190612559565b60405180910390f35b3480156104bd575f80fd5b506104c6610be8565b005b3480156104d3575f80fd5b506104ee60048036038101906104e991906126d9565b611107565b6040516104fb91906125ac565b60405180910390f35b34801561050f575f80fd5b5061052a60048036038101906105259190612717565b611189565b005b60606040518060400160405280600781526020017f456c656b74726f00000000000000000000000000000000000000000000000000815250905090565b5f61057c610575611227565b848461122e565b6001905092915050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f6008600a6105e7919061289e565b633b9aca006105f691906128e8565b905090565b5f6106078484846113f1565b6106c484610613611227565b6106bf856040518060600160405280602881526020016133586028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610676611227565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e849092919063ffffffff16565b61122e565b600190509392505050565b5f6008905090565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610718611227565b73ffffffffffffffffffffffffffffffffffffffff1614610737575f80fd5b5f610741306109a9565b90505f8111156107555761075481611ee6565b5b5f4790505f81111561076b5761076a8161216d565b5b5050565b610777611227565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fa90612973565b60405180910390fd5b6008600a610811919061289e565b633b9aca0061082091906128e8565b600f819055506008600a610834919061289e565b633b9aca0061084391906128e8565b6010819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a610891919061289e565b633b9aca006108a091906128e8565b6040516108ad91906125ac565b60405180910390a1565b6108bf611227565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461094b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094290612973565b60405180910390fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60105481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6109f7611227565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7a90612973565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b60115481565b60065f9054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60606040518060400160405280600781526020017f454c454b54524f00000000000000000000000000000000000000000000000000815250905090565b60165481565b5f610bde610bd7611227565b84846113f1565b6001905092915050565b610bf0611227565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7390612973565b60405180910390fd5b60148054906101000a900460ff1615610cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc1906129db565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610d663060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a610d52919061289e565b633b9aca00610d6191906128e8565b61122e565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dd0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610df49190612a0d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e7a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e9e9190612a0d565b6040518363ffffffff1660e01b8152600401610ebb929190612a38565b6020604051808303815f875af1158015610ed7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efb9190612a0d565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610f82306109a9565b5f80610f8c610b5b565b426040518863ffffffff1660e01b8152600401610fae96959493929190612aa1565b60606040518083038185885af1158015610fca573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fef9190612b14565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161108f929190612b64565b6020604051808303815f875af11580156110ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110cf9190612b9f565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611191611227565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461121d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121490612973565b60405180910390fd5b8060168190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361129c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129390612c3a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361130a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130190612cc8565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113e491906125ac565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361145f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145690612d56565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c490612de4565b60405180910390fd5b5f811161150f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150690612e72565b60405180910390fd5b5f611518610b5b565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156115865750611556610b5b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bd45760065f9054906101000a900460ff16156117115760135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611649575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611710574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106116cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c490612f00565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156117ba575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561180d575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118e657600f54821115611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e90612f68565b60405180910390fd5b60105482611864856109a9565b61186e9190612f86565b11156118af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a690613003565b60405180910390fd5b600d54600e5410156118ce576118c4836121d6565b156118cd575f80fd5b5b600e5f8154809291906118e090613021565b91905055505b6119226064611914600b54600e541161190157600754611905565b6009545b856121e790919063ffffffff16565b61225e90919063ffffffff16565b905060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156119ac57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a3557600f548211156119f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ed90612f68565b60405180910390fd5b611a326064611a24600c54600e5411611a1157600854611a15565b600a545b856121e790919063ffffffff16565b61225e90919063ffffffff16565b90505b5f611a3f306109a9565b9050601460159054906101000a900460ff16158015611aaa575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611ac25750601460169054906101000a900460ff165b8015611acf575060115481115b8015611ade5750600d54600e54115b8015611b37575060165460155f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f4381526020019081526020015f2054105b15611bd257611b59611b5484611b4f846012546122a7565b6122a7565b611ee6565b5f4790505f811115611b6f57611b6e4761216d565b5b60155f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f4381526020019081526020015f205f815480929190611bcb90613021565b9190505550505b505b5f811115611cd357611c2c8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122bf90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cca91906125ac565b60405180910390a35b611d238260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461231c90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611dc6611d7a828461231c90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122bf90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611e69848661231c90919063ffffffff16565b604051611e7691906125ac565b60405180910390a350505050565b5f838311158290611ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec29190612450565b60405180910390fd5b505f8385611ed99190613068565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f8103156121505760148054906101000a900460ff1615612150575f600267ffffffffffffffff811115611f3857611f3761309b565b5b604051908082528060200260200182016040528015611f665781602001602082028036833780820191505090505b50905030815f81518110611f7d57611f7c6130c8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612021573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120459190612a0d565b81600181518110612059576120586130c8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120bf3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461122e565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016121219594939291906131ac565b5f604051808303815f87803b158015612138575f80fd5b505af115801561214a573d5f803e3d5ffd5b50505050505b5f601460156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156121d2573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f8083036121f7575f9050612258565b5f828461220491906128e8565b90508284826122139190613231565b14612253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224a906132d1565b60405180910390fd5b809150505b92915050565b5f61229f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612365565b905092915050565b5f8183116122b557826122b7565b815b905092915050565b5f8082846122cd9190612f86565b905083811015612312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230990613339565b60405180910390fd5b8091505092915050565b5f61235d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e84565b905092915050565b5f80831182906123ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a29190612450565b60405180910390fd5b505f83856123b99190613231565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156123fd5780820151818401526020810190506123e2565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612422826123c6565b61242c81856123d0565b935061243c8185602086016123e0565b61244581612408565b840191505092915050565b5f6020820190508181035f8301526124688184612418565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61249d82612474565b9050919050565b6124ad81612493565b81146124b7575f80fd5b50565b5f813590506124c8816124a4565b92915050565b5f819050919050565b6124e0816124ce565b81146124ea575f80fd5b50565b5f813590506124fb816124d7565b92915050565b5f806040838503121561251757612516612470565b5b5f612524858286016124ba565b9250506020612535858286016124ed565b9150509250929050565b5f8115159050919050565b6125538161253f565b82525050565b5f60208201905061256c5f83018461254a565b92915050565b5f6020828403121561258757612586612470565b5b5f612594848285016124ba565b91505092915050565b6125a6816124ce565b82525050565b5f6020820190506125bf5f83018461259d565b92915050565b5f805f606084860312156125dc576125db612470565b5b5f6125e9868287016124ba565b93505060206125fa868287016124ba565b925050604061260b868287016124ed565b9150509250925092565b5f60ff82169050919050565b61262a81612615565b82525050565b5f6020820190506126435f830184612621565b92915050565b6126528161253f565b811461265c575f80fd5b50565b5f8135905061266d81612649565b92915050565b5f806040838503121561268957612688612470565b5b5f612696858286016124ba565b92505060206126a78582860161265f565b9150509250929050565b6126ba81612493565b82525050565b5f6020820190506126d35f8301846126b1565b92915050565b5f80604083850312156126ef576126ee612470565b5b5f6126fc858286016124ba565b925050602061270d858286016124ba565b9150509250929050565b5f6020828403121561272c5761272b612470565b5b5f612739848285016124ed565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156127c4578086048111156127a05761279f612742565b5b60018516156127af5780820291505b80810290506127bd8561276f565b9450612784565b94509492505050565b5f826127dc5760019050612897565b816127e9575f9050612897565b81600181146127ff576002811461280957612838565b6001915050612897565b60ff84111561281b5761281a612742565b5b8360020a91508482111561283257612831612742565b5b50612897565b5060208310610133831016604e8410600b841016171561286d5782820a90508381111561286857612867612742565b5b612897565b61287a848484600161277b565b9250905081840481111561289157612890612742565b5b81810290505b9392505050565b5f6128a8826124ce565b91506128b383612615565b92506128e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846127cd565b905092915050565b5f6128f2826124ce565b91506128fd836124ce565b925082820261290b816124ce565b9150828204841483151761292257612921612742565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61295d6020836123d0565b915061296882612929565b602082019050919050565b5f6020820190508181035f83015261298a81612951565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6129c56017836123d0565b91506129d082612991565b602082019050919050565b5f6020820190508181035f8301526129f2816129b9565b9050919050565b5f81519050612a07816124a4565b92915050565b5f60208284031215612a2257612a21612470565b5b5f612a2f848285016129f9565b91505092915050565b5f604082019050612a4b5f8301856126b1565b612a5860208301846126b1565b9392505050565b5f819050919050565b5f819050919050565b5f612a8b612a86612a8184612a5f565b612a68565b6124ce565b9050919050565b612a9b81612a71565b82525050565b5f60c082019050612ab45f8301896126b1565b612ac1602083018861259d565b612ace6040830187612a92565b612adb6060830186612a92565b612ae860808301856126b1565b612af560a083018461259d565b979650505050505050565b5f81519050612b0e816124d7565b92915050565b5f805f60608486031215612b2b57612b2a612470565b5b5f612b3886828701612b00565b9350506020612b4986828701612b00565b9250506040612b5a86828701612b00565b9150509250925092565b5f604082019050612b775f8301856126b1565b612b84602083018461259d565b9392505050565b5f81519050612b9981612649565b92915050565b5f60208284031215612bb457612bb3612470565b5b5f612bc184828501612b8b565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612c246024836123d0565b9150612c2f82612bca565b604082019050919050565b5f6020820190508181035f830152612c5181612c18565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612cb26022836123d0565b9150612cbd82612c58565b604082019050919050565b5f6020820190508181035f830152612cdf81612ca6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612d406025836123d0565b9150612d4b82612ce6565b604082019050919050565b5f6020820190508181035f830152612d6d81612d34565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612dce6023836123d0565b9150612dd982612d74565b604082019050919050565b5f6020820190508181035f830152612dfb81612dc2565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612e5c6029836123d0565b9150612e6782612e02565b604082019050919050565b5f6020820190508181035f830152612e8981612e50565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f612eea6024836123d0565b9150612ef582612e90565b604082019050919050565b5f6020820190508181035f830152612f1781612ede565b9050919050565b7f4578636565647320746865205f6d617854782e000000000000000000000000005f82015250565b5f612f526013836123d0565b9150612f5d82612f1e565b602082019050919050565b5f6020820190508181035f830152612f7f81612f46565b9050919050565b5f612f90826124ce565b9150612f9b836124ce565b9250828201905080821115612fb357612fb2612742565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612fed601a836123d0565b9150612ff882612fb9565b602082019050919050565b5f6020820190508181035f83015261301a81612fe1565b9050919050565b5f61302b826124ce565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361305d5761305c612742565b5b600182019050919050565b5f613072826124ce565b915061307d836124ce565b925082820390508181111561309557613094612742565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61312781612493565b82525050565b5f613138838361311e565b60208301905092915050565b5f602082019050919050565b5f61315a826130f5565b61316481856130ff565b935061316f8361310f565b805f5b8381101561319f578151613186888261312d565b975061319183613144565b925050600181019050613172565b5085935050505092915050565b5f60a0820190506131bf5f83018861259d565b6131cc6020830187612a92565b81810360408301526131de8186613150565b90506131ed60608301856126b1565b6131fa608083018461259d565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61323b826124ce565b9150613246836124ce565b92508261325657613255613204565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132bb6021836123d0565b91506132c682613261565b604082019050919050565b5f6020820190508181035f8301526132e8816132af565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613323601b836123d0565b915061332e826132ef565b602082019050919050565b5f6020820190508181035f83015261335081613317565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207e1c8a85424305075ef6833f61438c33c63eeac2e6ea65722674daf0524e327b64736f6c63430008140033
Deployed Bytecode Sourcemap
3546:8840:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5621:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6454:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10917:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5898:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6623:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5807:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11930:348;;;;;;;;;;;;;:::i;:::-;;10500:191;;;;;;;;;;;;;:::i;:::-;;10699:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4621:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6001:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2627:148;;;;;;;;;;;;;:::i;:::-;;4564:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4711:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3935:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2413:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4776:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5712:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5107:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6128:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11011:671;;;;;;;;;;;;;:::i;:::-;;6303:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12286:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5621:83;5658:13;5691:5;;;;;;;;;;;;;;;;;5684:12;;5621:83;:::o;6454:161::-;6529:4;6546:39;6555:12;:10;:12::i;:::-;6569:7;6578:6;6546:8;:39::i;:::-;6603:4;6596:11;;6454:161;;;;:::o;10917:86::-;10967:4;10988;:7;10993:1;10988:7;;;;;;;;;;;;;;;;;;;;;;;;;10981:14;;10917:86;;;:::o;5898:95::-;5951:7;4376:1;4432:2;:13;;;;:::i;:::-;4419:10;:26;;;;:::i;:::-;5971:14;;5898:95;:::o;6623:313::-;6721:4;6738:36;6748:6;6756:9;6767:6;6738:9;:36::i;:::-;6785:121;6794:6;6802:12;:10;:12::i;:::-;6816:89;6854:6;6816:89;;;;;;;;;;;;;;;;;:11;:19;6828:6;6816:19;;;;;;;;;;;;;;;:33;6836:12;:10;:12::i;:::-;6816:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6785:8;:121::i;:::-;6924:4;6917:11;;6623:313;;;;;:::o;5807:83::-;5848:5;4376:1;5866:16;;5807:83;:::o;11930:348::-;11994:10;;;;;;;;;;;11980:24;;:12;:10;:12::i;:::-;:24;;;11972:33;;;;;;12016:20;12037:24;12055:4;12037:9;:24::i;:::-;12016:45;;12088:1;12075:12;:14;12072:73;;;12103:30;12120:12;12103:16;:30::i;:::-;12072:73;12155:18;12174:21;12155:40;;12220:1;12209:10;:12;12206:65;;;12235:24;12248:10;12235:12;:24::i;:::-;12206:65;11961:317;;11930:348::o;10500:191::-;2550:12;:10;:12::i;:::-;2540:22;;:6;;;;;;;;;;:22;;;2532:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4376:1:::1;4432:2;:13;;;;:::i;:::-;4419:10;:26;;;;:::i;:::-;10553:6;:16;;;;4376:1;4432:2;:13;;;;:::i;:::-;4419:10;:26;;;;:::i;:::-;10580:16;:24;;;;10635:5;10615:19;;:25;;;;;;;;;;;;;;;;;;10656:27;4376:1;4432:2;:13;;;;:::i;:::-;4419:10;:26;;;;:::i;:::-;10656:27;;;;;;:::i;:::-;;;;;;;;10500:191::o:0;10699:110::-;2550:12;:10;:12::i;:::-;2540:22;;:6;;;;;;;;;;:22;;;2532:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10796:5:::1;10780:4;:13;10785:7;10780:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;10699:110:::0;;:::o;4621:58::-;;;;:::o;6001:119::-;6067:7;6094:9;:18;6104:7;6094:18;;;;;;;;;;;;;;;;6087:25;;6001:119;;;:::o;2627:148::-;2550:12;:10;:12::i;:::-;2540:22;;:6;;;;;;;;;;:22;;;2532:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2734:1:::1;2697:40;;2718:6;::::0;::::1;;;;;;;;2697:40;;;;;;;;;;;;2765:1;2748:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2627:148::o:0;4564:50::-;;;;:::o;4711:58::-;;;;:::o;3935:39::-;;;;;;;;;;;;;:::o;2413:79::-;2451:7;2478:6;;;;;;;;;;;2471:13;;2413:79;:::o;4776:51::-;;;;:::o;5712:87::-;5751:13;5784:7;;;;;;;;;;;;;;;;;5777:14;;5712:87;:::o;5107:32::-;;;;:::o;6128:167::-;6206:4;6223:42;6233:12;:10;:12::i;:::-;6247:9;6258:6;6223:9;:42::i;:::-;6283:4;6276:11;;6128:167;;;;:::o;11011:671::-;2550:12;:10;:12::i;:::-;2540:22;;:6;;;;;;;;;;:22;;;2532:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11075:11:::1;::::0;::::1;;;;;;;;11074:12;11066:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11161:42;11124:15;;:80;;;;;;;;;;;;;;;;;;11215:58;11232:4;11247:15;;;;;;;;;;;4376:1;4432:2;:13;;;;:::i;:::-;4419:10;:26;;;;:::i;:::-;11215:8;:58::i;:::-;11318:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11300:55;;;11364:4;11371:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11300:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11284:13;;:110;;;;;;;;;;;;;;;;;;11405:15;;;;;;;;;;;:31;;;11444:21;11475:4;11481:24;11499:4;11481:9;:24::i;:::-;11506:1;11508::::0;11510:7:::1;:5;:7::i;:::-;11518:15;11405:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11552:13;;;;;;;;;;;11545:29;;;11583:15;;;;;;;;;;;11601:14;11545:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11641:4;11627:11;;:18;;;;;;;;;;;;;;;;;;11670:4;11656:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;11011:671::o:0;6303:143::-;6384:7;6411:11;:18;6423:5;6411:18;;;;;;;;;;;;;;;:27;6430:7;6411:27;;;;;;;;;;;;;;;;6404:34;;6303:143;;;;:::o;12286:97::-;2550:12;:10;:12::i;:::-;2540:22;;:6;;;;;;;;;;:22;;;2532:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12368:7:::1;12352:13;:23;;;;12286:97:::0;:::o;168:98::-;221:7;248:10;241:17;;168:98;:::o;6944:335::-;7054:1;7037:19;;:5;:19;;;7029:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7135:1;7116:21;;:7;:21;;;7108:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7217:6;7187:11;:18;7199:5;7187:18;;;;;;;;;;;;;;;:27;7206:7;7187:27;;;;;;;;;;;;;;;:36;;;;7255:7;7239:32;;7248:5;7239:32;;;7264:6;7239:32;;;;;;:::i;:::-;;;;;;;;6944:335;;;:::o;7287:2512::-;7391:1;7375:18;;:4;:18;;;7367:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7468:1;7454:16;;:2;:16;;;7446:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7538:1;7529:6;:10;7521:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7596:17;7639:7;:5;:7::i;:::-;7631:15;;:4;:15;;;;:32;;;;;7656:7;:5;:7::i;:::-;7650:13;;:2;:13;;;;7631:32;7627:1816;;;7684:19;;;;;;;;;;;7680:345;;;7742:15;;;;;;;;;;;7728:30;;:2;:30;;;;:62;;;;;7776:13;;;;;;;;;;;7762:28;;:2;:28;;;;7728:62;7724:286;;;7863:12;7821:28;:39;7850:9;7821:39;;;;;;;;;;;;;;;;:54;7813:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;7978:12;7936:28;:39;7965:9;7936:39;;;;;;;;;;;;;;;:54;;;;7724:286;7680:345;8053:13;;;;;;;;;;;8045:21;;:4;:21;;;:55;;;;;8084:15;;;;;;;;;;;8070:30;;:2;:30;;;;8045:55;:83;;;;;8106:18;:22;8125:2;8106:22;;;;;;;;;;;;;;;;;;;;;;;;;8104:24;8045:83;8041:417;;;8167:6;;8157;:16;;8149:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;8250:16;;8240:6;8224:13;8234:2;8224:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;8216:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;8329:18;;8319:9;;:28;8316:97;;;8378:14;8389:2;8378:10;:14::i;:::-;8377:15;8369:24;;;;;;8316:97;8431:9;;:11;;;;;;;;;:::i;:::-;;;;;;8041:417;8488:76;8560:3;8488:67;8510:15;;8500:9;;:25;8499:55;;8540:14;;8499:55;;;8527:12;;8499:55;8488:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;8476:88;;8588:13;;;;;;;;;;;8582:19;;:2;:19;;;:43;;;;;8620:4;8605:20;;:4;:20;;;;8582:43;8579:241;;;8664:6;;8654;:16;;8646:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;8725:79;8800:3;8725:70;8747:16;;8737:9;;:26;8736:58;;8779:15;;8736:58;;;8765:13;;8736:58;8725:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;8713:91;;8579:241;8836:28;8867:24;8885:4;8867:9;:24::i;:::-;8836:55;;8911:6;;;;;;;;;;;8910:7;:30;;;;;8927:13;;;;;;;;;;;8921:19;;:2;:19;;;8910:30;:45;;;;;8944:11;;;;;;;;;;;8910:45;:87;;;;;8980:17;;8959:20;:38;8910:87;:119;;;;;9011:18;;9001:9;;:28;8910:119;:171;;;;;9068:13;;9033:7;:18;9041:9;9033:18;;;;;;;;;;;;;;;:32;9052:12;9033:32;;;;;;;;;;;;:48;8910:171;8906:526;;;9102:67;9119:49;9123:6;9130:37;9134:20;9155:11;;9130:3;:37::i;:::-;9119:3;:49::i;:::-;9102:16;:67::i;:::-;9188:26;9217:21;9188:50;;9281:1;9260:18;:22;9257:105;;;9307:35;9320:21;9307:12;:35::i;:::-;9257:105;9382:7;:18;9390:9;9382:18;;;;;;;;;;;;;;;:32;9401:12;9382:32;;;;;;;;;;;;:34;;;;;;;;;:::i;:::-;;;;;;9083:349;8906:526;7665:1778;7627:1816;9468:1;9458:9;:11;9455:161;;;9508:39;9537:9;9508;:24;9526:4;9508:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9483:9;:24;9501:4;9483:24;;;;;;;;;;;;;;;:64;;;;9588:4;9565:39;;9574:4;9565:39;;;9594:9;9565:39;;;;;;:::i;:::-;;;;;;;;9455:161;9642:27;9662:6;9642:9;:15;9652:4;9642:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9626:9;:15;9636:4;9626:15;;;;;;;;;;;;;;;:43;;;;9694:40;9712:21;9723:9;9712:6;:10;;:21;;;;:::i;:::-;9694:9;:13;9704:2;9694:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9680:9;:13;9690:2;9680:13;;;;;;;;;;;;;;;:54;;;;9765:2;9750:41;;9759:4;9750:41;;;9769:21;9780:9;9769:6;:10;;:21;;;;:::i;:::-;9750:41;;;;;;:::i;:::-;;;;;;;;7356:2443;7287:2512;;;:::o;1305:190::-;1391:7;1424:1;1419;:6;;1427:12;1411:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1451:9;1467:1;1463;:5;;;;:::i;:::-;1451:17;;1486:1;1479:8;;;1305:190;;;;;:::o;9915:555::-;5239:4;5230:6;;:13;;;;;;;;;;;;;;;;;;10009:1:::1;9996:11;:14:::0;9993:27;10012:7:::1;9993:27;10034:11;::::0;::::1;;;;;;;;10030:25:::0;10047:7:::1;10030:25;10065:21;10103:1;10089:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10065:40;;10134:4;10116;10121:1;10116:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10160:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10150:4;10155:1;10150:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10193:62;10210:4;10225:15;;;;;;;;;;;10243:11;10193:8;:62::i;:::-;10266:15;;;;;;;;;;;:66;;;10347:11;10373:1;10389:4;10416;10436:15;10266:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9982:488;5254:1;5275:5:::0;5266:6;;:14;;;;;;;;;;;;;;;;;;9915:555;:::o;10817:92::-;10874:10;;;;;;;;;;;:19;;:27;10894:6;10874:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10817:92;:::o;11727:195::-;11786:4;11803:12;11870:7;11858:20;11850:28;;11913:1;11906:4;:8;11899:15;;;11727:195;;;:::o;1503:246::-;1561:7;1590:1;1585;:6;1581:47;;1615:1;1608:8;;;;1581:47;1638:9;1654:1;1650;:5;;;;:::i;:::-;1638:17;;1683:1;1678;1674;:5;;;;:::i;:::-;:10;1666:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1740:1;1733:8;;;1503:246;;;;;:::o;1757:132::-;1815:7;1842:39;1846:1;1849;1842:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1835:46;;1757:132;;;;:::o;9809:98::-;9866:7;9893:1;9891;:3;9890:9;;9898:1;9890:9;;;9896:1;9890:9;9883:16;;9809:98;;;;:::o;974:179::-;1032:7;1052:9;1068:1;1064;:5;;;;:::i;:::-;1052:17;;1093:1;1088;:6;;1080:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1144:1;1137:8;;;974:179;;;;:::o;1161:136::-;1219:7;1246:43;1250:1;1253;1246:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1239:50;;1161:136;;;;:::o;1897:189::-;1983:7;2015:1;2011;:5;2018:12;2003:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2042:9;2058:1;2054;:5;;;;:::i;:::-;2042:17;;2077:1;2070:8;;;1897:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:116::-;5258:21;5273:5;5258:21;:::i;:::-;5251:5;5248:32;5238:60;;5294:1;5291;5284:12;5238:60;5188:116;:::o;5310:133::-;5353:5;5391:6;5378:20;5369:29;;5407:30;5431:5;5407:30;:::i;:::-;5310:133;;;;:::o;5449:468::-;5514:6;5522;5571:2;5559:9;5550:7;5546:23;5542:32;5539:119;;;5577:79;;:::i;:::-;5539:119;5697:1;5722:53;5767:7;5758:6;5747:9;5743:22;5722:53;:::i;:::-;5712:63;;5668:117;5824:2;5850:50;5892:7;5883:6;5872:9;5868:22;5850:50;:::i;:::-;5840:60;;5795:115;5449:468;;;;;:::o;5923:118::-;6010:24;6028:5;6010:24;:::i;:::-;6005:3;5998:37;5923:118;;:::o;6047:222::-;6140:4;6178:2;6167:9;6163:18;6155:26;;6191:71;6259:1;6248:9;6244:17;6235:6;6191:71;:::i;:::-;6047:222;;;;:::o;6275:474::-;6343:6;6351;6400:2;6388:9;6379:7;6375:23;6371:32;6368:119;;;6406:79;;:::i;:::-;6368:119;6526:1;6551:53;6596:7;6587:6;6576:9;6572:22;6551:53;:::i;:::-;6541:63;;6497:117;6653:2;6679:53;6724:7;6715:6;6704:9;6700:22;6679:53;:::i;:::-;6669:63;;6624:118;6275:474;;;;;:::o;6755:329::-;6814:6;6863:2;6851:9;6842:7;6838:23;6834:32;6831:119;;;6869:79;;:::i;:::-;6831:119;6989:1;7014:53;7059:7;7050:6;7039:9;7035:22;7014:53;:::i;:::-;7004:63;;6960:117;6755:329;;;;:::o;7090:180::-;7138:77;7135:1;7128:88;7235:4;7232:1;7225:15;7259:4;7256:1;7249:15;7276:102;7318:8;7365:5;7362:1;7358:13;7337:34;;7276:102;;;:::o;7384:848::-;7445:5;7452:4;7476:6;7467:15;;7500:5;7491:14;;7514:712;7535:1;7525:8;7522:15;7514:712;;;7630:4;7625:3;7621:14;7615:4;7612:24;7609:50;;;7639:18;;:::i;:::-;7609:50;7689:1;7679:8;7675:16;7672:451;;;8104:4;8097:5;8093:16;8084:25;;7672:451;8154:4;8148;8144:15;8136:23;;8184:32;8207:8;8184:32;:::i;:::-;8172:44;;7514:712;;;7384:848;;;;;;;:::o;8238:1073::-;8292:5;8483:8;8473:40;;8504:1;8495:10;;8506:5;;8473:40;8532:4;8522:36;;8549:1;8540:10;;8551:5;;8522:36;8618:4;8666:1;8661:27;;;;8702:1;8697:191;;;;8611:277;;8661:27;8679:1;8670:10;;8681:5;;;8697:191;8742:3;8732:8;8729:17;8726:43;;;8749:18;;:::i;:::-;8726:43;8798:8;8795:1;8791:16;8782:25;;8833:3;8826:5;8823:14;8820:40;;;8840:18;;:::i;:::-;8820:40;8873:5;;;8611:277;;8997:2;8987:8;8984:16;8978:3;8972:4;8969:13;8965:36;8947:2;8937:8;8934:16;8929:2;8923:4;8920:12;8916:35;8900:111;8897:246;;;9053:8;9047:4;9043:19;9034:28;;9088:3;9081:5;9078:14;9075:40;;;9095:18;;:::i;:::-;9075:40;9128:5;;8897:246;9168:42;9206:3;9196:8;9190:4;9187:1;9168:42;:::i;:::-;9153:57;;;;9242:4;9237:3;9233:14;9226:5;9223:25;9220:51;;;9251:18;;:::i;:::-;9220:51;9300:4;9293:5;9289:16;9280:25;;8238:1073;;;;;;:::o;9317:281::-;9375:5;9399:23;9417:4;9399:23;:::i;:::-;9391:31;;9443:25;9459:8;9443:25;:::i;:::-;9431:37;;9487:104;9524:66;9514:8;9508:4;9487:104;:::i;:::-;9478:113;;9317:281;;;;:::o;9604:410::-;9644:7;9667:20;9685:1;9667:20;:::i;:::-;9662:25;;9701:20;9719:1;9701:20;:::i;:::-;9696:25;;9756:1;9753;9749:9;9778:30;9796:11;9778:30;:::i;:::-;9767:41;;9957:1;9948:7;9944:15;9941:1;9938:22;9918:1;9911:9;9891:83;9868:139;;9987:18;;:::i;:::-;9868:139;9652:362;9604:410;;;;:::o;10020:182::-;10160:34;10156:1;10148:6;10144:14;10137:58;10020:182;:::o;10208:366::-;10350:3;10371:67;10435:2;10430:3;10371:67;:::i;:::-;10364:74;;10447:93;10536:3;10447:93;:::i;:::-;10565:2;10560:3;10556:12;10549:19;;10208:366;;;:::o;10580:419::-;10746:4;10784:2;10773:9;10769:18;10761:26;;10833:9;10827:4;10823:20;10819:1;10808:9;10804:17;10797:47;10861:131;10987:4;10861:131;:::i;:::-;10853:139;;10580:419;;;:::o;11005:173::-;11145:25;11141:1;11133:6;11129:14;11122:49;11005:173;:::o;11184:366::-;11326:3;11347:67;11411:2;11406:3;11347:67;:::i;:::-;11340:74;;11423:93;11512:3;11423:93;:::i;:::-;11541:2;11536:3;11532:12;11525:19;;11184:366;;;:::o;11556:419::-;11722:4;11760:2;11749:9;11745:18;11737:26;;11809:9;11803:4;11799:20;11795:1;11784:9;11780:17;11773:47;11837:131;11963:4;11837:131;:::i;:::-;11829:139;;11556:419;;;:::o;11981:143::-;12038:5;12069:6;12063:13;12054:22;;12085:33;12112:5;12085:33;:::i;:::-;11981:143;;;;:::o;12130:351::-;12200:6;12249:2;12237:9;12228:7;12224:23;12220:32;12217:119;;;12255:79;;:::i;:::-;12217:119;12375:1;12400:64;12456:7;12447:6;12436:9;12432:22;12400:64;:::i;:::-;12390:74;;12346:128;12130:351;;;;:::o;12487:332::-;12608:4;12646:2;12635:9;12631:18;12623:26;;12659:71;12727:1;12716:9;12712:17;12703:6;12659:71;:::i;:::-;12740:72;12808:2;12797:9;12793:18;12784:6;12740:72;:::i;:::-;12487:332;;;;;:::o;12825:85::-;12870:7;12899:5;12888:16;;12825:85;;;:::o;12916:60::-;12944:3;12965:5;12958:12;;12916:60;;;:::o;12982:158::-;13040:9;13073:61;13091:42;13100:32;13126:5;13100:32;:::i;:::-;13091:42;:::i;:::-;13073:61;:::i;:::-;13060:74;;12982:158;;;:::o;13146:147::-;13241:45;13280:5;13241:45;:::i;:::-;13236:3;13229:58;13146:147;;:::o;13299:807::-;13548:4;13586:3;13575:9;13571:19;13563:27;;13600:71;13668:1;13657:9;13653:17;13644:6;13600:71;:::i;:::-;13681:72;13749:2;13738:9;13734:18;13725:6;13681:72;:::i;:::-;13763:80;13839:2;13828:9;13824:18;13815:6;13763:80;:::i;:::-;13853;13929:2;13918:9;13914:18;13905:6;13853:80;:::i;:::-;13943:73;14011:3;14000:9;13996:19;13987:6;13943:73;:::i;:::-;14026;14094:3;14083:9;14079:19;14070:6;14026:73;:::i;:::-;13299:807;;;;;;;;;:::o;14112:143::-;14169:5;14200:6;14194:13;14185:22;;14216:33;14243:5;14216:33;:::i;:::-;14112:143;;;;:::o;14261:663::-;14349:6;14357;14365;14414:2;14402:9;14393:7;14389:23;14385:32;14382:119;;;14420:79;;:::i;:::-;14382:119;14540:1;14565:64;14621:7;14612:6;14601:9;14597:22;14565:64;:::i;:::-;14555:74;;14511:128;14678:2;14704:64;14760:7;14751:6;14740:9;14736:22;14704:64;:::i;:::-;14694:74;;14649:129;14817:2;14843:64;14899:7;14890:6;14879:9;14875:22;14843:64;:::i;:::-;14833:74;;14788:129;14261:663;;;;;:::o;14930:332::-;15051:4;15089:2;15078:9;15074:18;15066:26;;15102:71;15170:1;15159:9;15155:17;15146:6;15102:71;:::i;:::-;15183:72;15251:2;15240:9;15236:18;15227:6;15183:72;:::i;:::-;14930:332;;;;;:::o;15268:137::-;15322:5;15353:6;15347:13;15338:22;;15369:30;15393:5;15369:30;:::i;:::-;15268:137;;;;:::o;15411:345::-;15478:6;15527:2;15515:9;15506:7;15502:23;15498:32;15495:119;;;15533:79;;:::i;:::-;15495:119;15653:1;15678:61;15731:7;15722:6;15711:9;15707:22;15678:61;:::i;:::-;15668:71;;15624:125;15411:345;;;;:::o;15762:223::-;15902:34;15898:1;15890:6;15886:14;15879:58;15971:6;15966:2;15958:6;15954:15;15947:31;15762:223;:::o;15991:366::-;16133:3;16154:67;16218:2;16213:3;16154:67;:::i;:::-;16147:74;;16230:93;16319:3;16230:93;:::i;:::-;16348:2;16343:3;16339:12;16332:19;;15991:366;;;:::o;16363:419::-;16529:4;16567:2;16556:9;16552:18;16544:26;;16616:9;16610:4;16606:20;16602:1;16591:9;16587:17;16580:47;16644:131;16770:4;16644:131;:::i;:::-;16636:139;;16363:419;;;:::o;16788:221::-;16928:34;16924:1;16916:6;16912:14;16905:58;16997:4;16992:2;16984:6;16980:15;16973:29;16788:221;:::o;17015:366::-;17157:3;17178:67;17242:2;17237:3;17178:67;:::i;:::-;17171:74;;17254:93;17343:3;17254:93;:::i;:::-;17372:2;17367:3;17363:12;17356:19;;17015:366;;;:::o;17387:419::-;17553:4;17591:2;17580:9;17576:18;17568:26;;17640:9;17634:4;17630:20;17626:1;17615:9;17611:17;17604:47;17668:131;17794:4;17668:131;:::i;:::-;17660:139;;17387:419;;;:::o;17812:224::-;17952:34;17948:1;17940:6;17936:14;17929:58;18021:7;18016:2;18008:6;18004:15;17997:32;17812:224;:::o;18042:366::-;18184:3;18205:67;18269:2;18264:3;18205:67;:::i;:::-;18198:74;;18281:93;18370:3;18281:93;:::i;:::-;18399:2;18394:3;18390:12;18383:19;;18042:366;;;:::o;18414:419::-;18580:4;18618:2;18607:9;18603:18;18595:26;;18667:9;18661:4;18657:20;18653:1;18642:9;18638:17;18631:47;18695:131;18821:4;18695:131;:::i;:::-;18687:139;;18414:419;;;:::o;18839:222::-;18979:34;18975:1;18967:6;18963:14;18956:58;19048:5;19043:2;19035:6;19031:15;19024:30;18839:222;:::o;19067:366::-;19209:3;19230:67;19294:2;19289:3;19230:67;:::i;:::-;19223:74;;19306:93;19395:3;19306:93;:::i;:::-;19424:2;19419:3;19415:12;19408:19;;19067:366;;;:::o;19439:419::-;19605:4;19643:2;19632:9;19628:18;19620:26;;19692:9;19686:4;19682:20;19678:1;19667:9;19663:17;19656:47;19720:131;19846:4;19720:131;:::i;:::-;19712:139;;19439:419;;;:::o;19864:228::-;20004:34;20000:1;19992:6;19988:14;19981:58;20073:11;20068:2;20060:6;20056:15;20049:36;19864:228;:::o;20098:366::-;20240:3;20261:67;20325:2;20320:3;20261:67;:::i;:::-;20254:74;;20337:93;20426:3;20337:93;:::i;:::-;20455:2;20450:3;20446:12;20439:19;;20098:366;;;:::o;20470:419::-;20636:4;20674:2;20663:9;20659:18;20651:26;;20723:9;20717:4;20713:20;20709:1;20698:9;20694:17;20687:47;20751:131;20877:4;20751:131;:::i;:::-;20743:139;;20470:419;;;:::o;20895:223::-;21035:34;21031:1;21023:6;21019:14;21012:58;21104:6;21099:2;21091:6;21087:15;21080:31;20895:223;:::o;21124:366::-;21266:3;21287:67;21351:2;21346:3;21287:67;:::i;:::-;21280:74;;21363:93;21452:3;21363:93;:::i;:::-;21481:2;21476:3;21472:12;21465:19;;21124:366;;;:::o;21496:419::-;21662:4;21700:2;21689:9;21685:18;21677:26;;21749:9;21743:4;21739:20;21735:1;21724:9;21720:17;21713:47;21777:131;21903:4;21777:131;:::i;:::-;21769:139;;21496:419;;;:::o;21921:169::-;22061:21;22057:1;22049:6;22045:14;22038:45;21921:169;:::o;22096:366::-;22238:3;22259:67;22323:2;22318:3;22259:67;:::i;:::-;22252:74;;22335:93;22424:3;22335:93;:::i;:::-;22453:2;22448:3;22444:12;22437:19;;22096:366;;;:::o;22468:419::-;22634:4;22672:2;22661:9;22657:18;22649:26;;22721:9;22715:4;22711:20;22707:1;22696:9;22692:17;22685:47;22749:131;22875:4;22749:131;:::i;:::-;22741:139;;22468:419;;;:::o;22893:191::-;22933:3;22952:20;22970:1;22952:20;:::i;:::-;22947:25;;22986:20;23004:1;22986:20;:::i;:::-;22981:25;;23029:1;23026;23022:9;23015:16;;23050:3;23047:1;23044:10;23041:36;;;23057:18;;:::i;:::-;23041:36;22893:191;;;;:::o;23090:176::-;23230:28;23226:1;23218:6;23214:14;23207:52;23090:176;:::o;23272:366::-;23414:3;23435:67;23499:2;23494:3;23435:67;:::i;:::-;23428:74;;23511:93;23600:3;23511:93;:::i;:::-;23629:2;23624:3;23620:12;23613:19;;23272:366;;;:::o;23644:419::-;23810:4;23848:2;23837:9;23833:18;23825:26;;23897:9;23891:4;23887:20;23883:1;23872:9;23868:17;23861:47;23925:131;24051:4;23925:131;:::i;:::-;23917:139;;23644:419;;;:::o;24069:233::-;24108:3;24131:24;24149:5;24131:24;:::i;:::-;24122:33;;24177:66;24170:5;24167:77;24164:103;;24247:18;;:::i;:::-;24164:103;24294:1;24287:5;24283:13;24276:20;;24069:233;;;:::o;24308:194::-;24348:4;24368:20;24386:1;24368:20;:::i;:::-;24363:25;;24402:20;24420:1;24402:20;:::i;:::-;24397:25;;24446:1;24443;24439:9;24431:17;;24470:1;24464:4;24461:11;24458:37;;;24475:18;;:::i;:::-;24458:37;24308:194;;;;:::o;24508:180::-;24556:77;24553:1;24546:88;24653:4;24650:1;24643:15;24677:4;24674:1;24667:15;24694:180;24742:77;24739:1;24732:88;24839:4;24836:1;24829:15;24863:4;24860:1;24853:15;24880:114;24947:6;24981:5;24975:12;24965:22;;24880:114;;;:::o;25000:184::-;25099:11;25133:6;25128:3;25121:19;25173:4;25168:3;25164:14;25149:29;;25000:184;;;;:::o;25190:132::-;25257:4;25280:3;25272:11;;25310:4;25305:3;25301:14;25293:22;;25190:132;;;:::o;25328:108::-;25405:24;25423:5;25405:24;:::i;:::-;25400:3;25393:37;25328:108;;:::o;25442:179::-;25511:10;25532:46;25574:3;25566:6;25532:46;:::i;:::-;25610:4;25605:3;25601:14;25587:28;;25442:179;;;;:::o;25627:113::-;25697:4;25729;25724:3;25720:14;25712:22;;25627:113;;;:::o;25776:732::-;25895:3;25924:54;25972:5;25924:54;:::i;:::-;25994:86;26073:6;26068:3;25994:86;:::i;:::-;25987:93;;26104:56;26154:5;26104:56;:::i;:::-;26183:7;26214:1;26199:284;26224:6;26221:1;26218:13;26199:284;;;26300:6;26294:13;26327:63;26386:3;26371:13;26327:63;:::i;:::-;26320:70;;26413:60;26466:6;26413:60;:::i;:::-;26403:70;;26259:224;26246:1;26243;26239:9;26234:14;;26199:284;;;26203:14;26499:3;26492:10;;25900:608;;;25776:732;;;;:::o;26514:831::-;26777:4;26815:3;26804:9;26800:19;26792:27;;26829:71;26897:1;26886:9;26882:17;26873:6;26829:71;:::i;:::-;26910:80;26986:2;26975:9;26971:18;26962:6;26910:80;:::i;:::-;27037:9;27031:4;27027:20;27022:2;27011:9;27007:18;27000:48;27065:108;27168:4;27159:6;27065:108;:::i;:::-;27057:116;;27183:72;27251:2;27240:9;27236:18;27227:6;27183:72;:::i;:::-;27265:73;27333:3;27322:9;27318:19;27309:6;27265:73;:::i;:::-;26514:831;;;;;;;;:::o;27351:180::-;27399:77;27396:1;27389:88;27496:4;27493:1;27486:15;27520:4;27517:1;27510:15;27537:185;27577:1;27594:20;27612:1;27594:20;:::i;:::-;27589:25;;27628:20;27646:1;27628:20;:::i;:::-;27623:25;;27667:1;27657:35;;27672:18;;:::i;:::-;27657:35;27714:1;27711;27707:9;27702:14;;27537:185;;;;:::o;27728:220::-;27868:34;27864:1;27856:6;27852:14;27845:58;27937:3;27932:2;27924:6;27920:15;27913:28;27728:220;:::o;27954:366::-;28096:3;28117:67;28181:2;28176:3;28117:67;:::i;:::-;28110:74;;28193:93;28282:3;28193:93;:::i;:::-;28311:2;28306:3;28302:12;28295:19;;27954:366;;;:::o;28326:419::-;28492:4;28530:2;28519:9;28515:18;28507:26;;28579:9;28573:4;28569:20;28565:1;28554:9;28550:17;28543:47;28607:131;28733:4;28607:131;:::i;:::-;28599:139;;28326:419;;;:::o;28751:177::-;28891:29;28887:1;28879:6;28875:14;28868:53;28751:177;:::o;28934:366::-;29076:3;29097:67;29161:2;29156:3;29097:67;:::i;:::-;29090:74;;29173:93;29262:3;29173:93;:::i;:::-;29291:2;29286:3;29282:12;29275:19;;28934:366;;;:::o;29306:419::-;29472:4;29510:2;29499:9;29495:18;29487:26;;29559:9;29553:4;29549:20;29545:1;29534:9;29530:17;29523:47;29587:131;29713:4;29587:131;:::i;:::-;29579:139;;29306:419;;;:::o
Swarm Source
ipfs://7e1c8a85424305075ef6833f61438c33c63eeac2e6ea65722674daf0524e327b
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.