ERC-20
Overview
Max Total Supply
100,000,000,000,000 LISHIB
Holders
142
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
LightningShiba
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-06-25 */ /* * https://lightningshib.com/ * https://t.me/LightningShib * https://twitter.com/LightningShib/ * * ****USING FTPAntiBot**** * * Your contract must hold 5Bil $GOLD(ProjektGold) or 5Bil $GREEN(ProjektGreen) in order to make calls on mainnet * */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.4; 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 m_Owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); m_Owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return m_Owner; } function transferOwnership(address _address) public virtual onlyOwner { emit OwnershipTransferred(m_Owner, _address); m_Owner = _address; } modifier onlyOwner() { require(_msgSender() == m_Owner, "Ownable: caller is not the owner"); _; } // You will notice there is no renounceOwnership() This is an unsafe and unnecessary practice } // By renouncing ownership you lose control over your coin and open it up to potential attacks // This practice only came about because of the lack of understanding on how contracts work interface IUniswapV2Factory { // We advise not using a renounceOwnership() function. You can look up hacks of address(0) contracts. function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function factory() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountTokenADesired, uint amountTokenBDesired, uint amountTokenAMin, uint amountTokenBMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } interface FTPAntiBot { // Here we create the interface to interact with AntiBot function scanAddress(address _address, address _safeAddress, address _origin) external returns (bool); function registerBlock(address _recipient, address _sender) external; } interface USDC { // This is the contract for UniswapV2Pair function balanceOf(address account) external view returns (uint256); function approve(address spender, uint value) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); } contract LightningShiba is Context, IERC20, Ownable { using SafeMath for uint256; uint256 private constant TOTAL_SUPPLY = 100000000000000 * 10**9; string private m_Name = "Lightning Shiba"; string private m_Symbol = "LISHIB"; uint8 private m_Decimals = 9; uint256 private m_BanCount = 0; uint256 private m_WalletLimit = 2000000000000 * 10**9; uint256 private m_MinBalance = 100000000000 * 10**9 ; uint8 private m_DevFee = 5; address payable private m_ProjectDevelopmentWallet; address payable private m_DevWallet; address private m_UniswapV2Pair; bool private m_TradingOpened = false; bool private m_IsSwap = false; bool private m_SwapEnabled = false; bool private m_AntiBot = true; bool private m_Intialized = false; mapping (address => bool) private m_Bots; mapping (address => bool) private m_Staked; mapping (address => bool) private m_ExcludedAddresses; mapping (address => uint256) private m_Balances; mapping (address => mapping (address => uint256)) private m_Allowances; FTPAntiBot private AntiBot; IUniswapV2Router02 private m_UniswapV2Router; USDC private m_USDC; event MaxOutTxLimit(uint MaxTransaction); event BanAddress(address Address, address Origin); modifier lockTheSwap { m_IsSwap = true; _; m_IsSwap = false; } modifier onlyDev { require (_msgSender() == 0xC69857409822c90Bd249e55B397f63a79a878A55, "Bzzzt!"); _; } receive() external payable {} constructor () { FTPAntiBot _antiBot = FTPAntiBot(0x590C2B20f7920A2D21eD32A21B616906b4209A43); // AntiBot address for KOVAN TEST NET (its ok to leave this in mainnet push as long as you reassign it with external function) AntiBot = _antiBot; USDC _USDC = USDC(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48); m_USDC = _USDC; m_Balances[address(this)] = TOTAL_SUPPLY.div(10).mul(9); m_Balances[address(0)] = TOTAL_SUPPLY.div(10); m_ExcludedAddresses[owner()] = true; m_ExcludedAddresses[address(this)] = true; emit Transfer(address(0), address(this), TOTAL_SUPPLY); emit Transfer(address(this), address(0), TOTAL_SUPPLY.div(10)); } // #################### // ##### DEFAULTS ##### // #################### function name() public view returns (string memory) { return m_Name; } function symbol() public view returns (string memory) { return m_Symbol; } function decimals() public view returns (uint8) { return m_Decimals; } // ##################### // ##### OVERRIDES ##### // ##################### function totalSupply() public pure override returns (uint256) { return TOTAL_SUPPLY; } function balanceOf(address _account) public view override returns (uint256) { return m_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 m_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(), m_Allowances[_sender][_msgSender()].sub(_amount, "ERC20: transfer amount exceeds allowance")); return true; } // #################### // ##### PRIVATES ##### // #################### function _readyToTax(address _sender) private view returns(bool) { return !m_IsSwap && _sender != m_UniswapV2Pair && m_SwapEnabled && balanceOf(address(this)) > m_MinBalance; } function _pleb(address _sender, address _recipient) private view returns(bool) { return _sender != owner() && _recipient != owner() && m_TradingOpened; } function _senderNotUni(address _sender) private view returns(bool) { return _sender != m_UniswapV2Pair; } function _txRestricted(address _sender, address _recipient) private view returns(bool) { return _sender == m_UniswapV2Pair && _recipient != address(m_UniswapV2Router) && !m_ExcludedAddresses[_recipient]; } function _walletCapped(address _recipient) private view returns(bool) { return _recipient != m_UniswapV2Pair && _recipient != address(m_UniswapV2Router); } 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"); m_Allowances[_owner][_spender] = _amount; emit Approval(_owner, _spender, _amount); } function _transfer(address _sender, address _recipient, uint256 _amount) private { require(_sender != address(0), "ERC20: transfer from the zero address"); require(_recipient != address(0), "ERC20: transfer to the zero address"); require(_amount > 0, "Transfer amount must be greater than zero"); require(m_Intialized, "Make sure all parties agree"); // Local logic for banning based on AntiBot results uint8 _fee = _setFee(_sender, _recipient); uint256 _feeAmount = _amount.div(100).mul(_fee); uint256 _newAmount = _amount.sub(_feeAmount); if(m_AntiBot) // Check if AntiBot is enabled _checkBot(_recipient, _sender, tx.origin); if(_walletCapped(_recipient)) require(balanceOf(_recipient) < m_WalletLimit); // Check balance of recipient and if < max amount, fails if(_senderNotUni(_sender)) require(!m_Bots[_sender], "Beep Beep Boop, You're a piece of poop"); if (_pleb(_sender, _recipient)) { if (_txRestricted(_sender, _recipient)) require(_checkTxLimit(_recipient, _amount)); _tax(_sender); // This contract taxes users X% on every tX and converts it to Eth to send to wherever } m_Balances[_sender] = m_Balances[_sender].sub(_amount); m_Balances[_recipient] = m_Balances[_recipient].add(_newAmount); m_Balances[address(this)] = m_Balances[address(this)].add(_feeAmount); emit Transfer(_sender, _recipient, _newAmount); if(m_AntiBot) // Check if AntiBot is enabled AntiBot.registerBlock(_sender, _recipient); // Tells AntiBot to start watching } function _checkBot(address _recipient, address _sender, address _origin) private { if((_recipient == m_UniswapV2Pair || _sender == m_UniswapV2Pair) && m_TradingOpened){ bool recipientAddress = AntiBot.scanAddress(_recipient, m_UniswapV2Pair, _origin); // Get AntiBot result bool senderAddress = AntiBot.scanAddress(_sender, m_UniswapV2Pair, _origin); // Get AntiBot result if(recipientAddress){ _banSeller(_recipient); _banSeller(_origin); emit BanAddress(_recipient, _origin); } if(senderAddress){ _banSeller(_sender); _banSeller(_origin); // _origin is the wallet controlling the bot, it can never be a contract only a real person emit BanAddress(_sender, _origin); } } } function _banSeller(address _address) private { if(!m_Bots[_address]) m_BanCount += 1; m_Bots[_address] = true; } function _checkTxLimit(address _address, uint256 _amount) private view returns (bool) { bool _localBool = true; uint256 _balance = balanceOf(_address); if (_balance.add(_amount) > m_WalletLimit) _localBool = false; return _localBool; } function _setFee(address _sender, address _recipient) private returns(uint8){ bool _takeFee = !(m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient]); if(!_takeFee) m_DevFee = 0; if(_takeFee) m_DevFee = 5; return m_DevFee; } function _tax(address _sender) private { uint256 _tokenBalance = balanceOf(address(this)); if (_readyToTax(_sender)) { _swapTokensForUSDC(_tokenBalance); } } function _swapTokensForUSDC(uint256 _amount) private lockTheSwap { // If you want to do something like add taxes to Liquidity, change the logic in this block address[] memory _path = new address[](2); // say m_AmountEth = _amount.div(2).add(_amount.div(100)) (Make sure to define m_AmountEth up top) _path[0] = address(this); _path[1] = address(m_USDC); _approve(address(this), address(m_UniswapV2Router), _amount); uint256 _devFee = _amount.div(10); uint256 _projectDevelopmentFee = _amount.sub(_devFee); m_UniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens( _devFee, 0, _path, m_DevWallet, block.timestamp ); m_UniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens( _projectDevelopmentFee, 0, _path, m_ProjectDevelopmentWallet, block.timestamp ); } // call _UniswapV2Router.addLiquidityETH{value: m_AmountEth}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp); // #################### // ##### EXTERNAL ##### // #################### function banCount() external view returns (uint256) { return m_BanCount; } function checkIfBanned(address _address) external view returns (bool) { // Tool for traders to verify ban status bool _banBool = false; if(m_Bots[_address]) _banBool = true; return _banBool; } // ###################### // ##### ONLY OWNER ##### // ###################### function addLiquidity() external onlyOwner() { require(!m_TradingOpened,"trading is already open"); uint256 _usdcBalance = m_USDC.balanceOf(address(this)); IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); m_UniswapV2Router = _uniswapV2Router; m_USDC.approve(address(m_UniswapV2Router), _usdcBalance); _approve(address(this), address(m_UniswapV2Router), TOTAL_SUPPLY); m_UniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), address(m_USDC)); m_UniswapV2Router.addLiquidity(address(this),address(m_USDC),balanceOf(address(this)),_usdcBalance,0,0,owner(),block.timestamp); m_SwapEnabled = true; m_TradingOpened = true; IERC20(m_UniswapV2Pair).approve(address(m_UniswapV2Router), type(uint).max); } function manualBan(address _a) external onlyOwner() { _banSeller(_a); } function removeBan(address _a) external onlyOwner() { m_Bots[_a] = false; m_BanCount -= 1; } function setProjectDevelopmentWallet(address payable _address) external onlyOwner() { // Use this function to assign Dev tax wallet m_ProjectDevelopmentWallet = _address; m_ExcludedAddresses[_address] = true; } function setDevWallet(address payable _address) external onlyDev { m_Intialized = true; m_DevWallet = _address; } function assignAntiBot(address _address) external onlyOwner() { // Highly recommend use of a function that can edit AntiBot contract address to allow for AntiBot version updates FTPAntiBot _antiBot = FTPAntiBot(_address); AntiBot = _antiBot; } function emergencyWithdraw() external onlyOwner() { m_USDC.transferFrom(address(this), _msgSender(), m_USDC.balanceOf(address(this))); } function toggleAntiBot() external onlyOwner() returns (bool){ // Having a way to turn interaction with other contracts on/off is a good design practice bool _localBool; if(m_AntiBot){ m_AntiBot = false; _localBool = false; } else{ m_AntiBot = true; _localBool = true; } return _localBool; } }
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":"address","name":"Address","type":"address"},{"indexed":false,"internalType":"address","name":"Origin","type":"address"}],"name":"BanAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"MaxTransaction","type":"uint256"}],"name":"MaxOutTxLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","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":"_address","type":"address"}],"name":"assignAntiBot","outputs":[],"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":"banCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"checkIfBanned","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"}],"name":"manualBan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"}],"name":"removeBan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"}],"name":"setProjectDevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleAntiBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526040518060400160405280600f81526020017f4c696768746e696e67205368696261000000000000000000000000000000000081525060019080519060200190620000519291906200070e565b506040518060400160405280600681526020017f4c49534849420000000000000000000000000000000000000000000000000000815250600290805190602001906200009f9291906200070e565b506009600360006101000a81548160ff021916908360ff1602179055506000600455686c6b935b8bbd40000060055568056bc75e2d631000006006556005600760006101000a81548160ff021916908360ff1602179055506000600960146101000a81548160ff0219169083151502179055506000600960156101000a81548160ff0219169083151502179055506000600960166101000a81548160ff0219169083151502179055506001600960176101000a81548160ff0219169083151502179055506000600960186101000a81548160ff0219169083151502179055503480156200018b57600080fd5b5060006200019e6200059f60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600073590c2b20f7920a2d21ed32a21b616906b4209a43905080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48905080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200032f60096200031b600a69152d02c7e14af6800000620005a760201b6200182d1790919060201c565b620005f960201b620018771790919060201c565b600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000397600a69152d02c7e14af6800000620005a760201b6200182d1790919060201c565b600d60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600c6000620003f06200067d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69152d02c7e14af68000006040516200050391906200087d565b60405180910390a3600073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef62000580600a69152d02c7e14af6800000620005a760201b6200182d1790919060201c565b6040516200058f91906200087d565b60405180910390a3505062000ab2565b600033905090565b6000620005f183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620006a660201b60201c565b905092915050565b6000808314156200060e576000905062000677565b600082846200061e9190620008ee565b90508284826200062f9190620008b6565b1462000672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000669906200085b565b60405180910390fd5b809150505b92915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008083118290620006f0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006e7919062000837565b60405180910390fd5b5060008385620007019190620008b6565b9050809150509392505050565b8280546200071c906200098f565b90600052602060002090601f0160209004810192826200074057600085556200078c565b82601f106200075b57805160ff19168380011785556200078c565b828001600101855582156200078c579182015b828111156200078b5782518255916020019190600101906200076e565b5b5090506200079b91906200079f565b5090565b5b80821115620007ba576000816000905550600101620007a0565b5090565b6000620007cb826200089a565b620007d78185620008a5565b9350620007e981856020860162000959565b620007f48162000a52565b840191505092915050565b60006200080e602183620008a5565b91506200081b8262000a63565b604082019050919050565b62000831816200094f565b82525050565b60006020820190508181036000830152620008538184620007be565b905092915050565b600060208201905081810360008301526200087681620007ff565b9050919050565b600060208201905062000894600083018462000826565b92915050565b600081519050919050565b600082825260208201905092915050565b6000620008c3826200094f565b9150620008d0836200094f565b925082620008e357620008e2620009f4565b5b828204905092915050565b6000620008fb826200094f565b915062000908836200094f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620009445762000943620009c5565b5b828202905092915050565b6000819050919050565b60005b83811015620009795780820151818401526020810190506200095c565b8381111562000989576000848401525b50505050565b60006002820490506001821680620009a857607f821691505b60208210811415620009bf57620009be62000a23565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b613da78062000ac26000396000f3fe60806040526004361061012e5760003560e01c806370a08231116100ab578063db2e21bc1161006f578063db2e21bc14610411578063dd62ed3e14610428578063e8078d9414610465578063f1c54eb41461047c578063f2fde38b146104a5578063fa2b2009146104ce57610135565b806370a08231146103165780638da5cb5b1461035357806395d89b411461037e578063a9059cbb146103a9578063af74ff5b146103e657610135565b806323b872dd116100f257806323b872dd1461021f578063313ce5671461025c5780633908cfd21461028757806362caa704146102b0578063700542ec146102d957610135565b806306fdde031461013a578063095ea7b31461016557806318160ddd146101a25780631f53ac02146101cd578063228e7a91146101f657610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104f9565b60405161015c91906134a9565b60405180910390f35b34801561017157600080fd5b5061018c60048036038101906101879190612f9c565b61058b565b604051610199919061348e565b60405180910390f35b3480156101ae57600080fd5b506101b76105a9565b6040516101c4919061364b565b60405180910390f35b3480156101d957600080fd5b506101f460048036038101906101ef9190612ee8565b6105bb565b005b34801561020257600080fd5b5061021d60048036038101906102189190612e96565b6106a3565b005b34801561022b57600080fd5b5061024660048036038101906102419190612f4d565b610744565b604051610253919061348e565b60405180910390f35b34801561026857600080fd5b5061027161081d565b60405161027e91906136c0565b60405180910390f35b34801561029357600080fd5b506102ae60048036038101906102a99190612e96565b610834565b005b3480156102bc57600080fd5b506102d760048036038101906102d29190612e96565b61093e565b005b3480156102e557600080fd5b5061030060048036038101906102fb9190612e96565b610a1d565b60405161030d919061348e565b60405180910390f35b34801561032257600080fd5b5061033d60048036038101906103389190612e96565b610a84565b60405161034a919061364b565b60405180910390f35b34801561035f57600080fd5b50610368610acd565b6040516103759190613335565b60405180910390f35b34801561038a57600080fd5b50610393610af6565b6040516103a091906134a9565b60405180910390f35b3480156103b557600080fd5b506103d060048036038101906103cb9190612f9c565b610b88565b6040516103dd919061348e565b60405180910390f35b3480156103f257600080fd5b506103fb610ba6565b604051610408919061348e565b60405180910390f35b34801561041d57600080fd5b50610426610ca0565b005b34801561043457600080fd5b5061044f600480360381019061044a9190612f11565b610e9a565b60405161045c919061364b565b60405180910390f35b34801561047157600080fd5b5061047a610f21565b005b34801561048857600080fd5b506104a3600480360381019061049e9190612ee8565b6115a0565b005b3480156104b157600080fd5b506104cc60048036038101906104c79190612e96565b6116d1565b005b3480156104da57600080fd5b506104e3611823565b6040516104f0919061364b565b60405180910390f35b60606001805461050890613927565b80601f016020809104026020016040519081016040528092919081815260200182805461053490613927565b80156105815780601f1061055657610100808354040283529160200191610581565b820191906000526020600020905b81548152906001019060200180831161056457829003601f168201915b5050505050905090565b600061059f6105986118f2565b84846118fa565b6001905092915050565b600069152d02c7e14af6800000905090565b73c69857409822c90bd249e55b397f63a79a878a5573ffffffffffffffffffffffffffffffffffffffff166105ee6118f2565b73ffffffffffffffffffffffffffffffffffffffff1614610644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063b9061352b565b60405180910390fd5b6001600960186101000a81548160ff02191690831515021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106e26118f2565b73ffffffffffffffffffffffffffffffffffffffff1614610738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072f9061356b565b60405180910390fd5b61074181611ac5565b50565b6000610751848484611b8c565b6108128461075d6118f2565b61080d85604051806060016040528060288152602001613d4a60289139600e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107c36118f2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213f9092919063ffffffff16565b6118fa565b600190509392505050565b6000600360009054906101000a900460ff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108736118f2565b73ffffffffffffffffffffffffffffffffffffffff16146108c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c09061356b565b60405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008282546109349190613811565b9250508190555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661097d6118f2565b73ffffffffffffffffffffffffffffffffffffffff16146109d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ca9061356b565b60405180910390fd5b600081905080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60008060009050600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610a7b57600190505b80915050919050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610b0590613927565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3190613927565b8015610b7e5780601f10610b5357610100808354040283529160200191610b7e565b820191906000526020600020905b815481529060010190602001808311610b6157829003601f168201915b5050505050905090565b6000610b9c610b956118f2565b8484611b8c565b6001905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610be86118f2565b73ffffffffffffffffffffffffffffffffffffffff1614610c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c359061356b565b60405180910390fd5b6000600960179054906101000a900460ff1615610c79576000600960176101000a81548160ff02191690831515021790555060009050610c99565b6001600960176101000a81548160ff021916908315150217905550600190505b8091505090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cdf6118f2565b73ffffffffffffffffffffffffffffffffffffffff1614610d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2c9061356b565b60405180910390fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30610d7c6118f2565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610dd79190613335565b60206040518083038186803b158015610def57600080fd5b505afa158015610e03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e279190613001565b6040518463ffffffff1660e01b8152600401610e45939291906133b0565b602060405180830381600087803b158015610e5f57600080fd5b505af1158015610e73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e979190612fd8565b50565b6000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f606118f2565b73ffffffffffffffffffffffffffffffffffffffff1614610fb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fad9061356b565b60405180910390fd5b600960149054906101000a900460ff1615611006576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffd9061360b565b60405180910390fd5b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110639190613335565b60206040518083038186803b15801561107b57600080fd5b505afa15801561108f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b39190613001565b90506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161118e929190613465565b602060405180830381600087803b1580156111a857600080fd5b505af11580156111bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e09190612fd8565b5061121830601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669152d02c7e14af68000006118fa565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561125e57600080fd5b505afa158015611272573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112969190612ebf565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016112f2929190613350565b602060405180830381600087803b15801561130c57600080fd5b505af1158015611320573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113449190612ebf565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e3370030601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166113ef30610a84565b866000806113fb610acd565b426040518963ffffffff1660e01b815260040161141f9897969594939291906133e7565b606060405180830381600087803b15801561143957600080fd5b505af115801561144d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611471919061302a565b5050506001600960166101000a81548160ff0219169083151502179055506001600960146101000a81548160ff021916908315150217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611549929190613465565b602060405180830381600087803b15801561156357600080fd5b505af1158015611577573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159b9190612fd8565b505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115df6118f2565b73ffffffffffffffffffffffffffffffffffffffff1614611635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162c9061356b565b60405180910390fd5b80600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117106118f2565b73ffffffffffffffffffffffffffffffffffffffff1614611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d9061356b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600454905090565b600061186f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506121a3565b905092915050565b60008083141561188a57600090506118ec565b6000828461189891906137b7565b90508284826118a79190613786565b146118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de9061354b565b60405180910390fd5b809150505b92915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561196a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611961906135eb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d1906134eb565b60405180910390fd5b80600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ab8919061364b565b60405180910390a3505050565b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611b3157600160046000828254611b299190613730565b925050819055505b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf3906135cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c63906134cb565b60405180910390fd5b60008111611caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca6906135ab565b60405180910390fd5b600960189054906101000a900460ff16611cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf59061358b565b60405180910390fd5b6000611d0a8484612206565b90506000611d378260ff16611d2960648661182d90919063ffffffff16565b61187790919063ffffffff16565b90506000611d4e828561230b90919063ffffffff16565b9050600960179054906101000a900460ff1615611d7157611d70858732612355565b5b611d7a85612675565b15611d9657600554611d8b86610a84565b10611d9557600080fd5b5b611d9f8661272a565b15611e3257600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e289061362b565b60405180910390fd5b5b611e3c8686612785565b15611e6e57611e4b868661281d565b15611e6457611e5a8585612928565b611e6357600080fd5b5b611e6d86612968565b5b611ec084600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461230b90919063ffffffff16565b600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f5581600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461299190919063ffffffff16565b600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fea82600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461299190919063ffffffff16565b600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161208a919061364b565b60405180910390a3600960179054906101000a900460ff161561213757600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b25d625987876040518363ffffffff1660e01b8152600401612104929190613350565b600060405180830381600087803b15801561211e57600080fd5b505af1158015612132573d6000803e3d6000fd5b505050505b505050505050565b6000838311158290612187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217e91906134a9565b60405180910390fd5b50600083856121969190613811565b9050809150509392505050565b600080831182906121ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e191906134a9565b60405180910390fd5b50600083856121f99190613786565b9050809150509392505050565b600080600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122aa5750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b159050806122cf576000600760006101000a81548160ff021916908360ff1602179055505b80156122f2576005600760006101000a81548160ff021916908360ff1602179055505b600760009054906101000a900460ff1691505092915050565b600061234d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061213f565b905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806123fe5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80156124165750600960149054906101000a900460ff165b15612670576000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42385600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518463ffffffff1660e01b815260040161249e93929190613379565b602060405180830381600087803b1580156124b857600080fd5b505af11580156124cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f09190612fd8565b90506000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42385600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518463ffffffff1660e01b815260040161257593929190613379565b602060405180830381600087803b15801561258f57600080fd5b505af11580156125a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c79190612fd8565b9050811561261b576125d885611ac5565b6125e183611ac5565b7f9a7289cf5e3a6716dd5e9f62deae04d4bc9df473808bf34bcdbcf224594243928584604051612612929190613350565b60405180910390a15b801561266d5761262a84611ac5565b61263383611ac5565b7f9a7289cf5e3a6716dd5e9f62deae04d4bc9df473808bf34bcdbcf224594243928484604051612664929190613350565b60405180910390a15b50505b505050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156127235750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600061278f610acd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156127fd57506127cd610acd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128155750600960149054906101000a900460ff165b905092915050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156128ca5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129205750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b60008060019050600061293a85610a84565b9050600554612952858361299190919063ffffffff16565b111561295d57600091505b819250505092915050565b600061297330610a84565b905061297e826129ef565b1561298d5761298c81612a90565b5b5050565b60008082846129a09190613730565b9050838110156129e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129dc9061350b565b60405180910390fd5b8091505092915050565b6000600960159054906101000a900460ff16158015612a5c5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a745750600960169054906101000a900460ff165b8015612a895750600654612a8730610a84565b115b9050919050565b6001600960156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612aee577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612b1c5781602001602082028036833780820191505090505b5090503081600081518110612b5a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612bf1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612c5830601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846118fa565b6000612c6e600a8461182d90919063ffffffff16565b90506000612c85828561230b90919063ffffffff16565b9050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d79583600086600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612d0d959493929190613666565b600060405180830381600087803b158015612d2757600080fd5b505af1158015612d3b573d6000803e3d6000fd5b50505050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d79582600086600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612dc5959493929190613666565b600060405180830381600087803b158015612ddf57600080fd5b505af1158015612df3573d6000803e3d6000fd5b505050505050506000600960156101000a81548160ff02191690831515021790555050565b600081359050612e2781613ced565b92915050565b600081519050612e3c81613ced565b92915050565b600081359050612e5181613d04565b92915050565b600081519050612e6681613d1b565b92915050565b600081359050612e7b81613d32565b92915050565b600081519050612e9081613d32565b92915050565b600060208284031215612ea857600080fd5b6000612eb684828501612e18565b91505092915050565b600060208284031215612ed157600080fd5b6000612edf84828501612e2d565b91505092915050565b600060208284031215612efa57600080fd5b6000612f0884828501612e42565b91505092915050565b60008060408385031215612f2457600080fd5b6000612f3285828601612e18565b9250506020612f4385828601612e18565b9150509250929050565b600080600060608486031215612f6257600080fd5b6000612f7086828701612e18565b9350506020612f8186828701612e18565b9250506040612f9286828701612e6c565b9150509250925092565b60008060408385031215612faf57600080fd5b6000612fbd85828601612e18565b9250506020612fce85828601612e6c565b9150509250929050565b600060208284031215612fea57600080fd5b6000612ff884828501612e57565b91505092915050565b60006020828403121561301357600080fd5b600061302184828501612e81565b91505092915050565b60008060006060848603121561303f57600080fd5b600061304d86828701612e81565b935050602061305e86828701612e81565b925050604061306f86828701612e81565b9150509250925092565b600061308583836130a0565b60208301905092915050565b61309a816138ac565b82525050565b6130a981613845565b82525050565b6130b881613845565b82525050565b60006130c9826136eb565b6130d3818561370e565b93506130de836136db565b8060005b8381101561310f5781516130f68882613079565b975061310183613701565b9250506001810190506130e2565b5085935050505092915050565b61312581613869565b82525050565b613134816138be565b82525050565b6000613145826136f6565b61314f818561371f565b935061315f8185602086016138f4565b613168816139e6565b840191505092915050565b600061318060238361371f565b915061318b826139f7565b604082019050919050565b60006131a360228361371f565b91506131ae82613a46565b604082019050919050565b60006131c6601b8361371f565b91506131d182613a95565b602082019050919050565b60006131e960068361371f565b91506131f482613abe565b602082019050919050565b600061320c60218361371f565b915061321782613ae7565b604082019050919050565b600061322f60208361371f565b915061323a82613b36565b602082019050919050565b6000613252601b8361371f565b915061325d82613b5f565b602082019050919050565b600061327560298361371f565b915061328082613b88565b604082019050919050565b600061329860258361371f565b91506132a382613bd7565b604082019050919050565b60006132bb60248361371f565b91506132c682613c26565b604082019050919050565b60006132de60178361371f565b91506132e982613c75565b602082019050919050565b600061330160268361371f565b915061330c82613c9e565b604082019050919050565b61332081613895565b82525050565b61332f8161389f565b82525050565b600060208201905061334a60008301846130af565b92915050565b600060408201905061336560008301856130af565b61337260208301846130af565b9392505050565b600060608201905061338e60008301866130af565b61339b60208301856130af565b6133a860408301846130af565b949350505050565b60006060820190506133c560008301866130af565b6133d260208301856130af565b6133df6040830184613317565b949350505050565b6000610100820190506133fd600083018b6130af565b61340a602083018a6130af565b6134176040830189613317565b6134246060830188613317565b613431608083018761312b565b61343e60a083018661312b565b61344b60c08301856130af565b61345860e0830184613317565b9998505050505050505050565b600060408201905061347a60008301856130af565b6134876020830184613317565b9392505050565b60006020820190506134a3600083018461311c565b92915050565b600060208201905081810360008301526134c3818461313a565b905092915050565b600060208201905081810360008301526134e481613173565b9050919050565b6000602082019050818103600083015261350481613196565b9050919050565b60006020820190508181036000830152613524816131b9565b9050919050565b60006020820190508181036000830152613544816131dc565b9050919050565b60006020820190508181036000830152613564816131ff565b9050919050565b6000602082019050818103600083015261358481613222565b9050919050565b600060208201905081810360008301526135a481613245565b9050919050565b600060208201905081810360008301526135c481613268565b9050919050565b600060208201905081810360008301526135e48161328b565b9050919050565b60006020820190508181036000830152613604816132ae565b9050919050565b60006020820190508181036000830152613624816132d1565b9050919050565b60006020820190508181036000830152613644816132f4565b9050919050565b60006020820190506136606000830184613317565b92915050565b600060a08201905061367b6000830188613317565b613688602083018761312b565b818103604083015261369a81866130be565b90506136a96060830185613091565b6136b66080830184613317565b9695505050505050565b60006020820190506136d56000830184613326565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061373b82613895565b915061374683613895565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561377b5761377a613959565b5b828201905092915050565b600061379182613895565b915061379c83613895565b9250826137ac576137ab613988565b5b828204905092915050565b60006137c282613895565b91506137cd83613895565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561380657613805613959565b5b828202905092915050565b600061381c82613895565b915061382783613895565b92508282101561383a57613839613959565b5b828203905092915050565b600061385082613875565b9050919050565b600061386282613875565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006138b7826138d0565b9050919050565b60006138c982613895565b9050919050565b60006138db826138e2565b9050919050565b60006138ed82613875565b9050919050565b60005b838110156139125780820151818401526020810190506138f7565b83811115613921576000848401525b50505050565b6000600282049050600182168061393f57607f821691505b60208210811415613953576139526139b7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f427a7a7a74210000000000000000000000000000000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d616b65207375726520616c6c20706172746965732061677265650000000000600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f42656570204265657020426f6f702c20596f752772652061207069656365206f60008201527f6620706f6f700000000000000000000000000000000000000000000000000000602082015250565b613cf681613845565b8114613d0157600080fd5b50565b613d0d81613857565b8114613d1857600080fd5b50565b613d2481613869565b8114613d2f57600080fd5b50565b613d3b81613895565b8114613d4657600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208e55df836ead6a6cf11a1295729c616fc47d2e8141d008ad1b3df1468bd4c3dd64736f6c63430008040033
Deployed Bytecode
0x60806040526004361061012e5760003560e01c806370a08231116100ab578063db2e21bc1161006f578063db2e21bc14610411578063dd62ed3e14610428578063e8078d9414610465578063f1c54eb41461047c578063f2fde38b146104a5578063fa2b2009146104ce57610135565b806370a08231146103165780638da5cb5b1461035357806395d89b411461037e578063a9059cbb146103a9578063af74ff5b146103e657610135565b806323b872dd116100f257806323b872dd1461021f578063313ce5671461025c5780633908cfd21461028757806362caa704146102b0578063700542ec146102d957610135565b806306fdde031461013a578063095ea7b31461016557806318160ddd146101a25780631f53ac02146101cd578063228e7a91146101f657610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104f9565b60405161015c91906134a9565b60405180910390f35b34801561017157600080fd5b5061018c60048036038101906101879190612f9c565b61058b565b604051610199919061348e565b60405180910390f35b3480156101ae57600080fd5b506101b76105a9565b6040516101c4919061364b565b60405180910390f35b3480156101d957600080fd5b506101f460048036038101906101ef9190612ee8565b6105bb565b005b34801561020257600080fd5b5061021d60048036038101906102189190612e96565b6106a3565b005b34801561022b57600080fd5b5061024660048036038101906102419190612f4d565b610744565b604051610253919061348e565b60405180910390f35b34801561026857600080fd5b5061027161081d565b60405161027e91906136c0565b60405180910390f35b34801561029357600080fd5b506102ae60048036038101906102a99190612e96565b610834565b005b3480156102bc57600080fd5b506102d760048036038101906102d29190612e96565b61093e565b005b3480156102e557600080fd5b5061030060048036038101906102fb9190612e96565b610a1d565b60405161030d919061348e565b60405180910390f35b34801561032257600080fd5b5061033d60048036038101906103389190612e96565b610a84565b60405161034a919061364b565b60405180910390f35b34801561035f57600080fd5b50610368610acd565b6040516103759190613335565b60405180910390f35b34801561038a57600080fd5b50610393610af6565b6040516103a091906134a9565b60405180910390f35b3480156103b557600080fd5b506103d060048036038101906103cb9190612f9c565b610b88565b6040516103dd919061348e565b60405180910390f35b3480156103f257600080fd5b506103fb610ba6565b604051610408919061348e565b60405180910390f35b34801561041d57600080fd5b50610426610ca0565b005b34801561043457600080fd5b5061044f600480360381019061044a9190612f11565b610e9a565b60405161045c919061364b565b60405180910390f35b34801561047157600080fd5b5061047a610f21565b005b34801561048857600080fd5b506104a3600480360381019061049e9190612ee8565b6115a0565b005b3480156104b157600080fd5b506104cc60048036038101906104c79190612e96565b6116d1565b005b3480156104da57600080fd5b506104e3611823565b6040516104f0919061364b565b60405180910390f35b60606001805461050890613927565b80601f016020809104026020016040519081016040528092919081815260200182805461053490613927565b80156105815780601f1061055657610100808354040283529160200191610581565b820191906000526020600020905b81548152906001019060200180831161056457829003601f168201915b5050505050905090565b600061059f6105986118f2565b84846118fa565b6001905092915050565b600069152d02c7e14af6800000905090565b73c69857409822c90bd249e55b397f63a79a878a5573ffffffffffffffffffffffffffffffffffffffff166105ee6118f2565b73ffffffffffffffffffffffffffffffffffffffff1614610644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063b9061352b565b60405180910390fd5b6001600960186101000a81548160ff02191690831515021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106e26118f2565b73ffffffffffffffffffffffffffffffffffffffff1614610738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072f9061356b565b60405180910390fd5b61074181611ac5565b50565b6000610751848484611b8c565b6108128461075d6118f2565b61080d85604051806060016040528060288152602001613d4a60289139600e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107c36118f2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213f9092919063ffffffff16565b6118fa565b600190509392505050565b6000600360009054906101000a900460ff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108736118f2565b73ffffffffffffffffffffffffffffffffffffffff16146108c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c09061356b565b60405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008282546109349190613811565b9250508190555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661097d6118f2565b73ffffffffffffffffffffffffffffffffffffffff16146109d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ca9061356b565b60405180910390fd5b600081905080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60008060009050600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610a7b57600190505b80915050919050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610b0590613927565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3190613927565b8015610b7e5780601f10610b5357610100808354040283529160200191610b7e565b820191906000526020600020905b815481529060010190602001808311610b6157829003601f168201915b5050505050905090565b6000610b9c610b956118f2565b8484611b8c565b6001905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610be86118f2565b73ffffffffffffffffffffffffffffffffffffffff1614610c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c359061356b565b60405180910390fd5b6000600960179054906101000a900460ff1615610c79576000600960176101000a81548160ff02191690831515021790555060009050610c99565b6001600960176101000a81548160ff021916908315150217905550600190505b8091505090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cdf6118f2565b73ffffffffffffffffffffffffffffffffffffffff1614610d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2c9061356b565b60405180910390fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30610d7c6118f2565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610dd79190613335565b60206040518083038186803b158015610def57600080fd5b505afa158015610e03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e279190613001565b6040518463ffffffff1660e01b8152600401610e45939291906133b0565b602060405180830381600087803b158015610e5f57600080fd5b505af1158015610e73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e979190612fd8565b50565b6000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f606118f2565b73ffffffffffffffffffffffffffffffffffffffff1614610fb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fad9061356b565b60405180910390fd5b600960149054906101000a900460ff1615611006576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffd9061360b565b60405180910390fd5b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110639190613335565b60206040518083038186803b15801561107b57600080fd5b505afa15801561108f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b39190613001565b90506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161118e929190613465565b602060405180830381600087803b1580156111a857600080fd5b505af11580156111bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e09190612fd8565b5061121830601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669152d02c7e14af68000006118fa565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561125e57600080fd5b505afa158015611272573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112969190612ebf565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016112f2929190613350565b602060405180830381600087803b15801561130c57600080fd5b505af1158015611320573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113449190612ebf565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e3370030601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166113ef30610a84565b866000806113fb610acd565b426040518963ffffffff1660e01b815260040161141f9897969594939291906133e7565b606060405180830381600087803b15801561143957600080fd5b505af115801561144d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611471919061302a565b5050506001600960166101000a81548160ff0219169083151502179055506001600960146101000a81548160ff021916908315150217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611549929190613465565b602060405180830381600087803b15801561156357600080fd5b505af1158015611577573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159b9190612fd8565b505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115df6118f2565b73ffffffffffffffffffffffffffffffffffffffff1614611635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162c9061356b565b60405180910390fd5b80600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117106118f2565b73ffffffffffffffffffffffffffffffffffffffff1614611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d9061356b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600454905090565b600061186f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506121a3565b905092915050565b60008083141561188a57600090506118ec565b6000828461189891906137b7565b90508284826118a79190613786565b146118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de9061354b565b60405180910390fd5b809150505b92915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561196a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611961906135eb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d1906134eb565b60405180910390fd5b80600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ab8919061364b565b60405180910390a3505050565b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611b3157600160046000828254611b299190613730565b925050819055505b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf3906135cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c63906134cb565b60405180910390fd5b60008111611caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca6906135ab565b60405180910390fd5b600960189054906101000a900460ff16611cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf59061358b565b60405180910390fd5b6000611d0a8484612206565b90506000611d378260ff16611d2960648661182d90919063ffffffff16565b61187790919063ffffffff16565b90506000611d4e828561230b90919063ffffffff16565b9050600960179054906101000a900460ff1615611d7157611d70858732612355565b5b611d7a85612675565b15611d9657600554611d8b86610a84565b10611d9557600080fd5b5b611d9f8661272a565b15611e3257600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e289061362b565b60405180910390fd5b5b611e3c8686612785565b15611e6e57611e4b868661281d565b15611e6457611e5a8585612928565b611e6357600080fd5b5b611e6d86612968565b5b611ec084600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461230b90919063ffffffff16565b600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f5581600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461299190919063ffffffff16565b600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fea82600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461299190919063ffffffff16565b600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161208a919061364b565b60405180910390a3600960179054906101000a900460ff161561213757600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b25d625987876040518363ffffffff1660e01b8152600401612104929190613350565b600060405180830381600087803b15801561211e57600080fd5b505af1158015612132573d6000803e3d6000fd5b505050505b505050505050565b6000838311158290612187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217e91906134a9565b60405180910390fd5b50600083856121969190613811565b9050809150509392505050565b600080831182906121ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e191906134a9565b60405180910390fd5b50600083856121f99190613786565b9050809150509392505050565b600080600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122aa5750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b159050806122cf576000600760006101000a81548160ff021916908360ff1602179055505b80156122f2576005600760006101000a81548160ff021916908360ff1602179055505b600760009054906101000a900460ff1691505092915050565b600061234d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061213f565b905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806123fe5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80156124165750600960149054906101000a900460ff165b15612670576000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42385600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518463ffffffff1660e01b815260040161249e93929190613379565b602060405180830381600087803b1580156124b857600080fd5b505af11580156124cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f09190612fd8565b90506000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42385600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518463ffffffff1660e01b815260040161257593929190613379565b602060405180830381600087803b15801561258f57600080fd5b505af11580156125a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c79190612fd8565b9050811561261b576125d885611ac5565b6125e183611ac5565b7f9a7289cf5e3a6716dd5e9f62deae04d4bc9df473808bf34bcdbcf224594243928584604051612612929190613350565b60405180910390a15b801561266d5761262a84611ac5565b61263383611ac5565b7f9a7289cf5e3a6716dd5e9f62deae04d4bc9df473808bf34bcdbcf224594243928484604051612664929190613350565b60405180910390a15b50505b505050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156127235750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600061278f610acd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156127fd57506127cd610acd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128155750600960149054906101000a900460ff165b905092915050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156128ca5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129205750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b60008060019050600061293a85610a84565b9050600554612952858361299190919063ffffffff16565b111561295d57600091505b819250505092915050565b600061297330610a84565b905061297e826129ef565b1561298d5761298c81612a90565b5b5050565b60008082846129a09190613730565b9050838110156129e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129dc9061350b565b60405180910390fd5b8091505092915050565b6000600960159054906101000a900460ff16158015612a5c5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a745750600960169054906101000a900460ff165b8015612a895750600654612a8730610a84565b115b9050919050565b6001600960156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612aee577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612b1c5781602001602082028036833780820191505090505b5090503081600081518110612b5a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612bf1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612c5830601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846118fa565b6000612c6e600a8461182d90919063ffffffff16565b90506000612c85828561230b90919063ffffffff16565b9050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d79583600086600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612d0d959493929190613666565b600060405180830381600087803b158015612d2757600080fd5b505af1158015612d3b573d6000803e3d6000fd5b50505050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d79582600086600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612dc5959493929190613666565b600060405180830381600087803b158015612ddf57600080fd5b505af1158015612df3573d6000803e3d6000fd5b505050505050506000600960156101000a81548160ff02191690831515021790555050565b600081359050612e2781613ced565b92915050565b600081519050612e3c81613ced565b92915050565b600081359050612e5181613d04565b92915050565b600081519050612e6681613d1b565b92915050565b600081359050612e7b81613d32565b92915050565b600081519050612e9081613d32565b92915050565b600060208284031215612ea857600080fd5b6000612eb684828501612e18565b91505092915050565b600060208284031215612ed157600080fd5b6000612edf84828501612e2d565b91505092915050565b600060208284031215612efa57600080fd5b6000612f0884828501612e42565b91505092915050565b60008060408385031215612f2457600080fd5b6000612f3285828601612e18565b9250506020612f4385828601612e18565b9150509250929050565b600080600060608486031215612f6257600080fd5b6000612f7086828701612e18565b9350506020612f8186828701612e18565b9250506040612f9286828701612e6c565b9150509250925092565b60008060408385031215612faf57600080fd5b6000612fbd85828601612e18565b9250506020612fce85828601612e6c565b9150509250929050565b600060208284031215612fea57600080fd5b6000612ff884828501612e57565b91505092915050565b60006020828403121561301357600080fd5b600061302184828501612e81565b91505092915050565b60008060006060848603121561303f57600080fd5b600061304d86828701612e81565b935050602061305e86828701612e81565b925050604061306f86828701612e81565b9150509250925092565b600061308583836130a0565b60208301905092915050565b61309a816138ac565b82525050565b6130a981613845565b82525050565b6130b881613845565b82525050565b60006130c9826136eb565b6130d3818561370e565b93506130de836136db565b8060005b8381101561310f5781516130f68882613079565b975061310183613701565b9250506001810190506130e2565b5085935050505092915050565b61312581613869565b82525050565b613134816138be565b82525050565b6000613145826136f6565b61314f818561371f565b935061315f8185602086016138f4565b613168816139e6565b840191505092915050565b600061318060238361371f565b915061318b826139f7565b604082019050919050565b60006131a360228361371f565b91506131ae82613a46565b604082019050919050565b60006131c6601b8361371f565b91506131d182613a95565b602082019050919050565b60006131e960068361371f565b91506131f482613abe565b602082019050919050565b600061320c60218361371f565b915061321782613ae7565b604082019050919050565b600061322f60208361371f565b915061323a82613b36565b602082019050919050565b6000613252601b8361371f565b915061325d82613b5f565b602082019050919050565b600061327560298361371f565b915061328082613b88565b604082019050919050565b600061329860258361371f565b91506132a382613bd7565b604082019050919050565b60006132bb60248361371f565b91506132c682613c26565b604082019050919050565b60006132de60178361371f565b91506132e982613c75565b602082019050919050565b600061330160268361371f565b915061330c82613c9e565b604082019050919050565b61332081613895565b82525050565b61332f8161389f565b82525050565b600060208201905061334a60008301846130af565b92915050565b600060408201905061336560008301856130af565b61337260208301846130af565b9392505050565b600060608201905061338e60008301866130af565b61339b60208301856130af565b6133a860408301846130af565b949350505050565b60006060820190506133c560008301866130af565b6133d260208301856130af565b6133df6040830184613317565b949350505050565b6000610100820190506133fd600083018b6130af565b61340a602083018a6130af565b6134176040830189613317565b6134246060830188613317565b613431608083018761312b565b61343e60a083018661312b565b61344b60c08301856130af565b61345860e0830184613317565b9998505050505050505050565b600060408201905061347a60008301856130af565b6134876020830184613317565b9392505050565b60006020820190506134a3600083018461311c565b92915050565b600060208201905081810360008301526134c3818461313a565b905092915050565b600060208201905081810360008301526134e481613173565b9050919050565b6000602082019050818103600083015261350481613196565b9050919050565b60006020820190508181036000830152613524816131b9565b9050919050565b60006020820190508181036000830152613544816131dc565b9050919050565b60006020820190508181036000830152613564816131ff565b9050919050565b6000602082019050818103600083015261358481613222565b9050919050565b600060208201905081810360008301526135a481613245565b9050919050565b600060208201905081810360008301526135c481613268565b9050919050565b600060208201905081810360008301526135e48161328b565b9050919050565b60006020820190508181036000830152613604816132ae565b9050919050565b60006020820190508181036000830152613624816132d1565b9050919050565b60006020820190508181036000830152613644816132f4565b9050919050565b60006020820190506136606000830184613317565b92915050565b600060a08201905061367b6000830188613317565b613688602083018761312b565b818103604083015261369a81866130be565b90506136a96060830185613091565b6136b66080830184613317565b9695505050505050565b60006020820190506136d56000830184613326565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061373b82613895565b915061374683613895565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561377b5761377a613959565b5b828201905092915050565b600061379182613895565b915061379c83613895565b9250826137ac576137ab613988565b5b828204905092915050565b60006137c282613895565b91506137cd83613895565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561380657613805613959565b5b828202905092915050565b600061381c82613895565b915061382783613895565b92508282101561383a57613839613959565b5b828203905092915050565b600061385082613875565b9050919050565b600061386282613875565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006138b7826138d0565b9050919050565b60006138c982613895565b9050919050565b60006138db826138e2565b9050919050565b60006138ed82613875565b9050919050565b60005b838110156139125780820151818401526020810190506138f7565b83811115613921576000848401525b50505050565b6000600282049050600182168061393f57607f821691505b60208210811415613953576139526139b7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f427a7a7a74210000000000000000000000000000000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d616b65207375726520616c6c20706172746965732061677265650000000000600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f42656570204265657020426f6f702c20596f752772652061207069656365206f60008201527f6620706f6f700000000000000000000000000000000000000000000000000000602082015250565b613cf681613845565b8114613d0157600080fd5b50565b613d0d81613857565b8114613d1857600080fd5b50565b613d2481613869565b8114613d2f57600080fd5b50565b613d3b81613895565b8114613d4657600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208e55df836ead6a6cf11a1295729c616fc47d2e8141d008ad1b3df1468bd4c3dd64736f6c63430008040033
Deployed Bytecode Sourcemap
5236:13553:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7725:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8658:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8085:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17722:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17233:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8831:323;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7913:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17329:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17870:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15987:257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8193:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2611:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7817:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8323:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18355:431;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18193:150;;;;;;;;;;;;;:::i;:::-;;8502:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16335:886;;;;;;;;;;;;;:::i;:::-;;17456:254;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2703:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15887:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7725:84;7762:13;7795:6;7788:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7725:84;:::o;8658:165::-;8735:4;8752:41;8761:12;:10;:12::i;:::-;8775:8;8785:7;8752:8;:41::i;:::-;8811:4;8804:11;;8658:165;;;;:::o;8085:100::-;8138:7;5374:23;8158:19;;8085:100;:::o;17722:136::-;6761:42;6745:58;;:12;:10;:12::i;:::-;:58;;;6736:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;17813:4:::1;17798:12;;:19;;;;;;;;;;;;;;;;;;17842:8;17828:11;;:22;;;;;;;;;;;;;;;;;;17722:136:::0;:::o;17233:84::-;2929:7;;;;;;;;;;2913:23;;:12;:10;:12::i;:::-;:23;;;2905:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17295:14:::1;17306:2;17295:10;:14::i;:::-;17233:84:::0;:::o;8831:323::-;8932:4;8949:39;8959:7;8968:10;8980:7;8949:9;:39::i;:::-;8999:125;9008:7;9017:12;:10;:12::i;:::-;9031:92;9071:7;9031:92;;;;;;;;;;;;;;;;;:12;:21;9044:7;9031:21;;;;;;;;;;;;;;;:35;9053:12;:10;:12::i;:::-;9031:35;;;;;;;;;;;;;;;;:39;;:92;;;;;:::i;:::-;8999:8;:125::i;:::-;9142:4;9135:11;;8831:323;;;;;:::o;7913:84::-;7954:5;7979:10;;;;;;;;;;;7972:17;;7913:84;:::o;17329:115::-;2929:7;;;;;;;;;;2913:23;;:12;:10;:12::i;:::-;:23;;;2905:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17405:5:::1;17392:6;:10;17399:2;17392:10;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;17435:1;17421:10;;:15;;;;;;;:::i;:::-;;;;;;;;17329:115:::0;:::o;17870:311::-;2929:7;;;;;;;;;;2913:23;;:12;:10;:12::i;:::-;:23;;;2905:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18085:19:::1;18118:8;18085:42;;18165:8;18155:7;;:18;;;;;;;;;;;;;;;;;;2984:1;17870:311:::0;:::o;15987:257::-;16051:4;16129:13;16145:5;16129:21;;16164:6;:16;16171:8;16164:16;;;;;;;;;;;;;;;;;;;;;;;;;16161:49;;;16206:4;16195:15;;16161:49;16228:8;16221:15;;;15987:257;;;:::o;8193:122::-;8260:7;8287:10;:20;8298:8;8287:20;;;;;;;;;;;;;;;;8280:27;;8193:122;;;:::o;2611:80::-;2649:7;2676;;;;;;;;;;;2669:14;;2611:80;:::o;7817:88::-;7856:13;7889:8;7882:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7817:88;:::o;8323:171::-;8403:4;8420:44;8430:12;:10;:12::i;:::-;8444:10;8456:7;8420:9;:44::i;:::-;8482:4;8475:11;;8323:171;;;;:::o;18355:431::-;18410:4;2929:7;;;;;;;;;;;2913:23;;:12;:10;:12::i;:::-;:23;;;2905:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18546:15:::1;18575:9;;;;;;;;;;;18572:179;;;18612:5;18600:9;;:17;;;;;;;;;;;;;;;;;;18645:5;18632:18;;18572:179;;;18703:4;18691:9;;:16;;;;;;;;;;;;;;;;;;18735:4;18722:17;;18572:179;18768:10;18761:17;;;18355:431:::0;:::o;18193:150::-;2929:7;;;;;;;;;;2913:23;;:12;:10;:12::i;:::-;:23;;;2905:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18254:6:::1;;;;;;;;;;;:19;;;18282:4;18289:12;:10;:12::i;:::-;18303:6;;;;;;;;;;;:16;;;18328:4;18303:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18254:81;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18193:150::o:0;8502:148::-;8585:7;8612:12;:20;8625:6;8612:20;;;;;;;;;;;;;;;:30;8633:8;8612:30;;;;;;;;;;;;;;;;8605:37;;8502:148;;;;:::o;16335:886::-;2929:7;;;;;;;;;;2913:23;;:12;:10;:12::i;:::-;:23;;;2905:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16400:15:::1;;;;;;;;;;;16399:16;16391:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;16453:20;16476:6;;;;;;;;;;;:16;;;16501:4;16476:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16453:54;;16518:35;16575:42;16518:100;;16649:16;16629:17;;:36;;;;;;;;;;;;;;;;;;16676:6;;;;;;;;;;;:14;;;16699:17;;;;;;;;;;;16719:12;16676:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16743:65;16760:4;16775:17;;;;;;;;;;;5374:23;16743:8;:65::i;:::-;16855:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16837:56;;;16902:4;16917:6;;;;;;;;;;;16837:88;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16819:15;;:106;;;;;;;;;;;;;;;;;;16936:17;;;;;;;;;;;:30;;;16975:4;16989:6;;;;;;;;;;;16997:24;17015:4;16997:9;:24::i;:::-;17022:12;17035:1;17037::::0;17039:7:::1;:5;:7::i;:::-;17047:15;16936:127;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17090:4;17074:13;;:20;;;;;;;;;;;;;;;;;;17123:4;17105:15;;:22;;;;;;;;;;;;;;;;;;17145:15;;;;;;;;;;;17138:31;;;17178:17;;;;;;;;;;;17198:14;17138:75;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2984:1;;16335:886::o:0;17456:254::-;2929:7;;;;;;;;;;2913:23;;:12;:10;:12::i;:::-;:23;;;2905:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17643:8:::1;17614:26;;:37;;;;;;;;;;;;;;;;;;17698:4;17666:19;:29;17686:8;17666:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;17456:254:::0;:::o;2703:162::-;2929:7;;;;;;;;;;2913:23;;:12;:10;:12::i;:::-;:23;;;2905:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2819:8:::1;2789:39;;2810:7;::::0;::::1;;;;;;;;2789:39;;;;;;;;;;;;2849:8;2839:7;::::0;:18:::1;;;;;;;;;;;;;;;;;;2703:162:::0;:::o;15887:88::-;15930:7;15957:10;;15950:17;;15887:88;:::o;1955:132::-;2013:7;2040:39;2044:1;2047;2040:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2033:46;;1955:132;;;;:::o;1701:246::-;1759:7;1788:1;1783;:6;1779:47;;;1813:1;1806:8;;;;1779:47;1836:9;1852:1;1848;:5;;;;:::i;:::-;1836:17;;1881:1;1876;1872;:5;;;;:::i;:::-;:10;1864:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1938:1;1931:8;;;1701:246;;;;;:::o;366:98::-;419:7;446:10;439:17;;366:98;:::o;10143:347::-;10257:1;10239:20;;:6;:20;;;;10231:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10339:1;10319:22;;:8;:22;;;;10311:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10424:7;10391:12;:20;10404:6;10391:20;;;;;;;;;;;;;;;:30;10412:8;10391:30;;;;;;;;;;;;;;;:40;;;;10464:8;10447:35;;10456:6;10447:35;;;10474:7;10447:35;;;;;;:::i;:::-;;;;;;;;10143:347;;;:::o;13517:149::-;13578:6;:16;13585:8;13578:16;;;;;;;;;;;;;;;;;;;;;;;;;13574:50;;13623:1;13609:10;;:15;;;;;;;:::i;:::-;;;;;;;;13574:50;13654:4;13635:6;:16;13642:8;13635:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;13517:149;:::o;10498:2058::-;10617:1;10598:21;;:7;:21;;;;10590:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10702:1;10680:24;;:10;:24;;;;10672:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10773:1;10763:7;:11;10755:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10839:12;;;;;;;;;;;10831:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;10958:10;10971:28;10979:7;10988:10;10971:7;:28::i;:::-;10958:41;;11010:18;11031:26;11052:4;11031:26;;:16;11043:3;11031:7;:11;;:16;;;;:::i;:::-;:20;;:26;;;;:::i;:::-;11010:47;;11068:18;11089:23;11101:10;11089:7;:11;;:23;;;;:::i;:::-;11068:44;;11136:9;;;;;;;;;;;11133:173;;;11265:41;11275:10;11287:7;11296:9;11265;:41::i;:::-;11133:173;11330:25;11344:10;11330:13;:25::i;:::-;11327:89;;;11402:13;;11378:21;11388:10;11378:9;:21::i;:::-;:37;11370:46;;;;;;11327:89;11523:22;11537:7;11523:13;:22::i;:::-;11520:107;;;11569:6;:15;11576:7;11569:15;;;;;;;;;;;;;;;;;;;;;;;;;11568:16;11560:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11520:107;11646:26;11652:7;11661:10;11646:5;:26::i;:::-;11642:344;;;11693:34;11707:7;11716:10;11693:13;:34::i;:::-;11689:101;;;11755:34;11769:10;11781:7;11755:13;:34::i;:::-;11747:43;;;;;;11689:101;11805:13;11810:7;11805:4;:13::i;:::-;11642:344;12028:32;12052:7;12028:10;:19;12039:7;12028:19;;;;;;;;;;;;;;;;:23;;:32;;;;:::i;:::-;12006:10;:19;12017:7;12006:19;;;;;;;;;;;;;;;:54;;;;12096:38;12123:10;12096;:22;12107:10;12096:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;12071:10;:22;12082:10;12071:22;;;;;;;;;;;;;;;:63;;;;12173:41;12203:10;12173;:25;12192:4;12173:25;;;;;;;;;;;;;;;;:29;;:41;;;;:::i;:::-;12145:10;:25;12164:4;12145:25;;;;;;;;;;;;;;;:69;;;;12258:10;12240:41;;12249:7;12240:41;;;12270:10;12240:41;;;;;;:::i;:::-;;;;;;;;12305:9;;;;;;;;;;;12302:174;;;12434:7;;;;;;;;;;;:21;;;12456:7;12465:10;12434:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12302:174;10498:2058;;;;;;:::o;1503:190::-;1589:7;1622:1;1617;:6;;1625:12;1609:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1649:9;1665:1;1661;:5;;;;:::i;:::-;1649:17;;1684:1;1677:8;;;1503:190;;;;;:::o;2095:189::-;2181:7;2213:1;2209;:5;2216:12;2201:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2240:9;2256:1;2252;:5;;;;:::i;:::-;2240:17;;2275:1;2268:8;;;2095:189;;;;;:::o;13973:302::-;14043:5;14060:13;14078:19;:28;14098:7;14078:28;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;14110:19;:31;14130:10;14110:31;;;;;;;;;;;;;;;;;;;;;;;;;14078:63;14076:66;14060:82;;14157:8;14153:39;;14191:1;14180:8;;:12;;;;;;;;;;;;;;;;;;14153:39;14206:8;14203:38;;;14240:1;14229:8;;:12;;;;;;;;;;;;;;;;;;14203:38;14259:8;;;;;;;;;;;14252:15;;;13973:302;;;;:::o;1359:136::-;1417:7;1444:43;1448:1;1451;1444:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1437:50;;1359:136;;;;:::o;12562:943::-;12672:15;;;;;;;;;;;12658:29;;:10;:29;;;:59;;;;12702:15;;;;;;;;;;;12691:26;;:7;:26;;;12658:59;12657:80;;;;;12722:15;;;;;;;;;;;12657:80;12654:844;;;12753:21;12777:7;;;;;;;;;;;:19;;;12797:10;12809:15;;;;;;;;;;;12826:7;12777:57;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12753:81;;12872:18;12893:7;;;;;;;;;;;:19;;;12913:7;12922:15;;;;;;;;;;;12939:7;12893:54;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12872:75;;12994:16;12991:170;;;13030:22;13041:10;13030;:22::i;:::-;13071:19;13082:7;13071:10;:19::i;:::-;13114:31;13125:10;13137:7;13114:31;;;;;;;:::i;:::-;;;;;;;;12991:170;13178:13;13175:312;;;13211:19;13222:7;13211:10;:19::i;:::-;13249;13260:7;13249:10;:19::i;:::-;13443:28;13454:7;13463;13443:28;;;;;;;:::i;:::-;;;;;;;;13175:312;12654:844;;;12562:943;;;:::o;9966:169::-;10030:4;10068:15;;;;;;;;;;;10054:29;;:10;:29;;;;:73;;;;;10109:17;;;;;;;;;;;10087:40;;:10;:40;;;;10054:73;10047:80;;9966:169;;;:::o;9612:119::-;9673:4;9708:15;;;;;;;;;;;9697:26;;:7;:26;;;;9690:33;;9612:119;;;:::o;9437:167::-;9510:4;9545:7;:5;:7::i;:::-;9534:18;;:7;:18;;;;:43;;;;;9570:7;:5;:7::i;:::-;9556:21;;:10;:21;;;;9534:43;:62;;;;;9581:15;;;;;;;;;;;9534:62;9527:69;;9437:167;;;;:::o;9739:219::-;9820:4;9855:15;;;;;;;;;;;9844:26;;:7;:26;;;:70;;;;;9896:17;;;;;;;;;;;9874:40;;:10;:40;;;;9844:70;:106;;;;;9919:19;:31;9939:10;9919:31;;;;;;;;;;;;;;;;;;;;;;;;;9918:32;9844:106;9837:113;;9739:219;;;;:::o;13678:289::-;13758:4;13775:15;13793:4;13775:22;;13808:16;13827:19;13837:8;13827:9;:19::i;:::-;13808:38;;13885:13;;13861:21;13874:7;13861:8;:12;;:21;;;;:::i;:::-;:37;13857:74;;;13926:5;13913:18;;13857:74;13949:10;13942:17;;;;13678:289;;;;:::o;14283:202::-;14333:21;14357:24;14375:4;14357:9;:24::i;:::-;14333:48;;14396:20;14408:7;14396:11;:20::i;:::-;14392:86;;;14433:33;14452:13;14433:18;:33::i;:::-;14392:86;14283:202;;:::o;1172:179::-;1230:7;1250:9;1266:1;1262;:5;;;;:::i;:::-;1250:17;;1291:1;1286;:6;;1278:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1342:1;1335:8;;;1172:179;;;;:::o;9239:190::-;9298:4;9323:8;;;;;;;;;;;9322:9;:39;;;;;9346:15;;;;;;;;;;;9335:26;;:7;:26;;;;9322:39;:56;;;;;9365:13;;;;;;;;;;;9322:56;:99;;;;;9409:12;;9382:24;9400:4;9382:9;:24::i;:::-;:39;9322:99;9315:106;;9239:190;;;:::o;14493:1083::-;6651:4;6640:8;;:15;;;;;;;;;;;;;;;;;;14686:22:::1;14725:1;14711:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14686:41;;14903:4;14884:5;14890:1;14884:8;;;;;;;;;;;;;;;;;;;;;:24;;;;;;;;;::::0;::::1;14938:6;;;;;;;;;;;14919:5;14925:1;14919:8;;;;;;;;;;;;;;;;;;;;;:26;;;;;;;;;::::0;::::1;14956:60;14973:4;14988:17;;;;;;;;;;;15008:7;14956:8;:60::i;:::-;15027:15;15045;15057:2;15045:7;:11;;:15;;;;:::i;:::-;15027:33;;15071:30;15104:20;15116:7;15104;:11;;:20;;;;:::i;:::-;15071:53;;15135:17;;;;;;;;;;;:71;;;15221:7;15243:1;15259:5;15279:11;;;;;;;;;;;15305:15;15135:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15342:17;;;;;;;;;;;:71;;;15428:22;15465:1;15481:5;15501:26;;;;;;;;;;;15542:15;15342:226;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6666:1;;;6689:5:::0;6678:8;;:16;;;;;;;;;;;;;;;;;;14493:1083;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;361:95;;;;:::o;462:137::-;516:5;547:6;541:13;532:22;;563:30;587:5;563:30;:::i;:::-;522:77;;;;:::o;605:139::-;651:5;689:6;676:20;667:29;;705:33;732:5;705:33;:::i;:::-;657:87;;;;:::o;750:143::-;807:5;838:6;832:13;823:22;;854:33;881:5;854:33;:::i;:::-;813:80;;;;:::o;899:262::-;958:6;1007:2;995:9;986:7;982:23;978:32;975:2;;;1023:1;1020;1013:12;975:2;1066:1;1091:53;1136:7;1127:6;1116:9;1112:22;1091:53;:::i;:::-;1081:63;;1037:117;965:196;;;;:::o;1167:284::-;1237:6;1286:2;1274:9;1265:7;1261:23;1257:32;1254:2;;;1302:1;1299;1292:12;1254:2;1345:1;1370:64;1426:7;1417:6;1406:9;1402:22;1370:64;:::i;:::-;1360:74;;1316:128;1244:207;;;;:::o;1457:278::-;1524:6;1573:2;1561:9;1552:7;1548:23;1544:32;1541:2;;;1589:1;1586;1579:12;1541:2;1632:1;1657:61;1710:7;1701:6;1690:9;1686:22;1657:61;:::i;:::-;1647:71;;1603:125;1531:204;;;;:::o;1741:407::-;1809:6;1817;1866:2;1854:9;1845:7;1841:23;1837:32;1834:2;;;1882:1;1879;1872:12;1834:2;1925:1;1950:53;1995:7;1986:6;1975:9;1971:22;1950:53;:::i;:::-;1940:63;;1896:117;2052:2;2078:53;2123:7;2114:6;2103:9;2099:22;2078:53;:::i;:::-;2068:63;;2023:118;1824:324;;;;;:::o;2154:552::-;2231:6;2239;2247;2296:2;2284:9;2275:7;2271:23;2267:32;2264:2;;;2312:1;2309;2302:12;2264:2;2355:1;2380:53;2425:7;2416:6;2405:9;2401:22;2380:53;:::i;:::-;2370:63;;2326:117;2482:2;2508:53;2553:7;2544:6;2533:9;2529:22;2508:53;:::i;:::-;2498:63;;2453:118;2610:2;2636:53;2681:7;2672:6;2661:9;2657:22;2636:53;:::i;:::-;2626:63;;2581:118;2254:452;;;;;:::o;2712:407::-;2780:6;2788;2837:2;2825:9;2816:7;2812:23;2808:32;2805:2;;;2853:1;2850;2843:12;2805:2;2896:1;2921:53;2966:7;2957:6;2946:9;2942:22;2921:53;:::i;:::-;2911:63;;2867:117;3023:2;3049:53;3094:7;3085:6;3074:9;3070:22;3049:53;:::i;:::-;3039:63;;2994:118;2795:324;;;;;:::o;3125:278::-;3192:6;3241:2;3229:9;3220:7;3216:23;3212:32;3209:2;;;3257:1;3254;3247:12;3209:2;3300:1;3325:61;3378:7;3369:6;3358:9;3354:22;3325:61;:::i;:::-;3315:71;;3271:125;3199:204;;;;:::o;3409:284::-;3479:6;3528:2;3516:9;3507:7;3503:23;3499:32;3496:2;;;3544:1;3541;3534:12;3496:2;3587:1;3612:64;3668:7;3659:6;3648:9;3644:22;3612:64;:::i;:::-;3602:74;;3558:128;3486:207;;;;:::o;3699:596::-;3787:6;3795;3803;3852:2;3840:9;3831:7;3827:23;3823:32;3820:2;;;3868:1;3865;3858:12;3820:2;3911:1;3936:64;3992:7;3983:6;3972:9;3968:22;3936:64;:::i;:::-;3926:74;;3882:128;4049:2;4075:64;4131:7;4122:6;4111:9;4107:22;4075:64;:::i;:::-;4065:74;;4020:129;4188:2;4214:64;4270:7;4261:6;4250:9;4246:22;4214:64;:::i;:::-;4204:74;;4159:129;3810:485;;;;;:::o;4301:179::-;4370:10;4391:46;4433:3;4425:6;4391:46;:::i;:::-;4469:4;4464:3;4460:14;4446:28;;4381:99;;;;:::o;4486:147::-;4581:45;4620:5;4581:45;:::i;:::-;4576:3;4569:58;4559:74;;:::o;4639:108::-;4716:24;4734:5;4716:24;:::i;:::-;4711:3;4704:37;4694:53;;:::o;4753:118::-;4840:24;4858:5;4840:24;:::i;:::-;4835:3;4828:37;4818:53;;:::o;4907:732::-;5026:3;5055:54;5103:5;5055:54;:::i;:::-;5125:86;5204:6;5199:3;5125:86;:::i;:::-;5118:93;;5235:56;5285:5;5235:56;:::i;:::-;5314:7;5345:1;5330:284;5355:6;5352:1;5349:13;5330:284;;;5431:6;5425:13;5458:63;5517:3;5502:13;5458:63;:::i;:::-;5451:70;;5544:60;5597:6;5544:60;:::i;:::-;5534:70;;5390:224;5377:1;5374;5370:9;5365:14;;5330:284;;;5334:14;5630:3;5623:10;;5031:608;;;;;;;:::o;5645:109::-;5726:21;5741:5;5726:21;:::i;:::-;5721:3;5714:34;5704:50;;:::o;5760:147::-;5855:45;5894:5;5855:45;:::i;:::-;5850:3;5843:58;5833:74;;:::o;5913:364::-;6001:3;6029:39;6062:5;6029:39;:::i;:::-;6084:71;6148:6;6143:3;6084:71;:::i;:::-;6077:78;;6164:52;6209:6;6204:3;6197:4;6190:5;6186:16;6164:52;:::i;:::-;6241:29;6263:6;6241:29;:::i;:::-;6236:3;6232:39;6225:46;;6005:272;;;;;:::o;6283:366::-;6425:3;6446:67;6510:2;6505:3;6446:67;:::i;:::-;6439:74;;6522:93;6611:3;6522:93;:::i;:::-;6640:2;6635:3;6631:12;6624:19;;6429:220;;;:::o;6655:366::-;6797:3;6818:67;6882:2;6877:3;6818:67;:::i;:::-;6811:74;;6894:93;6983:3;6894:93;:::i;:::-;7012:2;7007:3;7003:12;6996:19;;6801:220;;;:::o;7027:366::-;7169:3;7190:67;7254:2;7249:3;7190:67;:::i;:::-;7183:74;;7266:93;7355:3;7266:93;:::i;:::-;7384:2;7379:3;7375:12;7368:19;;7173:220;;;:::o;7399:365::-;7541:3;7562:66;7626:1;7621:3;7562:66;:::i;:::-;7555:73;;7637:93;7726:3;7637:93;:::i;:::-;7755:2;7750:3;7746:12;7739:19;;7545:219;;;:::o;7770:366::-;7912:3;7933:67;7997:2;7992:3;7933:67;:::i;:::-;7926:74;;8009:93;8098:3;8009:93;:::i;:::-;8127:2;8122:3;8118:12;8111:19;;7916:220;;;:::o;8142:366::-;8284:3;8305:67;8369:2;8364:3;8305:67;:::i;:::-;8298:74;;8381:93;8470:3;8381:93;:::i;:::-;8499:2;8494:3;8490:12;8483:19;;8288:220;;;:::o;8514:366::-;8656:3;8677:67;8741:2;8736:3;8677:67;:::i;:::-;8670:74;;8753:93;8842:3;8753:93;:::i;:::-;8871:2;8866:3;8862:12;8855:19;;8660:220;;;:::o;8886:366::-;9028:3;9049:67;9113:2;9108:3;9049:67;:::i;:::-;9042:74;;9125:93;9214:3;9125:93;:::i;:::-;9243:2;9238:3;9234:12;9227:19;;9032:220;;;:::o;9258:366::-;9400:3;9421:67;9485:2;9480:3;9421:67;:::i;:::-;9414:74;;9497:93;9586:3;9497:93;:::i;:::-;9615:2;9610:3;9606:12;9599:19;;9404:220;;;:::o;9630:366::-;9772:3;9793:67;9857:2;9852:3;9793:67;:::i;:::-;9786:74;;9869:93;9958:3;9869:93;:::i;:::-;9987:2;9982:3;9978:12;9971:19;;9776:220;;;:::o;10002:366::-;10144:3;10165:67;10229:2;10224:3;10165:67;:::i;:::-;10158:74;;10241:93;10330:3;10241:93;:::i;:::-;10359:2;10354:3;10350:12;10343:19;;10148:220;;;:::o;10374:366::-;10516:3;10537:67;10601:2;10596:3;10537:67;:::i;:::-;10530:74;;10613:93;10702:3;10613:93;:::i;:::-;10731:2;10726:3;10722:12;10715:19;;10520:220;;;:::o;10746:118::-;10833:24;10851:5;10833:24;:::i;:::-;10828:3;10821:37;10811:53;;:::o;10870:112::-;10953:22;10969:5;10953:22;:::i;:::-;10948:3;10941:35;10931:51;;:::o;10988:222::-;11081:4;11119:2;11108:9;11104:18;11096:26;;11132:71;11200:1;11189:9;11185:17;11176:6;11132:71;:::i;:::-;11086:124;;;;:::o;11216:332::-;11337:4;11375:2;11364:9;11360:18;11352:26;;11388:71;11456:1;11445:9;11441:17;11432:6;11388:71;:::i;:::-;11469:72;11537:2;11526:9;11522:18;11513:6;11469:72;:::i;:::-;11342:206;;;;;:::o;11554:442::-;11703:4;11741:2;11730:9;11726:18;11718:26;;11754:71;11822:1;11811:9;11807:17;11798:6;11754:71;:::i;:::-;11835:72;11903:2;11892:9;11888:18;11879:6;11835:72;:::i;:::-;11917;11985:2;11974:9;11970:18;11961:6;11917:72;:::i;:::-;11708:288;;;;;;:::o;12002:442::-;12151:4;12189:2;12178:9;12174:18;12166:26;;12202:71;12270:1;12259:9;12255:17;12246:6;12202:71;:::i;:::-;12283:72;12351:2;12340:9;12336:18;12327:6;12283:72;:::i;:::-;12365;12433:2;12422:9;12418:18;12409:6;12365:72;:::i;:::-;12156:288;;;;;;:::o;12450:1029::-;12755:4;12793:3;12782:9;12778:19;12770:27;;12807:71;12875:1;12864:9;12860:17;12851:6;12807:71;:::i;:::-;12888:72;12956:2;12945:9;12941:18;12932:6;12888:72;:::i;:::-;12970;13038:2;13027:9;13023:18;13014:6;12970:72;:::i;:::-;13052;13120:2;13109:9;13105:18;13096:6;13052:72;:::i;:::-;13134:81;13210:3;13199:9;13195:19;13186:6;13134:81;:::i;:::-;13225;13301:3;13290:9;13286:19;13277:6;13225:81;:::i;:::-;13316:73;13384:3;13373:9;13369:19;13360:6;13316:73;:::i;:::-;13399;13467:3;13456:9;13452:19;13443:6;13399:73;:::i;:::-;12760:719;;;;;;;;;;;:::o;13485:332::-;13606:4;13644:2;13633:9;13629:18;13621:26;;13657:71;13725:1;13714:9;13710:17;13701:6;13657:71;:::i;:::-;13738:72;13806:2;13795:9;13791:18;13782:6;13738:72;:::i;:::-;13611:206;;;;;:::o;13823:210::-;13910:4;13948:2;13937:9;13933:18;13925:26;;13961:65;14023:1;14012:9;14008:17;13999:6;13961:65;:::i;:::-;13915:118;;;;:::o;14039:313::-;14152:4;14190:2;14179:9;14175:18;14167:26;;14239:9;14233:4;14229:20;14225:1;14214:9;14210:17;14203:47;14267:78;14340:4;14331:6;14267:78;:::i;:::-;14259:86;;14157:195;;;;:::o;14358:419::-;14524:4;14562:2;14551:9;14547:18;14539:26;;14611:9;14605:4;14601:20;14597:1;14586:9;14582:17;14575:47;14639:131;14765:4;14639:131;:::i;:::-;14631:139;;14529:248;;;:::o;14783:419::-;14949:4;14987:2;14976:9;14972:18;14964:26;;15036:9;15030:4;15026:20;15022:1;15011:9;15007:17;15000:47;15064:131;15190:4;15064:131;:::i;:::-;15056:139;;14954:248;;;:::o;15208:419::-;15374:4;15412:2;15401:9;15397:18;15389:26;;15461:9;15455:4;15451:20;15447:1;15436:9;15432:17;15425:47;15489:131;15615:4;15489:131;:::i;:::-;15481:139;;15379:248;;;:::o;15633:419::-;15799:4;15837:2;15826:9;15822:18;15814:26;;15886:9;15880:4;15876:20;15872:1;15861:9;15857:17;15850:47;15914:131;16040:4;15914:131;:::i;:::-;15906:139;;15804:248;;;:::o;16058:419::-;16224:4;16262:2;16251:9;16247:18;16239:26;;16311:9;16305:4;16301:20;16297:1;16286:9;16282:17;16275:47;16339:131;16465:4;16339:131;:::i;:::-;16331:139;;16229:248;;;:::o;16483:419::-;16649:4;16687:2;16676:9;16672:18;16664:26;;16736:9;16730:4;16726:20;16722:1;16711:9;16707:17;16700:47;16764:131;16890:4;16764:131;:::i;:::-;16756:139;;16654:248;;;:::o;16908:419::-;17074:4;17112:2;17101:9;17097:18;17089:26;;17161:9;17155:4;17151:20;17147:1;17136:9;17132:17;17125:47;17189:131;17315:4;17189:131;:::i;:::-;17181:139;;17079:248;;;:::o;17333:419::-;17499:4;17537:2;17526:9;17522:18;17514:26;;17586:9;17580:4;17576:20;17572:1;17561:9;17557:17;17550:47;17614:131;17740:4;17614:131;:::i;:::-;17606:139;;17504:248;;;:::o;17758:419::-;17924:4;17962:2;17951:9;17947:18;17939:26;;18011:9;18005:4;18001:20;17997:1;17986:9;17982:17;17975:47;18039:131;18165:4;18039:131;:::i;:::-;18031:139;;17929:248;;;:::o;18183:419::-;18349:4;18387:2;18376:9;18372:18;18364:26;;18436:9;18430:4;18426:20;18422:1;18411:9;18407:17;18400:47;18464:131;18590:4;18464:131;:::i;:::-;18456:139;;18354:248;;;:::o;18608:419::-;18774:4;18812:2;18801:9;18797:18;18789:26;;18861:9;18855:4;18851:20;18847:1;18836:9;18832:17;18825:47;18889:131;19015:4;18889:131;:::i;:::-;18881:139;;18779:248;;;:::o;19033:419::-;19199:4;19237:2;19226:9;19222:18;19214:26;;19286:9;19280:4;19276:20;19272:1;19261:9;19257:17;19250:47;19314:131;19440:4;19314:131;:::i;:::-;19306:139;;19204:248;;;:::o;19458:222::-;19551:4;19589:2;19578:9;19574:18;19566:26;;19602:71;19670:1;19659:9;19655:17;19646:6;19602:71;:::i;:::-;19556:124;;;;:::o;19686:847::-;19957:4;19995:3;19984:9;19980:19;19972:27;;20009:71;20077:1;20066:9;20062:17;20053:6;20009:71;:::i;:::-;20090:80;20166:2;20155:9;20151:18;20142:6;20090:80;:::i;:::-;20217:9;20211:4;20207:20;20202:2;20191:9;20187:18;20180:48;20245:108;20348:4;20339:6;20245:108;:::i;:::-;20237:116;;20363:80;20439:2;20428:9;20424:18;20415:6;20363:80;:::i;:::-;20453:73;20521:3;20510:9;20506:19;20497:6;20453:73;:::i;:::-;19962:571;;;;;;;;:::o;20539:214::-;20628:4;20666:2;20655:9;20651:18;20643:26;;20679:67;20743:1;20732:9;20728:17;20719:6;20679:67;:::i;:::-;20633:120;;;;:::o;20759:132::-;20826:4;20849:3;20841:11;;20879:4;20874:3;20870:14;20862:22;;20831:60;;;:::o;20897:114::-;20964:6;20998:5;20992:12;20982:22;;20971:40;;;:::o;21017:99::-;21069:6;21103:5;21097:12;21087:22;;21076:40;;;:::o;21122:113::-;21192:4;21224;21219:3;21215:14;21207:22;;21197:38;;;:::o;21241:184::-;21340:11;21374:6;21369:3;21362:19;21414:4;21409:3;21405:14;21390:29;;21352:73;;;;:::o;21431:169::-;21515:11;21549:6;21544:3;21537:19;21589:4;21584:3;21580:14;21565:29;;21527:73;;;;:::o;21606:305::-;21646:3;21665:20;21683:1;21665:20;:::i;:::-;21660:25;;21699:20;21717:1;21699:20;:::i;:::-;21694:25;;21853:1;21785:66;21781:74;21778:1;21775:81;21772:2;;;21859:18;;:::i;:::-;21772:2;21903:1;21900;21896:9;21889:16;;21650:261;;;;:::o;21917:185::-;21957:1;21974:20;21992:1;21974:20;:::i;:::-;21969:25;;22008:20;22026:1;22008:20;:::i;:::-;22003:25;;22047:1;22037:2;;22052:18;;:::i;:::-;22037:2;22094:1;22091;22087:9;22082:14;;21959:143;;;;:::o;22108:348::-;22148:7;22171:20;22189:1;22171:20;:::i;:::-;22166:25;;22205:20;22223:1;22205:20;:::i;:::-;22200:25;;22393:1;22325:66;22321:74;22318:1;22315:81;22310:1;22303:9;22296:17;22292:105;22289:2;;;22400:18;;:::i;:::-;22289:2;22448:1;22445;22441:9;22430:20;;22156:300;;;;:::o;22462:191::-;22502:4;22522:20;22540:1;22522:20;:::i;:::-;22517:25;;22556:20;22574:1;22556:20;:::i;:::-;22551:25;;22595:1;22592;22589:8;22586:2;;;22600:18;;:::i;:::-;22586:2;22645:1;22642;22638:9;22630:17;;22507:146;;;;:::o;22659:96::-;22696:7;22725:24;22743:5;22725:24;:::i;:::-;22714:35;;22704:51;;;:::o;22761:104::-;22806:7;22835:24;22853:5;22835:24;:::i;:::-;22824:35;;22814:51;;;:::o;22871:90::-;22905:7;22948:5;22941:13;22934:21;22923:32;;22913:48;;;:::o;22967:126::-;23004:7;23044:42;23037:5;23033:54;23022:65;;23012:81;;;:::o;23099:77::-;23136:7;23165:5;23154:16;;23144:32;;;:::o;23182:86::-;23217:7;23257:4;23250:5;23246:16;23235:27;;23225:43;;;:::o;23274:134::-;23332:9;23365:37;23396:5;23365:37;:::i;:::-;23352:50;;23342:66;;;:::o;23414:121::-;23472:9;23505:24;23523:5;23505:24;:::i;:::-;23492:37;;23482:53;;;:::o;23541:126::-;23591:9;23624:37;23655:5;23624:37;:::i;:::-;23611:50;;23601:66;;;:::o;23673:113::-;23723:9;23756:24;23774:5;23756:24;:::i;:::-;23743:37;;23733:53;;;:::o;23792:307::-;23860:1;23870:113;23884:6;23881:1;23878:13;23870:113;;;23969:1;23964:3;23960:11;23954:18;23950:1;23945:3;23941:11;23934:39;23906:2;23903:1;23899:10;23894:15;;23870:113;;;24001:6;23998:1;23995:13;23992:2;;;24081:1;24072:6;24067:3;24063:16;24056:27;23992:2;23841:258;;;;:::o;24105:320::-;24149:6;24186:1;24180:4;24176:12;24166:22;;24233:1;24227:4;24223:12;24254:18;24244:2;;24310:4;24302:6;24298:17;24288:27;;24244:2;24372;24364:6;24361:14;24341:18;24338:38;24335:2;;;24391:18;;:::i;:::-;24335:2;24156:269;;;;:::o;24431:180::-;24479:77;24476:1;24469:88;24576:4;24573:1;24566:15;24600:4;24597:1;24590:15;24617:180;24665:77;24662:1;24655:88;24762:4;24759:1;24752:15;24786:4;24783:1;24776:15;24803:180;24851:77;24848:1;24841:88;24948:4;24945:1;24938:15;24972:4;24969:1;24962:15;24989:102;25030:6;25081:2;25077:7;25072:2;25065:5;25061:14;25057:28;25047:38;;25037:54;;;:::o;25097:222::-;25237:34;25233:1;25225:6;25221:14;25214:58;25306:5;25301:2;25293:6;25289:15;25282:30;25203:116;:::o;25325:221::-;25465:34;25461:1;25453:6;25449:14;25442:58;25534:4;25529:2;25521:6;25517:15;25510:29;25431:115;:::o;25552:177::-;25692:29;25688:1;25680:6;25676:14;25669:53;25658:71;:::o;25735:156::-;25875:8;25871:1;25863:6;25859:14;25852:32;25841:50;:::o;25897:220::-;26037:34;26033:1;26025:6;26021:14;26014:58;26106:3;26101:2;26093:6;26089:15;26082:28;26003:114;:::o;26123:182::-;26263:34;26259:1;26251:6;26247:14;26240:58;26229:76;:::o;26311:177::-;26451:29;26447:1;26439:6;26435:14;26428:53;26417:71;:::o;26494:228::-;26634:34;26630:1;26622:6;26618:14;26611:58;26703:11;26698:2;26690:6;26686:15;26679:36;26600:122;:::o;26728:224::-;26868:34;26864:1;26856:6;26852:14;26845:58;26937:7;26932:2;26924:6;26920:15;26913:32;26834:118;:::o;26958:223::-;27098:34;27094:1;27086:6;27082:14;27075:58;27167:6;27162:2;27154:6;27150:15;27143:31;27064:117;:::o;27187:173::-;27327:25;27323:1;27315:6;27311:14;27304:49;27293:67;:::o;27366:225::-;27506:34;27502:1;27494:6;27490:14;27483:58;27575:8;27570:2;27562:6;27558:15;27551:33;27472:119;:::o;27597:122::-;27670:24;27688:5;27670:24;:::i;:::-;27663:5;27660:35;27650:2;;27709:1;27706;27699:12;27650:2;27640:79;:::o;27725:138::-;27806:32;27832:5;27806:32;:::i;:::-;27799:5;27796:43;27786:2;;27853:1;27850;27843:12;27786:2;27776:87;:::o;27869:116::-;27939:21;27954:5;27939:21;:::i;:::-;27932:5;27929:32;27919:2;;27975:1;27972;27965:12;27919:2;27909:76;:::o;27991:122::-;28064:24;28082:5;28064:24;:::i;:::-;28057:5;28054:35;28044:2;;28103:1;28100;28093:12;28044:2;28034:79;:::o
Swarm Source
ipfs://8e55df836ead6a6cf11a1295729c616fc47d2e8141d008ad1b3df1468bd4c3dd
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.