Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000 KAT
Holders
30
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 8 Decimals)
Balance
0.00000001 KATValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
KAT
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-10-31 */ // SPDX-License-Identifier: MIT /** web: https://kittykatcoin.xyz/ tg: https://t.me/KittyKatCoinERC x: https://twitter.com/KittyKatCoin_ **/ 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 KAT 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=23; uint256 private _initialSellTax=23; 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"KITTY KAT"; string private constant _symbol = unicode"KAT"; uint256 public _maxTx = 10000000 * 10**_decimals; uint256 public _maxWalletAmount = 10000000 * 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 eraseLimits() external onlyOwner{ _maxTx = _tTotal; _maxWalletAmount=_tTotal; transferDelayToggle=false; emit MaxTxAmountUpdated(_tTotal); } function setBotOrNot(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 manSwap() 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 setTxLimit(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":"_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":"eraseLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manSwap","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":"setBotOrNot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setTxLimit","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
60806040525f60065f6101000a81548160ff021916908315150217905550601760075560176008555f6009555f600a556001600b556001600c556014600d555f600e556008600a6200005291906200060e565b629896806200006291906200065e565b600f556008600a6200007591906200060e565b629896806200008591906200065e565b6010556008600a6200009891906200060e565b620f4240620000a891906200065e565b6011556008600a620000bb91906200060e565b62989680620000cb91906200065e565b6012555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff021916908315150217905550600260165534801562000113575f80fd5b505f620001256200044e60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001d16200044e60201b60201c565b600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008600a6200022191906200060e565b633b9aca006200023291906200065e565b60015f620002456200044e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002976200045560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620003c26200044e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008600a6200042091906200060e565b633b9aca006200043191906200065e565b604051620004409190620006b9565b60405180910390a3620006d4565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200050657808604811115620004de57620004dd6200047c565b5b6001851615620004ee5780820291505b8081029050620004fe85620004a9565b9450620004be565b94509492505050565b5f82620005205760019050620005f2565b816200052f575f9050620005f2565b8160018114620005485760028114620005535762000589565b6001915050620005f2565b60ff8411156200056857620005676200047c565b5b8360020a9150848211156200058257620005816200047c565b5b50620005f2565b5060208310610133831016604e8410600b8410161715620005c35782820a905083811115620005bd57620005bc6200047c565b5b620005f2565b620005d28484846001620004b5565b92509050818404811115620005ec57620005eb6200047c565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200061a82620005f9565b9150620006278362000602565b9250620006567fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200050f565b905092915050565b5f6200066a82620005f9565b91506200067783620005f9565b92508282026200068781620005f9565b91508282048414831517620006a157620006a06200047c565b5b5092915050565b620006b381620005f9565b82525050565b5f602082019050620006ce5f830184620006a8565b92915050565b6133b580620006e25f395ff3fe608060405260043610610143575f3560e01c806370a08231116100b557806392e90c751161006e57806392e90c751461042057806395d89b411461044a5780639b00ea4214610474578063a9059cbb1461049e578063c9567bf9146104da578063dd62ed3e146104f05761014a565b806370a0823114610326578063715018a6146103625780637830b0721461037857806380e4cebf146103a2578063813a3042146103cc5780638da5cb5b146103f65761014a565b80632a3b2aac116101075780632a3b2aac14610256578063313ce5671461027e5780634a7657b0146102a85780635c85974f146102be5780636c0a24eb146102e65780636f616f99146103105761014a565b806306fdde031461014e578063095ea7b3146101785780630b2dc07d146101b457806318160ddd146101f057806323b872dd1461021a5761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b5061016261052c565b60405161016f9190612450565b60405180910390f35b348015610183575f80fd5b5061019e60048036038101906101999190612501565b610569565b6040516101ab9190612559565b60405180910390f35b3480156101bf575f80fd5b506101da60048036038101906101d59190612572565b610586565b6040516101e79190612559565b60405180910390f35b3480156101fb575f80fd5b506102046105d8565b60405161021191906125ac565b60405180910390f35b348015610225575f80fd5b50610240600480360381019061023b91906125c5565b6105fb565b60405161024d9190612559565b60405180910390f35b348015610261575f80fd5b5061027c6004803603810190610277919061263f565b6106cf565b005b348015610289575f80fd5b506102926107bb565b60405161029f9190612698565b60405180910390f35b3480156102b3575f80fd5b506102bc6107c3565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906126b1565b61090b565b005b3480156102f1575f80fd5b506102fa6109a9565b60405161030791906125ac565b60405180910390f35b34801561031b575f80fd5b506103246109af565b005b348015610331575f80fd5b5061034c60048036038101906103479190612572565b610a47565b60405161035991906125ac565b60405180910390f35b34801561036d575f80fd5b50610376610a8d565b005b348015610383575f80fd5b5061038c610bdb565b60405161039991906125ac565b60405180910390f35b3480156103ad575f80fd5b506103b6610be1565b6040516103c391906125ac565b60405180910390f35b3480156103d7575f80fd5b506103e0610be7565b6040516103ed9190612559565b60405180910390f35b348015610401575f80fd5b5061040a610bf9565b60405161041791906126eb565b60405180910390f35b34801561042b575f80fd5b50610434610c20565b60405161044191906125ac565b60405180910390f35b348015610455575f80fd5b5061045e610c26565b60405161046b9190612450565b60405180910390f35b34801561047f575f80fd5b50610488610c63565b60405161049591906125ac565b60405180910390f35b3480156104a9575f80fd5b506104c460048036038101906104bf9190612501565b610c69565b6040516104d19190612559565b60405180910390f35b3480156104e5575f80fd5b506104ee610c86565b005b3480156104fb575f80fd5b5061051660048036038101906105119190612704565b6111a5565b60405161052391906125ac565b60405180910390f35b60606040518060400160405280600981526020017f4b49545459204b41540000000000000000000000000000000000000000000000815250905090565b5f61057c610575611227565b848461122e565b6001905092915050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f6008600a6105e7919061289e565b633b9aca006105f691906128e8565b905090565b5f6106078484846113f1565b6106c484610613611227565b6106bf856040518060600160405280602881526020016133586028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610676611227565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e849092919063ffffffff16565b61122e565b600190509392505050565b6106d7611227565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075a90612973565b60405180910390fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f6008905090565b6107cb611227565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084e90612973565b60405180910390fd5b6008600a610865919061289e565b633b9aca0061087491906128e8565b600f819055506008600a610888919061289e565b633b9aca0061089791906128e8565b6010819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a6108e5919061289e565b633b9aca006108f491906128e8565b60405161090191906125ac565b60405180910390a1565b610913611227565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461099f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099690612973565b60405180910390fd5b8060168190555050565b60105481565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109f0611227565b73ffffffffffffffffffffffffffffffffffffffff1614610a0f575f80fd5b5f610a1930610a47565b90505f811115610a2d57610a2c81611ee6565b5b5f4790505f811115610a4357610a428161216d565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a95611227565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1890612973565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b60115481565b60065f9054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60606040518060400160405280600381526020017f4b41540000000000000000000000000000000000000000000000000000000000815250905090565b60165481565b5f610c7c610c75611227565b84846113f1565b6001905092915050565b610c8e611227565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1190612973565b60405180910390fd5b60148054906101000a900460ff1615610d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5f906129db565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e043060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a610df0919061289e565b633b9aca00610dff91906128e8565b61122e565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e6e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e929190612a0d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f18573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f3c9190612a0d565b6040518363ffffffff1660e01b8152600401610f59929190612a38565b6020604051808303815f875af1158015610f75573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f999190612a0d565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061102030610a47565b5f8061102a610bf9565b426040518863ffffffff1660e01b815260040161104c96959493929190612aa1565b60606040518083038185885af1158015611068573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061108d9190612b14565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161112d929190612b64565b6020604051808303815f875af1158015611149573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061116d9190612b9f565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361129c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129390612c3a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361130a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130190612cc8565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113e491906125ac565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361145f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145690612d56565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c490612de4565b60405180910390fd5b5f811161150f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150690612e72565b60405180910390fd5b5f611518610bf9565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156115865750611556610bf9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bd45760065f9054906101000a900460ff16156117115760135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611649575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611710574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106116cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c490612f00565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156117ba575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561180d575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118e657600f54821115611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e90612f68565b60405180910390fd5b6010548261186485610a47565b61186e9190612f86565b11156118af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a690613003565b60405180910390fd5b600d54600e5410156118ce576118c4836121d6565b156118cd575f80fd5b5b600e5f8154809291906118e090613021565b91905055505b6119226064611914600b54600e541161190157600754611905565b6009545b856121e790919063ffffffff16565b61225e90919063ffffffff16565b905060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156119ac57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a3557600f548211156119f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ed90612f68565b60405180910390fd5b611a326064611a24600c54600e5411611a1157600854611a15565b600a545b856121e790919063ffffffff16565b61225e90919063ffffffff16565b90505b5f611a3f30610a47565b9050601460159054906101000a900460ff16158015611aaa575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611ac25750601460169054906101000a900460ff165b8015611acf575060115481115b8015611ade5750600d54600e54115b8015611b37575060165460155f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f4381526020019081526020015f2054105b15611bd257611b59611b5484611b4f846012546122a7565b6122a7565b611ee6565b5f4790505f811115611b6f57611b6e4761216d565b5b60155f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f4381526020019081526020015f205f815480929190611bcb90613021565b9190505550505b505b5f811115611cd357611c2c8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122bf90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cca91906125ac565b60405180910390a35b611d238260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461231c90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611dc6611d7a828461231c90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122bf90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611e69848661231c90919063ffffffff16565b604051611e7691906125ac565b60405180910390a350505050565b5f838311158290611ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec29190612450565b60405180910390fd5b505f8385611ed99190613068565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f8103156121505760148054906101000a900460ff1615612150575f600267ffffffffffffffff811115611f3857611f3761309b565b5b604051908082528060200260200182016040528015611f665781602001602082028036833780820191505090505b50905030815f81518110611f7d57611f7c6130c8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612021573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120459190612a0d565b81600181518110612059576120586130c8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120bf3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461122e565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016121219594939291906131ac565b5f604051808303815f87803b158015612138575f80fd5b505af115801561214a573d5f803e3d5ffd5b50505050505b5f601460156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156121d2573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f8083036121f7575f9050612258565b5f828461220491906128e8565b90508284826122139190613231565b14612253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224a906132d1565b60405180910390fd5b809150505b92915050565b5f61229f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612365565b905092915050565b5f8183116122b557826122b7565b815b905092915050565b5f8082846122cd9190612f86565b905083811015612312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230990613339565b60405180910390fd5b8091505092915050565b5f61235d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e84565b905092915050565b5f80831182906123ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a29190612450565b60405180910390fd5b505f83856123b99190613231565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156123fd5780820151818401526020810190506123e2565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612422826123c6565b61242c81856123d0565b935061243c8185602086016123e0565b61244581612408565b840191505092915050565b5f6020820190508181035f8301526124688184612418565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61249d82612474565b9050919050565b6124ad81612493565b81146124b7575f80fd5b50565b5f813590506124c8816124a4565b92915050565b5f819050919050565b6124e0816124ce565b81146124ea575f80fd5b50565b5f813590506124fb816124d7565b92915050565b5f806040838503121561251757612516612470565b5b5f612524858286016124ba565b9250506020612535858286016124ed565b9150509250929050565b5f8115159050919050565b6125538161253f565b82525050565b5f60208201905061256c5f83018461254a565b92915050565b5f6020828403121561258757612586612470565b5b5f612594848285016124ba565b91505092915050565b6125a6816124ce565b82525050565b5f6020820190506125bf5f83018461259d565b92915050565b5f805f606084860312156125dc576125db612470565b5b5f6125e9868287016124ba565b93505060206125fa868287016124ba565b925050604061260b868287016124ed565b9150509250925092565b61261e8161253f565b8114612628575f80fd5b50565b5f8135905061263981612615565b92915050565b5f806040838503121561265557612654612470565b5b5f612662858286016124ba565b92505060206126738582860161262b565b9150509250929050565b5f60ff82169050919050565b6126928161267d565b82525050565b5f6020820190506126ab5f830184612689565b92915050565b5f602082840312156126c6576126c5612470565b5b5f6126d3848285016124ed565b91505092915050565b6126e581612493565b82525050565b5f6020820190506126fe5f8301846126dc565b92915050565b5f806040838503121561271a57612719612470565b5b5f612727858286016124ba565b9250506020612738858286016124ba565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156127c4578086048111156127a05761279f612742565b5b60018516156127af5780820291505b80810290506127bd8561276f565b9450612784565b94509492505050565b5f826127dc5760019050612897565b816127e9575f9050612897565b81600181146127ff576002811461280957612838565b6001915050612897565b60ff84111561281b5761281a612742565b5b8360020a91508482111561283257612831612742565b5b50612897565b5060208310610133831016604e8410600b841016171561286d5782820a90508381111561286857612867612742565b5b612897565b61287a848484600161277b565b9250905081840481111561289157612890612742565b5b81810290505b9392505050565b5f6128a8826124ce565b91506128b38361267d565b92506128e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846127cd565b905092915050565b5f6128f2826124ce565b91506128fd836124ce565b925082820261290b816124ce565b9150828204841483151761292257612921612742565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61295d6020836123d0565b915061296882612929565b602082019050919050565b5f6020820190508181035f83015261298a81612951565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6129c56017836123d0565b91506129d082612991565b602082019050919050565b5f6020820190508181035f8301526129f2816129b9565b9050919050565b5f81519050612a07816124a4565b92915050565b5f60208284031215612a2257612a21612470565b5b5f612a2f848285016129f9565b91505092915050565b5f604082019050612a4b5f8301856126dc565b612a5860208301846126dc565b9392505050565b5f819050919050565b5f819050919050565b5f612a8b612a86612a8184612a5f565b612a68565b6124ce565b9050919050565b612a9b81612a71565b82525050565b5f60c082019050612ab45f8301896126dc565b612ac1602083018861259d565b612ace6040830187612a92565b612adb6060830186612a92565b612ae860808301856126dc565b612af560a083018461259d565b979650505050505050565b5f81519050612b0e816124d7565b92915050565b5f805f60608486031215612b2b57612b2a612470565b5b5f612b3886828701612b00565b9350506020612b4986828701612b00565b9250506040612b5a86828701612b00565b9150509250925092565b5f604082019050612b775f8301856126dc565b612b84602083018461259d565b9392505050565b5f81519050612b9981612615565b92915050565b5f60208284031215612bb457612bb3612470565b5b5f612bc184828501612b8b565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612c246024836123d0565b9150612c2f82612bca565b604082019050919050565b5f6020820190508181035f830152612c5181612c18565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612cb26022836123d0565b9150612cbd82612c58565b604082019050919050565b5f6020820190508181035f830152612cdf81612ca6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612d406025836123d0565b9150612d4b82612ce6565b604082019050919050565b5f6020820190508181035f830152612d6d81612d34565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612dce6023836123d0565b9150612dd982612d74565b604082019050919050565b5f6020820190508181035f830152612dfb81612dc2565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612e5c6029836123d0565b9150612e6782612e02565b604082019050919050565b5f6020820190508181035f830152612e8981612e50565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f612eea6024836123d0565b9150612ef582612e90565b604082019050919050565b5f6020820190508181035f830152612f1781612ede565b9050919050565b7f4578636565647320746865205f6d617854782e000000000000000000000000005f82015250565b5f612f526013836123d0565b9150612f5d82612f1e565b602082019050919050565b5f6020820190508181035f830152612f7f81612f46565b9050919050565b5f612f90826124ce565b9150612f9b836124ce565b9250828201905080821115612fb357612fb2612742565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612fed601a836123d0565b9150612ff882612fb9565b602082019050919050565b5f6020820190508181035f83015261301a81612fe1565b9050919050565b5f61302b826124ce565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361305d5761305c612742565b5b600182019050919050565b5f613072826124ce565b915061307d836124ce565b925082820390508181111561309557613094612742565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61312781612493565b82525050565b5f613138838361311e565b60208301905092915050565b5f602082019050919050565b5f61315a826130f5565b61316481856130ff565b935061316f8361310f565b805f5b8381101561319f578151613186888261312d565b975061319183613144565b925050600181019050613172565b5085935050505092915050565b5f60a0820190506131bf5f83018861259d565b6131cc6020830187612a92565b81810360408301526131de8186613150565b90506131ed60608301856126dc565b6131fa608083018461259d565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61323b826124ce565b9150613246836124ce565b92508261325657613255613204565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132bb6021836123d0565b91506132c682613261565b604082019050919050565b5f6020820190508181035f8301526132e8816132af565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613323601b836123d0565b915061332e826132ef565b602082019050919050565b5f6020820190508181035f83015261335081613317565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220666e2bdc8a0418225571758a7677908753c8957cb7f3d37c982c10d5574c2cde64736f6c63430008140033
Deployed Bytecode
0x608060405260043610610143575f3560e01c806370a08231116100b557806392e90c751161006e57806392e90c751461042057806395d89b411461044a5780639b00ea4214610474578063a9059cbb1461049e578063c9567bf9146104da578063dd62ed3e146104f05761014a565b806370a0823114610326578063715018a6146103625780637830b0721461037857806380e4cebf146103a2578063813a3042146103cc5780638da5cb5b146103f65761014a565b80632a3b2aac116101075780632a3b2aac14610256578063313ce5671461027e5780634a7657b0146102a85780635c85974f146102be5780636c0a24eb146102e65780636f616f99146103105761014a565b806306fdde031461014e578063095ea7b3146101785780630b2dc07d146101b457806318160ddd146101f057806323b872dd1461021a5761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b5061016261052c565b60405161016f9190612450565b60405180910390f35b348015610183575f80fd5b5061019e60048036038101906101999190612501565b610569565b6040516101ab9190612559565b60405180910390f35b3480156101bf575f80fd5b506101da60048036038101906101d59190612572565b610586565b6040516101e79190612559565b60405180910390f35b3480156101fb575f80fd5b506102046105d8565b60405161021191906125ac565b60405180910390f35b348015610225575f80fd5b50610240600480360381019061023b91906125c5565b6105fb565b60405161024d9190612559565b60405180910390f35b348015610261575f80fd5b5061027c6004803603810190610277919061263f565b6106cf565b005b348015610289575f80fd5b506102926107bb565b60405161029f9190612698565b60405180910390f35b3480156102b3575f80fd5b506102bc6107c3565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906126b1565b61090b565b005b3480156102f1575f80fd5b506102fa6109a9565b60405161030791906125ac565b60405180910390f35b34801561031b575f80fd5b506103246109af565b005b348015610331575f80fd5b5061034c60048036038101906103479190612572565b610a47565b60405161035991906125ac565b60405180910390f35b34801561036d575f80fd5b50610376610a8d565b005b348015610383575f80fd5b5061038c610bdb565b60405161039991906125ac565b60405180910390f35b3480156103ad575f80fd5b506103b6610be1565b6040516103c391906125ac565b60405180910390f35b3480156103d7575f80fd5b506103e0610be7565b6040516103ed9190612559565b60405180910390f35b348015610401575f80fd5b5061040a610bf9565b60405161041791906126eb565b60405180910390f35b34801561042b575f80fd5b50610434610c20565b60405161044191906125ac565b60405180910390f35b348015610455575f80fd5b5061045e610c26565b60405161046b9190612450565b60405180910390f35b34801561047f575f80fd5b50610488610c63565b60405161049591906125ac565b60405180910390f35b3480156104a9575f80fd5b506104c460048036038101906104bf9190612501565b610c69565b6040516104d19190612559565b60405180910390f35b3480156104e5575f80fd5b506104ee610c86565b005b3480156104fb575f80fd5b5061051660048036038101906105119190612704565b6111a5565b60405161052391906125ac565b60405180910390f35b60606040518060400160405280600981526020017f4b49545459204b41540000000000000000000000000000000000000000000000815250905090565b5f61057c610575611227565b848461122e565b6001905092915050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f6008600a6105e7919061289e565b633b9aca006105f691906128e8565b905090565b5f6106078484846113f1565b6106c484610613611227565b6106bf856040518060600160405280602881526020016133586028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610676611227565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e849092919063ffffffff16565b61122e565b600190509392505050565b6106d7611227565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075a90612973565b60405180910390fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f6008905090565b6107cb611227565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084e90612973565b60405180910390fd5b6008600a610865919061289e565b633b9aca0061087491906128e8565b600f819055506008600a610888919061289e565b633b9aca0061089791906128e8565b6010819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a6108e5919061289e565b633b9aca006108f491906128e8565b60405161090191906125ac565b60405180910390a1565b610913611227565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461099f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099690612973565b60405180910390fd5b8060168190555050565b60105481565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109f0611227565b73ffffffffffffffffffffffffffffffffffffffff1614610a0f575f80fd5b5f610a1930610a47565b90505f811115610a2d57610a2c81611ee6565b5b5f4790505f811115610a4357610a428161216d565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a95611227565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1890612973565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b60115481565b60065f9054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60606040518060400160405280600381526020017f4b41540000000000000000000000000000000000000000000000000000000000815250905090565b60165481565b5f610c7c610c75611227565b84846113f1565b6001905092915050565b610c8e611227565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1190612973565b60405180910390fd5b60148054906101000a900460ff1615610d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5f906129db565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e043060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a610df0919061289e565b633b9aca00610dff91906128e8565b61122e565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e6e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e929190612a0d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f18573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f3c9190612a0d565b6040518363ffffffff1660e01b8152600401610f59929190612a38565b6020604051808303815f875af1158015610f75573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f999190612a0d565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061102030610a47565b5f8061102a610bf9565b426040518863ffffffff1660e01b815260040161104c96959493929190612aa1565b60606040518083038185885af1158015611068573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061108d9190612b14565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161112d929190612b64565b6020604051808303815f875af1158015611149573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061116d9190612b9f565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361129c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129390612c3a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361130a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130190612cc8565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113e491906125ac565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361145f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145690612d56565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c490612de4565b60405180910390fd5b5f811161150f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150690612e72565b60405180910390fd5b5f611518610bf9565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156115865750611556610bf9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bd45760065f9054906101000a900460ff16156117115760135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611649575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611710574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106116cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c490612f00565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156117ba575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561180d575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118e657600f54821115611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e90612f68565b60405180910390fd5b6010548261186485610a47565b61186e9190612f86565b11156118af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a690613003565b60405180910390fd5b600d54600e5410156118ce576118c4836121d6565b156118cd575f80fd5b5b600e5f8154809291906118e090613021565b91905055505b6119226064611914600b54600e541161190157600754611905565b6009545b856121e790919063ffffffff16565b61225e90919063ffffffff16565b905060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156119ac57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a3557600f548211156119f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ed90612f68565b60405180910390fd5b611a326064611a24600c54600e5411611a1157600854611a15565b600a545b856121e790919063ffffffff16565b61225e90919063ffffffff16565b90505b5f611a3f30610a47565b9050601460159054906101000a900460ff16158015611aaa575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611ac25750601460169054906101000a900460ff165b8015611acf575060115481115b8015611ade5750600d54600e54115b8015611b37575060165460155f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f4381526020019081526020015f2054105b15611bd257611b59611b5484611b4f846012546122a7565b6122a7565b611ee6565b5f4790505f811115611b6f57611b6e4761216d565b5b60155f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f4381526020019081526020015f205f815480929190611bcb90613021565b9190505550505b505b5f811115611cd357611c2c8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122bf90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cca91906125ac565b60405180910390a35b611d238260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461231c90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611dc6611d7a828461231c90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122bf90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611e69848661231c90919063ffffffff16565b604051611e7691906125ac565b60405180910390a350505050565b5f838311158290611ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec29190612450565b60405180910390fd5b505f8385611ed99190613068565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f8103156121505760148054906101000a900460ff1615612150575f600267ffffffffffffffff811115611f3857611f3761309b565b5b604051908082528060200260200182016040528015611f665781602001602082028036833780820191505090505b50905030815f81518110611f7d57611f7c6130c8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612021573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120459190612a0d565b81600181518110612059576120586130c8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120bf3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461122e565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016121219594939291906131ac565b5f604051808303815f87803b158015612138575f80fd5b505af115801561214a573d5f803e3d5ffd5b50505050505b5f601460156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156121d2573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f8083036121f7575f9050612258565b5f828461220491906128e8565b90508284826122139190613231565b14612253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224a906132d1565b60405180910390fd5b809150505b92915050565b5f61229f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612365565b905092915050565b5f8183116122b557826122b7565b815b905092915050565b5f8082846122cd9190612f86565b905083811015612312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230990613339565b60405180910390fd5b8091505092915050565b5f61235d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e84565b905092915050565b5f80831182906123ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a29190612450565b60405180910390fd5b505f83856123b99190613231565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156123fd5780820151818401526020810190506123e2565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612422826123c6565b61242c81856123d0565b935061243c8185602086016123e0565b61244581612408565b840191505092915050565b5f6020820190508181035f8301526124688184612418565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61249d82612474565b9050919050565b6124ad81612493565b81146124b7575f80fd5b50565b5f813590506124c8816124a4565b92915050565b5f819050919050565b6124e0816124ce565b81146124ea575f80fd5b50565b5f813590506124fb816124d7565b92915050565b5f806040838503121561251757612516612470565b5b5f612524858286016124ba565b9250506020612535858286016124ed565b9150509250929050565b5f8115159050919050565b6125538161253f565b82525050565b5f60208201905061256c5f83018461254a565b92915050565b5f6020828403121561258757612586612470565b5b5f612594848285016124ba565b91505092915050565b6125a6816124ce565b82525050565b5f6020820190506125bf5f83018461259d565b92915050565b5f805f606084860312156125dc576125db612470565b5b5f6125e9868287016124ba565b93505060206125fa868287016124ba565b925050604061260b868287016124ed565b9150509250925092565b61261e8161253f565b8114612628575f80fd5b50565b5f8135905061263981612615565b92915050565b5f806040838503121561265557612654612470565b5b5f612662858286016124ba565b92505060206126738582860161262b565b9150509250929050565b5f60ff82169050919050565b6126928161267d565b82525050565b5f6020820190506126ab5f830184612689565b92915050565b5f602082840312156126c6576126c5612470565b5b5f6126d3848285016124ed565b91505092915050565b6126e581612493565b82525050565b5f6020820190506126fe5f8301846126dc565b92915050565b5f806040838503121561271a57612719612470565b5b5f612727858286016124ba565b9250506020612738858286016124ba565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156127c4578086048111156127a05761279f612742565b5b60018516156127af5780820291505b80810290506127bd8561276f565b9450612784565b94509492505050565b5f826127dc5760019050612897565b816127e9575f9050612897565b81600181146127ff576002811461280957612838565b6001915050612897565b60ff84111561281b5761281a612742565b5b8360020a91508482111561283257612831612742565b5b50612897565b5060208310610133831016604e8410600b841016171561286d5782820a90508381111561286857612867612742565b5b612897565b61287a848484600161277b565b9250905081840481111561289157612890612742565b5b81810290505b9392505050565b5f6128a8826124ce565b91506128b38361267d565b92506128e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846127cd565b905092915050565b5f6128f2826124ce565b91506128fd836124ce565b925082820261290b816124ce565b9150828204841483151761292257612921612742565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61295d6020836123d0565b915061296882612929565b602082019050919050565b5f6020820190508181035f83015261298a81612951565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6129c56017836123d0565b91506129d082612991565b602082019050919050565b5f6020820190508181035f8301526129f2816129b9565b9050919050565b5f81519050612a07816124a4565b92915050565b5f60208284031215612a2257612a21612470565b5b5f612a2f848285016129f9565b91505092915050565b5f604082019050612a4b5f8301856126dc565b612a5860208301846126dc565b9392505050565b5f819050919050565b5f819050919050565b5f612a8b612a86612a8184612a5f565b612a68565b6124ce565b9050919050565b612a9b81612a71565b82525050565b5f60c082019050612ab45f8301896126dc565b612ac1602083018861259d565b612ace6040830187612a92565b612adb6060830186612a92565b612ae860808301856126dc565b612af560a083018461259d565b979650505050505050565b5f81519050612b0e816124d7565b92915050565b5f805f60608486031215612b2b57612b2a612470565b5b5f612b3886828701612b00565b9350506020612b4986828701612b00565b9250506040612b5a86828701612b00565b9150509250925092565b5f604082019050612b775f8301856126dc565b612b84602083018461259d565b9392505050565b5f81519050612b9981612615565b92915050565b5f60208284031215612bb457612bb3612470565b5b5f612bc184828501612b8b565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612c246024836123d0565b9150612c2f82612bca565b604082019050919050565b5f6020820190508181035f830152612c5181612c18565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612cb26022836123d0565b9150612cbd82612c58565b604082019050919050565b5f6020820190508181035f830152612cdf81612ca6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612d406025836123d0565b9150612d4b82612ce6565b604082019050919050565b5f6020820190508181035f830152612d6d81612d34565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612dce6023836123d0565b9150612dd982612d74565b604082019050919050565b5f6020820190508181035f830152612dfb81612dc2565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612e5c6029836123d0565b9150612e6782612e02565b604082019050919050565b5f6020820190508181035f830152612e8981612e50565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f612eea6024836123d0565b9150612ef582612e90565b604082019050919050565b5f6020820190508181035f830152612f1781612ede565b9050919050565b7f4578636565647320746865205f6d617854782e000000000000000000000000005f82015250565b5f612f526013836123d0565b9150612f5d82612f1e565b602082019050919050565b5f6020820190508181035f830152612f7f81612f46565b9050919050565b5f612f90826124ce565b9150612f9b836124ce565b9250828201905080821115612fb357612fb2612742565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612fed601a836123d0565b9150612ff882612fb9565b602082019050919050565b5f6020820190508181035f83015261301a81612fe1565b9050919050565b5f61302b826124ce565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361305d5761305c612742565b5b600182019050919050565b5f613072826124ce565b915061307d836124ce565b925082820390508181111561309557613094612742565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61312781612493565b82525050565b5f613138838361311e565b60208301905092915050565b5f602082019050919050565b5f61315a826130f5565b61316481856130ff565b935061316f8361310f565b805f5b8381101561319f578151613186888261312d565b975061319183613144565b925050600181019050613172565b5085935050505092915050565b5f60a0820190506131bf5f83018861259d565b6131cc6020830187612a92565b81810360408301526131de8186613150565b90506131ed60608301856126dc565b6131fa608083018461259d565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61323b826124ce565b9150613246836124ce565b92508261325657613255613204565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132bb6021836123d0565b91506132c682613261565b604082019050919050565b5f6020820190508181035f8301526132e8816132af565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613323601b836123d0565b915061332e826132ef565b602082019050919050565b5f6020820190508181035f83015261335081613317565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220666e2bdc8a0418225571758a7677908753c8957cb7f3d37c982c10d5574c2cde64736f6c63430008140033
Deployed Bytecode Sourcemap
3587:8829:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5656:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6489:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10949:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5933:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6658:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10733:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5842:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10535:190;;;;;;;;;;;;;:::i;:::-;;12315:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4656:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11962:345;;;;;;;;;;;;;:::i;:::-;;6036:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2668:148;;;;;;;;;;;;;:::i;:::-;;4599:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4746:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3972:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2454:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4811:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5747:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5142:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6163:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11043:671;;;;;;;;;;;;;:::i;:::-;;6338:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5656:83;5693:13;5726:5;;;;;;;;;;;;;;;;;5719:12;;5656:83;:::o;6489:161::-;6564:4;6581:39;6590:12;:10;:12::i;:::-;6604:7;6613:6;6581:8;:39::i;:::-;6638:4;6631:11;;6489:161;;;;:::o;10949:86::-;10999:4;11020;:7;11025:1;11020:7;;;;;;;;;;;;;;;;;;;;;;;;;11013:14;;10949:86;;;:::o;5933:95::-;5986:7;4413:1;4469:2;:13;;;;:::i;:::-;4456:10;:26;;;;:::i;:::-;6006:14;;5933:95;:::o;6658:313::-;6756:4;6773:36;6783:6;6791:9;6802:6;6773:9;:36::i;:::-;6820:121;6829:6;6837:12;:10;:12::i;:::-;6851:89;6889:6;6851:89;;;;;;;;;;;;;;;;;:11;:19;6863:6;6851:19;;;;;;;;;;;;;;;:33;6871:12;:10;:12::i;:::-;6851:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6820:8;:121::i;:::-;6959:4;6952:11;;6658:313;;;;;:::o;10733:108::-;2591:12;:10;:12::i;:::-;2581:22;;:6;;;;;;;;;;:22;;;2573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10828:5:::1;10812:4;:13;10817:7;10812:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;10733:108:::0;;:::o;5842:83::-;5883:5;4413:1;5901:16;;5842:83;:::o;10535:190::-;2591:12;:10;:12::i;:::-;2581:22;;:6;;;;;;;;;;:22;;;2573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4413:1:::1;4469:2;:13;;;;:::i;:::-;4456:10;:26;;;;:::i;:::-;10587:6;:16;;;;4413:1;4469:2;:13;;;;:::i;:::-;4456:10;:26;;;;:::i;:::-;10614:16;:24;;;;10669:5;10649:19;;:25;;;;;;;;;;;;;;;;;;10690:27;4413:1;4469:2;:13;;;;:::i;:::-;4456:10;:26;;;;:::i;:::-;10690:27;;;;;;:::i;:::-;;;;;;;;10535:190::o:0;12315:98::-;2591:12;:10;:12::i;:::-;2581:22;;:6;;;;;;;;;;:22;;;2573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12398:7:::1;12382:13;:23;;;;12315:98:::0;:::o;4656:58::-;;;;:::o;11962:345::-;12023:10;;;;;;;;;;;12009:24;;:12;:10;:12::i;:::-;:24;;;12001:33;;;;;;12045:20;12066:24;12084:4;12066:9;:24::i;:::-;12045:45;;12117:1;12104:12;:14;12101:73;;;12132:30;12149:12;12132:16;:30::i;:::-;12101:73;12184:18;12203:21;12184:40;;12249:1;12238:10;:12;12235:65;;;12264:24;12277:10;12264:12;:24::i;:::-;12235:65;11990:317;;11962:345::o;6036:119::-;6102:7;6129:9;:18;6139:7;6129:18;;;;;;;;;;;;;;;;6122:25;;6036:119;;;:::o;2668:148::-;2591:12;:10;:12::i;:::-;2581:22;;:6;;;;;;;;;;:22;;;2573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2775:1:::1;2738:40;;2759:6;::::0;::::1;;;;;;;;2738:40;;;;;;;;;;;;2806:1;2789:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2668:148::o:0;4599:50::-;;;;:::o;4746:58::-;;;;:::o;3972:39::-;;;;;;;;;;;;;:::o;2454:79::-;2492:7;2519:6;;;;;;;;;;;2512:13;;2454:79;:::o;4811:51::-;;;;:::o;5747:87::-;5786:13;5819:7;;;;;;;;;;;;;;;;;5812:14;;5747:87;:::o;5142:32::-;;;;:::o;6163:167::-;6241:4;6258:42;6268:12;:10;:12::i;:::-;6282:9;6293:6;6258:9;:42::i;:::-;6318:4;6311:11;;6163:167;;;;:::o;11043:671::-;2591:12;:10;:12::i;:::-;2581:22;;:6;;;;;;;;;;:22;;;2573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11107:11:::1;::::0;::::1;;;;;;;;11106:12;11098:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11193:42;11156:15;;:80;;;;;;;;;;;;;;;;;;11247:58;11264:4;11279:15;;;;;;;;;;;4413:1;4469:2;:13;;;;:::i;:::-;4456:10;:26;;;;:::i;:::-;11247:8;:58::i;:::-;11350:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11332:55;;;11396:4;11403:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11332:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11316:13;;:110;;;;;;;;;;;;;;;;;;11437:15;;;;;;;;;;;:31;;;11476:21;11507:4;11513:24;11531:4;11513:9;:24::i;:::-;11538:1;11540::::0;11542:7:::1;:5;:7::i;:::-;11550:15;11437:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11584:13;;;;;;;;;;;11577:29;;;11615:15;;;;;;;;;;;11633:14;11577:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11673:4;11659:11;;:18;;;;;;;;;;;;;;;;;;11702:4;11688:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;11043:671::o:0;6338:143::-;6419:7;6446:11;:18;6458:5;6446:18;;;;;;;;;;;;;;;:27;6465:7;6446:27;;;;;;;;;;;;;;;;6439:34;;6338:143;;;;:::o;209:98::-;262:7;289:10;282:17;;209:98;:::o;6979:335::-;7089:1;7072:19;;:5;:19;;;7064:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7170:1;7151:21;;:7;:21;;;7143:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7252:6;7222:11;:18;7234:5;7222:18;;;;;;;;;;;;;;;:27;7241:7;7222:27;;;;;;;;;;;;;;;:36;;;;7290:7;7274:32;;7283:5;7274:32;;;7299:6;7274:32;;;;;;:::i;:::-;;;;;;;;6979:335;;;:::o;7322:2512::-;7426:1;7410:18;;:4;:18;;;7402:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7503:1;7489:16;;:2;:16;;;7481:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7573:1;7564:6;:10;7556:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7631:17;7674:7;:5;:7::i;:::-;7666:15;;:4;:15;;;;:32;;;;;7691:7;:5;:7::i;:::-;7685:13;;:2;:13;;;;7666:32;7662:1816;;;7719:19;;;;;;;;;;;7715:345;;;7777:15;;;;;;;;;;;7763:30;;:2;:30;;;;:62;;;;;7811:13;;;;;;;;;;;7797:28;;:2;:28;;;;7763:62;7759:286;;;7898:12;7856:28;:39;7885:9;7856:39;;;;;;;;;;;;;;;;:54;7848:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;8013:12;7971:28;:39;8000:9;7971:39;;;;;;;;;;;;;;;:54;;;;7759:286;7715:345;8088:13;;;;;;;;;;;8080:21;;:4;:21;;;:55;;;;;8119:15;;;;;;;;;;;8105:30;;:2;:30;;;;8080:55;:83;;;;;8141:18;:22;8160:2;8141:22;;;;;;;;;;;;;;;;;;;;;;;;;8139:24;8080:83;8076:417;;;8202:6;;8192;:16;;8184:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;8285:16;;8275:6;8259:13;8269:2;8259:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;8251:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;8364:18;;8354:9;;:28;8351:97;;;8413:14;8424:2;8413:10;:14::i;:::-;8412:15;8404:24;;;;;;8351:97;8466:9;;:11;;;;;;;;;:::i;:::-;;;;;;8076:417;8523:76;8595:3;8523:67;8545:15;;8535:9;;:25;8534:55;;8575:14;;8534:55;;;8562:12;;8534:55;8523:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;8511:88;;8623:13;;;;;;;;;;;8617:19;;:2;:19;;;:43;;;;;8655:4;8640:20;;:4;:20;;;;8617:43;8614:241;;;8699:6;;8689;:16;;8681:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;8760:79;8835:3;8760:70;8782:16;;8772:9;;:26;8771:58;;8814:15;;8771:58;;;8800:13;;8771:58;8760:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;8748:91;;8614:241;8871:28;8902:24;8920:4;8902:9;:24::i;:::-;8871:55;;8946:6;;;;;;;;;;;8945:7;:30;;;;;8962:13;;;;;;;;;;;8956:19;;:2;:19;;;8945:30;:45;;;;;8979:11;;;;;;;;;;;8945:45;:87;;;;;9015:17;;8994:20;:38;8945:87;:119;;;;;9046:18;;9036:9;;:28;8945:119;:171;;;;;9103:13;;9068:7;:18;9076:9;9068:18;;;;;;;;;;;;;;;:32;9087:12;9068:32;;;;;;;;;;;;:48;8945:171;8941:526;;;9137:67;9154:49;9158:6;9165:37;9169:20;9190:11;;9165:3;:37::i;:::-;9154:3;:49::i;:::-;9137:16;:67::i;:::-;9223:26;9252:21;9223:50;;9316:1;9295:18;:22;9292:105;;;9342:35;9355:21;9342:12;:35::i;:::-;9292:105;9417:7;:18;9425:9;9417:18;;;;;;;;;;;;;;;:32;9436:12;9417:32;;;;;;;;;;;;:34;;;;;;;;;:::i;:::-;;;;;;9118:349;8941:526;7700:1778;7662:1816;9503:1;9493:9;:11;9490:161;;;9543:39;9572:9;9543;:24;9561:4;9543:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9518:9;:24;9536:4;9518:24;;;;;;;;;;;;;;;:64;;;;9623:4;9600:39;;9609:4;9600:39;;;9629:9;9600:39;;;;;;:::i;:::-;;;;;;;;9490:161;9677:27;9697:6;9677:9;:15;9687:4;9677:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9661:9;:15;9671:4;9661:15;;;;;;;;;;;;;;;:43;;;;9729:40;9747:21;9758:9;9747:6;:10;;:21;;;;:::i;:::-;9729:9;:13;9739:2;9729:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9715:9;:13;9725:2;9715:13;;;;;;;;;;;;;;;:54;;;;9800:2;9785:41;;9794:4;9785:41;;;9804:21;9815:9;9804:6;:10;;:21;;;;:::i;:::-;9785:41;;;;;;:::i;:::-;;;;;;;;7391:2443;7322:2512;;;:::o;1346:190::-;1432:7;1465:1;1460;:6;;1468:12;1452:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1492:9;1508:1;1504;:5;;;;:::i;:::-;1492:17;;1527:1;1520:8;;;1346:190;;;;;:::o;9950:555::-;5274:4;5265:6;;:13;;;;;;;;;;;;;;;;;;10044:1:::1;10031:11;:14:::0;10028:27;10047:7:::1;10028:27;10069:11;::::0;::::1;;;;;;;;10065:25:::0;10082:7:::1;10065:25;10100:21;10138:1;10124:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10100:40;;10169:4;10151;10156:1;10151:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10195:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10185:4;10190:1;10185:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10228:62;10245:4;10260:15;;;;;;;;;;;10278:11;10228:8;:62::i;:::-;10301:15;;;;;;;;;;;:66;;;10382:11;10408:1;10424:4;10451;10471:15;10301:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10017:488;5289:1;5310:5:::0;5301:6;;:14;;;;;;;;;;;;;;;;;;9950:555;:::o;10849:92::-;10906:10;;;;;;;;;;;:19;;:27;10926:6;10906:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10849:92;:::o;11759:195::-;11818:4;11835:12;11902:7;11890:20;11882:28;;11945:1;11938:4;:8;11931:15;;;11759:195;;;:::o;1544:246::-;1602:7;1631:1;1626;:6;1622:47;;1656:1;1649:8;;;;1622:47;1679:9;1695:1;1691;:5;;;;:::i;:::-;1679:17;;1724:1;1719;1715;:5;;;;:::i;:::-;:10;1707:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1781:1;1774:8;;;1544:246;;;;;:::o;1798:132::-;1856:7;1883:39;1887:1;1890;1883:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1876:46;;1798:132;;;;:::o;9844:98::-;9901:7;9928:1;9926;:3;9925:9;;9933:1;9925:9;;;9931:1;9925:9;9918:16;;9844:98;;;;:::o;1015:179::-;1073:7;1093:9;1109:1;1105;:5;;;;:::i;:::-;1093:17;;1134:1;1129;:6;;1121:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1185:1;1178:8;;;1015:179;;;;:::o;1202:136::-;1260:7;1287:43;1291:1;1294;1287:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1280:50;;1202:136;;;;:::o;1938:189::-;2024:7;2056:1;2052;:5;2059:12;2044:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2083:9;2099:1;2095;:5;;;;:::i;:::-;2083:17;;2118:1;2111:8;;;1938: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:116::-;4828:21;4843:5;4828:21;:::i;:::-;4821:5;4818:32;4808:60;;4864:1;4861;4854:12;4808:60;4758:116;:::o;4880:133::-;4923:5;4961:6;4948:20;4939:29;;4977:30;5001:5;4977:30;:::i;:::-;4880:133;;;;:::o;5019:468::-;5084:6;5092;5141:2;5129:9;5120:7;5116:23;5112:32;5109:119;;;5147:79;;:::i;:::-;5109:119;5267:1;5292:53;5337:7;5328:6;5317:9;5313:22;5292:53;:::i;:::-;5282:63;;5238:117;5394:2;5420:50;5462:7;5453:6;5442:9;5438:22;5420:50;:::i;:::-;5410:60;;5365:115;5019:468;;;;;:::o;5493:86::-;5528:7;5568:4;5561:5;5557:16;5546:27;;5493:86;;;:::o;5585:112::-;5668:22;5684:5;5668:22;:::i;:::-;5663:3;5656:35;5585:112;;:::o;5703:214::-;5792:4;5830:2;5819:9;5815:18;5807:26;;5843:67;5907:1;5896:9;5892:17;5883:6;5843:67;:::i;:::-;5703:214;;;;:::o;5923:329::-;5982:6;6031:2;6019:9;6010:7;6006:23;6002:32;5999:119;;;6037:79;;:::i;:::-;5999:119;6157:1;6182:53;6227:7;6218:6;6207:9;6203:22;6182:53;:::i;:::-;6172:63;;6128:117;5923:329;;;;:::o;6258:118::-;6345:24;6363:5;6345:24;:::i;:::-;6340:3;6333:37;6258:118;;:::o;6382:222::-;6475:4;6513:2;6502:9;6498:18;6490:26;;6526:71;6594:1;6583:9;6579:17;6570:6;6526:71;:::i;:::-;6382:222;;;;:::o;6610:474::-;6678:6;6686;6735:2;6723:9;6714:7;6710:23;6706:32;6703:119;;;6741:79;;:::i;:::-;6703:119;6861:1;6886:53;6931:7;6922:6;6911:9;6907:22;6886:53;:::i;:::-;6876:63;;6832:117;6988:2;7014:53;7059:7;7050:6;7039:9;7035:22;7014:53;:::i;:::-;7004:63;;6959:118;6610:474;;;;;:::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://666e2bdc8a0418225571758a7677908753c8957cb7f3d37c982c10d5574c2cde
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.