ETH Price: $2,632.89 (-2.35%)

Contract

0x40897C872214303b6F479a37E549eE1516B264A2
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer206848422024-09-05 13:59:5955 days ago1725544799IN
Fleta: FLETA Token
0 ETH0.000516337.96864938
Transfer175111392023-06-19 3:32:23500 days ago1687145543IN
Fleta: FLETA Token
0 ETH0.0006790818.70027211
Transfer175111232023-06-19 3:29:11500 days ago1687145351IN
Fleta: FLETA Token
0 ETH0.0006940819.07567293
Transfer175110962023-06-19 3:23:47500 days ago1687145027IN
Fleta: FLETA Token
0 ETH0.0017188419.83711049
Transfer175110472023-06-19 3:13:59500 days ago1687144439IN
Fleta: FLETA Token
0 ETH0.0008328122.91848706
Transfer175110322023-06-19 3:10:59500 days ago1687144259IN
Fleta: FLETA Token
0 ETH0.0017646120.36535509
Transfer175110172023-06-19 3:07:59500 days ago1687144079IN
Fleta: FLETA Token
0 ETH0.0007054219.39996929
Transfer175109962023-06-19 3:03:35500 days ago1687143815IN
Fleta: FLETA Token
0 ETH0.0016882719.48432035
Transfer175109782023-06-19 2:59:59500 days ago1687143599IN
Fleta: FLETA Token
0 ETH0.0007435920.43620846
Transfer175109562023-06-19 2:55:35500 days ago1687143335IN
Fleta: FLETA Token
0 ETH0.0015102917.43024542
Transfer175108802023-06-19 2:40:11500 days ago1687142411IN
Fleta: FLETA Token
0 ETH0.0008143222.39491588
Transfer175108562023-06-19 2:35:23500 days ago1687142123IN
Fleta: FLETA Token
0 ETH0.001899521.92209261
Transfer175108382023-06-19 2:31:47500 days ago1687141907IN
Fleta: FLETA Token
0 ETH0.0006369417.52259627
Transfer175108172023-06-19 2:27:35500 days ago1687141655IN
Fleta: FLETA Token
0 ETH0.001553617.93007825
Transfer175107952023-06-19 2:23:11500 days ago1687141391IN
Fleta: FLETA Token
0 ETH0.0006511517.91340165
Transfer175107662023-06-19 2:17:23500 days ago1687141043IN
Fleta: FLETA Token
0 ETH0.0015794218.22806606
Transfer175107422023-06-19 2:12:35500 days ago1687140755IN
Fleta: FLETA Token
0 ETH0.0006710518.4609135
Transfer175107202023-06-19 2:08:11500 days ago1687140491IN
Fleta: FLETA Token
0 ETH0.0014813417.0961169
Transfer175107002023-06-19 2:03:59500 days ago1687140239IN
Fleta: FLETA Token
0 ETH0.0007509620.65937811
Transfer175106782023-06-19 1:59:35500 days ago1687139975IN
Fleta: FLETA Token
0 ETH0.0017698720.42605294
Transfer175105582023-06-19 1:35:35500 days ago1687138535IN
Fleta: FLETA Token
0 ETH0.0006809316.54764467
Transfer175105162023-06-19 1:27:11500 days ago1687138031IN
Fleta: FLETA Token
0 ETH0.0015728518.1521842
Transfer175104752023-06-19 1:18:23500 days ago1687137503IN
Fleta: FLETA Token
0 ETH0.0011839922.14651301
Transfer175104462023-06-19 1:12:35500 days ago1687137155IN
Fleta: FLETA Token
0 ETH0.0009287614.34436462
Transfer175104162023-06-19 1:06:23500 days ago1687136783IN
Fleta: FLETA Token
0 ETH0.0018865221.77223981
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
206848422024-09-05 13:59:5955 days ago1725544799
0x40897C87...516B264A2
0 ETH
175110962023-06-19 3:23:47500 days ago1687145027
0x40897C87...516B264A2
0 ETH
175110322023-06-19 3:10:59500 days ago1687144259
0x40897C87...516B264A2
0 ETH
175109962023-06-19 3:03:35500 days ago1687143815
0x40897C87...516B264A2
0 ETH
175109562023-06-19 2:55:35500 days ago1687143335
0x40897C87...516B264A2
0 ETH
175108562023-06-19 2:35:23500 days ago1687142123
0x40897C87...516B264A2
0 ETH
175108172023-06-19 2:27:35500 days ago1687141655
0x40897C87...516B264A2
0 ETH
175107662023-06-19 2:17:23500 days ago1687141043
0x40897C87...516B264A2
0 ETH
175107202023-06-19 2:08:11500 days ago1687140491
0x40897C87...516B264A2
0 ETH
175106782023-06-19 1:59:35500 days ago1687139975
0x40897C87...516B264A2
0 ETH
175105162023-06-19 1:27:11500 days ago1687138031
0x40897C87...516B264A2
0 ETH
175104462023-06-19 1:12:35500 days ago1687137155
0x40897C87...516B264A2
0 ETH
175104162023-06-19 1:06:23500 days ago1687136783
0x40897C87...516B264A2
0 ETH
169732372023-04-04 4:38:11576 days ago1680583091
0x40897C87...516B264A2
0 ETH
166678702023-02-20 6:06:11619 days ago1676873171
0x40897C87...516B264A2
0 ETH
166560492023-02-18 14:16:11620 days ago1676729771
0x40897C87...516B264A2
0 ETH
166240942023-02-14 2:44:35625 days ago1676342675
0x40897C87...516B264A2
0 ETH
165686142023-02-06 8:40:47633 days ago1675672847
0x40897C87...516B264A2
0 ETH
164323562023-01-18 8:00:23652 days ago1674028823
0x40897C87...516B264A2
0 ETH
157531332022-10-15 11:11:35747 days ago1665832295
0x40897C87...516B264A2
0 ETH
154509102022-09-01 4:59:21791 days ago1662008361
0x40897C87...516B264A2
0 ETH
153767722022-08-20 9:15:27803 days ago1660986927
0x40897C87...516B264A2
0 ETH
153568342022-08-17 5:22:33806 days ago1660713753
0x40897C87...516B264A2
0 ETH
150686332022-07-03 8:56:44851 days ago1656838604
0x40897C87...516B264A2
0 ETH
150683882022-07-03 8:06:43851 days ago1656835603
0x40897C87...516B264A2
0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FletaV2Token

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-05-14
*/

