ETH Price: $3,346.00 (-2.12%)

Contract

0x6Cd5698E8854Fb6879d6B1C694223b389B465dea
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Add Contract Add...155379222022-09-15 8:30:11835 days ago1663230611IN
NEST Protocol: Voting
0 ETH0.0010419234.34602279
Add Contract Add...144095072022-03-18 9:03:371016 days ago1647594217IN
NEST Protocol: Voting
0 ETH0.0012021239.62701613
Add Contract Add...144090442022-03-18 7:22:501016 days ago1647588170IN
NEST Protocol: Voting
0 ETH0.0009424531.10396509
Add Super Man123197782021-04-27 2:44:501341 days ago1619491490IN
NEST Protocol: Voting
0 ETH0.0024912954
Add Contract Add...116848072021-01-19 9:02:141439 days ago1611046934IN
NEST Protocol: Voting
0 ETH0.0026776890
Add Contract Add...116845002021-01-19 7:57:301439 days ago1611043050IN
NEST Protocol: Voting
0 ETH0.00386776130
Add Contract Add...116844962021-01-19 7:56:091439 days ago1611042969IN
NEST Protocol: Voting
0 ETH0.00387868130
Add Super Man116842262021-01-19 6:55:331439 days ago1611039333IN
NEST Protocol: Voting
0 ETH0.0030482970
Add Contract Add...116794042021-01-18 13:02:051439 days ago1610974925IN
NEST Protocol: Voting
0 ETH0.0023715280
Add Contract Add...109487392020-09-28 3:50:091552 days ago1601265009IN
NEST Protocol: Voting
0 ETH0.00193765
Add Contract Add...107671912020-08-31 7:03:401580 days ago1598857420IN
NEST Protocol: Voting
0 ETH0.00666536260
Add Contract Add...107671912020-08-31 7:03:401580 days ago1598857420IN
NEST Protocol: Voting
0 ETH0.00686228230
Add Contract Add...106363482020-08-11 4:00:151600 days ago1597118415IN
NEST Protocol: Voting
0 ETH0.00387868130
Add Contract Add...105465782020-07-28 7:07:211614 days ago1595920041IN
NEST Protocol: Voting
0 ETH0.0017887260
Add Contract Add...104912052020-07-19 17:08:091622 days ago1595178489IN
NEST Protocol: Voting
0 ETH0.0023859280
Change Mapping104695932020-07-16 8:51:221626 days ago1594889482IN
NEST Protocol: Voting
0 ETH0.0016992855
Change Mapping104692252020-07-16 7:28:181626 days ago1594884498IN
NEST Protocol: Voting
0 ETH0.0046902853
Add Contract Add...104692232020-07-16 7:27:531626 days ago1594884473IN
NEST Protocol: Voting
0 ETH0.0023264852
Add Contract Add...104692192020-07-16 7:27:211626 days ago1594884441IN
NEST Protocol: Voting
0 ETH0.0023183652
Add Contract Add...104692192020-07-16 7:27:211626 days ago1594884441IN
NEST Protocol: Voting
0 ETH0.0023775853
Add Contract Add...104692152020-07-16 7:26:051626 days ago1594884365IN
NEST Protocol: Voting
0 ETH0.0023769453
Add Contract Add...104692072020-07-16 7:25:071626 days ago1594884307IN
NEST Protocol: Voting
0 ETH0.0023308452
Add Contract Add...104692042020-07-16 7:24:111626 days ago1594884251IN
NEST Protocol: Voting
0 ETH0.0023750353
Add Contract Add...104692012020-07-16 7:23:251626 days ago1594884205IN
NEST Protocol: Voting
0 ETH0.0023283552
Add Contract Add...104691952020-07-16 7:22:491626 days ago1594884169IN
NEST Protocol: Voting
0 ETH0.0023718553
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:
Nest_3_VoteFactory

Compiler Version
v0.6.0+commit.26b70077

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-07-28
*/

pragma solidity 0.6.0;

/**
 * @title Voting factory + mapping
 * @dev Vote creating method
 */
contract Nest_3_VoteFactory {
    using SafeMath for uint256;
    
    uint256 _limitTime = 7 days;                                    //  Vote duration
    uint256 _NNLimitTime = 1 days;                                  //  NestNode raising time
    uint256 _circulationProportion = 51;                            //  Proportion of votes to pass
    uint256 _NNUsedCreate = 10;                                     //  The minimum number of NNs to create a voting contract
    uint256 _NNCreateLimit = 100;                                   //  The minimum number of NNs needed to start voting
    uint256 _emergencyTime = 0;                                     //  The emergency state start time
    uint256 _emergencyTimeLimit = 3 days;                           //  The emergency state duration
    uint256 _emergencyNNAmount = 1000;                              //  The number of NNs required to switch the emergency state
    ERC20 _NNToken;                                                 //  NestNode Token
    ERC20 _nestToken;                                               //  NestToken
    mapping(string => address) _contractAddress;                    //  Voting contract mapping
    mapping(address => bool) _modifyAuthority;                      //  Modify permissions
    mapping(address => address) _myVote;                            //  Personal voting address
    mapping(address => uint256) _emergencyPerson;                   //  Emergency state personal voting number
    mapping(address => bool) _contractData;                         //  Voting contract data
    bool _stateOfEmergency = false;                                 //  Emergency state
    address _destructionAddress;                                    //  Destroy contract address

    event ContractAddress(address contractAddress);
    
    /**
    * @dev Initialization method
    */
    constructor () public {
        _modifyAuthority[address(msg.sender)] = true;
    }
    
    /**
    * @dev Reset contract
    */
    function changeMapping() public onlyOwner {
        _NNToken = ERC20(checkAddress("nestNode"));
        _destructionAddress = address(checkAddress("nest.v3.destruction"));
        _nestToken = ERC20(address(checkAddress("nest")));
    }
    
    /**
    * @dev Create voting contract
    * @param implementContract The executable contract address for voting
    * @param nestNodeAmount Number of NNs to pledge
    */
    function createVote(address implementContract, uint256 nestNodeAmount) public {
        require(address(tx.origin) == address(msg.sender), "It can't be a contract");
        require(nestNodeAmount >= _NNUsedCreate);
        Nest_3_VoteContract newContract = new Nest_3_VoteContract(implementContract, _stateOfEmergency, nestNodeAmount);
        require(_NNToken.transferFrom(address(tx.origin), address(newContract), nestNodeAmount), "Authorization transfer failed");
        _contractData[address(newContract)] = true;
        emit ContractAddress(address(newContract));
    }
    
    /**
    * @dev Use NEST to vote
    * @param contractAddress Vote contract address
    */
    function nestVote(address contractAddress) public {
        require(address(msg.sender) == address(tx.origin), "It can't be a contract");
        require(_contractData[contractAddress], "It's not a voting contract");
        require(!checkVoteNow(address(msg.sender)));
        Nest_3_VoteContract newContract = Nest_3_VoteContract(contractAddress);
        newContract.nestVote();
        _myVote[address(tx.origin)] = contractAddress;
    }
    
    /**
    * @dev Vote using NestNode Token
    * @param contractAddress Vote contract address
    * @param NNAmount Amount of NNs to pledge
    */
    function nestNodeVote(address contractAddress, uint256 NNAmount) public {
        require(address(msg.sender) == address(tx.origin), "It can't be a contract");
        require(_contractData[contractAddress], "It's not a voting contract");
        Nest_3_VoteContract newContract = Nest_3_VoteContract(contractAddress);
        require(_NNToken.transferFrom(address(tx.origin), address(newContract), NNAmount), "Authorization transfer failed");
        newContract.nestNodeVote(NNAmount);
    }
    
    /**
    * @dev Excecute contract
    * @param contractAddress Vote contract address
    */
    function startChange(address contractAddress) public {
        require(address(msg.sender) == address(tx.origin), "It can't be a contract");
        require(_contractData[contractAddress], "It's not a voting contract");
        Nest_3_VoteContract newContract = Nest_3_VoteContract(contractAddress);
        require(_stateOfEmergency == newContract.checkStateOfEmergency());
        addSuperManPrivate(address(newContract));
        newContract.startChange();
        deleteSuperManPrivate(address(newContract));
    }
    
    /**
    * @dev Switch emergency state-transfer in NestNode Token
    * @param amount Amount of NNs to transfer
    */
    function sendNestNodeForStateOfEmergency(uint256 amount) public {
        require(_NNToken.transferFrom(address(tx.origin), address(this), amount));
        _emergencyPerson[address(tx.origin)] = _emergencyPerson[address(tx.origin)].add(amount);
    }
    
    /**
    * @dev Switch emergency state-transfer out NestNode Token
    */
    function turnOutNestNodeForStateOfEmergency() public {
        require(_emergencyPerson[address(tx.origin)] > 0);
        require(_NNToken.transfer(address(tx.origin), _emergencyPerson[address(tx.origin)]));
        _emergencyPerson[address(tx.origin)] = 0;
        uint256 nestAmount = _nestToken.balanceOf(address(this));
        require(_nestToken.transfer(address(_destructionAddress), nestAmount));
    }
    
    /**
    * @dev Modify emergency state
    */
    function changeStateOfEmergency() public {
        if (_stateOfEmergency) {
            require(now > _emergencyTime.add(_emergencyTimeLimit));
            _stateOfEmergency = false;
            _emergencyTime = 0;
        } else {
            require(_emergencyPerson[address(msg.sender)] > 0);
            require(_NNToken.balanceOf(address(this)) >= _emergencyNNAmount);
            _stateOfEmergency = true;
            _emergencyTime = now;
        }
    }
    
    /**
    * @dev Check whether participating in the voting
    * @param user Address to check
    * @return bool Whether voting
    */
    function checkVoteNow(address user) public view returns (bool) {
        if (_myVote[user] == address(0x0)) {
            return false;
        } else {
            Nest_3_VoteContract vote = Nest_3_VoteContract(_myVote[user]);
            if (vote.checkContractEffective() || vote.checkPersonalAmount(user) == 0) {
                return false;
            }
            return true;
        }
    }
    
    /**
    * @dev Check my voting
    * @param user Address to check
    * @return address Address recently participated in the voting contract address
    */
    function checkMyVote(address user) public view returns (address) {
        return _myVote[user];
    }
    
    //  Check the voting time
    function checkLimitTime() public view returns (uint256) {
        return _limitTime;
    }
    
    //  Check the NestNode raising time
    function checkNNLimitTime() public view returns (uint256) {
        return _NNLimitTime;
    }
    
    //  Check the voting proportion to pass
    function checkCirculationProportion() public view returns (uint256) {
        return _circulationProportion;
    }
    
    //  Check the minimum number of NNs to create a voting contract
    function checkNNUsedCreate() public view returns (uint256) {
        return _NNUsedCreate;
    }
    
    //  Check the minimum number of NNs raised to start a vote
    function checkNNCreateLimit() public view returns (uint256) {
        return _NNCreateLimit;
    }
    
    //  Check whether in emergency state
    function checkStateOfEmergency() public view returns (bool) {
        return _stateOfEmergency;
    }
    
    //  Check the start time of the emergency state
    function checkEmergencyTime() public view returns (uint256) {
        return _emergencyTime;
    }
    
    //  Check the duration of the emergency state
    function checkEmergencyTimeLimit() public view returns (uint256) {
        return _emergencyTimeLimit;
    }
    
    //  Check the amount of personal pledged NNs
    function checkEmergencyPerson(address user) public view returns (uint256) {
        return _emergencyPerson[user];
    }
    
    //  Check the number of NNs required for the emergency
    function checkEmergencyNNAmount() public view returns (uint256) {
        return _emergencyNNAmount;
    }
    
    //  Verify voting contract data
    function checkContractData(address contractAddress) public view returns (bool) {
        return _contractData[contractAddress];
    }
    
    //  Modify voting time
    function changeLimitTime(uint256 num) public onlyOwner {
        require(num > 0, "Parameter needs to be greater than 0");
        _limitTime = num;
    }
    
    //  Modify the NestNode raising time
    function changeNNLimitTime(uint256 num) public onlyOwner {
        require(num > 0, "Parameter needs to be greater than 0");
        _NNLimitTime = num;
    }
    
    //  Modify the voting proportion
    function changeCirculationProportion(uint256 num) public onlyOwner {
        require(num > 0, "Parameter needs to be greater than 0");
        _circulationProportion = num;
    }
    
    //  Modify the minimum number of NNs to create a voting contract
    function changeNNUsedCreate(uint256 num) public onlyOwner {
        _NNUsedCreate = num;
    }
    
    //  Modify the minimum number of NNs to raised to start a voting
    function checkNNCreateLimit(uint256 num) public onlyOwner {
        _NNCreateLimit = num;
    }
    
    //  Modify the emergency state duration
    function changeEmergencyTimeLimit(uint256 num) public onlyOwner {
        require(num > 0);
        _emergencyTimeLimit = num.mul(1 days);
    }
    
    //  Modify the number of NNs required for emergency state
    function changeEmergencyNNAmount(uint256 num) public onlyOwner {
        require(num > 0);
        _emergencyNNAmount = num;
    }
    
    //  Check address
    function checkAddress(string memory name) public view returns (address contractAddress) {
        return _contractAddress[name];
    }
    
    //  Add contract mapping address
    function addContractAddress(string memory name, address contractAddress) public onlyOwner {
        _contractAddress[name] = contractAddress;
    }
    
    //  Add administrator address 
    function addSuperMan(address superMan) public onlyOwner {
        _modifyAuthority[superMan] = true;
    }
    function addSuperManPrivate(address superMan) private {
        _modifyAuthority[superMan] = true;
    }
    
    //  Delete administrator address
    function deleteSuperMan(address superMan) public onlyOwner {
        _modifyAuthority[superMan] = false;
    }
    function deleteSuperManPrivate(address superMan) private {
        _modifyAuthority[superMan] = false;
    }
    
    //  Delete voting contract data
    function deleteContractData(address contractAddress) public onlyOwner {
        _contractData[contractAddress] = false;
    }
    
    //  Check whether the administrator
    function checkOwners(address man) public view returns (bool) {
        return _modifyAuthority[man];
    }
    
    //  Administrator only
    modifier onlyOwner() {
        require(checkOwners(msg.sender), "No authority");
        _;
    }
}

