ERC-20
Overview
Max Total Supply
10,000,000 VGA
Holders
577
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
488.472119188376235616 VGAValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
VegaFi
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
/** *Submitted for verification at Etherscan.io on 2023-10-20 */ /* VegaFi - Algorithmic Reflexivity ,/ // ,// ___ /| |// `__/\_ --(/|___/-/ \|\_-\___ __-_`- /-/ \. |\_-___,-\_____--/_)' ) \ \ -_ / __ \( `( __`\| `\__| |\)\ ) /(/| ,._____., ',--//-| \ | ' / / __. \, / /,---| \ / / / _. \ \ `/`_/ _,' | | | | ( ( \ | ,/\'__/'/ | | | \ \`--, `_/_------______/ \( )/ | | \ \_. \, \___/\ | | \_ \ \ \ \ \ \_ \ \ / \ \ \ \._ \__ \_| | \ \ \___ \ \ | \ \__ \__ \ \_ | \ | | \_____ \ ____ | | | \ \__ ---' .__\ | | | \ \__ --- / ) | \ / \ \____/ / ()( \ `---_ /| \__________/(,--__ \_________. | ./ | | \ \ `---_\--, \ \_,./ | | \ \_ ` \ /`---_______-\ \\ / \ \.___,`| / \ \\ \ \ | \_ \| \ ( |: | \ \ \ | / / | ; \ \ \ \ ( `_' \ | \. \ \. \ `__/ | | \ \ \. \ | | \ \ \ \ ( ) \ | \ | | | | \ \ \ I ` ( __; ( _; ('-_'; |___\ \___: \___: Telegram: https://t.me/vegafiportal Twitter/X: https://twitter.com/VegaFiOfficial Website: https://vegafi.io Docs: https://docs.vegafi.io */ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.9; import "./interfaces/INonfungiblePositionManager.sol"; import "./interfaces/ISwapRouter.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; interface IERC721Receiver { function onERC721Received( address operator, address from, uint tokenId, bytes calldata data ) external returns (bytes4); } contract VegaFi { event Transfer(address indexed from, address indexed to, uint value); event Approval(address indexed owner, address indexed spender, uint value); uint public totalSupply; mapping(address => uint) public balanceOf; mapping(address => mapping(address => uint)) public allowance; mapping(address => bool) public antibot; mapping(address => bool) public noMax; string public name = "VegaFi"; string public symbol = "VGA"; uint8 public decimals = 18; INonfungiblePositionManager public nonfungiblePositionManager = INonfungiblePositionManager(0xC36442b4a4522E871399CD717aBDD847Ab11FE88); ISwapRouter constant router = ISwapRouter(0xE592427A0AEce92De3Edee1F18E0157C05861564); address public WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; address public pool; address public quant; uint256 public buyFee = 10000; uint256 public bolsterReward = 5000; uint256 public buyFeeBalance; uint256 public maxWalletPercent = 100; modifier onlyQuant() { require(msg.sender == quant, "Not quant!"); _; } constructor() { quant = msg.sender; noMax[address(this)] = true; // Lets the smart contract collectAllFees uint amount = 10_000_000 * (10 ** 18); balanceOf[msg.sender] += amount; totalSupply += amount; emit Transfer(address(0), msg.sender, amount); address token0 = address(this) < WETH ? address(this) : WETH; address token1 = address(this) < WETH ? WETH : address(this); uint24 fee = 10000; uint160 sqrtPriceX96 = token0 == address(this) ? 100000000000000000000000000 : 62771017353866810000000000000000; pool = initializePool(token0, token1, fee, sqrtPriceX96); } // Creates UniswapV3 "address(this)-WETH" pool function initializePool(address token0, address token1, uint24 fee, uint160 sqrtPriceX96) public returns (address) { return nonfungiblePositionManager.createAndInitializePoolIfNecessary(token0, token1, fee, sqrtPriceX96); } // ERC20 standard functions function transfer(address recipient, uint amount) public returns (bool) { require(antibot[msg.sender] == false, "Bot detected!"); if (msg.sender == pool) { balanceOf[msg.sender] -= amount; uint amountNoFee = handleTaxedTokens(msg.sender, amount); if (!noMax[recipient]) { uint256 maxWallet = totalSupply * maxWalletPercent / 100_000; require(balanceOf[recipient] + amountNoFee <= maxWallet, "Max wallet exceeded!"); } balanceOf[recipient] += amountNoFee; emit Transfer(msg.sender, recipient, amountNoFee); return true; } else { balanceOf[msg.sender] -= amount; balanceOf[recipient] += amount; emit Transfer(msg.sender, recipient, amount); return true; } } function approve(address spender, uint amount) public returns (bool) { allowance[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function transferFrom( address sender, address recipient, uint amount ) public returns (bool) { require(antibot[sender] == false, "Bot detected!"); allowance[sender][msg.sender] -= amount; balanceOf[sender] -= amount; balanceOf[recipient] += amount; emit Transfer(sender, recipient, amount); return true; } // Quant helpers function mintNewPosition( address token0, address token1, uint24 fee, int24 tickLower, int24 tickUpper, uint amount0Desired, uint amount1Desired, uint amount0Min, uint amount1Min ) public onlyQuant returns (uint tokenId, uint128 liquidity, uint amount0, uint amount1) { IERC20(token0).approve(address(nonfungiblePositionManager), amount0Desired); IERC20(token1).approve(address(nonfungiblePositionManager), amount1Desired); INonfungiblePositionManager.MintParams memory params = INonfungiblePositionManager.MintParams({ token0: token0, token1: token1, fee: fee, tickLower: tickLower, tickUpper: tickUpper, amount0Desired: amount0Desired, amount1Desired: amount1Desired, amount0Min: amount0Min, amount1Min: amount1Min, recipient: address(this), deadline: block.timestamp }); (tokenId, liquidity, amount0, amount1) = nonfungiblePositionManager.mint( params ); } function collectAllFees( uint tokenId ) public onlyQuant returns (uint amount0, uint amount1) { INonfungiblePositionManager.CollectParams memory params = INonfungiblePositionManager.CollectParams({ tokenId: tokenId, recipient: address(this), amount0Max: type(uint128).max, amount1Max: type(uint128).max }); (amount0, amount1) = nonfungiblePositionManager.collect(params); } function increaseLiquidityCurrentRange( address token0, address token1, uint tokenId, uint amount0ToAdd, uint amount1ToAdd, uint amount0Min, uint amount1Min ) public onlyQuant returns (uint128 liquidity, uint amount0, uint amount1) { IERC20(token0).approve(address(nonfungiblePositionManager), amount0ToAdd); IERC20(token1).approve(address(nonfungiblePositionManager), amount1ToAdd); INonfungiblePositionManager.IncreaseLiquidityParams memory params = INonfungiblePositionManager.IncreaseLiquidityParams({ tokenId: tokenId, amount0Desired: amount0ToAdd, amount1Desired: amount1ToAdd, amount0Min: amount0Min, amount1Min: amount1Min, deadline: block.timestamp }); (liquidity, amount0, amount1) = nonfungiblePositionManager.increaseLiquidity( params ); } function decreaseLiquidityCurrentRange( uint tokenId, uint128 liquidity, uint amount0Min, uint amount1Min ) public onlyQuant returns (uint amount0, uint amount1) { INonfungiblePositionManager.DecreaseLiquidityParams memory params = INonfungiblePositionManager.DecreaseLiquidityParams({ tokenId: tokenId, liquidity: liquidity, amount0Min: amount0Min, amount1Min: amount1Min, deadline: block.timestamp }); (amount0, amount1) = nonfungiblePositionManager.decreaseLiquidity(params); } // Buy fee swap function function swapExactInputSingleHop( address tokenIn, address tokenOut, uint24 poolFee, uint amountIn, uint amountOutMinimum ) private returns (uint amountOut) { IERC20(tokenIn).approve(address(router), amountIn); ISwapRouter.ExactInputSingleParams memory params = ISwapRouter .ExactInputSingleParams({ tokenIn: tokenIn, tokenOut: tokenOut, fee: poolFee, recipient: address(this), deadline: block.timestamp, amountIn: amountIn, amountOutMinimum: amountOutMinimum, sqrtPriceLimitX96: 0 }); amountOut = router.exactInputSingle(params); } // Deducts fee from buy orders function handleTaxedTokens(address sender, uint amount) private returns (uint) { uint256 _fee = amount * buyFee / 100_000; balanceOf[address(this)] += _fee; buyFeeBalance += _fee; emit Transfer(sender, address(this), _fee); return amount - _fee; } // Earn money by calling this function function bolsterLiquidityAndEarn() public { require(buyFeeBalance > 0); uint amountOut = swapExactInputSingleHop(address(this), WETH, 10000, buyFeeBalance, 0); buyFeeBalance = 0; uint reward = amountOut * bolsterReward / 100_000; IERC20(WETH).transfer(msg.sender, reward); } // Reflexivity insurance function upgradeQuant(address _quant) public onlyQuant { quant = _quant; } function modulateFees(uint256 _buyFee, uint256 _bolsterReward, uint256 _maxWalletPercent) public onlyQuant { buyFee = _buyFee; bolsterReward = _bolsterReward; maxWalletPercent = _maxWalletPercent; } function toggleAntibot(address target) public onlyQuant { antibot[target] = !antibot[target]; } function changeNoMax(address target, bool value) public onlyQuant { noMax[target] = value; } // Emergency function rescue(address token) public onlyQuant { require(token != address(this) && token != WETH); if (token == 0x0000000000000000000000000000000000000000) { (bool sent, ) = payable(msg.sender).call{value: address(this).balance}(""); require(sent, "Failed to send Ether"); } else { uint256 balance = IERC20(token).balanceOf(address(this)); IERC20(token).transfer(msg.sender, balance); } } function onERC721Received( address operator, address from, uint tokenId, bytes calldata ) external returns (bytes4) { return IERC721Receiver.onERC721Received.selector; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 amount) external returns (bool); }
interface INonfungiblePositionManager { struct MintParams { address token0; address token1; uint24 fee; int24 tickLower; int24 tickUpper; uint amount0Desired; uint amount1Desired; uint amount0Min; uint amount1Min; address recipient; uint deadline; } function mint( MintParams calldata params ) external payable returns (uint tokenId, uint128 liquidity, uint amount0, uint amount1); struct IncreaseLiquidityParams { uint tokenId; uint amount0Desired; uint amount1Desired; uint amount0Min; uint amount1Min; uint deadline; } function increaseLiquidity( IncreaseLiquidityParams calldata params ) external payable returns (uint128 liquidity, uint amount0, uint amount1); struct DecreaseLiquidityParams { uint tokenId; uint128 liquidity; uint amount0Min; uint amount1Min; uint deadline; } function decreaseLiquidity( DecreaseLiquidityParams calldata params ) external payable returns (uint amount0, uint amount1); struct CollectParams { uint tokenId; address recipient; uint128 amount0Max; uint128 amount1Max; } function collect( CollectParams calldata params ) external payable returns (uint amount0, uint amount1); function createAndInitializePoolIfNecessary( address token0, address token1, uint24 fee, uint160 sqrtPriceX96 ) external payable returns (address pool); }
interface ISwapRouter { struct ExactInputSingleParams { address tokenIn; address tokenOut; uint24 fee; address recipient; uint deadline; uint amountIn; uint amountOutMinimum; uint160 sqrtPriceLimitX96; } /// @notice Swaps amountIn of one token for as much as possible of another token /// @param params The parameters necessary for the swap, encoded as ExactInputSingleParams in calldata /// @return amountOut The amount of the received token function exactInputSingle( ExactInputSingleParams calldata params ) external payable returns (uint amountOut); }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"antibot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bolsterLiquidityAndEarn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bolsterReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFeeBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"changeNoMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"collectAllFees","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"amount0Min","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"}],"name":"decreaseLiquidityCurrentRange","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"amount0ToAdd","type":"uint256"},{"internalType":"uint256","name":"amount1ToAdd","type":"uint256"},{"internalType":"uint256","name":"amount0Min","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"}],"name":"increaseLiquidityCurrentRange","outputs":[{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"name":"initializePool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWalletPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint256","name":"amount0Desired","type":"uint256"},{"internalType":"uint256","name":"amount1Desired","type":"uint256"},{"internalType":"uint256","name":"amount0Min","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"}],"name":"mintNewPosition","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_bolsterReward","type":"uint256"},{"internalType":"uint256","name":"_maxWalletPercent","type":"uint256"}],"name":"modulateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"noMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nonfungiblePositionManager","outputs":[{"internalType":"contract INonfungiblePositionManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quant","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"rescue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"toggleAntibot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"_quant","type":"address"}],"name":"upgradeQuant","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526040518060400160405280600681526020017f5665676146690000000000000000000000000000000000000000000000000000815250600590816200004a919062000803565b506040518060400160405280600381526020017f56474100000000000000000000000000000000000000000000000000000000008152506006908162000091919062000803565b506012600760006101000a81548160ff021916908360ff16021790555073c36442b4a4522e871399cd717abdd847ab11fe88600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612710600b55611388600c556064600e553480156200017657600080fd5b5033600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006a084595161401484a000000905080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000271919062000919565b92505081905550806000808282546200028b919062000919565b925050819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002f2919062000965565b60405180910390a36000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16106200037b57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166200037d565b305b90506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1610620003de573062000402565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b90506000612710905060003073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161462000456576d0318481895d9627fce3b7ff9000062000463565b6a52b7d2dcc80cd2e40000005b6dffffffffffffffffffffffffffff1690506200048984848484620004d460201b60201c565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505062000aad565b6000600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166313ead562868686866040518563ffffffff1660e01b8152600401620005399493929190620009f8565b6020604051808303816000875af115801562000559573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200057f919062000a7b565b9050949350505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200060b57607f821691505b602082108103620006215762000620620005c3565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200068b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200064c565b6200069786836200064c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620006e4620006de620006d884620006af565b620006b9565b620006af565b9050919050565b6000819050919050565b6200070083620006c3565b620007186200070f82620006eb565b84845462000659565b825550505050565b600090565b6200072f62000720565b6200073c818484620006f5565b505050565b5b8181101562000764576200075860008262000725565b60018101905062000742565b5050565b601f821115620007b3576200077d8162000627565b62000788846200063c565b8101602085101562000798578190505b620007b0620007a7856200063c565b83018262000741565b50505b505050565b600082821c905092915050565b6000620007d860001984600802620007b8565b1980831691505092915050565b6000620007f38383620007c5565b9150826002028217905092915050565b6200080e8262000589565b67ffffffffffffffff8111156200082a576200082962000594565b5b620008368254620005f2565b6200084382828562000768565b600060209050601f8311600181146200087b576000841562000866578287015190505b620008728582620007e5565b865550620008e2565b601f1984166200088b8662000627565b60005b82811015620008b5578489015182556001820191506020850194506020810190506200088e565b86831015620008d55784890151620008d1601f891682620007c5565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200092682620006af565b91506200093383620006af565b92508282019050808211156200094e576200094d620008ea565b5b92915050565b6200095f81620006af565b82525050565b60006020820190506200097c600083018462000954565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009af8262000982565b9050919050565b620009c181620009a2565b82525050565b600062ffffff82169050919050565b620009e181620009c7565b82525050565b620009f28162000982565b82525050565b600060808201905062000a0f6000830187620009b6565b62000a1e6020830186620009b6565b62000a2d6040830185620009d6565b62000a3c6060830184620009e7565b95945050505050565b600080fd5b62000a5581620009a2565b811462000a6157600080fd5b50565b60008151905062000a758162000a4a565b92915050565b60006020828403121562000a945762000a9362000a45565b5b600062000aa48482850162000a64565b91505092915050565b6137e58062000abd6000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806370a082311161010f578063afd77ddf116100a2578063dd37019d11610071578063dd37019d146105ae578063dd62ed3e146105e1578063f5825fd114610611578063fef0006e1461062f576101e5565b8063afd77ddf14610525578063b44a272214610556578063c0647dfb14610574578063d8908b0e14610590576101e5565b8063839006f2116100de578063839006f21461049d57806395d89b41146104b9578063a9059cbb146104d7578063ad5c464814610507576101e5565b806370a082311461040357806372de27151461043357806376f584e21461046557806378e958a814610481576101e5565b8063313ce5671161018757806346ce96dd1161015657806346ce96dd14610366578063470624021461039757806351e82255146103b55780636fb1461a146103d3576101e5565b8063313ce567146103045780633cc173d1146103225780633d9a3d191461033e5780634577dab71461035c576101e5565b8063150b7a02116101c3578063150b7a021461026857806316f0115b1461029857806318160ddd146102b657806323b872dd146102d4576101e5565b80630466cca0146101ea57806306fdde031461021a578063095ea7b314610238575b600080fd5b61020460048036038101906101ff91906124f9565b61065f565b6040516102119190612541565b60405180910390f35b61022261067f565b60405161022f91906125ec565b60405180910390f35b610252600480360381019061024d9190612644565b61070d565b60405161025f9190612541565b60405180910390f35b610282600480360381019061027d91906126e9565b6107ff565b60405161028f91906127ac565b60405180910390f35b6102a0610814565b6040516102ad91906127d6565b60405180910390f35b6102be61083a565b6040516102cb9190612800565b60405180910390f35b6102ee60048036038101906102e9919061281b565b610840565b6040516102fb9190612541565b60405180910390f35b61030c610a83565b604051610319919061288a565b60405180910390f35b61033c600480360381019061033791906124f9565b610a96565b005b610346610bcd565b6040516103539190612800565b60405180910390f35b610364610bd3565b005b610380600480360381019061037b91906128a5565b610ce7565b60405161038e9291906128d2565b60405180910390f35b61039f610e84565b6040516103ac9190612800565b60405180910390f35b6103bd610e8a565b6040516103ca9190612800565b60405180910390f35b6103ed60048036038101906103e89190612962565b610e90565b6040516103fa91906127d6565b60405180910390f35b61041d600480360381019061041891906124f9565b610f40565b60405161042a9190612800565b60405180910390f35b61044d600480360381019061044891906129c9565b610f58565b60405161045c93929190612a96565b60405180910390f35b61047f600480360381019061047a9190612acd565b611218565b005b61049b600480360381019061049691906124f9565b6112c2565b005b6104b760048036038101906104b291906124f9565b611396565b005b6104c16116a1565b6040516104ce91906125ec565b60405180910390f35b6104f160048036038101906104ec9190612644565b61172f565b6040516104fe9190612541565b60405180910390f35b61050f611b5f565b60405161051c91906127d6565b60405180910390f35b61053f600480360381019061053a9190612b4c565b611b85565b60405161054d9291906128d2565b60405180910390f35b61055e611d04565b60405161056b9190612c12565b60405180910390f35b61058e60048036038101906105899190612c59565b611d2a565b005b610598611e15565b6040516105a59190612800565b60405180910390f35b6105c860048036038101906105c39190612cd2565b611e1b565b6040516105d89493929190612d9c565b60405180910390f35b6105fb60048036038101906105f69190612de1565b61214f565b6040516106089190612800565b60405180910390f35b610619612174565b60405161062691906127d6565b60405180910390f35b610649600480360381019061064491906124f9565b61219a565b6040516106569190612541565b60405180910390f35b60036020528060005260406000206000915054906101000a900460ff1681565b6005805461068c90612e50565b80601f01602080910402602001604051908101604052809291908181526020018280546106b890612e50565b80156107055780601f106106da57610100808354040283529160200191610705565b820191906000526020600020905b8154815290600101906020018083116106e857829003601f168201915b505050505081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107ed9190612800565b60405180910390a36001905092915050565b600063150b7a0260e01b905095945050505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b6000801515600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146108d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cb90612ecd565b60405180910390fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109609190612f1c565b9250508190555081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109b69190612f1c565b9250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a0c9190612f50565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a709190612800565b60405180910390a3600190509392505050565b600760009054906101000a900460ff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d90612fd0565b60405180910390fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e5481565b6000600d5411610be257600080fd5b6000610c1830600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612710600d5460006121ba565b90506000600d819055506000620186a0600c5483610c369190612ff0565b610c409190613061565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610c9f929190613092565b6020604051808303816000875af1158015610cbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce291906130d0565b505050565b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7190612fd0565b60405180910390fd5b600060405180608001604052808581526020013073ffffffffffffffffffffffffffffffffffffffff1681526020016fffffffffffffffffffffffffffffffff801681526020016fffffffffffffffffffffffffffffffff80168152509050600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fc6f7865826040518263ffffffff1660e01b8152600401610e34919061317f565b60408051808303816000875af1158015610e52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7691906131af565b809350819450505050915091565b600b5481565b600c5481565b6000600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166313ead562868686866040518563ffffffff1660e01b8152600401610ef3949392919061320d565b6020604051808303816000875af1158015610f12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f369190613267565b9050949350505050565b60016020528060005260406000206000915090505481565b6000806000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe490612fd0565b60405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16896040518363ffffffff1660e01b815260040161104a929190613092565b6020604051808303816000875af1158015611069573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108d91906130d0565b508873ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16886040518363ffffffff1660e01b81526004016110eb929190613092565b6020604051808303816000875af115801561110a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112e91906130d0565b5060006040518060c001604052808a8152602001898152602001888152602001878152602001868152602001428152509050600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663219f5d17826040518263ffffffff1660e01b81526004016111bb919061330f565b6060604051808303816000875af11580156111da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fe919061333f565b809450819550829650505050509750975097945050505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129f90612fd0565b60405180910390fd5b82600b8190555081600c8190555080600e81905550505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611352576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134990612fd0565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141d90612fd0565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156114b05750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6114b957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361159f5760003373ffffffffffffffffffffffffffffffffffffffff1647604051611513906133c3565b60006040518083038185875af1925050503d8060008114611550576040519150601f19603f3d011682016040523d82523d6000602084013e611555565b606091505b5050905080611599576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159090613424565b60405180910390fd5b5061169e565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115da91906127d6565b602060405180830381865afa1580156115f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161b9190613444565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611658929190613092565b6020604051808303816000875af1158015611677573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169b91906130d0565b50505b50565b600680546116ae90612e50565b80601f01602080910402602001604051908101604052809291908181526020018280546116da90612e50565b80156117275780601f106116fc57610100808354040283529160200191611727565b820191906000526020600020905b81548152906001019060200180831161170a57829003601f168201915b505050505081565b6000801515600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146117c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ba90612ecd565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603611a435781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118679190612f1c565b92505081905550600061187a3384612387565b9050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661197e576000620186a0600e546000546118e39190612ff0565b6118ed9190613061565b90508082600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461193b9190612f50565b111561197c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611973906134bd565b60405180910390fd5b505b80600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119cd9190612f50565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a319190612800565b60405180910390a36001915050611b59565b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a929190612f1c565b9250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ae89190612f50565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b4c9190612800565b60405180910390a3600190505b92915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0f90612fd0565b60405180910390fd5b60006040518060a00160405280888152602001876fffffffffffffffffffffffffffffffff168152602001868152602001858152602001428152509050600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630c49ccbe826040518263ffffffff1660e01b8152600401611cb09190613545565b60408051808303816000875af1158015611cce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf291906131af565b80935081945050505094509492505050565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611dba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db190612fd0565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d5481565b600080600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea890612fd0565b60405180910390fd5b8c73ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a6040518363ffffffff1660e01b8152600401611f0e929190613092565b6020604051808303816000875af1158015611f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f5191906130d0565b508b73ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16896040518363ffffffff1660e01b8152600401611faf929190613092565b6020604051808303816000875af1158015611fce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff291906130d0565b5060006040518061016001604052808f73ffffffffffffffffffffffffffffffffffffffff1681526020018e73ffffffffffffffffffffffffffffffffffffffff1681526020018d62ffffff1681526020018c60020b81526020018b60020b81526020018a81526020018981526020018881526020018781526020013073ffffffffffffffffffffffffffffffffffffffff168152602001428152509050600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166388316456826040518263ffffffff1660e01b81526004016120eb919061365f565b6080604051808303816000875af115801561210a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212e919061367b565b80955081965082975083985050505050509950995099509995505050505050565b6002602052816000526040600020602052806000526040600020600091509150505481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b60008573ffffffffffffffffffffffffffffffffffffffff1663095ea7b373e592427a0aece92de3edee1f18e0157c05861564856040518363ffffffff1660e01b815260040161220b929190613092565b6020604051808303816000875af115801561222a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224e91906130d0565b5060006040518061010001604052808873ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018662ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001848152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905073e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389826040518263ffffffff1660e01b81526004016123389190613793565b6020604051808303816000875af1158015612357573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237b9190613444565b91505095945050505050565b600080620186a0600b548461239c9190612ff0565b6123a69190613061565b905080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546123f79190612f50565b9250508190555080600d60008282546124109190612f50565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124749190612800565b60405180910390a380836124889190612f1c565b91505092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124c68261249b565b9050919050565b6124d6816124bb565b81146124e157600080fd5b50565b6000813590506124f3816124cd565b92915050565b60006020828403121561250f5761250e612491565b5b600061251d848285016124e4565b91505092915050565b60008115159050919050565b61253b81612526565b82525050565b60006020820190506125566000830184612532565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561259657808201518184015260208101905061257b565b60008484015250505050565b6000601f19601f8301169050919050565b60006125be8261255c565b6125c88185612567565b93506125d8818560208601612578565b6125e1816125a2565b840191505092915050565b6000602082019050818103600083015261260681846125b3565b905092915050565b6000819050919050565b6126218161260e565b811461262c57600080fd5b50565b60008135905061263e81612618565b92915050565b6000806040838503121561265b5761265a612491565b5b6000612669858286016124e4565b925050602061267a8582860161262f565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126126a9576126a8612684565b5b8235905067ffffffffffffffff8111156126c6576126c5612689565b5b6020830191508360018202830111156126e2576126e161268e565b5b9250929050565b60008060008060006080868803121561270557612704612491565b5b6000612713888289016124e4565b9550506020612724888289016124e4565b94505060406127358882890161262f565b935050606086013567ffffffffffffffff81111561275657612755612496565b5b61276288828901612693565b92509250509295509295909350565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6127a681612771565b82525050565b60006020820190506127c1600083018461279d565b92915050565b6127d0816124bb565b82525050565b60006020820190506127eb60008301846127c7565b92915050565b6127fa8161260e565b82525050565b600060208201905061281560008301846127f1565b92915050565b60008060006060848603121561283457612833612491565b5b6000612842868287016124e4565b9350506020612853868287016124e4565b92505060406128648682870161262f565b9150509250925092565b600060ff82169050919050565b6128848161286e565b82525050565b600060208201905061289f600083018461287b565b92915050565b6000602082840312156128bb576128ba612491565b5b60006128c98482850161262f565b91505092915050565b60006040820190506128e760008301856127f1565b6128f460208301846127f1565b9392505050565b600062ffffff82169050919050565b612913816128fb565b811461291e57600080fd5b50565b6000813590506129308161290a565b92915050565b61293f8161249b565b811461294a57600080fd5b50565b60008135905061295c81612936565b92915050565b6000806000806080858703121561297c5761297b612491565b5b600061298a878288016124e4565b945050602061299b878288016124e4565b93505060406129ac87828801612921565b92505060606129bd8782880161294d565b91505092959194509250565b600080600080600080600060e0888a0312156129e8576129e7612491565b5b60006129f68a828b016124e4565b9750506020612a078a828b016124e4565b9650506040612a188a828b0161262f565b9550506060612a298a828b0161262f565b9450506080612a3a8a828b0161262f565b93505060a0612a4b8a828b0161262f565b92505060c0612a5c8a828b0161262f565b91505092959891949750929550565b60006fffffffffffffffffffffffffffffffff82169050919050565b612a9081612a6b565b82525050565b6000606082019050612aab6000830186612a87565b612ab860208301856127f1565b612ac560408301846127f1565b949350505050565b600080600060608486031215612ae657612ae5612491565b5b6000612af48682870161262f565b9350506020612b058682870161262f565b9250506040612b168682870161262f565b9150509250925092565b612b2981612a6b565b8114612b3457600080fd5b50565b600081359050612b4681612b20565b92915050565b60008060008060808587031215612b6657612b65612491565b5b6000612b748782880161262f565b9450506020612b8587828801612b37565b9350506040612b968782880161262f565b9250506060612ba78782880161262f565b91505092959194509250565b6000819050919050565b6000612bd8612bd3612bce8461249b565b612bb3565b61249b565b9050919050565b6000612bea82612bbd565b9050919050565b6000612bfc82612bdf565b9050919050565b612c0c81612bf1565b82525050565b6000602082019050612c276000830184612c03565b92915050565b612c3681612526565b8114612c4157600080fd5b50565b600081359050612c5381612c2d565b92915050565b60008060408385031215612c7057612c6f612491565b5b6000612c7e858286016124e4565b9250506020612c8f85828601612c44565b9150509250929050565b60008160020b9050919050565b612caf81612c99565b8114612cba57600080fd5b50565b600081359050612ccc81612ca6565b92915050565b60008060008060008060008060006101208a8c031215612cf557612cf4612491565b5b6000612d038c828d016124e4565b9950506020612d148c828d016124e4565b9850506040612d258c828d01612921565b9750506060612d368c828d01612cbd565b9650506080612d478c828d01612cbd565b95505060a0612d588c828d0161262f565b94505060c0612d698c828d0161262f565b93505060e0612d7a8c828d0161262f565b925050610100612d8c8c828d0161262f565b9150509295985092959850929598565b6000608082019050612db160008301876127f1565b612dbe6020830186612a87565b612dcb60408301856127f1565b612dd860608301846127f1565b95945050505050565b60008060408385031215612df857612df7612491565b5b6000612e06858286016124e4565b9250506020612e17858286016124e4565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612e6857607f821691505b602082108103612e7b57612e7a612e21565b5b50919050565b7f426f742064657465637465642100000000000000000000000000000000000000600082015250565b6000612eb7600d83612567565b9150612ec282612e81565b602082019050919050565b60006020820190508181036000830152612ee681612eaa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f278261260e565b9150612f328361260e565b9250828203905081811115612f4a57612f49612eed565b5b92915050565b6000612f5b8261260e565b9150612f668361260e565b9250828201905080821115612f7e57612f7d612eed565b5b92915050565b7f4e6f74207175616e742100000000000000000000000000000000000000000000600082015250565b6000612fba600a83612567565b9150612fc582612f84565b602082019050919050565b60006020820190508181036000830152612fe981612fad565b9050919050565b6000612ffb8261260e565b91506130068361260e565b92508282026130148161260e565b9150828204841483151761302b5761302a612eed565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061306c8261260e565b91506130778361260e565b92508261308757613086613032565b5b828204905092915050565b60006040820190506130a760008301856127c7565b6130b460208301846127f1565b9392505050565b6000815190506130ca81612c2d565b92915050565b6000602082840312156130e6576130e5612491565b5b60006130f4848285016130bb565b91505092915050565b6131068161260e565b82525050565b613115816124bb565b82525050565b61312481612a6b565b82525050565b60808201600082015161314060008501826130fd565b506020820151613153602085018261310c565b506040820151613166604085018261311b565b506060820151613179606085018261311b565b50505050565b6000608082019050613194600083018461312a565b92915050565b6000815190506131a981612618565b92915050565b600080604083850312156131c6576131c5612491565b5b60006131d48582860161319a565b92505060206131e58582860161319a565b9150509250929050565b6131f8816128fb565b82525050565b6132078161249b565b82525050565b600060808201905061322260008301876127c7565b61322f60208301866127c7565b61323c60408301856131ef565b61324960608301846131fe565b95945050505050565b600081519050613261816124cd565b92915050565b60006020828403121561327d5761327c612491565b5b600061328b84828501613252565b91505092915050565b60c0820160008201516132aa60008501826130fd565b5060208201516132bd60208501826130fd565b5060408201516132d060408501826130fd565b5060608201516132e360608501826130fd565b5060808201516132f660808501826130fd565b5060a082015161330960a08501826130fd565b50505050565b600060c0820190506133246000830184613294565b92915050565b60008151905061333981612b20565b92915050565b60008060006060848603121561335857613357612491565b5b60006133668682870161332a565b93505060206133778682870161319a565b92505060406133888682870161319a565b9150509250925092565b600081905092915050565b50565b60006133ad600083613392565b91506133b88261339d565b600082019050919050565b60006133ce826133a0565b9150819050919050565b7f4661696c656420746f2073656e64204574686572000000000000000000000000600082015250565b600061340e601483612567565b9150613419826133d8565b602082019050919050565b6000602082019050818103600083015261343d81613401565b9050919050565b60006020828403121561345a57613459612491565b5b60006134688482850161319a565b91505092915050565b7f4d61782077616c6c657420657863656564656421000000000000000000000000600082015250565b60006134a7601483612567565b91506134b282613471565b602082019050919050565b600060208201905081810360008301526134d68161349a565b9050919050565b60a0820160008201516134f360008501826130fd565b506020820151613506602085018261311b565b50604082015161351960408501826130fd565b50606082015161352c60608501826130fd565b50608082015161353f60808501826130fd565b50505050565b600060a08201905061355a60008301846134dd565b92915050565b613569816128fb565b82525050565b61357881612c99565b82525050565b61016082016000820151613595600085018261310c565b5060208201516135a8602085018261310c565b5060408201516135bb6040850182613560565b5060608201516135ce606085018261356f565b5060808201516135e1608085018261356f565b5060a08201516135f460a08501826130fd565b5060c082015161360760c08501826130fd565b5060e082015161361a60e08501826130fd565b5061010082015161362f6101008501826130fd565b5061012082015161364461012085018261310c565b506101408201516136596101408501826130fd565b50505050565b600061016082019050613675600083018461357e565b92915050565b6000806000806080858703121561369557613694612491565b5b60006136a38782880161319a565b94505060206136b48782880161332a565b93505060406136c58782880161319a565b92505060606136d68782880161319a565b91505092959194509250565b6136eb8161249b565b82525050565b61010082016000820151613708600085018261310c565b50602082015161371b602085018261310c565b50604082015161372e6040850182613560565b506060820151613741606085018261310c565b50608082015161375460808501826130fd565b5060a082015161376760a08501826130fd565b5060c082015161377a60c08501826130fd565b5060e082015161378d60e08501826136e2565b50505050565b6000610100820190506137a960008301846136f1565b9291505056fea2646970667358221220cdbf59d21da32bd7dae12a75571962750ec3b01d003dcd46d0053e950ebf4f9564736f6c63430008130033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101e55760003560e01c806370a082311161010f578063afd77ddf116100a2578063dd37019d11610071578063dd37019d146105ae578063dd62ed3e146105e1578063f5825fd114610611578063fef0006e1461062f576101e5565b8063afd77ddf14610525578063b44a272214610556578063c0647dfb14610574578063d8908b0e14610590576101e5565b8063839006f2116100de578063839006f21461049d57806395d89b41146104b9578063a9059cbb146104d7578063ad5c464814610507576101e5565b806370a082311461040357806372de27151461043357806376f584e21461046557806378e958a814610481576101e5565b8063313ce5671161018757806346ce96dd1161015657806346ce96dd14610366578063470624021461039757806351e82255146103b55780636fb1461a146103d3576101e5565b8063313ce567146103045780633cc173d1146103225780633d9a3d191461033e5780634577dab71461035c576101e5565b8063150b7a02116101c3578063150b7a021461026857806316f0115b1461029857806318160ddd146102b657806323b872dd146102d4576101e5565b80630466cca0146101ea57806306fdde031461021a578063095ea7b314610238575b600080fd5b61020460048036038101906101ff91906124f9565b61065f565b6040516102119190612541565b60405180910390f35b61022261067f565b60405161022f91906125ec565b60405180910390f35b610252600480360381019061024d9190612644565b61070d565b60405161025f9190612541565b60405180910390f35b610282600480360381019061027d91906126e9565b6107ff565b60405161028f91906127ac565b60405180910390f35b6102a0610814565b6040516102ad91906127d6565b60405180910390f35b6102be61083a565b6040516102cb9190612800565b60405180910390f35b6102ee60048036038101906102e9919061281b565b610840565b6040516102fb9190612541565b60405180910390f35b61030c610a83565b604051610319919061288a565b60405180910390f35b61033c600480360381019061033791906124f9565b610a96565b005b610346610bcd565b6040516103539190612800565b60405180910390f35b610364610bd3565b005b610380600480360381019061037b91906128a5565b610ce7565b60405161038e9291906128d2565b60405180910390f35b61039f610e84565b6040516103ac9190612800565b60405180910390f35b6103bd610e8a565b6040516103ca9190612800565b60405180910390f35b6103ed60048036038101906103e89190612962565b610e90565b6040516103fa91906127d6565b60405180910390f35b61041d600480360381019061041891906124f9565b610f40565b60405161042a9190612800565b60405180910390f35b61044d600480360381019061044891906129c9565b610f58565b60405161045c93929190612a96565b60405180910390f35b61047f600480360381019061047a9190612acd565b611218565b005b61049b600480360381019061049691906124f9565b6112c2565b005b6104b760048036038101906104b291906124f9565b611396565b005b6104c16116a1565b6040516104ce91906125ec565b60405180910390f35b6104f160048036038101906104ec9190612644565b61172f565b6040516104fe9190612541565b60405180910390f35b61050f611b5f565b60405161051c91906127d6565b60405180910390f35b61053f600480360381019061053a9190612b4c565b611b85565b60405161054d9291906128d2565b60405180910390f35b61055e611d04565b60405161056b9190612c12565b60405180910390f35b61058e60048036038101906105899190612c59565b611d2a565b005b610598611e15565b6040516105a59190612800565b60405180910390f35b6105c860048036038101906105c39190612cd2565b611e1b565b6040516105d89493929190612d9c565b60405180910390f35b6105fb60048036038101906105f69190612de1565b61214f565b6040516106089190612800565b60405180910390f35b610619612174565b60405161062691906127d6565b60405180910390f35b610649600480360381019061064491906124f9565b61219a565b6040516106569190612541565b60405180910390f35b60036020528060005260406000206000915054906101000a900460ff1681565b6005805461068c90612e50565b80601f01602080910402602001604051908101604052809291908181526020018280546106b890612e50565b80156107055780601f106106da57610100808354040283529160200191610705565b820191906000526020600020905b8154815290600101906020018083116106e857829003601f168201915b505050505081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107ed9190612800565b60405180910390a36001905092915050565b600063150b7a0260e01b905095945050505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b6000801515600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146108d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cb90612ecd565b60405180910390fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109609190612f1c565b9250508190555081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109b69190612f1c565b9250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a0c9190612f50565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a709190612800565b60405180910390a3600190509392505050565b600760009054906101000a900460ff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d90612fd0565b60405180910390fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e5481565b6000600d5411610be257600080fd5b6000610c1830600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612710600d5460006121ba565b90506000600d819055506000620186a0600c5483610c369190612ff0565b610c409190613061565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610c9f929190613092565b6020604051808303816000875af1158015610cbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce291906130d0565b505050565b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7190612fd0565b60405180910390fd5b600060405180608001604052808581526020013073ffffffffffffffffffffffffffffffffffffffff1681526020016fffffffffffffffffffffffffffffffff801681526020016fffffffffffffffffffffffffffffffff80168152509050600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fc6f7865826040518263ffffffff1660e01b8152600401610e34919061317f565b60408051808303816000875af1158015610e52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7691906131af565b809350819450505050915091565b600b5481565b600c5481565b6000600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166313ead562868686866040518563ffffffff1660e01b8152600401610ef3949392919061320d565b6020604051808303816000875af1158015610f12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f369190613267565b9050949350505050565b60016020528060005260406000206000915090505481565b6000806000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe490612fd0565b60405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16896040518363ffffffff1660e01b815260040161104a929190613092565b6020604051808303816000875af1158015611069573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108d91906130d0565b508873ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16886040518363ffffffff1660e01b81526004016110eb929190613092565b6020604051808303816000875af115801561110a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112e91906130d0565b5060006040518060c001604052808a8152602001898152602001888152602001878152602001868152602001428152509050600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663219f5d17826040518263ffffffff1660e01b81526004016111bb919061330f565b6060604051808303816000875af11580156111da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fe919061333f565b809450819550829650505050509750975097945050505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129f90612fd0565b60405180910390fd5b82600b8190555081600c8190555080600e81905550505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611352576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134990612fd0565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141d90612fd0565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156114b05750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6114b957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361159f5760003373ffffffffffffffffffffffffffffffffffffffff1647604051611513906133c3565b60006040518083038185875af1925050503d8060008114611550576040519150601f19603f3d011682016040523d82523d6000602084013e611555565b606091505b5050905080611599576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159090613424565b60405180910390fd5b5061169e565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115da91906127d6565b602060405180830381865afa1580156115f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161b9190613444565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611658929190613092565b6020604051808303816000875af1158015611677573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169b91906130d0565b50505b50565b600680546116ae90612e50565b80601f01602080910402602001604051908101604052809291908181526020018280546116da90612e50565b80156117275780601f106116fc57610100808354040283529160200191611727565b820191906000526020600020905b81548152906001019060200180831161170a57829003601f168201915b505050505081565b6000801515600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146117c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ba90612ecd565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603611a435781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118679190612f1c565b92505081905550600061187a3384612387565b9050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661197e576000620186a0600e546000546118e39190612ff0565b6118ed9190613061565b90508082600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461193b9190612f50565b111561197c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611973906134bd565b60405180910390fd5b505b80600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119cd9190612f50565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a319190612800565b60405180910390a36001915050611b59565b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a929190612f1c565b9250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ae89190612f50565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b4c9190612800565b60405180910390a3600190505b92915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0f90612fd0565b60405180910390fd5b60006040518060a00160405280888152602001876fffffffffffffffffffffffffffffffff168152602001868152602001858152602001428152509050600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630c49ccbe826040518263ffffffff1660e01b8152600401611cb09190613545565b60408051808303816000875af1158015611cce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf291906131af565b80935081945050505094509492505050565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611dba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db190612fd0565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d5481565b600080600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea890612fd0565b60405180910390fd5b8c73ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a6040518363ffffffff1660e01b8152600401611f0e929190613092565b6020604051808303816000875af1158015611f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f5191906130d0565b508b73ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16896040518363ffffffff1660e01b8152600401611faf929190613092565b6020604051808303816000875af1158015611fce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff291906130d0565b5060006040518061016001604052808f73ffffffffffffffffffffffffffffffffffffffff1681526020018e73ffffffffffffffffffffffffffffffffffffffff1681526020018d62ffffff1681526020018c60020b81526020018b60020b81526020018a81526020018981526020018881526020018781526020013073ffffffffffffffffffffffffffffffffffffffff168152602001428152509050600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166388316456826040518263ffffffff1660e01b81526004016120eb919061365f565b6080604051808303816000875af115801561210a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212e919061367b565b80955081965082975083985050505050509950995099509995505050505050565b6002602052816000526040600020602052806000526040600020600091509150505481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b60008573ffffffffffffffffffffffffffffffffffffffff1663095ea7b373e592427a0aece92de3edee1f18e0157c05861564856040518363ffffffff1660e01b815260040161220b929190613092565b6020604051808303816000875af115801561222a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224e91906130d0565b5060006040518061010001604052808873ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018662ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001848152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905073e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389826040518263ffffffff1660e01b81526004016123389190613793565b6020604051808303816000875af1158015612357573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237b9190613444565b91505095945050505050565b600080620186a0600b548461239c9190612ff0565b6123a69190613061565b905080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546123f79190612f50565b9250508190555080600d60008282546124109190612f50565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124749190612800565b60405180910390a380836124889190612f1c565b91505092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124c68261249b565b9050919050565b6124d6816124bb565b81146124e157600080fd5b50565b6000813590506124f3816124cd565b92915050565b60006020828403121561250f5761250e612491565b5b600061251d848285016124e4565b91505092915050565b60008115159050919050565b61253b81612526565b82525050565b60006020820190506125566000830184612532565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561259657808201518184015260208101905061257b565b60008484015250505050565b6000601f19601f8301169050919050565b60006125be8261255c565b6125c88185612567565b93506125d8818560208601612578565b6125e1816125a2565b840191505092915050565b6000602082019050818103600083015261260681846125b3565b905092915050565b6000819050919050565b6126218161260e565b811461262c57600080fd5b50565b60008135905061263e81612618565b92915050565b6000806040838503121561265b5761265a612491565b5b6000612669858286016124e4565b925050602061267a8582860161262f565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126126a9576126a8612684565b5b8235905067ffffffffffffffff8111156126c6576126c5612689565b5b6020830191508360018202830111156126e2576126e161268e565b5b9250929050565b60008060008060006080868803121561270557612704612491565b5b6000612713888289016124e4565b9550506020612724888289016124e4565b94505060406127358882890161262f565b935050606086013567ffffffffffffffff81111561275657612755612496565b5b61276288828901612693565b92509250509295509295909350565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6127a681612771565b82525050565b60006020820190506127c1600083018461279d565b92915050565b6127d0816124bb565b82525050565b60006020820190506127eb60008301846127c7565b92915050565b6127fa8161260e565b82525050565b600060208201905061281560008301846127f1565b92915050565b60008060006060848603121561283457612833612491565b5b6000612842868287016124e4565b9350506020612853868287016124e4565b92505060406128648682870161262f565b9150509250925092565b600060ff82169050919050565b6128848161286e565b82525050565b600060208201905061289f600083018461287b565b92915050565b6000602082840312156128bb576128ba612491565b5b60006128c98482850161262f565b91505092915050565b60006040820190506128e760008301856127f1565b6128f460208301846127f1565b9392505050565b600062ffffff82169050919050565b612913816128fb565b811461291e57600080fd5b50565b6000813590506129308161290a565b92915050565b61293f8161249b565b811461294a57600080fd5b50565b60008135905061295c81612936565b92915050565b6000806000806080858703121561297c5761297b612491565b5b600061298a878288016124e4565b945050602061299b878288016124e4565b93505060406129ac87828801612921565b92505060606129bd8782880161294d565b91505092959194509250565b600080600080600080600060e0888a0312156129e8576129e7612491565b5b60006129f68a828b016124e4565b9750506020612a078a828b016124e4565b9650506040612a188a828b0161262f565b9550506060612a298a828b0161262f565b9450506080612a3a8a828b0161262f565b93505060a0612a4b8a828b0161262f565b92505060c0612a5c8a828b0161262f565b91505092959891949750929550565b60006fffffffffffffffffffffffffffffffff82169050919050565b612a9081612a6b565b82525050565b6000606082019050612aab6000830186612a87565b612ab860208301856127f1565b612ac560408301846127f1565b949350505050565b600080600060608486031215612ae657612ae5612491565b5b6000612af48682870161262f565b9350506020612b058682870161262f565b9250506040612b168682870161262f565b9150509250925092565b612b2981612a6b565b8114612b3457600080fd5b50565b600081359050612b4681612b20565b92915050565b60008060008060808587031215612b6657612b65612491565b5b6000612b748782880161262f565b9450506020612b8587828801612b37565b9350506040612b968782880161262f565b9250506060612ba78782880161262f565b91505092959194509250565b6000819050919050565b6000612bd8612bd3612bce8461249b565b612bb3565b61249b565b9050919050565b6000612bea82612bbd565b9050919050565b6000612bfc82612bdf565b9050919050565b612c0c81612bf1565b82525050565b6000602082019050612c276000830184612c03565b92915050565b612c3681612526565b8114612c4157600080fd5b50565b600081359050612c5381612c2d565b92915050565b60008060408385031215612c7057612c6f612491565b5b6000612c7e858286016124e4565b9250506020612c8f85828601612c44565b9150509250929050565b60008160020b9050919050565b612caf81612c99565b8114612cba57600080fd5b50565b600081359050612ccc81612ca6565b92915050565b60008060008060008060008060006101208a8c031215612cf557612cf4612491565b5b6000612d038c828d016124e4565b9950506020612d148c828d016124e4565b9850506040612d258c828d01612921565b9750506060612d368c828d01612cbd565b9650506080612d478c828d01612cbd565b95505060a0612d588c828d0161262f565b94505060c0612d698c828d0161262f565b93505060e0612d7a8c828d0161262f565b925050610100612d8c8c828d0161262f565b9150509295985092959850929598565b6000608082019050612db160008301876127f1565b612dbe6020830186612a87565b612dcb60408301856127f1565b612dd860608301846127f1565b95945050505050565b60008060408385031215612df857612df7612491565b5b6000612e06858286016124e4565b9250506020612e17858286016124e4565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612e6857607f821691505b602082108103612e7b57612e7a612e21565b5b50919050565b7f426f742064657465637465642100000000000000000000000000000000000000600082015250565b6000612eb7600d83612567565b9150612ec282612e81565b602082019050919050565b60006020820190508181036000830152612ee681612eaa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f278261260e565b9150612f328361260e565b9250828203905081811115612f4a57612f49612eed565b5b92915050565b6000612f5b8261260e565b9150612f668361260e565b9250828201905080821115612f7e57612f7d612eed565b5b92915050565b7f4e6f74207175616e742100000000000000000000000000000000000000000000600082015250565b6000612fba600a83612567565b9150612fc582612f84565b602082019050919050565b60006020820190508181036000830152612fe981612fad565b9050919050565b6000612ffb8261260e565b91506130068361260e565b92508282026130148161260e565b9150828204841483151761302b5761302a612eed565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061306c8261260e565b91506130778361260e565b92508261308757613086613032565b5b828204905092915050565b60006040820190506130a760008301856127c7565b6130b460208301846127f1565b9392505050565b6000815190506130ca81612c2d565b92915050565b6000602082840312156130e6576130e5612491565b5b60006130f4848285016130bb565b91505092915050565b6131068161260e565b82525050565b613115816124bb565b82525050565b61312481612a6b565b82525050565b60808201600082015161314060008501826130fd565b506020820151613153602085018261310c565b506040820151613166604085018261311b565b506060820151613179606085018261311b565b50505050565b6000608082019050613194600083018461312a565b92915050565b6000815190506131a981612618565b92915050565b600080604083850312156131c6576131c5612491565b5b60006131d48582860161319a565b92505060206131e58582860161319a565b9150509250929050565b6131f8816128fb565b82525050565b6132078161249b565b82525050565b600060808201905061322260008301876127c7565b61322f60208301866127c7565b61323c60408301856131ef565b61324960608301846131fe565b95945050505050565b600081519050613261816124cd565b92915050565b60006020828403121561327d5761327c612491565b5b600061328b84828501613252565b91505092915050565b60c0820160008201516132aa60008501826130fd565b5060208201516132bd60208501826130fd565b5060408201516132d060408501826130fd565b5060608201516132e360608501826130fd565b5060808201516132f660808501826130fd565b5060a082015161330960a08501826130fd565b50505050565b600060c0820190506133246000830184613294565b92915050565b60008151905061333981612b20565b92915050565b60008060006060848603121561335857613357612491565b5b60006133668682870161332a565b93505060206133778682870161319a565b92505060406133888682870161319a565b9150509250925092565b600081905092915050565b50565b60006133ad600083613392565b91506133b88261339d565b600082019050919050565b60006133ce826133a0565b9150819050919050565b7f4661696c656420746f2073656e64204574686572000000000000000000000000600082015250565b600061340e601483612567565b9150613419826133d8565b602082019050919050565b6000602082019050818103600083015261343d81613401565b9050919050565b60006020828403121561345a57613459612491565b5b60006134688482850161319a565b91505092915050565b7f4d61782077616c6c657420657863656564656421000000000000000000000000600082015250565b60006134a7601483612567565b91506134b282613471565b602082019050919050565b600060208201905081810360008301526134d68161349a565b9050919050565b60a0820160008201516134f360008501826130fd565b506020820151613506602085018261311b565b50604082015161351960408501826130fd565b50606082015161352c60608501826130fd565b50608082015161353f60808501826130fd565b50505050565b600060a08201905061355a60008301846134dd565b92915050565b613569816128fb565b82525050565b61357881612c99565b82525050565b61016082016000820151613595600085018261310c565b5060208201516135a8602085018261310c565b5060408201516135bb6040850182613560565b5060608201516135ce606085018261356f565b5060808201516135e1608085018261356f565b5060a08201516135f460a08501826130fd565b5060c082015161360760c08501826130fd565b5060e082015161361a60e08501826130fd565b5061010082015161362f6101008501826130fd565b5061012082015161364461012085018261310c565b506101408201516136596101408501826130fd565b50505050565b600061016082019050613675600083018461357e565b92915050565b6000806000806080858703121561369557613694612491565b5b60006136a38782880161319a565b94505060206136b48782880161332a565b93505060406136c58782880161319a565b92505060606136d68782880161319a565b91505092959194509250565b6136eb8161249b565b82525050565b61010082016000820151613708600085018261310c565b50602082015161371b602085018261310c565b50604082015161372e6040850182613560565b506060820151613741606085018261310c565b50608082015161375460808501826130fd565b5060a082015161376760a08501826130fd565b5060c082015161377a60c08501826130fd565b5060e082015161378d60e08501826136e2565b50505050565b6000610100820190506137a960008301846136f1565b9291505056fea2646970667358221220cdbf59d21da32bd7dae12a75571962750ec3b01d003dcd46d0053e950ebf4f9564736f6c63430008130033
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.