ETH Price: $3,151.31 (+1.03%)
Gas: 2 Gwei

Contract

0x818776f0968bdaa39A692260fb3D1168f55370b2
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer95753852020-02-29 0:22:581596 days ago1582935778IN
0x818776f0...8f55370b2
0 ETH0.000034031.46875
Transfer91288372019-12-19 3:58:051668 days ago1576727885IN
0x818776f0...8f55370b2
0 ETH0.000305368
Transfer83637922019-08-16 21:00:391792 days ago1565989239IN
0x818776f0...8f55370b2
0 ETH0.0004198911.0546875
Transfer83584382019-08-16 1:05:041793 days ago1565917504IN
0x818776f0...8f55370b2
0 ETH0.000022981
Transfer83583792019-08-16 0:49:541793 days ago1565916594IN
0x818776f0...8f55370b2
0 ETH0.000037981
Transfer75251442019-04-08 3:50:531923 days ago1554695453IN
0x818776f0...8f55370b2
0 ETH0.000303868
Transfer74993662019-04-04 3:43:161927 days ago1554349396IN
0x818776f0...8f55370b2
0 ETH0.000269677.1
Transfer72493502019-02-21 15:37:431968 days ago1550763463IN
0x818776f0...8f55370b2
0 ETH0.000098394.28125
Transfer72449662019-02-20 14:54:391969 days ago1550674479IN
0x818776f0...8f55370b2
0 ETH0.000087623.8125
Transfer72449552019-02-20 14:49:341970 days ago1550674174IN
0x818776f0...8f55370b2
0 ETH0.000144813.8125
Transfer71610152019-02-02 0:10:041988 days ago1549066204IN
0x818776f0...8f55370b2
0 ETH0.0004937713
Transfer67208822018-11-17 11:01:162065 days ago1542452476IN
0x818776f0...8f55370b2
0 ETH0.000137896
Transfer64479112018-10-03 21:23:232109 days ago1538601803IN
0x818776f0...8f55370b2
0 ETH0.000022981
Transfer64433422018-10-03 3:12:162110 days ago1538536336IN
0x818776f0...8f55370b2
0 ETH0.000138286
Transfer64374112018-10-02 4:11:182111 days ago1538453478IN
0x818776f0...8f55370b2
0 ETH0.0004108616
Transfer64330412018-10-01 10:56:552112 days ago1538391415IN
0x818776f0...8f55370b2
0 ETH0.000207429
Transfer64275482018-09-30 13:23:512113 days ago1538313831IN
0x818776f0...8f55370b2
0 ETH0.0004565612
Transfer64060222018-09-27 0:33:382116 days ago1538008418IN
0x818776f0...8f55370b2
0 ETH0.000287737.5625
Transfer64018012018-09-26 7:54:052117 days ago1537948445IN
0x818776f0...8f55370b2
0 ETH0.000341849
Transfer64016072018-09-26 7:09:542117 days ago1537945794IN
0x818776f0...8f55370b2
0 ETH0.0003804710
Transfer64016052018-09-26 7:09:262117 days ago1537945766IN
0x818776f0...8f55370b2
0 ETH0.0003804710
Transfer64015282018-09-26 6:50:242117 days ago1537944624IN
0x818776f0...8f55370b2
0 ETH0.0003804710
Transfer64015222018-09-26 6:49:012117 days ago1537944541IN
0x818776f0...8f55370b2
0 ETH0.0003804710
Transfer64015182018-09-26 6:48:282117 days ago1537944508IN
0x818776f0...8f55370b2
0 ETH0.0003804710
Transfer64015132018-09-26 6:47:422117 days ago1537944462IN
0x818776f0...8f55370b2
0 ETH0.0003804710
View all transactions

Advanced mode:
Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
XMLY

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-08-22
*/

pragma solidity ^0.4.18;

// ----------------------------------------------------------------------------
//喜马拉雅交易所 contract
//
//喜马拉雅荣耀
// Symbol      : XMH
// Name        : XiMaLaYa Honor
// Total supply: 1000
// Decimals    : 0
// 
//喜马拉雅币
// Symbol      : XMLY
// Name        : XiMaLaYa Token
// Total supply: 100000000000
// Decimals    : 18
// ----------------------------------------------------------------------------


// ----------------------------------------------------------------------------
// Safe maths
// ----------------------------------------------------------------------------
contract SafeMath {
    function safeAdd(uint a, uint b) public pure returns (uint c) {
        c = a + b;
        require(c >= a);
    }
    function safeSub(uint a, uint b) public pure returns (uint c) {
        require(b <= a);
        c = a - b;
    }
    function safeMul(uint a, uint b) public pure returns (uint c) {
        c = a * b;
        require(a == 0 || c / a == b);
    }
    function safeDiv(uint a, uint b) public pure returns (uint c) {
        require(b > 0);
        c = a / b;
    }
}