/**
 * @title Voting contract
 */
contract Nest_3_VoteContract {
    using SafeMath for uint256;
    
    Nest_3_Implement _implementContract;                //  Executable contract
    Nest_3_TokenSave _tokenSave;                        //  Lock-up contract
    Nest_3_VoteFactory _voteFactory;                    //  Voting factory contract
    Nest_3_TokenAbonus _tokenAbonus;                    //  Bonus logic contract
    ERC20 _nestToken;                                   //  NestToken
    ERC20 _NNToken;                                     //  NestNode Token
    address _miningSave;                                //  Mining pool contract
    address _implementAddress;                          //  Executable contract address
    address _destructionAddress;                        //  Destruction contract address
    uint256 _createTime;                                //  Creation time
    uint256 _endTime;                                   //  End time
    uint256 _totalAmount;                               //  Total votes
    uint256 _circulation;                               //  Passed votes
    uint256 _destroyedNest;                             //  Destroyed NEST
    uint256 _NNLimitTime;                               //  NestNode raising time
    uint256 _NNCreateLimit;                             //  Minimum number of NNs to create votes
    uint256 _abonusTimes;                               //  Period number of used snapshot in emergency state
    uint256 _allNNAmount;                               //  Total number of NNs
    bool _effective = false;                            //  Whether vote is effective
    bool _nestVote = false;                             //  Whether NEST vote can be performed
    bool _isChange = false;                             //  Whether NEST vote is executed
    bool _stateOfEmergency;                             //  Whether the contract is in emergency state
    mapping(address => uint256) _personalAmount;        //  Number of personal votes
    mapping(address => uint256) _personalNNAmount;      //  Number of NN personal votes
    
    /**
    * @dev Initialization method
    * @param contractAddress Executable contract address
    * @param stateOfEmergency Whether in emergency state
    * @param NNAmount Amount of NNs
    */
    constructor (address contractAddress, bool stateOfEmergency, uint256 NNAmount) public {
        Nest_3_VoteFactory voteFactory = Nest_3_VoteFactory(address(msg.sender));
        _voteFactory = voteFactory;
        _nestToken = ERC20(voteFactory.checkAddress("nest"));
        _NNToken = ERC20(voteFactory.checkAddress("nestNode"));
        _implementContract = Nest_3_Implement(address(contractAddress));
        _implementAddress = address(contractAddress);
        _destructionAddress = address(voteFactory.checkAddress("nest.v3.destruction"));
        _personalNNAmount[address(tx.origin)] = NNAmount;
        _allNNAmount = NNAmount;
        _createTime = now;                                    
        _endTime = _createTime.add(voteFactory.checkLimitTime());
        _NNLimitTime = voteFactory.checkNNLimitTime();
        _NNCreateLimit = voteFactory.checkNNCreateLimit();
        _stateOfEmergency = stateOfEmergency;
        if (stateOfEmergency) {
            //  If in emergency state, read the last two periods of bonus lock-up and total circulation data
            _tokenAbonus = Nest_3_TokenAbonus(voteFactory.checkAddress("nest.v3.tokenAbonus"));
            _abonusTimes = _tokenAbonus.checkTimes().sub(2);
            require(_abonusTimes > 0);
            _circulation = _tokenAbonus.checkTokenAllValueHistory(address(_nestToken),_abonusTimes).mul(voteFactory.checkCirculationProportion()).div(100);
        } else {
            _miningSave = address(voteFactory.checkAddress("nest.v3.miningSave"));
            _tokenSave = Nest_3_TokenSave(voteFactory.checkAddress("nest.v3.tokenSave"));
            _circulation = (uint256(10000000000 ether).sub(_nestToken.balanceOf(address(_miningSave))).sub(_nestToken.balanceOf(address(_destructionAddress)))).mul(voteFactory.checkCirculationProportion()).div(100);
        }
        if (_allNNAmount >= _NNCreateLimit) {
            _nestVote = true;
        }
    }
    
    /**
    * @dev NEST voting
    */
    function nestVote() public onlyFactory {
        require(now <= _endTime, "Voting time exceeded");
        require(!_effective, "Vote in force");
        require(_nestVote);
        require(_personalAmount[address(tx.origin)] == 0, "Have voted");
        uint256 amount;
        if (_stateOfEmergency) {
            //  If in emergency state, read the last two periods of bonus lock-up and total circulation data
            amount = _tokenAbonus.checkTokenSelfHistory(address(_nestToken),_abonusTimes, address(tx.origin));
        } else {
            amount = _tokenSave.checkAmount(address(tx.origin), address(_nestToken));
        }
        _personalAmount[address(tx.origin)] = amount;
        _totalAmount = _totalAmount.add(amount);
        ifEffective();
    }
    
    /**
    * @dev NEST voting cancellation
    */
    function nestVoteCancel() public {
        require(address(msg.sender) == address(tx.origin), "It can't be a contract");
        require(now <= _endTime, "Voting time exceeded");
        require(!_effective, "Vote in force");
        require(_personalAmount[address(tx.origin)] > 0, "No vote");                     
        _totalAmount = _totalAmount.sub(_personalAmount[address(tx.origin)]);
        _personalAmount[address(tx.origin)] = 0;
    }
    
    /**
    * @dev  NestNode voting
    * @param NNAmount Amount of NNs
    */
    function nestNodeVote(uint256 NNAmount) public onlyFactory {
        require(now <= _createTime.add(_NNLimitTime), "Voting time exceeded");
        require(!_nestVote);
        _personalNNAmount[address(tx.origin)] = _personalNNAmount[address(tx.origin)].add(NNAmount);
        _allNNAmount = _allNNAmount.add(NNAmount);
        if (_allNNAmount >= _NNCreateLimit) {
            _nestVote = true;
        }
    }
    
    /**
    * @dev Withdrawing lock-up NNs
    */
    function turnOutNestNode() public {
        if (_nestVote) {
            //  Normal NEST voting
            if (!_stateOfEmergency || !_effective) {
                //  Non-emergency state
                require(now > _endTime, "Vote unenforceable");
            }
        } else {
            //  NN voting
            require(now > _createTime.add(_NNLimitTime));
        }
        require(_personalNNAmount[address(tx.origin)] > 0);
        //  Reverting back the NNs
        require(_NNToken.transfer(address(tx.origin), _personalNNAmount[address(tx.origin)]));
        _personalNNAmount[address(tx.origin)] = 0;
        //  Destroying NEST Tokens 
        uint256 nestAmount = _nestToken.balanceOf(address(this));
        _destroyedNest = _destroyedNest.add(nestAmount);
        require(_nestToken.transfer(address(_destructionAddress), nestAmount));
    }
    
    /**
    * @dev Execute the contract
    */
    function startChange() public onlyFactory {
        require(!_isChange);
        _isChange = true;
        if (_stateOfEmergency) {
            require(_effective, "Vote unenforceable");
        } else {
            require(_effective && now > _endTime, "Vote unenforceable");
        }
        //  Add the executable contract to the administrator list
        _voteFactory.addSuperMan(address(_implementContract));
        //  Execute
        _implementContract.doit();
        //  Delete the authorization
        _voteFactory.deleteSuperMan(address(_implementContract));
    }
    
    /**
    * @dev check whether the vote is effective
    */
    function ifEffective() private {
        if (_totalAmount >= _circulation) {
            _effective = true;
        }
    }
    
    /**
    * @dev Check whether the vote is over
    */
    function checkContractEffective() public view returns (bool) {
        if (_effective || now > _endTime) {
            return true;
        } 
        return false;
    }
    
    //  Check the executable implement contract address
    function checkImplementAddress() public view returns (address) {
        return _implementAddress;
    }
    
    //  Check the voting start time
    function checkCreateTime() public view returns (uint256) {
        return _createTime;
    }
    
    //  Check the voting end time
    function checkEndTime() public view returns (uint256) {
        return _endTime;
    }
    
    //  Check the current total number of votes
    function checkTotalAmount() public view returns (uint256) {
        return _totalAmount;
    }
    
    //  Check the number of votes to pass
    function checkCirculation() public view returns (uint256) {
        return _circulation;
    }
    
    //  Check the number of personal votes
    function checkPersonalAmount(address user) public view returns (uint256) {
        return _personalAmount[user];
    }
    
    //  Check the destroyed NEST
    function checkDestroyedNest() public view returns (uint256) {
        return _destroyedNest;
    }
    
    //  Check whether the contract is effective
    function checkEffective() public view returns (bool) {
        return _effective;
    }
    
    //  Check whether in emergency state
    function checkStateOfEmergency() public view returns (bool) {
        return _stateOfEmergency;
    }
    
    //  Check NestNode raising time
    function checkNNLimitTime() public view returns (uint256) {
        return _NNLimitTime;
    }
    
    //  Check the minimum number of NNs to create a vote
    function checkNNCreateLimit() public view returns (uint256) {
        return _NNCreateLimit;
    }
    
    //  Check the period number of snapshot used in the emergency state
    function checkAbonusTimes() public view returns (uint256) {
        return _abonusTimes;
    }
    
    //  Check number of personal votes
    function checkPersonalNNAmount(address user) public view returns (uint256) {
        return _personalNNAmount[address(user)];
    }
    
    //  Check the total number of NNs
    function checkAllNNAmount() public view returns (uint256) {
        return _allNNAmount;
    }
    
    //  Check whether NEST voting is available
    function checkNestVote() public view returns (bool) {
        return _nestVote;
    }
    
    //  Check whether it has been excecuted
    function checkIsChange() public view returns (bool) {
        return _isChange;
    }
    
    //  Vote Factory contract only
    modifier onlyFactory() {
        require(address(_voteFactory) == address(msg.sender), "No authority");
        _;
    }
}

//  Executable contract
interface Nest_3_Implement {
    //  Execute
    function doit() external;
}

//  NEST lock-up contract
interface Nest_3_TokenSave {
    //  Check lock-up amount
    function checkAmount(address sender, address token) external view returns (uint256);
}

//  Bonus logic contract
interface Nest_3_TokenAbonus {
    //  Check NEST circulation snapshot
    function checkTokenAllValueHistory(address token, uint256 times) external view returns (uint256);
    //  Check NEST user balance snapshot
    function checkTokenSelfHistory(address token, uint256 times, address user) external view returns (uint256);
    //  Check bonus ledger period
    function checkTimes() external view returns (uint256);
}

