ETH Price: $2,605.01 (+0.19%)
Gas: 2 Gwei

Contract

0xaF183350bDF8082B486CEE23fBfcCa6eA3258DAC
 
Transaction Hash
Method
Block
From
To
Approve203263032024-07-17 12:39:2325 days ago1721219963IN
Defifirefly: DFF Token
0 ETH0.000191147.89591897
Approve201567622024-06-23 20:25:3548 days ago1719174335IN
Defifirefly: DFF Token
0 ETH0.000081583.36996325
Approve195037712024-03-24 10:20:23140 days ago1711275623IN
Defifirefly: DFF Token
0 ETH0.0004305317.78469941
Approve187800112023-12-13 21:45:59241 days ago1702503959IN
Defifirefly: DFF Token
0 ETH0.0012610652.09278298
Approve180603892023-09-04 3:19:59342 days ago1693797599IN
Defifirefly: DFF Token
0 ETH0.0002449310.11791131
Approve169159932023-03-27 3:15:59503 days ago1679886959IN
Defifirefly: DFF Token
0 ETH0.0003841515.86881793
Approve166492912023-02-17 15:23:47540 days ago1676647427IN
Defifirefly: DFF Token
0 ETH0.0008756836.17331103
Approve162636392022-12-25 18:45:59594 days ago1671993959IN
Defifirefly: DFF Token
0 ETH0.0002866811.84244395
Approve155737322022-09-20 9:13:59691 days ago1663665239IN
Defifirefly: DFF Token
0 ETH0.000143385.92310728
Approve153702382022-08-19 8:24:06723 days ago1660897446IN
Defifirefly: DFF Token
0 ETH0.0004929420.36279532
Transfer151972782022-07-23 6:16:14750 days ago1658556974IN
Defifirefly: DFF Token
0 ETH0.00025094.89
Approve151507492022-07-16 1:27:25757 days ago1657934845IN
Defifirefly: DFF Token
0 ETH0.000206188.51719132
Approve144472612022-03-24 6:08:09871 days ago1648102089IN
Defifirefly: DFF Token
0 ETH0.0008092133.42755298
Transfer132270722021-09-15 0:24:171061 days ago1631665457IN
Defifirefly: DFF Token
0 ETH0.0029684430
Approve132264192021-09-14 22:02:501061 days ago1631656970IN
Defifirefly: DFF Token
0 ETH0.002249848.39125927
Approve131880162021-09-08 23:14:141067 days ago1631142854IN
Defifirefly: DFF Token
0 ETH0.00585873126.01593727
Transfer131671912021-09-05 18:02:001070 days ago1630864920IN
Defifirefly: DFF Token
0 ETH0.0098560695
Approve131118772021-08-28 4:53:521079 days ago1630126432IN
Defifirefly: DFF Token
0 ETH0.0024914653.58903122
Approve126482592021-06-16 22:49:561151 days ago1623883796IN
Defifirefly: DFF Token
0 ETH0.0006136913.2
Approve125068982021-05-26 1:10:571173 days ago1621991457IN
Defifirefly: DFF Token
0 ETH0.0004206129.00000145
Unstake124461622021-05-16 14:57:251183 days ago1621177045IN
Defifirefly: DFF Token
0 ETH0.0011686651
Transfer123974712021-05-09 2:30:481190 days ago1620527448IN
Defifirefly: DFF Token
0 ETH0.00431087181
Approve123962152021-05-08 21:51:561190 days ago1620510716IN
Defifirefly: DFF Token
0 ETH0.0058115125
Unstake123959152021-05-08 20:48:111190 days ago1620506891IN
Defifirefly: DFF Token
0 ETH0.00357474156
Unstake123956212021-05-08 19:40:421190 days ago1620502842IN
Defifirefly: DFF Token
0 ETH0.00350599153
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
123906572021-05-08 1:25:541191 days ago1620437154
Defifirefly: DFF Token
0.1446366 ETH
123125272021-04-25 23:47:231203 days ago1619394443
Defifirefly: DFF Token
0.02092934 ETH
118791792021-02-18 6:24:491270 days ago1613629489
Defifirefly: DFF Token
0.15079962 ETH
118140872021-02-08 6:12:151280 days ago1612764735
Defifirefly: DFF Token
0.03519054 ETH
117917762021-02-04 19:48:061283 days ago1612468086
Defifirefly: DFF Token
0.17175796 ETH
116301402021-01-10 23:41:411308 days ago1610322101
Defifirefly: DFF Token
0.22484997 ETH
116232572021-01-09 22:19:071309 days ago1610230747
Defifirefly: DFF Token
0.22550279 ETH
115846862021-01-04 0:10:381315 days ago1609719038
Defifirefly: DFF Token
0.00244426 ETH
115830012021-01-03 17:55:311315 days ago1609696531
Defifirefly: DFF Token
0.32272933 ETH
115354802020-12-27 11:09:381323 days ago1609067378
Defifirefly: DFF Token
0.21087544 ETH
115041722020-12-22 15:45:501327 days ago1608651950
Defifirefly: DFF Token
0.02660509 ETH
115023242020-12-22 8:58:301328 days ago1608627510
Defifirefly: DFF Token
0.09844581 ETH
114960072020-12-21 9:52:351329 days ago1608544355
Defifirefly: DFF Token
0.04528194 ETH
114876792020-12-20 3:10:071330 days ago1608433807
Defifirefly: DFF Token
0.46502077 ETH
114858152020-12-19 20:17:451330 days ago1608409065
Defifirefly: DFF Token
0.13654527 ETH
114838342020-12-19 13:02:091331 days ago1608382929
Defifirefly: DFF Token
0.04623919 ETH
114569192020-12-15 9:52:301335 days ago1608025950
Defifirefly: DFF Token
0.00918003 ETH
114204042020-12-09 18:53:091340 days ago1607539989
Defifirefly: DFF Token
0.04741143 ETH
114125032020-12-08 13:49:531342 days ago1607435393
Defifirefly: DFF Token
0.02715834 ETH
114121382020-12-08 12:25:171342 days ago1607430317
Defifirefly: DFF Token
0.01132507 ETH
114082732020-12-07 22:10:391342 days ago1607379039
Defifirefly: DFF Token
0.01796532 ETH
114011282020-12-06 19:47:371343 days ago1607284057
Defifirefly: DFF Token
0.00362699 ETH
113819742020-12-03 21:00:251346 days ago1607029225
Defifirefly: DFF Token
0.01366805 ETH
113811932020-12-03 18:07:351346 days ago1607018855
Defifirefly: DFF Token
0.01748242 ETH
113681342020-12-01 18:04:581348 days ago1606845898
Defifirefly: DFF Token
0.0248818 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DeFiFirefly