pragma solidity 0.5.17;

// ----------------------------------------------------------------------------
// 'FLETA' 'Fleta Token' token contract
//
// Symbol	  : FLETA
// Name		: Fleta Token
// Total supply: 2,000,000,000 (Same as 0x7788D759F21F53533051A9AE657fA05A1E068fc6)
// Decimals	: 18
//
// Enjoy.
//
// (c) Sam Jeong / SendSquare Co. 2021. The MIT Licence.
// ----------------------------------------------------------------------------

// ----------------------------------------------------------------------------
// Safe maths
// ----------------------------------------------------------------------------
library SafeMath {
	function add(uint a, uint b) internal pure returns (uint c) {
		c = a + b;
		require(c >= a);
	}
	function sub(uint a, uint b) internal pure returns (uint c) {
		require(b <= a);
		c = a - b;
	}
	function mul(uint a, uint b) internal pure returns (uint c) {
		c = a * b;
		require(a == 0 || c / a == b);
	}
	function div(uint a, uint b) internal pure returns (uint c) {
		require(b > 0);
		c = a / b;
	}
}

// ----------------------------------------------------------------------------
// ERC Token Standard #20 Interface
// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md
// ----------------------------------------------------------------------------
contract ERC20Interface {
	function totalSupply() public view returns (uint);
	function balanceOf(address tokenOwner) public view returns (uint balance);
	function allowance(address tokenOwner, address spender) public view returns (uint remaining);
	function transfer(address to, uint tokens) public returns (bool success);
	function approve(address spender, uint tokens) public returns (bool success);
	function transferFrom(address from, address to, uint tokens) public returns (bool success);

	event Transfer(address indexed from, address indexed to, uint tokens);
	event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
}

contract Fletav2Gateway {
	function isGatewayAddress(address gatewayAddress) public view returns (bool);
}

// ----------------------------------------------------------------------------
// Contract function to receive approval and execute function in one call
//
// Borrowed from MiniMeToken
// ----------------------------------------------------------------------------
contract ApproveAndCallFallBack {
	function receiveApproval(address from, uint256 tokens, address token, bytes memory data) public;
}


// ----------------------------------------------------------------------------
// Owned contract
// ----------------------------------------------------------------------------
contract Owned {
	address public owner;

	constructor() public {
		owner = msg.sender;
	}

	modifier onlyOwner {
		require(msg.sender == owner, "only owner");
		_;
	}
}


// ----------------------------------------------------------------------------
// Manager contract
// ----------------------------------------------------------------------------
contract Managed is Owned {
	address public manager;

	constructor() public {
		manager = msg.sender;
	}

	modifier onlyManager {
		require(msg.sender == manager, "only manager");
		_;
	}
	
	// ------------------------------------------------------------------------
	// Change gateway manager
	// ------------------------------------------------------------------------
	function setGatewayManager(address addr) public onlyOwner {
		require(addr > address(0), "cannot setGatewayManager to 0x0");
		manager = addr;
	}
}