//  Erc20 contract
interface ERC20 {
    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);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, 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 div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"contractAddress","type":"address"}],"name":"ContractAddress","type":"event"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"contractAddress","type":"address"}],"name":"addContractAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"superMan","type":"address"}],"name":"addSuperMan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"changeCirculationProportion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"changeEmergencyNNAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"changeEmergencyTimeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"changeLimitTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"changeMapping","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"changeNNLimitTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"changeNNUsedCreate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"changeStateOfEmergency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"checkAddress","outputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkCirculationProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"checkContractData","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkEmergencyNNAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"checkEmergencyPerson","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkEmergencyTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkEmergencyTimeLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkLimitTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"checkMyVote","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"checkNNCreateLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkNNCreateLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkNNLimitTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkNNUsedCreate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"man","type":"address"}],"name":"checkOwners","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkStateOfEmergency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"checkVoteNow","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"implementContract","type":"address"},{"internalType":"uint256","name":"nestNodeAmount","type":"uint256"}],"name":"createVote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"deleteContractData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"superMan","type":"address"}],"name":"deleteSuperMan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"NNAmount","type":"uint256"}],"name":"nestNodeVote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"nestVote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sendNestNodeForStateOfEmergency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"startChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"turnOutNestNodeForStateOfEmergency","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405262093a806000908155620151806001556033600255600a60035560646004556005556203f4806006556103e8600755600f805460ff1916905534801561004957600080fd5b50336000908152600b60205260409020805460ff191660011790556138bb806100736000396000f3fe60806040523480156200001157600080fd5b5060043610620002385760003560e01c8063690055011162000135578063b3f0433c11620000bd578063c7d550571162000087578063c7d5505714620006c1578063ddc5e6d414620006ea578063e74f8ed514620006f4578063f6a71bf41462000714578063f7e99aae14620007345762000238565b8063b3f0433c1462000645578063b6518bdb146200066e578063baa01af01462000697578063c179a34114620006b75762000238565b80638fe77e8611620000ff5780638fe77e8614620005375780639348cb4214620005e3578063a3bf06f114620005ed578063b12d96f714620006165762000238565b80636900550114620004c45780636990d93514620004e45780636c515bce14620004ee5780636d4f769614620005175762000238565b80633a037b8b11620001c557806357a0dc46116200018f57806357a0dc4614620004735780635ce1e2ff146200047d578063631fad3614620004a657806363cd610614620004b0578063674086f614620004ba5762000238565b80633a037b8b14620003695780633f782ad2146200038957806353424cbf146200039357806353b1e09714620003bc5762000238565b806309ddd882116200020757806309ddd88214620002de5780630fb4441114620003075780631c2700d4146200033657806327af0b53146200035f5762000238565b80630425f52f146200023d578063056a5d75146200025b57806307ceb41414620002a057806309c3454414620002bc575b600080fd5b6200024762000754565b604080519115158252519081900360200190f35b62000284600480360360208110156200027357600080fd5b50356001600160a01b03166200075d565b604080516001600160a01b039092168252519081900360200190f35b620002aa6200077e565b60408051918252519081900360200190f35b620002dc60048036036020811015620002d457600080fd5b503562000784565b005b620002dc60048036036020811015620002f657600080fd5b50356001600160a01b0316620007f9565b620002dc600480360360408110156200031f57600080fd5b506001600160a01b038135169060200135620009a4565b620002dc600480360360208110156200034e57600080fd5b50356001600160a01b031662000ba2565b620002dc62000cfc565b620002dc600480360360208110156200038157600080fd5b503562000df7565b620002aa62000e48565b620002dc60048036036020811015620003ab57600080fd5b50356001600160a01b031662000e4e565b620002dc60048036036040811015620003d457600080fd5b810190602081018135640100000000811115620003f057600080fd5b8201836020820111156200040357600080fd5b803590602001918460018302840111640100000000831117156200042657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b0316915062000ebb9050565b620002dc62000f8c565b62000247600480360360208110156200049557600080fd5b50356001600160a01b031662001162565b620002aa62001180565b620002aa62001186565b620002aa6200118c565b620002dc60048036036020811015620004dc57600080fd5b503562001192565b620002aa62001224565b620002aa600480360360208110156200050657600080fd5b50356001600160a01b03166200122a565b620002dc600480360360208110156200052f57600080fd5b503562001245565b62000284600480360360208110156200054f57600080fd5b8101906020810181356401000000008111156200056b57600080fd5b8201836020820111156200057e57600080fd5b80359060200191846001830284011164010000000083111715620005a157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955062001296945050505050565b620002aa62001309565b62000247600480360360208110156200060557600080fd5b50356001600160a01b03166200130f565b620002dc600480360360408110156200062e57600080fd5b506001600160a01b0381351690602001356200132d565b62000247600480360360208110156200065d57600080fd5b50356001600160a01b031662001523565b620002dc600480360360208110156200068657600080fd5b50356001600160a01b03166200167a565b620002dc60048036036020811015620006af57600080fd5b5035620016ea565b620002aa6200177c565b620002dc60048036036020811015620006d957600080fd5b50356001600160a01b031662001782565b620002dc620017ef565b620002dc600480360360208110156200070c57600080fd5b50356200192a565b620002dc600480360360208110156200072c57600080fd5b5035620019f2565b620002dc600480360360208110156200074c57600080fd5b503562001a51565b600f5460ff1690565b6001600160a01b038082166000908152600c6020526040902054165b919050565b60065490565b6200078f336200130f565b620007d0576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b60008111620007de57600080fd5b620007f3816201518063ffffffff62001ae316565b60065550565b33321462000847576040805162461bcd60e51b8152602060048201526016602482015275125d0818d85b89dd08189948184818dbdb9d1c9858dd60521b604482015290519081900360640190fd5b6001600160a01b0381166000908152600e602052604090205460ff16620008b2576040805162461bcd60e51b815260206004820152601a602482015279125d09dcc81b9bdd0818481d9bdd1a5b99c818dbdb9d1c9858dd60321b604482015290519081900360640190fd5b6000819050806001600160a01b0316630425f52f6040518163ffffffff1660e01b815260040160206040518083038186803b158015620008f157600080fd5b505afa15801562000906573d6000803e3d6000fd5b505050506040513d60208110156200091d57600080fd5b5051600f5460ff161515901515146200093557600080fd5b6200094081620016c6565b806001600160a01b031663b47247566040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200097c57600080fd5b505af115801562000991573d6000803e3d6000fd5b50505050620009a081620017ce565b5050565b333214620009f2576040805162461bcd60e51b8152602060048201526016602482015275125d0818d85b89dd08189948184818dbdb9d1c9858dd60521b604482015290519081900360640190fd5b6001600160a01b0382166000908152600e602052604090205460ff1662000a5d576040805162461bcd60e51b815260206004820152601a602482015279125d09dcc81b9bdd0818481d9bdd1a5b99c818dbdb9d1c9858dd60321b604482015290519081900360640190fd5b600854604080516323b872dd60e01b81523260048201526001600160a01b038086166024830152604482018590529151859392909216916323b872dd916064808201926020929091908290030181600087803b15801562000abd57600080fd5b505af115801562000ad2573d6000803e3d6000fd5b505050506040513d602081101562000ae957600080fd5b505162000b3d576040805162461bcd60e51b815260206004820152601d60248201527f417574686f72697a6174696f6e207472616e73666572206661696c6564000000604482015290519081900360640190fd5b806001600160a01b03166394bfed58836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801562000b8457600080fd5b505af115801562000b99573d6000803e3d6000fd5b50505050505050565b33321462000bf0576040805162461bcd60e51b8152602060048201526016602482015275125d0818d85b89dd08189948184818dbdb9d1c9858dd60521b604482015290519081900360640190fd5b6001600160a01b0381166000908152600e602052604090205460ff1662000c5b576040805162461bcd60e51b815260206004820152601a602482015279125d09dcc81b9bdd0818481d9bdd1a5b99c818dbdb9d1c9858dd60321b604482015290519081900360640190fd5b62000c663362001523565b1562000c7157600080fd5b6000819050806001600160a01b03166374d414296040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000cb257600080fd5b505af115801562000cc7573d6000803e3d6000fd5b5050326000908152600c6020526040902080546001600160a01b0319166001600160a01b039590951694909417909355505050565b600f5460ff161562000d405760065460055462000d1f9163ffffffff62001b4a16565b421162000d2b57600080fd5b600f805460ff19169055600060055562000df5565b336000908152600d602052604090205462000d5a57600080fd5b600754600854604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801562000da957600080fd5b505afa15801562000dbe573d6000803e3d6000fd5b505050506040513d602081101562000dd557600080fd5b5051101562000de357600080fd5b600f805460ff19166001179055426005555b565b62000e02336200130f565b62000e43576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b600455565b60005490565b62000e59336200130f565b62000e9a576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b6001600160a01b03166000908152600e60205260409020805460ff19169055565b62000ec6336200130f565b62000f07576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b80600a836040518082805190602001908083835b6020831062000f3c5780518252601f19909201916020918201910162000f1b565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922080546001600160a01b0319166001600160a01b03949094169390931790925550505050565b326000908152600d602052604090205462000fa657600080fd5b600854326000818152600d6020908152604080832054815163a9059cbb60e01b815260048101959095526024850152516001600160a01b039094169363a9059cbb93604480820194918390030190829087803b1580156200100657600080fd5b505af11580156200101b573d6000803e3d6000fd5b505050506040513d60208110156200103257600080fd5b50516200103e57600080fd5b326000908152600d6020908152604080832083905560095481516370a0823160e01b815230600482015291516001600160a01b03909116926370a082319260248082019391829003018186803b1580156200109857600080fd5b505afa158015620010ad573d6000803e3d6000fd5b505050506040513d6020811015620010c457600080fd5b5051600954600f546040805163a9059cbb60e01b81526001600160a01b036101009093048316600482015260248101859052905193945091169163a9059cbb916044808201926020929091908290030181600087803b1580156200112757600080fd5b505af11580156200113c573d6000803e3d6000fd5b505050506040513d60208110156200115357600080fd5b50516200115f57600080fd5b50565b6001600160a01b03166000908152600e602052604090205460ff1690565b60075490565b60055490565b60035490565b6200119d336200130f565b620011de576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b600081116200121f5760405162461bcd60e51b8152600401808060200182810382526024815260200180620038416024913960400191505060405180910390fd5b600255565b60025490565b6001600160a01b03166000908152600d602052604090205490565b62001250336200130f565b62001291576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b600355565b6000600a826040518082805190602001908083835b60208310620012cc5780518252601f199092019160209182019101620012ab565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220546001600160a01b0316949350505050565b60045490565b6001600160a01b03166000908152600b602052604090205460ff1690565b3233146200137b576040805162461bcd60e51b8152602060048201526016602482015275125d0818d85b89dd08189948184818dbdb9d1c9858dd60521b604482015290519081900360640190fd5b6003548110156200138b57600080fd5b600f54604051600091849160ff909116908490620013a99062001ba5565b6001600160a01b03909316835290151560208301526040808301919091525190819003606001906000f080158015620013e6573d6000803e3d6000fd5b50600854604080516323b872dd60e01b81523260048201526001600160a01b0380851660248301526044820187905291519394509116916323b872dd916064808201926020929091908290030181600087803b1580156200144657600080fd5b505af11580156200145b573d6000803e3d6000fd5b505050506040513d60208110156200147257600080fd5b5051620014c6576040805162461bcd60e51b815260206004820152601d60248201527f417574686f72697a6174696f6e207472616e73666572206661696c6564000000604482015290519081900360640190fd5b6001600160a01b0381166000818152600e6020908152604091829020805460ff19166001179055815192835290517f1a0f921ce3c6f2f0f6be5b624a487bc1d5143e1fd1833154f39ab63e13d897559281900390910190a1505050565b6001600160a01b038181166000908152600c60205260408120549091166200154e5750600062000779565b6001600160a01b038083166000908152600c602090815260409182902054825163178f552d60e11b815292519316928392632f1eaa5a926004808301939192829003018186803b158015620015a257600080fd5b505afa158015620015b7573d6000803e3d6000fd5b505050506040513d6020811015620015ce57600080fd5b5051806200165e5750806001600160a01b031663723a3533846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156200162e57600080fd5b505afa15801562001643573d6000803e3d6000fd5b505050506040513d60208110156200165a57600080fd5b5051155b156200166f57600091505062000779565b600191505062000779565b62001685336200130f565b620016c6576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b620016f5336200130f565b62001736576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b60008111620017775760405162461bcd60e51b8152600401808060200182810382526024815260200180620038416024913960400191505060405180910390fd5b600155565b60015490565b6200178d336200130f565b620017ce576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b6001600160a01b03166000908152600b60205260409020805460ff19169055565b620017fa336200130f565b6200183b576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b62001866604051806040016040528060088152602001676e6573744e6f646560c01b81525062001296565b600880546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260138152723732b9ba173b19973232b9ba393ab1ba34b7b760691b6020820152620018bb9062001296565b600f60016101000a8154816001600160a01b0302191690836001600160a01b0316021790555062001908604051806040016040528060048152602001631b995cdd60e21b81525062001296565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b600854604080516323b872dd60e01b81523260048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b1580156200198557600080fd5b505af11580156200199a573d6000803e3d6000fd5b505050506040513d6020811015620019b157600080fd5b5051620019bd57600080fd5b326000908152600d6020526040902054620019df908263ffffffff62001b4a16565b326000908152600d602052604090205550565b620019fd336200130f565b62001a3e576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b6000811162001a4c57600080fd5b600755565b62001a5c336200130f565b62001a9d576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b6000811162001ade5760405162461bcd60e51b8152600401808060200182810382526024815260200180620038416024913960400191505060405180910390fd5b600055565b60008262001af45750600062001b44565b8282028284828162001b0257fe5b041462001b415760405162461bcd60e51b8152600401808060200182810382526021815260200180620038656021913960400191505060405180910390fd5b90505b92915050565b60008282018381101562001b41576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b611c8d8062001bb48339019056fe60806040526012805462ffffff191690553480156200001d57600080fd5b5060405162001c8d38038062001c8d833981810160405260608110156200004357600080fd5b508051602080830151604093840151600280546001600160a01b0319163390811790915585516347f3bf4360e11b815260048082018690526024820152631b995cdd60e21b6044820152955194959294919390928392638fe77e8692606480840193919291829003018186803b158015620000bd57600080fd5b505afa158015620000d2573d6000803e3d6000fd5b505050506040513d6020811015620000e957600080fd5b5051600480546001600160a01b0319166001600160a01b03928316178155604080516347f3bf4360e11b8152602092810183905260086024820152676e6573744e6f646560c01b6044820152905192841692638fe77e8692606480840193919291829003018186803b1580156200015f57600080fd5b505afa15801562000174573d6000803e3d6000fd5b505050506040513d60208110156200018b57600080fd5b5051600580546001600160a01b039283166001600160a01b03199182161790915560008054878416908316811790915560078054909216179055604080516347f3bf4360e11b8152602060048201819052601360248301527f6e6573742e76332e6465737472756374696f6e000000000000000000000000006044830152915192841692638fe77e8692606480840193919291829003018186803b1580156200023357600080fd5b505afa15801562000248573d6000803e3d6000fd5b505050506040513d60208110156200025f57600080fd5b5051600880546001600160a01b0319166001600160a01b03928316179055326000908152601460209081526040918290208590556011859055426009558151631fbc156960e11b815291516200031993851692633f782ad2926004808301939192829003018186803b158015620002d557600080fd5b505afa158015620002ea573d6000803e3d6000fd5b505050506040513d60208110156200030157600080fd5b505160095490620009ef602090811b62000d6f17901c565b600a81905550806001600160a01b031663c179a3416040518163ffffffff1660e01b815260040160206040518083038186803b1580156200035957600080fd5b505afa1580156200036e573d6000803e3d6000fd5b505050506040513d60208110156200038557600080fd5b5051600e55604080516349a465a160e11b815290516001600160a01b03831691639348cb42916004808301926020929190829003018186803b158015620003cb57600080fd5b505afa158015620003e0573d6000803e3d6000fd5b505050506040513d6020811015620003f757600080fd5b5051600f55601280548415801563010000000263ff00000019909216919091179091556200069b57604080516347f3bf4360e11b8152602060048201819052601360248301527f6e6573742e76332e746f6b656e41626f6e757300000000000000000000000000604483015291516001600160a01b03841692638fe77e869260648082019391829003018186803b1580156200049257600080fd5b505afa158015620004a7573d6000803e3d6000fd5b505050506040513d6020811015620004be57600080fd5b5051600380546001600160a01b0319166001600160a01b039283161790819055604080516325d4675b60e11b815290516200055f936002931691634ba8ceb6916004808301926020929190829003018186803b1580156200051e57600080fd5b505afa15801562000533573d6000803e3d6000fd5b505050506040513d60208110156200054a57600080fd5b50519062000a53602090811b62000ded17901c565b60108190556200056e57600080fd5b6200069260646200067e836001600160a01b0316636990d9356040518163ffffffff1660e01b815260040160206040518083038186803b158015620005b257600080fd5b505afa158015620005c7573d6000803e3d6000fd5b505050506040513d6020811015620005de57600080fd5b5051600354600480546010546040805163da3bba0560e01b81526001600160a01b039384169481019490945260248401919091525192169163da3bba0591604480820192602092909190829003018186803b1580156200063d57600080fd5b505afa15801562000652573d6000803e3d6000fd5b505050506040513d60208110156200066957600080fd5b50519062000a9d602090811b62000ec117901c565b62000afb60201b62000f1a1790919060201c565b600c55620009c9565b604080516347f3bf4360e11b815260206004820181905260126024830152716e6573742e76332e6d696e696e675361766560701b604483015291516001600160a01b03841692638fe77e869260648082019391829003018186803b1580156200070357600080fd5b505afa15801562000718573d6000803e3d6000fd5b505050506040513d60208110156200072f57600080fd5b5051600680546001600160a01b0319166001600160a01b03928316179055604080516347f3bf4360e11b815260206004820181905260116024830152706e6573742e76332e746f6b656e5361766560781b6044830152915192841692638fe77e8692606480840193919291829003018186803b158015620007af57600080fd5b505afa158015620007c4573d6000803e3d6000fd5b505050506040513d6020811015620007db57600080fd5b5051600180546001600160a01b0319166001600160a01b0392831617905560408051636990d93560e01b81529051620009c5926064926200067e9291861691636990d93591600480820192602092909190829003018186803b1580156200084157600080fd5b505afa15801562000856573d6000803e3d6000fd5b505050506040513d60208110156200086d57600080fd5b505160048054600854604080516370a0823160e01b81526001600160a01b039283169481019490945251620009b19391909216916370a0823191602480820192602092909190829003018186803b158015620008c857600080fd5b505afa158015620008dd573d6000803e3d6000fd5b505050506040513d6020811015620008f457600080fd5b505160048054600654604080516370a0823160e01b81526001600160a01b0392831694810194909452516200099d9391909216916370a0823191602480820192602092909190829003018186803b1580156200094f57600080fd5b505afa15801562000964573d6000803e3d6000fd5b505050506040513d60208110156200097b57600080fd5b50516b204fce5e3e250261100000009062000a53602090811b62000ded17901c565b62000a5360201b62000ded1790919060201c565b62000a9d60201b62000ec11790919060201c565b600c555b600f5460115410620009e5576012805461ff0019166101001790555b5050505062000c49565b60008282018381101562000a4a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b600062000a4a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062000b4560201b60201c565b60008262000aae5750600062000a4d565b8282028284828162000abc57fe5b041462000a4a5760405162461bcd60e51b815260040180806020018281038252602181526020018062001c6c6021913960400191505060405180910390fd5b600062000a4a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000be060201b60201c565b6000818484111562000bd85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000b9c57818101518382015260200162000b82565b50505050905090810190601f16801562000bca5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000818362000c325760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831562000b9c57818101518382015260200162000b82565b50600083858162000c3f57fe5b0495945050505050565b6110138062000c596000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80639348cb42116100b8578063b7091a191161007c578063b7091a1914610222578063b962364614610246578063c179a3411461024e578063d86ef1bc14610256578063f400ff5f1461025e578063fe317ef41461026657610142565b80639348cb42146101e557806394bfed58146101ed578063a03100211461020a578063aa70cc4414610212578063b47247561461021a57610142565b80632f1eaa5a1161010a5780632f1eaa5a1461019557806339e8cbd81461019d5780636bb9885c146101a5578063723a3533146101af57806374d41429146101d55780638a208c08146101dd57610142565b80630425f52f146101475780630a08a830146101635780631c3c7b791461017d578063268dae5b1461018557806328b560481461018d575b600080fd5b61014f61028c565b604080519115158252519081900360200190f35b61016b61029d565b60408051918252519081900360200190f35b61016b6102a3565b61014f6102a9565b61016b6102b8565b61014f6102be565b61016b6102e6565b6101ad6102ec565b005b61016b600480360360208110156101c557600080fd5b50356001600160a01b031661056b565b6101ad610586565b61016b61082d565b61016b610833565b6101ad6004803603602081101561020357600080fd5b5035610839565b61014f61095e565b61014f61096c565b6101ad610975565b61022a610bce565b604080516001600160a01b039092168252519081900360200190f35b61016b610bdd565b61016b610be3565b6101ad610be9565b61016b610d4e565b61016b6004803603602081101561027c57600080fd5b50356001600160a01b0316610d54565b6012546301000000900460ff165b90565b60105490565b600b5490565b60125462010000900460ff1690565b600a5490565b60125460009060ff16806102d35750600a5442115b156102e05750600161029a565b50600090565b60115490565b601254610100900460ff161561036d576012546301000000900460ff161580610318575060125460ff16155b1561036857600a544211610368576040805162461bcd60e51b8152602060048201526012602482015271566f746520756e656e666f72636561626c6560701b604482015290519081900360640190fd5b61038d565b600e546009546103829163ffffffff610d6f16565b421161038d57600080fd5b326000908152601460205260409020546103a657600080fd5b60055432600081815260146020908152604080832054815163a9059cbb60e01b815260048101959095526024850152516001600160a01b039094169363a9059cbb93604480820194918390030190829087803b15801561040557600080fd5b505af1158015610419573d6000803e3d6000fd5b505050506040513d602081101561042f57600080fd5b505161043a57600080fd5b3260009081526014602090815260408083208390556004805482516370a0823160e01b8152309281019290925291516001600160a01b03909216926370a0823192602480840193829003018186803b15801561049557600080fd5b505afa1580156104a9573d6000803e3d6000fd5b505050506040513d60208110156104bf57600080fd5b5051600d549091506104d7908263ffffffff610d6f16565b600d55600480546008546040805163a9059cbb60e01b81526001600160a01b0392831694810194909452602484018590525191169163a9059cbb9160448083019260209291908290030181600087803b15801561053357600080fd5b505af1158015610547573d6000803e3d6000fd5b505050506040513d602081101561055d57600080fd5b505161056857600080fd5b50565b6001600160a01b031660009081526013602052604090205490565b6002546001600160a01b031633146105d4576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b600a54421115610622576040805162461bcd60e51b8152602060048201526014602482015273159bdd1a5b99c81d1a5b5948195e18d95959195960621b604482015290519081900360640190fd5b60125460ff161561066a576040805162461bcd60e51b815260206004820152600d60248201526c566f746520696e20666f72636560981b604482015290519081900360640190fd5b601254610100900460ff1661067e57600080fd5b32600090815260136020526040902054156106cd576040805162461bcd60e51b815260206004820152600a60248201526912185d99481d9bdd195960b21b604482015290519081900360640190fd5b6012546000906301000000900460ff16156107775760035460048054601054604080516336569b5d60e21b81526001600160a01b039384169481019490945260248401919091523260448401525192169163d95a6d7491606480820192602092909190829003018186803b15801561074457600080fd5b505afa158015610758573d6000803e3d6000fd5b505050506040513d602081101561076e57600080fd5b505190506107fd565b60015460048054604080516335c14f4560e11b815232938101939093526001600160a01b03918216602484015251921691636b829e8a91604480820192602092909190829003018186803b1580156107ce57600080fd5b505afa1580156107e2573d6000803e3d6000fd5b505050506040513d60208110156107f857600080fd5b505190505b326000908152601360205260409020819055600b54610822908263ffffffff610d6f16565b600b55610568610dd2565b60095490565b600f5490565b6002546001600160a01b03163314610887576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b600e5460095461089c9163ffffffff610d6f16565b4211156108e7576040805162461bcd60e51b8152602060048201526014602482015273159bdd1a5b99c81d1a5b5948195e18d95959195960621b604482015290519081900360640190fd5b601254610100900460ff16156108fc57600080fd5b3260009081526014602052604090205461091c908263ffffffff610d6f16565b3260009081526014602052604090205560115461093f908263ffffffff610d6f16565b6011819055600f5411610568576012805461ff00191661010017905550565b601254610100900460ff1690565b60125460ff1690565b6002546001600160a01b031633146109c3576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b60125462010000900460ff16156109d957600080fd5b6012805462ff000019166201000017908190556301000000900460ff1615610a4c5760125460ff16610a47576040805162461bcd60e51b8152602060048201526012602482015271566f746520756e656e666f72636561626c6560701b604482015290519081900360640190fd5b610aa5565b60125460ff168015610a5f5750600a5442115b610aa5576040805162461bcd60e51b8152602060048201526012602482015271566f746520756e656e666f72636561626c6560701b604482015290519081900360640190fd5b600254600080546040805163b6518bdb60e01b81526001600160a01b0392831660048201529051919093169263b6518bdb92602480830193919282900301818387803b158015610af457600080fd5b505af1158015610b08573d6000803e3d6000fd5b50506000805460408051634d536fe360e01b815290516001600160a01b039092169450634d536fe39350600480820193929182900301818387803b158015610b4f57600080fd5b505af1158015610b63573d6000803e3d6000fd5b5050600254600080546040805163c7d5505760e01b81526001600160a01b039283166004820152905191909316945063c7d55057935060248084019382900301818387803b158015610bb457600080fd5b505af1158015610bc8573d6000803e3d6000fd5b50505050565b6007546001600160a01b031690565b600c5490565b600e5490565b333214610c36576040805162461bcd60e51b8152602060048201526016602482015275125d0818d85b89dd08189948184818dbdb9d1c9858dd60521b604482015290519081900360640190fd5b600a54421115610c84576040805162461bcd60e51b8152602060048201526014602482015273159bdd1a5b99c81d1a5b5948195e18d95959195960621b604482015290519081900360640190fd5b60125460ff1615610ccc576040805162461bcd60e51b815260206004820152600d60248201526c566f746520696e20666f72636560981b604482015290519081900360640190fd5b32600090815260136020526040902054610d17576040805162461bcd60e51b81526020600482015260076024820152664e6f20766f746560c81b604482015290519081900360640190fd5b32600090815260136020526040902054600b54610d399163ffffffff610ded16565b600b5532600090815260136020526040812055565b600d5490565b6001600160a01b031660009081526014602052604090205490565b600082820183811015610dc9576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b600c54600b5410610deb576012805460ff191660011790555b565b6000610dc983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060008184841115610eb95760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e7e578181015183820152602001610e66565b50505050905090810190601f168015610eab5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082610ed057506000610dcc565b82820282848281610edd57fe5b0414610dc95760405162461bcd60e51b8152600401808060200182810382526021815260200180610fbd6021913960400191505060405180910390fd5b6000610dc983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183610fa65760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610e7e578181015183820152602001610e66565b506000838581610fb257fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122010ca6fc463ec15227c88f90eb2c6f4334c7cfcc42d601d8af8e8a5f990d3dea464736f6c63430006000033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77506172616d65746572206e6565647320746f2062652067726561746572207468616e2030536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220e245d2fac7fb05efe6914180891050801ac814d143bf1b6854d3455aed0b190e64736f6c63430006000033

