ETH Price: $3,255.91 (+2.53%)
Gas: 3 Gwei

Contract

0xcc91875714F044a1033B9d3215719bb8fF3F26C8
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer167360392023-03-01 20:07:23512 days ago1677701243IN
0xcc918757...8fF3F26C8
0 ETH0.0010709736.07936104
Transfer165690662023-02-06 10:11:47535 days ago1675678307IN
0xcc918757...8fF3F26C8
0 ETH0.0005266617.76388976
Transfer165535822023-02-04 6:18:11538 days ago1675491491IN
0xcc918757...8fF3F26C8
0 ETH0.0006446721.7356167
Transfer165511752023-02-03 22:14:35538 days ago1675462475IN
0xcc918757...8fF3F26C8
0 ETH0.0009755732.89179403
Transfer165510282023-02-03 21:45:11538 days ago1675460711IN
0xcc918757...8fF3F26C8
0 ETH0.0008966330.2060076
Transfer165336442023-02-01 11:23:11540 days ago1675250591IN
0xcc918757...8fF3F26C8
0 ETH0.0005227715.17052274
Transfer165313562023-02-01 3:42:35541 days ago1675222955IN
0xcc918757...8fF3F26C8
0 ETH0.0004898416.52216437
Transfer165282792023-01-31 17:23:59541 days ago1675185839IN
0xcc918757...8fF3F26C8
0 ETH0.000788626.59885491
Transfer165191882023-01-30 10:57:23542 days ago1675076243IN
0xcc918757...8fF3F26C8
0 ETH0.0004465915.05110157
Transfer165181982023-01-30 7:38:35543 days ago1675064315IN
0xcc918757...8fF3F26C8
0 ETH0.000452815.26653314
Transfer165157592023-01-29 23:28:23543 days ago1675034903IN
0xcc918757...8fF3F26C8
0 ETH0.0005422418.26734299
Transfer165114422023-01-29 9:00:23543 days ago1674982823IN
0xcc918757...8fF3F26C8
0 ETH0.0005857619.7494678
Transfer165049042023-01-28 11:05:23544 days ago1674903923IN
0xcc918757...8fF3F26C8
0 ETH0.0003636914.87382502
Transfer165049042023-01-28 11:05:23544 days ago1674903923IN
0xcc918757...8fF3F26C8
0 ETH0.0004409714.87382502
Transfer165040572023-01-28 8:15:47545 days ago1674893747IN
0xcc918757...8fF3F26C8
0 ETH0.0005076314.73123824
Transfer165009802023-01-27 21:57:59545 days ago1674856679IN
0xcc918757...8fF3F26C8
0 ETH0.0005621818.95429775
Transfer165009482023-01-27 21:51:35545 days ago1674856295IN
0xcc918757...8fF3F26C8
0 ETH0.0005350918.04830374
Transfer165006662023-01-27 20:54:47545 days ago1674852887IN
0xcc918757...8fF3F26C8
0 ETH0.0006129320.66521511
Transfer165001972023-01-27 19:20:23545 days ago1674847223IN
0xcc918757...8fF3F26C8
0 ETH0.0006558922.12286335
Transfer165001562023-01-27 19:12:11545 days ago1674846731IN
0xcc918757...8fF3F26C8
0 ETH0.0006875523.18129648
Transfer164996012023-01-27 17:20:11545 days ago1674840011IN
0xcc918757...8fF3F26C8
0 ETH0.001016534.28592485
Transfer164990032023-01-27 15:19:47545 days ago1674832787IN
0xcc918757...8fF3F26C8
0 ETH0.0006810322.97060412
Transfer164989262023-01-27 15:04:11545 days ago1674831851IN
0xcc918757...8fF3F26C8
0 ETH0.0008256427.83706067
Transfer164986262023-01-27 14:04:11545 days ago1674828251IN
0xcc918757...8fF3F26C8
0 ETH0.0005018616.92056119
Transfer164985132023-01-27 13:41:11545 days ago1674826871IN
0xcc918757...8fF3F26C8
0 ETH0.0004449315.00729897
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Charge

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-04
*/

// SPDX-License-Identifier: NONE

//    ____ _                                  
//   / ___| |__   __ _ _ __ __ _  ___  
//  | |   | '_ \ / _` | '__/ _` |/ _ \
//  | |___| | | | (_| | | | (_| |  __/
//   \____|_|_|_|\__,_|_|  \__, |\___|
//         _ __            |___/
//  __   _|___ \
//  \ \ / / __) |
//   \ V / / __/
//    \_/ |_____|
                
pragma solidity 0.8.10;

interface IERC721 {
	function ownerOf(uint256 _user) external view returns(address);
    function balanceOf(address owner) external view returns (uint256);
    function totalSupply() external view returns (uint256);
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;
        _;
        _status = _NOT_ENTERED;
    }
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

contract ERC20 is Context, IERC20 {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() external view virtual returns (string memory) {
        return _name;
    }

    function symbol() external view virtual returns (string memory) {
        return _symbol;
    }

    function decimals() external view virtual returns (uint8) {
        return 18;
    }

    function totalSupply() external view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) external view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) external virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) external view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) external virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }
        _transfer(sender, recipient, amount);
        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
    }
}