// ----------------------------------------------------------------------------
// ERC20 Token, with the addition of symbol, name and decimals and a
// fixed supply
// ----------------------------------------------------------------------------
contract FletaV2Token is ERC20Interface, Owned, Managed {
	using SafeMath for uint;

	string public symbol;
	string public name;
	uint8 public decimals;
	uint _totalSupply;
	bool _stopTrade;

	mapping(address => uint) balances;
	mapping(address => mapping(address => uint)) allowed;

	//Changes v2
	address public v1Address;
	mapping(address => bool) mswap;
	mapping(address => bool) mgatewayAddress;

	// ------------------------------------------------------------------------
	// Constructor
	// The parameters of the constructor were added in v2.
	// ------------------------------------------------------------------------
	constructor(address v1Addr) public {
		symbol = "FLETA";
		name = "Fleta Token";
		decimals = 18;
// 		_stopTrade = false;

		//blow Changes v2
//  	balances[owner] = 0;

		_totalSupply = ERC20Interface(v1Addr).totalSupply();
		v1Address = v1Addr;
	}


	// ------------------------------------------------------------------------
	// Total supply
	// ------------------------------------------------------------------------
	function totalSupply() public view returns (uint) {
		return _totalSupply.sub(balances[address(0)]);
	}


	// ------------------------------------------------------------------------
	// Stop Trade
	// ------------------------------------------------------------------------
	function stopTrade() public onlyOwner {
		require(!_stopTrade, "already stop trade");
		_stopTrade = true;
	}


	// ------------------------------------------------------------------------
	// Start Trade
	// ------------------------------------------------------------------------
	function startTrade() public onlyOwner {
		require(_stopTrade, "already start trade");
		_stopTrade = false;
	}

	// ------------------------------------------------------------------------
	// Get the token balance for account `tokenOwner`
	// Changes in v2 
	// - before swap, use V1 + V2 balance
	// - after swap, use V2 balance
	// ------------------------------------------------------------------------
	function balanceOf(address tokenOwner) public view returns (uint) {
		if (mswap[tokenOwner]) {
			return balances[tokenOwner];
		}
		return ERC20Interface(v1Address).balanceOf(tokenOwner).add(balances[tokenOwner]);
	}


	// ------------------------------------------------------------------------
	// Transfer the balance from token owner's account to `to` account
	// - Owner's account must have sufficient balance to transfer
	// - 0 value transfers are allowed
	// Changes in v2 
	// - insection _swap function See {_swap}
	// ------------------------------------------------------------------------
	function transfer(address to, uint tokens) public returns (bool) {
		require(!_stopTrade, "stop trade");
		_swap(msg.sender);
		require(to > address(0), "cannot transfer to 0x0");

		balances[msg.sender] = balances[msg.sender].sub(tokens);

		if (mgatewayAddress[to]) {
			//balances[to] = balances[to].add(tokens);
			//balances[to] = balances[to].sub(tokens);
			_totalSupply = _totalSupply.sub(tokens);
			emit Transfer(to, address(0), tokens);
		} else {
			balances[to] = balances[to].add(tokens);
		}
		emit Transfer(msg.sender, to, tokens);

		return true;
	}


	// ------------------------------------------------------------------------
	// Token owner can approve for `spender` to transferFrom(...) `tokens`
	// from the token owner's account
	//
	// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md
	// recommends that there are no checks for the approval double-spend attack
	// as this should be implemented in user interfaces
	// ------------------------------------------------------------------------
	function approve(address spender, uint tokens) public returns (bool) {
		require(!_stopTrade, "stop trade");
		_swap(msg.sender);

		allowed[msg.sender][spender] = tokens;
		emit Approval(msg.sender, spender, tokens);
		return true;
	}


	// ------------------------------------------------------------------------
	// Transfer `tokens` from the `from` account to the `to` account
	//
	// The calling account must already have sufficient tokens approve(...)-d
	// for spending from the `from` account and
	// - From account must have sufficient balance to transfer
	// - Spender must have sufficient allowance to transfer
	// - 0 value transfers are allowed
	// ------------------------------------------------------------------------
	function transferFrom(address from, address to, uint tokens) public returns (bool) {
		require(!_stopTrade, "stop trade");
		_swap(msg.sender);
		require(from > address(0), "cannot transfer from 0x0");
		require(to > address(0), "cannot transfer to 0x0");

		balances[from] = balances[from].sub(tokens);
		if(from != to && from != msg.sender) {
			allowed[from][msg.sender] = allowed[from][msg.sender].sub(tokens);
		}

		if (mgatewayAddress[to]) {
			//balances[to] = balances[to].add(tokens);
			//balances[to] = balances[to].sub(tokens);
			_totalSupply = _totalSupply.sub(tokens);
			emit Transfer(to, address(0), tokens);
		} else {
			balances[to] = balances[to].add(tokens);
		}
		emit Transfer(from, to, tokens);

		return true;
	}


	// ------------------------------------------------------------------------
	// Returns the amount of tokens approved by the owner that can be
	// transferred to the spender's account
	// ------------------------------------------------------------------------
	function allowance(address tokenOwner, address spender) public view returns (uint) {
		require(!_stopTrade, "stop trade");
		return allowed[tokenOwner][spender];
	}


	// ------------------------------------------------------------------------
	// Token owner can approve for `spender` to transferFrom(...) `tokens`
	// from the token owner's account. The `spender` contract function
	// `receiveApproval(...)` is then executed
	// ------------------------------------------------------------------------
	function approveAndCall(address spender, uint tokens, bytes memory data) public returns (bool) {
		require(msg.sender != spender, "msg.sender == spender");

		allowed[msg.sender][spender] = tokens;
		emit Approval(msg.sender, spender, tokens);
		ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, address(this), data);
		return true;
	}


	// ------------------------------------------------------------------------
	// Don't accept ETH
	// ------------------------------------------------------------------------
	function () external payable {
		revert();
	}


	// ------------------------------------------------------------------------
	// Owner can transfer out any accidentally sent ERC20 tokens
	// ------------------------------------------------------------------------
	function transferAnyERC20Token(address tokenAddress, uint tokens) public onlyOwner returns (bool) {
		return ERC20Interface(tokenAddress).transfer(owner, tokens);
	}