Deployed Bytecode

0x60806040523480156200001157600080fd5b5060043610620002385760003560e01c8063690055011162000135578063b3f0433c11620000bd578063c7d550571162000087578063c7d5505714620006c1578063ddc5e6d414620006ea578063e74f8ed514620006f4578063f6a71bf41462000714578063f7e99aae14620007345762000238565b8063b3f0433c1462000645578063b6518bdb146200066e578063baa01af01462000697578063c179a34114620006b75762000238565b80638fe77e8611620000ff5780638fe77e8614620005375780639348cb4214620005e3578063a3bf06f114620005ed578063b12d96f714620006165762000238565b80636900550114620004c45780636990d93514620004e45780636c515bce14620004ee5780636d4f769614620005175762000238565b80633a037b8b11620001c557806357a0dc46116200018f57806357a0dc4614620004735780635ce1e2ff146200047d578063631fad3614620004a657806363cd610614620004b0578063674086f614620004ba5762000238565b80633a037b8b14620003695780633f782ad2146200038957806353424cbf146200039357806353b1e09714620003bc5762000238565b806309ddd882116200020757806309ddd88214620002de5780630fb4441114620003075780631c2700d4146200033657806327af0b53146200035f5762000238565b80630425f52f146200023d578063056a5d75146200025b57806307ceb41414620002a057806309c3454414620002bc575b600080fd5b6200024762000754565b604080519115158252519081900360200190f35b62000284600480360360208110156200027357600080fd5b50356001600160a01b03166200075d565b604080516001600160a01b039092168252519081900360200190f35b620002aa6200077e565b60408051918252519081900360200190f35b620002dc60048036036020811015620002d457600080fd5b503562000784565b005b620002dc60048036036020811015620002f657600080fd5b50356001600160a01b0316620007f9565b620002dc600480360360408110156200031f57600080fd5b506001600160a01b038135169060200135620009a4565b620002dc600480360360208110156200034e57600080fd5b50356001600160a01b031662000ba2565b620002dc62000cfc565b620002dc600480360360208110156200038157600080fd5b503562000df7565b620002aa62000e48565b620002dc60048036036020811015620003ab57600080fd5b50356001600160a01b031662000e4e565b620002dc60048036036040811015620003d457600080fd5b810190602081018135640100000000811115620003f057600080fd5b8201836020820111156200040357600080fd5b803590602001918460018302840111640100000000831117156200042657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b0316915062000ebb9050565b620002dc62000f8c565b62000247600480360360208110156200049557600080fd5b50356001600160a01b031662001162565b620002aa62001180565b620002aa62001186565b620002aa6200118c565b620002dc60048036036020811015620004dc57600080fd5b503562001192565b620002aa62001224565b620002aa600480360360208110156200050657600080fd5b50356001600160a01b03166200122a565b620002dc600480360360208110156200052f57600080fd5b503562001245565b62000284600480360360208110156200054f57600080fd5b8101906020810181356401000000008111156200056b57600080fd5b8201836020820111156200057e57600080fd5b80359060200191846001830284011164010000000083111715620005a157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955062001296945050505050565b620002aa62001309565b62000247600480360360208110156200060557600080fd5b50356001600160a01b03166200130f565b620002dc600480360360408110156200062e57600080fd5b506001600160a01b0381351690602001356200132d565b62000247600480360360208110156200065d57600080fd5b50356001600160a01b031662001523565b620002dc600480360360208110156200068657600080fd5b50356001600160a01b03166200167a565b620002dc60048036036020811015620006af57600080fd5b5035620016ea565b620002aa6200177c565b620002dc60048036036020811015620006d957600080fd5b50356001600160a01b031662001782565b620002dc620017ef565b620002dc600480360360208110156200070c57600080fd5b50356200192a565b620002dc600480360360208110156200072c57600080fd5b5035620019f2565b620002dc600480360360208110156200074c57600080fd5b503562001a51565b600f5460ff1690565b6001600160a01b038082166000908152600c6020526040902054165b919050565b60065490565b6200078f336200130f565b620007d0576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b60008111620007de57600080fd5b620007f3816201518063ffffffff62001ae316565b60065550565b33321462000847576040805162461bcd60e51b8152602060048201526016602482015275125d0818d85b89dd08189948184818dbdb9d1c9858dd60521b604482015290519081900360640190fd5b6001600160a01b0381166000908152600e602052604090205460ff16620008b2576040805162461bcd60e51b815260206004820152601a602482015279125d09dcc81b9bdd0818481d9bdd1a5b99c818dbdb9d1c9858dd60321b604482015290519081900360640190fd5b6000819050806001600160a01b0316630425f52f6040518163ffffffff1660e01b815260040160206040518083038186803b158015620008f157600080fd5b505afa15801562000906573d6000803e3d6000fd5b505050506040513d60208110156200091d57600080fd5b5051600f5460ff161515901515146200093557600080fd5b6200094081620016c6565b806001600160a01b031663b47247566040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200097c57600080fd5b505af115801562000991573d6000803e3d6000fd5b50505050620009a081620017ce565b5050565b333214620009f2576040805162461bcd60e51b8152602060048201526016602482015275125d0818d85b89dd08189948184818dbdb9d1c9858dd60521b604482015290519081900360640190fd5b6001600160a01b0382166000908152600e602052604090205460ff1662000a5d576040805162461bcd60e51b815260206004820152601a602482015279125d09dcc81b9bdd0818481d9bdd1a5b99c818dbdb9d1c9858dd60321b604482015290519081900360640190fd5b600854604080516323b872dd60e01b81523260048201526001600160a01b038086166024830152604482018590529151859392909216916323b872dd916064808201926020929091908290030181600087803b15801562000abd57600080fd5b505af115801562000ad2573d6000803e3d6000fd5b505050506040513d602081101562000ae957600080fd5b505162000b3d576040805162461bcd60e51b815260206004820152601d60248201527f417574686f72697a6174696f6e207472616e73666572206661696c6564000000604482015290519081900360640190fd5b806001600160a01b03166394bfed58836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801562000b8457600080fd5b505af115801562000b99573d6000803e3d6000fd5b50505050505050565b33321462000bf0576040805162461bcd60e51b8152602060048201526016602482015275125d0818d85b89dd08189948184818dbdb9d1c9858dd60521b604482015290519081900360640190fd5b6001600160a01b0381166000908152600e602052604090205460ff1662000c5b576040805162461bcd60e51b815260206004820152601a602482015279125d09dcc81b9bdd0818481d9bdd1a5b99c818dbdb9d1c9858dd60321b604482015290519081900360640190fd5b62000c663362001523565b1562000c7157600080fd5b6000819050806001600160a01b03166374d414296040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000cb257600080fd5b505af115801562000cc7573d6000803e3d6000fd5b5050326000908152600c6020526040902080546001600160a01b0319166001600160a01b039590951694909417909355505050565b600f5460ff161562000d405760065460055462000d1f9163ffffffff62001b4a16565b421162000d2b57600080fd5b600f805460ff19169055600060055562000df5565b336000908152600d602052604090205462000d5a57600080fd5b600754600854604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801562000da957600080fd5b505afa15801562000dbe573d6000803e3d6000fd5b505050506040513d602081101562000dd557600080fd5b5051101562000de357600080fd5b600f805460ff19166001179055426005555b565b62000e02336200130f565b62000e43576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b600455565b60005490565b62000e59336200130f565b62000e9a576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b6001600160a01b03166000908152600e60205260409020805460ff19169055565b62000ec6336200130f565b62000f07576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b80600a836040518082805190602001908083835b6020831062000f3c5780518252601f19909201916020918201910162000f1b565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922080546001600160a01b0319166001600160a01b03949094169390931790925550505050565b326000908152600d602052604090205462000fa657600080fd5b600854326000818152600d6020908152604080832054815163a9059cbb60e01b815260048101959095526024850152516001600160a01b039094169363a9059cbb93604480820194918390030190829087803b1580156200100657600080fd5b505af11580156200101b573d6000803e3d6000fd5b505050506040513d60208110156200103257600080fd5b50516200103e57600080fd5b326000908152600d6020908152604080832083905560095481516370a0823160e01b815230600482015291516001600160a01b03909116926370a082319260248082019391829003018186803b1580156200109857600080fd5b505afa158015620010ad573d6000803e3d6000fd5b505050506040513d6020811015620010c457600080fd5b5051600954600f546040805163a9059cbb60e01b81526001600160a01b036101009093048316600482015260248101859052905193945091169163a9059cbb916044808201926020929091908290030181600087803b1580156200112757600080fd5b505af11580156200113c573d6000803e3d6000fd5b505050506040513d60208110156200115357600080fd5b50516200115f57600080fd5b50565b6001600160a01b03166000908152600e602052604090205460ff1690565b60075490565b60055490565b60035490565b6200119d336200130f565b620011de576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b600081116200121f5760405162461bcd60e51b8152600401808060200182810382526024815260200180620038416024913960400191505060405180910390fd5b600255565b60025490565b6001600160a01b03166000908152600d602052604090205490565b62001250336200130f565b62001291576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b600355565b6000600a826040518082805190602001908083835b60208310620012cc5780518252601f199092019160209182019101620012ab565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220546001600160a01b0316949350505050565b60045490565b6001600160a01b03166000908152600b602052604090205460ff1690565b3233146200137b576040805162461bcd60e51b8152602060048201526016602482015275125d0818d85b89dd08189948184818dbdb9d1c9858dd60521b604482015290519081900360640190fd5b6003548110156200138b57600080fd5b600f54604051600091849160ff909116908490620013a99062001ba5565b6001600160a01b03909316835290151560208301526040808301919091525190819003606001906000f080158015620013e6573d6000803e3d6000fd5b50600854604080516323b872dd60e01b81523260048201526001600160a01b0380851660248301526044820187905291519394509116916323b872dd916064808201926020929091908290030181600087803b1580156200144657600080fd5b505af11580156200145b573d6000803e3d6000fd5b505050506040513d60208110156200147257600080fd5b5051620014c6576040805162461bcd60e51b815260206004820152601d60248201527f417574686f72697a6174696f6e207472616e73666572206661696c6564000000604482015290519081900360640190fd5b6001600160a01b0381166000818152600e6020908152604091829020805460ff19166001179055815192835290517f1a0f921ce3c6f2f0f6be5b624a487bc1d5143e1fd1833154f39ab63e13d897559281900390910190a1505050565b6001600160a01b038181166000908152600c60205260408120549091166200154e5750600062000779565b6001600160a01b038083166000908152600c602090815260409182902054825163178f552d60e11b815292519316928392632f1eaa5a926004808301939192829003018186803b158015620015a257600080fd5b505afa158015620015b7573d6000803e3d6000fd5b505050506040513d6020811015620015ce57600080fd5b5051806200165e5750806001600160a01b031663723a3533846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156200162e57600080fd5b505afa15801562001643573d6000803e3d6000fd5b505050506040513d60208110156200165a57600080fd5b5051155b156200166f57600091505062000779565b600191505062000779565b62001685336200130f565b620016c6576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b620016f5336200130f565b62001736576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b60008111620017775760405162461bcd60e51b8152600401808060200182810382526024815260200180620038416024913960400191505060405180910390fd5b600155565b60015490565b6200178d336200130f565b620017ce576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b6001600160a01b03166000908152600b60205260409020805460ff19169055565b620017fa336200130f565b6200183b576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b62001866604051806040016040528060088152602001676e6573744e6f646560c01b81525062001296565b600880546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260138152723732b9ba173b19973232b9ba393ab1ba34b7b760691b6020820152620018bb9062001296565b600f60016101000a8154816001600160a01b0302191690836001600160a01b0316021790555062001908604051806040016040528060048152602001631b995cdd60e21b81525062001296565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b600854604080516323b872dd60e01b81523260048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b1580156200198557600080fd5b505af11580156200199a573d6000803e3d6000fd5b505050506040513d6020811015620019b157600080fd5b5051620019bd57600080fd5b326000908152600d6020526040902054620019df908263ffffffff62001b4a16565b326000908152600d602052604090205550565b620019fd336200130f565b62001a3e576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b6000811162001a4c57600080fd5b600755565b62001a5c336200130f565b62001a9d576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b6000811162001ade5760405162461bcd60e51b8152600401808060200182810382526024815260200180620038416024913960400191505060405180910390fd5b600055565b60008262001af45750600062001b44565b8282028284828162001b0257fe5b041462001b415760405162461bcd60e51b8152600401808060200182810382526021815260200180620038656021913960400191505060405180910390fd5b90505b92915050565b60008282018381101562001b41576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b611c8d8062001bb48339019056fe60806040526012805462ffffff191690553480156200001d57600080fd5b5060405162001c8d38038062001c8d833981810160405260608110156200004357600080fd5b508051602080830151604093840151600280546001600160a01b0319163390811790915585516347f3bf4360e11b815260048082018690526024820152631b995cdd60e21b6044820152955194959294919390928392638fe77e8692606480840193919291829003018186803b158015620000bd57600080fd5b505afa158015620000d2573d6000803e3d6000fd5b505050506040513d6020811015620000e957600080fd5b5051600480546001600160a01b0319166001600160a01b03928316178155604080516347f3bf4360e11b8152602092810183905260086024820152676e6573744e6f646560c01b6044820152905192841692638fe77e8692606480840193919291829003018186803b1580156200015f57600080fd5b505afa15801562000174573d6000803e3d6000fd5b505050506040513d60208110156200018b57600080fd5b5051600580546001600160a01b039283166001600160a01b03199182161790915560008054878416908316811790915560078054909216179055604080516347f3bf4360e11b8152602060048201819052601360248301527f6e6573742e76332e6465737472756374696f6e000000000000000000000000006044830152915192841692638fe77e8692606480840193919291829003018186803b1580156200023357600080fd5b505afa15801562000248573d6000803e3d6000fd5b505050506040513d60208110156200025f57600080fd5b5051600880546001600160a01b0319166001600160a01b03928316179055326000908152601460209081526040918290208590556011859055426009558151631fbc156960e11b815291516200031993851692633f782ad2926004808301939192829003018186803b158015620002d557600080fd5b505afa158015620002ea573d6000803e3d6000fd5b505050506040513d60208110156200030157600080fd5b505160095490620009ef602090811b62000d6f17901c565b600a81905550806001600160a01b031663c179a3416040518163ffffffff1660e01b815260040160206040518083038186803b1580156200035957600080fd5b505afa1580156200036e573d6000803e3d6000fd5b505050506040513d60208110156200038557600080fd5b5051600e55604080516349a465a160e11b815290516001600160a01b03831691639348cb42916004808301926020929190829003018186803b158015620003cb57600080fd5b505afa158015620003e0573d6000803e3d6000fd5b505050506040513d6020811015620003f757600080fd5b5051600f55601280548415801563010000000263ff00000019909216919091179091556200069b57604080516347f3bf4360e11b8152602060048201819052601360248301527f6e6573742e76332e746f6b656e41626f6e757300000000000000000000000000604483015291516001600160a01b03841692638fe77e869260648082019391829003018186803b1580156200049257600080fd5b505afa158015620004a7573d6000803e3d6000fd5b505050506040513d6020811015620004be57600080fd5b5051600380546001600160a01b0319166001600160a01b039283161790819055604080516325d4675b60e11b815290516200055f936002931691634ba8ceb6916004808301926020929190829003018186803b1580156200051e57600080fd5b505afa15801562000533573d6000803e3d6000fd5b505050506040513d60208110156200054a57600080fd5b50519062000a53602090811b62000ded17901c565b60108190556200056e57600080fd5b6200069260646200067e836001600160a01b0316636990d9356040518163ffffffff1660e01b815260040160206040518083038186803b158015620005b257600080fd5b505afa158015620005c7573d6000803e3d6000fd5b505050506040513d6020811015620005de57600080fd5b5051600354600480546010546040805163da3bba0560e01b81526001600160a01b039384169481019490945260248401919091525192169163da3bba0591604480820192602092909190829003018186803b1580156200063d57600080fd5b505afa15801562000652573d6000803e3d6000fd5b505050506040513d60208110156200066957600080fd5b50519062000a9d602090811b62000ec117901c565b62000afb60201b62000f1a1790919060201c565b600c55620009c9565b604080516347f3bf4360e11b815260206004820181905260126024830152716e6573742e76332e6d696e696e675361766560701b604483015291516001600160a01b03841692638fe77e869260648082019391829003018186803b1580156200070357600080fd5b505afa15801562000718573d6000803e3d6000fd5b505050506040513d60208110156200072f57600080fd5b5051600680546001600160a01b0319166001600160a01b03928316179055604080516347f3bf4360e11b815260206004820181905260116024830152706e6573742e76332e746f6b656e5361766560781b6044830152915192841692638fe77e8692606480840193919291829003018186803b158015620007af57600080fd5b505afa158015620007c4573d6000803e3d6000fd5b505050506040513d6020811015620007db57600080fd5b5051600180546001600160a01b0319166001600160a01b0392831617905560408051636990d93560e01b81529051620009c5926064926200067e9291861691636990d93591600480820192602092909190829003018186803b1580156200084157600080fd5b505afa15801562000856573d6000803e3d6000fd5b505050506040513d60208110156200086d57600080fd5b505160048054600854604080516370a0823160e01b81526001600160a01b039283169481019490945251620009b19391909216916370a0823191602480820192602092909190829003018186803b158015620008c857600080fd5b505afa158015620008dd573d6000803e3d6000fd5b505050506040513d6020811015620008f457600080fd5b505160048054600654604080516370a0823160e01b81526001600160a01b0392831694810194909452516200099d9391909216916370a0823191602480820192602092909190829003018186803b1580156200094f57600080fd5b505afa15801562000964573d6000803e3d6000fd5b505050506040513d60208110156200097b57600080fd5b50516b204fce5e3e250261100000009062000a53602090811b62000ded17901c565b62000a5360201b62000ded1790919060201c565b62000a9d60201b62000ec11790919060201c565b600c555b600f5460115410620009e5576012805461ff0019166101001790555b5050505062000c49565b60008282018381101562000a4a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b600062000a4a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062000b4560201b60201c565b60008262000aae5750600062000a4d565b8282028284828162000abc57fe5b041462000a4a5760405162461bcd60e51b815260040180806020018281038252602181526020018062001c6c6021913960400191505060405180910390fd5b600062000a4a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000be060201b60201c565b6000818484111562000bd85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000b9c57818101518382015260200162000b82565b50505050905090810190601f16801562000bca5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000818362000c325760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831562000b9c57818101518382015260200162000b82565b50600083858162000c3f57fe5b0495945050505050565b6110138062000c596000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80639348cb42116100b8578063b7091a191161007c578063b7091a1914610222578063b962364614610246578063c179a3411461024e578063d86ef1bc14610256578063f400ff5f1461025e578063fe317ef41461026657610142565b80639348cb42146101e557806394bfed58146101ed578063a03100211461020a578063aa70cc4414610212578063b47247561461021a57610142565b80632f1eaa5a1161010a5780632f1eaa5a1461019557806339e8cbd81461019d5780636bb9885c146101a5578063723a3533146101af57806374d41429146101d55780638a208c08146101dd57610142565b80630425f52f146101475780630a08a830146101635780631c3c7b791461017d578063268dae5b1461018557806328b560481461018d575b600080fd5b61014f61028c565b604080519115158252519081900360200190f35b61016b61029d565b60408051918252519081900360200190f35b61016b6102a3565b61014f6102a9565b61016b6102b8565b61014f6102be565b61016b6102e6565b6101ad6102ec565b005b61016b600480360360208110156101c557600080fd5b50356001600160a01b031661056b565b6101ad610586565b61016b61082d565b61016b610833565b6101ad6004803603602081101561020357600080fd5b5035610839565b61014f61095e565b61014f61096c565b6101ad610975565b61022a610bce565b604080516001600160a01b039092168252519081900360200190f35b61016b610bdd565b61016b610be3565b6101ad610be9565b61016b610d4e565b61016b6004803603602081101561027c57600080fd5b50356001600160a01b0316610d54565b6012546301000000900460ff165b90565b60105490565b600b5490565b60125462010000900460ff1690565b600a5490565b60125460009060ff16806102d35750600a5442115b156102e05750600161029a565b50600090565b60115490565b601254610100900460ff161561036d576012546301000000900460ff161580610318575060125460ff16155b1561036857600a544211610368576040805162461bcd60e51b8152602060048201526012602482015271566f746520756e656e666f72636561626c6560701b604482015290519081900360640190fd5b61038d565b600e546009546103829163ffffffff610d6f16565b421161038d57600080fd5b326000908152601460205260409020546103a657600080fd5b60055432600081815260146020908152604080832054815163a9059cbb60e01b815260048101959095526024850152516001600160a01b039094169363a9059cbb93604480820194918390030190829087803b15801561040557600080fd5b505af1158015610419573d6000803e3d6000fd5b505050506040513d602081101561042f57600080fd5b505161043a57600080fd5b3260009081526014602090815260408083208390556004805482516370a0823160e01b8152309281019290925291516001600160a01b03909216926370a0823192602480840193829003018186803b15801561049557600080fd5b505afa1580156104a9573d6000803e3d6000fd5b505050506040513d60208110156104bf57600080fd5b5051600d549091506104d7908263ffffffff610d6f16565b600d55600480546008546040805163a9059cbb60e01b81526001600160a01b0392831694810194909452602484018590525191169163a9059cbb9160448083019260209291908290030181600087803b15801561053357600080fd5b505af1158015610547573d6000803e3d6000fd5b505050506040513d602081101561055d57600080fd5b505161056857600080fd5b50565b6001600160a01b031660009081526013602052604090205490565b6002546001600160a01b031633146105d4576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b600a54421115610622576040805162461bcd60e51b8152602060048201526014602482015273159bdd1a5b99c81d1a5b5948195e18d95959195960621b604482015290519081900360640190fd5b60125460ff161561066a576040805162461bcd60e51b815260206004820152600d60248201526c566f746520696e20666f72636560981b604482015290519081900360640190fd5b601254610100900460ff1661067e57600080fd5b32600090815260136020526040902054156106cd576040805162461bcd60e51b815260206004820152600a60248201526912185d99481d9bdd195960b21b604482015290519081900360640190fd5b6012546000906301000000900460ff16156107775760035460048054601054604080516336569b5d60e21b81526001600160a01b039384169481019490945260248401919091523260448401525192169163d95a6d7491606480820192602092909190829003018186803b15801561074457600080fd5b505afa158015610758573d6000803e3d6000fd5b505050506040513d602081101561076e57600080fd5b505190506107fd565b60015460048054604080516335c14f4560e11b815232938101939093526001600160a01b03918216602484015251921691636b829e8a91604480820192602092909190829003018186803b1580156107ce57600080fd5b505afa1580156107e2573d6000803e3d6000fd5b505050506040513d60208110156107f857600080fd5b505190505b326000908152601360205260409020819055600b54610822908263ffffffff610d6f16565b600b55610568610dd2565b60095490565b600f5490565b6002546001600160a01b03163314610887576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b600e5460095461089c9163ffffffff610d6f16565b4211156108e7576040805162461bcd60e51b8152602060048201526014602482015273159bdd1a5b99c81d1a5b5948195e18d95959195960621b604482015290519081900360640190fd5b601254610100900460ff16156108fc57600080fd5b3260009081526014602052604090205461091c908263ffffffff610d6f16565b3260009081526014602052604090205560115461093f908263ffffffff610d6f16565b6011819055600f5411610568576012805461ff00191661010017905550565b601254610100900460ff1690565b60125460ff1690565b6002546001600160a01b031633146109c3576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b60125462010000900460ff16156109d957600080fd5b6012805462ff000019166201000017908190556301000000900460ff1615610a4c5760125460ff16610a47576040805162461bcd60e51b8152602060048201526012602482015271566f746520756e656e666f72636561626c6560701b604482015290519081900360640190fd5b610aa5565b60125460ff168015610a5f5750600a5442115b610aa5576040805162461bcd60e51b8152602060048201526012602482015271566f746520756e656e666f72636561626c6560701b604482015290519081900360640190fd5b600254600080546040805163b6518bdb60e01b81526001600160a01b0392831660048201529051919093169263b6518bdb92602480830193919282900301818387803b158015610af457600080fd5b505af1158015610b08573d6000803e3d6000fd5b50506000805460408051634d536fe360e01b815290516001600160a01b039092169450634d536fe39350600480820193929182900301818387803b158015610b4f57600080fd5b505af1158015610b63573d6000803e3d6000fd5b5050600254600080546040805163c7d5505760e01b81526001600160a01b039283166004820152905191909316945063c7d55057935060248084019382900301818387803b158015610bb457600080fd5b505af1158015610bc8573d6000803e3d6000fd5b50505050565b6007546001600160a01b031690565b600c5490565b600e5490565b333214610c36576040805162461bcd60e51b8152602060048201526016602482015275125d0818d85b89dd08189948184818dbdb9d1c9858dd60521b604482015290519081900360640190fd5b600a54421115610c84576040805162461bcd60e51b8152602060048201526014602482015273159bdd1a5b99c81d1a5b5948195e18d95959195960621b604482015290519081900360640190fd5b60125460ff1615610ccc576040805162461bcd60e51b815260206004820152600d60248201526c566f746520696e20666f72636560981b604482015290519081900360640190fd5b32600090815260136020526040902054610d17576040805162461bcd60e51b81526020600482015260076024820152664e6f20766f746560c81b604482015290519081900360640190fd5b32600090815260136020526040902054600b54610d399163ffffffff610ded16565b600b5532600090815260136020526040812055565b600d5490565b6001600160a01b031660009081526014602052604090205490565b600082820183811015610dc9576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b600c54600b5410610deb576012805460ff191660011790555b565b6000610dc983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060008184841115610eb95760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e7e578181015183820152602001610e66565b50505050905090810190601f168015610eab5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082610ed057506000610dcc565b82820282848281610edd57fe5b0414610dc95760405162461bcd60e51b8152600401808060200182810382526021815260200180610fbd6021913960400191505060405180910390fd5b6000610dc983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183610fa65760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610e7e578181015183820152602001610e66565b506000838581610fb257fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122010ca6fc463ec15227c88f90eb2c6f4334c7cfcc42d601d8af8e8a5f990d3dea464736f6c63430006000033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77506172616d65746572206e6565647320746f2062652067726561746572207468616e2030536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220e245d2fac7fb05efe6914180891050801ac814d143bf1b6854d3455aed0b190e64736f6c63430006000033