contract Charge is ERC20("ChargeV2", "ChargeV2"), ReentrancyGuard {
    uint256 constant private rewardtimeframe = 86400; 
	uint256 private FirstRedeemRate = 70 ether; 
	bool private isPauseEnabled;
    address private _owner;
    IERC20 chargeContract;
    mapping(address => uint) private rateForNFT;
    mapping(address => mapping(uint => uint)) private lastUpdateMap;

	constructor() {
		_owner = _msgSender();

        // Charge V1
        chargeContract = IERC20(0x0235a4Fa8374fd49BB2f01aC953f99748756f3Bd);
        // Charged Punks
        rateForNFT[0x14b98025B6e87c0B8F297F4456797D22cbDF99a8] = 10;
	}

    function payRateFrom(address nftContract) private view returns (uint) {
        unchecked {
            return rateForNFT[nftContract] * 1e18;
        }
    }

	function aGetRewards(uint256[] calldata _tokenIds, address nftContract) nonReentrant external {
        require(isPauseEnabled == false, "Staking is on pause");
        uint256 count =  _tokenIds.length;
		uint256 ramount = 0;
		uint256 tamount = 0;
        uint256 payRate = payRateFrom(nftContract);
        uint256 time = block.timestamp;

        require(payRate > 0, "This NFT cant generate CHARGE");

        unchecked {
            for(uint256 i = 0; i < count; i++) {
                uint punk = _tokenIds[i];
                require(msg.sender == IERC721(nftContract).ownerOf(punk), "You are not the owner of this punk");
                if(lastUpdateMap[nftContract][punk] == 0) {
                    ramount = FirstRedeemRate;
                } else {
                    ramount = uint(time - lastUpdateMap[nftContract][punk]) / rewardtimeframe * payRate;
                }
                
                if(ramount > 1){
                    lastUpdateMap[nftContract][punk] = time;
                    tamount += ramount;
                }
            }
        }
		require(tamount > 1, "Your punks didn't work hard enough");	
		_mint(msg.sender, tamount);
	}

	function aGetReward(uint256 _punk, address nftContract) nonReentrant external {
        require(isPauseEnabled == false, "Staking is on pause");
		require(msg.sender == IERC721(nftContract).ownerOf(_punk), "You are not the owner of this punk");

		uint256 ramount = 0;
        uint payRate = payRateFrom(nftContract);

        require(payRate > 0, "This NFT cant generate CHARGE");

		if(lastUpdateMap[nftContract][_punk] == 0) {
		    ramount = FirstRedeemRate;
		} else {
            unchecked {
                ramount = uint(block.timestamp - lastUpdateMap[nftContract][_punk]) / rewardtimeframe * payRate;
            }
        }

		require(ramount > 1, "Your punk didn't work hard enough");
		lastUpdateMap[nftContract][_punk] = block.timestamp;
		_mint(msg.sender, ramount);
	}

    function bResetStaking(uint[] calldata _tokenIds, address nftContract) external nonReentrant {
        unchecked {
            for (uint256 index = 0; index < _tokenIds.length; index++) {
                lastUpdateMap[nftContract][_tokenIds[index]] = block.timestamp;
            }
        }
    }

	function zSetPauseStatus(bool _isPauseEnabled) external {
	    require(_owner == _msgSender(), "Ownable: caller is not the owner");
        isPauseEnabled = _isPauseEnabled;
    }
	
	function zMint(uint256 coins) external {
	    require(_owner == _msgSender(), "Ownable: caller is not the owner");
	    coins = coins * 1 ether;
        _mint(msg.sender, coins);
	}
	
	function zAirdrop(address[] calldata _addresses, uint256 coins) external {
	    require(_owner == _msgSender(), "Ownable: caller is not the owner");
        if(coins < 1 ether) {
            coins = coins * 1 ether;
        }
        unchecked {
            for (uint256 ind = 0; ind < _addresses.length; ind++) {
                _mint(_addresses[ind], coins);
            }
        }
	}

	function zAirdropToTokens(uint256[] calldata _tokenIds, uint256 coins, address nftContract) external {
	    require(_owner == _msgSender(), "Ownable: caller is not the owner");
		coins = coins * 1 ether;
        if(coins < 1 ether) {
            coins = coins * 1 ether;
        }
        unchecked {
            for (uint256 ind = 0; ind < _tokenIds.length; ind++) {
                _mint(address(IERC721(nftContract).ownerOf(_tokenIds[ind])), coins);
            }
        }
    }

    function zSetFirstRedeemRate(uint256 _FirstRedeemRate) external {
        require(_FirstRedeemRate != 0, "Cant set a redeemRate of Zero for first");
	    require(_owner == _msgSender(), "Ownable: caller is not the owner");
		FirstRedeemRate = _FirstRedeemRate * 1e18;
    }

    function zUpdateRewardTime(uint256[] calldata _tokenIds, uint256 newTime, address nftContract) external {
	    require(_owner == _msgSender(), "Ownable: caller is not the owner");
		for (uint256 index = 0; index < _tokenIds.length; index++) {
            lastUpdateMap[nftContract][_tokenIds[index]] = newTime;
	    }
	}

    function zGenerationRate(uint[] calldata amounts, address[] calldata nftContracts) external {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        require(amounts.length == nftContracts.length, "Must have equal array size");

        for (uint256 index = 0; index < amounts.length; index++) {
            rateForNFT[nftContracts[index]] = amounts[index];
	    }
    }

    function zTradeYa(uint amount) external nonReentrant {
        require(amount > 0, "Amount must be greater than zero");
        require(chargeContract.allowance(msg.sender, address(this)) >= amount, "Not enough allowance");
        require(chargeContract.transferFrom(msg.sender, address(this), amount));

        _mint(msg.sender, amount);
    }

    function lastTimestamp(uint punkId, address nftContract) external view returns (uint) {
        return lastUpdateMap[nftContract][punkId];
    }

    function zCheckReward(uint256 _punk, address nftContract) external view returns (uint)  {
        require(isPauseEnabled == false, "Staking is on pause");
		uint256 ramount = 0;
        uint payRate = payRateFrom(nftContract);

        require(payRate > 0, "This NFT cant generate CHARGE");

		if(lastUpdateMap[nftContract][_punk] == 0) {
		    ramount = FirstRedeemRate;
		} else {
            unchecked {
                ramount = uint(block.timestamp - lastUpdateMap[nftContract][_punk]) / rewardtimeframe * payRate;
            }
        }
        return ramount;
	}

    function zCheckRewards(uint256[] calldata _punk, address nftContract) external view returns (uint)  {
        uint rAmount = 0;
        for (uint256 index = 0; index < _punk.length; index++) {
            rAmount += this.zCheckReward(_punk[index], nftContract);
	    }
        return rAmount;
    }

    function viewTime() external view returns (uint) {
        return block.timestamp;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"_punk","type":"uint256"},{"internalType":"address","name":"nftContract","type":"address"}],"name":"aGetReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"address","name":"nftContract","type":"address"}],"name":"aGetRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"address","name":"nftContract","type":"address"}],"name":"bResetStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"punkId","type":"uint256"},{"internalType":"address","name":"nftContract","type":"address"}],"name":"lastTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"viewTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256","name":"coins","type":"uint256"}],"name":"zAirdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256","name":"coins","type":"uint256"},{"internalType":"address","name":"nftContract","type":"address"}],"name":"zAirdropToTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_punk","type":"uint256"},{"internalType":"address","name":"nftContract","type":"address"}],"name":"zCheckReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_punk","type":"uint256[]"},{"internalType":"address","name":"nftContract","type":"address"}],"name":"zCheckRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address[]","name":"nftContracts","type":"address[]"}],"name":"zGenerationRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"coins","type":"uint256"}],"name":"zMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_FirstRedeemRate","type":"uint256"}],"name":"zSetFirstRedeemRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isPauseEnabled","type":"bool"}],"name":"zSetPauseStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"zTradeYa","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256","name":"newTime","type":"uint256"},{"internalType":"address","name":"nftContract","type":"address"}],"name":"zUpdateRewardTime","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526803cb71f51fc55800006006553480156200001e57600080fd5b5060408051808201825260088082526721b430b933b2ab1960c11b602080840182815285518087019096529285528401528151919291620000629160039162000106565b5080516200007890600490602084019062000106565b505060016005555060078054610100600160a81b031916610100330217905560088054730235a4fa8374fd49bb2f01ac953f99748756f3bd6001600160a01b03199091161790557314b98025b6e87c0b8f297f4456797d22cbdf99a86000526009602052600a7fe19dd43a89cb4ff37232b4653b11db7f90a9e46ceb8cbb7a37b0350e6f41618055620001e9565b8280546200011490620001ac565b90600052602060002090601f01602090048101928262000138576000855562000183565b82601f106200015357805160ff191683800117855562000183565b8280016001018555821562000183579182015b828111156200018357825182559160200191906001019062000166565b506200019192915062000195565b5090565b5b8082111562000191576000815560010162000196565b600181811c90821680620001c157607f821691505b60208210811415620001e357634e487b7160e01b600052602260045260246000fd5b50919050565b611b2980620001f96000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c806395d89b41116100c3578063dd62ed3e1161007c578063dd62ed3e146102c9578063e270ff3e14610302578063e725d73714610315578063ef0d410714610348578063f86f2c591461035b578063f9026b861461036e57600080fd5b806395d89b411461026f578063a9059cbb14610277578063ac1a161c1461028a578063b11cd64a1461029d578063b920a669146102a3578063d7e66f02146102b657600080fd5b806323b872dd1161011557806323b872dd146101eb57806327a85293146101fe578063313ce567146102115780633c3b0dc71461022057806370a08231146102335780638bd79d281461025c57600080fd5b806306fdde031461015d578063095ea7b31461017b5780630d2a2c7a1461019e5780631102b7da146101b357806318160ddd146101c65780631b635236146101d8575b600080fd5b610165610381565b604051610172919061157e565b60405180910390f35b61018e6101893660046115e8565b610413565b6040519015158152602001610172565b6101b16101ac366004611660565b610429565b005b6101b16101c13660046116b7565b6106a7565b6002545b604051908152602001610172565b6101b16101e6366004611731565b6107a8565b61018e6101f9366004611755565b6107eb565b6101b161020c366004611796565b61089c565b60405160128152602001610172565b6101ca61022e3660046117af565b610a5e565b6101ca6102413660046117df565b6001600160a01b031660009081526020819052604090205490565b6101b161026a3660046117fc565b610b30565b610165610bce565b61018e6102853660046115e8565b610bdd565b6101b16102983660046117af565b610bea565b426101ca565b6101b16102b1366004611660565b610e07565b6101ca6102c4366004611660565b610e88565b6101ca6102d7366004611848565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101b1610310366004611796565b610f4c565b6101ca6103233660046117af565b6001600160a01b03166000908152600a60209081526040808320938352929052205490565b6101b1610356366004611796565b610f9d565b6101b1610369366004611876565b611042565b6101b161037c366004611876565b6110d5565b606060038054610390906118d5565b80601f01602080910402602001604051908101604052809291908181526020018280546103bc906118d5565b80156104095780601f106103de57610100808354040283529160200191610409565b820191906000526020600020905b8154815290600101906020018083116103ec57829003601f168201915b5050505050905090565b60006104203384846111e1565b50600192915050565b600260055414156104555760405162461bcd60e51b815260040161044c90611910565b60405180910390fd5b600260055560075460ff161561047d5760405162461bcd60e51b815260040161044c90611947565b81600080806104ab856001600160a01b0316600090815260096020526040902054670de0b6b3a76400000290565b905042816104cb5760405162461bcd60e51b815260040161044c90611974565b60005b858110156106325760008989838181106104ea576104ea6119ab565b905060200201359050876001600160a01b0316636352211e826040518263ffffffff1660e01b815260040161052191815260200190565b602060405180830381865afa15801561053e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056291906119c1565b6001600160a01b0316336001600160a01b0316146105925760405162461bcd60e51b815260040161044c906119de565b6001600160a01b0388166000908152600a602090815260408083208484529091529020546105c45760065495506105f5565b6001600160a01b0388166000908152600a602090815260408083208484529091529020546201518090840304840295505b6001861115610629576001600160a01b0388166000908152600a602090815260408083208484529091529020839055938501935b506001016104ce565b506001831161068e5760405162461bcd60e51b815260206004820152602260248201527f596f75722070756e6b73206469646e277420776f726b206861726420656e6f756044820152610ced60f31b606482015260840161044c565b61069833846112d0565b50506001600555505050505050565b6007546001600160a01b036101009091041633146106d75760405162461bcd60e51b815260040161044c90611a20565b8281146107265760405162461bcd60e51b815260206004820152601a60248201527f4d757374206861766520657175616c2061727261792073697a65000000000000604482015260640161044c565b60005b838110156107a157848482818110610743576107436119ab565b9050602002013560096000858585818110610760576107606119ab565b905060200201602081019061077591906117df565b6001600160a01b031681526020810191909152604001600020558061079981611a6b565b915050610729565b5050505050565b6007546001600160a01b036101009091041633146107d85760405162461bcd60e51b815260040161044c90611a20565b6007805460ff1916911515919091179055565b6001600160a01b0383166000908152600160209081526040808320338452909152812054600019811461088657828110156108795760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161044c565b61088685338584036111e1565b6108918585856113af565b506001949350505050565b600260055414156108bf5760405162461bcd60e51b815260040161044c90611910565b6002600555806109115760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f604482015260640161044c565b600854604051636eb1769f60e11b815233600482015230602482015282916001600160a01b03169063dd62ed3e90604401602060405180830381865afa15801561095f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109839190611a86565b10156109c85760405162461bcd60e51b81526020600482015260146024820152734e6f7420656e6f75676820616c6c6f77616e636560601b604482015260640161044c565b6008546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a439190611a9f565b610a4c57600080fd5b610a5633826112d0565b506001600555565b60075460009060ff1615610a845760405162461bcd60e51b815260040161044c90611947565b6001600160a01b038216600090815260096020526040812054670de0b6b3a76400000280610ac45760405162461bcd60e51b815260040161044c90611974565b6001600160a01b0384166000908152600a60209081526040808320888452909152902054610af6576006549150610b28565b6001600160a01b0384166000908152600a60209081526040808320888452909152902054819062015180904203040291505b509392505050565b6007546001600160a01b03610100909104163314610b605760405162461bcd60e51b815260040161044c90611a20565b670de0b6b3a7640000811015610b8557610b8281670de0b6b3a7640000611abc565b90505b60005b82811015610bc857610bc0848483818110610ba557610ba56119ab565b9050602002016020810190610bba91906117df565b836112d0565b600101610b88565b50505050565b606060048054610390906118d5565b60006104203384846113af565b60026005541415610c0d5760405162461bcd60e51b815260040161044c90611910565b600260055560075460ff1615610c355760405162461bcd60e51b815260040161044c90611947565b6040516331a9108f60e11b8152600481018390526001600160a01b03821690636352211e90602401602060405180830381865afa158015610c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9e91906119c1565b6001600160a01b0316336001600160a01b031614610cce5760405162461bcd60e51b815260040161044c906119de565b6001600160a01b038116600090815260096020526040812054670de0b6b3a76400000280610d0e5760405162461bcd60e51b815260040161044c90611974565b6001600160a01b0383166000908152600a60209081526040808320878452909152902054610d40576006549150610d72565b6001600160a01b0383166000908152600a60209081526040808320878452909152902054819062015180904203040291505b60018211610dcc5760405162461bcd60e51b815260206004820152602160248201527f596f75722070756e6b206469646e277420776f726b206861726420656e6f75676044820152600d60fb1b606482015260840161044c565b6001600160a01b0383166000908152600a602090815260408083208784529091529020429055610dfc33836112d0565b505060016005555050565b60026005541415610e2a5760405162461bcd60e51b815260040161044c90611910565b600260055560005b82811015610dfc576001600160a01b0382166000908152600a602052604081204291868685818110610e6657610e666119ab565b6020908102929092013583525081019190915260400160002055600101610e32565b600080805b84811015610f435730633c3b0dc7878784818110610ead57610ead6119ab565b90506020020135866040518363ffffffff1660e01b8152600401610ee49291909182526001600160a01b0316602082015260400190565b602060405180830381865afa158015610f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f259190611a86565b610f2f9083611adb565b915080610f3b81611a6b565b915050610e8d565b50949350505050565b6007546001600160a01b03610100909104163314610f7c5760405162461bcd60e51b815260040161044c90611a20565b610f8e81670de0b6b3a7640000611abc565b9050610f9a33826112d0565b50565b80610ffa5760405162461bcd60e51b815260206004820152602760248201527f43616e742073657420612072656465656d52617465206f66205a65726f20666f6044820152661c88199a5c9cdd60ca1b606482015260840161044c565b6007546001600160a01b0361010090910416331461102a5760405162461bcd60e51b815260040161044c90611a20565b61103c81670de0b6b3a7640000611abc565b60065550565b6007546001600160a01b036101009091041633146110725760405162461bcd60e51b815260040161044c90611a20565b60005b838110156107a1576001600160a01b0382166000908152600a6020526040812084918787858181106110a9576110a96119ab565b9050602002013581526020019081526020016000208190555080806110cd90611a6b565b915050611075565b6007546001600160a01b036101009091041633146111055760405162461bcd60e51b815260040161044c90611a20565b61111782670de0b6b3a7640000611abc565b9150670de0b6b3a764000082101561113e5761113b82670de0b6b3a7640000611abc565b91505b60005b838110156107a1576111d9826001600160a01b0316636352211e87878581811061116d5761116d6119ab565b905060200201356040518263ffffffff1660e01b815260040161119291815260200190565b602060405180830381865afa1580156111af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d391906119c1565b846112d0565b600101611141565b6001600160a01b0383166112435760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161044c565b6001600160a01b0382166112a45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161044c565b6001600160a01b0392831660009081526001602090815260408083209490951682529290925291902055565b6001600160a01b0382166113265760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161044c565b80600260008282546113389190611adb565b90915550506001600160a01b03821660009081526020819052604081208054839290611365908490611adb565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0383166114135760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161044c565b6001600160a01b0382166114755760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161044c565b6001600160a01b038316600090815260208190526040902054818110156114ed5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161044c565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611524908490611adb565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161157091815260200190565b60405180910390a350505050565b600060208083528351808285015260005b818110156115ab5785810183015185820160400152820161158f565b818111156115bd576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610f9a57600080fd5b600080604083850312156115fb57600080fd5b8235611606816115d3565b946020939093013593505050565b60008083601f84011261162657600080fd5b50813567ffffffffffffffff81111561163e57600080fd5b6020830191508360208260051b850101111561165957600080fd5b9250929050565b60008060006040848603121561167557600080fd5b833567ffffffffffffffff81111561168c57600080fd5b61169886828701611614565b90945092505060208401356116ac816115d3565b809150509250925092565b600080600080604085870312156116cd57600080fd5b843567ffffffffffffffff808211156116e557600080fd5b6116f188838901611614565b9096509450602087013591508082111561170a57600080fd5b5061171787828801611614565b95989497509550505050565b8015158114610f9a57600080fd5b60006020828403121561174357600080fd5b813561174e81611723565b9392505050565b60008060006060848603121561176a57600080fd5b8335611775816115d3565b92506020840135611785816115d3565b929592945050506040919091013590565b6000602082840312156117a857600080fd5b5035919050565b600080604083850312156117c257600080fd5b8235915060208301356117d4816115d3565b809150509250929050565b6000602082840312156117f157600080fd5b813561174e816115d3565b60008060006040848603121561181157600080fd5b833567ffffffffffffffff81111561182857600080fd5b61183486828701611614565b909790965060209590950135949350505050565b6000806040838503121561185b57600080fd5b8235611866816115d3565b915060208301356117d4816115d3565b6000806000806060858703121561188c57600080fd5b843567ffffffffffffffff8111156118a357600080fd5b6118af87828801611614565b9095509350506020850135915060408501356118ca816115d3565b939692955090935050565b600181811c908216806118e957607f821691505b6020821081141561190a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601390820152725374616b696e67206973206f6e20706175736560681b604082015260600190565b6020808252601d908201527f54686973204e46542063616e742067656e657261746520434841524745000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156119d357600080fd5b815161174e816115d3565b60208082526022908201527f596f7520617265206e6f7420746865206f776e6572206f6620746869732070756040820152616e6b60f01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000600019821415611a7f57611a7f611a55565b5060010190565b600060208284031215611a9857600080fd5b5051919050565b600060208284031215611ab157600080fd5b815161174e81611723565b6000816000190483118215151615611ad657611ad6611a55565b500290565b60008219821115611aee57611aee611a55565b50019056fea264697066735822122087870c0f55e4c43c1757221ff584e1735cef51dea6b9d620cd9ce2c21a8e22cf64736f6c634300080a0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101585760003560e01c806395d89b41116100c3578063dd62ed3e1161007c578063dd62ed3e146102c9578063e270ff3e14610302578063e725d73714610315578063ef0d410714610348578063f86f2c591461035b578063f9026b861461036e57600080fd5b806395d89b411461026f578063a9059cbb14610277578063ac1a161c1461028a578063b11cd64a1461029d578063b920a669146102a3578063d7e66f02146102b657600080fd5b806323b872dd1161011557806323b872dd146101eb57806327a85293146101fe578063313ce567146102115780633c3b0dc71461022057806370a08231146102335780638bd79d281461025c57600080fd5b806306fdde031461015d578063095ea7b31461017b5780630d2a2c7a1461019e5780631102b7da146101b357806318160ddd146101c65780631b635236146101d8575b600080fd5b610165610381565b604051610172919061157e565b60405180910390f35b61018e6101893660046115e8565b610413565b6040519015158152602001610172565b6101b16101ac366004611660565b610429565b005b6101b16101c13660046116b7565b6106a7565b6002545b604051908152602001610172565b6101b16101e6366004611731565b6107a8565b61018e6101f9366004611755565b6107eb565b6101b161020c366004611796565b61089c565b60405160128152602001610172565b6101ca61022e3660046117af565b610a5e565b6101ca6102413660046117df565b6001600160a01b031660009081526020819052604090205490565b6101b161026a3660046117fc565b610b30565b610165610bce565b61018e6102853660046115e8565b610bdd565b6101b16102983660046117af565b610bea565b426101ca565b6101b16102b1366004611660565b610e07565b6101ca6102c4366004611660565b610e88565b6101ca6102d7366004611848565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101b1610310366004611796565b610f4c565b6101ca6103233660046117af565b6001600160a01b03166000908152600a60209081526040808320938352929052205490565b6101b1610356366004611796565b610f9d565b6101b1610369366004611876565b611042565b6101b161037c366004611876565b6110d5565b606060038054610390906118d5565b80601f01602080910402602001604051908101604052809291908181526020018280546103bc906118d5565b80156104095780601f106103de57610100808354040283529160200191610409565b820191906000526020600020905b8154815290600101906020018083116103ec57829003601f168201915b5050505050905090565b60006104203384846111e1565b50600192915050565b600260055414156104555760405162461bcd60e51b815260040161044c90611910565b60405180910390fd5b600260055560075460ff161561047d5760405162461bcd60e51b815260040161044c90611947565b81600080806104ab856001600160a01b0316600090815260096020526040902054670de0b6b3a76400000290565b905042816104cb5760405162461bcd60e51b815260040161044c90611974565b60005b858110156106325760008989838181106104ea576104ea6119ab565b905060200201359050876001600160a01b0316636352211e826040518263ffffffff1660e01b815260040161052191815260200190565b602060405180830381865afa15801561053e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056291906119c1565b6001600160a01b0316336001600160a01b0316146105925760405162461bcd60e51b815260040161044c906119de565b6001600160a01b0388166000908152600a602090815260408083208484529091529020546105c45760065495506105f5565b6001600160a01b0388166000908152600a602090815260408083208484529091529020546201518090840304840295505b6001861115610629576001600160a01b0388166000908152600a602090815260408083208484529091529020839055938501935b506001016104ce565b506001831161068e5760405162461bcd60e51b815260206004820152602260248201527f596f75722070756e6b73206469646e277420776f726b206861726420656e6f756044820152610ced60f31b606482015260840161044c565b61069833846112d0565b50506001600555505050505050565b6007546001600160a01b036101009091041633146106d75760405162461bcd60e51b815260040161044c90611a20565b8281146107265760405162461bcd60e51b815260206004820152601a60248201527f4d757374206861766520657175616c2061727261792073697a65000000000000604482015260640161044c565b60005b838110156107a157848482818110610743576107436119ab565b9050602002013560096000858585818110610760576107606119ab565b905060200201602081019061077591906117df565b6001600160a01b031681526020810191909152604001600020558061079981611a6b565b915050610729565b5050505050565b6007546001600160a01b036101009091041633146107d85760405162461bcd60e51b815260040161044c90611a20565b6007805460ff1916911515919091179055565b6001600160a01b0383166000908152600160209081526040808320338452909152812054600019811461088657828110156108795760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161044c565b61088685338584036111e1565b6108918585856113af565b506001949350505050565b600260055414156108bf5760405162461bcd60e51b815260040161044c90611910565b6002600555806109115760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f604482015260640161044c565b600854604051636eb1769f60e11b815233600482015230602482015282916001600160a01b03169063dd62ed3e90604401602060405180830381865afa15801561095f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109839190611a86565b10156109c85760405162461bcd60e51b81526020600482015260146024820152734e6f7420656e6f75676820616c6c6f77616e636560601b604482015260640161044c565b6008546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a439190611a9f565b610a4c57600080fd5b610a5633826112d0565b506001600555565b60075460009060ff1615610a845760405162461bcd60e51b815260040161044c90611947565b6001600160a01b038216600090815260096020526040812054670de0b6b3a76400000280610ac45760405162461bcd60e51b815260040161044c90611974565b6001600160a01b0384166000908152600a60209081526040808320888452909152902054610af6576006549150610b28565b6001600160a01b0384166000908152600a60209081526040808320888452909152902054819062015180904203040291505b509392505050565b6007546001600160a01b03610100909104163314610b605760405162461bcd60e51b815260040161044c90611a20565b670de0b6b3a7640000811015610b8557610b8281670de0b6b3a7640000611abc565b90505b60005b82811015610bc857610bc0848483818110610ba557610ba56119ab565b9050602002016020810190610bba91906117df565b836112d0565b600101610b88565b50505050565b606060048054610390906118d5565b60006104203384846113af565b60026005541415610c0d5760405162461bcd60e51b815260040161044c90611910565b600260055560075460ff1615610c355760405162461bcd60e51b815260040161044c90611947565b6040516331a9108f60e11b8152600481018390526001600160a01b03821690636352211e90602401602060405180830381865afa158015610c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9e91906119c1565b6001600160a01b0316336001600160a01b031614610cce5760405162461bcd60e51b815260040161044c906119de565b6001600160a01b038116600090815260096020526040812054670de0b6b3a76400000280610d0e5760405162461bcd60e51b815260040161044c90611974565b6001600160a01b0383166000908152600a60209081526040808320878452909152902054610d40576006549150610d72565b6001600160a01b0383166000908152600a60209081526040808320878452909152902054819062015180904203040291505b60018211610dcc5760405162461bcd60e51b815260206004820152602160248201527f596f75722070756e6b206469646e277420776f726b206861726420656e6f75676044820152600d60fb1b606482015260840161044c565b6001600160a01b0383166000908152600a602090815260408083208784529091529020429055610dfc33836112d0565b505060016005555050565b60026005541415610e2a5760405162461bcd60e51b815260040161044c90611910565b600260055560005b82811015610dfc576001600160a01b0382166000908152600a602052604081204291868685818110610e6657610e666119ab565b6020908102929092013583525081019190915260400160002055600101610e32565b600080805b84811015610f435730633c3b0dc7878784818110610ead57610ead6119ab565b90506020020135866040518363ffffffff1660e01b8152600401610ee49291909182526001600160a01b0316602082015260400190565b602060405180830381865afa158015610f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f259190611a86565b610f2f9083611adb565b915080610f3b81611a6b565b915050610e8d565b50949350505050565b6007546001600160a01b03610100909104163314610f7c5760405162461bcd60e51b815260040161044c90611a20565b610f8e81670de0b6b3a7640000611abc565b9050610f9a33826112d0565b50565b80610ffa5760405162461bcd60e51b815260206004820152602760248201527f43616e742073657420612072656465656d52617465206f66205a65726f20666f6044820152661c88199a5c9cdd60ca1b606482015260840161044c565b6007546001600160a01b0361010090910416331461102a5760405162461bcd60e51b815260040161044c90611a20565b61103c81670de0b6b3a7640000611abc565b60065550565b6007546001600160a01b036101009091041633146110725760405162461bcd60e51b815260040161044c90611a20565b60005b838110156107a1576001600160a01b0382166000908152600a6020526040812084918787858181106110a9576110a96119ab565b9050602002013581526020019081526020016000208190555080806110cd90611a6b565b915050611075565b6007546001600160a01b036101009091041633146111055760405162461bcd60e51b815260040161044c90611a20565b61111782670de0b6b3a7640000611abc565b9150670de0b6b3a764000082101561113e5761113b82670de0b6b3a7640000611abc565b91505b60005b838110156107a1576111d9826001600160a01b0316636352211e87878581811061116d5761116d6119ab565b905060200201356040518263ffffffff1660e01b815260040161119291815260200190565b602060405180830381865afa1580156111af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d391906119c1565b846112d0565b600101611141565b6001600160a01b0383166112435760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161044c565b6001600160a01b0382166112a45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161044c565b6001600160a01b0392831660009081526001602090815260408083209490951682529290925291902055565b6001600160a01b0382166113265760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161044c565b80600260008282546113389190611adb565b90915550506001600160a01b03821660009081526020819052604081208054839290611365908490611adb565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0383166114135760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161044c565b6001600160a01b0382166114755760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161044c565b6001600160a01b038316600090815260208190526040902054818110156114ed5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161044c565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611524908490611adb565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161157091815260200190565b60405180910390a350505050565b600060208083528351808285015260005b818110156115ab5785810183015185820160400152820161158f565b818111156115bd576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610f9a57600080fd5b600080604083850312156115fb57600080fd5b8235611606816115d3565b946020939093013593505050565b60008083601f84011261162657600080fd5b50813567ffffffffffffffff81111561163e57600080fd5b6020830191508360208260051b850101111561165957600080fd5b9250929050565b60008060006040848603121561167557600080fd5b833567ffffffffffffffff81111561168c57600080fd5b61169886828701611614565b90945092505060208401356116ac816115d3565b809150509250925092565b600080600080604085870312156116cd57600080fd5b843567ffffffffffffffff808211156116e557600080fd5b6116f188838901611614565b9096509450602087013591508082111561170a57600080fd5b5061171787828801611614565b95989497509550505050565b8015158114610f9a57600080fd5b60006020828403121561174357600080fd5b813561174e81611723565b9392505050565b60008060006060848603121561176a57600080fd5b8335611775816115d3565b92506020840135611785816115d3565b929592945050506040919091013590565b6000602082840312156117a857600080fd5b5035919050565b600080604083850312156117c257600080fd5b8235915060208301356117d4816115d3565b809150509250929050565b6000602082840312156117f157600080fd5b813561174e816115d3565b60008060006040848603121561181157600080fd5b833567ffffffffffffffff81111561182857600080fd5b61183486828701611614565b909790965060209590950135949350505050565b6000806040838503121561185b57600080fd5b8235611866816115d3565b915060208301356117d4816115d3565b6000806000806060858703121561188c57600080fd5b843567ffffffffffffffff8111156118a357600080fd5b6118af87828801611614565b9095509350506020850135915060408501356118ca816115d3565b939692955090935050565b600181811c908216806118e957607f821691505b6020821081141561190a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601390820152725374616b696e67206973206f6e20706175736560681b604082015260600190565b6020808252601d908201527f54686973204e46542063616e742067656e657261746520434841524745000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156119d357600080fd5b815161174e816115d3565b60208082526022908201527f596f7520617265206e6f7420746865206f776e6572206f6620746869732070756040820152616e6b60f01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000600019821415611a7f57611a7f611a55565b5060010190565b600060208284031215611a9857600080fd5b5051919050565b600060208284031215611ab157600080fd5b815161174e81611723565b6000816000190483118215151615611ad657611ad6611a55565b500290565b60008219821115611aee57611aee611a55565b50019056fea264697066735822122087870c0f55e4c43c1757221ff584e1735cef51dea6b9d620cd9ce2c21a8e22cf64736f6c634300080a0033