// ----------------------------------------------------------------------------
// ERC Token Standard #20 Interface
// ----------------------------------------------------------------------------
contract ERC20Interface {
    function totalSupply() public constant returns (uint);
    function balanceOf(address tokenOwner) public constant returns (uint balance);
    function allowance(address tokenOwner, address spender) public constant returns (uint remaining);
    function transfer(address to, uint tokens) public returns (bool success);
    function approve(address spender, uint tokens) public returns (bool success);
    function transferFrom(address from, address to, uint tokens) public returns (bool success);

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


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


// ----------------------------------------------------------------------------
// Admin contract
// ----------------------------------------------------------------------------
contract Administration {
    event AdminTransferred(address indexed _from, address indexed _to);
    event Pause();
    event Unpause();

    address public CEOAddress = 0x5B807E379170d42f3B099C01A5399a2e1e58963B;
    address public CFOAddress = 0x92cFfCD79E6Ab6B16C7AFb96fbC0a2373bE516A4;

    bool public paused = false;

    modifier onlyCEO() {
        require(msg.sender == CEOAddress);
        _;
    }

    modifier onlyAdmin() {
        require(msg.sender == CEOAddress || msg.sender == CFOAddress);
        _;
    }

    function setCFO(address _newAdmin) public onlyCEO {
        require(_newAdmin != address(0));
        AdminTransferred(CFOAddress, _newAdmin);
        CFOAddress = _newAdmin;
        
    }

    function withdrawBalance() external onlyAdmin {
        CEOAddress.transfer(this.balance);
    }

    modifier whenNotPaused() {
        require(!paused);
        _;
    }

    modifier whenPaused() {
        require(paused);
        _;
    }

    function pause() public onlyAdmin whenNotPaused returns(bool) {
        paused = true;
        Pause();
        return true;
    }

    function unpause() public onlyAdmin whenPaused returns(bool) {
        paused = false;
        Unpause();
        return true;
    }

    uint oneEth = 1 ether;
}

contract XMLYBadge is ERC20Interface, Administration, SafeMath {
    event BadgeTransfer(address indexed from, address indexed to, uint tokens);
    
    string public badgeSymbol;
    string public badgeName;
    uint8 public badgeDecimals;
    uint public _badgeTotalSupply;

    mapping(address => uint) badgeBalances;
    mapping(address => bool) badgeFreezed;
    mapping(address => uint) badgeFreezeAmount;
    mapping(address => uint) badgeUnlockTime;


    // ------------------------------------------------------------------------
    // Constructor
    // ------------------------------------------------------------------------
    function XMLYBadge() public {
        badgeSymbol = "XMH";
        badgeName = "XMLY Honor";
        badgeDecimals = 0;
        _badgeTotalSupply = 1000;
        badgeBalances[CFOAddress] = _badgeTotalSupply;
        BadgeTransfer(address(0), CFOAddress, _badgeTotalSupply);
    }


    // ------------------------------------------------------------------------
    // Total supply
    // ------------------------------------------------------------------------
    function badgeTotalSupply() public constant returns (uint) {
        return _badgeTotalSupply  - badgeBalances[address(0)];
    }


    // ------------------------------------------------------------------------
    // Get the token balance for account tokenOwner
    // ------------------------------------------------------------------------
    function badgeBalanceOf(address tokenOwner) public constant returns (uint balance) {
        return badgeBalances[tokenOwner];
    }


    // ------------------------------------------------------------------------
    // Transfer the balance from token owner's account to to account
    // - Owner's account must have sufficient balance to transfer
    // - 0 value transfers are allowed
    // ------------------------------------------------------------------------
    function badgeTransfer(address to, uint tokens) public whenNotPaused returns (bool success) {
        if(badgeFreezed[msg.sender] == false){
            badgeBalances[msg.sender] = safeSub(badgeBalances[msg.sender], tokens);
            badgeBalances[to] = safeAdd(badgeBalances[to], tokens);
            BadgeTransfer(msg.sender, to, tokens);
        } else {
            if(badgeBalances[msg.sender] > badgeFreezeAmount[msg.sender]) {
                require(tokens <= safeSub(badgeBalances[msg.sender], badgeFreezeAmount[msg.sender]));
                badgeBalances[msg.sender] = safeSub(badgeBalances[msg.sender], tokens);
                badgeBalances[to] = safeAdd(badgeBalances[to], tokens);
                BadgeTransfer(msg.sender, to, tokens);
            }
        }
            
        return true;
    }

    // ------------------------------------------------------------------------
    // Mint Tokens
    // ------------------------------------------------------------------------
    function mintBadge(uint amount) public onlyAdmin {
        badgeBalances[msg.sender] = safeAdd(badgeBalances[msg.sender], amount);
        _badgeTotalSupply = safeAdd(_badgeTotalSupply, amount);
    }

    // ------------------------------------------------------------------------
    // Burn Tokens
    // ------------------------------------------------------------------------
    function burnBadge(uint amount) public onlyAdmin {
        badgeBalances[msg.sender] = safeSub(badgeBalances[msg.sender], amount);
        _badgeTotalSupply = safeSub(_badgeTotalSupply, amount);
    }
    
    // ------------------------------------------------------------------------
    // Freeze Tokens
    // ------------------------------------------------------------------------
    function badgeFreeze(address user, uint amount, uint period) public onlyAdmin {
        require(badgeBalances[user] >= amount);
        badgeFreezed[user] = true;
        badgeUnlockTime[user] = uint(now) + period;
        badgeFreezeAmount[user] = amount;
    }
    
    function _badgeFreeze(uint amount) internal {
        require(badgeFreezed[msg.sender] == false);
        require(badgeBalances[msg.sender] >= amount);
        badgeFreezed[msg.sender] = true;
        badgeUnlockTime[msg.sender] = uint(-1);
        badgeFreezeAmount[msg.sender] = amount;
    }

    // ------------------------------------------------------------------------
    // UnFreeze Tokens
    // ------------------------------------------------------------------------
    function badgeUnFreeze() public whenNotPaused {
        require(badgeFreezed[msg.sender] == true);
        require(badgeUnlockTime[msg.sender] < uint(now));
        badgeFreezed[msg.sender] = false;
        badgeFreezeAmount[msg.sender] = 0;
    }
    
    function _badgeUnFreeze(uint _amount) internal {
        require(badgeFreezed[msg.sender] == true);
        badgeUnlockTime[msg.sender] = 0;
        badgeFreezed[msg.sender] = false;
        badgeFreezeAmount[msg.sender] = safeSub(badgeFreezeAmount[msg.sender], _amount);
    }
    
    function badgeIfFreeze(address user) public view returns (
        bool check, 
        uint amount, 
        uint timeLeft
    ) {
        check = badgeFreezed[user];
        amount = badgeFreezeAmount[user];
        timeLeft = badgeUnlockTime[user] - uint(now);
    }

}

contract XMLYToken is XMLYBadge {
    event PartnerCreated(uint indexed partnerId, address indexed partner, uint indexed amount, uint singleTrans, uint durance);
    event RewardDistribute(uint indexed postId, uint partnerId, address indexed user, uint indexed amount);
    
    event VipAgreementSign(uint indexed vipId, address indexed vip, uint durance, uint frequence, uint salar);
    event SalaryReceived(uint indexed vipId, address indexed vip, uint salary, uint indexed timestamp);
    
    string public symbol;
    string public  name;
    uint8 public decimals;
    uint public _totalSupply;
    uint public minePool;

    struct Partner {
        address admin;
        uint tokenPool;
        uint singleTrans;
        uint timestamp;
        uint durance;
    }
    
    struct Poster {
        address poster;
        bytes32 hashData;
        uint reward;
    }
    
    struct Vip {
        address vip;
        uint durance;
        uint frequence;
        uint salary;
        uint timestamp;
    }
    
    Partner[] partners;
    Vip[] vips;

    modifier onlyPartner(uint _partnerId) {
        require(partners[_partnerId].admin == msg.sender);
        require(partners[_partnerId].tokenPool > uint(0));
        uint deadline = safeAdd(partners[_partnerId].timestamp, partners[_partnerId].durance);
        require(deadline > now);
        _;
    }
    
    modifier onlyVip(uint _vipId) {
        require(vips[_vipId].vip == msg.sender);
        require(vips[_vipId].durance > now);
        require(vips[_vipId].timestamp < now);
        _;
    }

    mapping(address => uint) balances;
    mapping(address => mapping(address => uint)) allowed;
    mapping(address => bool) freezed;
    mapping(address => uint) freezeAmount;
    mapping(address => uint) unlockTime;
    
    mapping(uint => Poster[]) PartnerIdToPosterList;


    // ------------------------------------------------------------------------
    // Constructor
    // ------------------------------------------------------------------------
    function XMLYToken() public {
        symbol = "XMLY";
        name = "XMLY Token";
        decimals = 18;
        _totalSupply = 5000000000000000000000000000;
        minePool = 95000000000000000000000000000;
        balances[CFOAddress] = _totalSupply;
        Transfer(address(0), CFOAddress, _totalSupply);
    }
    
    // ------------------------------------------------------------------------
    // Total supply
    // ------------------------------------------------------------------------
    function totalSupply() public constant returns (uint) {
        return _totalSupply  - balances[address(0)];
    }


    // ------------------------------------------------------------------------
    // Get the token balance for account tokenOwner
    // ------------------------------------------------------------------------
    function balanceOf(address tokenOwner) public constant returns (uint balance) {
        return balances[tokenOwner];
    }


    // ------------------------------------------------------------------------
    // Transfer the balance from token owner's account to to account
    // - Owner's account must have sufficient balance to transfer
    // - 0 value transfers are allowed
    // ------------------------------------------------------------------------
    function transfer(address to, uint tokens) public returns (bool success) {
        if(freezed[msg.sender] == false){
            balances[msg.sender] = safeSub(balances[msg.sender], tokens);
            balances[to] = safeAdd(balances[to], tokens);
            Transfer(msg.sender, to, tokens);
        } else {
            if(balances[msg.sender] > freezeAmount[msg.sender]) {
                require(tokens <= safeSub(balances[msg.sender], freezeAmount[msg.sender]));
                balances[msg.sender] = safeSub(balances[msg.sender], tokens);
                balances[to] = safeAdd(balances[to], tokens);
                Transfer(msg.sender, to, tokens);
            }
        }
            
        return true;
    }


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


    // ------------------------------------------------------------------------
    // Transfer tokens from the from account to the to account
    // 
    // The calling account must already have sufficient tokens approve(...)-d
    // for spending from the from account and
    // - From account must have sufficient balance to transfer
    // - Spender must have sufficient allowance to transfer
    // - 0 value transfers are allowed
    // ------------------------------------------------------------------------
    function transferFrom(address from, address to, uint tokens) public returns (bool success) {
        balances[from] = safeSub(balances[from], tokens);
        allowed[from][msg.sender] = safeSub(allowed[from][msg.sender], tokens);
        balances[to] = safeAdd(balances[to], tokens);
        Transfer(from, to, tokens);
        return true;
    }


    // ------------------------------------------------------------------------
    // Returns the amount of tokens approved by the owner that can be
    // transferred to the spender's account
    // ------------------------------------------------------------------------
    function allowance(address tokenOwner, address spender) public constant returns (uint remaining) {
        require(freezed[msg.sender] != true);
        return allowed[tokenOwner][spender];
    }


    // ------------------------------------------------------------------------
    // Token owner can approve for spender to transferFrom(...) tokens
    // from the token owner's account. The spender contract function
    // receiveApproval(...) is then executed
    // ------------------------------------------------------------------------
    function approveAndCall(address spender, uint tokens, bytes data) public returns (bool success) {
        require(freezed[msg.sender] != true);
        allowed[msg.sender][spender] = tokens;
        Approval(msg.sender, spender, tokens);
        ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, this, data);
        return true;
    }

    // ------------------------------------------------------------------------
    // Mint Tokens
    // ------------------------------------------------------------------------
    function _mint(uint amount, address receiver) internal {
        require(minePool >= amount);
        minePool = safeSub(minePool, amount);
        _totalSupply = safeAdd(_totalSupply, amount);
        balances[receiver] = safeAdd(balances[receiver], amount);
        Transfer(address(0), receiver, amount);
    }
    
    function mint(uint amount) public onlyAdmin {
        require(minePool >= amount);
        minePool = safeSub(minePool, amount);
        balances[msg.sender] = safeAdd(balances[msg.sender], amount);
        _totalSupply = safeAdd(_totalSupply, amount);
    }
    
    function burn(uint amount) public onlyAdmin {
        require(_totalSupply >= amount);
        balances[msg.sender] = safeSub(balances[msg.sender], amount);
        _totalSupply = safeSub(_totalSupply, amount);
    }
    
    // ------------------------------------------------------------------------
    // Freeze Tokens
    // ------------------------------------------------------------------------
    function freeze(address user, uint amount, uint period) public onlyAdmin {
        require(balances[user] >= amount);
        freezed[user] = true;
        unlockTime[user] = uint(now) + period;
        freezeAmount[user] = amount;
    }

    // ------------------------------------------------------------------------
    // UnFreeze Tokens
    // ------------------------------------------------------------------------
    function unFreeze() public whenNotPaused {
        require(freezed[msg.sender] == true);
        require(unlockTime[msg.sender] < uint(now));
        freezed[msg.sender] = false;
        freezeAmount[msg.sender] = 0;
    }
    
    function ifFreeze(address user) public view returns (
        bool check, 
        uint amount, 
        uint timeLeft
    ) {
        check = freezed[user];
        amount = freezeAmount[user];
        timeLeft = unlockTime[user] - uint(now);
    }
    
    // ------------------------------------------------------------------------
    // Partner Authorization
    // ------------------------------------------------------------------------
    function createPartner(address _partner, uint _amount, uint _singleTrans, uint _durance) public onlyAdmin returns (uint) {
        Partner memory _Partner = Partner({
            admin: _partner,
            tokenPool: _amount,
            singleTrans: _singleTrans,
            timestamp: uint(now),
            durance: _durance
        });
        uint newPartnerId = partners.push(_Partner) - 1;
        PartnerCreated(newPartnerId, _partner, _amount, _singleTrans, _durance);
        
        return newPartnerId;
    }
    
    function partnerTransfer(uint _partnerId, bytes32 _data, address _to, uint _amount) public onlyPartner(_partnerId) whenNotPaused returns (bool) {
        require(_amount <= partners[_partnerId].singleTrans);
        partners[_partnerId].tokenPool = safeSub(partners[_partnerId].tokenPool, _amount);
        Poster memory _Poster = Poster ({
           poster: _to,
           hashData: _data,
           reward: _amount
        });
        uint newPostId = PartnerIdToPosterList[_partnerId].push(_Poster) - 1;
        _mint(_amount, _to);
        RewardDistribute(newPostId, _partnerId, _to, _amount);
        return true;
    }
    
    function setPartnerPool(uint _partnerId, uint _amount) public onlyAdmin {
        partners[_partnerId].tokenPool = _amount;
    }
    
    function setPartnerDurance(uint _partnerId, uint _durance) public onlyAdmin {
        partners[_partnerId].durance = uint(now) + _durance;
    }
    
    function getPartnerInfo(uint _partnerId) public view returns (
        address admin,
        uint tokenPool,
        uint timeLeft
    ) {
        Partner memory _Partner = partners[_partnerId];
        admin = _Partner.admin;
        tokenPool = _Partner.tokenPool;
        if (_Partner.timestamp + _Partner.durance > uint(now)) {
            timeLeft = _Partner.timestamp + _Partner.durance - uint(now);
        } else {
            timeLeft = 0;
        }
        
    }

    function getPosterInfo(uint _partnerId, uint _posterId) public view returns (
        address poster,
        bytes32 hashData,
        uint reward
    ) {
        Poster memory _Poster = PartnerIdToPosterList[_partnerId][_posterId];
        poster = _Poster.poster;
        hashData = _Poster.hashData;
        reward = _Poster.reward;
    }

    // ------------------------------------------------------------------------
    // Vip Agreement
    // ------------------------------------------------------------------------
    function createVip(address _vip, uint _durance, uint _frequence, uint _salary) public onlyAdmin returns (uint) {
        Vip memory _Vip = Vip ({
           vip: _vip,
           durance: uint(now) + _durance,
           frequence: _frequence,
           salary: _salary,
           timestamp: now + _frequence
        });
        uint newVipId = vips.push(_Vip) - 1;
        VipAgreementSign(newVipId, _vip, _durance, _frequence, _salary);
        
        return newVipId;
    }
    
    function mineSalary(uint _vipId) public onlyVip(_vipId) whenNotPaused returns (bool) {
        Vip storage _Vip = vips[_vipId];
        _mint(_Vip.salary, _Vip.vip);
        _Vip.timestamp = safeAdd(_Vip.timestamp, _Vip.frequence);
        
        SalaryReceived(_vipId, _Vip.vip, _Vip.salary, _Vip.timestamp);
        return true;
    }
    
    function deleteVip(uint _vipId) public onlyAdmin {
        delete vips[_vipId];
    }
    
    function getVipInfo(uint _vipId) public view returns (
        address vip,
        uint durance,
        uint frequence,
        uint salary,
        uint nextSalary,
        string log
    ) {
        Vip memory _Vip = vips[_vipId];
        vip = _Vip.vip;
        durance = _Vip.durance;
        frequence = _Vip.frequence;
        salary = _Vip.salary;
        if(_Vip.timestamp >= uint(now)) {
            nextSalary = safeSub(_Vip.timestamp, uint(now));
            log = "Please Wait";
        } else {
            nextSalary = 0;
            log = "Pick Up Your Salary Now";
        }
    }

    // ------------------------------------------------------------------------
    // Accept ETH
    // ------------------------------------------------------------------------
    function () public payable {
    }

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

contract XMLY is XMLYToken {
    event MembershipUpdate(address indexed member, uint indexed level);
    event MembershipCancel(address indexed member);
    event XMLYTradeCreated(uint indexed tradeId, bool indexed ifBadge, uint badge, uint token);
    event TradeCancel(uint indexed tradeId);
    event TradeComplete(uint indexed tradeId, address indexed buyer, address indexed seller, uint badge, uint token);
    event Mine(address indexed miner, uint indexed salary);
    
    mapping (address => uint) MemberToLevel;
    mapping (address => uint) MemberToBadge;
    mapping (address => uint) MemberToToken;
    mapping (address => uint) MemberToTime;
    
    uint public period = 30 days;
    
    uint[5] public boardMember =[
        0,
        1,
        10
    ];
    
    uint[5] public salary = [
        0,
        10000000000000000000000,
        100000000000000000000000
    ];
    
    struct XMLYTrade {
        address seller;
        bool ifBadge;
        uint badge;
        uint token;
    }
    
    XMLYTrade[] xmlyTrades;
    
    function boardMemberApply(uint _level) public whenNotPaused {
        require(_level > 0 && _level <= 4);
        require(badgeBalances[msg.sender] >= boardMember[_level]);
        _badgeFreeze(boardMember[_level]);
        MemberToLevel[msg.sender] = _level;
        if(MemberToTime[msg.sender] == 0) {
            MemberToTime[msg.sender] = uint(now);
        }
        
        MembershipUpdate(msg.sender, _level);
    }
    
    function getBoardMember(address _member) public view returns (
        uint level,
        uint timeLeft
    ) {
        level = MemberToLevel[_member];
        if(MemberToTime[_member] > uint(now)) {
            timeLeft = safeSub(MemberToTime[_member], uint(now));
        } else {
            timeLeft = 0;
        }
    }
    
    function boardMemberCancel() public whenNotPaused {
        require(MemberToLevel[msg.sender] > 0);
        _badgeUnFreeze(boardMember[MemberToLevel[msg.sender]]);
        
        MemberToLevel[msg.sender] = 0;
        MembershipCancel(msg.sender);
    }
    
    function createXMLYTrade(bool _ifBadge, uint _badge, uint _token) public whenNotPaused returns (uint) {
        if(_ifBadge) {
            require(badgeBalances[msg.sender] >= _badge);
            badgeBalances[msg.sender] = safeSub(badgeBalances[msg.sender], _badge);
            MemberToBadge[msg.sender] = _badge;
            XMLYTrade memory xmly = XMLYTrade({
               seller: msg.sender,
               ifBadge:_ifBadge,
               badge: _badge,
               token: _token
            });
            uint newBadgeTradeId = xmlyTrades.push(xmly) - 1;
            XMLYTradeCreated(newBadgeTradeId, _ifBadge, _badge, _token);
            
            return newBadgeTradeId;
        } else {
            require(balances[msg.sender] >= _token);
            balances[msg.sender] = safeSub(balances[msg.sender], _token);
            MemberToToken[msg.sender] = _token;
            XMLYTrade memory _xmly = XMLYTrade({
               seller: msg.sender,
               ifBadge:_ifBadge,
               badge: _badge,
               token: _token
            });
            uint newTokenTradeId = xmlyTrades.push(_xmly) - 1;
            XMLYTradeCreated(newTokenTradeId, _ifBadge, _badge, _token);
            
            return newTokenTradeId;
        }
    }
    
    function cancelTrade(uint _tradeId) public whenNotPaused {
        XMLYTrade memory xmly = xmlyTrades[_tradeId];
        require(xmly.seller == msg.sender);
        if(xmly.ifBadge){
            badgeBalances[msg.sender] = safeAdd(badgeBalances[msg.sender], xmly.badge);
            MemberToBadge[msg.sender] = 0;
        } else {
            balances[msg.sender] = safeAdd(balances[msg.sender], xmly.token);
            MemberToToken[msg.sender] = 0;
        }
        delete xmlyTrades[_tradeId];
        TradeCancel(_tradeId);
    }
    
    function trade(uint _tradeId) public whenNotPaused {
        XMLYTrade memory xmly = xmlyTrades[_tradeId];
        if(xmly.ifBadge){
            badgeBalances[msg.sender] = safeAdd(badgeBalances[msg.sender], xmly.badge);
            MemberToBadge[xmly.seller] = 0;
            transfer(xmly.seller, xmly.token);
            delete xmlyTrades[_tradeId];
            TradeComplete(_tradeId, msg.sender, xmly.seller, xmly.badge, xmly.token);
        } else {
            balances[msg.sender] = safeAdd(balances[msg.sender], xmly.token);
            MemberToToken[xmly.seller] = 0;
            badgeTransfer(xmly.seller, xmly.badge);
            delete xmlyTrades[_tradeId];
            TradeComplete(_tradeId, msg.sender, xmly.seller, xmly.badge, xmly.token);
        }
    }
    
    function mine() public whenNotPaused {
        uint level = MemberToLevel[msg.sender];
        require(MemberToTime[msg.sender] < uint(now)); 
        require(level > 0);
        _mint(salary[level], msg.sender);
        MemberToTime[msg.sender] = safeAdd(MemberToTime[msg.sender], period);
        Mine(msg.sender, salary[level]);
    }
    
    function setBoardMember(uint one, uint two) public onlyAdmin {
        boardMember[1] = one;
        boardMember[2] = two;
    }
    
    function setSalary(uint one, uint two) public onlyAdmin {
        salary[1] = one;
        salary[2] = two;
    }
    
    function setPeriod(uint time) public onlyAdmin {
        period = time;
    }
    
    function getTrade(uint _tradeId) public view returns (
        address seller,
        bool ifBadge,
        uint badge,
        uint token 
    ) {
        XMLYTrade memory _xmly = xmlyTrades[_tradeId];
        seller = _xmly.seller;
        ifBadge = _xmly.ifBadge;
        badge = _xmly.badge;
        token = _xmly.token;
    }
    
    function WhoIsTheContractMaster() public pure returns (string) {
        return "Alexander The Exlosion";
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_level","type":"uint256"}],"name":"boardMemberApply","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tradeId","type":"uint256"}],"name":"cancelTrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"time","type":"uint256"}],"name":"setPeriod","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_partner","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_singleTrans","type":"uint256"},{"name":"_durance","type":"uint256"}],"name":"createPartner","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"},{"name":"amount","type":"uint256"},{"name":"period","type":"uint256"}],"name":"badgeFreeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"CFOAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"badgeTransfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tradeId","type":"uint256"}],"name":"getTrade","outputs":[{"name":"seller","type":"address"},{"name":"ifBadge","type":"bool"},{"name":"badge","type":"uint256"},{"name":"token","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"},{"name":"amount","type":"uint256"},{"name":"period","type":"uint256"}],"name":"freeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_badgeTotalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_vipId","type":"uint256"}],"name":"getVipInfo","outputs":[{"name":"vip","type":"address"},{"name":"durance","type":"uint256"},{"name":"frequence","type":"uint256"},{"name":"salary","type":"uint256"},{"name":"nextSalary","type":"uint256"},{"name":"log","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newAdmin","type":"address"}],"name":"setCFO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_partnerId","type":"uint256"},{"name":"_durance","type":"uint256"}],"name":"setPartnerDurance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_partnerId","type":"uint256"}],"name":"getPartnerInfo","outputs":[{"name":"admin","type":"address"},{"name":"tokenPool","type":"uint256"},{"name":"timeLeft","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"burnBadge","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_ifBadge","type":"bool"},{"name":"_badge","type":"uint256"},{"name":"_token","type":"uint256"}],"name":"createXMLYTrade","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CEOAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minePool","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"badgeName","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_member","type":"address"}],"name":"getBoardMember","outputs":[{"name":"level","type":"uint256"},{"name":"timeLeft","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"ifFreeze","outputs":[{"name":"check","type":"bool"},{"name":"amount","type":"uint256"},{"name":"timeLeft","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_partnerId","type":"uint256"},{"name":"_amount","type":"uint256"}],"name":"setPartnerPool","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"one","type":"uint256"},{"name":"two","type":"uint256"}],"name":"setSalary","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"WhoIsTheContractMaster","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[],"name":"boardMemberCancel","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unFreeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"one","type":"uint256"},{"name":"two","type":"uint256"}],"name":"setBoardMember","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"badgeIfFreeze","outputs":[{"name":"check","type":"bool"},{"name":"amount","type":"uint256"},{"name":"timeLeft","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_vipId","type":"uint256"}],"name":"mineSalary","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"badgeDecimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"boardMember","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_vipId","type":"uint256"}],"name":"deleteVip","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"mine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"a","type":"uint256"},{"name":"b","type":"uint256"}],"name":"safeSub","outputs":[{"name":"c","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_partnerId","type":"uint256"},{"name":"_posterId","type":"uint256"}],"name":"getPosterInfo","outputs":[{"name":"poster","type":"address"},{"name":"hashData","type":"bytes32"},{"name":"reward","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"salary","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"badgeSymbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"a","type":"uint256"},{"name":"b","type":"uint256"}],"name":"safeDiv","outputs":[{"name":"c","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"mintBadge","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"}],"name":"badgeBalanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"},{"name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_vip","type":"address"},{"name":"_durance","type":"uint256"},{"name":"_frequence","type":"uint256"},{"name":"_salary","type":"uint256"}],"name":"createVip","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"a","type":"uint256"},{"name":"b","type":"uint256"}],"name":"safeMul","outputs":[{"name":"c","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferAnyERC20Token","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tradeId","type":"uint256"}],"name":"trade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"a","type":"uint256"},{"name":"b","type":"uint256"}],"name":"safeAdd","outputs":[{"name":"c","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"period","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"badgeUnFreeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_partnerId","type":"uint256"},{"name":"_data","type":"bytes32"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"partnerTransfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"badgeTotalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"member","type":"address"},{"indexed":true,"name":"level","type":"uint256"}],"name":"MembershipUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"member","type":"address"}],"name":"MembershipCancel","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tradeId","type":"uint256"},{"indexed":true,"name":"ifBadge","type":"bool"},{"indexed":false,"name":"badge","type":"uint256"},{"indexed":false,"name":"token","type":"uint256"}],"name":"XMLYTradeCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tradeId","type":"uint256"}],"name":"TradeCancel","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tradeId","type":"uint256"},{"indexed":true,"name":"buyer","type":"address"},{"indexed":true,"name":"seller","type":"address"},{"indexed":false,"name":"badge","type":"uint256"},{"indexed":false,"name":"token","type":"uint256"}],"name":"TradeComplete","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"miner","type":"address"},{"indexed":true,"name":"salary","type":"uint256"}],"name":"Mine","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"partnerId","type":"uint256"},{"indexed":true,"name":"partner","type":"address"},{"indexed":true,"name":"amount","type":"uint256"},{"indexed":false,"name":"singleTrans","type":"uint256"},{"indexed":false,"name":"durance","type":"uint256"}],"name":"PartnerCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"postId","type":"uint256"},{"indexed":false,"name":"partnerId","type":"uint256"},{"indexed":true,"name":"user","type":"address"},{"indexed":true,"name":"amount","type":"uint256"}],"name":"RewardDistribute","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"vipId","type":"uint256"},{"indexed":true,"name":"vip","type":"address"},{"indexed":false,"name":"durance","type":"uint256"},{"indexed":false,"name":"frequence","type":"uint256"},{"indexed":false,"name":"salar","type":"uint256"}],"name":"VipAgreementSign","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"vipId","type":"uint256"},{"indexed":true,"name":"vip","type":"address"},{"indexed":false,"name":"salary","type":"uint256"},{"indexed":true,"name":"timestamp","type":"uint256"}],"name":"SalaryReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"BadgeTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"AdminTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenOwner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Approval","type":"event"}]