Deployed Bytecode Sourcemap

102:11865:0:-:0;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;102:11865:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8170:103;;;:::i;:::-;;;;;;;;;;;;;;;;;;7200:104;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7200:104:0;-1:-1:-1;;;;;7200:104:0;;:::i;:::-;;;;-1:-1:-1;;;;;7200:104:0;;;;;;;;;;;;;;8501:110;;;:::i;:::-;;;;;;;;;;;;;;;;10216:147;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10216:147:0;;:::i;:::-;;4498:526;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4498:526:0;-1:-1:-1;;;;;4498:526:0;;:::i;3888:499::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3888:499:0;;;;;;;;:::i;3273:449::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3273:449:0;-1:-1:-1;;;;;3273:449:0;;:::i;5987:472::-;;;:::i;10062:97::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10062:97:0;;:::i;7347:92::-;;;:::i;11536:127::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11536:127:0;-1:-1:-1;;;;;11536:127:0;;:::i;10792:149::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10792:149:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;10792:149:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10792:149: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;10792:149:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10792:149:0;;-1:-1:-1;;;10792:149:0;;-1:-1:-1;;;;;10792:149:0;;-1:-1:-1;10792:149:0;;-1:-1:-1;10792:149:0:i;5508:415::-;;;:::i;9024:135::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9024:135:0;-1:-1:-1;;;;;9024:135:0;;:::i;8867:108::-;;;:::i;8338:100::-;;;:::i;7842:98::-;;;:::i;9621:181::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9621:181:0;;:::i;7645:116::-;;;:::i;8673:122::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8673:122:0;-1:-1:-1;;;;;8673:122:0;;:::i;9884:96::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9884:96:0;;:::i;10606:136::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10606:136:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;10606:136:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10606:136: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;10606:136:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10606:136:0;;-1:-1:-1;10606:136:0;;-1:-1:-1;;;;;10606:136:0:i;8016:100::-;;;:::i;11716:108::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11716:108:0;-1:-1:-1;;;;;11716:108:0;;:::i;2579:584::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2579:584:0;;;;;;;;:::i;6613:410::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6613:410:0;-1:-1:-1;;;;;6613:410:0;;:::i;10989:108::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10989:108:0;-1:-1:-1;;;;;10989:108:0;;:::i;9410:161::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9410:161:0;;:::i;7492:96::-;;;:::i;11259:112::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11259:112:0;-1:-1:-1;;;;;11259:112:0;;:::i;2147:240::-;;;:::i;5162:254::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5162:254:0;;:::i;10438:133::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10438:133:0;;:::i;9199:157::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9199:157:0;;:::i;8170:103::-;8248:17;;;;8170:103;:::o;7200:104::-;-1:-1:-1;;;;;7283:13:0;;;7256:7;7283:13;;;:7;:13;;;;;;;7200:104;;;;:::o;8501:110::-;8584:19;;8501:110;:::o;10216:147::-;11904:23;11916:10;11904:11;:23::i;:::-;11896:48;;;;;-1:-1:-1;;;11896:48:0;;;;;;;;;;;;-1:-1:-1;;;11896:48:0;;;;;;;;;;;;;;;10305:1:::1;10299:3;:7;10291:16;;;::::0;::::1;;10340:15;:3:::0;10348:6:::1;10340:15;:7;:15;:::i;:::-;10318:19;:37:::0;-1:-1:-1;10216:147:0:o;4498:526::-;4578:10;4601:9;4570:41;4562:76;;;;;-1:-1:-1;;;4562:76:0;;;;;;;;;;;;-1:-1:-1;;;4562:76:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;4657:30:0;;;;;;:13;:30;;;;;;;;4649:69;;;;;-1:-1:-1;;;4649:69:0;;;;;;;;;;;;-1:-1:-1;;;4649:69:0;;;;;;;;;;;;;;;4729:31;4783:15;4729:70;;4839:11;-1:-1:-1;;;;;4839:33:0;;:35;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4839:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4839:35:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4839:35:0;4818:17;;;;:56;;;;;;4810:65;;;;;;4886:40;4913:11;4886:18;:40::i;:::-;4937:11;-1:-1:-1;;;;;4937:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4937:25:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4937:25:0;;;;4973:43;5003:11;4973:21;:43::i;:::-;4498:526;;:::o;3888:499::-;3987:10;4010:9;3979:41;3971:76;;;;;-1:-1:-1;;;3971:76:0;;;;;;;;;;;;-1:-1:-1;;;3971:76:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;4066:30:0;;;;;;:13;:30;;;;;;;;4058:69;;;;;-1:-1:-1;;;4058:69:0;;;;;;;;;;;;-1:-1:-1;;;4058:69:0;;;;;;;;;;;;;;;4227:8;;:73;;;-1:-1:-1;;;4227:73:0;;4257:9;4227:73;;;;-1:-1:-1;;;;;4227:73:0;;;;;;;;;;;;;;;4192:15;;4227:8;;;;;:21;;:73;;;;;;;;;;;;;;;4138:31;4227:8;:73;;;5:2:-1;;;;30:1;27;20:12;5:2;4227:73:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4227:73:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4227:73:0;4219:115;;;;;-1:-1:-1;;;4219:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4345:11;-1:-1:-1;;;;;4345:24:0;;4370:8;4345:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4345:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4345:34:0;;;;3888:499;;;:::o;3273:449::-;3350:10;3373:9;3342:41;3334:76;;;;;-1:-1:-1;;;3334:76:0;;;;;;;;;;;;-1:-1:-1;;;3334:76:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3429:30:0;;;;;;:13;:30;;;;;;;;3421:69;;;;;-1:-1:-1;;;3421:69:0;;;;;;;;;;;;-1:-1:-1;;;3421:69:0;;;;;;;;;;;;;;;3510:33;3531:10;3510:12;:33::i;:::-;3509:34;3501:43;;;;;;3555:31;3609:15;3555:70;;3636:11;-1:-1:-1;;;;;3636:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3636:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;3685:9:0;3669:27;;;;:7;:27;;;;;:45;;-1:-1:-1;;;;;;3669:45:0;-1:-1:-1;;;;;3669:45:0;;;;;;;;;;;-1:-1:-1;;;3273:449:0:o;5987:472::-;6043:17;;;;6039:413;;;6110:19;;6091:14;;:39;;;:18;:39;:::i;:::-;6085:3;:45;6077:54;;;;;;6146:17;:25;;-1:-1:-1;;6146:25:0;;;6166:5;6186:14;:18;6039:413;;;6270:10;6285:1;6245:37;;;:16;:37;;;;;;6237:50;;;;;;6347:18;;6310:8;;:33;;;-1:-1:-1;;;6310:33:0;;6337:4;6310:33;;;;;;-1:-1:-1;;;;;6310:8:0;;;;:18;;:33;;;;;;;;;;;;;;;:8;:33;;;5:2:-1;;;;30:1;27;20:12;5:2;6310:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6310:33:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6310:33:0;:55;;6302:64;;;;;;6381:17;:24;;-1:-1:-1;;6381:24:0;6401:4;6381:24;;;6437:3;6420:14;:20;6039:413;5987:472::o;10062:97::-;11904:23;11916:10;11904:11;:23::i;:::-;11896:48;;;;;-1:-1:-1;;;11896:48:0;;;;;;;;;;;;-1:-1:-1;;;11896:48:0;;;;;;;;;;;;;;;10131:14:::1;:20:::0;10062:97::o;7347:92::-;7394:7;7421:10;7347:92;:::o;11536:127::-;11904:23;11916:10;11904:11;:23::i;:::-;11896:48;;;;;-1:-1:-1;;;11896:48:0;;;;;;;;;;;;-1:-1:-1;;;11896:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11617:30:0::1;11650:5;11617:30:::0;;;:13:::1;:30;::::0;;;;:38;;-1:-1:-1;;11617:38:0::1;::::0;;11536:127::o;10792:149::-;11904:23;11916:10;11904:11;:23::i;:::-;11896:48;;;;;-1:-1:-1;;;11896:48:0;;;;;;;;;;;;-1:-1:-1;;;11896:48:0;;;;;;;;;;;;;;;10918:15:::1;10893:16;10910:4;10893:22;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10:::0;;164:23;;-1:-1;;139:12;;;;98:2:::1;89:12:::0;;::::1;::::0;114::::1;36:153;;;299:10:::0;344;;263:2:::1;259:12:::0;;::::1;254:3;250:22;-1:-1:::0;;246:30;311:9;::::1;295:26:::0;;::::1;340:21:::0;::::1;377:20;365:33:::0;;10893:22:0;::::1;::::0;;;-1:-1:-1;10893:22:0::1;::::0;;;;;;;;;:40;;-1:-1:-1;;;;;;10893:40:0::1;-1:-1:-1::0;;;;;10893:40:0;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;;;10792:149:0:o;5508:415::-;5605:9;5619:1;5580:36;;;:16;:36;;;;;;5572:49;;;;;;5640:8;;5666:9;5640:8;5678:36;;;:16;:36;;;;;;;;;5640:75;;-1:-1:-1;;;5640:75:0;;;;;;;;;;;;;;-1:-1:-1;;;;;5640:8:0;;;;:17;;:75;;;;;;;;;;;;;:8;:75;;;5:2:-1;;;;30:1;27;20:12;5:2;5640:75:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5640:75:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5640:75:0;5632:84;;;;;;5752:9;5766:1;5727:36;;;:16;:36;;;;;;;;:40;;;5799:10;;:35;;-1:-1:-1;;;5799:35:0;;5828:4;5799:35;;;;;;-1:-1:-1;;;;;5799:10:0;;;;:20;;:35;;;;;;;;;;;:10;:35;;;5:2:-1;;;;30:1;27;20:12;5:2;5799:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5799:35:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5799:35:0;5853:10;;5881:19;;5853:61;;;-1:-1:-1;;;5853:61:0;;-1:-1:-1;;;;;5853:10:0;5881:19;;;;;5853:61;;;;;;;;;;;;5799:35;;-1:-1:-1;5853:10:0;;;:19;;:61;;;;;5799:35;;5853:61;;;;;;;;-1:-1:-1;5853:10:0;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;5853:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5853:61:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5853:61:0;5845:70;;;;;;5508:415;:::o;9024:135::-;-1:-1:-1;;;;;9121:30:0;9097:4;9121:30;;;:13;:30;;;;;;;;;9024:135::o;8867:108::-;8949:18;;8867:108;:::o;8338:100::-;8416:14;;8338:100;:::o;7842:98::-;7919:13;;7842:98;:::o;9621:181::-;11904:23;11916:10;11904:11;:23::i;:::-;11896:48;;;;;-1:-1:-1;;;11896:48:0;;;;;;;;;;;;-1:-1:-1;;;11896:48:0;;;;;;;;;;;;;;;9713:1:::1;9707:3;:7;9699:56;;;;-1:-1:-1::0;;;9699:56:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9766:22;:28:::0;9621:181::o;7645:116::-;7731:22;;7645:116;:::o;8673:122::-;-1:-1:-1;;;;;8765:22:0;8738:7;8765:22;;;:16;:22;;;;;;;8673:122::o;9884:96::-;11904:23;11916:10;11904:11;:23::i;:::-;11896:48;;;;;-1:-1:-1;;;11896:48:0;;;;;;;;;;;;-1:-1:-1;;;11896:48:0;;;;;;;;;;;;;;;9953:13:::1;:19:::0;9884:96::o;10606:136::-;10669:23;10712:16;10729:4;10712:22;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;10712:22:0;;;;;-1:-1:-1;10712:22:0;;;;;;;;;;;-1:-1:-1;;;;;10712:22:0;;10606:136;-1:-1:-1;;;;10606:136:0:o;8016:100::-;8094:14;;8016:100;:::o;11716:108::-;-1:-1:-1;;;;;11795:21:0;11771:4;11795:21;;;:16;:21;;;;;;;;;11716:108::o;2579:584::-;2684:9;2706:10;2676:41;2668:76;;;;;-1:-1:-1;;;2668:76:0;;;;;;;;;;;;-1:-1:-1;;;2668:76:0;;;;;;;;;;;;;;;2781:13;;2763:14;:31;;2755:40;;;;;;2883:17;;2840:77;;2806:31;;2864:17;;2883;;;;;2902:14;;2840:77;;;:::i;:::-;-1:-1:-1;;;;;2840:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2840:77:0;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;2936:8:0;;:79;;;-1:-1:-1;;;2936:79:0;;2966:9;2936:79;;;;-1:-1:-1;;;;;2936:79:0;;;;;;;;;;;;;;;2806:111;;-1:-1:-1;2936:8:0;;;:21;;:79;;;;;;;;;;;;;;;:8;;:79;;;5:2:-1;;;;30:1;27;20:12;5:2;2936:79:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2936:79:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2936:79:0;2928:121;;;;;-1:-1:-1;;;2928:121:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3060:35:0;;;;;;:13;:35;;;;;;;;;:42;;-1:-1:-1;;3060:42:0;3098:4;3060:42;;;3118:37;;;;;;;;;;;;;;;;;2579:584;;;:::o;6613:410::-;-1:-1:-1;;;;;6691:13:0;;;6670:4;6691:13;;;:7;:13;;;;;;6670:4;;6691:13;6687:329;;-1:-1:-1;6744:5:0;6737:12;;6687:329;-1:-1:-1;;;;;6829:13:0;;;6782:24;6829:13;;;:7;:13;;;;;;;;;;6862:29;;-1:-1:-1;;;6862:29:0;;;;6829:13;;;;;6862:27;;:29;;;;;6829:13;;6862:29;;;;;6829:13;6862:29;;;5:2:-1;;;;30:1;27;20:12;5:2;6862:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6862:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6862:29:0;;:68;;;6895:4;-1:-1:-1;;;;;6895:24:0;;6920:4;6895:30;;;;;;;;;;;;;-1:-1:-1;;;;;6895:30:0;-1:-1:-1;;;;;6895:30:0;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6895:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6895:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6895:30:0;:35;6862:68;6858:121;;;6958:5;6951:12;;;;;6858:121;7000:4;6993:11;;;;;10989:108;11904:23;11916:10;11904:11;:23::i;:::-;11896:48;;;;;-1:-1:-1;;;11896:48:0;;;;;;;;;;;;-1:-1:-1;;;11896:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11056:26:0::1;;::::0;;;:16:::1;:26;::::0;;;;:33;;-1:-1:-1;;11056:33:0::1;11085:4;11056:33;::::0;;10989:108::o;9410:161::-;11904:23;11916:10;11904:11;:23::i;:::-;11896:48;;;;;-1:-1:-1;;;11896:48:0;;;;;;;;;;;;-1:-1:-1;;;11896:48:0;;;;;;;;;;;;;;;9492:1:::1;9486:3;:7;9478:56;;;;-1:-1:-1::0;;;9478:56:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9545:12;:18:::0;9410:161::o;7492:96::-;7568:12;;7492:96;:::o;11259:112::-;11904:23;11916:10;11904:11;:23::i;:::-;11896:48;;;;;-1:-1:-1;;;11896:48:0;;;;;;;;;;;;-1:-1:-1;;;11896:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11329:26:0::1;11358:5;11329:26:::0;;;:16:::1;:26;::::0;;;;:34;;-1:-1:-1;;11329:34:0::1;::::0;;11259:112::o;2147:240::-;11904:23;11916:10;11904:11;:23::i;:::-;11896:48;;;;;-1:-1:-1;;;11896:48:0;;;;;;;;;;;;-1:-1:-1;;;11896:48:0;;;;;;;;;;;;;;;2217:24:::1;;;;;;;;;;;;;;-1:-1:-1::0;;;2217:24:0::1;;::::0;:12:::1;:24::i;:::-;2200:8;:42:::0;;-1:-1:-1;;;;;;2200:42:0::1;-1:-1:-1::0;;;;;2200:42:0;;;::::1;::::0;;;::::1;::::0;;2283:35:::1;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;2283:35:0::1;::::0;::::1;::::0;::::1;::::0;:12:::1;:35::i;:::-;2253:19;;:66;;;;;-1:-1:-1::0;;;;;2253:66:0::1;;;;;-1:-1:-1::0;;;;;2253:66:0::1;;;;;;2357:20;;;;;;;;;;;;;;-1:-1:-1::0;;;2357:20:0::1;;::::0;:12:::1;:20::i;:::-;2330:10;:49:::0;;-1:-1:-1;;;;;;2330:49:0::1;-1:-1:-1::0;;;;;2330:49:0;;;::::1;::::0;;;::::1;::::0;;2147:240::o;5162:254::-;5245:8;;:64;;;-1:-1:-1;;;5245:64:0;;5275:9;5245:64;;;;5295:4;5245:64;;;;;;;;;;;;-1:-1:-1;;;;;5245:8:0;;;;:21;;:64;;;;;;;;;;;;;;;:8;;:64;;;5:2:-1;;;;30:1;27;20:12;5:2;5245:64:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5245:64:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5245:64:0;5237:73;;;;;;5385:9;5360:36;;;;:16;:36;;;;;;:48;;5401:6;5360:48;:40;:48;:::i;:::-;5346:9;5321:36;;;;:16;:36;;;;;:87;-1:-1:-1;5162:254:0:o;10438:133::-;11904:23;11916:10;11904:11;:23::i;:::-;11896:48;;;;;-1:-1:-1;;;11896:48:0;;;;;;;;;;;;-1:-1:-1;;;11896:48:0;;;;;;;;;;;;;;;10526:1:::1;10520:3;:7;10512:16;;;::::0;::::1;;10539:18;:24:::0;10438:133::o;9199:157::-;11904:23;11916:10;11904:11;:23::i;:::-;11896:48;;;;;-1:-1:-1;;;11896:48:0;;;;;;;;;;;;-1:-1:-1;;;11896:48:0;;;;;;;;;;;;;;;9279:1:::1;9273:3;:7;9265:56;;;;-1:-1:-1::0;;;9265:56:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9332:10;:16:::0;9199:157::o;24883:248::-;24941:7;24965:6;24961:47;;-1:-1:-1;24995:1:0;24988:8;;24961:47;25030:5;;;25034:1;25030;:5;:1;25054:5;;;;;:10;25046:56;;;;-1:-1:-1;;;25046:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25122:1;-1:-1:-1;24883:248:0;;;;;:::o;24356:181::-;24414:7;24446:5;;;24470:6;;;;24462:46;;;;;-1:-1:-1;;;24462:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;102:11865;;;;;;;;:::o

Swarm Source

ipfs://e245d2fac7fb05efe6914180891050801ac814d143bf1b6854d3455aed0b190e

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

NEST voting contract address.

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.