Deployed Bytecode Sourcemap

5202:6954:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2306:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3207:171;;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;3207:171:0;1072:187:1;6003:1202:0;;;;;;:::i;:::-;;:::i;:::-;;10230:406;;;;;;:::i;:::-;;:::i;2606:110::-;2696:12;;2606:110;;;3137:25:1;;;3125:2;3110:18;2606:110:0;2991:177:1;8330:182:0;;;;;;:::i;:::-;;:::i;3386:571::-;;;;;;:::i;:::-;;:::i;10644:352::-;;;;;;:::i;:::-;;:::i;2512:86::-;;;2588:2;4330:36:1;;4318:2;4303:18;2512:86:0;4188:184:1;11158:585:0;;;;;;:::i;:::-;;:::i;2724:129::-;;;;;;:::i;:::-;-1:-1:-1;;;;;2827:18:0;2800:7;2827:18;;;;;;;;;;;;2724:129;8709:397;;;;;;:::i;:::-;;:::i;2407:97::-;;;:::i;2861:177::-;;;;;;:::i;:::-;;:::i;7210:804::-;;;;;;:::i;:::-;;:::i;12063:90::-;12130:15;12063:90;;8022:303;;;;;;:::i;:::-;;:::i;11751:304::-;;;;;;:::i;:::-;;:::i;3046:153::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3164:18:0;;;3137:7;3164:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3046:153;8518:185;;;;;;:::i;:::-;;:::i;11004:146::-;;;;;;:::i;:::-;-1:-1:-1;;;;;11108:26:0;11084:4;11108:26;;;:13;:26;;;;;;;;:34;;;;;;;;;11004:146;9612:277;;;;;;:::i;:::-;;:::i;9897:325::-;;;;;;:::i;:::-;;:::i;9111:493::-;;;;;;:::i;:::-;;:::i;2306:93::-;2353:13;2386:5;2379:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2306:93;:::o;3207:171::-;3292:4;3309:39;1895:10;3332:7;3341:6;3309:8;:39::i;:::-;-1:-1:-1;3366:4:0;3207:171;;;;:::o;6003:1202::-;1425:1;1573:7;;:19;;1565:63;;;;-1:-1:-1;;;1565:63:0;;;;;;;:::i;:::-;;;;;;;;;1425:1;1704:7;:18;6116:14:::1;::::0;::::1;;:23;6108:55;;;;-1:-1:-1::0;;;6108:55:0::1;;;;;;;:::i;:::-;6191:9:::0;6174:13:::1;::::0;;6284:24:::1;6296:11:::0;-1:-1:-1;;;;;5949:23:0;5900:4;5949:23;;;:10;:23;;;;;;5975:4;5949:30;;5836:162;6284:24:::1;6266:42:::0;-1:-1:-1;6334:15:0::1;6370:11:::0;6362:53:::1;;;;-1:-1:-1::0;;;6362:53:0::1;;;;;;;:::i;:::-;6457:9;6453:642;6476:5;6472:1;:9;6453:642;;;6507:9;6519;;6529:1;6519:12;;;;;;;:::i;:::-;;;;;;;6507:24;;6580:11;-1:-1:-1::0;;;;;6572:28:0::1;;6601:4;6572:34;;;;;;;;;;;;;3137:25:1::0;;3125:2;3110:18;;2991:177;6572:34:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6558:48:0::1;:10;-1:-1:-1::0;;;;;6558:48:0::1;;6550:95;;;;-1:-1:-1::0;;;6550:95:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6667:26:0;::::1;;::::0;;;:13:::1;:26;::::0;;;;;;;:32;;;;;;;;;6664:242:::1;;6739:15;;6729:25;;6664:242;;;-1:-1:-1::0;;;;;6825:26:0;::::1;;::::0;;;:13:::1;:26;::::0;;;;;;;:32;;;;;;;;;5318:5:::1;6818:39:::0;;::::1;6813:63;:73:::0;::::1;::::0;-1:-1:-1;6664:242:0::1;6955:1;6945:7;:11;6942:138;;;-1:-1:-1::0;;;;;6980:26:0;::::1;;::::0;;;:13:::1;:26;::::0;;;;;;;:32;;;;;;;;:39;;;7042:18;;::::1;::::0;6942:138:::1;-1:-1:-1::0;6483:3:0::1;;6453:642;;;;7128:1;7118:7;:11;7110:58;;;::::0;-1:-1:-1;;;7110:58:0;;9073:2:1;7110:58:0::1;::::0;::::1;9055:21:1::0;9112:2;9092:18;;;9085:30;9151:34;9131:18;;;9124:62;-1:-1:-1;;;9202:18:1;;;9195:32;9244:19;;7110:58:0::1;8871:398:1::0;7110:58:0::1;7174:26;7180:10;7192:7;7174:5;:26::i;:::-;-1:-1:-1::0;;1381:1:0;1745:7;:22;-1:-1:-1;;;;;;6003:1202:0:o;10230:406::-;10341:6;;-1:-1:-1;;;;;10341:6:0;;;;;1895:10;10341:22;10333:67;;;;-1:-1:-1;;;10333:67:0;;;;;;;:::i;:::-;10419:37;;;10411:76;;;;-1:-1:-1;;;10411:76:0;;9837:2:1;10411:76:0;;;9819:21:1;9876:2;9856:18;;;9849:30;9915:28;9895:18;;;9888:56;9961:18;;10411:76:0;9635:350:1;10411:76:0;10505:13;10500:129;10524:22;;;10500:129;;;10606:7;;10614:5;10606:14;;;;;;;:::i;:::-;;;;;;;10572:10;:31;10583:12;;10596:5;10583:19;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10572:31:0;;;;;;;;;;;;-1:-1:-1;10572:31:0;:48;10548:7;;;;:::i;:::-;;;;10500:129;;;;10230:406;;;;:::o;8330:182::-;8402:6;;-1:-1:-1;;;;;8402:6:0;;;;;1895:10;8402:22;8394:67;;;;-1:-1:-1;;;8394:67:0;;;;;;;:::i;:::-;8472:14;:32;;-1:-1:-1;;8472:32:0;;;;;;;;;;8330:182::o;3386:571::-;-1:-1:-1;;;;;3572:19:0;;3528:4;3572:19;;;:11;:19;;;;;;;;1895:10;3572:33;;;;;;;;-1:-1:-1;;3620:37:0;;3616:265;;3702:6;3682:16;:26;;3674:79;;;;-1:-1:-1;;;3674:79:0;;10464:2:1;3674:79:0;;;10446:21:1;10503:2;10483:18;;;10476:30;10542:34;10522:18;;;10515:62;-1:-1:-1;;;10593:18:1;;;10586:38;10641:19;;3674:79:0;10262:404:1;3674:79:0;3797:57;3806:6;1895:10;3847:6;3828:16;:25;3797:8;:57::i;:::-;3891:36;3901:6;3909:9;3920:6;3891:9;:36::i;:::-;-1:-1:-1;3945:4:0;;3386:571;-1:-1:-1;;;;3386:571:0:o;10644:352::-;1425:1;1573:7;;:19;;1565:63;;;;-1:-1:-1;;;1565:63:0;;;;;;;:::i;:::-;1425:1;1704:7;:18;10716:10;10708:55:::1;;;::::0;-1:-1:-1;;;10708:55:0;;10873:2:1;10708:55:0::1;::::0;::::1;10855:21:1::0;;;10892:18;;;10885:30;10951:34;10931:18;;;10924:62;11003:18;;10708:55:0::1;10671:356:1::0;10708:55:0::1;10782:14;::::0;:51:::1;::::0;-1:-1:-1;;;10782:51:0;;10807:10:::1;10782:51;::::0;::::1;11244:34:1::0;10827:4:0::1;11294:18:1::0;;;11287:43;10837:6:0;;-1:-1:-1;;;;;10782:14:0::1;::::0;:24:::1;::::0;11179:18:1;;10782:51:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:61;;10774:94;;;::::0;-1:-1:-1;;;10774:94:0;;11732:2:1;10774:94:0::1;::::0;::::1;11714:21:1::0;11771:2;11751:18;;;11744:30;-1:-1:-1;;;11790:18:1;;;11783:50;11850:18;;10774:94:0::1;11530:344:1::0;10774:94:0::1;10887:14;::::0;:62:::1;::::0;-1:-1:-1;;;10887:62:0;;10915:10:::1;10887:62;::::0;::::1;12119:34:1::0;10935:4:0::1;12169:18:1::0;;;12162:43;12221:18;;;12214:34;;;-1:-1:-1;;;;;10887:14:0;;::::1;::::0;:27:::1;::::0;12054:18:1;;10887:62:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10879:71;;;::::0;::::1;;10963:25;10969:10;10981:6;10963:5;:25::i;:::-;-1:-1:-1::0;1381:1:0;1745:7;:22;10644:352::o;11158:585::-;11265:14;;11239:4;;11265:14;;:23;11257:55;;;;-1:-1:-1;;;11257:55:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5949:23:0;;11317:15;5949:23;;;:10;:23;;;;;;5975:4;5949:30;11407:11;11399:53;;;;-1:-1:-1;;;11399:53:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11462:26:0;;;;;;:13;:26;;;;;;;;:33;;;;;;;;;11459:255;;11521:15;;11511:25;;11459:255;;;-1:-1:-1;;;;;11625:26:0;;;;;;:13;:26;;;;;;;;:33;;;;;;;;;11680:7;;5318:5;;11607:15;:51;11602:75;:85;11592:95;;11459:255;-1:-1:-1;11731:7:0;11158:585;-1:-1:-1;;;11158:585:0:o;8709:397::-;8798:6;;-1:-1:-1;;;;;8798:6:0;;;;;1895:10;8798:22;8790:67;;;;-1:-1:-1;;;8790:67:0;;;;;;;:::i;:::-;8879:7;8871:5;:15;8868:70;;;8911:15;:5;8919:7;8911:15;:::i;:::-;8903:23;;8868:70;8978:11;8973:118;8995:23;;;8973:118;;;9046:29;9052:10;;9063:3;9052:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;9069:5;9046;:29::i;:::-;9020:5;;8973:118;;;;8709:397;;;:::o;2407:97::-;2456:13;2489:7;2482:14;;;;;:::i;2861:177::-;2949:4;2966:42;1895:10;2990:9;3001:6;2966:9;:42::i;7210:804::-;1425:1;1573:7;;:19;;1565:63;;;;-1:-1:-1;;;1565:63:0;;;;;;;:::i;:::-;1425:1;1704:7;:18;7307:14:::1;::::0;::::1;;:23;7299:55;;;;-1:-1:-1::0;;;7299:55:0::1;;;;;;;:::i;:::-;7381:35;::::0;-1:-1:-1;;;7381:35:0;;::::1;::::0;::::1;3137:25:1::0;;;-1:-1:-1;;;;;7381:28:0;::::1;::::0;::::1;::::0;3110:18:1;;7381:35:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7367:49:0::1;:10;-1:-1:-1::0;;;;;7367:49:0::1;;7359:96;;;;-1:-1:-1::0;;;7359:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;5949:23:0;;7462:15:::1;5949:23:::0;;;:10;:23;;;;;;5975:4;5949:30;7552:11;7544:53:::1;;;;-1:-1:-1::0;;;7544:53:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7607:26:0;::::1;;::::0;;;:13:::1;:26;::::0;;;;;;;:33;;;;;;;;;7604:255:::1;;7666:15;;7656:25;;7604:255;;;-1:-1:-1::0;;;;;7770:26:0;::::1;;::::0;;;:13:::1;:26;::::0;;;;;;;:33;;;;;;;;;7825:7;;5318:5:::1;::::0;7752:15:::1;:51;7747:75;:85;7737:95;;7604:255;7883:1;7873:7;:11;7865:57;;;::::0;-1:-1:-1;;;7865:57:0;;12884:2:1;7865:57:0::1;::::0;::::1;12866:21:1::0;12923:2;12903:18;;;12896:30;12962:34;12942:18;;;12935:62;-1:-1:-1;;;13013:18:1;;;13006:31;13054:19;;7865:57:0::1;12682:397:1::0;7865:57:0::1;-1:-1:-1::0;;;;;7927:26:0;::::1;;::::0;;;:13:::1;:26;::::0;;;;;;;:33;;;;;;;;7963:15:::1;7927:51:::0;;7983:26:::1;7989:10;8001:7:::0;7983:5:::1;:26::i;:::-;-1:-1:-1::0;;1381:1:0;1745:7;:22;-1:-1:-1;;7210:804:0:o;8022:303::-;1425:1;1573:7;;:19;;1565:63;;;;-1:-1:-1;;;1565:63:0;;;;;;;:::i;:::-;1425:1;1704:7;:18;8156:13:::1;8151:156;8175:24:::0;;::::1;8151:156;;;-1:-1:-1::0;;;;;8229:26:0;::::1;;::::0;;;:13:::1;:26;::::0;;;;8276:15:::1;::::0;8256:9;;8266:5;8256:16;;::::1;;;;;:::i;:::-;;::::0;;::::1;::::0;;;::::1;;8229:44:::0;;-1:-1:-1;8229:44:0;::::1;::::0;;;;;;-1:-1:-1;8229:44:0;:62;8201:7:::1;;8151:156;;11751:304:::0;11844:4;;;11889:134;11913:20;;;11889:134;;;11970:4;:17;11988:5;;11994;11988:12;;;;;;;:::i;:::-;;;;;;;12002:11;11970:44;;;;;;;;;;;;;;;13258:25:1;;;-1:-1:-1;;;;;13319:32:1;13314:2;13299:18;;13292:60;13246:2;13231:18;;13084:274;11970:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11959:55;;;;:::i;:::-;;-1:-1:-1;11935:7:0;;;;:::i;:::-;;;;11889:134;;;-1:-1:-1;12040:7:0;11751:304;-1:-1:-1;;;;11751:304:0:o;8518:185::-;8573:6;;-1:-1:-1;;;;;8573:6:0;;;;;1895:10;8573:22;8565:67;;;;-1:-1:-1;;;8565:67:0;;;;;;;:::i;:::-;8648:15;:5;8656:7;8648:15;:::i;:::-;8640:23;;8674:24;8680:10;8692:5;8674;:24::i;:::-;8518:185;:::o;9612:277::-;9695:21;9687:73;;;;-1:-1:-1;;;9687:73:0;;13698:2:1;9687:73:0;;;13680:21:1;13737:2;13717:18;;;13710:30;13776:34;13756:18;;;13749:62;-1:-1:-1;;;13827:18:1;;;13820:37;13874:19;;9687:73:0;13496:403:1;9687:73:0;9776:6;;-1:-1:-1;;;;;9776:6:0;;;;;1895:10;9776:22;9768:67;;;;-1:-1:-1;;;9768:67:0;;;;;;;:::i;:::-;9858:23;:16;9877:4;9858:23;:::i;:::-;9840:15;:41;-1:-1:-1;9612:277:0:o;9897:325::-;10017:6;;-1:-1:-1;;;;;10017:6:0;;;;;1895:10;10017:22;10009:67;;;;-1:-1:-1;;;10009:67:0;;;;;;;:::i;:::-;10086:13;10081:137;10105:24;;;10081:137;;;-1:-1:-1;;;;;10155:26:0;;;;;;:13;:26;;;;;10202:7;;10182:9;;10192:5;10182:16;;;;;;;:::i;:::-;;;;;;;10155:44;;;;;;;;;;;:54;;;;10131:7;;;;;:::i;:::-;;;;10081:137;;9111:493;9228:6;;-1:-1:-1;;;;;9228:6:0;;;;;1895:10;9228:22;9220:67;;;;-1:-1:-1;;;9220:67:0;;;;;;;:::i;:::-;9300:15;:5;9308:7;9300:15;:::i;:::-;9292:23;;9337:7;9329:5;:15;9326:70;;;9369:15;:5;9377:7;9369:15;:::i;:::-;9361:23;;9326:70;9436:11;9431:155;9453:22;;;9431:155;;;9503:67;9525:11;-1:-1:-1;;;;;9517:28:0;;9546:9;;9556:3;9546:14;;;;;;;:::i;:::-;;;;;;;9517:44;;;;;;;;;;;;;3137:25:1;;3125:2;3110:18;;2991:177;9517:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9564:5;9503;:67::i;:::-;9477:5;;9431:155;;4865:330;-1:-1:-1;;;;;5001:19:0;;4993:68;;;;-1:-1:-1;;;4993:68:0;;14106:2:1;4993:68:0;;;14088:21:1;14145:2;14125:18;;;14118:30;14184:34;14164:18;;;14157:62;-1:-1:-1;;;14235:18:1;;;14228:34;14279:19;;4993:68:0;13904:400:1;4993:68:0;-1:-1:-1;;;;;5080:21:0;;5072:68;;;;-1:-1:-1;;;5072:68:0;;14511:2:1;5072:68:0;;;14493:21:1;14550:2;14530:18;;;14523:30;14589:34;14569:18;;;14562:62;-1:-1:-1;;;14640:18:1;;;14633:32;14682:19;;5072:68:0;14309:398:1;5072:68:0;-1:-1:-1;;;;;5151:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;4865:330::o;4583:274::-;-1:-1:-1;;;;;4667:21:0;;4659:65;;;;-1:-1:-1;;;4659:65:0;;14914:2:1;4659:65:0;;;14896:21:1;14953:2;14933:18;;;14926:30;14992:33;14972:18;;;14965:61;15043:18;;4659:65:0;14712:355:1;4659:65:0;4751:6;4735:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;4768:18:0;;:9;:18;;;;;;;;;;:28;;4790:6;;4768:9;:28;;4790:6;;4768:28;:::i;:::-;;;;-1:-1:-1;;4812:37:0;;3137:25:1;;;-1:-1:-1;;;;;4812:37:0;;;4829:1;;4812:37;;3125:2:1;3110:18;4812:37:0;;;;;;;4583:274;;:::o;3965:610::-;-1:-1:-1;;;;;4105:20:0;;4097:70;;;;-1:-1:-1;;;4097:70:0;;15274:2:1;4097:70:0;;;15256:21:1;15313:2;15293:18;;;15286:30;15352:34;15332:18;;;15325:62;-1:-1:-1;;;15403:18:1;;;15396:35;15448:19;;4097:70:0;15072:401:1;4097:70:0;-1:-1:-1;;;;;4186:23:0;;4178:71;;;;-1:-1:-1;;;4178:71:0;;15680:2:1;4178:71:0;;;15662:21:1;15719:2;15699:18;;;15692:30;15758:34;15738:18;;;15731:62;-1:-1:-1;;;15809:18:1;;;15802:33;15852:19;;4178:71:0;15478:399:1;4178:71:0;-1:-1:-1;;;;;4284:17:0;;4260:21;4284:17;;;;;;;;;;;4320:23;;;;4312:74;;;;-1:-1:-1;;;4312:74:0;;16084:2:1;4312:74:0;;;16066:21:1;16123:2;16103:18;;;16096:30;16162:34;16142:18;;;16135:62;-1:-1:-1;;;16213:18:1;;;16206:36;16259:19;;4312:74:0;15882:402:1;4312:74:0;-1:-1:-1;;;;;4422:17:0;;;:9;:17;;;;;;;;;;;4442:22;;;4422:42;;4486:20;;;;;;;;:30;;4458:6;;4422:9;4486:30;;4458:6;;4486:30;:::i;:::-;;;;;;;;4549:9;-1:-1:-1;;;;;4532:35:0;4541:6;-1:-1:-1;;;;;4532:35:0;;4560:6;4532:35;;;;3137:25:1;;3125:2;3110:18;;2991:177;4532:35:0;;;;;;;;4086:489;3965:610;;;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1264:367::-;1327:8;1337:6;1391:3;1384:4;1376:6;1372:17;1368:27;1358:55;;1409:1;1406;1399:12;1358:55;-1:-1:-1;1432:20:1;;1475:18;1464:30;;1461:50;;;1507:1;1504;1497:12;1461:50;1544:4;1536:6;1532:17;1520:29;;1604:3;1597:4;1587:6;1584:1;1580:14;1572:6;1568:27;1564:38;1561:47;1558:67;;;1621:1;1618;1611:12;1558:67;1264:367;;;;;:::o;1636:572::-;1731:6;1739;1747;1800:2;1788:9;1779:7;1775:23;1771:32;1768:52;;;1816:1;1813;1806:12;1768:52;1856:9;1843:23;1889:18;1881:6;1878:30;1875:50;;;1921:1;1918;1911:12;1875:50;1960:70;2022:7;2013:6;2002:9;1998:22;1960:70;:::i;:::-;2049:8;;-1:-1:-1;1934:96:1;-1:-1:-1;;2134:2:1;2119:18;;2106:32;2147:31;2106:32;2147:31;:::i;:::-;2197:5;2187:15;;;1636:572;;;;;:::o;2213:773::-;2335:6;2343;2351;2359;2412:2;2400:9;2391:7;2387:23;2383:32;2380:52;;;2428:1;2425;2418:12;2380:52;2468:9;2455:23;2497:18;2538:2;2530:6;2527:14;2524:34;;;2554:1;2551;2544:12;2524:34;2593:70;2655:7;2646:6;2635:9;2631:22;2593:70;:::i;:::-;2682:8;;-1:-1:-1;2567:96:1;-1:-1:-1;2770:2:1;2755:18;;2742:32;;-1:-1:-1;2786:16:1;;;2783:36;;;2815:1;2812;2805:12;2783:36;;2854:72;2918:7;2907:8;2896:9;2892:24;2854:72;:::i;:::-;2213:773;;;;-1:-1:-1;2945:8:1;-1:-1:-1;;;;2213:773:1:o;3173:118::-;3259:5;3252:13;3245:21;3238:5;3235:32;3225:60;;3281:1;3278;3271:12;3296:241;3352:6;3405:2;3393:9;3384:7;3380:23;3376:32;3373:52;;;3421:1;3418;3411:12;3373:52;3460:9;3447:23;3479:28;3501:5;3479:28;:::i;:::-;3526:5;3296:241;-1:-1:-1;;;3296:241:1:o;3542:456::-;3619:6;3627;3635;3688:2;3676:9;3667:7;3663:23;3659:32;3656:52;;;3704:1;3701;3694:12;3656:52;3743:9;3730:23;3762:31;3787:5;3762:31;:::i;:::-;3812:5;-1:-1:-1;3869:2:1;3854:18;;3841:32;3882:33;3841:32;3882:33;:::i;:::-;3542:456;;3934:7;;-1:-1:-1;;;3988:2:1;3973:18;;;;3960:32;;3542:456::o;4003:180::-;4062:6;4115:2;4103:9;4094:7;4090:23;4086:32;4083:52;;;4131:1;4128;4121:12;4083:52;-1:-1:-1;4154:23:1;;4003:180;-1:-1:-1;4003:180:1:o;4377:315::-;4445:6;4453;4506:2;4494:9;4485:7;4481:23;4477:32;4474:52;;;4522:1;4519;4512:12;4474:52;4558:9;4545:23;4535:33;;4618:2;4607:9;4603:18;4590:32;4631:31;4656:5;4631:31;:::i;:::-;4681:5;4671:15;;;4377:315;;;;;:::o;4697:247::-;4756:6;4809:2;4797:9;4788:7;4784:23;4780:32;4777:52;;;4825:1;4822;4815:12;4777:52;4864:9;4851:23;4883:31;4908:5;4883:31;:::i;4949:505::-;5044:6;5052;5060;5113:2;5101:9;5092:7;5088:23;5084:32;5081:52;;;5129:1;5126;5119:12;5081:52;5169:9;5156:23;5202:18;5194:6;5191:30;5188:50;;;5234:1;5231;5224:12;5188:50;5273:70;5335:7;5326:6;5315:9;5311:22;5273:70;:::i;:::-;5362:8;;5247:96;;-1:-1:-1;5444:2:1;5429:18;;;;5416:32;;4949:505;-1:-1:-1;;;;4949:505:1:o;5459:388::-;5527:6;5535;5588:2;5576:9;5567:7;5563:23;5559:32;5556:52;;;5604:1;5601;5594:12;5556:52;5643:9;5630:23;5662:31;5687:5;5662:31;:::i;:::-;5712:5;-1:-1:-1;5769:2:1;5754:18;;5741:32;5782:33;5741:32;5782:33;:::i;5852:640::-;5956:6;5964;5972;5980;6033:2;6021:9;6012:7;6008:23;6004:32;6001:52;;;6049:1;6046;6039:12;6001:52;6089:9;6076:23;6122:18;6114:6;6111:30;6108:50;;;6154:1;6151;6144:12;6108:50;6193:70;6255:7;6246:6;6235:9;6231:22;6193:70;:::i;:::-;6282:8;;-1:-1:-1;6167:96:1;-1:-1:-1;;6364:2:1;6349:18;;6336:32;;-1:-1:-1;6418:2:1;6403:18;;6390:32;6431:31;6390:32;6431:31;:::i;:::-;5852:640;;;;-1:-1:-1;5852:640:1;;-1:-1:-1;;5852:640:1:o;6497:380::-;6576:1;6572:12;;;;6619;;;6640:61;;6694:4;6686:6;6682:17;6672:27;;6640:61;6747:2;6739:6;6736:14;6716:18;6713:38;6710:161;;;6793:10;6788:3;6784:20;6781:1;6774:31;6828:4;6825:1;6818:15;6856:4;6853:1;6846:15;6710:161;;6497:380;;;:::o;6882:355::-;7084:2;7066:21;;;7123:2;7103:18;;;7096:30;7162:33;7157:2;7142:18;;7135:61;7228:2;7213:18;;6882:355::o;7242:343::-;7444:2;7426:21;;;7483:2;7463:18;;;7456:30;-1:-1:-1;;;7517:2:1;7502:18;;7495:49;7576:2;7561:18;;7242:343::o;7590:353::-;7792:2;7774:21;;;7831:2;7811:18;;;7804:30;7870:31;7865:2;7850:18;;7843:59;7934:2;7919:18;;7590:353::o;7948:127::-;8009:10;8004:3;8000:20;7997:1;7990:31;8040:4;8037:1;8030:15;8064:4;8061:1;8054:15;8080:251;8150:6;8203:2;8191:9;8182:7;8178:23;8174:32;8171:52;;;8219:1;8216;8209:12;8171:52;8251:9;8245:16;8270:31;8295:5;8270:31;:::i;8336:398::-;8538:2;8520:21;;;8577:2;8557:18;;;8550:30;8616:34;8611:2;8596:18;;8589:62;-1:-1:-1;;;8682:2:1;8667:18;;8660:32;8724:3;8709:19;;8336:398::o;9274:356::-;9476:2;9458:21;;;9495:18;;;9488:30;9554:34;9549:2;9534:18;;9527:62;9621:2;9606:18;;9274:356::o;9990:127::-;10051:10;10046:3;10042:20;10039:1;10032:31;10082:4;10079:1;10072:15;10106:4;10103:1;10096:15;10122:135;10161:3;-1:-1:-1;;10182:17:1;;10179:43;;;10202:18;;:::i;:::-;-1:-1:-1;10249:1:1;10238:13;;10122:135::o;11341:184::-;11411:6;11464:2;11452:9;11443:7;11439:23;11435:32;11432:52;;;11480:1;11477;11470:12;11432:52;-1:-1:-1;11503:16:1;;11341:184;-1:-1:-1;11341:184:1:o;12259:245::-;12326:6;12379:2;12367:9;12358:7;12354:23;12350:32;12347:52;;;12395:1;12392;12385:12;12347:52;12427:9;12421:16;12446:28;12468:5;12446:28;:::i;12509:168::-;12549:7;12615:1;12611;12607:6;12603:14;12600:1;12597:21;12592:1;12585:9;12578:17;12574:45;12571:71;;;12622:18;;:::i;:::-;-1:-1:-1;12662:9:1;;12509:168::o;13363:128::-;13403:3;13434:1;13430:6;13427:1;13424:13;13421:39;;;13440:18;;:::i;:::-;-1:-1:-1;13476:9:1;;13363:128::o

Swarm Source

ipfs://87870c0f55e4c43c1757221ff584e1735cef51dea6b9d620cd9ce2c21a8e22cf

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

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.