Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
MEME
Overview
Max Total Supply
690,420,000,000,000 FROGE
Holders
4,692 ( -0.064%)
Market
Price
$0.00 @ 0.000000 ETH
Onchain Market Cap
$20,706,941.14
Circulating Supply Market Cap
$0.00
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
FrogeToken
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-05-03 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.7; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, 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 from, address to, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, _allowances[owner][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = _allowances[owner][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } interface IUniswapV2Router02 is IUniswapV2Router01 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } } /* * Froge ERC20 contract starts here */ contract FrogeToken is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 private _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address private _uniswapV2Pair; uint256 public maxHoldings; uint256 public feeTokenThreshold; bool public feesDisabled; bool private _inSwap; uint256 private _swapFee = 3; uint256 private _tokensForFee; address private _feeAddr; mapping (address => bool) private _excludedLimits; // much like onlyOwner() but used for the feeAddr so that once renounced fees and maxholdings can still be disabled modifier onlyFeeAddr() { require(_feeAddr == _msgSender(), "Caller is not the _feeAddr address."); _; } constructor(address feeAddr) ERC20("Froge", "FROGE") payable { uint256 totalSupply = 690420000000000000000000000000000; uint256 totalLiquidity = totalSupply * 90 / 100; // 90% maxHoldings = totalSupply * 2 / 100; // 2% feeTokenThreshold = totalSupply * 1 / 1000; // .1% _feeAddr = feeAddr; // exclution from fees and limits _excludedLimits[owner()] = true; _excludedLimits[address(this)] = true; _excludedLimits[address(0xdead)] = true; // mint lp tokens to the contract and remaning to deployer _mint(address(this), totalLiquidity); _mint(msg.sender, totalSupply.sub(totalLiquidity)); } function createV2LP() external onlyOwner { // create pair _uniswapV2Pair = IUniswapV2Factory( _uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH() ); // add lp to pair _addLiquidity( balanceOf(address(this)), address(this).balance ); } // updates the amount of tokens that needs to be reached before fee is swapped function updateFeeTokenThreshold(uint256 newThreshold) external onlyFeeAddr { require(newThreshold >= totalSupply() * 1 / 100000, "Swap threshold cannot be lower than 0.001% total supply."); require(newThreshold <= totalSupply() * 5 / 1000, "Swap threshold cannot be higher than 0.5% total supply."); feeTokenThreshold = newThreshold; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "Transfer from the zero address not allowed."); require(to != address(0), "Transfer to the zero address not allowed."); // no reason to waste gas bool isBuy = from == _uniswapV2Pair; bool exluded = _excludedLimits[from] || _excludedLimits[to]; if (amount == 0) { super._transfer(from, to, 0); return; } // if pair has not yet been created if (_uniswapV2Pair == address(0)) { require(exluded, "Please wait for the LP pair to be created."); return; } // max holding check if (maxHoldings > 0 && isBuy && to != owner() && to != address(this)) require(super.balanceOf(to) + amount <= maxHoldings, "Balance exceeds max holdings amount, consider using a second wallet."); // take fees if they haven't been perm disabled if (!feesDisabled) { uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= feeTokenThreshold; if ( canSwap && !_inSwap && !isBuy && !_excludedLimits[from] && !_excludedLimits[to] ) { _inSwap = true; swapFee(); _inSwap = false; } // check if we should be taking the fee bool takeFee = !_inSwap; if (exluded || !isBuy && to != _uniswapV2Pair) takeFee = false; if (takeFee) { uint256 fees = amount.mul(_swapFee).div(100); _tokensForFee = amount.mul(_swapFee).div(100); if (fees > 0) super._transfer(from, address(this), fees); amount -= fees; } } super._transfer(from, to, amount); } // swaps tokens to eth function _swapTokensForEth(uint256 tokenAmount) internal { address[] memory path = new address[](2); path[0] = address(this); path[1] = _uniswapV2Router.WETH(); _approve(address(this), address(_uniswapV2Router), tokenAmount); _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } // does what it says function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal { _approve(address(this), address(_uniswapV2Router), tokenAmount); _uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, _feeAddr, block.timestamp ); } // swaps fee from tokens to eth function swapFee() internal { uint256 contractBal = balanceOf(address(this)); uint256 tokensForLiq = _tokensForFee.div(3); // 1% fee is lp uint256 tokensForFee = _tokensForFee.sub(tokensForLiq); // remaning 2% is marketing/cex/development if (contractBal == 0 || _tokensForFee == 0) return; if (contractBal > feeTokenThreshold) contractBal = feeTokenThreshold; // Halve the amount of liquidity tokens uint256 liqTokens = contractBal * tokensForLiq / _tokensForFee / 2; uint256 amountToSwapForETH = contractBal.sub(liqTokens); uint256 initETHBal = address(this).balance; _swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initETHBal); uint256 ethFee = ethBalance.mul(tokensForFee).div(_tokensForFee); uint256 ethLiq = ethBalance - ethFee; _tokensForFee = 0; payable(_feeAddr).transfer(ethFee); if (liqTokens > 0 && ethLiq > 0) _addLiquidity(liqTokens, ethLiq); } // perm disable fees function disableFees() external onlyFeeAddr { feesDisabled = true; } // perm disable max holdings function disableHoldingLimit() external onlyFeeAddr { maxHoldings = 0; } // transfers any stuck eth from contract to feeAddr function transferStuckETH() external { payable(_feeAddr).transfer(address(this).balance); } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"feeAddr","type":"address"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createV2LP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableHoldingLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeTokenThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feesDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateFeeTokenThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600b5560405162003e0b38038062003e0b833981810160405281019062000083919062000647565b6040518060400160405280600581526020017f46726f67650000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f46524f47450000000000000000000000000000000000000000000000000000008152508160039081620001009190620008f3565b508060049081620001129190620008f3565b50505062000135620001296200034b60201b60201c565b6200035360201b60201c565b60006d220a535684d4193ba54d20000000905060006064605a836200015b919062000a09565b62000167919062000a83565b905060646002836200017a919062000a09565b62000186919062000a83565b6008819055506103e86001836200019e919062000a09565b620001aa919062000a83565b60098190555082600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e6000620002076200041960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200031c30826200044360201b60201c565b6200034233620003368385620005bb60201b90919060201c565b6200044360201b60201c565b50505062000be2565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004b5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004ac9062000b1c565b60405180910390fd5b620004c960008383620005d360201b60201c565b8060026000828254620004dd919062000b3e565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000534919062000b3e565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200059b919062000b8a565b60405180910390a3620005b760008383620005d860201b60201c565b5050565b60008183620005cb919062000ba7565b905092915050565b505050565b505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200060f82620005e2565b9050919050565b620006218162000602565b81146200062d57600080fd5b50565b600081519050620006418162000616565b92915050565b60006020828403121562000660576200065f620005dd565b5b6000620006708482850162000630565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620006fb57607f821691505b602082108103620007115762000710620006b3565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200077b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200073c565b6200078786836200073c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007d4620007ce620007c8846200079f565b620007a9565b6200079f565b9050919050565b6000819050919050565b620007f083620007b3565b62000808620007ff82620007db565b84845462000749565b825550505050565b600090565b6200081f62000810565b6200082c818484620007e5565b505050565b5b8181101562000854576200084860008262000815565b60018101905062000832565b5050565b601f821115620008a3576200086d8162000717565b62000878846200072c565b8101602085101562000888578190505b620008a062000897856200072c565b83018262000831565b50505b505050565b600082821c905092915050565b6000620008c860001984600802620008a8565b1980831691505092915050565b6000620008e38383620008b5565b9150826002028217905092915050565b620008fe8262000679565b67ffffffffffffffff8111156200091a576200091962000684565b5b620009268254620006e2565b6200093382828562000858565b600060209050601f8311600181146200096b576000841562000956578287015190505b620009628582620008d5565b865550620009d2565b601f1984166200097b8662000717565b60005b82811015620009a5578489015182556001820191506020850194506020810190506200097e565b86831015620009c55784890151620009c1601f891682620008b5565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000a16826200079f565b915062000a23836200079f565b925082820262000a33816200079f565b9150828204841483151762000a4d5762000a4c620009da565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000a90826200079f565b915062000a9d836200079f565b92508262000ab05762000aaf62000a54565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000b04601f8362000abb565b915062000b118262000acc565b602082019050919050565b6000602082019050818103600083015262000b378162000af5565b9050919050565b600062000b4b826200079f565b915062000b58836200079f565b925082820190508082111562000b735762000b72620009da565b5b92915050565b62000b84816200079f565b82525050565b600060208201905062000ba1600083018462000b79565b92915050565b600062000bb4826200079f565b915062000bc1836200079f565b925082820390508181111562000bdc5762000bdb620009da565b5b92915050565b6132198062000bf26000396000f3fe6080604052600436106101395760003560e01c8063715018a6116100ab578063ce404b231161006f578063ce404b2314610425578063d0c695f41461043c578063dd62ed3e14610453578063e54f4faa14610490578063f2fde38b146104bb578063f442d3fb146104e457610140565b8063715018a61461033e5780638da5cb5b1461035557806395d89b4114610380578063a457c2d7146103ab578063a9059cbb146103e857610140565b806323b872dd116100fd57806323b872dd1461021a578063313ce5671461025757806339509351146102825780635564ad71146102bf57806365cffb1e146102d657806370a082311461030157610140565b806306fdde0314610145578063095ea7b31461017057806318160ddd146101ad5780631fac6a3b146101d85780631ffc2998146101ef57610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a61050d565b60405161016791906121b8565b60405180910390f35b34801561017c57600080fd5b5061019760048036038101906101929190612273565b61059f565b6040516101a491906122ce565b60405180910390f35b3480156101b957600080fd5b506101c26105c2565b6040516101cf91906122f8565b60405180910390f35b3480156101e457600080fd5b506101ed6105cc565b005b3480156101fb57600080fd5b50610204610637565b60405161021191906122f8565b60405180910390f35b34801561022657600080fd5b50610241600480360381019061023c9190612313565b61063d565b60405161024e91906122ce565b60405180910390f35b34801561026357600080fd5b5061026c61066c565b6040516102799190612382565b60405180910390f35b34801561028e57600080fd5b506102a960048036038101906102a49190612273565b610675565b6040516102b691906122ce565b60405180910390f35b3480156102cb57600080fd5b506102d461071f565b005b3480156102e257600080fd5b506102eb6107c0565b6040516102f891906122ce565b60405180910390f35b34801561030d57600080fd5b506103286004803603810190610323919061239d565b6107d3565b60405161033591906122f8565b60405180910390f35b34801561034a57600080fd5b5061035361081b565b005b34801561036157600080fd5b5061036a6108a3565b60405161037791906123d9565b60405180910390f35b34801561038c57600080fd5b506103956108cd565b6040516103a291906121b8565b60405180910390f35b3480156103b757600080fd5b506103d260048036038101906103cd9190612273565b61095f565b6040516103df91906122ce565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190612273565b610a49565b60405161041c91906122ce565b60405180910390f35b34801561043157600080fd5b5061043a610a6c565b005b34801561044857600080fd5b50610451610b20565b005b34801561045f57600080fd5b5061047a600480360381019061047591906123f4565b610d8e565b60405161048791906122f8565b60405180910390f35b34801561049c57600080fd5b506104a5610e15565b6040516104b291906122f8565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd919061239d565b610e1b565b005b3480156104f057600080fd5b5061050b60048036038101906105069190612434565b610f12565b005b60606003805461051c90612490565b80601f016020809104026020016040519081016040528092919081815260200182805461054890612490565b80156105955780601f1061056a57610100808354040283529160200191610595565b820191906000526020600020905b81548152906001019060200180831161057857829003601f168201915b5050505050905090565b6000806105aa61107a565b90506105b7818585611082565b600191505092915050565b6000600254905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610634573d6000803e3d6000fd5b50565b60095481565b60008061064861107a565b905061065585828561124b565b6106608585856112d7565b60019150509392505050565b60006012905090565b60008061068061107a565b9050610714818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461070f91906124f0565b611082565b600191505092915050565b61072761107a565b73ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ad90612596565b60405180910390fd5b6000600881905550565b600a60009054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61082361107a565b73ffffffffffffffffffffffffffffffffffffffff166108416108a3565b73ffffffffffffffffffffffffffffffffffffffff1614610897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088e90612602565b60405180910390fd5b6108a160006118a9565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546108dc90612490565b80601f016020809104026020016040519081016040528092919081815260200182805461090890612490565b80156109555780601f1061092a57610100808354040283529160200191610955565b820191906000526020600020905b81548152906001019060200180831161093857829003601f168201915b5050505050905090565b60008061096a61107a565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015610a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2790612694565b60405180910390fd5b610a3d8286868403611082565b60019250505092915050565b600080610a5461107a565b9050610a618185856112d7565b600191505092915050565b610a7461107a565b73ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afa90612596565b60405180910390fd5b6001600a60006101000a81548160ff021916908315150217905550565b610b2861107a565b73ffffffffffffffffffffffffffffffffffffffff16610b466108a3565b73ffffffffffffffffffffffffffffffffffffffff1614610b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9390612602565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2d91906126c9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cda91906126c9565b6040518363ffffffff1660e01b8152600401610cf79291906126f6565b6020604051808303816000875af1158015610d16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3a91906126c9565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610d8c610d86306107d3565b4761196f565b565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b610e2361107a565b73ffffffffffffffffffffffffffffffffffffffff16610e416108a3565b73ffffffffffffffffffffffffffffffffffffffff1614610e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8e90612602565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efd90612791565b60405180910390fd5b610f0f816118a9565b50565b610f1a61107a565b73ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa090612596565b60405180910390fd5b620186a06001610fb76105c2565b610fc191906127b1565b610fcb9190612822565b81101561100d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611004906128c5565b60405180910390fd5b6103e8600561101a6105c2565b61102491906127b1565b61102e9190612822565b811115611070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106790612957565b60405180910390fd5b8060098190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e8906129e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611160576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115790612a7b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161123e91906122f8565b60405180910390a3505050565b60006112578484610d8e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146112d157818110156112c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ba90612ae7565b60405180910390fd5b6112d08484848403611082565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133d90612b79565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ac90612c0b565b60405180910390fd5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490506000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806114ad5750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b9050600083036114ca576114c385856000611a6f565b50506118a4565b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036115675780611560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155790612c9d565b60405180910390fd5b50506118a4565b60006008541180156115765750815b80156115b557506115856108a3565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156115ed57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561164b57600854836115ff866107d3565b61160991906124f0565b111561164a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164190612d55565b60405180910390fd5b5b600a60009054906101000a900460ff1661189657600061166a306107d3565b9050600060095482101590508080156116905750600a60019054906101000a900460ff16155b801561169a575083155b80156116f05750600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156117465750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561178a576001600a60016101000a81548160ff02191690831515021790555061176e611cee565b6000600a60016101000a81548160ff0219169083151502179055505b6000600a60019054906101000a900460ff1615905083806118035750841580156118025750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b5b1561180d57600090505b801561189257600061183d606461182f600b548a611e9990919063ffffffff16565b611eaf90919063ffffffff16565b90506118676064611859600b548a611e9990919063ffffffff16565b611eaf90919063ffffffff16565b600c81905550600081111561188257611881893083611a6f565b5b808761188e9190612d75565b9650505b5050505b6118a1858585611a6f565b50505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61199c30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611082565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611a2596959493929190612dee565b60606040518083038185885af1158015611a43573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a689190612e64565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad590612f29565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4490612fbb565b60405180910390fd5b611b58838383611ec5565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611bde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd59061304d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c7191906124f0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cd591906122f8565b60405180910390a3611ce8848484611eca565b50505050565b6000611cf9306107d3565b90506000611d136003600c54611eaf90919063ffffffff16565b90506000611d2c82600c54611ecf90919063ffffffff16565b90506000831480611d3f57506000600c54145b15611d4c57505050611e97565b600954831115611d5c5760095492505b60006002600c548486611d6f91906127b1565b611d799190612822565b611d839190612822565b90506000611d9a8286611ecf90919063ffffffff16565b90506000479050611daa82611ee5565b6000611dbf8247611ecf90919063ffffffff16565b90506000611dea600c54611ddc8885611e9990919063ffffffff16565b611eaf90919063ffffffff16565b905060008183611dfa9190612d75565b90506000600c81905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611e6c573d6000803e3d6000fd5b50600086118015611e7d5750600081115b15611e8d57611e8c868261196f565b5b5050505050505050505b565b60008183611ea791906127b1565b905092915050565b60008183611ebd9190612822565b905092915050565b505050565b505050565b60008183611edd9190612d75565b905092915050565b6000600267ffffffffffffffff811115611f0257611f0161306d565b5b604051908082528060200260200182016040528015611f305781602001602082028036833780820191505090505b5090503081600081518110611f4857611f4761309c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201391906126c9565b816001815181106120275761202661309c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061208e30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611082565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016120f2959493929190613189565b600060405180830381600087803b15801561210c57600080fd5b505af1158015612120573d6000803e3d6000fd5b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612162578082015181840152602081019050612147565b60008484015250505050565b6000601f19601f8301169050919050565b600061218a82612128565b6121948185612133565b93506121a4818560208601612144565b6121ad8161216e565b840191505092915050565b600060208201905081810360008301526121d2818461217f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061220a826121df565b9050919050565b61221a816121ff565b811461222557600080fd5b50565b60008135905061223781612211565b92915050565b6000819050919050565b6122508161223d565b811461225b57600080fd5b50565b60008135905061226d81612247565b92915050565b6000806040838503121561228a576122896121da565b5b600061229885828601612228565b92505060206122a98582860161225e565b9150509250929050565b60008115159050919050565b6122c8816122b3565b82525050565b60006020820190506122e360008301846122bf565b92915050565b6122f28161223d565b82525050565b600060208201905061230d60008301846122e9565b92915050565b60008060006060848603121561232c5761232b6121da565b5b600061233a86828701612228565b935050602061234b86828701612228565b925050604061235c8682870161225e565b9150509250925092565b600060ff82169050919050565b61237c81612366565b82525050565b60006020820190506123976000830184612373565b92915050565b6000602082840312156123b3576123b26121da565b5b60006123c184828501612228565b91505092915050565b6123d3816121ff565b82525050565b60006020820190506123ee60008301846123ca565b92915050565b6000806040838503121561240b5761240a6121da565b5b600061241985828601612228565b925050602061242a85828601612228565b9150509250929050565b60006020828403121561244a576124496121da565b5b60006124588482850161225e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806124a857607f821691505b6020821081036124bb576124ba612461565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006124fb8261223d565b91506125068361223d565b925082820190508082111561251e5761251d6124c1565b5b92915050565b7f43616c6c6572206973206e6f7420746865205f6665654164647220616464726560008201527f73732e0000000000000000000000000000000000000000000000000000000000602082015250565b6000612580602383612133565b915061258b82612524565b604082019050919050565b600060208201905081810360008301526125af81612573565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006125ec602083612133565b91506125f7826125b6565b602082019050919050565b6000602082019050818103600083015261261b816125df565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061267e602583612133565b915061268982612622565b604082019050919050565b600060208201905081810360008301526126ad81612671565b9050919050565b6000815190506126c381612211565b92915050565b6000602082840312156126df576126de6121da565b5b60006126ed848285016126b4565b91505092915050565b600060408201905061270b60008301856123ca565b61271860208301846123ca565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061277b602683612133565b91506127868261271f565b604082019050919050565b600060208201905081810360008301526127aa8161276e565b9050919050565b60006127bc8261223d565b91506127c78361223d565b92508282026127d58161223d565b915082820484148315176127ec576127eb6124c1565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061282d8261223d565b91506128388361223d565b925082612848576128476127f3565b5b828204905092915050565b7f53776170207468726573686f6c642063616e6e6f74206265206c6f776572207460008201527f68616e20302e3030312520746f74616c20737570706c792e0000000000000000602082015250565b60006128af603883612133565b91506128ba82612853565b604082019050919050565b600060208201905081810360008301526128de816128a2565b9050919050565b7f53776170207468726573686f6c642063616e6e6f74206265206869676865722060008201527f7468616e20302e352520746f74616c20737570706c792e000000000000000000602082015250565b6000612941603783612133565b915061294c826128e5565b604082019050919050565b6000602082019050818103600083015261297081612934565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006129d3602483612133565b91506129de82612977565b604082019050919050565b60006020820190508181036000830152612a02816129c6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612a65602283612133565b9150612a7082612a09565b604082019050919050565b60006020820190508181036000830152612a9481612a58565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612ad1601d83612133565b9150612adc82612a9b565b602082019050919050565b60006020820190508181036000830152612b0081612ac4565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f2061646472657373206e60008201527f6f7420616c6c6f7765642e000000000000000000000000000000000000000000602082015250565b6000612b63602b83612133565b9150612b6e82612b07565b604082019050919050565b60006020820190508181036000830152612b9281612b56565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373206e6f7460008201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000602082015250565b6000612bf5602983612133565b9150612c0082612b99565b604082019050919050565b60006020820190508181036000830152612c2481612be8565b9050919050565b7f506c65617365207761697420666f7220746865204c50207061697220746f206260008201527f6520637265617465642e00000000000000000000000000000000000000000000602082015250565b6000612c87602a83612133565b9150612c9282612c2b565b604082019050919050565b60006020820190508181036000830152612cb681612c7a565b9050919050565b7f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f60008201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c60208201527f6c65742e00000000000000000000000000000000000000000000000000000000604082015250565b6000612d3f604483612133565b9150612d4a82612cbd565b606082019050919050565b60006020820190508181036000830152612d6e81612d32565b9050919050565b6000612d808261223d565b9150612d8b8361223d565b9250828203905081811115612da357612da26124c1565b5b92915050565b6000819050919050565b6000819050919050565b6000612dd8612dd3612dce84612da9565b612db3565b61223d565b9050919050565b612de881612dbd565b82525050565b600060c082019050612e0360008301896123ca565b612e1060208301886122e9565b612e1d6040830187612ddf565b612e2a6060830186612ddf565b612e3760808301856123ca565b612e4460a08301846122e9565b979650505050505050565b600081519050612e5e81612247565b92915050565b600080600060608486031215612e7d57612e7c6121da565b5b6000612e8b86828701612e4f565b9350506020612e9c86828701612e4f565b9250506040612ead86828701612e4f565b9150509250925092565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612f13602583612133565b9150612f1e82612eb7565b604082019050919050565b60006020820190508181036000830152612f4281612f06565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612fa5602383612133565b9150612fb082612f49565b604082019050919050565b60006020820190508181036000830152612fd481612f98565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613037602683612133565b915061304282612fdb565b604082019050919050565b600060208201905081810360008301526130668161302a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613100816121ff565b82525050565b600061311283836130f7565b60208301905092915050565b6000602082019050919050565b6000613136826130cb565b61314081856130d6565b935061314b836130e7565b8060005b8381101561317c5781516131638882613106565b975061316e8361311e565b92505060018101905061314f565b5085935050505092915050565b600060a08201905061319e60008301886122e9565b6131ab6020830187612ddf565b81810360408301526131bd818661312b565b90506131cc60608301856123ca565b6131d960808301846122e9565b969550505050505056fea2646970667358221220568162d431511408c53673e21c7fba76676afed45dac93b65b1a0c0f922ef2d464736f6c63430008130033000000000000000000000000fd440f6a8f6ac5c153eaa9db9599f25c499e9ca1
Deployed Bytecode
0x6080604052600436106101395760003560e01c8063715018a6116100ab578063ce404b231161006f578063ce404b2314610425578063d0c695f41461043c578063dd62ed3e14610453578063e54f4faa14610490578063f2fde38b146104bb578063f442d3fb146104e457610140565b8063715018a61461033e5780638da5cb5b1461035557806395d89b4114610380578063a457c2d7146103ab578063a9059cbb146103e857610140565b806323b872dd116100fd57806323b872dd1461021a578063313ce5671461025757806339509351146102825780635564ad71146102bf57806365cffb1e146102d657806370a082311461030157610140565b806306fdde0314610145578063095ea7b31461017057806318160ddd146101ad5780631fac6a3b146101d85780631ffc2998146101ef57610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a61050d565b60405161016791906121b8565b60405180910390f35b34801561017c57600080fd5b5061019760048036038101906101929190612273565b61059f565b6040516101a491906122ce565b60405180910390f35b3480156101b957600080fd5b506101c26105c2565b6040516101cf91906122f8565b60405180910390f35b3480156101e457600080fd5b506101ed6105cc565b005b3480156101fb57600080fd5b50610204610637565b60405161021191906122f8565b60405180910390f35b34801561022657600080fd5b50610241600480360381019061023c9190612313565b61063d565b60405161024e91906122ce565b60405180910390f35b34801561026357600080fd5b5061026c61066c565b6040516102799190612382565b60405180910390f35b34801561028e57600080fd5b506102a960048036038101906102a49190612273565b610675565b6040516102b691906122ce565b60405180910390f35b3480156102cb57600080fd5b506102d461071f565b005b3480156102e257600080fd5b506102eb6107c0565b6040516102f891906122ce565b60405180910390f35b34801561030d57600080fd5b506103286004803603810190610323919061239d565b6107d3565b60405161033591906122f8565b60405180910390f35b34801561034a57600080fd5b5061035361081b565b005b34801561036157600080fd5b5061036a6108a3565b60405161037791906123d9565b60405180910390f35b34801561038c57600080fd5b506103956108cd565b6040516103a291906121b8565b60405180910390f35b3480156103b757600080fd5b506103d260048036038101906103cd9190612273565b61095f565b6040516103df91906122ce565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190612273565b610a49565b60405161041c91906122ce565b60405180910390f35b34801561043157600080fd5b5061043a610a6c565b005b34801561044857600080fd5b50610451610b20565b005b34801561045f57600080fd5b5061047a600480360381019061047591906123f4565b610d8e565b60405161048791906122f8565b60405180910390f35b34801561049c57600080fd5b506104a5610e15565b6040516104b291906122f8565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd919061239d565b610e1b565b005b3480156104f057600080fd5b5061050b60048036038101906105069190612434565b610f12565b005b60606003805461051c90612490565b80601f016020809104026020016040519081016040528092919081815260200182805461054890612490565b80156105955780601f1061056a57610100808354040283529160200191610595565b820191906000526020600020905b81548152906001019060200180831161057857829003601f168201915b5050505050905090565b6000806105aa61107a565b90506105b7818585611082565b600191505092915050565b6000600254905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610634573d6000803e3d6000fd5b50565b60095481565b60008061064861107a565b905061065585828561124b565b6106608585856112d7565b60019150509392505050565b60006012905090565b60008061068061107a565b9050610714818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461070f91906124f0565b611082565b600191505092915050565b61072761107a565b73ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ad90612596565b60405180910390fd5b6000600881905550565b600a60009054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61082361107a565b73ffffffffffffffffffffffffffffffffffffffff166108416108a3565b73ffffffffffffffffffffffffffffffffffffffff1614610897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088e90612602565b60405180910390fd5b6108a160006118a9565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546108dc90612490565b80601f016020809104026020016040519081016040528092919081815260200182805461090890612490565b80156109555780601f1061092a57610100808354040283529160200191610955565b820191906000526020600020905b81548152906001019060200180831161093857829003601f168201915b5050505050905090565b60008061096a61107a565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015610a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2790612694565b60405180910390fd5b610a3d8286868403611082565b60019250505092915050565b600080610a5461107a565b9050610a618185856112d7565b600191505092915050565b610a7461107a565b73ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afa90612596565b60405180910390fd5b6001600a60006101000a81548160ff021916908315150217905550565b610b2861107a565b73ffffffffffffffffffffffffffffffffffffffff16610b466108a3565b73ffffffffffffffffffffffffffffffffffffffff1614610b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9390612602565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2d91906126c9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cda91906126c9565b6040518363ffffffff1660e01b8152600401610cf79291906126f6565b6020604051808303816000875af1158015610d16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3a91906126c9565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610d8c610d86306107d3565b4761196f565b565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b610e2361107a565b73ffffffffffffffffffffffffffffffffffffffff16610e416108a3565b73ffffffffffffffffffffffffffffffffffffffff1614610e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8e90612602565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efd90612791565b60405180910390fd5b610f0f816118a9565b50565b610f1a61107a565b73ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa090612596565b60405180910390fd5b620186a06001610fb76105c2565b610fc191906127b1565b610fcb9190612822565b81101561100d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611004906128c5565b60405180910390fd5b6103e8600561101a6105c2565b61102491906127b1565b61102e9190612822565b811115611070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106790612957565b60405180910390fd5b8060098190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e8906129e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611160576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115790612a7b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161123e91906122f8565b60405180910390a3505050565b60006112578484610d8e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146112d157818110156112c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ba90612ae7565b60405180910390fd5b6112d08484848403611082565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133d90612b79565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ac90612c0b565b60405180910390fd5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490506000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806114ad5750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b9050600083036114ca576114c385856000611a6f565b50506118a4565b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036115675780611560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155790612c9d565b60405180910390fd5b50506118a4565b60006008541180156115765750815b80156115b557506115856108a3565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156115ed57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561164b57600854836115ff866107d3565b61160991906124f0565b111561164a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164190612d55565b60405180910390fd5b5b600a60009054906101000a900460ff1661189657600061166a306107d3565b9050600060095482101590508080156116905750600a60019054906101000a900460ff16155b801561169a575083155b80156116f05750600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156117465750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561178a576001600a60016101000a81548160ff02191690831515021790555061176e611cee565b6000600a60016101000a81548160ff0219169083151502179055505b6000600a60019054906101000a900460ff1615905083806118035750841580156118025750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b5b1561180d57600090505b801561189257600061183d606461182f600b548a611e9990919063ffffffff16565b611eaf90919063ffffffff16565b90506118676064611859600b548a611e9990919063ffffffff16565b611eaf90919063ffffffff16565b600c81905550600081111561188257611881893083611a6f565b5b808761188e9190612d75565b9650505b5050505b6118a1858585611a6f565b50505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61199c30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611082565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611a2596959493929190612dee565b60606040518083038185885af1158015611a43573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a689190612e64565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad590612f29565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4490612fbb565b60405180910390fd5b611b58838383611ec5565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611bde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd59061304d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c7191906124f0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cd591906122f8565b60405180910390a3611ce8848484611eca565b50505050565b6000611cf9306107d3565b90506000611d136003600c54611eaf90919063ffffffff16565b90506000611d2c82600c54611ecf90919063ffffffff16565b90506000831480611d3f57506000600c54145b15611d4c57505050611e97565b600954831115611d5c5760095492505b60006002600c548486611d6f91906127b1565b611d799190612822565b611d839190612822565b90506000611d9a8286611ecf90919063ffffffff16565b90506000479050611daa82611ee5565b6000611dbf8247611ecf90919063ffffffff16565b90506000611dea600c54611ddc8885611e9990919063ffffffff16565b611eaf90919063ffffffff16565b905060008183611dfa9190612d75565b90506000600c81905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611e6c573d6000803e3d6000fd5b50600086118015611e7d5750600081115b15611e8d57611e8c868261196f565b5b5050505050505050505b565b60008183611ea791906127b1565b905092915050565b60008183611ebd9190612822565b905092915050565b505050565b505050565b60008183611edd9190612d75565b905092915050565b6000600267ffffffffffffffff811115611f0257611f0161306d565b5b604051908082528060200260200182016040528015611f305781602001602082028036833780820191505090505b5090503081600081518110611f4857611f4761309c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201391906126c9565b816001815181106120275761202661309c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061208e30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611082565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016120f2959493929190613189565b600060405180830381600087803b15801561210c57600080fd5b505af1158015612120573d6000803e3d6000fd5b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612162578082015181840152602081019050612147565b60008484015250505050565b6000601f19601f8301169050919050565b600061218a82612128565b6121948185612133565b93506121a4818560208601612144565b6121ad8161216e565b840191505092915050565b600060208201905081810360008301526121d2818461217f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061220a826121df565b9050919050565b61221a816121ff565b811461222557600080fd5b50565b60008135905061223781612211565b92915050565b6000819050919050565b6122508161223d565b811461225b57600080fd5b50565b60008135905061226d81612247565b92915050565b6000806040838503121561228a576122896121da565b5b600061229885828601612228565b92505060206122a98582860161225e565b9150509250929050565b60008115159050919050565b6122c8816122b3565b82525050565b60006020820190506122e360008301846122bf565b92915050565b6122f28161223d565b82525050565b600060208201905061230d60008301846122e9565b92915050565b60008060006060848603121561232c5761232b6121da565b5b600061233a86828701612228565b935050602061234b86828701612228565b925050604061235c8682870161225e565b9150509250925092565b600060ff82169050919050565b61237c81612366565b82525050565b60006020820190506123976000830184612373565b92915050565b6000602082840312156123b3576123b26121da565b5b60006123c184828501612228565b91505092915050565b6123d3816121ff565b82525050565b60006020820190506123ee60008301846123ca565b92915050565b6000806040838503121561240b5761240a6121da565b5b600061241985828601612228565b925050602061242a85828601612228565b9150509250929050565b60006020828403121561244a576124496121da565b5b60006124588482850161225e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806124a857607f821691505b6020821081036124bb576124ba612461565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006124fb8261223d565b91506125068361223d565b925082820190508082111561251e5761251d6124c1565b5b92915050565b7f43616c6c6572206973206e6f7420746865205f6665654164647220616464726560008201527f73732e0000000000000000000000000000000000000000000000000000000000602082015250565b6000612580602383612133565b915061258b82612524565b604082019050919050565b600060208201905081810360008301526125af81612573565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006125ec602083612133565b91506125f7826125b6565b602082019050919050565b6000602082019050818103600083015261261b816125df565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061267e602583612133565b915061268982612622565b604082019050919050565b600060208201905081810360008301526126ad81612671565b9050919050565b6000815190506126c381612211565b92915050565b6000602082840312156126df576126de6121da565b5b60006126ed848285016126b4565b91505092915050565b600060408201905061270b60008301856123ca565b61271860208301846123ca565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061277b602683612133565b91506127868261271f565b604082019050919050565b600060208201905081810360008301526127aa8161276e565b9050919050565b60006127bc8261223d565b91506127c78361223d565b92508282026127d58161223d565b915082820484148315176127ec576127eb6124c1565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061282d8261223d565b91506128388361223d565b925082612848576128476127f3565b5b828204905092915050565b7f53776170207468726573686f6c642063616e6e6f74206265206c6f776572207460008201527f68616e20302e3030312520746f74616c20737570706c792e0000000000000000602082015250565b60006128af603883612133565b91506128ba82612853565b604082019050919050565b600060208201905081810360008301526128de816128a2565b9050919050565b7f53776170207468726573686f6c642063616e6e6f74206265206869676865722060008201527f7468616e20302e352520746f74616c20737570706c792e000000000000000000602082015250565b6000612941603783612133565b915061294c826128e5565b604082019050919050565b6000602082019050818103600083015261297081612934565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006129d3602483612133565b91506129de82612977565b604082019050919050565b60006020820190508181036000830152612a02816129c6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612a65602283612133565b9150612a7082612a09565b604082019050919050565b60006020820190508181036000830152612a9481612a58565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612ad1601d83612133565b9150612adc82612a9b565b602082019050919050565b60006020820190508181036000830152612b0081612ac4565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f2061646472657373206e60008201527f6f7420616c6c6f7765642e000000000000000000000000000000000000000000602082015250565b6000612b63602b83612133565b9150612b6e82612b07565b604082019050919050565b60006020820190508181036000830152612b9281612b56565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373206e6f7460008201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000602082015250565b6000612bf5602983612133565b9150612c0082612b99565b604082019050919050565b60006020820190508181036000830152612c2481612be8565b9050919050565b7f506c65617365207761697420666f7220746865204c50207061697220746f206260008201527f6520637265617465642e00000000000000000000000000000000000000000000602082015250565b6000612c87602a83612133565b9150612c9282612c2b565b604082019050919050565b60006020820190508181036000830152612cb681612c7a565b9050919050565b7f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f60008201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c60208201527f6c65742e00000000000000000000000000000000000000000000000000000000604082015250565b6000612d3f604483612133565b9150612d4a82612cbd565b606082019050919050565b60006020820190508181036000830152612d6e81612d32565b9050919050565b6000612d808261223d565b9150612d8b8361223d565b9250828203905081811115612da357612da26124c1565b5b92915050565b6000819050919050565b6000819050919050565b6000612dd8612dd3612dce84612da9565b612db3565b61223d565b9050919050565b612de881612dbd565b82525050565b600060c082019050612e0360008301896123ca565b612e1060208301886122e9565b612e1d6040830187612ddf565b612e2a6060830186612ddf565b612e3760808301856123ca565b612e4460a08301846122e9565b979650505050505050565b600081519050612e5e81612247565b92915050565b600080600060608486031215612e7d57612e7c6121da565b5b6000612e8b86828701612e4f565b9350506020612e9c86828701612e4f565b9250506040612ead86828701612e4f565b9150509250925092565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612f13602583612133565b9150612f1e82612eb7565b604082019050919050565b60006020820190508181036000830152612f4281612f06565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612fa5602383612133565b9150612fb082612f49565b604082019050919050565b60006020820190508181036000830152612fd481612f98565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613037602683612133565b915061304282612fdb565b604082019050919050565b600060208201905081810360008301526130668161302a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613100816121ff565b82525050565b600061311283836130f7565b60208301905092915050565b6000602082019050919050565b6000613136826130cb565b61314081856130d6565b935061314b836130e7565b8060005b8381101561317c5781516131638882613106565b975061316e8361311e565b92505060018101905061314f565b5085935050505092915050565b600060a08201905061319e60008301886122e9565b6131ab6020830187612ddf565b81810360408301526131bd818661312b565b90506131cc60608301856123ca565b6131d960808301846122e9565b969550505050505056fea2646970667358221220568162d431511408c53673e21c7fba76676afed45dac93b65b1a0c0f922ef2d464736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000fd440f6a8f6ac5c153eaa9db9599f25c499e9ca1
-----Decoded View---------------
Arg [0] : feeAddr (address): 0xfD440F6a8F6Ac5c153eaa9dB9599F25c499E9ca1
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000fd440f6a8f6ac5c153eaa9db9599f25c499e9ca1
Deployed Bytecode Sourcemap
9363:7027:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1633:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2565:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1954:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16245:105;;;;;;;;;;;;;:::i;:::-;;9634:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2774:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1853:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3077:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16094:86;;;;;;;;;;;;;:::i;:::-;;9673:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2070:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7853:103;;;;;;;;;;;;;:::i;:::-;;7630:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1741:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3325:438;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2205:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15970:82;;;;;;;;;;;;;:::i;:::-;;10874:375;;;;;;;;;;;;;:::i;:::-;;2406:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9601:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7964:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11341:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1633:100;1687:13;1720:5;1713:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1633:100;:::o;2565:201::-;2648:4;2665:13;2681:12;:10;:12::i;:::-;2665:28;;2704:32;2713:5;2720:7;2729:6;2704:8;:32::i;:::-;2754:4;2747:11;;;2565:201;;;;:::o;1954:108::-;2015:7;2042:12;;2035:19;;1954:108;:::o;16245:105::-;16301:8;;;;;;;;;;;16293:26;;:49;16320:21;16293:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16245:105::o;9634:32::-;;;;:::o;2774:295::-;2905:4;2922:15;2940:12;:10;:12::i;:::-;2922:30;;2963:38;2979:4;2985:7;2994:6;2963:15;:38::i;:::-;3012:27;3022:4;3028:2;3032:6;3012:9;:27::i;:::-;3057:4;3050:11;;;2774:295;;;;;:::o;1853:93::-;1911:5;1936:2;1929:9;;1853:93;:::o;3077:240::-;3165:4;3182:13;3198:12;:10;:12::i;:::-;3182:28;;3221:66;3230:5;3237:7;3276:10;3246:11;:18;3258:5;3246:18;;;;;;;;;;;;;;;:27;3265:7;3246:27;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;3221:8;:66::i;:::-;3305:4;3298:11;;;3077:240;;;;:::o;16094:86::-;10078:12;:10;:12::i;:::-;10066:24;;:8;;;;;;;;;;;:24;;;10058:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;16171:1:::1;16157:11;:15;;;;16094:86::o:0;9673:24::-;;;;;;;;;;;;;:::o;2070:127::-;2144:7;2171:9;:18;2181:7;2171:18;;;;;;;;;;;;;;;;2164:25;;2070:127;;;:::o;7853:103::-;7776:12;:10;:12::i;:::-;7765:23;;:7;:5;:7::i;:::-;:23;;;7757:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7918:30:::1;7945:1;7918:18;:30::i;:::-;7853:103::o:0;7630:87::-;7676:7;7703:6;;;;;;;;;;;7696:13;;7630:87;:::o;1741:104::-;1797:13;1830:7;1823:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1741:104;:::o;3325:438::-;3418:4;3435:13;3451:12;:10;:12::i;:::-;3435:28;;3474:24;3501:11;:18;3513:5;3501:18;;;;;;;;;;;;;;;:27;3520:7;3501:27;;;;;;;;;;;;;;;;3474:54;;3567:15;3547:16;:35;;3539:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3660:60;3669:5;3676:7;3704:15;3685:16;:34;3660:8;:60::i;:::-;3751:4;3744:11;;;;3325:438;;;;:::o;2205:193::-;2284:4;2301:13;2317:12;:10;:12::i;:::-;2301:28;;2340;2350:5;2357:2;2361:6;2340:9;:28::i;:::-;2386:4;2379:11;;;2205:193;;;;:::o;15970:82::-;10078:12;:10;:12::i;:::-;10066:24;;:8;;;;;;;;;;;:24;;;10058:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;16040:4:::1;16025:12;;:19;;;;;;;;;;;;;;;;;;15970:82::o:0;10874:375::-;7776:12;:10;:12::i;:::-;7765:23;;:7;:5;:7::i;:::-;:23;;;7757:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10999:16:::1;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10967:70;;;11046:4;11067:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10967:134;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10950:14;;:151;;;;;;;;;;;;;;;;;;11141:100;11169:24;11187:4;11169:9;:24::i;:::-;11209:21;11141:13;:100::i;:::-;10874:375::o:0;2406:151::-;2495:7;2522:11;:18;2534:5;2522:18;;;;;;;;;;;;;;;:27;2541:7;2522:27;;;;;;;;;;;;;;;;2515:34;;2406:151;;;;:::o;9601:26::-;;;;:::o;7964:201::-;7776:12;:10;:12::i;:::-;7765:23;;:7;:5;:7::i;:::-;:23;;;7757:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8073:1:::1;8053:22;;:8;:22;;::::0;8045:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8129:28;8148:8;8129:18;:28::i;:::-;7964:201:::0;:::o;11341:372::-;10078:12;:10;:12::i;:::-;10066:24;;:8;;;;;;;;;;;:24;;;10058:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;11479:6:::1;11475:1;11459:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;11443:12;:42;;11435:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;11600:4;11596:1;11580:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;11564:12;:40;;11556:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;11694:12;11674:17;:32;;;;11341:372:::0;:::o;95:98::-;148:7;175:10;168:17;;95:98;:::o;5456:380::-;5609:1;5592:19;;:5;:19;;;5584:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5690:1;5671:21;;:7;:21;;;5663:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5774:6;5744:11;:18;5756:5;5744:18;;;;;;;;;;;;;;;:27;5763:7;5744:27;;;;;;;;;;;;;;;:36;;;;5812:7;5796:32;;5805:5;5796:32;;;5821:6;5796:32;;;;;;:::i;:::-;;;;;;;;5456:380;;;:::o;5844:453::-;5979:24;6006:25;6016:5;6023:7;6006:9;:25::i;:::-;5979:52;;6066:17;6046:16;:37;6042:248;;6128:6;6108:16;:26;;6100:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6212:51;6221:5;6228:7;6256:6;6237:16;:25;6212:8;:51::i;:::-;6042:248;5968:329;5844:453;;;:::o;11721:2122::-;11869:1;11853:18;;:4;:18;;;11845:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11952:1;11938:16;;:2;:16;;;11930:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12048:10;12069:14;;;;;;;;;;;12061:22;;:4;:22;;;12048:35;;12094:12;12109:15;:21;12125:4;12109:21;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;12134:15;:19;12150:2;12134:19;;;;;;;;;;;;;;;;;;;;;;;;;12109:44;12094:59;;12180:1;12170:6;:11;12166:93;;12198:28;12214:4;12220:2;12224:1;12198:15;:28::i;:::-;12241:7;;;;12166:93;12346:1;12320:28;;:14;;;;;;;;;;;:28;;;12316:144;;12373:7;12365:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;12442:7;;;;12316:144;12520:1;12506:11;;:15;:24;;;;;12525:5;12506:24;:41;;;;;12540:7;:5;:7::i;:::-;12534:13;;:2;:13;;;;12506:41;:64;;;;;12565:4;12551:19;;:2;:19;;;;12506:64;12502:207;;;12625:11;;12615:6;12593:19;12609:2;12593:15;:19::i;:::-;:28;;;;:::i;:::-;:43;;12585:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;12502:207;12792:12;;;;;;;;;;;12787:1003;;12821:28;12852:24;12870:4;12852:9;:24::i;:::-;12821:55;;12891:12;12930:17;;12906:20;:41;;12891:56;;12984:7;:36;;;;;13013:7;;;;;;;;;;;13012:8;12984:36;:63;;;;;13042:5;13041:6;12984:63;:106;;;;;13069:15;:21;13085:4;13069:21;;;;;;;;;;;;;;;;;;;;;;;;;13068:22;12984:106;:147;;;;;13112:15;:19;13128:2;13112:19;;;;;;;;;;;;;;;;;;;;;;;;;13111:20;12984:147;12962:296;;;13176:4;13166:7;;:14;;;;;;;;;;;;;;;;;;13199:9;:7;:9::i;:::-;13237:5;13227:7;;:15;;;;;;;;;;;;;;;;;;12962:296;13329:12;13345:7;;;;;;;;;;;13344:8;13329:23;;13371:7;:41;;;;13383:5;13382:6;:30;;;;;13398:14;;;;;;;;;;;13392:20;;:2;:20;;;;13382:30;13371:41;13367:62;;;13424:5;13414:15;;13367:62;13462:7;13458:321;;;13490:12;13505:29;13530:3;13505:20;13516:8;;13505:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;13490:44;;13569:29;13594:3;13569:20;13580:8;;13569:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;13553:13;:45;;;;13646:1;13639:4;:8;13635:77;;;13670:42;13686:4;13700;13707;13670:15;:42::i;:::-;13635:77;13759:4;13749:14;;;;;:::i;:::-;;;13471:308;13458:321;12806:984;;;12787:1003;13802:33;13818:4;13824:2;13828:6;13802:15;:33::i;:::-;11834:2009;;11721:2122;;;;:::o;8173:191::-;8247:16;8266:6;;;;;;;;;;;8247:25;;8292:8;8283:6;;:17;;;;;;;;;;;;;;;;;;8347:8;8316:40;;8337:8;8316:40;;;;;;;;;;;;8236:128;8173:191;:::o;14393:367::-;14476:63;14493:4;14508:16;;;;;;;;;;;14527:11;14476:8;:63::i;:::-;14552:16;;;;;;;;;;;:32;;;14592:9;14625:4;14645:11;14671:1;14687;14703:8;;;;;;;;;;;14726:15;14552:200;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14393:367;;:::o;3771:671::-;3918:1;3902:18;;:4;:18;;;3894:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3995:1;3981:16;;:2;:16;;;3973:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4050:38;4071:4;4077:2;4081:6;4050:20;:38::i;:::-;4101:19;4123:9;:15;4133:4;4123:15;;;;;;;;;;;;;;;;4101:37;;4172:6;4157:11;:21;;4149:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;4289:6;4275:11;:20;4257:9;:15;4267:4;4257:15;;;;;;;;;;;;;;;:38;;;;4334:6;4317:9;:13;4327:2;4317:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;4373:2;4358:26;;4367:4;4358:26;;;4377:6;4358:26;;;;;;:::i;:::-;;;;;;;;4397:37;4417:4;4423:2;4427:6;4397:19;:37::i;:::-;3883:559;3771:671;;;:::o;14805:1131::-;14844:19;14866:24;14884:4;14866:9;:24::i;:::-;14844:46;;14901:20;14924;14942:1;14924:13;;:17;;:20;;;;:::i;:::-;14901:43;;14971:20;14994:31;15012:12;14994:13;;:17;;:31;;;;:::i;:::-;14971:54;;15109:1;15094:11;:16;:38;;;;15131:1;15114:13;;:18;15094:38;15090:51;;;15134:7;;;;;15090:51;15169:17;;15155:11;:31;15151:68;;;15202:17;;15188:31;;15151:68;15289:17;15354:1;15338:13;;15323:12;15309:11;:26;;;;:::i;:::-;:42;;;;:::i;:::-;:46;;;;:::i;:::-;15289:66;;15366:26;15395;15411:9;15395:11;:15;;:26;;;;:::i;:::-;15366:55;;15442:18;15463:21;15442:42;;15497:37;15515:18;15497:17;:37::i;:::-;15555:18;15576:37;15602:10;15576:21;:25;;:37;;;;:::i;:::-;15555:58;;15624:14;15641:47;15674:13;;15641:28;15656:12;15641:10;:14;;:28;;;;:::i;:::-;:32;;:47;;;;:::i;:::-;15624:64;;15699:14;15729:6;15716:10;:19;;;;:::i;:::-;15699:36;;15772:1;15756:13;:17;;;;15794:8;;;;;;;;;;;15786:26;;:34;15813:6;15786:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15865:1;15853:9;:13;:27;;;;;15879:1;15870:6;:10;15853:27;15849:79;;;15896:32;15910:9;15921:6;15896:13;:32::i;:::-;15849:79;14833:1103;;;;;;;;;14805:1131;:::o;8607:98::-;8665:7;8696:1;8692;:5;;;;:::i;:::-;8685:12;;8607:98;;;;:::o;8713:::-;8771:7;8802:1;8798;:5;;;;:::i;:::-;8791:12;;8713:98;;;;:::o;6305:125::-;;;;:::o;6438:124::-;;;;:::o;8501:98::-;8559:7;8590:1;8586;:5;;;;:::i;:::-;8579:12;;8501:98;;;;:::o;13879:480::-;13947:21;13985:1;13971:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13947:40;;14016:4;13998;14003:1;13998:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14042:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14032:4;14037:1;14032:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;14078:63;14095:4;14110:16;;;;;;;;;;;14129:11;14078:8;:63::i;:::-;14154:16;;;;;;;;;;;:67;;;14236:11;14262:1;14278:4;14305;14325:15;14154:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13936:423;13879:480;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:474::-;5608:6;5616;5665:2;5653:9;5644:7;5640:23;5636:32;5633:119;;;5671:79;;:::i;:::-;5633:119;5791:1;5816:53;5861:7;5852:6;5841:9;5837:22;5816:53;:::i;:::-;5806:63;;5762:117;5918:2;5944:53;5989:7;5980:6;5969:9;5965:22;5944:53;:::i;:::-;5934:63;;5889:118;5540:474;;;;;:::o;6020:329::-;6079:6;6128:2;6116:9;6107:7;6103:23;6099:32;6096:119;;;6134:79;;:::i;:::-;6096:119;6254:1;6279:53;6324:7;6315:6;6304:9;6300:22;6279:53;:::i;:::-;6269:63;;6225:117;6020:329;;;;:::o;6355:180::-;6403:77;6400:1;6393:88;6500:4;6497:1;6490:15;6524:4;6521:1;6514:15;6541:320;6585:6;6622:1;6616:4;6612:12;6602:22;;6669:1;6663:4;6659:12;6690:18;6680:81;;6746:4;6738:6;6734:17;6724:27;;6680:81;6808:2;6800:6;6797:14;6777:18;6774:38;6771:84;;6827:18;;:::i;:::-;6771:84;6592:269;6541:320;;;:::o;6867:180::-;6915:77;6912:1;6905:88;7012:4;7009:1;7002:15;7036:4;7033:1;7026:15;7053:191;7093:3;7112:20;7130:1;7112:20;:::i;:::-;7107:25;;7146:20;7164:1;7146:20;:::i;:::-;7141:25;;7189:1;7186;7182:9;7175:16;;7210:3;7207:1;7204:10;7201:36;;;7217:18;;:::i;:::-;7201:36;7053:191;;;;:::o;7250:222::-;7390:34;7386:1;7378:6;7374:14;7367:58;7459:5;7454:2;7446:6;7442:15;7435:30;7250:222;:::o;7478:366::-;7620:3;7641:67;7705:2;7700:3;7641:67;:::i;:::-;7634:74;;7717:93;7806:3;7717:93;:::i;:::-;7835:2;7830:3;7826:12;7819:19;;7478:366;;;:::o;7850:419::-;8016:4;8054:2;8043:9;8039:18;8031:26;;8103:9;8097:4;8093:20;8089:1;8078:9;8074:17;8067:47;8131:131;8257:4;8131:131;:::i;:::-;8123:139;;7850:419;;;:::o;8275:182::-;8415:34;8411:1;8403:6;8399:14;8392:58;8275:182;:::o;8463:366::-;8605:3;8626:67;8690:2;8685:3;8626:67;:::i;:::-;8619:74;;8702:93;8791:3;8702:93;:::i;:::-;8820:2;8815:3;8811:12;8804:19;;8463:366;;;:::o;8835:419::-;9001:4;9039:2;9028:9;9024:18;9016:26;;9088:9;9082:4;9078:20;9074:1;9063:9;9059:17;9052:47;9116:131;9242:4;9116:131;:::i;:::-;9108:139;;8835:419;;;:::o;9260:224::-;9400:34;9396:1;9388:6;9384:14;9377:58;9469:7;9464:2;9456:6;9452:15;9445:32;9260:224;:::o;9490:366::-;9632:3;9653:67;9717:2;9712:3;9653:67;:::i;:::-;9646:74;;9729:93;9818:3;9729:93;:::i;:::-;9847:2;9842:3;9838:12;9831:19;;9490:366;;;:::o;9862:419::-;10028:4;10066:2;10055:9;10051:18;10043:26;;10115:9;10109:4;10105:20;10101:1;10090:9;10086:17;10079:47;10143:131;10269:4;10143:131;:::i;:::-;10135:139;;9862:419;;;:::o;10287:143::-;10344:5;10375:6;10369:13;10360:22;;10391:33;10418:5;10391:33;:::i;:::-;10287:143;;;;:::o;10436:351::-;10506:6;10555:2;10543:9;10534:7;10530:23;10526:32;10523:119;;;10561:79;;:::i;:::-;10523:119;10681:1;10706:64;10762:7;10753:6;10742:9;10738:22;10706:64;:::i;:::-;10696:74;;10652:128;10436:351;;;;:::o;10793:332::-;10914:4;10952:2;10941:9;10937:18;10929:26;;10965:71;11033:1;11022:9;11018:17;11009:6;10965:71;:::i;:::-;11046:72;11114:2;11103:9;11099:18;11090:6;11046:72;:::i;:::-;10793:332;;;;;:::o;11131:225::-;11271:34;11267:1;11259:6;11255:14;11248:58;11340:8;11335:2;11327:6;11323:15;11316:33;11131:225;:::o;11362:366::-;11504:3;11525:67;11589:2;11584:3;11525:67;:::i;:::-;11518:74;;11601:93;11690:3;11601:93;:::i;:::-;11719:2;11714:3;11710:12;11703:19;;11362:366;;;:::o;11734:419::-;11900:4;11938:2;11927:9;11923:18;11915:26;;11987:9;11981:4;11977:20;11973:1;11962:9;11958:17;11951:47;12015:131;12141:4;12015:131;:::i;:::-;12007:139;;11734:419;;;:::o;12159:410::-;12199:7;12222:20;12240:1;12222:20;:::i;:::-;12217:25;;12256:20;12274:1;12256:20;:::i;:::-;12251:25;;12311:1;12308;12304:9;12333:30;12351:11;12333:30;:::i;:::-;12322:41;;12512:1;12503:7;12499:15;12496:1;12493:22;12473:1;12466:9;12446:83;12423:139;;12542:18;;:::i;:::-;12423:139;12207:362;12159:410;;;;:::o;12575:180::-;12623:77;12620:1;12613:88;12720:4;12717:1;12710:15;12744:4;12741:1;12734:15;12761:185;12801:1;12818:20;12836:1;12818:20;:::i;:::-;12813:25;;12852:20;12870:1;12852:20;:::i;:::-;12847:25;;12891:1;12881:35;;12896:18;;:::i;:::-;12881:35;12938:1;12935;12931:9;12926:14;;12761:185;;;;:::o;12952:243::-;13092:34;13088:1;13080:6;13076:14;13069:58;13161:26;13156:2;13148:6;13144:15;13137:51;12952:243;:::o;13201:366::-;13343:3;13364:67;13428:2;13423:3;13364:67;:::i;:::-;13357:74;;13440:93;13529:3;13440:93;:::i;:::-;13558:2;13553:3;13549:12;13542:19;;13201:366;;;:::o;13573:419::-;13739:4;13777:2;13766:9;13762:18;13754:26;;13826:9;13820:4;13816:20;13812:1;13801:9;13797:17;13790:47;13854:131;13980:4;13854:131;:::i;:::-;13846:139;;13573:419;;;:::o;13998:242::-;14138:34;14134:1;14126:6;14122:14;14115:58;14207:25;14202:2;14194:6;14190:15;14183:50;13998:242;:::o;14246:366::-;14388:3;14409:67;14473:2;14468:3;14409:67;:::i;:::-;14402:74;;14485:93;14574:3;14485:93;:::i;:::-;14603:2;14598:3;14594:12;14587:19;;14246:366;;;:::o;14618:419::-;14784:4;14822:2;14811:9;14807:18;14799:26;;14871:9;14865:4;14861:20;14857:1;14846:9;14842:17;14835:47;14899:131;15025:4;14899:131;:::i;:::-;14891:139;;14618:419;;;:::o;15043:223::-;15183:34;15179:1;15171:6;15167:14;15160:58;15252:6;15247:2;15239:6;15235:15;15228:31;15043:223;:::o;15272:366::-;15414:3;15435:67;15499:2;15494:3;15435:67;:::i;:::-;15428:74;;15511:93;15600:3;15511:93;:::i;:::-;15629:2;15624:3;15620:12;15613:19;;15272:366;;;:::o;15644:419::-;15810:4;15848:2;15837:9;15833:18;15825:26;;15897:9;15891:4;15887:20;15883:1;15872:9;15868:17;15861:47;15925:131;16051:4;15925:131;:::i;:::-;15917:139;;15644:419;;;:::o;16069:221::-;16209:34;16205:1;16197:6;16193:14;16186:58;16278:4;16273:2;16265:6;16261:15;16254:29;16069:221;:::o;16296:366::-;16438:3;16459:67;16523:2;16518:3;16459:67;:::i;:::-;16452:74;;16535:93;16624:3;16535:93;:::i;:::-;16653:2;16648:3;16644:12;16637:19;;16296:366;;;:::o;16668:419::-;16834:4;16872:2;16861:9;16857:18;16849:26;;16921:9;16915:4;16911:20;16907:1;16896:9;16892:17;16885:47;16949:131;17075:4;16949:131;:::i;:::-;16941:139;;16668:419;;;:::o;17093:179::-;17233:31;17229:1;17221:6;17217:14;17210:55;17093:179;:::o;17278:366::-;17420:3;17441:67;17505:2;17500:3;17441:67;:::i;:::-;17434:74;;17517:93;17606:3;17517:93;:::i;:::-;17635:2;17630:3;17626:12;17619:19;;17278:366;;;:::o;17650:419::-;17816:4;17854:2;17843:9;17839:18;17831:26;;17903:9;17897:4;17893:20;17889:1;17878:9;17874:17;17867:47;17931:131;18057:4;17931:131;:::i;:::-;17923:139;;17650:419;;;:::o;18075:230::-;18215:34;18211:1;18203:6;18199:14;18192:58;18284:13;18279:2;18271:6;18267:15;18260:38;18075:230;:::o;18311:366::-;18453:3;18474:67;18538:2;18533:3;18474:67;:::i;:::-;18467:74;;18550:93;18639:3;18550:93;:::i;:::-;18668:2;18663:3;18659:12;18652:19;;18311:366;;;:::o;18683:419::-;18849:4;18887:2;18876:9;18872:18;18864:26;;18936:9;18930:4;18926:20;18922:1;18911:9;18907:17;18900:47;18964:131;19090:4;18964:131;:::i;:::-;18956:139;;18683:419;;;:::o;19108:228::-;19248:34;19244:1;19236:6;19232:14;19225:58;19317:11;19312:2;19304:6;19300:15;19293:36;19108:228;:::o;19342:366::-;19484:3;19505:67;19569:2;19564:3;19505:67;:::i;:::-;19498:74;;19581:93;19670:3;19581:93;:::i;:::-;19699:2;19694:3;19690:12;19683:19;;19342:366;;;:::o;19714:419::-;19880:4;19918:2;19907:9;19903:18;19895:26;;19967:9;19961:4;19957:20;19953:1;19942:9;19938:17;19931:47;19995:131;20121:4;19995:131;:::i;:::-;19987:139;;19714:419;;;:::o;20139:229::-;20279:34;20275:1;20267:6;20263:14;20256:58;20348:12;20343:2;20335:6;20331:15;20324:37;20139:229;:::o;20374:366::-;20516:3;20537:67;20601:2;20596:3;20537:67;:::i;:::-;20530:74;;20613:93;20702:3;20613:93;:::i;:::-;20731:2;20726:3;20722:12;20715:19;;20374:366;;;:::o;20746:419::-;20912:4;20950:2;20939:9;20935:18;20927:26;;20999:9;20993:4;20989:20;20985:1;20974:9;20970:17;20963:47;21027:131;21153:4;21027:131;:::i;:::-;21019:139;;20746:419;;;:::o;21171:292::-;21311:34;21307:1;21299:6;21295:14;21288:58;21380:34;21375:2;21367:6;21363:15;21356:59;21449:6;21444:2;21436:6;21432:15;21425:31;21171:292;:::o;21469:366::-;21611:3;21632:67;21696:2;21691:3;21632:67;:::i;:::-;21625:74;;21708:93;21797:3;21708:93;:::i;:::-;21826:2;21821:3;21817:12;21810:19;;21469:366;;;:::o;21841:419::-;22007:4;22045:2;22034:9;22030:18;22022:26;;22094:9;22088:4;22084:20;22080:1;22069:9;22065:17;22058:47;22122:131;22248:4;22122:131;:::i;:::-;22114:139;;21841:419;;;:::o;22266:194::-;22306:4;22326:20;22344:1;22326:20;:::i;:::-;22321:25;;22360:20;22378:1;22360:20;:::i;:::-;22355:25;;22404:1;22401;22397:9;22389:17;;22428:1;22422:4;22419:11;22416:37;;;22433:18;;:::i;:::-;22416:37;22266:194;;;;:::o;22466:85::-;22511:7;22540:5;22529:16;;22466:85;;;:::o;22557:60::-;22585:3;22606:5;22599:12;;22557:60;;;:::o;22623:158::-;22681:9;22714:61;22732:42;22741:32;22767:5;22741:32;:::i;:::-;22732:42;:::i;:::-;22714:61;:::i;:::-;22701:74;;22623:158;;;:::o;22787:147::-;22882:45;22921:5;22882:45;:::i;:::-;22877:3;22870:58;22787:147;;:::o;22940:807::-;23189:4;23227:3;23216:9;23212:19;23204:27;;23241:71;23309:1;23298:9;23294:17;23285:6;23241:71;:::i;:::-;23322:72;23390:2;23379:9;23375:18;23366:6;23322:72;:::i;:::-;23404:80;23480:2;23469:9;23465:18;23456:6;23404:80;:::i;:::-;23494;23570:2;23559:9;23555:18;23546:6;23494:80;:::i;:::-;23584:73;23652:3;23641:9;23637:19;23628:6;23584:73;:::i;:::-;23667;23735:3;23724:9;23720:19;23711:6;23667:73;:::i;:::-;22940:807;;;;;;;;;:::o;23753:143::-;23810:5;23841:6;23835:13;23826:22;;23857:33;23884:5;23857:33;:::i;:::-;23753:143;;;;:::o;23902:663::-;23990:6;23998;24006;24055:2;24043:9;24034:7;24030:23;24026:32;24023:119;;;24061:79;;:::i;:::-;24023:119;24181:1;24206:64;24262:7;24253:6;24242:9;24238:22;24206:64;:::i;:::-;24196:74;;24152:128;24319:2;24345:64;24401:7;24392:6;24381:9;24377:22;24345:64;:::i;:::-;24335:74;;24290:129;24458:2;24484:64;24540:7;24531:6;24520:9;24516:22;24484:64;:::i;:::-;24474:74;;24429:129;23902:663;;;;;:::o;24571:224::-;24711:34;24707:1;24699:6;24695:14;24688:58;24780:7;24775:2;24767:6;24763:15;24756:32;24571:224;:::o;24801:366::-;24943:3;24964:67;25028:2;25023:3;24964:67;:::i;:::-;24957:74;;25040:93;25129:3;25040:93;:::i;:::-;25158:2;25153:3;25149:12;25142:19;;24801:366;;;:::o;25173:419::-;25339:4;25377:2;25366:9;25362:18;25354:26;;25426:9;25420:4;25416:20;25412:1;25401:9;25397:17;25390:47;25454:131;25580:4;25454:131;:::i;:::-;25446:139;;25173:419;;;:::o;25598:222::-;25738:34;25734:1;25726:6;25722:14;25715:58;25807:5;25802:2;25794:6;25790:15;25783:30;25598:222;:::o;25826:366::-;25968:3;25989:67;26053:2;26048:3;25989:67;:::i;:::-;25982:74;;26065:93;26154:3;26065:93;:::i;:::-;26183:2;26178:3;26174:12;26167:19;;25826:366;;;:::o;26198:419::-;26364:4;26402:2;26391:9;26387:18;26379:26;;26451:9;26445:4;26441:20;26437:1;26426:9;26422:17;26415:47;26479:131;26605:4;26479:131;:::i;:::-;26471:139;;26198:419;;;:::o;26623:225::-;26763:34;26759:1;26751:6;26747:14;26740:58;26832:8;26827:2;26819:6;26815:15;26808:33;26623:225;:::o;26854:366::-;26996:3;27017:67;27081:2;27076:3;27017:67;:::i;:::-;27010:74;;27093:93;27182:3;27093:93;:::i;:::-;27211:2;27206:3;27202:12;27195:19;;26854:366;;;:::o;27226:419::-;27392:4;27430:2;27419:9;27415:18;27407:26;;27479:9;27473:4;27469:20;27465:1;27454:9;27450:17;27443:47;27507:131;27633:4;27507:131;:::i;:::-;27499:139;;27226:419;;;:::o;27651:180::-;27699:77;27696:1;27689:88;27796:4;27793:1;27786:15;27820:4;27817:1;27810:15;27837:180;27885:77;27882:1;27875:88;27982:4;27979:1;27972:15;28006:4;28003:1;27996:15;28023:114;28090:6;28124:5;28118:12;28108:22;;28023:114;;;:::o;28143:184::-;28242:11;28276:6;28271:3;28264:19;28316:4;28311:3;28307:14;28292:29;;28143:184;;;;:::o;28333:132::-;28400:4;28423:3;28415:11;;28453:4;28448:3;28444:14;28436:22;;28333:132;;;:::o;28471:108::-;28548:24;28566:5;28548:24;:::i;:::-;28543:3;28536:37;28471:108;;:::o;28585:179::-;28654:10;28675:46;28717:3;28709:6;28675:46;:::i;:::-;28753:4;28748:3;28744:14;28730:28;;28585:179;;;;:::o;28770:113::-;28840:4;28872;28867:3;28863:14;28855:22;;28770:113;;;:::o;28919:732::-;29038:3;29067:54;29115:5;29067:54;:::i;:::-;29137:86;29216:6;29211:3;29137:86;:::i;:::-;29130:93;;29247:56;29297:5;29247:56;:::i;:::-;29326:7;29357:1;29342:284;29367:6;29364:1;29361:13;29342:284;;;29443:6;29437:13;29470:63;29529:3;29514:13;29470:63;:::i;:::-;29463:70;;29556:60;29609:6;29556:60;:::i;:::-;29546:70;;29402:224;29389:1;29386;29382:9;29377:14;;29342:284;;;29346:14;29642:3;29635:10;;29043:608;;;28919:732;;;;:::o;29657:831::-;29920:4;29958:3;29947:9;29943:19;29935:27;;29972:71;30040:1;30029:9;30025:17;30016:6;29972:71;:::i;:::-;30053:80;30129:2;30118:9;30114:18;30105:6;30053:80;:::i;:::-;30180:9;30174:4;30170:20;30165:2;30154:9;30150:18;30143:48;30208:108;30311:4;30302:6;30208:108;:::i;:::-;30200:116;;30326:72;30394:2;30383:9;30379:18;30370:6;30326:72;:::i;:::-;30408:73;30476:3;30465:9;30461:19;30452:6;30408:73;:::i;:::-;29657:831;;;;;;;;:::o
Swarm Source
ipfs://568162d431511408c53673e21c7fba76676afed45dac93b65b1a0c0f922ef2d4
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.