// ------------------------------------------------------------------------
// Below functions added to v2 
// ------------------------------------------------------------------------
	// ------------------------------------------------------------------------
	// Swap the token in v1 to v2.
	// ------------------------------------------------------------------------
	function swap(address swapAddr) public returns (bool) {
		require(!mswap[swapAddr], "already swap");
		_swap(swapAddr);
		return true;
	}
	function _swap(address swapAddr) private {
		if (!mswap[swapAddr]) {
			mswap[swapAddr] = true;
			uint _value = ERC20Interface(v1Address).balanceOf(swapAddr);
			balances[swapAddr] = balances[swapAddr].add(_value);
		}
	}

	function isGatewayAddress(address gAddr) public view returns (bool) {
		return mgatewayAddress[gAddr];
	}

	// ------------------------------------------------------------------------
	// Burns a specific amount of tokens
	// ------------------------------------------------------------------------
	function _burn(address burner, uint256 _value) private {
		_swap(burner);

		balances[burner] = balances[burner].sub(_value);
		_totalSupply = _totalSupply.sub(_value);

		emit Transfer(burner, address(0), _value);
	}

	// ------------------------------------------------------------------------
	// Minting a specific amount of tokens
	// ------------------------------------------------------------------------
	function mint(address minter, uint256 _value) public onlyManager {
		require(!_stopTrade, "stop trade");
		_swap(minter);
		balances[minter] = balances[minter].add(_value);
		_totalSupply = _totalSupply.add(_value);

		emit Transfer(address(0), minter, _value);
	}

	// ------------------------------------------------------------------------
	// The gateway address is the eth address connected to the FLETA mainnet.
	// The transferred amount to this address is burned and minted to the FLETA mainnet address associated with this address.
	// ------------------------------------------------------------------------
	function depositGatewayAdd(address gatewayAddr) public onlyManager {
		require(!_stopTrade, "stop trade");
		mgatewayAddress[gatewayAddr] = true;
		if (balanceOf(gatewayAddr) > 0) {
			_burn(gatewayAddr, balanceOf(gatewayAddr));
		}
	}

	// ------------------------------------------------------------------------
	// Remove gateway address map, revert normal address
	// ------------------------------------------------------------------------
	function depositGatewayRemove(address gatewayAddr) public onlyManager {
		require(!_stopTrade, "stop trade");
		mgatewayAddress[gatewayAddr] = false;
	}

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"v1Addr","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenOwner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","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":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"gatewayAddr","type":"address"}],"name":"depositGatewayAdd","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"gatewayAddr","type":"address"}],"name":"depositGatewayRemove","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"gAddr","type":"address"}],"name":"isGatewayAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"manager","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setGatewayManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"startTrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stopTrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"swapAddr","type":"address"}],"name":"swap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"transferAnyERC20Token","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"v1Address","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b506040516200306538038062003065833981810160405260208110156200003757600080fd5b8101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600581526020017f464c455441000000000000000000000000000000000000000000000000000000815250600290805190602001906200011692919062000253565b506040518060400160405280600b81526020017f466c65746120546f6b656e000000000000000000000000000000000000000000815250600390805190602001906200016492919062000253565b506012600460006101000a81548160ff021916908360ff1602179055508073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015620001c857600080fd5b505afa158015620001dd573d6000803e3d6000fd5b505050506040513d6020811015620001f457600080fd5b810190808051906020019092919050505060058190555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000302565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200029657805160ff1916838001178555620002c7565b82800160010185558215620002c7579182015b82811115620002c6578251825591602001919060010190620002a9565b5b509050620002d69190620002da565b5090565b620002ff91905b80821115620002fb576000816000905550600101620002e1565b5090565b90565b612d5380620003126000396000f3fe6080604052600436106101355760003560e01c806370a08231116100ab578063a9059cbb1161006f578063a9059cbb146106cc578063c48482d71461073f578063cae9ca5114610796578063db8af09a146108a0578063dc39d06d146108f1578063dd62ed3e1461096457610135565b806370a08231146105005780637f922090146105655780638baeefce146105ce5780638da5cb5b146105e557806395d89b411461063c57610135565b8063313ce567116100fd578063313ce567146103645780633a3300221461039557806340c10f19146103e6578063481c6a75146104415780634b8cb1f1146104985780636c580801146104e957610135565b806303438dd01461013a57806306fdde03146101a3578063095ea7b31461023357806318160ddd146102a657806323b872dd146102d1575b600080fd5b34801561014657600080fd5b506101896004803603602081101561015d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109e9565b604051808215151515815260200191505060405180910390f35b3480156101af57600080fd5b506101b8610abd565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f85780820151818401526020810190506101dd565b50505050905090810190601f1680156102255780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023f57600080fd5b5061028c6004803603604081101561025657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b5b565b604051808215151515815260200191505060405180910390f35b3480156102b257600080fd5b506102bb610cd9565b6040518082815260200191505060405180910390f35b3480156102dd57600080fd5b5061034a600480360360608110156102f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d34565b604051808215151515815260200191505060405180910390f35b34801561037057600080fd5b506103796112f6565b604051808260ff1660ff16815260200191505060405180910390f35b3480156103a157600080fd5b506103e4600480360360208110156103b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611309565b005b3480156103f257600080fd5b5061043f6004803603604081101561040957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114b1565b005b34801561044d57600080fd5b5061045661171a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104a457600080fd5b506104e7600480360360208110156104bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611740565b005b3480156104f557600080fd5b506104fe6118e1565b005b34801561050c57600080fd5b5061054f6004803603602081101561052357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a42565b6040518082815260200191505060405180910390f35b34801561057157600080fd5b506105b46004803603602081101561058857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c10565b604051808215151515815260200191505060405180910390f35b3480156105da57600080fd5b506105e3611c66565b005b3480156105f157600080fd5b506105fa611dc8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561064857600080fd5b50610651611ded565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610691578082015181840152602081019050610676565b50505050905090810190601f1680156106be5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156106d857600080fd5b50610725600480360360408110156106ef57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e8b565b604051808215151515815260200191505060405180910390f35b34801561074b57600080fd5b5061075461222d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107a257600080fd5b50610886600480360360608110156107b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561080057600080fd5b82018360208201111561081257600080fd5b8035906020019184600183028401116401000000008311171561083457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612253565b604051808215151515815260200191505060405180910390f35b3480156108ac57600080fd5b506108ef600480360360208110156108c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612528565b005b3480156108fd57600080fd5b5061094a6004803603604081101561091457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506126ed565b604051808215151515815260200191505060405180910390f35b34801561097057600080fd5b506109d36004803603604081101561098757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061289c565b6040518082815260200191505060405180910390f35b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610aab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f616c72656164792073776170000000000000000000000000000000000000000081525060200191505060405180910390fd5b610ab4826129a6565b60019050919050565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b535780601f10610b2857610100808354040283529160200191610b53565b820191906000526020600020905b815481529060010190602001808311610b3657829003601f168201915b505050505081565b6000600660009054906101000a900460ff1615610be0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f73746f702074726164650000000000000000000000000000000000000000000081525060200191505060405180910390fd5b610be9336129a6565b81600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000610d2f600760008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600554612bc790919063ffffffff16565b905090565b6000600660009054906101000a900460ff1615610db9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f73746f702074726164650000000000000000000000000000000000000000000081525060200191505060405180910390fd5b610dc2336129a6565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1611610e64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f63616e6e6f74207472616e736665722066726f6d20307830000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1611610f06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f63616e6e6f74207472616e7366657220746f203078300000000000000000000081525060200191505060405180910390fd5b610f5882600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bc790919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561100357503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156111185761109782600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bc790919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156111f05761117f82600554612bc790919063ffffffff16565b600581905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3611286565b61124282600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612be190919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600460009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161161146d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f63616e6e6f7420736574476174657761794d616e6167657220746f203078300081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c79206d616e61676572000000000000000000000000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900460ff16156115f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f73746f702074726164650000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611600826129a6565b61165281600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612be190919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116aa81600554612be190919063ffffffff16565b6005819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611803576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c79206d616e61676572000000000000000000000000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900460ff1615611886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f73746f702074726164650000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900460ff16611a25576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f616c72656164792073746172742074726164650000000000000000000000000081525060200191505060405180910390fd5b6000600660006101000a81548160ff021916908315150217905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611add57600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611c0b565b611c08600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611bbf57600080fd5b505afa158015611bd3573d6000803e3d6000fd5b505050506040513d6020811015611be957600080fd5b8101908080519060200190929190505050612be190919063ffffffff16565b90505b919050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900460ff1615611dab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f616c72656164792073746f70207472616465000000000000000000000000000081525060200191505060405180910390fd5b6001600660006101000a81548160ff021916908315150217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611e835780601f10611e5857610100808354040283529160200191611e83565b820191906000526020600020905b815481529060010190602001808311611e6657829003601f168201915b505050505081565b6000600660009054906101000a900460ff1615611f10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f73746f702074726164650000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611f19336129a6565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1611611fbb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f63616e6e6f74207472616e7366657220746f203078300000000000000000000081525060200191505060405180910390fd5b61200d82600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bc790919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612128576120b782600554612bc790919063ffffffff16565b600581905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36121be565b61217a82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612be190919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156122f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6d73672e73656e646572203d3d207370656e646572000000000000000000000081525060200191505060405180910390fd5b82600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156124b657808201518184015260208101905061249b565b50505050905090810190601f1680156124e35780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561250557600080fd5b505af1158015612519573d6000803e3d6000fd5b50505050600190509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146125eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c79206d616e61676572000000000000000000000000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900460ff161561266e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f73746f702074726164650000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006126d182611a42565b11156126ea576126e9816126e483611a42565b612bfb565b5b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146127b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561285957600080fd5b505af115801561286d573d6000803e3d6000fd5b505050506040513d602081101561288357600080fd5b8101908080519060200190929190505050905092915050565b6000600660009054906101000a900460ff1615612921576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f73746f702074726164650000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612bc4576001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612af057600080fd5b505afa158015612b04573d6000803e3d6000fd5b505050506040513d6020811015612b1a57600080fd5b81019080805190602001909291905050509050612b7f81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612be190919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b50565b600082821115612bd657600080fd5b818303905092915050565b6000818301905082811015612bf557600080fd5b92915050565b612c04826129a6565b612c5681600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bc790919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612cae81600554612bc790919063ffffffff16565b600581905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505056fea265627a7a723158208d2d2a6dec7f25b707439ed1206811c6c75f912be7db97e17b05e65197e85d4064736f6c634300051100320000000000000000000000007788d759f21f53533051a9ae657fa05a1e068fc6