6060604081815260008054600160a060020a0319908116735b807e379170d42f3b099c01a5399a2e1e58963b179091556001805460a060020a60ff021992167392cffcd79e6ab6b16c7afb96fbc0a2373be516a417919091169055670de0b6b3a764000060025562278d00601c555190810160409081526000825260016020830152600a908201526200009790601d906003620002fe565b50606060405190810160409081526000825269021e19e0c9bab2400000602083015269152d02c7e14af680000090820152620000d890602290600362000346565b506040805190810160405260038082527f584d48000000000000000000000000000000000000000000000000000000000060208301529080516200012192916020019062000382565b5060408051908101604052600a81527f584d4c5920486f6e6f7200000000000000000000000000000000000000000000602082015260049080516200016b92916020019062000382565b506005805460ff191690556103e8600681905560018054600160a060020a0390811660009081526007602052604080822085905592549091169290917f82de2639fdc3c65a9413c0716d4cbd73c6182095571c159d8cabaee5b16a363191905190815260200160405180910390a360408051908101604052600481527f584d4c59000000000000000000000000000000000000000000000000000000006020820152600b9080516200022292916020019062000382565b5060408051908101604052600a81527f584d4c5920546f6b656e000000000000000000000000000000000000000000006020820152600c9080516200026c92916020019062000382565b50600d805460ff191660129081179091556b1027e72f1f12813088000000600e8190556c0132f6287f4e5f969a18000000600f5560018054600160a060020a039081166000908152602094909452604080852084905591541692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef915190815260200160405180910390a362000415565b826005810192821562000334579160200282015b8281111562000334578251829060ff1690559160200191906001019062000312565b5062000342929150620003f5565b5090565b826005810192821562000334579160200282015b828111156200033457825182906001605060020a03169055916020019190600101906200035a565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003c557805160ff191683800117855562000334565b8280016001018555821562000334579182015b8281111562000334578251825591602001919060010190620003d8565b6200041291905b80821115620003425760008155600101620003fc565b90565b61382b80620004256000396000f3006060604052600436106102f25763ffffffff60e060020a6000350416630486529b81146102f457806306fdde031461030a578063095ea7b31461039457806309ec6cc7146103ca5780630f3a9f65146103e057806318160ddd146103f657806320db91e21461041b57806323b872dd1461044357806327acfff91461046b578063298ad569146104905780632bac276b146104bf5780632db25e05146104e157806330e1e4e51461052d578063313ce567146105525780633a573e021461057b5780633eaaf86b1461058e5780633f4ba83a146105a157806342966c68146105b45780634d65beb1146105ca5780634e0a33791461068d5780634ea611cd146106ac5780635538c964146106c557806355de28ae146107115780635ad5ca74146107275780635c975abb146107455780635fcee7a0146107585780635fd8c7101461076b578063602e66231461077e578063610c300914610791578063637fcf95146107a457806363c454ca146107db5780636509c1951461082057806370a082311461083957806374a37efc1461085857806376637dcd146108715780637c85ab3a146108845780637cf12b9014610897578063808134c8146108aa57806382f4b3a8146108c35780638456cb59146108e2578063876f9795146108f557806387b8963c1461090b5780638a5839111461091e5780638d72f8561461093457806395d89b411461094a57806399f4b2511461095d578063a0712d6814610970578063a293d1e814610986578063a61d68291461099f578063a9059cbb146109e6578063a9b6c43514610a08578063ae479a6314610a1e578063b5931f7c14610a31578063c3c63edc14610a4a578063c681d68d14610a60578063cae9ca5114610a7f578063cdfe281514610ae4578063d05c78da14610b0c578063dc39d06d14610b25578063dd62ed3e14610b47578063df1dd82614610b6c578063e6cb901314610b82578063ef78d4fd14610b9b578063f52ad69014610bae578063fc04c0c414610bc1578063fc24e58914610be9575b005b34156102ff57600080fd5b6102f2600435610bfc565b341561031557600080fd5b61031d610cfb565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610359578082015183820152602001610341565b50505050905090810190601f1680156103865780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561039f57600080fd5b6103b6600160a060020a0360043516602435610d99565b604051901515815260200160405180910390f35b34156103d557600080fd5b6102f2600435610e2e565b34156103eb57600080fd5b6102f2600435610fe8565b341561040157600080fd5b610409611023565b60405190815260200160405180910390f35b341561042657600080fd5b610409600160a060020a0360043516602435604435606435611056565b341561044e57600080fd5b6103b6600160a060020a036004358116906024351660443561118a565b341561047657600080fd5b6102f2600160a060020a0360043516602435604435611279565b341561049b57600080fd5b6104a3611315565b604051600160a060020a03909116815260200160405180910390f35b34156104ca57600080fd5b6103b6600160a060020a0360043516602435611324565b34156104ec57600080fd5b6104f7600435611529565b604051600160a060020a039094168452911515602084015260408084019190915260608301919091526080909101905180910390f35b341561053857600080fd5b6102f2600160a060020a03600435166024356044356115b6565b341561055d57600080fd5b610565611652565b60405160ff909116815260200160405180910390f35b341561058657600080fd5b61040961165b565b341561059957600080fd5b610409611661565b34156105ac57600080fd5b6103b6611667565b34156105bf57600080fd5b6102f2600435611706565b34156105d557600080fd5b6105e060043561179b565b6040518087600160a060020a0316600160a060020a0316815260200186815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561064d578082015183820152602001610635565b50505050905090810190601f16801561067a5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b341561069857600080fd5b6102f2600160a060020a03600435166118c7565b34156106b757600080fd5b6102f2600435602435611955565b34156106d057600080fd5b6106db6004356119b6565b6040518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390f35b341561071c57600080fd5b6102f2600435611a61565b341561073257600080fd5b6104096004351515602435604435611ae6565b341561075057600080fd5b6103b6611dff565b341561076357600080fd5b6104a3611e0f565b341561077657600080fd5b6102f2611e1e565b341561078957600080fd5b610409611e8f565b341561079c57600080fd5b61031d611e95565b34156107af57600080fd5b6107c3600160a060020a0360043516611f00565b60405191825260208201526040908101905180910390f35b34156107e657600080fd5b6107fa600160a060020a0360043516611f62565b604051921515835260208301919091526040808301919091526060909101905180910390f35b341561082b57600080fd5b6102f2600435602435611f9b565b341561084457600080fd5b610409600160a060020a0360043516611ffa565b341561086357600080fd5b6102f2600435602435612015565b341561087c57600080fd5b61031d61205c565b341561088f57600080fd5b6102f261209d565b34156108a257600080fd5b6102f2612152565b34156108b557600080fd5b6102f26004356024356121e5565b34156108ce57600080fd5b6107fa600160a060020a036004351661222a565b34156108ed57600080fd5b6103b6612263565b341561090057600080fd5b6103b6600435612307565b341561091657600080fd5b610565612460565b341561092957600080fd5b610409600435612469565b341561093f57600080fd5b6102f260043561247d565b341561095557600080fd5b61031d6124fa565b341561096857600080fd5b6102f2612565565b341561097b57600080fd5b6102f260043561265d565b341561099157600080fd5b6104096004356024356126fb565b34156109aa57600080fd5b6109b8600435602435612710565b604051600160a060020a03909316835260208301919091526040808301919091526060909101905180910390f35b34156109f157600080fd5b6103b6600160a060020a0360043516602435612792565b3415610a1357600080fd5b610409600435612958565b3415610a2957600080fd5b61031d612965565b3415610a3c57600080fd5b6104096004356024356129d0565b3415610a5557600080fd5b6102f26004356129f1565b3415610a6b57600080fd5b610409600160a060020a0360043516612a70565b3415610a8a57600080fd5b6103b660048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650612a8b95505050505050565b3415610aef57600080fd5b610409600160a060020a0360043516602435604435606435612c1a565b3415610b1757600080fd5b610409600435602435612d5e565b3415610b3057600080fd5b6103b6600160a060020a0360043516602435612d83565b3415610b5257600080fd5b610409600160a060020a0360043581169060243516612e41565b3415610b7757600080fd5b6102f2600435612e98565b3415610b8d57600080fd5b610409600435602435613146565b3415610ba657600080fd5b610409613156565b3415610bb957600080fd5b6102f261315c565b3415610bcc57600080fd5b6103b6600435602435600160a060020a03604435166064356131ef565b3415610bf457600080fd5b610409613439565b60015460a060020a900460ff1615610c1357600080fd5b600081118015610c24575060048111155b1515610c2f57600080fd5b601d8160058110610c3c57fe5b0154600160a060020a0333166000908152600760205260409020541015610c6257600080fd5b610c79601d8260058110610c7257fe5b015461346b565b600160a060020a0333166000908152601860209081526040808320849055601b9091529020541515610cc157600160a060020a0333166000908152601b602052604090204290555b8033600160a060020a03167f0cc0076665281ff8398c9431c41b09049a4aa58f50f11b4130ef230ed60adc8760405160405180910390a350565b600c8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d915780601f10610d6657610100808354040283529160200191610d91565b820191906000526020600020905b815481529060010190602001808311610d7457829003601f168201915b505050505081565b600160a060020a03331660009081526014602052604081205460ff16151560011415610dc457600080fd5b600160a060020a03338116600081815260136020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b610e3661360e565b60015460a060020a900460ff1615610e4d57600080fd5b6027805483908110610e5b57fe5b9060005260206000209060030201608060405190810160409081528254600160a060020a03808216845260a060020a90910460ff16151560208401526001840154918301919091526002909201546060820152915033168151600160a060020a031614610ec757600080fd5b806020015115610f2457600160a060020a0333166000908152600760205260409081902054610ef891830151613146565b600160a060020a0333166000908152600760209081526040808320939093556019905290812055610f73565b600160a060020a033316600090815260126020526040902054610f4b906060830151613146565b600160a060020a033316600090815260126020908152604080832093909355601a9052908120555b6027805483908110610f8157fe5b600091825260208220600390910201805474ffffffffffffffffffffffffffffffffffffffffff191681556001810182905560020155817f223868bda9e47fa465ee1e1401b3bd23888b9b951308671e785b0e890b728a9660405160405180910390a25050565b60005433600160a060020a0390811691161480611013575060015433600160a060020a039081169116145b151561101e57600080fd5b601c55565b6000805260126020527f7e7fa33969761a458e04f477e039a608702b4f924981d6653935a8319a08ad7b54600e54035b90565b6000611060613635565b6000805433600160a060020a039081169116148061108c575060015433600160a060020a039081169116145b151561109757600080fd5b60a06040519081016040528088600160a060020a031681526020018781526020018681526020014281526020018581525091506001601080548060010182816110e0919061366e565b6000928352602090922085916005020181518154600160a060020a031916600160a060020a03919091161781556020820151816001015560408201518160020155606082015181600301556080820151816004015550500390508587600160a060020a0316827ff2b85b43211ffec4da9402231db708764bd4c87ed2853c3b3e9308ec067ae02a888860405191825260208201526040908101905180910390a49695505050505050565b600160a060020a0383166000908152601260205260408120546111ad90836126fb565b600160a060020a03808616600090815260126020908152604080832094909455601381528382203390931682529190915220546111ea90836126fb565b600160a060020a038086166000908152601360209081526040808320338516845282528083209490945591861681526012909152205461122a9083613146565b600160a060020a03808516600081815260126020526040908190209390935591908616906000805160206137e08339815191529085905190815260200160405180910390a35060019392505050565b60005433600160a060020a03908116911614806112a4575060015433600160a060020a039081169116145b15156112af57600080fd5b600160a060020a038316600090815260076020526040902054829010156112d557600080fd5b600160a060020a039092166000908152600860209081526040808320805460ff19166001179055600a825280832042909501909455600990529190912055565b600154600160a060020a031681565b60015460009060a060020a900460ff161561133e57600080fd5b600160a060020a03331660009081526008602052604090205460ff16151561140f57600160a060020a03331660009081526007602052604090205461138390836126fb565b600160a060020a0333811660009081526007602052604080822093909355908516815220546113b29083613146565b600160a060020a0380851660008181526007602052604090819020939093559133909116907f82de2639fdc3c65a9413c0716d4cbd73c6182095571c159d8cabaee5b16a36319085905190815260200160405180910390a3611520565b600160a060020a033316600090815260096020908152604080832054600790925290912054111561152057600160a060020a03331660009081526007602090815260408083205460099092529091205461146991906126fb565b82111561147557600080fd5b600160a060020a03331660009081526007602052604090205461149890836126fb565b600160a060020a0333811660009081526007602052604080822093909355908516815220546114c79083613146565b600160a060020a0380851660008181526007602052604090819020939093559133909116907f82de2639fdc3c65a9413c0716d4cbd73c6182095571c159d8cabaee5b16a36319085905190815260200160405180910390a35b50600192915050565b60008060008061153761360e565b602780548790811061154557fe5b9060005260206000209060030201608060405190810160409081528254600160a060020a038116835260a060020a900460ff16151560208301526001830154908201526002909101546060820152905080519450806020015193508060400151925080606001519150509193509193565b60005433600160a060020a03908116911614806115e1575060015433600160a060020a039081169116145b15156115ec57600080fd5b600160a060020a0383166000908152601260205260409020548290101561161257600080fd5b600160a060020a039092166000908152601460209081526040808320805460ff191660011790556016825280832042909501909455601590529190912055565b600d5460ff1681565b60065481565b600e5481565b6000805433600160a060020a0390811691161480611693575060015433600160a060020a039081169116145b151561169e57600080fd5b60015460a060020a900460ff1615156116b657600080fd5b6001805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a150600190565b60005433600160a060020a0390811691161480611731575060015433600160a060020a039081169116145b151561173c57600080fd5b600e548190101561174c57600080fd5b600160a060020a03331660009081526012602052604090205461176f90826126fb565b600160a060020a033316600090815260126020526040902055600e5461179590826126fb565b600e5550565b60008060008060006117ab61369f565b6117b3613635565b60118054899081106117c157fe5b906000526020600020906005020160a060405190810160409081528254600160a060020a031682526001830154602083015260028301549082015260038201546060820152600490910154608082015290508051965080602001519550806040015194508060600151935042816080015110611882576118458160800151426126fb565b925060408051908101604052600b81527f506c656173652057616974000000000000000000000000000000000000000000602082015291506118bd565b6000925060408051908101604052601781527f5069636b20557020596f75722053616c617279204e6f77000000000000000000602082015291505b5091939550919395565b60005433600160a060020a039081169116146118e257600080fd5b600160a060020a03811615156118f757600080fd5b600154600160a060020a0380831691167ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec660405160405180910390a360018054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a0390811691161480611980575060015433600160a060020a039081169116145b151561198b57600080fd5b80420160108381548110151561199d57fe5b9060005260206000209060050201600401819055505050565b60008060006119c3613635565b60108054869081106119d157fe5b906000526020600020906005020160a060405190810160409081528254600160a060020a0316825260018301546020830152600283015490820152600382015460608201526004909101546080820152905080519350806020015192504281608001518260600151011115611a5457428160800151826060015101039150611a59565b600091505b509193909250565b60005433600160a060020a0390811691161480611a8c575060015433600160a060020a039081169116145b1515611a9757600080fd5b600160a060020a033316600090815260076020526040902054611aba90826126fb565b600160a060020a033316600090815260076020526040902055600654611ae090826126fb565b60065550565b6000611af061360e565b6000611afa61360e565b60015460009060a060020a900460ff1615611b1457600080fd5b8715611c8957600160a060020a03331660009081526007602052604090205487901015611b4057600080fd5b600160a060020a033316600090815260076020526040902054611b6390886126fb565b600160a060020a03331660009081526007602090815260408083209390935560199052819020889055608090519081016040528033600160a060020a031681526020018915158152602001888152602001878152509350600160278054806001018281611bd091906136b1565b6000928352602090922087916003020181518154600160a060020a031916600160a060020a03919091161781556020820151815490151560a060020a0274ff00000000000000000000000000000000000000001990911617815560408201518160010155606082015181600201555050039250871515837f163fa711b7e61f884dd700360ed0dc2c369376de0c6a1956fce4171ca0a9cef1898960405191825260208201526040908101905180910390a3829450611df4565b600160a060020a03331660009081526012602052604090205486901015611caf57600080fd5b600160a060020a033316600090815260126020526040902054611cd290876126fb565b600160a060020a033316600090815260126020908152604080832093909355601a9052819020879055608090519081016040528033600160a060020a031681526020018915158152602001888152602001878152509150600160278054806001018281611d3f91906136b1565b6000928352602090922085916003020181518154600160a060020a031916600160a060020a03919091161781556020820151815490151560a060020a0274ff00000000000000000000000000000000000000001990911617815560408201518160010155606082015181600201555050039050871515817f163fa711b7e61f884dd700360ed0dc2c369376de0c6a1956fce4171ca0a9cef1898960405191825260208201526040908101905180910390a38094505b505050509392505050565b60015460a060020a900460ff1681565b600054600160a060020a031681565b60005433600160a060020a0390811691161480611e49575060015433600160a060020a039081169116145b1515611e5457600080fd5b600054600160a060020a039081169030163180156108fc0290604051600060405180830381858888f193505050501515611e8d57600080fd5b565b600f5481565b60048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d915780601f10610d6657610100808354040283529160200191610d91565b600160a060020a038116600090815260186020908152604080832054601b90925282205490919042901115611f5957600160a060020a0383166000908152601b6020526040902054611f5290426126fb565b9050611f5d565b5060005b915091565b600160a060020a03166000908152601460209081526040808320546015835281842054601690935292205460ff90921692909142900390565b60005433600160a060020a0390811691161480611fc6575060015433600160a060020a039081169116145b1515611fd157600080fd5b80601083815481101515611fe157fe5b9060005260206000209060050201600101819055505050565b600160a060020a031660009081526012602052604090205490565b60005433600160a060020a0390811691161480612040575060015433600160a060020a039081169116145b151561204b57600080fd5b602382905580602260025b01555050565b61206461369f565b60408051908101604052601681527f416c6578616e646572205468652045786c6f73696f6e000000000000000000006020820152905090565b60015460a060020a900460ff16156120b457600080fd5b600160a060020a033316600090815260186020526040812054116120d757600080fd5b600160a060020a03331660009081526018602052604090205461210890601d906005811061210157fe5b01546134f3565b600160a060020a033316600081815260186020526040808220919091557f16bfdc1e6dc7f481f073edc603659a221eed08e79f1d7e075d30eced1d10cc11905160405180910390a2565b60015460a060020a900460ff161561216957600080fd5b600160a060020a03331660009081526014602052604090205460ff16151560011461219357600080fd5b600160a060020a0333166000908152601660205260409020544290106121b857600080fd5b600160a060020a0333166000908152601460209081526040808320805460ff191690556015909152812055565b60005433600160a060020a0390811691161480612210575060015433600160a060020a039081169116145b151561221b57600080fd5b601e82905580601d6002612056565b600160a060020a03166000908152600860209081526040808320546009835281842054600a90935292205460ff90921692909142900390565b6000805433600160a060020a039081169116148061228f575060015433600160a060020a039081169116145b151561229a57600080fd5b60015460a060020a900460ff16156122b157600080fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a150600190565b6000808233600160a060020a031660118281548110151561232457fe5b6000918252602090912060059091020154600160a060020a03161461234857600080fd5b4260118281548110151561235857fe5b90600052602060002090600502016001015411151561237657600080fd5b4260118281548110151561238657fe5b9060005260206000209060050201600401541015156123a457600080fd5b60015460a060020a900460ff16156123bb57600080fd5b60118054859081106123c957fe5b60009182526020909120600590910201600381015481549193506123f591600160a060020a0316613578565b61240782600401548360020154613146565b6004830181905582546003840154600160a060020a039091169086907fe59c03907eb3e86b26f58d894ce2930fb7654708c75e33e4ae4a8025631ce94d9060405190815260200160405180910390a45060019392505050565b60055460ff1681565b601d816005811061247657fe5b0154905081565b60005433600160a060020a03908116911614806124a8575060015433600160a060020a039081169116145b15156124b357600080fd5b60118054829081106124c157fe5b6000918252602082206005909102018054600160a060020a03191681556001810182905560028101829055600381018290556004015550565b600b8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d915780601f10610d6657610100808354040283529160200191610d91565b60015460009060a060020a900460ff161561257f57600080fd5b50600160a060020a033316600090815260186020908152604080832054601b909252909120544290106125b157600080fd5b600081116125be57600080fd5b6125d6602282600581106125ce57fe5b015433613578565b600160a060020a0333166000908152601b6020526040902054601c546125fc9190613146565b600160a060020a0333166000908152601b60205260409020556022816005811061262257fe5b015433600160a060020a03167ff23a961744a760027f8811c59a0eaef0d29cf965578b17412bcc375b52fa39d160405160405180910390a350565b60005433600160a060020a0390811691161480612688575060015433600160a060020a039081169116145b151561269357600080fd5b600f54819010156126a357600080fd5b6126af600f54826126fb565b600f55600160a060020a0333166000908152601260205260409020546126d59082613146565b600160a060020a033316600090815260126020526040902055600e546117959082613146565b60008282111561270a57600080fd5b50900390565b600080600061271d6136dd565b600086815260176020526040902080548690811061273757fe5b9060005260206000209060030201606060405190810160409081528254600160a060020a0316825260018301546020830152600290920154918101919091529050805193508060200151925080604001519150509250925092565b600160a060020a03331660009081526014602052604081205460ff16151561285157600160a060020a0333166000908152601260205260409020546127d790836126fb565b600160a060020a0333811660009081526012602052604080822093909355908516815220546128069083613146565b600160a060020a0380851660008181526012602052604090819020939093559133909116906000805160206137e08339815191529085905190815260200160405180910390a3611520565b600160a060020a033316600090815260156020908152604080832054601290925290912054111561152057600160a060020a0333166000908152601260209081526040808320546015909252909120546128ab91906126fb565b8211156128b757600080fd5b600160a060020a0333166000908152601260205260409020546128da90836126fb565b600160a060020a0333811660009081526012602052604080822093909355908516815220546129099083613146565b600160a060020a0380851660008181526012602052604090819020939093559133909116906000805160206137e08339815191529085905190815260200160405180910390a350600192915050565b6022816005811061247657fe5b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d915780601f10610d6657610100808354040283529160200191610d91565b60008082116129de57600080fd5b81838115156129e957fe5b049392505050565b60005433600160a060020a0390811691161480612a1c575060015433600160a060020a039081169116145b1515612a2757600080fd5b600160a060020a033316600090815260076020526040902054612a4a9082613146565b600160a060020a033316600090815260076020526040902055600654611ae09082613146565b600160a060020a031660009081526007602052604090205490565b600160a060020a03331660009081526014602052604081205460ff16151560011415612ab657600080fd5b600160a060020a03338116600081815260136020908152604080832094891680845294909152908190208690557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259086905190815260200160405180910390a383600160a060020a0316638f4ffcb1338530866040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612bae578082015183820152602001612b96565b50505050905090810190601f168015612bdb5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1515612bfc57600080fd5b6102c65a03f11515612c0d57600080fd5b5060019695505050505050565b6000612c24613635565b6000805433600160a060020a0390811691161480612c50575060015433600160a060020a039081169116145b1515612c5b57600080fd5b60a06040519081016040528088600160a060020a0316815260200187420181526020018681526020018581526020018642018152509150600160118054806001018281612ca8919061366e565b6000928352602090922085916005020181518154600160a060020a031916600160a060020a039190911617815560208201518160010155604082015181600201556060820151816003015560808201518160040155505003905086600160a060020a0316817fe0a25f374c3ccea9b3852380e0d550961e95fb10b5dd9efb7d390e852786ef7088888860405180848152602001838152602001828152602001935050505060405180910390a39695505050505050565b818102821580612d785750818382811515612d7557fe5b04145b1515610e2857600080fd5b6000805433600160a060020a0390811691161480612daf575060015433600160a060020a039081169116145b1515612dba57600080fd5b60008054600160a060020a038086169263a9059cbb929091169085906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515612e2057600080fd5b6102c65a03f11515612e3157600080fd5b5050506040518051949350505050565b600160a060020a03331660009081526014602052604081205460ff16151560011415612e6c57600080fd5b50600160a060020a03918216600090815260136020908152604080832093909416825291909152205490565b612ea061360e565b60015460a060020a900460ff1615612eb757600080fd5b6027805483908110612ec557fe5b9060005260206000209060030201608060405190810160409081528254600160a060020a038116835260a060020a900460ff1615156020830190815260018401549183019190915260029092015460608201529150511561303357600160a060020a0333166000908152600760205260409081902054612f4791830151613146565b600160a060020a0333166000908152600760205260408120919091556019818351600160a060020a03168152602081019190915260400160002055612f9181518260600151612792565b506027805483908110612fa057fe5b600091825260208220600390910201805474ffffffffffffffffffffffffffffffffffffffffff1916815560018101829055600201558051600160a060020a031633600160a060020a0316837f8e5d31db095940719a41f61a733ac177443e93085309b93626db618db0c9f2718460400151856060015160405191825260208201526040908101905180910390a4613142565b600160a060020a03331660009081526012602052604090205461305a906060830151613146565b600160a060020a033316600090815260126020526040812091909155601a818351600160a060020a031681526020810191909152604001600020556130a481518260400151611324565b5060278054839081106130b357fe5b600091825260208220600390910201805474ffffffffffffffffffffffffffffffffffffffffff1916815560018101829055600201558051600160a060020a031633600160a060020a0316837f8e5d31db095940719a41f61a733ac177443e93085309b93626db618db0c9f2718460400151856060015160405191825260208201526040908101905180910390a45b5050565b81810182811015610e2857600080fd5b601c5481565b60015460a060020a900460ff161561317357600080fd5b600160a060020a03331660009081526008602052604090205460ff16151560011461319d57600080fd5b600160a060020a0333166000908152600a60205260409020544290106131c257600080fd5b600160a060020a0333166000908152600860209081526040808320805460ff191690556009909152812055565b60006131f96136dd565b600086600033600160a060020a031660108381548110151561321757fe5b6000918252602090912060059091020154600160a060020a03161461323b57600080fd5b600060108381548110151561324c57fe5b90600052602060002090600502016001015411151561326a57600080fd5b6132b460108381548110151561327c57fe5b90600052602060002090600502016003015460108481548110151561329d57fe5b906000526020600020906005020160040154613146565b90504281116132c257600080fd5b60015460a060020a900460ff16156132d957600080fd5b601080548a9081106132e757fe5b906000526020600020906005020160020154861115151561330757600080fd5b61333160108a81548110151561331957fe5b906000526020600020906005020160010154876126fb565b601080548b90811061333f57fe5b90600052602060002090600502016001018190555060606040519081016040908152600160a060020a038916825260208083018b905281830189905260008c8152601790915220805491955060019180830161339b83826136fd565b6000928352602090922087916003020181518154600160a060020a031916600160a060020a0391909116178155602082015160018201556040820151816002015550500392506133eb8688613578565b8587600160a060020a0316847fdf6fd8077aa2d207937dd80dc1ddb27e974d3420442c7def38ec089f4364b74e8c60405190815260200160405180910390a450600198975050505050505050565b6000805260076020527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df546006540390565b600160a060020a03331660009081526008602052604090205460ff161561349157600080fd5b600160a060020a033316600090815260076020526040902054819010156134b757600080fd5b600160a060020a0333166000908152600860209081526040808320805460ff19166001179055600a825280832060001990556009909152902055565b600160a060020a03331660009081526008602052604090205460ff16151560011461351d57600080fd5b600160a060020a0333166000908152600a6020908152604080832083905560088252808320805460ff19169055600990915290205461355c90826126fb565b600160a060020a03331660009081526009602052604090205550565b600f548290101561358857600080fd5b613594600f54836126fb565b600f55600e546135a49083613146565b600e55600160a060020a0381166000908152601260205260409020546135ca9083613146565b600160a060020a0382166000818152601260205260408082209390935590916000805160206137e08339815191529085905190815260200160405180910390a35050565b60806040519081016040908152600080835260208301819052908201819052606082015290565b60a0604051908101604052806000600160a060020a03168152602001600081526020016000815260200160008152602001600081525090565b81548183558181151161369a5760050281600502836000526020600020918201910161369a9190613729565b505050565b60206040519081016040526000815290565b81548183558181151161369a5760030281600302836000526020600020918201910161369a919061376d565b606060405190810160409081526000808352602083018190529082015290565b81548183558181151161369a5760030281600302836000526020600020918201910161369a91906137ad565b61105391905b80821115613769578054600160a060020a03191681556000600182018190556002820181905560038201819055600482015560050161372f565b5090565b61105391905b8082111561376957805474ffffffffffffffffffffffffffffffffffffffffff191681556000600182018190556002820155600301613773565b61105391905b80821115613769578054600160a060020a031916815560006001820181905560028201556003016137b35600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a7230582082046e2290510e6518b962bd7c474b806b958e6acba229ebbd5d4255de76eb1a0029

