ERC-20
Overview
Max Total Supply
10,000,000 CHITCAT
Holders
268
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
CHITCAT
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-05-29 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.17; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } library Address { function isContract(address account) internal view returns (bool) { return account.code.length > 0; } function sendValue(address payable recipient, uint256 amount) internal returns(bool){ require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); return success; } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } 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 recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, 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) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { uint256 currentAllowance = _allowances[sender][_msgSender()]; if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } } _transfer(sender, recipient, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, 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 _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } contract CHITCAT is ERC20, Ownable { using Address for address payable; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; mapping (address => bool) private _isExcludedFromFees; address public marketingWallet; address public buyBackWallet; uint256 public swapTokensAtAmount; bool private swapping; event ExcludeFromFees(address indexed account, bool isExcluded); event SwapAndSendMarketing(uint256 tokensSwapped, uint256 bnbSend); constructor () ERC20("ChitCAT", "CHITCAT") { address router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router); address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = _uniswapV2Pair; _approve(address(this), address(uniswapV2Router), type(uint256).max); marketingWallet = 0x6CDC578a25D5f1eC5dB6C277bCdDa91e0e37e11B; buyBackWallet = 0x7Fe7077E6c42030d1397D592943b1f8eC9Aa67d2; _isExcludedFromFees[owner()] = true; _isExcludedFromFees[address(0xdead)] = true; _isExcludedFromFees[address(this)] = true; _isExcludedFromFees[marketingWallet] = true; _isExcludedFromFees[buyBackWallet] = true; _isExcludedFromFees[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; //pinklock _mint(owner(), 1e7 * (10 ** decimals())); swapTokensAtAmount = totalSupply() / 5_000; } receive() external payable {} function excludeFromFees(address account, bool excluded) external onlyOwner{ require(_isExcludedFromFees[account] != excluded,"Account is already the value of 'excluded'"); _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } bool public tradingEnabled; function enableTrading() external onlyOwner{ require(!tradingEnabled, "Trading already enabled."); tradingEnabled = true; } function _transfer(address from,address to,uint256 amount) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(tradingEnabled || _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading not yet enabled!"); if (amount == 0) { super._transfer(from, to, 0); return; } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if (canSwap && !swapping && to == uniswapV2Pair ) { swapping = true; swapAndSendMarketing(contractTokenBalance); swapping = false; } uint256 _totalFees; if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || swapping) { _totalFees = 0; } else if (from == uniswapV2Pair) { _totalFees = 0; } else if (to == uniswapV2Pair) { _totalFees = 3; } else { _totalFees = 0; } if (_totalFees > 0) { uint256 fees = (amount * _totalFees) / 100; amount = amount - fees; super._transfer(from, address(this), fees); } super._transfer(from, to, amount); } function swapAndSendMarketing(uint256 tokenAmount) private { uint256 initialBalance = address(this).balance; address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp); uint256 newBalance = address(this).balance - initialBalance; uint256 buyBack = newBalance / 2; payable(buyBackWallet).sendValue(buyBack); payable(marketingWallet).sendValue(address(this).balance - initialBalance); emit SwapAndSendMarketing(tokenAmount, newBalance); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbSend","type":"uint256"}],"name":"SwapAndSendMarketing","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":"buyBackWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040518060400160405280600781526020017f43686974434154000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f434849544341540000000000000000000000000000000000000000000000000081525081600390816200008f919062000d64565b508060049081620000a1919062000d64565b5050506000620000b66200075260201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e7919062000eb5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200024f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000275919062000eb5565b6040518363ffffffff1660e01b81526004016200029492919062000ef8565b6020604051808303816000875af1158015620002b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002da919062000eb5565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003b330600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200075a60201b60201c565b736cdc578a25d5f1ec5db6c277bcdda91e0e37e11b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737fe7077e6c42030d1397d592943b1f8ec9aa67d2600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000620004736200092b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600073407993575c91ce7643a4d4ccacc9a98c36ee1bbe73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000724620006ea6200092b60201b60201c565b620006fa6200095560201b60201c565b600a620007089190620010b5565b6298968062000718919062001106565b6200095e60201b60201c565b6113886200073762000ad660201b60201c565b62000743919062001180565b600b81905550505050620013d4565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620007cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007c3906200123f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200083e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200083590620012d7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516200091e91906200130a565b60405180910390a3505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009c79062001377565b60405180910390fd5b620009e46000838362000ae060201b60201c565b8060026000828254620009f8919062001399565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000a4f919062001399565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000ab691906200130a565b60405180910390a362000ad26000838362000ae560201b60201c565b5050565b6000600254905090565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b6c57607f821691505b60208210810362000b825762000b8162000b24565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000bec7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000bad565b62000bf8868362000bad565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000c4562000c3f62000c398462000c10565b62000c1a565b62000c10565b9050919050565b6000819050919050565b62000c618362000c24565b62000c7962000c708262000c4c565b84845462000bba565b825550505050565b600090565b62000c9062000c81565b62000c9d81848462000c56565b505050565b5b8181101562000cc55762000cb960008262000c86565b60018101905062000ca3565b5050565b601f82111562000d145762000cde8162000b88565b62000ce98462000b9d565b8101602085101562000cf9578190505b62000d1162000d088562000b9d565b83018262000ca2565b50505b505050565b600082821c905092915050565b600062000d396000198460080262000d19565b1980831691505092915050565b600062000d54838362000d26565b9150826002028217905092915050565b62000d6f8262000aea565b67ffffffffffffffff81111562000d8b5762000d8a62000af5565b5b62000d97825462000b53565b62000da482828562000cc9565b600060209050601f83116001811462000ddc576000841562000dc7578287015190505b62000dd3858262000d46565b86555062000e43565b601f19841662000dec8662000b88565b60005b8281101562000e165784890151825560018201915060208501945060208101905062000def565b8683101562000e36578489015162000e32601f89168262000d26565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e7d8262000e50565b9050919050565b62000e8f8162000e70565b811462000e9b57600080fd5b50565b60008151905062000eaf8162000e84565b92915050565b60006020828403121562000ece5762000ecd62000e4b565b5b600062000ede8482850162000e9e565b91505092915050565b62000ef28162000e70565b82525050565b600060408201905062000f0f600083018562000ee7565b62000f1e602083018462000ee7565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000fb35780860481111562000f8b5762000f8a62000f25565b5b600185161562000f9b5780820291505b808102905062000fab8562000f54565b945062000f6b565b94509492505050565b60008262000fce5760019050620010a1565b8162000fde5760009050620010a1565b816001811462000ff75760028114620010025762001038565b6001915050620010a1565b60ff84111562001017576200101662000f25565b5b8360020a91508482111562001031576200103062000f25565b5b50620010a1565b5060208310610133831016604e8410600b8410161715620010725782820a9050838111156200106c576200106b62000f25565b5b620010a1565b62001081848484600162000f61565b925090508184048111156200109b576200109a62000f25565b5b81810290505b9392505050565b600060ff82169050919050565b6000620010c28262000c10565b9150620010cf83620010a8565b9250620010fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000fbc565b905092915050565b6000620011138262000c10565b9150620011208362000c10565b9250828202620011308162000c10565b915082820484148315176200114a576200114962000f25565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200118d8262000c10565b91506200119a8362000c10565b925082620011ad57620011ac62001151565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062001227602483620011b8565b91506200123482620011c9565b604082019050919050565b600060208201905081810360008301526200125a8162001218565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000620012bf602283620011b8565b9150620012cc8262001261565b604082019050919050565b60006020820190508181036000830152620012f281620012b0565b9050919050565b620013048162000c10565b82525050565b6000602082019050620013216000830184620012f9565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200135f601f83620011b8565b91506200136c8262001327565b602082019050919050565b60006020820190508181036000830152620013928162001350565b9050919050565b6000620013a68262000c10565b9150620013b38362000c10565b9250828201905080821115620013ce57620013cd62000f25565b5b92915050565b612d6f80620013e46000396000f3fe6080604052600436106101445760003560e01c806370a08231116100b6578063a457c2d71161006f578063a457c2d71461045d578063a9059cbb1461049a578063c0246668146104d7578063dd62ed3e14610500578063e2f456051461053d578063f2fde38b146105685761014b565b806370a0823114610371578063715018a6146103ae57806375f0a874146103c55780638a8c523c146103f05780638da5cb5b1461040757806395d89b41146104325761014b565b806323b872dd1161010857806323b872dd14610239578063313ce5671461027657806339509351146102a157806349bd5a5e146102de5780634ada218b146103095780634fbee193146103345761014b565b806306fdde0314610150578063095ea7b31461017b5780631694505e146101b857806318160ddd146101e35780631cd348c01461020e5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610591565b6040516101729190611f0a565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190611fc5565b610623565b6040516101af9190612020565b60405180910390f35b3480156101c457600080fd5b506101cd610641565b6040516101da919061209a565b60405180910390f35b3480156101ef57600080fd5b506101f8610667565b60405161020591906120c4565b60405180910390f35b34801561021a57600080fd5b50610223610671565b60405161023091906120ee565b60405180910390f35b34801561024557600080fd5b50610260600480360381019061025b9190612109565b610697565b60405161026d9190612020565b60405180910390f35b34801561028257600080fd5b5061028b6107b6565b6040516102989190612178565b60405180910390f35b3480156102ad57600080fd5b506102c860048036038101906102c39190611fc5565b6107bf565b6040516102d59190612020565b60405180910390f35b3480156102ea57600080fd5b506102f361086b565b60405161030091906120ee565b60405180910390f35b34801561031557600080fd5b5061031e610891565b60405161032b9190612020565b60405180910390f35b34801561034057600080fd5b5061035b60048036038101906103569190612193565b6108a4565b6040516103689190612020565b60405180910390f35b34801561037d57600080fd5b5061039860048036038101906103939190612193565b6108fa565b6040516103a591906120c4565b60405180910390f35b3480156103ba57600080fd5b506103c3610942565b005b3480156103d157600080fd5b506103da610a9a565b6040516103e791906120ee565b60405180910390f35b3480156103fc57600080fd5b50610405610ac0565b005b34801561041357600080fd5b5061041c610bc4565b60405161042991906120ee565b60405180910390f35b34801561043e57600080fd5b50610447610bee565b6040516104549190611f0a565b60405180910390f35b34801561046957600080fd5b50610484600480360381019061047f9190611fc5565b610c80565b6040516104919190612020565b60405180910390f35b3480156104a657600080fd5b506104c160048036038101906104bc9190611fc5565b610d6b565b6040516104ce9190612020565b60405180910390f35b3480156104e357600080fd5b506104fe60048036038101906104f991906121ec565b610d89565b005b34801561050c57600080fd5b506105276004803603810190610522919061222c565b610f5b565b60405161053491906120c4565b60405180910390f35b34801561054957600080fd5b50610552610fe2565b60405161055f91906120c4565b60405180910390f35b34801561057457600080fd5b5061058f600480360381019061058a9190612193565b610fe8565b005b6060600380546105a09061229b565b80601f01602080910402602001604051908101604052809291908181526020018280546105cc9061229b565b80156106195780601f106105ee57610100808354040283529160200191610619565b820191906000526020600020905b8154815290600101906020018083116105fc57829003601f168201915b5050505050905090565b60006106376106306111ae565b84846111b6565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106e36111ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461079f578281101561078a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107819061233e565b60405180910390fd5b61079e856107966111ae565b8584036111b6565b5b6107aa85858561137f565b60019150509392505050565b60006012905090565b60006108616107cc6111ae565b8484600160006107da6111ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461085c919061238d565b6111b6565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60019054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61094a6111ae565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d09061240d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ac86111ae565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4e9061240d565b60405180910390fd5b600c60019054906101000a900460ff1615610ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9e90612479565b60405180910390fd5b6001600c60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610bfd9061229b565b80601f0160208091040260200160405190810160405280929190818152602001828054610c299061229b565b8015610c765780601f10610c4b57610100808354040283529160200191610c76565b820191906000526020600020905b815481529060010190602001808311610c5957829003601f168201915b5050505050905090565b60008060016000610c8f6111ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d439061250b565b60405180910390fd5b610d60610d576111ae565b858584036111b6565b600191505092915050565b6000610d7f610d786111ae565b848461137f565b6001905092915050565b610d916111ae565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e179061240d565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea99061259d565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610f4f9190612020565b60405180910390a25050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b610ff06111ae565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461107f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110769061240d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e59061262f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121c906126c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128b90612753565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161137291906120c4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e5906127e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361145d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145490612877565b60405180910390fd5b600c60019054906101000a900460ff16806114c15750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806115155750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154b906128e3565b60405180910390fd5b6000810361156d576115688383600061181b565b611816565b6000611578306108fa565b90506000600b54821015905080801561159e5750600c60009054906101000a900460ff16155b80156115f75750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b1561163c576001600c60006101000a81548160ff02191690831515021790555061162082611a9a565b6000600c60006101000a81548160ff0219169083151502179055505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806116df5750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806116f65750600c60009054906101000a900460ff165b1561170457600090506117c7565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361176257600090506117c6565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036117c057600390506117c5565b600090505b5b5b6000811115611807576000606482866117e09190612903565b6117ea9190612974565b905080856117f891906129a5565b945061180587308361181b565b505b61181286868661181b565b5050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361188a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611881906127e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f090612877565b60405180910390fd5b611904838383611db5565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561198a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198190612a4b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a1d919061238d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a8191906120c4565b60405180910390a3611a94848484611dba565b50505050565b60004790506000600267ffffffffffffffff811115611abc57611abb612a6b565b5b604051908082528060200260200182016040528015611aea5781602001602082028036833780820191505090505b5090503081600081518110611b0257611b01612a9a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcd9190612ade565b81600181518110611be157611be0612a9a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b8152600401611c7f959493929190612c04565b600060405180830381600087803b158015611c9957600080fd5b505af1158015611cad573d6000803e3d6000fd5b5050505060008247611cbf91906129a5565b90506000600282611cd09190612974565b9050611d1d81600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611dbf90919063ffffffff16565b50611d748447611d2d91906129a5565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611dbf90919063ffffffff16565b507f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e629998583604051611da6929190612c5e565b60405180910390a15050505050565b505050565b505050565b600081471015611e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfb90612cd3565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1683604051611e2a90612d24565b60006040518083038185875af1925050503d8060008114611e67576040519150601f19603f3d011682016040523d82523d6000602084013e611e6c565b606091505b505090508091505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611eb4578082015181840152602081019050611e99565b60008484015250505050565b6000601f19601f8301169050919050565b6000611edc82611e7a565b611ee68185611e85565b9350611ef6818560208601611e96565b611eff81611ec0565b840191505092915050565b60006020820190508181036000830152611f248184611ed1565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f5c82611f31565b9050919050565b611f6c81611f51565b8114611f7757600080fd5b50565b600081359050611f8981611f63565b92915050565b6000819050919050565b611fa281611f8f565b8114611fad57600080fd5b50565b600081359050611fbf81611f99565b92915050565b60008060408385031215611fdc57611fdb611f2c565b5b6000611fea85828601611f7a565b9250506020611ffb85828601611fb0565b9150509250929050565b60008115159050919050565b61201a81612005565b82525050565b60006020820190506120356000830184612011565b92915050565b6000819050919050565b600061206061205b61205684611f31565b61203b565b611f31565b9050919050565b600061207282612045565b9050919050565b600061208482612067565b9050919050565b61209481612079565b82525050565b60006020820190506120af600083018461208b565b92915050565b6120be81611f8f565b82525050565b60006020820190506120d960008301846120b5565b92915050565b6120e881611f51565b82525050565b600060208201905061210360008301846120df565b92915050565b60008060006060848603121561212257612121611f2c565b5b600061213086828701611f7a565b935050602061214186828701611f7a565b925050604061215286828701611fb0565b9150509250925092565b600060ff82169050919050565b6121728161215c565b82525050565b600060208201905061218d6000830184612169565b92915050565b6000602082840312156121a9576121a8611f2c565b5b60006121b784828501611f7a565b91505092915050565b6121c981612005565b81146121d457600080fd5b50565b6000813590506121e6816121c0565b92915050565b6000806040838503121561220357612202611f2c565b5b600061221185828601611f7a565b9250506020612222858286016121d7565b9150509250929050565b6000806040838503121561224357612242611f2c565b5b600061225185828601611f7a565b925050602061226285828601611f7a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806122b357607f821691505b6020821081036122c6576122c561226c565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612328602883611e85565b9150612333826122cc565b604082019050919050565b600060208201905081810360008301526123578161231b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061239882611f8f565b91506123a383611f8f565b92508282019050808211156123bb576123ba61235e565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006123f7602083611e85565b9150612402826123c1565b602082019050919050565b60006020820190508181036000830152612426816123ea565b9050919050565b7f54726164696e6720616c726561647920656e61626c65642e0000000000000000600082015250565b6000612463601883611e85565b915061246e8261242d565b602082019050919050565b6000602082019050818103600083015261249281612456565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006124f5602583611e85565b915061250082612499565b604082019050919050565b60006020820190508181036000830152612524816124e8565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000612587602a83611e85565b91506125928261252b565b604082019050919050565b600060208201905081810360008301526125b68161257a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612619602683611e85565b9150612624826125bd565b604082019050919050565b600060208201905081810360008301526126488161260c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006126ab602483611e85565b91506126b68261264f565b604082019050919050565b600060208201905081810360008301526126da8161269e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061273d602283611e85565b9150612748826126e1565b604082019050919050565b6000602082019050818103600083015261276c81612730565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006127cf602583611e85565b91506127da82612773565b604082019050919050565b600060208201905081810360008301526127fe816127c2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612861602383611e85565b915061286c82612805565b604082019050919050565b6000602082019050818103600083015261289081612854565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b60006128cd601883611e85565b91506128d882612897565b602082019050919050565b600060208201905081810360008301526128fc816128c0565b9050919050565b600061290e82611f8f565b915061291983611f8f565b925082820261292781611f8f565b9150828204841483151761293e5761293d61235e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061297f82611f8f565b915061298a83611f8f565b92508261299a57612999612945565b5b828204905092915050565b60006129b082611f8f565b91506129bb83611f8f565b92508282039050818111156129d3576129d261235e565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612a35602683611e85565b9150612a40826129d9565b604082019050919050565b60006020820190508181036000830152612a6481612a28565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612ad881611f63565b92915050565b600060208284031215612af457612af3611f2c565b5b6000612b0284828501612ac9565b91505092915050565b6000819050919050565b6000612b30612b2b612b2684612b0b565b61203b565b611f8f565b9050919050565b612b4081612b15565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612b7b81611f51565b82525050565b6000612b8d8383612b72565b60208301905092915050565b6000602082019050919050565b6000612bb182612b46565b612bbb8185612b51565b9350612bc683612b62565b8060005b83811015612bf7578151612bde8882612b81565b9750612be983612b99565b925050600181019050612bca565b5085935050505092915050565b600060a082019050612c1960008301886120b5565b612c266020830187612b37565b8181036040830152612c388186612ba6565b9050612c4760608301856120df565b612c5460808301846120b5565b9695505050505050565b6000604082019050612c7360008301856120b5565b612c8060208301846120b5565b9392505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000612cbd601d83611e85565b9150612cc882612c87565b602082019050919050565b60006020820190508181036000830152612cec81612cb0565b9050919050565b600081905092915050565b50565b6000612d0e600083612cf3565b9150612d1982612cfe565b600082019050919050565b6000612d2f82612d01565b915081905091905056fea2646970667358221220b1024fa36cd4718e7c1015b7b138833e7903374da962789e76201073c7dfaed464736f6c63430008110033
Deployed Bytecode
0x6080604052600436106101445760003560e01c806370a08231116100b6578063a457c2d71161006f578063a457c2d71461045d578063a9059cbb1461049a578063c0246668146104d7578063dd62ed3e14610500578063e2f456051461053d578063f2fde38b146105685761014b565b806370a0823114610371578063715018a6146103ae57806375f0a874146103c55780638a8c523c146103f05780638da5cb5b1461040757806395d89b41146104325761014b565b806323b872dd1161010857806323b872dd14610239578063313ce5671461027657806339509351146102a157806349bd5a5e146102de5780634ada218b146103095780634fbee193146103345761014b565b806306fdde0314610150578063095ea7b31461017b5780631694505e146101b857806318160ddd146101e35780631cd348c01461020e5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610591565b6040516101729190611f0a565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190611fc5565b610623565b6040516101af9190612020565b60405180910390f35b3480156101c457600080fd5b506101cd610641565b6040516101da919061209a565b60405180910390f35b3480156101ef57600080fd5b506101f8610667565b60405161020591906120c4565b60405180910390f35b34801561021a57600080fd5b50610223610671565b60405161023091906120ee565b60405180910390f35b34801561024557600080fd5b50610260600480360381019061025b9190612109565b610697565b60405161026d9190612020565b60405180910390f35b34801561028257600080fd5b5061028b6107b6565b6040516102989190612178565b60405180910390f35b3480156102ad57600080fd5b506102c860048036038101906102c39190611fc5565b6107bf565b6040516102d59190612020565b60405180910390f35b3480156102ea57600080fd5b506102f361086b565b60405161030091906120ee565b60405180910390f35b34801561031557600080fd5b5061031e610891565b60405161032b9190612020565b60405180910390f35b34801561034057600080fd5b5061035b60048036038101906103569190612193565b6108a4565b6040516103689190612020565b60405180910390f35b34801561037d57600080fd5b5061039860048036038101906103939190612193565b6108fa565b6040516103a591906120c4565b60405180910390f35b3480156103ba57600080fd5b506103c3610942565b005b3480156103d157600080fd5b506103da610a9a565b6040516103e791906120ee565b60405180910390f35b3480156103fc57600080fd5b50610405610ac0565b005b34801561041357600080fd5b5061041c610bc4565b60405161042991906120ee565b60405180910390f35b34801561043e57600080fd5b50610447610bee565b6040516104549190611f0a565b60405180910390f35b34801561046957600080fd5b50610484600480360381019061047f9190611fc5565b610c80565b6040516104919190612020565b60405180910390f35b3480156104a657600080fd5b506104c160048036038101906104bc9190611fc5565b610d6b565b6040516104ce9190612020565b60405180910390f35b3480156104e357600080fd5b506104fe60048036038101906104f991906121ec565b610d89565b005b34801561050c57600080fd5b506105276004803603810190610522919061222c565b610f5b565b60405161053491906120c4565b60405180910390f35b34801561054957600080fd5b50610552610fe2565b60405161055f91906120c4565b60405180910390f35b34801561057457600080fd5b5061058f600480360381019061058a9190612193565b610fe8565b005b6060600380546105a09061229b565b80601f01602080910402602001604051908101604052809291908181526020018280546105cc9061229b565b80156106195780601f106105ee57610100808354040283529160200191610619565b820191906000526020600020905b8154815290600101906020018083116105fc57829003601f168201915b5050505050905090565b60006106376106306111ae565b84846111b6565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106e36111ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461079f578281101561078a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107819061233e565b60405180910390fd5b61079e856107966111ae565b8584036111b6565b5b6107aa85858561137f565b60019150509392505050565b60006012905090565b60006108616107cc6111ae565b8484600160006107da6111ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461085c919061238d565b6111b6565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60019054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61094a6111ae565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d09061240d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ac86111ae565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4e9061240d565b60405180910390fd5b600c60019054906101000a900460ff1615610ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9e90612479565b60405180910390fd5b6001600c60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610bfd9061229b565b80601f0160208091040260200160405190810160405280929190818152602001828054610c299061229b565b8015610c765780601f10610c4b57610100808354040283529160200191610c76565b820191906000526020600020905b815481529060010190602001808311610c5957829003601f168201915b5050505050905090565b60008060016000610c8f6111ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d439061250b565b60405180910390fd5b610d60610d576111ae565b858584036111b6565b600191505092915050565b6000610d7f610d786111ae565b848461137f565b6001905092915050565b610d916111ae565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e179061240d565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea99061259d565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610f4f9190612020565b60405180910390a25050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b610ff06111ae565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461107f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110769061240d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e59061262f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121c906126c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128b90612753565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161137291906120c4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e5906127e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361145d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145490612877565b60405180910390fd5b600c60019054906101000a900460ff16806114c15750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806115155750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154b906128e3565b60405180910390fd5b6000810361156d576115688383600061181b565b611816565b6000611578306108fa565b90506000600b54821015905080801561159e5750600c60009054906101000a900460ff16155b80156115f75750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b1561163c576001600c60006101000a81548160ff02191690831515021790555061162082611a9a565b6000600c60006101000a81548160ff0219169083151502179055505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806116df5750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806116f65750600c60009054906101000a900460ff165b1561170457600090506117c7565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361176257600090506117c6565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036117c057600390506117c5565b600090505b5b5b6000811115611807576000606482866117e09190612903565b6117ea9190612974565b905080856117f891906129a5565b945061180587308361181b565b505b61181286868661181b565b5050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361188a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611881906127e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f090612877565b60405180910390fd5b611904838383611db5565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561198a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198190612a4b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a1d919061238d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a8191906120c4565b60405180910390a3611a94848484611dba565b50505050565b60004790506000600267ffffffffffffffff811115611abc57611abb612a6b565b5b604051908082528060200260200182016040528015611aea5781602001602082028036833780820191505090505b5090503081600081518110611b0257611b01612a9a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcd9190612ade565b81600181518110611be157611be0612a9a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b8152600401611c7f959493929190612c04565b600060405180830381600087803b158015611c9957600080fd5b505af1158015611cad573d6000803e3d6000fd5b5050505060008247611cbf91906129a5565b90506000600282611cd09190612974565b9050611d1d81600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611dbf90919063ffffffff16565b50611d748447611d2d91906129a5565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611dbf90919063ffffffff16565b507f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e629998583604051611da6929190612c5e565b60405180910390a15050505050565b505050565b505050565b600081471015611e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfb90612cd3565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1683604051611e2a90612d24565b60006040518083038185875af1925050503d8060008114611e67576040519150601f19603f3d011682016040523d82523d6000602084013e611e6c565b606091505b505090508091505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611eb4578082015181840152602081019050611e99565b60008484015250505050565b6000601f19601f8301169050919050565b6000611edc82611e7a565b611ee68185611e85565b9350611ef6818560208601611e96565b611eff81611ec0565b840191505092915050565b60006020820190508181036000830152611f248184611ed1565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f5c82611f31565b9050919050565b611f6c81611f51565b8114611f7757600080fd5b50565b600081359050611f8981611f63565b92915050565b6000819050919050565b611fa281611f8f565b8114611fad57600080fd5b50565b600081359050611fbf81611f99565b92915050565b60008060408385031215611fdc57611fdb611f2c565b5b6000611fea85828601611f7a565b9250506020611ffb85828601611fb0565b9150509250929050565b60008115159050919050565b61201a81612005565b82525050565b60006020820190506120356000830184612011565b92915050565b6000819050919050565b600061206061205b61205684611f31565b61203b565b611f31565b9050919050565b600061207282612045565b9050919050565b600061208482612067565b9050919050565b61209481612079565b82525050565b60006020820190506120af600083018461208b565b92915050565b6120be81611f8f565b82525050565b60006020820190506120d960008301846120b5565b92915050565b6120e881611f51565b82525050565b600060208201905061210360008301846120df565b92915050565b60008060006060848603121561212257612121611f2c565b5b600061213086828701611f7a565b935050602061214186828701611f7a565b925050604061215286828701611fb0565b9150509250925092565b600060ff82169050919050565b6121728161215c565b82525050565b600060208201905061218d6000830184612169565b92915050565b6000602082840312156121a9576121a8611f2c565b5b60006121b784828501611f7a565b91505092915050565b6121c981612005565b81146121d457600080fd5b50565b6000813590506121e6816121c0565b92915050565b6000806040838503121561220357612202611f2c565b5b600061221185828601611f7a565b9250506020612222858286016121d7565b9150509250929050565b6000806040838503121561224357612242611f2c565b5b600061225185828601611f7a565b925050602061226285828601611f7a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806122b357607f821691505b6020821081036122c6576122c561226c565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612328602883611e85565b9150612333826122cc565b604082019050919050565b600060208201905081810360008301526123578161231b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061239882611f8f565b91506123a383611f8f565b92508282019050808211156123bb576123ba61235e565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006123f7602083611e85565b9150612402826123c1565b602082019050919050565b60006020820190508181036000830152612426816123ea565b9050919050565b7f54726164696e6720616c726561647920656e61626c65642e0000000000000000600082015250565b6000612463601883611e85565b915061246e8261242d565b602082019050919050565b6000602082019050818103600083015261249281612456565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006124f5602583611e85565b915061250082612499565b604082019050919050565b60006020820190508181036000830152612524816124e8565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000612587602a83611e85565b91506125928261252b565b604082019050919050565b600060208201905081810360008301526125b68161257a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612619602683611e85565b9150612624826125bd565b604082019050919050565b600060208201905081810360008301526126488161260c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006126ab602483611e85565b91506126b68261264f565b604082019050919050565b600060208201905081810360008301526126da8161269e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061273d602283611e85565b9150612748826126e1565b604082019050919050565b6000602082019050818103600083015261276c81612730565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006127cf602583611e85565b91506127da82612773565b604082019050919050565b600060208201905081810360008301526127fe816127c2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612861602383611e85565b915061286c82612805565b604082019050919050565b6000602082019050818103600083015261289081612854565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b60006128cd601883611e85565b91506128d882612897565b602082019050919050565b600060208201905081810360008301526128fc816128c0565b9050919050565b600061290e82611f8f565b915061291983611f8f565b925082820261292781611f8f565b9150828204841483151761293e5761293d61235e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061297f82611f8f565b915061298a83611f8f565b92508261299a57612999612945565b5b828204905092915050565b60006129b082611f8f565b91506129bb83611f8f565b92508282039050818111156129d3576129d261235e565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612a35602683611e85565b9150612a40826129d9565b604082019050919050565b60006020820190508181036000830152612a6481612a28565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612ad881611f63565b92915050565b600060208284031215612af457612af3611f2c565b5b6000612b0284828501612ac9565b91505092915050565b6000819050919050565b6000612b30612b2b612b2684612b0b565b61203b565b611f8f565b9050919050565b612b4081612b15565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612b7b81611f51565b82525050565b6000612b8d8383612b72565b60208301905092915050565b6000602082019050919050565b6000612bb182612b46565b612bbb8185612b51565b9350612bc683612b62565b8060005b83811015612bf7578151612bde8882612b81565b9750612be983612b99565b925050600181019050612bca565b5085935050505092915050565b600060a082019050612c1960008301886120b5565b612c266020830187612b37565b8181036040830152612c388186612ba6565b9050612c4760608301856120df565b612c5460808301846120b5565b9695505050505050565b6000604082019050612c7360008301856120b5565b612c8060208301846120b5565b9392505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000612cbd601d83611e85565b9150612cc882612c87565b602082019050919050565b60006020820190508181036000830152612cec81612cb0565b9050919050565b600081905092915050565b50565b6000612d0e600083612cf3565b9150612d1982612cfe565b600082019050919050565b6000612d2f82612d01565b915081905091905056fea2646970667358221220b1024fa36cd4718e7c1015b7b138833e7903374da962789e76201073c7dfaed464736f6c63430008110033
Deployed Bytecode Sourcemap
19611:4521:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14896:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15810:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19695:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15217:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19881:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15987:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15116:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16568:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19743:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21738:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21605:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15333:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14083:148;;;;;;;;;;;;;:::i;:::-;;19843:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21773:146;;;;;;;;;;;;;:::i;:::-;;13869:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15004:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16791:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15468:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21307:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15651:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19919:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14239:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14896:100;14950:13;14983:5;14976:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14896:100;:::o;15810:169::-;15893:4;15910:39;15919:12;:10;:12::i;:::-;15933:7;15942:6;15910:8;:39::i;:::-;15967:4;15960:11;;15810:169;;;;:::o;19695:41::-;;;;;;;;;;;;;:::o;15217:108::-;15278:7;15305:12;;15298:19;;15217:108;:::o;19881:29::-;;;;;;;;;;;;;:::o;15987:573::-;16127:4;16144:24;16171:11;:19;16183:6;16171:19;;;;;;;;;;;;;;;:33;16191:12;:10;:12::i;:::-;16171:33;;;;;;;;;;;;;;;;16144:60;;16239:17;16219:16;:37;16215:265;;16301:6;16281:16;:26;;16273:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;16396:57;16405:6;16413:12;:10;:12::i;:::-;16446:6;16427:16;:25;16396:8;:57::i;:::-;16215:265;16492:36;16502:6;16510:9;16521:6;16492:9;:36::i;:::-;16548:4;16541:11;;;15987:573;;;;;:::o;15116:93::-;15174:5;15199:2;15192:9;;15116:93;:::o;16568:215::-;16656:4;16673:80;16682:12;:10;:12::i;:::-;16696:7;16742:10;16705:11;:25;16717:12;:10;:12::i;:::-;16705:25;;;;;;;;;;;;;;;:34;16731:7;16705:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;16673:8;:80::i;:::-;16771:4;16764:11;;16568:215;;;;:::o;19743:29::-;;;;;;;;;;;;;:::o;21738:26::-;;;;;;;;;;;;;:::o;21605:125::-;21670:4;21694:19;:28;21714:7;21694:28;;;;;;;;;;;;;;;;;;;;;;;;;21687:35;;21605:125;;;:::o;15333:127::-;15407:7;15434:9;:18;15444:7;15434:18;;;;;;;;;;;;;;;;15427:25;;15333:127;;;:::o;14083:148::-;14006:12;:10;:12::i;:::-;13996:22;;:6;;;;;;;;;;;:22;;;13988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14190:1:::1;14153:40;;14174:6;;;;;;;;;;;14153:40;;;;;;;;;;;;14221:1;14204:6;;:19;;;;;;;;;;;;;;;;;;14083:148::o:0;19843:31::-;;;;;;;;;;;;;:::o;21773:146::-;14006:12;:10;:12::i;:::-;13996:22;;:6;;;;;;;;;;;:22;;;13988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21836:14:::1;;;;;;;;;;;21835:15;21827:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;21907:4;21890:14;;:21;;;;;;;;;;;;;;;;;;21773:146::o:0;13869:79::-;13907:7;13934:6;;;;;;;;;;;13927:13;;13869:79;:::o;15004:104::-;15060:13;15093:7;15086:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15004:104;:::o;16791:413::-;16884:4;16901:24;16928:11;:25;16940:12;:10;:12::i;:::-;16928:25;;;;;;;;;;;;;;;:34;16954:7;16928:34;;;;;;;;;;;;;;;;16901:61;;17001:15;16981:16;:35;;16973:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;17094:67;17103:12;:10;:12::i;:::-;17117:7;17145:15;17126:16;:34;17094:8;:67::i;:::-;17192:4;17185:11;;;16791:413;;;;:::o;15468:175::-;15554:4;15571:42;15581:12;:10;:12::i;:::-;15595:9;15606:6;15571:9;:42::i;:::-;15631:4;15624:11;;15468:175;;;;:::o;21307:290::-;14006:12;:10;:12::i;:::-;13996:22;;:6;;;;;;;;;;;:22;;;13988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21433:8:::1;21401:40;;:19;:28;21421:7;21401:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;::::0;21393:94:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21529:8;21498:19;:28;21518:7;21498:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21571:7;21555:34;;;21580:8;21555:34;;;;;;:::i;:::-;;;;;;;;21307:290:::0;;:::o;15651:151::-;15740:7;15767:11;:18;15779:5;15767:18;;;;;;;;;;;;;;;:27;15786:7;15767:27;;;;;;;;;;;;;;;;15760:34;;15651:151;;;;:::o;19919:34::-;;;;:::o;14239:244::-;14006:12;:10;:12::i;:::-;13996:22;;:6;;;;;;;;;;;:22;;;13988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14348:1:::1;14328:22;;:8;:22;;::::0;14320:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14438:8;14409:38;;14430:6;;;;;;;;;;;14409:38;;;;;;;;;;;;14467:8;14458:6;;:17;;;;;;;;;;;;;;;;;;14239:244:::0;:::o;13192:98::-;13245:7;13272:10;13265:17;;13192:98;:::o;18959:380::-;19112:1;19095:19;;:5;:19;;;19087:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19193:1;19174:21;;:7;:21;;;19166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19277:6;19247:11;:18;19259:5;19247:18;;;;;;;;;;;;;;;:27;19266:7;19247:27;;;;;;;;;;;;;;;:36;;;;19315:7;19299:32;;19308:5;19299:32;;;19324:6;19299:32;;;;;;:::i;:::-;;;;;;;;18959:380;;;:::o;21927:1424::-;22040:1;22024:18;;:4;:18;;;22016:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22117:1;22103:16;;:2;:16;;;22095:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22178:14;;;;;;;;;;;:43;;;;22196:19;:25;22216:4;22196:25;;;;;;;;;;;;;;;;;;;;;;;;;22178:43;:70;;;;22225:19;:23;22245:2;22225:23;;;;;;;;;;;;;;;;;;;;;;;;;22178:70;22170:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;22311:1;22301:6;:11;22297:93;;22329:28;22345:4;22351:2;22355:1;22329:15;:28::i;:::-;22372:7;;22297:93;22396:28;22427:24;22445:4;22427:9;:24::i;:::-;22396:55;;22464:12;22503:18;;22479:20;:42;;22464:57;;22538:7;:33;;;;;22563:8;;;;;;;;;;;22562:9;22538:33;:69;;;;;22594:13;;;;;;;;;;;22588:19;;:2;:19;;;22538:69;22534:224;;;22645:4;22634:8;;:15;;;;;;;;;;;;;;;;;;22666:42;22687:20;22666;:42::i;:::-;22741:5;22730:8;;:16;;;;;;;;;;;;;;;;;;22534:224;22770:18;22803:19;:25;22823:4;22803:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;22832:19;:23;22852:2;22832:23;;;;;;;;;;;;;;;;;;;;;;;;;22803:52;:64;;;;22859:8;;;;;;;;;;;22803:64;22799:304;;;22897:1;22884:14;;22799:304;;;22928:13;;;;;;;;;;;22920:21;;:4;:21;;;22916:187;;22971:1;22958:14;;22916:187;;;23000:13;;;;;;;;;;;22994:19;;:2;:19;;;22990:113;;23043:1;23030:14;;22990:113;;;23090:1;23077:14;;22990:113;22916:187;22799:304;23132:1;23119:10;:14;23115:183;;;23150:12;23189:3;23175:10;23166:6;:19;;;;:::i;:::-;23165:27;;;;:::i;:::-;23150:42;;23225:4;23216:6;:13;;;;:::i;:::-;23207:22;;23244:42;23260:4;23274;23281;23244:15;:42::i;:::-;23135:163;23115:183;23310:33;23326:4;23332:2;23336:6;23310:15;:33::i;:::-;22005:1346;;;21927:1424;;;;:::o;17212:733::-;17370:1;17352:20;;:6;:20;;;17344:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;17454:1;17433:23;;:9;:23;;;17425:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17509:47;17530:6;17538:9;17549:6;17509:20;:47::i;:::-;17569:21;17593:9;:17;17603:6;17593:17;;;;;;;;;;;;;;;;17569:41;;17646:6;17629:13;:23;;17621:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;17767:6;17751:13;:22;17731:9;:17;17741:6;17731:17;;;;;;;;;;;;;;;:42;;;;17819:6;17795:9;:20;17805:9;17795:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;17860:9;17843:35;;17852:6;17843:35;;;17871:6;17843:35;;;;;;:::i;:::-;;;;;;;;17891:46;17911:6;17919:9;17930:6;17891:19;:46::i;:::-;17333:612;17212:733;;;:::o;23359:770::-;23429:22;23454:21;23429:46;;23488:21;23526:1;23512:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23488:40;;23557:4;23539;23544:1;23539:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23583:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23573:4;23578:1;23573:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;23618:15;;;;;;;;;;;:66;;;23699:11;23725:1;23741:4;23768;23788:15;23618:186;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23817:18;23862:14;23838:21;:38;;;;:::i;:::-;23817:59;;23887:15;23918:1;23905:10;:14;;;;:::i;:::-;23887:32;;23932:41;23965:7;23940:13;;;;;;;;;;;23932:32;;;;:41;;;;:::i;:::-;;23984:74;24043:14;24019:21;:38;;;;:::i;:::-;23992:15;;;;;;;;;;;23984:34;;;;:74;;;;:::i;:::-;;24076:45;24097:11;24110:10;24076:45;;;;;;;:::i;:::-;;;;;;;;23418:711;;;;23359:770;:::o;19347:125::-;;;;:::o;19480:124::-;;;;:::o;9102:266::-;9181:4;9230:6;9205:21;:31;;9197:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9284:12;9302:9;:14;;9324:6;9302:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9283:52;;;9353:7;9346:14;;;9102:266;;;;:::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:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:118::-;4858:24;4876:5;4858:24;:::i;:::-;4853:3;4846:37;4771:118;;:::o;4895:222::-;4988:4;5026:2;5015:9;5011:18;5003:26;;5039:71;5107:1;5096:9;5092:17;5083:6;5039:71;:::i;:::-;4895:222;;;;:::o;5123:619::-;5200:6;5208;5216;5265:2;5253:9;5244:7;5240:23;5236:32;5233:119;;;5271:79;;:::i;:::-;5233:119;5391:1;5416:53;5461:7;5452:6;5441:9;5437:22;5416:53;:::i;:::-;5406:63;;5362:117;5518:2;5544:53;5589:7;5580:6;5569:9;5565:22;5544:53;:::i;:::-;5534:63;;5489:118;5646:2;5672:53;5717:7;5708:6;5697:9;5693:22;5672:53;:::i;:::-;5662:63;;5617:118;5123:619;;;;;:::o;5748:86::-;5783:7;5823:4;5816:5;5812:16;5801:27;;5748:86;;;:::o;5840:112::-;5923:22;5939:5;5923:22;:::i;:::-;5918:3;5911:35;5840:112;;:::o;5958:214::-;6047:4;6085:2;6074:9;6070:18;6062:26;;6098:67;6162:1;6151:9;6147:17;6138:6;6098:67;:::i;:::-;5958:214;;;;:::o;6178:329::-;6237:6;6286:2;6274:9;6265:7;6261:23;6257:32;6254:119;;;6292:79;;:::i;:::-;6254:119;6412:1;6437:53;6482:7;6473:6;6462:9;6458:22;6437:53;:::i;:::-;6427:63;;6383:117;6178:329;;;;:::o;6513:116::-;6583:21;6598:5;6583:21;:::i;:::-;6576:5;6573:32;6563:60;;6619:1;6616;6609:12;6563:60;6513:116;:::o;6635:133::-;6678:5;6716:6;6703:20;6694:29;;6732:30;6756:5;6732:30;:::i;:::-;6635:133;;;;:::o;6774:468::-;6839:6;6847;6896:2;6884:9;6875:7;6871:23;6867:32;6864:119;;;6902:79;;:::i;:::-;6864:119;7022:1;7047:53;7092:7;7083:6;7072:9;7068:22;7047:53;:::i;:::-;7037:63;;6993:117;7149:2;7175:50;7217:7;7208:6;7197:9;7193:22;7175:50;:::i;:::-;7165:60;;7120:115;6774:468;;;;;:::o;7248:474::-;7316:6;7324;7373:2;7361:9;7352:7;7348:23;7344:32;7341:119;;;7379:79;;:::i;:::-;7341:119;7499:1;7524:53;7569:7;7560:6;7549:9;7545:22;7524:53;:::i;:::-;7514:63;;7470:117;7626:2;7652:53;7697:7;7688:6;7677:9;7673:22;7652:53;:::i;:::-;7642:63;;7597:118;7248:474;;;;;:::o;7728:180::-;7776:77;7773:1;7766:88;7873:4;7870:1;7863:15;7897:4;7894:1;7887:15;7914:320;7958:6;7995:1;7989:4;7985:12;7975:22;;8042:1;8036:4;8032:12;8063:18;8053:81;;8119:4;8111:6;8107:17;8097:27;;8053:81;8181:2;8173:6;8170:14;8150:18;8147:38;8144:84;;8200:18;;:::i;:::-;8144:84;7965:269;7914:320;;;:::o;8240:227::-;8380:34;8376:1;8368:6;8364:14;8357:58;8449:10;8444:2;8436:6;8432:15;8425:35;8240:227;:::o;8473:366::-;8615:3;8636:67;8700:2;8695:3;8636:67;:::i;:::-;8629:74;;8712:93;8801:3;8712:93;:::i;:::-;8830:2;8825:3;8821:12;8814:19;;8473:366;;;:::o;8845:419::-;9011:4;9049:2;9038:9;9034:18;9026:26;;9098:9;9092:4;9088:20;9084:1;9073:9;9069:17;9062:47;9126:131;9252:4;9126:131;:::i;:::-;9118:139;;8845:419;;;:::o;9270:180::-;9318:77;9315:1;9308:88;9415:4;9412:1;9405:15;9439:4;9436:1;9429:15;9456:191;9496:3;9515:20;9533:1;9515:20;:::i;:::-;9510:25;;9549:20;9567:1;9549:20;:::i;:::-;9544:25;;9592:1;9589;9585:9;9578:16;;9613:3;9610:1;9607:10;9604:36;;;9620:18;;:::i;:::-;9604:36;9456:191;;;;:::o;9653:182::-;9793:34;9789:1;9781:6;9777:14;9770:58;9653:182;:::o;9841:366::-;9983:3;10004:67;10068:2;10063:3;10004:67;:::i;:::-;9997:74;;10080:93;10169:3;10080:93;:::i;:::-;10198:2;10193:3;10189:12;10182:19;;9841:366;;;:::o;10213:419::-;10379:4;10417:2;10406:9;10402:18;10394:26;;10466:9;10460:4;10456:20;10452:1;10441:9;10437:17;10430:47;10494:131;10620:4;10494:131;:::i;:::-;10486:139;;10213:419;;;:::o;10638:174::-;10778:26;10774:1;10766:6;10762:14;10755:50;10638:174;:::o;10818:366::-;10960:3;10981:67;11045:2;11040:3;10981:67;:::i;:::-;10974:74;;11057:93;11146:3;11057:93;:::i;:::-;11175:2;11170:3;11166:12;11159:19;;10818:366;;;:::o;11190:419::-;11356:4;11394:2;11383:9;11379:18;11371:26;;11443:9;11437:4;11433:20;11429:1;11418:9;11414:17;11407:47;11471:131;11597:4;11471:131;:::i;:::-;11463:139;;11190:419;;;:::o;11615:224::-;11755:34;11751:1;11743:6;11739:14;11732:58;11824:7;11819:2;11811:6;11807:15;11800:32;11615:224;:::o;11845:366::-;11987:3;12008:67;12072:2;12067:3;12008:67;:::i;:::-;12001:74;;12084:93;12173:3;12084:93;:::i;:::-;12202:2;12197:3;12193:12;12186:19;;11845:366;;;:::o;12217:419::-;12383:4;12421:2;12410:9;12406:18;12398:26;;12470:9;12464:4;12460:20;12456:1;12445:9;12441:17;12434:47;12498:131;12624:4;12498:131;:::i;:::-;12490:139;;12217:419;;;:::o;12642:229::-;12782:34;12778:1;12770:6;12766:14;12759:58;12851:12;12846:2;12838:6;12834:15;12827:37;12642:229;:::o;12877:366::-;13019:3;13040:67;13104:2;13099:3;13040:67;:::i;:::-;13033:74;;13116:93;13205:3;13116:93;:::i;:::-;13234:2;13229:3;13225:12;13218:19;;12877:366;;;:::o;13249:419::-;13415:4;13453:2;13442:9;13438:18;13430:26;;13502:9;13496:4;13492:20;13488:1;13477:9;13473:17;13466:47;13530:131;13656:4;13530:131;:::i;:::-;13522:139;;13249:419;;;:::o;13674:225::-;13814:34;13810:1;13802:6;13798:14;13791:58;13883:8;13878:2;13870:6;13866:15;13859:33;13674:225;:::o;13905:366::-;14047:3;14068:67;14132:2;14127:3;14068:67;:::i;:::-;14061:74;;14144:93;14233:3;14144:93;:::i;:::-;14262:2;14257:3;14253:12;14246:19;;13905:366;;;:::o;14277:419::-;14443:4;14481:2;14470:9;14466:18;14458:26;;14530:9;14524:4;14520:20;14516:1;14505:9;14501:17;14494:47;14558:131;14684:4;14558:131;:::i;:::-;14550:139;;14277:419;;;:::o;14702:223::-;14842:34;14838:1;14830:6;14826:14;14819:58;14911:6;14906:2;14898:6;14894:15;14887:31;14702:223;:::o;14931:366::-;15073:3;15094:67;15158:2;15153:3;15094:67;:::i;:::-;15087:74;;15170:93;15259:3;15170:93;:::i;:::-;15288:2;15283:3;15279:12;15272:19;;14931:366;;;:::o;15303:419::-;15469:4;15507:2;15496:9;15492:18;15484:26;;15556:9;15550:4;15546:20;15542:1;15531:9;15527:17;15520:47;15584:131;15710:4;15584:131;:::i;:::-;15576:139;;15303:419;;;:::o;15728:221::-;15868:34;15864:1;15856:6;15852:14;15845:58;15937:4;15932:2;15924:6;15920:15;15913:29;15728:221;:::o;15955:366::-;16097:3;16118:67;16182:2;16177:3;16118:67;:::i;:::-;16111:74;;16194:93;16283:3;16194:93;:::i;:::-;16312:2;16307:3;16303:12;16296:19;;15955:366;;;:::o;16327:419::-;16493:4;16531:2;16520:9;16516:18;16508:26;;16580:9;16574:4;16570:20;16566:1;16555:9;16551:17;16544:47;16608:131;16734:4;16608:131;:::i;:::-;16600:139;;16327:419;;;:::o;16752:224::-;16892:34;16888:1;16880:6;16876:14;16869:58;16961:7;16956:2;16948:6;16944:15;16937:32;16752:224;:::o;16982:366::-;17124:3;17145:67;17209:2;17204:3;17145:67;:::i;:::-;17138:74;;17221:93;17310:3;17221:93;:::i;:::-;17339:2;17334:3;17330:12;17323:19;;16982:366;;;:::o;17354:419::-;17520:4;17558:2;17547:9;17543:18;17535:26;;17607:9;17601:4;17597:20;17593:1;17582:9;17578:17;17571:47;17635:131;17761:4;17635:131;:::i;:::-;17627:139;;17354:419;;;:::o;17779:222::-;17919:34;17915:1;17907:6;17903:14;17896:58;17988:5;17983:2;17975:6;17971:15;17964:30;17779:222;:::o;18007:366::-;18149:3;18170:67;18234:2;18229:3;18170:67;:::i;:::-;18163:74;;18246:93;18335:3;18246:93;:::i;:::-;18364:2;18359:3;18355:12;18348:19;;18007:366;;;:::o;18379:419::-;18545:4;18583:2;18572:9;18568:18;18560:26;;18632:9;18626:4;18622:20;18618:1;18607:9;18603:17;18596:47;18660:131;18786:4;18660:131;:::i;:::-;18652:139;;18379:419;;;:::o;18804:174::-;18944:26;18940:1;18932:6;18928:14;18921:50;18804:174;:::o;18984:366::-;19126:3;19147:67;19211:2;19206:3;19147:67;:::i;:::-;19140:74;;19223:93;19312:3;19223:93;:::i;:::-;19341:2;19336:3;19332:12;19325:19;;18984:366;;;:::o;19356:419::-;19522:4;19560:2;19549:9;19545:18;19537:26;;19609:9;19603:4;19599:20;19595:1;19584:9;19580:17;19573:47;19637:131;19763:4;19637:131;:::i;:::-;19629:139;;19356:419;;;:::o;19781:410::-;19821:7;19844:20;19862:1;19844:20;:::i;:::-;19839:25;;19878:20;19896:1;19878:20;:::i;:::-;19873:25;;19933:1;19930;19926:9;19955:30;19973:11;19955:30;:::i;:::-;19944:41;;20134:1;20125:7;20121:15;20118:1;20115:22;20095:1;20088:9;20068:83;20045:139;;20164:18;;:::i;:::-;20045:139;19829:362;19781:410;;;;:::o;20197:180::-;20245:77;20242:1;20235:88;20342:4;20339:1;20332:15;20366:4;20363:1;20356:15;20383:185;20423:1;20440:20;20458:1;20440:20;:::i;:::-;20435:25;;20474:20;20492:1;20474:20;:::i;:::-;20469:25;;20513:1;20503:35;;20518:18;;:::i;:::-;20503:35;20560:1;20557;20553:9;20548:14;;20383:185;;;;:::o;20574:194::-;20614:4;20634:20;20652:1;20634:20;:::i;:::-;20629:25;;20668:20;20686:1;20668:20;:::i;:::-;20663:25;;20712:1;20709;20705:9;20697:17;;20736:1;20730:4;20727:11;20724:37;;;20741:18;;:::i;:::-;20724:37;20574:194;;;;:::o;20774:225::-;20914:34;20910:1;20902:6;20898:14;20891:58;20983:8;20978:2;20970:6;20966:15;20959:33;20774:225;:::o;21005:366::-;21147:3;21168:67;21232:2;21227:3;21168:67;:::i;:::-;21161:74;;21244:93;21333:3;21244:93;:::i;:::-;21362:2;21357:3;21353:12;21346:19;;21005:366;;;:::o;21377:419::-;21543:4;21581:2;21570:9;21566:18;21558:26;;21630:9;21624:4;21620:20;21616:1;21605:9;21601:17;21594:47;21658:131;21784:4;21658:131;:::i;:::-;21650:139;;21377:419;;;:::o;21802:180::-;21850:77;21847:1;21840:88;21947:4;21944:1;21937:15;21971:4;21968:1;21961:15;21988:180;22036:77;22033:1;22026:88;22133:4;22130:1;22123:15;22157:4;22154:1;22147:15;22174:143;22231:5;22262:6;22256:13;22247:22;;22278:33;22305:5;22278:33;:::i;:::-;22174:143;;;;:::o;22323:351::-;22393:6;22442:2;22430:9;22421:7;22417:23;22413:32;22410:119;;;22448:79;;:::i;:::-;22410:119;22568:1;22593:64;22649:7;22640:6;22629:9;22625:22;22593:64;:::i;:::-;22583:74;;22539:128;22323:351;;;;:::o;22680:85::-;22725:7;22754:5;22743:16;;22680:85;;;:::o;22771:158::-;22829:9;22862:61;22880:42;22889:32;22915:5;22889:32;:::i;:::-;22880:42;:::i;:::-;22862:61;:::i;:::-;22849:74;;22771:158;;;:::o;22935:147::-;23030:45;23069:5;23030:45;:::i;:::-;23025:3;23018:58;22935:147;;:::o;23088:114::-;23155:6;23189:5;23183:12;23173:22;;23088:114;;;:::o;23208:184::-;23307:11;23341:6;23336:3;23329:19;23381:4;23376:3;23372:14;23357:29;;23208:184;;;;:::o;23398:132::-;23465:4;23488:3;23480:11;;23518:4;23513:3;23509:14;23501:22;;23398:132;;;:::o;23536:108::-;23613:24;23631:5;23613:24;:::i;:::-;23608:3;23601:37;23536:108;;:::o;23650:179::-;23719:10;23740:46;23782:3;23774:6;23740:46;:::i;:::-;23818:4;23813:3;23809:14;23795:28;;23650:179;;;;:::o;23835:113::-;23905:4;23937;23932:3;23928:14;23920:22;;23835:113;;;:::o;23984:732::-;24103:3;24132:54;24180:5;24132:54;:::i;:::-;24202:86;24281:6;24276:3;24202:86;:::i;:::-;24195:93;;24312:56;24362:5;24312:56;:::i;:::-;24391:7;24422:1;24407:284;24432:6;24429:1;24426:13;24407:284;;;24508:6;24502:13;24535:63;24594:3;24579:13;24535:63;:::i;:::-;24528:70;;24621:60;24674:6;24621:60;:::i;:::-;24611:70;;24467:224;24454:1;24451;24447:9;24442:14;;24407:284;;;24411:14;24707:3;24700:10;;24108:608;;;23984:732;;;;:::o;24722:831::-;24985:4;25023:3;25012:9;25008:19;25000:27;;25037:71;25105:1;25094:9;25090:17;25081:6;25037:71;:::i;:::-;25118:80;25194:2;25183:9;25179:18;25170:6;25118:80;:::i;:::-;25245:9;25239:4;25235:20;25230:2;25219:9;25215:18;25208:48;25273:108;25376:4;25367:6;25273:108;:::i;:::-;25265:116;;25391:72;25459:2;25448:9;25444:18;25435:6;25391:72;:::i;:::-;25473:73;25541:3;25530:9;25526:19;25517:6;25473:73;:::i;:::-;24722:831;;;;;;;;:::o;25559:332::-;25680:4;25718:2;25707:9;25703:18;25695:26;;25731:71;25799:1;25788:9;25784:17;25775:6;25731:71;:::i;:::-;25812:72;25880:2;25869:9;25865:18;25856:6;25812:72;:::i;:::-;25559:332;;;;;:::o;25897:179::-;26037:31;26033:1;26025:6;26021:14;26014:55;25897:179;:::o;26082:366::-;26224:3;26245:67;26309:2;26304:3;26245:67;:::i;:::-;26238:74;;26321:93;26410:3;26321:93;:::i;:::-;26439:2;26434:3;26430:12;26423:19;;26082:366;;;:::o;26454:419::-;26620:4;26658:2;26647:9;26643:18;26635:26;;26707:9;26701:4;26697:20;26693:1;26682:9;26678:17;26671:47;26735:131;26861:4;26735:131;:::i;:::-;26727:139;;26454:419;;;:::o;26879:147::-;26980:11;27017:3;27002:18;;26879:147;;;;:::o;27032:114::-;;:::o;27152:398::-;27311:3;27332:83;27413:1;27408:3;27332:83;:::i;:::-;27325:90;;27424:93;27513:3;27424:93;:::i;:::-;27542:1;27537:3;27533:11;27526:18;;27152:398;;;:::o;27556:379::-;27740:3;27762:147;27905:3;27762:147;:::i;:::-;27755:154;;27926:3;27919:10;;27556:379;;;:::o
Swarm Source
ipfs://b1024fa36cd4718e7c1015b7b138833e7903374da962789e76201073c7dfaed4
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.