Deployed Bytecode

0x6080604052600436106101355760003560e01c806370a08231116100ab578063a9059cbb1161006f578063a9059cbb146106cc578063c48482d71461073f578063cae9ca5114610796578063db8af09a146108a0578063dc39d06d146108f1578063dd62ed3e1461096457610135565b806370a08231146105005780637f922090146105655780638baeefce146105ce5780638da5cb5b146105e557806395d89b411461063c57610135565b8063313ce567116100fd578063313ce567146103645780633a3300221461039557806340c10f19146103e6578063481c6a75146104415780634b8cb1f1146104985780636c580801146104e957610135565b806303438dd01461013a57806306fdde03146101a3578063095ea7b31461023357806318160ddd146102a657806323b872dd146102d1575b600080fd5b34801561014657600080fd5b506101896004803603602081101561015d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109e9565b604051808215151515815260200191505060405180910390f35b3480156101af57600080fd5b506101b8610abd565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f85780820151818401526020810190506101dd565b50505050905090810190601f1680156102255780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023f57600080fd5b5061028c6004803603604081101561025657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b5b565b604051808215151515815260200191505060405180910390f35b3480156102b257600080fd5b506102bb610cd9565b6040518082815260200191505060405180910390f35b3480156102dd57600080fd5b5061034a600480360360608110156102f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d34565b604051808215151515815260200191505060405180910390f35b34801561037057600080fd5b506103796112f6565b604051808260ff1660ff16815260200191505060405180910390f35b3480156103a157600080fd5b506103e4600480360360208110156103b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611309565b005b3480156103f257600080fd5b5061043f6004803603604081101561040957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114b1565b005b34801561044d57600080fd5b5061045661171a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104a457600080fd5b506104e7600480360360208110156104bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611740565b005b3480156104f557600080fd5b506104fe6118e1565b005b34801561050c57600080fd5b5061054f6004803603602081101561052357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a42565b6040518082815260200191505060405180910390f35b34801561057157600080fd5b506105b46004803603602081101561058857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c10565b604051808215151515815260200191505060405180910390f35b3480156105da57600080fd5b506105e3611c66565b005b3480156105f157600080fd5b506105fa611dc8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561064857600080fd5b50610651611ded565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610691578082015181840152602081019050610676565b50505050905090810190601f1680156106be5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156106d857600080fd5b50610725600480360360408110156106ef57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e8b565b604051808215151515815260200191505060405180910390f35b34801561074b57600080fd5b5061075461222d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107a257600080fd5b50610886600480360360608110156107b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561080057600080fd5b82018360208201111561081257600080fd5b8035906020019184600183028401116401000000008311171561083457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612253565b604051808215151515815260200191505060405180910390f35b3480156108ac57600080fd5b506108ef600480360360208110156108c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612528565b005b3480156108fd57600080fd5b5061094a6004803603604081101561091457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506126ed565b604051808215151515815260200191505060405180910390f35b34801561097057600080fd5b506109d36004803603604081101561098757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061289c565b6040518082815260200191505060405180910390f35b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610aab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f616c72656164792073776170000000000000000000000000000000000000000081525060200191505060405180910390fd5b610ab4826129a6565b60019050919050565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b535780601f10610b2857610100808354040283529160200191610b53565b820191906000526020600020905b815481529060010190602001808311610b3657829003601f168201915b505050505081565b6000600660009054906101000a900460ff1615610be0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f73746f702074726164650000000000000000000000000000000000000000000081525060200191505060405180910390fd5b610be9336129a6565b81600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000610d2f600760008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600554612bc790919063ffffffff16565b905090565b6000600660009054906101000a900460ff1615610db9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f73746f702074726164650000000000000000000000000000000000000000000081525060200191505060405180910390fd5b610dc2336129a6565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1611610e64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f63616e6e6f74207472616e736665722066726f6d20307830000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1611610f06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f63616e6e6f74207472616e7366657220746f203078300000000000000000000081525060200191505060405180910390fd5b610f5882600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bc790919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561100357503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156111185761109782600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bc790919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156111f05761117f82600554612bc790919063ffffffff16565b600581905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3611286565b61124282600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612be190919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600460009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161161146d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f63616e6e6f7420736574476174657761794d616e6167657220746f203078300081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c79206d616e61676572000000000000000000000000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900460ff16156115f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f73746f702074726164650000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611600826129a6565b61165281600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612be190919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116aa81600554612be190919063ffffffff16565b6005819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611803576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c79206d616e61676572000000000000000000000000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900460ff1615611886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f73746f702074726164650000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900460ff16611a25576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f616c72656164792073746172742074726164650000000000000000000000000081525060200191505060405180910390fd5b6000600660006101000a81548160ff021916908315150217905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611add57600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611c0b565b611c08600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611bbf57600080fd5b505afa158015611bd3573d6000803e3d6000fd5b505050506040513d6020811015611be957600080fd5b8101908080519060200190929190505050612be190919063ffffffff16565b90505b919050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900460ff1615611dab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f616c72656164792073746f70207472616465000000000000000000000000000081525060200191505060405180910390fd5b6001600660006101000a81548160ff021916908315150217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611e835780601f10611e5857610100808354040283529160200191611e83565b820191906000526020600020905b815481529060010190602001808311611e6657829003601f168201915b505050505081565b6000600660009054906101000a900460ff1615611f10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f73746f702074726164650000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611f19336129a6565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1611611fbb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f63616e6e6f74207472616e7366657220746f203078300000000000000000000081525060200191505060405180910390fd5b61200d82600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bc790919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612128576120b782600554612bc790919063ffffffff16565b600581905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36121be565b61217a82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612be190919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156122f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6d73672e73656e646572203d3d207370656e646572000000000000000000000081525060200191505060405180910390fd5b82600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156124b657808201518184015260208101905061249b565b50505050905090810190601f1680156124e35780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561250557600080fd5b505af1158015612519573d6000803e3d6000fd5b50505050600190509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146125eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c79206d616e61676572000000000000000000000000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900460ff161561266e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f73746f702074726164650000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006126d182611a42565b11156126ea576126e9816126e483611a42565b612bfb565b5b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146127b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c79206f776e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561285957600080fd5b505af115801561286d573d6000803e3d6000fd5b505050506040513d602081101561288357600080fd5b8101908080519060200190929190505050905092915050565b6000600660009054906101000a900460ff1615612921576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f73746f702074726164650000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612bc4576001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612af057600080fd5b505afa158015612b04573d6000803e3d6000fd5b505050506040513d6020811015612b1a57600080fd5b81019080805190602001909291905050509050612b7f81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612be190919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b50565b600082821115612bd657600080fd5b818303905092915050565b6000818301905082811015612bf557600080fd5b92915050565b612c04826129a6565b612c5681600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bc790919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612cae81600554612bc790919063ffffffff16565b600581905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505056fea265627a7a723158208d2d2a6dec7f25b707439ed1206811c6c75f912be7db97e17b05e65197e85d4064736f6c63430005110032

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007788d759f21f53533051a9ae657fa05a1e068fc6