Deployed Bytecode

0x6060604052600436106102f25763ffffffff60e060020a6000350416630486529b81146102f457806306fdde031461030a578063095ea7b31461039457806309ec6cc7146103ca5780630f3a9f65146103e057806318160ddd146103f657806320db91e21461041b57806323b872dd1461044357806327acfff91461046b578063298ad569146104905780632bac276b146104bf5780632db25e05146104e157806330e1e4e51461052d578063313ce567146105525780633a573e021461057b5780633eaaf86b1461058e5780633f4ba83a146105a157806342966c68146105b45780634d65beb1146105ca5780634e0a33791461068d5780634ea611cd146106ac5780635538c964146106c557806355de28ae146107115780635ad5ca74146107275780635c975abb146107455780635fcee7a0146107585780635fd8c7101461076b578063602e66231461077e578063610c300914610791578063637fcf95146107a457806363c454ca146107db5780636509c1951461082057806370a082311461083957806374a37efc1461085857806376637dcd146108715780637c85ab3a146108845780637cf12b9014610897578063808134c8146108aa57806382f4b3a8146108c35780638456cb59146108e2578063876f9795146108f557806387b8963c1461090b5780638a5839111461091e5780638d72f8561461093457806395d89b411461094a57806399f4b2511461095d578063a0712d6814610970578063a293d1e814610986578063a61d68291461099f578063a9059cbb146109e6578063a9b6c43514610a08578063ae479a6314610a1e578063b5931f7c14610a31578063c3c63edc14610a4a578063c681d68d14610a60578063cae9ca5114610a7f578063cdfe281514610ae4578063d05c78da14610b0c578063dc39d06d14610b25578063dd62ed3e14610b47578063df1dd82614610b6c578063e6cb901314610b82578063ef78d4fd14610b9b578063f52ad69014610bae578063fc04c0c414610bc1578063fc24e58914610be9575b005b34156102ff57600080fd5b6102f2600435610bfc565b341561031557600080fd5b61031d610cfb565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610359578082015183820152602001610341565b50505050905090810190601f1680156103865780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561039f57600080fd5b6103b6600160a060020a0360043516602435610d99565b604051901515815260200160405180910390f35b34156103d557600080fd5b6102f2600435610e2e565b34156103eb57600080fd5b6102f2600435610fe8565b341561040157600080fd5b610409611023565b60405190815260200160405180910390f35b341561042657600080fd5b610409600160a060020a0360043516602435604435606435611056565b341561044e57600080fd5b6103b6600160a060020a036004358116906024351660443561118a565b341561047657600080fd5b6102f2600160a060020a0360043516602435604435611279565b341561049b57600080fd5b6104a3611315565b604051600160a060020a03909116815260200160405180910390f35b34156104ca57600080fd5b6103b6600160a060020a0360043516602435611324565b34156104ec57600080fd5b6104f7600435611529565b604051600160a060020a039094168452911515602084015260408084019190915260608301919091526080909101905180910390f35b341561053857600080fd5b6102f2600160a060020a03600435166024356044356115b6565b341561055d57600080fd5b610565611652565b60405160ff909116815260200160405180910390f35b341561058657600080fd5b61040961165b565b341561059957600080fd5b610409611661565b34156105ac57600080fd5b6103b6611667565b34156105bf57600080fd5b6102f2600435611706565b34156105d557600080fd5b6105e060043561179b565b6040518087600160a060020a0316600160a060020a0316815260200186815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561064d578082015183820152602001610635565b50505050905090810190601f16801561067a5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b341561069857600080fd5b6102f2600160a060020a03600435166118c7565b34156106b757600080fd5b6102f2600435602435611955565b34156106d057600080fd5b6106db6004356119b6565b6040518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390f35b341561071c57600080fd5b6102f2600435611a61565b341561073257600080fd5b6104096004351515602435604435611ae6565b341561075057600080fd5b6103b6611dff565b341561076357600080fd5b6104a3611e0f565b341561077657600080fd5b6102f2611e1e565b341561078957600080fd5b610409611e8f565b341561079c57600080fd5b61031d611e95565b34156107af57600080fd5b6107c3600160a060020a0360043516611f00565b60405191825260208201526040908101905180910390f35b34156107e657600080fd5b6107fa600160a060020a0360043516611f62565b604051921515835260208301919091526040808301919091526060909101905180910390f35b341561082b57600080fd5b6102f2600435602435611f9b565b341561084457600080fd5b610409600160a060020a0360043516611ffa565b341561086357600080fd5b6102f2600435602435612015565b341561087c57600080fd5b61031d61205c565b341561088f57600080fd5b6102f261209d565b34156108a257600080fd5b6102f2612152565b34156108b557600080fd5b6102f26004356024356121e5565b34156108ce57600080fd5b6107fa600160a060020a036004351661222a565b34156108ed57600080fd5b6103b6612263565b341561090057600080fd5b6103b6600435612307565b341561091657600080fd5b610565612460565b341561092957600080fd5b610409600435612469565b341561093f57600080fd5b6102f260043561247d565b341561095557600080fd5b61031d6124fa565b341561096857600080fd5b6102f2612565565b341561097b57600080fd5b6102f260043561265d565b341561099157600080fd5b6104096004356024356126fb565b34156109aa57600080fd5b6109b8600435602435612710565b604051600160a060020a03909316835260208301919091526040808301919091526060909101905180910390f35b34156109f157600080fd5b6103b6600160a060020a0360043516602435612792565b3415610a1357600080fd5b610409600435612958565b3415610a2957600080fd5b61031d612965565b3415610a3c57600080fd5b6104096004356024356129d0565b3415610a5557600080fd5b6102f26004356129f1565b3415610a6b57600080fd5b610409600160a060020a0360043516612a70565b3415610a8a57600080fd5b6103b660048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650612a8b95505050505050565b3415610aef57600080fd5b610409600160a060020a0360043516602435604435606435612c1a565b3415610b1757600080fd5b610409600435602435612d5e565b3415610b3057600080fd5b6103b6600160a060020a0360043516602435612d83565b3415610b5257600080fd5b610409600160a060020a0360043581169060243516612e41565b3415610b7757600080fd5b6102f2600435612e98565b3415610b8d57600080fd5b610409600435602435613146565b3415610ba657600080fd5b610409613156565b3415610bb957600080fd5b6102f261315c565b3415610bcc57600080fd5b6103b6600435602435600160a060020a03604435166064356131ef565b3415610bf457600080fd5b610409613439565b60015460a060020a900460ff1615610c1357600080fd5b600081118015610c24575060048111155b1515610c2f57600080fd5b601d8160058110610c3c57fe5b0154600160a060020a0333166000908152600760205260409020541015610c6257600080fd5b610c79601d8260058110610c7257fe5b015461346b565b600160a060020a0333166000908152601860209081526040808320849055601b9091529020541515610cc157600160a060020a0333166000908152601b602052604090204290555b8033600160a060020a03167f0cc0076665281ff8398c9431c41b09049a4aa58f50f11b4130ef230ed60adc8760405160405180910390a350565b600c8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d915780601f10610d6657610100808354040283529160200191610d91565b820191906000526020600020905b815481529060010190602001808311610d7457829003601f168201915b505050505081565b600160a060020a03331660009081526014602052604081205460ff16151560011415610dc457600080fd5b600160a060020a03338116600081815260136020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b610e3661360e565b60015460a060020a900460ff1615610e4d57600080fd5b6027805483908110610e5b57fe5b9060005260206000209060030201608060405190810160409081528254600160a060020a03808216845260a060020a90910460ff16151560208401526001840154918301919091526002909201546060820152915033168151600160a060020a031614610ec757600080fd5b806020015115610f2457600160a060020a0333166000908152600760205260409081902054610ef891830151613146565b600160a060020a0333166000908152600760209081526040808320939093556019905290812055610f73565b600160a060020a033316600090815260126020526040902054610f4b906060830151613146565b600160a060020a033316600090815260126020908152604080832093909355601a9052908120555b6027805483908110610f8157fe5b600091825260208220600390910201805474ffffffffffffffffffffffffffffffffffffffffff191681556001810182905560020155817f223868bda9e47fa465ee1e1401b3bd23888b9b951308671e785b0e890b728a9660405160405180910390a25050565b60005433600160a060020a0390811691161480611013575060015433600160a060020a039081169116145b151561101e57600080fd5b601c55565b6000805260126020527f7e7fa33969761a458e04f477e039a608702b4f924981d6653935a8319a08ad7b54600e54035b90565b6000611060613635565b6000805433600160a060020a039081169116148061108c575060015433600160a060020a039081169116145b151561109757600080fd5b60a06040519081016040528088600160a060020a031681526020018781526020018681526020014281526020018581525091506001601080548060010182816110e0919061366e565b6000928352602090922085916005020181518154600160a060020a031916600160a060020a03919091161781556020820151816001015560408201518160020155606082015181600301556080820151816004015550500390508587600160a060020a0316827ff2b85b43211ffec4da9402231db708764bd4c87ed2853c3b3e9308ec067ae02a888860405191825260208201526040908101905180910390a49695505050505050565b600160a060020a0383166000908152601260205260408120546111ad90836126fb565b600160a060020a03808616600090815260126020908152604080832094909455601381528382203390931682529190915220546111ea90836126fb565b600160a060020a038086166000908152601360209081526040808320338516845282528083209490945591861681526012909152205461122a9083613146565b600160a060020a03808516600081815260126020526040908190209390935591908616906000805160206137e08339815191529085905190815260200160405180910390a35060019392505050565b60005433600160a060020a03908116911614806112a4575060015433600160a060020a039081169116145b15156112af57600080fd5b600160a060020a038316600090815260076020526040902054829010156112d557600080fd5b600160a060020a039092166000908152600860209081526040808320805460ff19166001179055600a825280832042909501909455600990529190912055565b600154600160a060020a031681565b60015460009060a060020a900460ff161561133e57600080fd5b600160a060020a03331660009081526008602052604090205460ff16151561140f57600160a060020a03331660009081526007602052604090205461138390836126fb565b600160a060020a0333811660009081526007602052604080822093909355908516815220546113b29083613146565b600160a060020a0380851660008181526007602052604090819020939093559133909116907f82de2639fdc3c65a9413c0716d4cbd73c6182095571c159d8cabaee5b16a36319085905190815260200160405180910390a3611520565b600160a060020a033316600090815260096020908152604080832054600790925290912054111561152057600160a060020a03331660009081526007602090815260408083205460099092529091205461146991906126fb565b82111561147557600080fd5b600160a060020a03331660009081526007602052604090205461149890836126fb565b600160a060020a0333811660009081526007602052604080822093909355908516815220546114c79083613146565b600160a060020a0380851660008181526007602052604090819020939093559133909116907f82de2639fdc3c65a9413c0716d4cbd73c6182095571c159d8cabaee5b16a36319085905190815260200160405180910390a35b50600192915050565b60008060008061153761360e565b602780548790811061154557fe5b9060005260206000209060030201608060405190810160409081528254600160a060020a038116835260a060020a900460ff16151560208301526001830154908201526002909101546060820152905080519450806020015193508060400151925080606001519150509193509193565b60005433600160a060020a03908116911614806115e1575060015433600160a060020a039081169116145b15156115ec57600080fd5b600160a060020a0383166000908152601260205260409020548290101561161257600080fd5b600160a060020a039092166000908152601460209081526040808320805460ff191660011790556016825280832042909501909455601590529190912055565b600d5460ff1681565b60065481565b600e5481565b6000805433600160a060020a0390811691161480611693575060015433600160a060020a039081169116145b151561169e57600080fd5b60015460a060020a900460ff1615156116b657600080fd5b6001805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a150600190565b60005433600160a060020a0390811691161480611731575060015433600160a060020a039081169116145b151561173c57600080fd5b600e548190101561174c57600080fd5b600160a060020a03331660009081526012602052604090205461176f90826126fb565b600160a060020a033316600090815260126020526040902055600e5461179590826126fb565b600e5550565b60008060008060006117ab61369f565b6117b3613635565b60118054899081106117c157fe5b906000526020600020906005020160a060405190810160409081528254600160a060020a031682526001830154602083015260028301549082015260038201546060820152600490910154608082015290508051965080602001519550806040015194508060600151935042816080015110611882576118458160800151426126fb565b925060408051908101604052600b81527f506c656173652057616974000000000000000000000000000000000000000000602082015291506118bd565b6000925060408051908101604052601781527f5069636b20557020596f75722053616c617279204e6f77000000000000000000602082015291505b5091939550919395565b60005433600160a060020a039081169116146118e257600080fd5b600160a060020a03811615156118f757600080fd5b600154600160a060020a0380831691167ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec660405160405180910390a360018054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a0390811691161480611980575060015433600160a060020a039081169116145b151561198b57600080fd5b80420160108381548110151561199d57fe5b9060005260206000209060050201600401819055505050565b60008060006119c3613635565b60108054869081106119d157fe5b906000526020600020906005020160a060405190810160409081528254600160a060020a0316825260018301546020830152600283015490820152600382015460608201526004909101546080820152905080519350806020015192504281608001518260600151011115611a5457428160800151826060015101039150611a59565b600091505b509193909250565b60005433600160a060020a0390811691161480611a8c575060015433600160a060020a039081169116145b1515611a9757600080fd5b600160a060020a033316600090815260076020526040902054611aba90826126fb565b600160a060020a033316600090815260076020526040902055600654611ae090826126fb565b60065550565b6000611af061360e565b6000611afa61360e565b60015460009060a060020a900460ff1615611b1457600080fd5b8715611c8957600160a060020a03331660009081526007602052604090205487901015611b4057600080fd5b600160a060020a033316600090815260076020526040902054611b6390886126fb565b600160a060020a03331660009081526007602090815260408083209390935560199052819020889055608090519081016040528033600160a060020a031681526020018915158152602001888152602001878152509350600160278054806001018281611bd091906136b1565b6000928352602090922087916003020181518154600160a060020a031916600160a060020a03919091161781556020820151815490151560a060020a0274ff00000000000000000000000000000000000000001990911617815560408201518160010155606082015181600201555050039250871515837f163fa711b7e61f884dd700360ed0dc2c369376de0c6a1956fce4171ca0a9cef1898960405191825260208201526040908101905180910390a3829450611df4565b600160a060020a03331660009081526012602052604090205486901015611caf57600080fd5b600160a060020a033316600090815260126020526040902054611cd290876126fb565b600160a060020a033316600090815260126020908152604080832093909355601a9052819020879055608090519081016040528033600160a060020a031681526020018915158152602001888152602001878152509150600160278054806001018281611d3f91906136b1565b6000928352602090922085916003020181518154600160a060020a031916600160a060020a03919091161781556020820151815490151560a060020a0274ff00000000000000000000000000000000000000001990911617815560408201518160010155606082015181600201555050039050871515817f163fa711b7e61f884dd700360ed0dc2c369376de0c6a1956fce4171ca0a9cef1898960405191825260208201526040908101905180910390a38094505b505050509392505050565b60015460a060020a900460ff1681565b600054600160a060020a031681565b60005433600160a060020a0390811691161480611e49575060015433600160a060020a039081169116145b1515611e5457600080fd5b600054600160a060020a039081169030163180156108fc0290604051600060405180830381858888f193505050501515611e8d57600080fd5b565b600f5481565b60048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d915780601f10610d6657610100808354040283529160200191610d91565b600160a060020a038116600090815260186020908152604080832054601b90925282205490919042901115611f5957600160a060020a0383166000908152601b6020526040902054611f5290426126fb565b9050611f5d565b5060005b915091565b600160a060020a03166000908152601460209081526040808320546015835281842054601690935292205460ff90921692909142900390565b60005433600160a060020a0390811691161480611fc6575060015433600160a060020a039081169116145b1515611fd157600080fd5b80601083815481101515611fe157fe5b9060005260206000209060050201600101819055505050565b600160a060020a031660009081526012602052604090205490565b60005433600160a060020a0390811691161480612040575060015433600160a060020a039081169116145b151561204b57600080fd5b602382905580602260025b01555050565b61206461369f565b60408051908101604052601681527f416c6578616e646572205468652045786c6f73696f6e000000000000000000006020820152905090565b60015460a060020a900460ff16156120b457600080fd5b600160a060020a033316600090815260186020526040812054116120d757600080fd5b600160a060020a03331660009081526018602052604090205461210890601d906005811061210157fe5b01546134f3565b600160a060020a033316600081815260186020526040808220919091557f16bfdc1e6dc7f481f073edc603659a221eed08e79f1d7e075d30eced1d10cc11905160405180910390a2565b60015460a060020a900460ff161561216957600080fd5b600160a060020a03331660009081526014602052604090205460ff16151560011461219357600080fd5b600160a060020a0333166000908152601660205260409020544290106121b857600080fd5b600160a060020a0333166000908152601460209081526040808320805460ff191690556015909152812055565b60005433600160a060020a0390811691161480612210575060015433600160a060020a039081169116145b151561221b57600080fd5b601e82905580601d6002612056565b600160a060020a03166000908152600860209081526040808320546009835281842054600a90935292205460ff90921692909142900390565b6000805433600160a060020a039081169116148061228f575060015433600160a060020a039081169116145b151561229a57600080fd5b60015460a060020a900460ff16156122b157600080fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a150600190565b6000808233600160a060020a031660118281548110151561232457fe5b6000918252602090912060059091020154600160a060020a03161461234857600080fd5b4260118281548110151561235857fe5b90600052602060002090600502016001015411151561237657600080fd5b4260118281548110151561238657fe5b9060005260206000209060050201600401541015156123a457600080fd5b60015460a060020a900460ff16156123bb57600080fd5b60118054859081106123c957fe5b60009182526020909120600590910201600381015481549193506123f591600160a060020a0316613578565b61240782600401548360020154613146565b6004830181905582546003840154600160a060020a039091169086907fe59c03907eb3e86b26f58d894ce2930fb7654708c75e33e4ae4a8025631ce94d9060405190815260200160405180910390a45060019392505050565b60055460ff1681565b601d816005811061247657fe5b0154905081565b60005433600160a060020a03908116911614806124a8575060015433600160a060020a039081169116145b15156124b357600080fd5b60118054829081106124c157fe5b6000918252602082206005909102018054600160a060020a03191681556001810182905560028101829055600381018290556004015550565b600b8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d915780601f10610d6657610100808354040283529160200191610d91565b60015460009060a060020a900460ff161561257f57600080fd5b50600160a060020a033316600090815260186020908152604080832054601b909252909120544290106125b157600080fd5b600081116125be57600080fd5b6125d6602282600581106125ce57fe5b015433613578565b600160a060020a0333166000908152601b6020526040902054601c546125fc9190613146565b600160a060020a0333166000908152601b60205260409020556022816005811061262257fe5b015433600160a060020a03167ff23a961744a760027f8811c59a0eaef0d29cf965578b17412bcc375b52fa39d160405160405180910390a350565b60005433600160a060020a0390811691161480612688575060015433600160a060020a039081169116145b151561269357600080fd5b600f54819010156126a357600080fd5b6126af600f54826126fb565b600f55600160a060020a0333166000908152601260205260409020546126d59082613146565b600160a060020a033316600090815260126020526040902055600e546117959082613146565b60008282111561270a57600080fd5b50900390565b600080600061271d6136dd565b600086815260176020526040902080548690811061273757fe5b9060005260206000209060030201606060405190810160409081528254600160a060020a0316825260018301546020830152600290920154918101919091529050805193508060200151925080604001519150509250925092565b600160a060020a03331660009081526014602052604081205460ff16151561285157600160a060020a0333166000908152601260205260409020546127d790836126fb565b600160a060020a0333811660009081526012602052604080822093909355908516815220546128069083613146565b600160a060020a0380851660008181526012602052604090819020939093559133909116906000805160206137e08339815191529085905190815260200160405180910390a3611520565b600160a060020a033316600090815260156020908152604080832054601290925290912054111561152057600160a060020a0333166000908152601260209081526040808320546015909252909120546128ab91906126fb565b8211156128b757600080fd5b600160a060020a0333166000908152601260205260409020546128da90836126fb565b600160a060020a0333811660009081526012602052604080822093909355908516815220546129099083613146565b600160a060020a0380851660008181526012602052604090819020939093559133909116906000805160206137e08339815191529085905190815260200160405180910390a350600192915050565b6022816005811061247657fe5b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d915780601f10610d6657610100808354040283529160200191610d91565b60008082116129de57600080fd5b81838115156129e957fe5b049392505050565b60005433600160a060020a0390811691161480612a1c575060015433600160a060020a039081169116145b1515612a2757600080fd5b600160a060020a033316600090815260076020526040902054612a4a9082613146565b600160a060020a033316600090815260076020526040902055600654611ae09082613146565b600160a060020a031660009081526007602052604090205490565b600160a060020a03331660009081526014602052604081205460ff16151560011415612ab657600080fd5b600160a060020a03338116600081815260136020908152604080832094891680845294909152908190208690557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259086905190815260200160405180910390a383600160a060020a0316638f4ffcb1338530866040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612bae578082015183820152602001612b96565b50505050905090810190601f168015612bdb5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1515612bfc57600080fd5b6102c65a03f11515612c0d57600080fd5b5060019695505050505050565b6000612c24613635565b6000805433600160a060020a0390811691161480612c50575060015433600160a060020a039081169116145b1515612c5b57600080fd5b60a06040519081016040528088600160a060020a0316815260200187420181526020018681526020018581526020018642018152509150600160118054806001018281612ca8919061366e565b6000928352602090922085916005020181518154600160a060020a031916600160a060020a039190911617815560208201518160010155604082015181600201556060820151816003015560808201518160040155505003905086600160a060020a0316817fe0a25f374c3ccea9b3852380e0d550961e95fb10b5dd9efb7d390e852786ef7088888860405180848152602001838152602001828152602001935050505060405180910390a39695505050505050565b818102821580612d785750818382811515612d7557fe5b04145b1515610e2857600080fd5b6000805433600160a060020a0390811691161480612daf575060015433600160a060020a039081169116145b1515612dba57600080fd5b60008054600160a060020a038086169263a9059cbb929091169085906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515612e2057600080fd5b6102c65a03f11515612e3157600080fd5b5050506040518051949350505050565b600160a060020a03331660009081526014602052604081205460ff16151560011415612e6c57600080fd5b50600160a060020a03918216600090815260136020908152604080832093909416825291909152205490565b612ea061360e565b60015460a060020a900460ff1615612eb757600080fd5b6027805483908110612ec557fe5b9060005260206000209060030201608060405190810160409081528254600160a060020a038116835260a060020a900460ff1615156020830190815260018401549183019190915260029092015460608201529150511561303357600160a060020a0333166000908152600760205260409081902054612f4791830151613146565b600160a060020a0333166000908152600760205260408120919091556019818351600160a060020a03168152602081019190915260400160002055612f9181518260600151612792565b506027805483908110612fa057fe5b600091825260208220600390910201805474ffffffffffffffffffffffffffffffffffffffffff1916815560018101829055600201558051600160a060020a031633600160a060020a0316837f8e5d31db095940719a41f61a733ac177443e93085309b93626db618db0c9f2718460400151856060015160405191825260208201526040908101905180910390a4613142565b600160a060020a03331660009081526012602052604090205461305a906060830151613146565b600160a060020a033316600090815260126020526040812091909155601a818351600160a060020a031681526020810191909152604001600020556130a481518260400151611324565b5060278054839081106130b357fe5b600091825260208220600390910201805474ffffffffffffffffffffffffffffffffffffffffff1916815560018101829055600201558051600160a060020a031633600160a060020a0316837f8e5d31db095940719a41f61a733ac177443e93085309b93626db618db0c9f2718460400151856060015160405191825260208201526040908101905180910390a45b5050565b81810182811015610e2857600080fd5b601c5481565b60015460a060020a900460ff161561317357600080fd5b600160a060020a03331660009081526008602052604090205460ff16151560011461319d57600080fd5b600160a060020a0333166000908152600a60205260409020544290106131c257600080fd5b600160a060020a0333166000908152600860209081526040808320805460ff191690556009909152812055565b60006131f96136dd565b600086600033600160a060020a031660108381548110151561321757fe5b6000918252602090912060059091020154600160a060020a03161461323b57600080fd5b600060108381548110151561324c57fe5b90600052602060002090600502016001015411151561326a57600080fd5b6132b460108381548110151561327c57fe5b90600052602060002090600502016003015460108481548110151561329d57fe5b906000526020600020906005020160040154613146565b90504281116132c257600080fd5b60015460a060020a900460ff16156132d957600080fd5b601080548a9081106132e757fe5b906000526020600020906005020160020154861115151561330757600080fd5b61333160108a81548110151561331957fe5b906000526020600020906005020160010154876126fb565b601080548b90811061333f57fe5b90600052602060002090600502016001018190555060606040519081016040908152600160a060020a038916825260208083018b905281830189905260008c8152601790915220805491955060019180830161339b83826136fd565b6000928352602090922087916003020181518154600160a060020a031916600160a060020a0391909116178155602082015160018201556040820151816002015550500392506133eb8688613578565b8587600160a060020a0316847fdf6fd8077aa2d207937dd80dc1ddb27e974d3420442c7def38ec089f4364b74e8c60405190815260200160405180910390a450600198975050505050505050565b6000805260076020527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df546006540390565b600160a060020a03331660009081526008602052604090205460ff161561349157600080fd5b600160a060020a033316600090815260076020526040902054819010156134b757600080fd5b600160a060020a0333166000908152600860209081526040808320805460ff19166001179055600a825280832060001990556009909152902055565b600160a060020a03331660009081526008602052604090205460ff16151560011461351d57600080fd5b600160a060020a0333166000908152600a6020908152604080832083905560088252808320805460ff19169055600990915290205461355c90826126fb565b600160a060020a03331660009081526009602052604090205550565b600f548290101561358857600080fd5b613594600f54836126fb565b600f55600e546135a49083613146565b600e55600160a060020a0381166000908152601260205260409020546135ca9083613146565b600160a060020a0382166000818152601260205260408082209390935590916000805160206137e08339815191529085905190815260200160405180910390a35050565b60806040519081016040908152600080835260208301819052908201819052606082015290565b60a0604051908101604052806000600160a060020a03168152602001600081526020016000815260200160008152602001600081525090565b81548183558181151161369a5760050281600502836000526020600020918201910161369a9190613729565b505050565b60206040519081016040526000815290565b81548183558181151161369a5760030281600302836000526020600020918201910161369a919061376d565b606060405190810160409081526000808352602083018190529082015290565b81548183558181151161369a5760030281600302836000526020600020918201910161369a91906137ad565b61105391905b80821115613769578054600160a060020a03191681556000600182018190556002820181905560038201819055600482015560050161372f565b5090565b61105391905b8082111561376957805474ffffffffffffffffffffffffffffffffffffffffff191681556000600182018190556002820155600301613773565b61105391905b80821115613769578054600160a060020a031916815560006001820181905560028201556003016137b35600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a7230582082046e2290510e6518b962bd7c474b806b958e6acba229ebbd5d4255de76eb1a0029

Swarm Source

bzzr://82046e2290510e6518b962bd7c474b806b958e6acba229ebbd5d4255de76eb1a

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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