Compiler Version
v0.5.13+commit.5b0b510c

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2020-09-04
*/

pragma solidity 0.5.13;

interface Callable {
	function tokenCallback(address _from, uint256 _tokens, bytes calldata _data) external returns (bool);
}

contract DeFiFirefly {

	uint256 constant public INITIAL_SUPPLY = 9e13; // 900,000
	uint256 public unallocatedEth;
	uint256 id;
	mapping(uint256 => address) idToAddress;
	mapping(address => bool) isUser;

	string constant public name = "Defi Firefly";
	string constant public symbol = "DFF";
	uint8 constant public decimals = 8;

	struct User {
		uint256 balance;
		uint256 staked;
		mapping(address => uint256) allowance;
		uint256 dividend;
		uint256 totalEarned;
		uint256 stakeTimestamp;
	}

	struct Info {
		uint256 totalSupply;
		uint256 totalStaked;
		mapping(address => User) users;
		address admin;
	}
	Info public info;

	event Transfer(address indexed from, address indexed to, uint256 tokens);
	event Approval(address indexed owner, address indexed spender, uint256 tokens);
	event Stake(address indexed owner, uint256 tokens);
	event Unstake(address indexed owner, uint256 tokens);
	event Collect(address indexed owner, uint256 amount);
	event Fee(uint256 tokens);
	event POOLDDIVIDENDCALCULATE(uint256 totalStaked, uint256 amount,uint256 sharePerToken,uint256 eligibleMembers, uint256 totalDistributed);


	constructor() public {
		info.admin = msg.sender;
		info.totalSupply = INITIAL_SUPPLY;
		info.users[msg.sender].balance = INITIAL_SUPPLY;
		emit Transfer(address(0x0), msg.sender, INITIAL_SUPPLY);
		id =0;
		idToAddress[id] = msg.sender;
		isUser[msg.sender] = true;
		id++;
	}

	function stake(uint256 _tokens) external {
		_stake(_tokens);
	}

	function unstake(uint256 _tokens) external {
		_unstake(_tokens);
	}

	function collectDividend() public returns (uint256) {
	    uint256 _dividends = dividendsOf(msg.sender);
		require(_dividends >= 0, "no dividends to recieve");
		address(uint160(msg.sender)).transfer(_dividends);
		emit Collect(msg.sender, _dividends);
		info.users[msg.sender].dividend = 0;
		info.users[msg.sender].totalEarned += _dividends;
		return _dividends;
	}
	
	function sendDividend() external payable onlyAdmin returns(uint256){
	    unallocatedEth += msg.value;
	    return unallocatedEth;
	}

	function distribute() external onlyAdmin {
		require(info.totalStaked > 0,"no stakers to distribute");
		require(address(this).balance > 0, "no dividend to distribute");
		uint256 share;
		uint256 count;
		uint256 distributed;
		share = div(unallocatedEth, div(info.totalStaked,1e8,"division error"),"invaid holding supply" );
		for(uint256 i=1; i<id; i++){
            if(stakedOf(idToAddress[i]) >0){
                info.users[idToAddress[i]].dividend += mul(share, div(stakedOf(idToAddress[i]),1e8,"division error"));
                distributed += mul(share, div(stakedOf(idToAddress[i]),1e8,"division error"));
                count++;
            }
        }
        emit POOLDDIVIDENDCALCULATE(info.totalStaked, unallocatedEth, share, count, distributed);
        address(uint160(info.admin)).transfer(unallocatedEth - distributed);
        if(share > 0){
            unallocatedEth = 0;
        }
	}

	function transfer(address _to, uint256 _tokens) external returns (bool) {
		_transfer(msg.sender, _to, _tokens);
		return true;
	}

	function approve(address _spender, uint256 _tokens) external returns (bool) {
		info.users[msg.sender].allowance[_spender] = _tokens;
		emit Approval(msg.sender, _spender, _tokens);
		return true;
	}

	function transferFrom(address _from, address _to, uint256 _tokens) external returns (bool) {
		require(info.users[_from].allowance[msg.sender] >= _tokens);
		info.users[_from].allowance[msg.sender] -= _tokens;
		_transfer(_from, _to, _tokens);
		return true;
	}

	function transferAndCall(address _to, uint256 _tokens, bytes calldata _data) external returns (bool) {
		uint256 _transferred = _transfer(msg.sender, _to, _tokens);
		uint32 _size;
		assembly {
			_size := extcodesize(_to)
		}
		if (_size > 0) {
			require(Callable(_to).tokenCallback(msg.sender, _transferred, _data));
		}
		return true;
	}

	function bulkTransfer(address[] calldata _receivers, uint256[] calldata _amounts) external {
		require(_receivers.length == _amounts.length);
		for (uint256 i = 0; i < _receivers.length; i++) {
			_transfer(msg.sender, _receivers[i], _amounts[i]);
		}
	}

	function totalSupply() public view returns (uint256) {
		return info.totalSupply;
	}

	function totalStaked() public view returns (uint256) {
		return info.totalStaked;
	}

	function balanceOf(address _user) public view returns (uint256) {
		return info.users[_user].balance - stakedOf(_user);
	}

	function stakedOf(address _user) public view returns (uint256) {
		return info.users[_user].staked;
	}

	function dividendsOf(address _user) public view returns (uint256) {
        return	info.users[_user].dividend;
	}

	function allowance(address _user, address _spender) public view returns (uint256) {
		return info.users[_user].allowance[_spender];
	}
	
	function userTotalEarned(address _user) public view returns(uint256){
	    return info.users[_user].totalEarned;
	}
	
	modifier onlyAdmin(){
        require(msg.sender == info.admin,"only admin can change transaction fee ");
        _;
    }
    
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
    
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

	function allInfoFor(address _user) public view returns (uint256 userBalance, uint256 userStaked, uint256 userDividends,uint256 totalEarned) {
		return ( balanceOf(_user), stakedOf(_user), dividendsOf(_user),userTotalEarned(_user));
	}

    function _transfer(address _from, address _to, uint256 _tokens) internal returns (uint256) {
		require(balanceOf(_from) >= _tokens, "insufficient funds");
		if(!isUser[_to]){
		    idToAddress[id] = _to;
		    isUser[_to] = true;
		    id++;
		}
		info.users[_from].balance -= _tokens;
        info.users[_to].balance += _tokens;
        emit Transfer(_from, _to, _tokens);
        return _tokens;
    }

	function _stake(uint256 _amount) internal {
		require(balanceOf(msg.sender) >= _amount, "insufficient funds");
		info.totalStaked += _amount;
		info.users[msg.sender].staked += _amount;
		info.users[msg.sender].stakeTimestamp = now;
		emit Transfer(msg.sender, address(this), _amount);
		emit Stake(msg.sender, _amount);
	}

    function _unstake(uint256 _amount) internal {
		require(stakedOf(msg.sender) >= _amount,"user stake already 0");
		require(info.users[msg.sender].stakeTimestamp + 24 hours <= now,"must wait 24 hours before unstaking");
		if(dividendsOf(msg.sender)>0){
		    collectDividend();
		}
		info.totalStaked -= _amount;
		info.users[msg.sender].staked -= _amount;
		emit Unstake(msg.sender, _amount);
	}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"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":"tokens","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Collect","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Fee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalStaked","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sharePerToken","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eligibleMembers","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalDistributed","type":"uint256"}],"name":"POOLDDIVIDENDCALCULATE","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Stake","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Unstake","type":"event"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"allInfoFor","outputs":[{"internalType":"uint256","name":"userBalance","type":"uint256"},{"internalType":"uint256","name":"userStaked","type":"uint256"},{"internalType":"uint256","name":"userDividends","type":"uint256"},{"internalType":"uint256","name":"totalEarned","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","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":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"_receivers","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"bulkTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"collectDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"distribute","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"dividendsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"info","outputs":[{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"totalStaked","type":"uint256"},{"internalType":"address","name":"admin","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"sendDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"stake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"stakedOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"transferAndCall","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":"unallocatedEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"unstake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"userTotalEarned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b5033600460030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506551dac207a0006004600001819055506551dac207a000600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6551dac207a0006040518082815260200191505060405180910390a360006001819055503360026000600154815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016000815480929190600101919050555061213e806101f66000396000f3fe60806040526004361061014a5760003560e01c806370a08231116100b6578063a98325b61161006f578063a98325b6146108c1578063af500ba3146108ec578063c678e61814610951578063dd62ed3e1461096f578063e4fc6b6d146109f4578063ed6a2a8d14610a0b5761014a565b806370a082311461068e578063817b1cd2146106f35780638e6dbe881461071e57806395d89b4114610783578063a694fc3a14610813578063a9059cbb1461084e5761014a565b80632e17de78116101085780632e17de78146104505780632ff2e9dc1461048b578063313ce567146104b6578063370158ea146104e75780634000aea01461054c57806357f6b812146106145761014a565b806265318b1461014f57806306fdde03146101b4578063095ea7b314610244578063153a1f3e146102b757806318160ddd1461039257806323b872dd146103bd575b600080fd5b34801561015b57600080fd5b5061019e6004803603602081101561017257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a36565b6040518082815260200191505060405180910390f35b3480156101c057600080fd5b506101c9610a85565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102095780820151818401526020810190506101ee565b50505050905090810190601f1680156102365780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025057600080fd5b5061029d6004803603604081101561026757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610abe565b604051808215151515815260200191505060405180910390f35b3480156102c357600080fd5b50610390600480360360408110156102da57600080fd5b81019080803590602001906401000000008111156102f757600080fd5b82018360208201111561030957600080fd5b8035906020019184602083028401116401000000008311171561032b57600080fd5b90919293919293908035906020019064010000000081111561034c57600080fd5b82018360208201111561035e57600080fd5b8035906020019184602083028401116401000000008311171561038057600080fd5b9091929391929390505050610bb6565b005b34801561039e57600080fd5b506103a7610c33565b6040518082815260200191505060405180910390f35b3480156103c957600080fd5b50610436600480360360608110156103e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c40565b604051808215151515815260200191505060405180910390f35b34801561045c57600080fd5b506104896004803603602081101561047357600080fd5b8101908080359060200190929190505050610d78565b005b34801561049757600080fd5b506104a0610d84565b6040518082815260200191505060405180910390f35b3480156104c257600080fd5b506104cb610d8e565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104f357600080fd5b506104fc610d93565b604051808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390f35b34801561055857600080fd5b506105fa6004803603606081101561056f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156105b657600080fd5b8201836020820111156105c857600080fd5b803590602001918460018302840111640100000000831117156105ea57600080fd5b9091929391929390505050610dcb565b604051808215151515815260200191505060405180910390f35b34801561062057600080fd5b506106636004803603602081101561063757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610efe565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b34801561069a57600080fd5b506106dd600480360360208110156106b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f37565b6040518082815260200191505060405180910390f35b3480156106ff57600080fd5b50610708610f90565b6040518082815260200191505060405180910390f35b34801561072a57600080fd5b5061076d6004803603602081101561074157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f9d565b6040518082815260200191505060405180910390f35b34801561078f57600080fd5b50610798610fec565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107d85780820151818401526020810190506107bd565b50505050905090810190601f1680156108055780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561081f57600080fd5b5061084c6004803603602081101561083657600080fd5b8101908080359060200190929190505050611025565b005b34801561085a57600080fd5b506108a76004803603604081101561087157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611031565b604051808215151515815260200191505060405180910390f35b3480156108cd57600080fd5b506108d6611049565b6040518082815260200191505060405180910390f35b3480156108f857600080fd5b5061093b6004803603602081101561090f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611208565b6040518082815260200191505060405180910390f35b610959611257565b6040518082815260200191505060405180910390f35b34801561097b57600080fd5b506109de6004803603604081101561099257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611319565b6040518082815260200191505060405180910390f35b348015610a0057600080fd5b50610a096113a6565b005b348015610a1757600080fd5b50610a206118d1565b6040518082815260200191505060405180910390f35b6000600460020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301549050919050565b6040518060400160405280600c81526020017f446566692046697265666c79000000000000000000000000000000000000000081525081565b600081600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b818190508484905014610bc857600080fd5b60008090505b84849050811015610c2c57610c1e33868684818110610be957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16858585818110610c1257fe5b905060200201356118d7565b508080600101915050610bce565b5050505050565b6000600460000154905090565b600081600460020160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610cd157600080fd5b81600460020160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550610d6c8484846118d7565b50600190509392505050565b610d8181611b7c565b50565b6551dac207a00081565b600881565b60048060000154908060010154908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b600080610dd93387876118d7565b90506000863b905060008163ffffffff161115610ef0578673ffffffffffffffffffffffffffffffffffffffff16636be32e73338488886040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050602060405180830381600087803b158015610eab57600080fd5b505af1158015610ebf573d6000803e3d6000fd5b505050506040513d6020811015610ed557600080fd5b8101908080519060200190929190505050610eef57600080fd5b5b600192505050949350505050565b600080600080610f0d85610f37565b610f1686611208565b610f1f87610a36565b610f2888610f9d565b93509350935093509193509193565b6000610f4282611208565b600460020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154039050919050565b6000600460010154905090565b6000600460020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401549050919050565b6040518060400160405280600381526020017f444646000000000000000000000000000000000000000000000000000000000081525081565b61102e81611d6f565b50565b600061103e3384846118d7565b506001905092915050565b60008061105533610a36565b905060008110156110ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f6e6f206469766964656e647320746f207265636965766500000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611114573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167f4256a058fa2b123d727576d3d31e3a272db98ee5fe264e229610ce43dc849999826040518082815260200191505060405180910390a26000600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555080600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401600082825401925050819055508091505090565b6000600460020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b6000600460030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806120a06026913960400191505060405180910390fd5b346000808282540192505081905550600054905090565b6000600460020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600460030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461144f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806120a06026913960400191505060405180910390fd5b6000600460010154116114ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6e6f207374616b65727320746f2064697374726962757465000000000000000081525060200191505060405180910390fd5b60003073ffffffffffffffffffffffffffffffffffffffff163111611557576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f6e6f206469766964656e6420746f20646973747269627574650000000000000081525060200191505060405180910390fd5b60008060006115e66000546115ab6004600101546305f5e1006040518060400160405280600e81526020017f6469766973696f6e206572726f72000000000000000000000000000000000000815250611f53565b6040518060400160405280601581526020017f696e7661696420686f6c64696e6720737570706c790000000000000000000000815250611f53565b92506000600190505b6001548110156117ec5760006116376002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611208565b11156117df576116c5846116c06116806002600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611208565b6305f5e1006040518060400160405280600e81526020017f6469766973696f6e206572726f72000000000000000000000000000000000000815250611f53565b612019565b600460020160006002600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301600082825401925050819055506117d2846117cd61178d6002600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611208565b6305f5e1006040518060400160405280600e81526020017f6469766973696f6e206572726f72000000000000000000000000000000000000815250611f53565b612019565b8201915082806001019350505b80806001019150506115ef565b507f635e0fca2664c9e1893ed1bccc47645ceda5e57b4f0d8f564df5c8a252d762ea600460010154600054858585604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a1600460030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc82600054039081150290604051600060405180830381858888f193505050501580156118ba573d6000803e3d6000fd5b5060008311156118cc57600080819055505b505050565b60005481565b6000816118e385610f37565b1015611957576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f696e73756666696369656e742066756e6473000000000000000000000000000081525060200191505060405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611a67578260026000600154815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600081548092919060010191905055505b81600460020160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000828254039250508190555081600460020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a38190509392505050565b80611b8633611208565b1015611bfa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f75736572207374616b6520616c7265616479203000000000000000000000000081525060200191505060405180910390fd5b4262015180600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154011115611c9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806120c66023913960400191505060405180910390fd5b6000611ca833610a36565b1115611cb857611cb6611049565b505b8060046001016000828254039250508190555080600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff167f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd826040518082815260200191505060405180910390a250565b80611d7933610f37565b1015611ded576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f696e73756666696369656e742066756e6473000000000000000000000000000081525060200191505060405180910390fd5b8060046001016000828254019250508190555080600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555042600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a33373ffffffffffffffffffffffffffffffffffffffff167febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a826040518082815260200191505060405180910390a250565b60008083118290611fff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611fc4578082015181840152602081019050611fa9565b50505050905090810190601f168015611ff15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161200b57fe5b049050809150509392505050565b60008083141561202c5760009050612099565b600082840290508284828161203d57fe5b0414612094576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806120e96021913960400191505060405180910390fd5b809150505b9291505056fe6f6e6c792061646d696e2063616e206368616e6765207472616e73616374696f6e20666565206d757374207761697420323420686f757273206265666f726520756e7374616b696e67536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a723158206f6bbec3e3ad3b7a8d2e9f209aa6c36ba80cfa786a711572c4152e67e395aa3e64736f6c634300050d0032

Deployed Bytecode

0x60806040526004361061014a5760003560e01c806370a08231116100b6578063a98325b61161006f578063a98325b6146108c1578063af500ba3146108ec578063c678e61814610951578063dd62ed3e1461096f578063e4fc6b6d146109f4578063ed6a2a8d14610a0b5761014a565b806370a082311461068e578063817b1cd2146106f35780638e6dbe881461071e57806395d89b4114610783578063a694fc3a14610813578063a9059cbb1461084e5761014a565b80632e17de78116101085780632e17de78146104505780632ff2e9dc1461048b578063313ce567146104b6578063370158ea146104e75780634000aea01461054c57806357f6b812146106145761014a565b806265318b1461014f57806306fdde03146101b4578063095ea7b314610244578063153a1f3e146102b757806318160ddd1461039257806323b872dd146103bd575b600080fd5b34801561015b57600080fd5b5061019e6004803603602081101561017257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a36565b6040518082815260200191505060405180910390f35b3480156101c057600080fd5b506101c9610a85565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102095780820151818401526020810190506101ee565b50505050905090810190601f1680156102365780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025057600080fd5b5061029d6004803603604081101561026757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610abe565b604051808215151515815260200191505060405180910390f35b3480156102c357600080fd5b50610390600480360360408110156102da57600080fd5b81019080803590602001906401000000008111156102f757600080fd5b82018360208201111561030957600080fd5b8035906020019184602083028401116401000000008311171561032b57600080fd5b90919293919293908035906020019064010000000081111561034c57600080fd5b82018360208201111561035e57600080fd5b8035906020019184602083028401116401000000008311171561038057600080fd5b9091929391929390505050610bb6565b005b34801561039e57600080fd5b506103a7610c33565b6040518082815260200191505060405180910390f35b3480156103c957600080fd5b50610436600480360360608110156103e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c40565b604051808215151515815260200191505060405180910390f35b34801561045c57600080fd5b506104896004803603602081101561047357600080fd5b8101908080359060200190929190505050610d78565b005b34801561049757600080fd5b506104a0610d84565b6040518082815260200191505060405180910390f35b3480156104c257600080fd5b506104cb610d8e565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104f357600080fd5b506104fc610d93565b604051808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390f35b34801561055857600080fd5b506105fa6004803603606081101561056f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156105b657600080fd5b8201836020820111156105c857600080fd5b803590602001918460018302840111640100000000831117156105ea57600080fd5b9091929391929390505050610dcb565b604051808215151515815260200191505060405180910390f35b34801561062057600080fd5b506106636004803603602081101561063757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610efe565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b34801561069a57600080fd5b506106dd600480360360208110156106b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f37565b6040518082815260200191505060405180910390f35b3480156106ff57600080fd5b50610708610f90565b6040518082815260200191505060405180910390f35b34801561072a57600080fd5b5061076d6004803603602081101561074157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f9d565b6040518082815260200191505060405180910390f35b34801561078f57600080fd5b50610798610fec565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107d85780820151818401526020810190506107bd565b50505050905090810190601f1680156108055780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561081f57600080fd5b5061084c6004803603602081101561083657600080fd5b8101908080359060200190929190505050611025565b005b34801561085a57600080fd5b506108a76004803603604081101561087157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611031565b604051808215151515815260200191505060405180910390f35b3480156108cd57600080fd5b506108d6611049565b6040518082815260200191505060405180910390f35b3480156108f857600080fd5b5061093b6004803603602081101561090f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611208565b6040518082815260200191505060405180910390f35b610959611257565b6040518082815260200191505060405180910390f35b34801561097b57600080fd5b506109de6004803603604081101561099257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611319565b6040518082815260200191505060405180910390f35b348015610a0057600080fd5b50610a096113a6565b005b348015610a1757600080fd5b50610a206118d1565b6040518082815260200191505060405180910390f35b6000600460020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301549050919050565b6040518060400160405280600c81526020017f446566692046697265666c79000000000000000000000000000000000000000081525081565b600081600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b818190508484905014610bc857600080fd5b60008090505b84849050811015610c2c57610c1e33868684818110610be957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16858585818110610c1257fe5b905060200201356118d7565b508080600101915050610bce565b5050505050565b6000600460000154905090565b600081600460020160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610cd157600080fd5b81600460020160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550610d6c8484846118d7565b50600190509392505050565b610d8181611b7c565b50565b6551dac207a00081565b600881565b60048060000154908060010154908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b600080610dd93387876118d7565b90506000863b905060008163ffffffff161115610ef0578673ffffffffffffffffffffffffffffffffffffffff16636be32e73338488886040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050602060405180830381600087803b158015610eab57600080fd5b505af1158015610ebf573d6000803e3d6000fd5b505050506040513d6020811015610ed557600080fd5b8101908080519060200190929190505050610eef57600080fd5b5b600192505050949350505050565b600080600080610f0d85610f37565b610f1686611208565b610f1f87610a36565b610f2888610f9d565b93509350935093509193509193565b6000610f4282611208565b600460020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154039050919050565b6000600460010154905090565b6000600460020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401549050919050565b6040518060400160405280600381526020017f444646000000000000000000000000000000000000000000000000000000000081525081565b61102e81611d6f565b50565b600061103e3384846118d7565b506001905092915050565b60008061105533610a36565b905060008110156110ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f6e6f206469766964656e647320746f207265636965766500000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611114573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167f4256a058fa2b123d727576d3d31e3a272db98ee5fe264e229610ce43dc849999826040518082815260200191505060405180910390a26000600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555080600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401600082825401925050819055508091505090565b6000600460020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b6000600460030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806120a06026913960400191505060405180910390fd5b346000808282540192505081905550600054905090565b6000600460020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600460030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461144f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806120a06026913960400191505060405180910390fd5b6000600460010154116114ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6e6f207374616b65727320746f2064697374726962757465000000000000000081525060200191505060405180910390fd5b60003073ffffffffffffffffffffffffffffffffffffffff163111611557576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f6e6f206469766964656e6420746f20646973747269627574650000000000000081525060200191505060405180910390fd5b60008060006115e66000546115ab6004600101546305f5e1006040518060400160405280600e81526020017f6469766973696f6e206572726f72000000000000000000000000000000000000815250611f53565b6040518060400160405280601581526020017f696e7661696420686f6c64696e6720737570706c790000000000000000000000815250611f53565b92506000600190505b6001548110156117ec5760006116376002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611208565b11156117df576116c5846116c06116806002600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611208565b6305f5e1006040518060400160405280600e81526020017f6469766973696f6e206572726f72000000000000000000000000000000000000815250611f53565b612019565b600460020160006002600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301600082825401925050819055506117d2846117cd61178d6002600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611208565b6305f5e1006040518060400160405280600e81526020017f6469766973696f6e206572726f72000000000000000000000000000000000000815250611f53565b612019565b8201915082806001019350505b80806001019150506115ef565b507f635e0fca2664c9e1893ed1bccc47645ceda5e57b4f0d8f564df5c8a252d762ea600460010154600054858585604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a1600460030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc82600054039081150290604051600060405180830381858888f193505050501580156118ba573d6000803e3d6000fd5b5060008311156118cc57600080819055505b505050565b60005481565b6000816118e385610f37565b1015611957576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f696e73756666696369656e742066756e6473000000000000000000000000000081525060200191505060405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611a67578260026000600154815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600081548092919060010191905055505b81600460020160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000828254039250508190555081600460020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a38190509392505050565b80611b8633611208565b1015611bfa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f75736572207374616b6520616c7265616479203000000000000000000000000081525060200191505060405180910390fd5b4262015180600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154011115611c9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806120c66023913960400191505060405180910390fd5b6000611ca833610a36565b1115611cb857611cb6611049565b505b8060046001016000828254039250508190555080600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff167f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd826040518082815260200191505060405180910390a250565b80611d7933610f37565b1015611ded576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f696e73756666696369656e742066756e6473000000000000000000000000000081525060200191505060405180910390fd5b8060046001016000828254019250508190555080600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555042600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a33373ffffffffffffffffffffffffffffffffffffffff167febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a826040518082815260200191505060405180910390a250565b60008083118290611fff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611fc4578082015181840152602081019050611fa9565b50505050905090810190601f168015611ff15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161200b57fe5b049050809150509392505050565b60008083141561202c5760009050612099565b600082840290508284828161203d57fe5b0414612094576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806120e96021913960400191505060405180910390fd5b809150505b9291505056fe6f6e6c792061646d696e2063616e206368616e6765207472616e73616374696f6e20666565206d757374207761697420323420686f757273206265666f726520756e7374616b696e67536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a723158206f6bbec3e3ad3b7a8d2e9f209aa6c36ba80cfa786a711572c4152e67e395aa3e64736f6c634300050d0032

Deployed Bytecode Sourcemap

158:7089:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4865:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4865:115:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4865:115:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;372:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;372:44: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;372:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3346:203;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3346:203:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3346:203:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4181:259;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4181:259:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4181:259:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4181:259:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4181:259:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;4181:259:0;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4181:259:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4181:259:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;4181:259:0;;;;;;;;;;;;:::i;:::-;;4445:86;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4445:86:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3554:266;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3554:266:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3554:266:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1679:70;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1679:70:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1679:70:0;;;;;;;;;;;;;;;;;:::i;:::-;;185:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;185:45:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;461:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;461:34:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;797:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;797:16:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3825:351;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3825:351:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3825:351:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;3825:351:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3825:351: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;3825:351:0;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5839:236;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5839:236:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5839:236:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4627:124;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4627:124:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4627:124:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4536:86;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4536:86:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5127:117;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5127:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5127:117:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;420:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;420:37: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;420:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1608:66;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1608:66:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1608:66:0;;;;;;;;;;;;;;;;;:::i;:::-;;3208:133;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3208:133:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3208:133:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1754:375;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1754:375:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4756:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4756:104:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4756:104:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2135:136;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4985;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4985:136:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4985:136:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2276:927;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2276:927:0;;;:::i;:::-;;245:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;245:29:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4865:115;4922:7;4949:4;:10;;:17;4960:5;4949:17;;;;;;;;;;;;;;;:26;;;4942:33;;4865:115;;;:::o;372:44::-;;;;;;;;;;;;;;;;;;;:::o;3346:203::-;3416:4;3472:7;3427:4;:10;;:22;3438:10;3427:22;;;;;;;;;;;;;;;:32;;:42;3460:8;3427:42;;;;;;;;;;;;;;;:52;;;;3510:8;3489:39;;3498:10;3489:39;;;3520:7;3489:39;;;;;;;;;;;;;;;;;;3540:4;3533:11;;3346:203;;;;:::o;4181:259::-;4306:8;;:15;;4285:10;;:17;;:36;4277:45;;;;;;4332:9;4344:1;4332:13;;4327:109;4351:10;;:17;;4347:1;:21;4327:109;;;4381:49;4391:10;4403;;4414:1;4403:13;;;;;;;;;;;;;;;4418:8;;4427:1;4418:11;;;;;;;;;;;;;4381:9;:49::i;:::-;;4370:3;;;;;;;4327:109;;;;4181:259;;;;:::o;4445:86::-;4489:7;4510:4;:16;;;4503:23;;4445:86;:::o;3554:266::-;3639:4;3701:7;3658:4;:10;;:17;3669:5;3658:17;;;;;;;;;;;;;;;:27;;:39;3686:10;3658:39;;;;;;;;;;;;;;;;:50;;3650:59;;;;;;3757:7;3714:4;:10;;:17;3725:5;3714:17;;;;;;;;;;;;;;;:27;;:39;3742:10;3714:39;;;;;;;;;;;;;;;;:50;;;;;;;;;;;3769:30;3779:5;3786:3;3791:7;3769:9;:30::i;:::-;;3811:4;3804:11;;3554:266;;;;;:::o;1679:70::-;1727:17;1736:7;1727:8;:17::i;:::-;1679:70;:::o;185:45::-;226:4;185:45;:::o;461:34::-;494:1;461:34;:::o;797:16::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3825:351::-;3920:4;3931:20;3954:35;3964:10;3976:3;3981:7;3954:9;:35::i;:::-;3931:58;;3994:12;4047:3;4035:16;4026:25;;4072:1;4064:5;:9;;;4060:96;;;4098:3;4089:27;;;4117:10;4129:12;4143:5;;4089:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;4089:60:0;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4089:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4089:60:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4089:60:0;;;;;;;;;;;;;;;;4081:69;;;;;;4060:96;4167:4;4160:11;;;;3825:351;;;;;;:::o;5839:236::-;5895:19;5916:18;5936:21;5958:19;5993:16;6003:5;5993:9;:16::i;:::-;6011:15;6020:5;6011:8;:15::i;:::-;6028:18;6040:5;6028:11;:18::i;:::-;6047:22;6063:5;6047:15;:22::i;:::-;5984:86;;;;;;;;5839:236;;;;;:::o;4627:124::-;4682:7;4731:15;4740:5;4731:8;:15::i;:::-;4703:4;:10;;:17;4714:5;4703:17;;;;;;;;;;;;;;;:25;;;:43;4696:50;;4627:124;;;:::o;4536:86::-;4580:7;4601:4;:16;;;4594:23;;4536:86;:::o;5127:117::-;5187:7;5210:4;:10;;:17;5221:5;5210:17;;;;;;;;;;;;;;;:29;;;5203:36;;5127:117;;;:::o;420:37::-;;;;;;;;;;;;;;;;;;;:::o;1608:66::-;1654:15;1661:7;1654:6;:15::i;:::-;1608:66;:::o;3208:133::-;3274:4;3285:35;3295:10;3307:3;3312:7;3285:9;:35::i;:::-;;3332:4;3325:11;;3208:133;;;;:::o;1754:375::-;1797:7;1814:18;1835:23;1847:10;1835:11;:23::i;:::-;1814:44;;1885:1;1871:10;:15;;1863:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1935:10;1919:37;;:49;1957:10;1919:49;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1919:49:0;1986:10;1978:31;;;1998:10;1978:31;;;;;;;;;;;;;;;;;;2048:1;2014:4;:10;;:22;2025:10;2014:22;;;;;;;;;;;;;;;:31;;:35;;;;2092:10;2054:4;:10;;:22;2065:10;2054:22;;;;;;;;;;;;;;;:34;;;:48;;;;;;;;;;;2114:10;2107:17;;;1754:375;:::o;4756:104::-;4810:7;4831:4;:10;;:17;4842:5;4831:17;;;;;;;;;;;;;;;:24;;;4824:31;;4756:104;;;:::o;2135:136::-;2194:7;5303:4;:10;;;;;;;;;;;;5289:24;;:10;:24;;;5281:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2228:9;2210:14;;:27;;;;;;;;;;;2252:14;;2245:21;;2135:136;:::o;4985:::-;5058:7;5079:4;:10;;:17;5090:5;5079:17;;;;;;;;;;;;;;;:27;;:37;5107:8;5079:37;;;;;;;;;;;;;;;;5072:44;;4985:136;;;;:::o;2276:927::-;5303:4;:10;;;;;;;;;;;;5289:24;;:10;:24;;;5281:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2349:1;2330:4;:16;;;:20;2322:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2415:1;2399:4;2391:21;;;:25;2383:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2451:13;2469;2487:19;2519:88;2523:14;;2539:42;2543:4;:16;;;2560:3;2539:42;;;;;;;;;;;;;;;;;:3;:42::i;:::-;2519:88;;;;;;;;;;;;;;;;;:3;:88::i;:::-;2511:96;;2616:9;2626:1;2616:11;;2612:342;2631:2;;2629:1;:4;2612:342;;;2683:1;2657:24;2666:11;:14;2678:1;2666:14;;;;;;;;;;;;;;;;;;;;;2657:8;:24::i;:::-;:27;2654:289;;;2743:62;2747:5;2754:50;2758:24;2767:11;:14;2779:1;2767:14;;;;;;;;;;;;;;;;;;;;;2758:8;:24::i;:::-;2783:3;2754:50;;;;;;;;;;;;;;;;;:3;:50::i;:::-;2743:3;:62::i;:::-;2704:4;:10;;:26;2715:11;:14;2727:1;2715:14;;;;;;;;;;;;;;;;;;;;;2704:26;;;;;;;;;;;;;;;:35;;;:101;;;;;;;;;;;2839:62;2843:5;2850:50;2854:24;2863:11;:14;2875:1;2863:14;;;;;;;;;;;;;;;;;;;;;2854:8;:24::i;:::-;2879:3;2850:50;;;;;;;;;;;;;;;;;:3;:50::i;:::-;2839:3;:62::i;:::-;2824:77;;;;2920:7;;;;;;;2654:289;2635:3;;;;;;;2612:342;;;;2969:83;2992:4;:16;;;3010:14;;3026:5;3033;3040:11;2969:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3079:4;:10;;;;;;;;;;;;3063:37;;:67;3118:11;3101:14;;:28;3063:67;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3063:67:0;3152:1;3144:5;:9;3141:58;;;3186:1;3169:14;:18;;;;3141:58;5366:1;;;2276:927::o;245:29::-;;;;:::o;6083:414::-;6165:7;6207;6187:16;6197:5;6187:9;:16::i;:::-;:27;;6179:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6246:6;:11;6253:3;6246:11;;;;;;;;;;;;;;;;;;;;;;;;;6242:92;;6285:3;6267:11;:15;6279:2;;6267:15;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;6311:4;6297:6;:11;6304:3;6297:11;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;6324:2;;:4;;;;;;;;;;;;;6242:92;6367:7;6338:4;:10;;:17;6349:5;6338:17;;;;;;;;;;;;;;;:25;;;:36;;;;;;;;;;;6412:7;6385:4;:10;;:15;6396:3;6385:15;;;;;;;;;;;;;;;:23;;;:34;;;;;;;;;;;6451:3;6435:29;;6444:5;6435:29;;;6456:7;6435:29;;;;;;;;;;;;;;;;;;6482:7;6475:14;;6083:414;;;;;:::o;6840:404::-;6921:7;6897:20;6906:10;6897:8;:20::i;:::-;:31;;6889:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7017:3;7005:8;6965:4;:10;;:22;6976:10;6965:22;;;;;;;;;;;;;;;:37;;;:48;:55;;6957:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7091:1;7067:23;7079:10;7067:11;:23::i;:::-;:25;7064:61;;;7102:17;:15;:17::i;:::-;;7064:61;7149:7;7129:4;:16;;;:27;;;;;;;;;;;7194:7;7161:4;:10;;:22;7172:10;7161:22;;;;;;;;;;;;;;;:29;;;:40;;;;;;;;;;;7219:10;7211:28;;;7231:7;7211:28;;;;;;;;;;;;;;;;;;6840:404;:::o;6502:330::-;6582:7;6557:21;6567:10;6557:9;:21::i;:::-;:32;;6549:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6637:7;6617:4;:16;;;:27;;;;;;;;;;;6682:7;6649:4;:10;;:22;6660:10;6649:22;;;;;;;;;;;;;;;:29;;;:40;;;;;;;;;;;6734:3;6694:4;:10;;:22;6705:10;6694:22;;;;;;;;;;;;;;;:37;;:43;;;;6776:4;6747:44;;6756:10;6747:44;;;6783:7;6747:44;;;;;;;;;;;;;;;;;;6807:10;6801:26;;;6819:7;6801:26;;;;;;;;;;;;;;;;;;6502:330;:::o;5387:189::-;5473:7;5505:1;5501;:5;5508:12;5493:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5493:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5532:9;5548:1;5544;:5;;;;;;5532:17;;5567:1;5560:8;;;5387:189;;;;;:::o;5588:246::-;5646:7;5675:1;5670;:6;5666:47;;;5700:1;5693:8;;;;5666:47;5723:9;5739:1;5735;:5;5723:17;;5768:1;5763;5759;:5;;;;;;:10;5751:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5825:1;5818:8;;;5588:246;;;;;:::o

Swarm Source

bzzr://6f6bbec3e3ad3b7a8d2e9f209aa6c36ba80cfa786a711572c4152e67e395aa3e

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

DeFi Firefly is a venture capital that aims to empower the decentralized interest-free financial ecosystem and to distribute revenues as profit shares (rewards) to the stakers.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ 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.