-----Decoded View---------------
Arg [0] : v1Addr (address): 0x7788D759F21F53533051A9AE657fA05A1E068fc6

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007788d759f21f53533051a9ae657fa05a1e068fc6


Deployed Bytecode Sourcemap

3878:9812:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10544:8;;;11331:141;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11331:141:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11331:141:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3991:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3991:18:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3991:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7659:242;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7659:242:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7659:242:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4970:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4970:105:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8414:761;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8414:761:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8414:761:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4013:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4013:21:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3474:148;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3474:148:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3474:148:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;12441:271;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12441:271:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12441:271:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3117:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3117:22:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13530:155;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13530:155:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13530:155:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;5546:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5546:114:0;;;:::i;:::-;;5967:222;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5967:222:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5967:222:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11708:107;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11708:107:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11708:107:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5254:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5254:112:0;;;:::i;:::-;;2738:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2738:20:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3967;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3967:20:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3967:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6586:584;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6586:584:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6586:584:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4190:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4190:24:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9965:360;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9965:360:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9965:360:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;9965:360:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9965:360:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;9965:360:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;9965:360:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13073:241;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13073:241:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13073:241:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;10783:167;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10783:167:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10783:167:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9448;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9448:167:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9448:167:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11331:141;11379:4;11399:5;:15;11405:8;11399:15;;;;;;;;;;;;;;;;;;;;;;;;;11398:16;11390:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11436:15;11442:8;11436:5;:15::i;:::-;11463:4;11456:11;;11331:141;;;:::o;3991:18::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7659:242::-;7722:4;7742:10;;;;;;;;;;;7741:11;7733:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7772:17;7778:10;7772:5;:17::i;:::-;7827:6;7796:7;:19;7804:10;7796:19;;;;;;;;;;;;;;;:28;7816:7;7796:28;;;;;;;;;;;;;;;:37;;;;7864:7;7843:37;;7852:10;7843:37;;;7873:6;7843:37;;;;;;;;;;;;;;;;;;7892:4;7885:11;;7659:242;;;;:::o;4970:105::-;5014:4;5032:38;5049:8;:20;5066:1;5049:20;;;;;;;;;;;;;;;;5032:12;;:16;;:38;;;;:::i;:::-;5025:45;;4970:105;:::o;8414:761::-;8491:4;8511:10;;;;;;;;;;;8510:11;8502:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8541:17;8547:10;8541:5;:17::i;:::-;8586:1;8571:17;;:4;:17;;;8563:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8643:1;8630:15;;:2;:15;;;8622:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8696:26;8715:6;8696:8;:14;8705:4;8696:14;;;;;;;;;;;;;;;;:18;;:26;;;;:::i;:::-;8679:8;:14;8688:4;8679:14;;;;;;;;;;;;;;;:43;;;;8738:2;8730:10;;:4;:10;;;;:32;;;;;8752:10;8744:18;;:4;:18;;;;8730:32;8727:114;;;8798:37;8828:6;8798:7;:13;8806:4;8798:13;;;;;;;;;;;;;;;:25;8812:10;8798:25;;;;;;;;;;;;;;;;:29;;:37;;;;:::i;:::-;8770:7;:13;8778:4;8770:13;;;;;;;;;;;;;;;:25;8784:10;8770:25;;;;;;;;;;;;;;;:65;;;;8727:114;8851:15;:19;8867:2;8851:19;;;;;;;;;;;;;;;;;;;;;;;;;8847:270;;;8987:24;9004:6;8987:12;;:16;;:24;;;;:::i;:::-;8972:12;:39;;;;9043:1;9022:32;;9031:2;9022:32;;;9047:6;9022:32;;;;;;;;;;;;;;;;;;8847:270;;;9087:24;9104:6;9087:8;:12;9096:2;9087:12;;;;;;;;;;;;;;;;:16;;:24;;;;:::i;:::-;9072:8;:12;9081:2;9072:12;;;;;;;;;;;;;;;:39;;;;8847:270;9141:2;9126:26;;9135:4;9126:26;;;9145:6;9126:26;;;;;;;;;;;;;;;;;;9166:4;9159:11;;8414:761;;;;;:::o;4013:21::-;;;;;;;;;;;;;:::o;3474:148::-;2864:5;;;;;;;;;;;2850:19;;:10;:19;;;2842:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3560:1;3545:17;;:4;:17;;;3537:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3613:4;3603:7;;:14;;;;;;;;;;;;;;;;;;3474:148;:::o;12441:271::-;3249:7;;;;;;;;;;;3235:21;;:10;:21;;;3227:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12520:10;;;;;;;;;;;12519:11;12511:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12550:13;12556:6;12550:5;:13::i;:::-;12587:28;12608:6;12587:8;:16;12596:6;12587:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;12568:8;:16;12577:6;12568:16;;;;;;;;;;;;;;;:47;;;;12635:24;12652:6;12635:12;;:16;;:24;;;;:::i;:::-;12620:12;:39;;;;12692:6;12671:36;;12688:1;12671:36;;;12700:6;12671:36;;;;;;;;;;;;;;;;;;12441:271;;:::o;3117:22::-;;;;;;;;;;;;;:::o;13530:155::-;3249:7;;;;;;;;;;;3235:21;;:10;:21;;;3227:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13614:10;;;;;;;;;;;13613:11;13605:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13675:5;13644:15;:28;13660:11;13644:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;13530:155;:::o;5546:114::-;2864:5;;;;;;;;;;;2850:19;;:10;:19;;;2842:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5598:10;;;;;;;;;;;5590:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5650:5;5637:10;;:18;;;;;;;;;;;;;;;;;;5546:114::o;5967:222::-;6027:4;6042:5;:17;6048:10;6042:17;;;;;;;;;;;;;;;;;;;;;;;;;6038:62;;;6074:8;:20;6083:10;6074:20;;;;;;;;;;;;;;;;6067:27;;;;6038:62;6111:73;6163:8;:20;6172:10;6163:20;;;;;;;;;;;;;;;;6126:9;;;;;;;;;;;6111:35;;;6147:10;6111:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6111:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6111:47:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6111:47:0;;;;;;;;;;;;;;;;:51;;:73;;;;:::i;:::-;6104:80;;5967:222;;;;:::o;11708:107::-;11770:4;11788:15;:22;11804:5;11788:22;;;;;;;;;;;;;;;;;;;;;;;;;11781:29;;11708:107;;;:::o;5254:112::-;2864:5;;;;;;;;;;;2850:19;;:10;:19;;;2842:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5306:10;;;;;;;;;;;5305:11;5297:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5357:4;5344:10;;:17;;;;;;;;;;;;;;;;;;5254:112::o;2738:20::-;;;;;;;;;;;;;:::o;3967:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6586:584::-;6645:4;6665:10;;;;;;;;;;;6664:11;6656:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6695:17;6701:10;6695:5;:17::i;:::-;6738:1;6725:15;;:2;:15;;;6717:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6797:32;6822:6;6797:8;:20;6806:10;6797:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;6774:8;:20;6783:10;6774:20;;;;;;;;;;;;;;;:55;;;;6840:15;:19;6856:2;6840:19;;;;;;;;;;;;;;;;;;;;;;;;;6836:270;;;6976:24;6993:6;6976:12;;:16;;:24;;;;:::i;:::-;6961:12;:39;;;;7032:1;7011:32;;7020:2;7011:32;;;7036:6;7011:32;;;;;;;;;;;;;;;;;;6836:270;;;7076:24;7093:6;7076:8;:12;7085:2;7076:12;;;;;;;;;;;;;;;;:16;;:24;;;;:::i;:::-;7061:8;:12;7070:2;7061:12;;;;;;;;;;;;;;;:39;;;;6836:270;7136:2;7115:32;;7124:10;7115:32;;;7140:6;7115:32;;;;;;;;;;;;;;;;;;7161:4;7154:11;;6586:584;;;;:::o;4190:24::-;;;;;;;;;;;;;:::o;9965:360::-;10054:4;10087:7;10073:21;;:10;:21;;;;10065:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10158:6;10127:7;:19;10135:10;10127:19;;;;;;;;;;;;;;;:28;10147:7;10127:28;;;;;;;;;;;;;;;:37;;;;10195:7;10174:37;;10183:10;10174:37;;;10204:6;10174:37;;;;;;;;;;;;;;;;;;10239:7;10216:47;;;10264:10;10276:6;10292:4;10299;10216:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10216:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10216:88:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10216:88:0;;;;10316:4;10309:11;;9965:360;;;;;:::o;13073:241::-;3249:7;;;;;;;;;;;3235:21;;:10;:21;;;3227:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13154:10;;;;;;;;;;;13153:11;13145:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13215:4;13184:15;:28;13200:11;13184:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;13253:1;13228:22;13238:11;13228:9;:22::i;:::-;:26;13224:86;;;13262:42;13268:11;13281:22;13291:11;13281:9;:22::i;:::-;13262:5;:42::i;:::-;13224:86;13073:241;:::o;10783:167::-;10875:4;2864:5;;;;;;;;;;;2850:19;;:10;:19;;;2842:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10908:12;10893:37;;;10931:5;;;;;;;;;;;10938:6;10893:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10893:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10893:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10893:52:0;;;;;;;;;;;;;;;;10886:59;;10783:167;;;;:::o;9448:::-;9525:4;9545:10;;;;;;;;;;;9544:11;9536:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9582:7;:19;9590:10;9582:19;;;;;;;;;;;;;;;:28;9602:7;9582:28;;;;;;;;;;;;;;;;9575:35;;9448:167;;;;:::o;11475:228::-;11526:5;:15;11532:8;11526:15;;;;;;;;;;;;;;;;;;;;;;;;;11521:178;;11567:4;11549:5;:15;11555:8;11549:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;11577:11;11606:9;;;;;;;;;;;11591:35;;;11627:8;11591:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11591:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11591:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11591:45:0;;;;;;;;;;;;;;;;11577:59;;11663:30;11686:6;11663:8;:18;11672:8;11663:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;11642:8;:18;11651:8;11642:18;;;;;;;;;;;;;;;:51;;;;11521:178;;11475:228;:::o;761:99::-;813:6;839:1;834;:6;;826:15;;;;;;854:1;850;:5;846:9;;761:99;;;;:::o;659:::-;711:6;732:1;728;:5;724:9;;751:1;746;:6;;738:15;;;;;;659:99;;;;:::o;12015:224::-;12075:13;12081:6;12075:5;:13::i;:::-;12114:28;12135:6;12114:8;:16;12123:6;12114:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;12095:8;:16;12104:6;12095:16;;;;;;;;;;;;;;;:47;;;;12162:24;12179:6;12162:12;;:16;;:24;;;;:::i;:::-;12147:12;:39;;;;12223:1;12198:36;;12207:6;12198:36;;;12227:6;12198:36;;;;;;;;;;;;;;;;;;12015:224;;:::o

Swarm Source

bzzr://8d2d2a6dec7f25b707439ed1206811c6c75f912be7db97e17b05e65197e85d40

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

The platform for sustainable Dapp ecosystem.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.