ETH Price: $3,233.66 (-3.19%)

Contract

0x41082ec88f80D5159bB20aD18D7034522216eB14
 

Overview

ETH Balance

0.0434 ETH

Eth Value

$140.34 (@ $3,233.66/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw Profit111230622020-10-25 3:09:521480 days ago1603595392IN
0x41082ec8...22216eB14
0 ETH0.0006768223
Withdraw Profit108643232020-09-15 3:57:591519 days ago1600142279IN
0x41082ec8...22216eB14
0 ETH0.00420806143
Withdraw Profit106263002020-08-09 14:39:171556 days ago1596983957IN
0x41082ec8...22216eB14
0 ETH0.0025012985
Original Withdra...105722972020-08-01 6:52:251564 days ago1596264745IN
0x41082ec8...22216eB14
0 ETH0.0037198575
Withdraw Profit104362502020-07-11 5:12:081585 days ago1594444328IN
0x41082ec8...22216eB14
0 ETH0.0004943716.8
Withdraw Profit104008342020-07-05 17:48:521591 days ago1593971332IN
0x41082ec8...22216eB14
0 ETH0.000744525.3
Withdraw Profit102819612020-06-17 7:47:561609 days ago1592380076IN
0x41082ec8...22216eB14
0 ETH0.0011770840
Withdraw Profit102232572020-06-08 5:30:091618 days ago1591594209IN
0x41082ec8...22216eB14
0 ETH0.0006473922
Withdraw Profit102119242020-06-06 11:35:081620 days ago1591443308IN
0x41082ec8...22216eB14
0 ETH0.0005885420
Withdraw Profit101782222020-06-01 5:54:371625 days ago1590990877IN
0x41082ec8...22216eB14
0 ETH0.0007386125.10000123
Withdraw Profit101777222020-06-01 3:53:491625 days ago1590983629IN
0x41082ec8...22216eB14
0 ETH0.0005002517
Withdraw Profit101768862020-06-01 0:46:301626 days ago1590972390IN
0x41082ec8...22216eB14
0 ETH0.0005394818.271
Withdraw Profit101766392020-05-31 23:47:291626 days ago1590968849IN
0x41082ec8...22216eB14
0 ETH0.0004606215.6
Original Withdra...101737092020-05-31 12:58:041626 days ago1590929884IN
0x41082ec8...22216eB14
0 ETH0.0018855620
Deposit101736952020-05-31 12:55:541626 days ago1590929754IN
0x41082ec8...22216eB14
1 ETH0.0062814220.00000123
Original Withdra...101736692020-05-31 12:50:291626 days ago1590929429IN
0x41082ec8...22216eB14
0 ETH0.0007079622
Original Withdra...101736532020-05-31 12:46:531626 days ago1590929213IN
0x41082ec8...22216eB14
0 ETH0.0042025722
Deposit101736522020-05-31 12:46:461626 days ago1590929206IN
0x41082ec8...22216eB14
1 ETH0.0065814220
Original Withdra...101734592020-05-31 12:04:581626 days ago1590926698IN
0x41082ec8...22216eB14
0 ETH0.0048547726
Deposit101734522020-05-31 12:03:401626 days ago1590926620IN
0x41082ec8...22216eB14
1 ETH0.007911825
Withdraw Profit101711492020-05-31 3:26:511627 days ago1590895611IN
0x41082ec8...22216eB14
0 ETH0.0007945227
Withdraw Profit101667552020-05-30 11:05:261627 days ago1590836726IN
0x41082ec8...22216eB14
0 ETH0.0008239528
Original Withdra...101665732020-05-30 10:27:161627 days ago1590834436IN
0x41082ec8...22216eB14
0 ETH0.0014879430
Withdraw Profit101650642020-05-30 4:51:071627 days ago1590814267IN
0x41082ec8...22216eB14
0 ETH0.0009122331
Withdraw Profit101650582020-05-30 4:47:581627 days ago1590814078IN
0x41082ec8...22216eB14
0 ETH0.0008828130
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
101768862020-06-01 0:46:301626 days ago1590972390
0x41082ec8...22216eB14
0.16 ETH
101766392020-05-31 23:47:291626 days ago1590968849
0x41082ec8...22216eB14
0.8 ETH
101736952020-05-31 12:55:541626 days ago1590929754
0x41082ec8...22216eB14
0.09 ETH
101736952020-05-31 12:55:541626 days ago1590929754
0x41082ec8...22216eB14
0.01 ETH
101736532020-05-31 12:46:531626 days ago1590929213
0x41082ec8...22216eB14
1.08 ETH
101736522020-05-31 12:46:461626 days ago1590929206
0x41082ec8...22216eB14
0.09 ETH
101736522020-05-31 12:46:461626 days ago1590929206
0x41082ec8...22216eB14
0.01 ETH
101734592020-05-31 12:04:581626 days ago1590926698
0x41082ec8...22216eB14
1.08 ETH
101734522020-05-31 12:03:401626 days ago1590926620
0x41082ec8...22216eB14
0.09 ETH
101734522020-05-31 12:03:401626 days ago1590926620
0x41082ec8...22216eB14
0.01 ETH
101592592020-05-29 7:11:081628 days ago1590736268
0x41082ec8...22216eB14
0.4 ETH
101516922020-05-28 2:55:471630 days ago1590634547
0x41082ec8...22216eB14
54 ETH
101516772020-05-28 2:53:201630 days ago1590634400
0x41082ec8...22216eB14
0.9 ETH
101516772020-05-28 2:53:201630 days ago1590634400
0x41082ec8...22216eB14
0.1 ETH
101503922020-05-27 21:55:051630 days ago1590616505
0x41082ec8...22216eB14
4.5 ETH
101503922020-05-27 21:55:051630 days ago1590616505
0x41082ec8...22216eB14
0.5 ETH
101460802020-05-27 6:00:291630 days ago1590559229
0x41082ec8...22216eB14
4.96 ETH
101460582020-05-27 5:57:431630 days ago1590559063
0x41082ec8...22216eB14
21.6 ETH
101460532020-05-27 5:56:391630 days ago1590558999
0x41082ec8...22216eB14
1.8 ETH
101460532020-05-27 5:56:391630 days ago1590558999
0x41082ec8...22216eB14
0.2 ETH
101460202020-05-27 5:49:511630 days ago1590558591
0x41082ec8...22216eB14
54 ETH
101460172020-05-27 5:49:001630 days ago1590558540
0x41082ec8...22216eB14
4.5 ETH
101460172020-05-27 5:49:001630 days ago1590558540
0x41082ec8...22216eB14
0.5 ETH
101460052020-05-27 5:45:081630 days ago1590558308
0x41082ec8...22216eB14
54 ETH
101460002020-05-27 5:43:381630 days ago1590558218
0x41082ec8...22216eB14
4.5 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FundSmart

Compiler Version
v0.5.12+commit.7709ece9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2020-02-11
*/

pragma solidity ^0.5.0;


contract FundSmart {
    address payable manager;
    address payable dev;
    address payable lead;
    uint256 private TOP_BORDER_LEVEL = 1000 ether;
    
    
    uint256 private MIN_DEPOSIT = 1 ether;
    
    uint256 public DEADLINE = 15;

    modifier onlyOwner() {
        require (msg.sender == owner);
        _;
    }
    
    uint public count = 0;
    
    mapping(address => Invest[]) public invests;
    
    mapping (uint => address) public userCount;
    
    mapping(address => User) public users;
    
    mapping(address => profitBySystem) public profitOfUser;
    
    mapping(address =>  Ancestor[]) public ancestors;
    
    mapping(address => address[]) public children;

    mapping(address => uint) public level;
    

    address public owner;
    // uint countInvest;
    event LogDepositMade(address indexed accountAddress, uint amount);
    
    
    struct Ancestor {
        address payable add;
    }
    
    struct profitBySystem {
        bool exists;
        uint profitRef;
        uint profitReceive;
        uint profitOfRefReceive;
    }
    
    struct Invest {
        bool exists;
        bool requireWithdraw;
        uint lending;
        uint deadline;
        uint timeinvest;
        uint starttime;
    }

    struct User {
        bool exists;
        address payable parent;
        uint256 total;
        uint totalUser;
    }

    event AddNewUser(
        bool exists,
        address parent,
        uint256 total
    );
    
    event Withdraw (
        string msg
    );


    function Balance() public view returns (uint) {
        return address(this).balance;
    }
    
    constructor() public payable {
        owner = msg.sender;
        dev = address(0x537C89a644ED96725237a5f009637f1C43d51676);
        lead = address(0x5634ABd4575A30828ac40e6A60b04f0e0612c60D);
    }
    
    function() external payable {
        payForManager(msg.value);
    }
    
    function setDeadline(uint _deadline) public onlyOwner{
        require(_deadline>=15 && _deadline <=30);
        DEADLINE = _deadline;
    }
    
    function deposit() public payable {
         
        require(msg.value >= MIN_DEPOSIT);
         
        address payable _add = msg.sender;
       
        payForManager(msg.value);
         
        if(users[_add].exists) {
            users[_add].total +=  msg.value;
            users[_add].totalUser += msg.value;
            uint  _deadlines = now + DEADLINE * 1 days;
            profitOfUser[_add].exists = true;
            invests[_add].push(Invest({
                lending : msg.value,
                requireWithdraw: true,
                timeinvest : now,
                starttime : now,
                deadline : _deadlines,
                exists : true
            }));
            if(profitOfUser[users[_add].parent].exists){
                profitOfUser[users[_add].parent].profitRef += msg.value * 8 / 100;   
            }
            
            if(level[_add]==0){
                if(handlerlevelOne(_add)){
                    level[_add] = 1;
                }
            } 
            handlerAncestorTotal(_add,msg.value);

            emit LogDepositMade(_add, msg.value);
        } else {
            
        }
    }
    
    function getProfit(uint _level) private pure returns(uint){
        if(_level == 0){
            return 0;
        }
        
        if(_level == 1){
            return 3;
        }
        
        if(_level ==2){
            return 5;
        }
        
        if(_level==3){
            return 6;
        }
        
        return 0;
    }
    function handlerAncestorTotal(address _add, uint256 _total) private {
        Ancestor[] memory _ancestors = ancestors[_add];
        uint numberAncentors = _ancestors.length;
        if(numberAncentors>0){
            for(uint i=0; i< numberAncentors;i++){
                address addr = _ancestors[numberAncentors-1-i].add;
                updateTotalOfUser(addr,_total);
            }
        }
    }

    function payForManager(uint amount) private  {
        dev.transfer(amount / 100);
        lead.transfer(amount * 9 / 100);
    }


    function addNewUser(string memory _parent) public payable{
        address payable parent;
        
        if (bytes(_parent).length > 0) {
             parent = parseAddr(_parent); 
        } else {
             parent = address(0x0);
        }
        
        if(!users[parent].exists){
            parent = address(0x0);
        }
        address payable _add = msg.sender;
        if(!users[msg.sender].exists && msg.sender != parent){
            count++;
            handlerAncestor(_add, parent);
             
            handlerChildren(_add, parent);

            User memory user = User({
                 exists: true, 
                 parent: parent, 
                 total: 0,
                 totalUser: 0
            });
    
            users[msg.sender] = user;
            userCount[count] = msg.sender;
            emit AddNewUser(true, parent, 0);
        }
    }
    
    
    function handlerAncestor(address payable _add, address payable _parents) private {       
        User storage user = users[_parents];
        if(user.exists) {
            ancestors[_add] = ancestors[_parents];
            ancestors[_add].push(Ancestor({add: _parents}));
        }
    }
    
    function handlerChildren(address _add, address payable _parents) private {
        User storage user = users[_parents];        
          if(user.exists) {
            children[_parents].push(_add);
        }
    }
    
    
    function updateTotalOfUser(address add, uint256 total) private {
        require(total > 0);
        User storage user = users[add];
        if(user.exists) {
            user.total += total;
            if(level[add]==0){
                if(handlerlevelOne(add)){
                    level[add] = 1;
                }
            } else {
                uint _percent = getProfit(level[add]);
                profitOfUser[add].profitRef += total * _percent /100;
                if(handlerLevel(add, level[add])){
                    level[add]++;
                    if(level[add]>=3){
                        level[add] == 3;
                    }
                }
                
            }
        } 
    }
    
    function handlerlevelOne(address _add) private view returns(bool){
        bool result = false;
        address[] memory _children = children[_add];
        if(users[_add].total>= TOP_BORDER_LEVEL && _children.length >=3 && profitOfUser[_add].exists){
            uint _currentChildTotal;
            uint threeMin = 0 ether;
            uint twoMin = 0 ether;
            for(uint i = 0; i< _children.length; i++){
                _currentChildTotal = users[_children[i]].total;
                if(_currentChildTotal >=200 ether && _currentChildTotal < 300 ether){
                   if(twoMin == 0 || _currentChildTotal < twoMin){
                       twoMin = _currentChildTotal;
                   } 
                }
                if(_currentChildTotal >= 300 ether){
                    if(threeMin == 0 || _currentChildTotal < threeMin){
                        threeMin = _currentChildTotal;
                    }
                }
            }
            
            if(threeMin >0 && threeMin > 0){
                if(users[_add].total - threeMin - twoMin >= 500 ether){
                    result = true;
                }
            }
        }
        
        return result;
    }
    
    function handlerLevel(address _add, uint _level) private view returns(bool){
        bool result = false;
         address[] memory _children = children[_add];
        if(users[_add].total>= TOP_BORDER_LEVEL && _children.length >=3){
            uint _subTotal = users[_add].total;
            uint _countLevel;
            for(uint i = 0; i< _children.length; i++){
                if(level[_children[i]] >= _level){
                    _countLevel++;
                    _subTotal = _subTotal - users[_children[i]].total;
                }
            }
            
           if(_countLevel ==2 ){
               if(_subTotal >= 500 ether){
                   result = true;
               }
           }
           
           if(_countLevel >=3){
               result = true;
           }
            
        }
        
        return result;
    }

    function downGradeLevel(address _add) private {
        if(level[_add]==3){
            if(!handlerLevel(_add,2)){
                level[_add] = 2;
            }
        }
        
        if(level[_add] == 2){
            if(!handlerLevel(_add,1)){
                level[_add] = 1;
            }
        }
        
        if(level[_add]==1){
            if(!handlerlevelOne(_add)){
                level[_add] = 0;
            }
        }
    }

    
    function parseAddr(string memory _a) private pure returns (address payable _parsedAddress) {
        bytes memory tmp = bytes(_a);
        uint160 iaddr = 0;
        uint160 b1;
        uint160 b2;
        for (uint i = 2; i < 2 + 2 * 20; i += 2) {
            iaddr *= 256;
            b1 = uint160(uint8(tmp[i]));
            b2 = uint160(uint8(tmp[i + 1]));
            if ((b1 >= 97) && (b1 <= 102)) {
                b1 -= 87;
            } else if ((b1 >= 65) && (b1 <= 70)) {
                b1 -= 55;
            } else if ((b1 >= 48) && (b1 <= 57)) {
                b1 -= 48;
            }
            if ((b2 >= 97) && (b2 <= 102)) {
                b2 -= 87;
            } else if ((b2 >= 65) && (b2 <= 70)) {
                b2 -= 55;
            } else if ((b2 >= 48) && (b2 <= 57)) {
                b2 -= 48;
            }
            iaddr += (b1 * 16 + b2);
        }
        return address(iaddr);
    }
    
    
    function checkWithdraw(uint _index, uint _time, Invest[] storage _invests) private returns (bool) {

        uint i = _index+1;
        bool isCheck = false;
        while(i < _invests.length && !isCheck){
            if(_invests[i].starttime >= _time && _invests[i].requireWithdraw){
                if(_invests[i].lending >= _invests[_index].lending){
                     isCheck = true;
                    _invests[i].requireWithdraw = false;
                }
            }
            
            i +=1;
        }
    
        return isCheck;
    }
    
    
    function userWithdraw(address _add) private returns (uint) {
        Invest[] storage _invest = invests[_add];
        uint total = 0;
        
        for(uint i =0 ; i< _invest.length; i++){
            if(now >= _invest[i].deadline){
                if(_invest[i].exists){
                    if(checkWithdraw(i,_invest[i].deadline,_invest)){
                        total += _invest[i].lending;
                        _invest[i].exists = false;
                        _invest[i].timeinvest = now;
                    } 
                }
                
            }
        }
        
        return total;
    }

    event LogWithdraw(address indexed accountAddress, string msg);
    
    
    function downGradeLevelAncentor(address _add, uint _total) private {
        Ancestor[] memory _ancestors = ancestors[_add];
        for(uint i =0; i <_ancestors.length; i++){
            address _anc = _ancestors[_ancestors.length-1-i].add;
            users[_anc].total -= _total;
            downGradeLevel(_anc);
        }
    }
   
    function originalWithdraw () public payable{
        address payable add = msg.sender;
        if(profitOfUser[add].exists){
            uint _total = userWithdraw(add);
            if(_total > 0){
                uint amount = _total + _total * 8 / 100 ;
                users[add].total -= _total;
                users[add].totalUser -= _total;
                add.transfer(amount);
                downGradeLevel(add);
                downGradeLevelAncentor(add,_total);
                profitOfUser[add].profitReceive += amount;
                emit LogWithdraw(add, "Withdraw Succes");
            } else {
                emit LogWithdraw(add, "You Are Not Eligible To Withdraw");
            }
        } else {
            emit LogWithdraw(add, "You May Invest To Withdraw");
        }
    }
    
    function withdrawProfit() public payable {
        address payable add = msg.sender;
        if(profitOfUser[add].exists){
            // uint _total = profitOfUser[add].profitRef + profitOfUser[add].profitOfRefReceive;
            // if(_total >= users[add].totalUser){
            //     if(users[add].totalUser > profitOfUser[add].profitOfRefReceive){
            //         add.transfer(users[add].totalUser-profitOfUser[add].profitOfRefReceive);
            //         profitOfUser[add].profitRef = _total- users[add].totalUser;
            //         profitOfUser[add].profitOfRefReceive = users[add].totalUser;
            //     }
            // } else {
            add.transfer(profitOfUser[add].profitRef);
            profitOfUser[add].profitOfRefReceive += profitOfUser[add].profitRef;
            profitOfUser[add].profitRef = 0;
            // }
            
            emit LogWithdraw(add, "Withdraw Succes");
        } else {
             emit LogWithdraw(add, "You May Invest To Withdraw ");
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":true,"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"exists","type":"bool"},{"indexed":false,"internalType":"address","name":"parent","type":"address"},{"indexed":false,"internalType":"uint256","name":"total","type":"uint256"}],"name":"AddNewUser","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"accountAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LogDepositMade","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"accountAddress","type":"address"},{"indexed":false,"internalType":"string","name":"msg","type":"string"}],"name":"LogWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"msg","type":"string"}],"name":"Withdraw","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"Balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DEADLINE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"_parent","type":"string"}],"name":"addNewUser","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"ancestors","outputs":[{"internalType":"address payable","name":"add","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"children","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"count","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"invests","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"bool","name":"requireWithdraw","type":"bool"},{"internalType":"uint256","name":"lending","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"timeinvest","type":"uint256"},{"internalType":"uint256","name":"starttime","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"level","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"originalWithdraw","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"profitOfUser","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint256","name":"profitRef","type":"uint256"},{"internalType":"uint256","name":"profitReceive","type":"uint256"},{"internalType":"uint256","name":"profitOfRefReceive","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"setDeadline","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"userCount","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"address payable","name":"parent","type":"address"},{"internalType":"uint256","name":"total","type":"uint256"},{"internalType":"uint256","name":"totalUser","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawProfit","outputs":[],"payable":true,"stateMutability":"payable","type":"function"}]

6080604052683635c9adc5dea00000600355670de0b6b3a7640000600455600f600555600060065533600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073537c89a644ed96725237a5f009637f1c43d51676600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735634abd4575a30828ac40e6a60b04f0e0612c60d600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612f0b806101216000396000f3fe6080604052600436106100f35760003560e01c8063959499b61161008a578063be67092f11610059578063be67092f1461053b578063d0e30db0146105b9578063d41b6db6146105c3578063e4fd35f714610628576100f3565b8063959499b6146103e1578063a082c86e146103eb578063a87430ba14610416578063b3db22ad146104c0576100f3565b80634e94f499116100c65780634e94f4991461022a5780636f989d42146102c55780637d863fed146102cf5780638da5cb5b1461038a576100f3565b806306661abd146100fe578063085a400e146101295780630ef67887146101c4578063195199f6146101ef575b6100fc346106c2565b005b34801561010a57600080fd5b506101136107ae565b6040518082815260200191505060405180910390f35b34801561013557600080fd5b506101826004803603604081101561014c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107b4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101d057600080fd5b506101d9610808565b6040518082815260200191505060405180910390f35b3480156101fb57600080fd5b506102286004803603602081101561021257600080fd5b8101908080359060200190929190505050610827565b005b34801561023657600080fd5b506102836004803603604081101561024d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102cd6108f1565b005b610388600480360360208110156102e557600080fd5b810190808035906020019064010000000081111561030257600080fd5b82018360208201111561031457600080fd5b8035906020019184600183028401116401000000008311171561033657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610c4d565b005b34801561039657600080fd5b5061039f610f57565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103e9610f7d565b005b3480156103f757600080fd5b50610400611241565b6040518082815260200191505060405180910390f35b34801561042257600080fd5b506104656004803603602081101561043957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611247565b60405180851515151581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390f35b3480156104cc57600080fd5b506104f9600480360360208110156104e357600080fd5b81019080803590602001909291905050506112a4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054757600080fd5b5061058a6004803603602081101561055e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112d7565b604051808515151515815260200184815260200183815260200182815260200194505050505060405180910390f35b6105c1611314565b005b3480156105cf57600080fd5b50610612600480360360208110156105e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061180d565b6040518082815260200191505060405180910390f35b34801561063457600080fd5b506106816004803603604081101561064b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611825565b604051808715151515815260200186151515158152602001858152602001848152602001838152602001828152602001965050505050505060405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064838161070857fe5b049081150290604051600060405180830381858888f19350505050158015610734573d6000803e3d6000fd5b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064600984028161077e57fe5b049081150290604051600060405180830381858888f193505050501580156107aa573d6000803e3d6000fd5b5050565b60065481565b600b60205281600052604060002081815481106107cd57fe5b90600052602060002001600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461088157600080fd5b600f81101580156108935750601e8111155b61089c57600080fd5b8060058190555050565b600c60205281600052604060002081815481106108bf57fe5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000339050600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615610bca57600061095682611895565b90506000811115610b445760006064600883028161097057fe5b048201905081600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254039250508190555081600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610a5b573d6000803e3d6000fd5b50610a6583611a06565b610a6f8383611be1565b80600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff167f7b978928a121aa6f108a8b64ab68936e9683ffd3cc5f1e09d36e44856dd5377a60405180806020018281038252600f8152602001807f576974686472617720537563636573000000000000000000000000000000000081525060200191505060405180910390a250610bc4565b8173ffffffffffffffffffffffffffffffffffffffff167f7b978928a121aa6f108a8b64ab68936e9683ffd3cc5f1e09d36e44856dd5377a6040518080602001828103825260208152602001807f596f7520417265204e6f7420456c696769626c6520546f20576974686472617781525060200191505060405180910390a25b50610c4a565b8073ffffffffffffffffffffffffffffffffffffffff167f7b978928a121aa6f108a8b64ab68936e9683ffd3cc5f1e09d36e44856dd5377a60405180806020018281038252601a8152602001807f596f75204d617920496e7665737420546f20576974686472617700000000000081525060200191505060405180910390a25b50565b60008082511115610c6857610c6182611d6a565b9050610c6d565b600090505b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16610cc657600090505b6000339050600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16158015610d5457508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610f5257600660008154809291906001019190505550610d758183611fc3565b610d7f8183612185565b610d87612d97565b60405180608001604052806001151581526020018473ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815250905080600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010155606082015181600201559050503360086000600654815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f226a56ac8447b9517a409ee2e3074a3e38b8d0887cb89de1d23913ef9d483219600184600060405180841515151581526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505b505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000339050600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16156111be578073ffffffffffffffffffffffffffffffffffffffff166108fc600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549081150290604051600060405180830381858888f1935050505015801561105f573d6000803e3d6000fd5b50600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301600082825401925050819055506000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055508073ffffffffffffffffffffffffffffffffffffffff167f7b978928a121aa6f108a8b64ab68936e9683ffd3cc5f1e09d36e44856dd5377a60405180806020018281038252600f8152602001807f576974686472617720537563636573000000000000000000000000000000000081525060200191505060405180910390a261123e565b8073ffffffffffffffffffffffffffffffffffffffff167f7b978928a121aa6f108a8b64ab68936e9683ffd3cc5f1e09d36e44856dd5377a60405180806020018281038252601b8152602001807f596f75204d617920496e7665737420546f20576974686472617720000000000081525060200191505060405180910390a25b50565b60055481565b60096020528060005260406000206000915090508060000160009054906101000a900460ff16908060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905084565b60086020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020154908060030154905084565b60045434101561132357600080fd5b6000339050611331346106c2565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16156118095734600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555034600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002016000828254019250508190555060006201518060055402420190506001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff021916908315150217905550600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060c00160405280600115158152602001600115158152602001348152602001838152602001428152602001428152509080600181540180825580915050906001820390600052602060002090600502016000909192909190915060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff02191690831515021790555060408201518160010155606082015181600201556080820151816003015560a08201518160040155505050600a6000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff161561170e576064600834028161165b57fe5b04600a6000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600082825401925050819055505b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156117ab5761175f82612288565b156117aa576001600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b6117b58234612570565b8173ffffffffffffffffffffffffffffffffffffffff167fa8126f7572bb1fdeae5b5aa9ec126438b91f658a07873f009d041ae690f3a193346040518082815260200191505060405180910390a25061180a565b5b50565b600d6020528060005260406000206000915090505481565b6007602052816000526040600020818154811061183e57fe5b9060005260206000209060050201600091509150508060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060010154908060020154908060030154908060040154905086565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600080905060008090505b82805490508110156119fb578281815481106118fc57fe5b90600052602060002090600502016002015442106119ee5782818154811061192057fe5b906000526020600020906005020160000160009054906101000a900460ff16156119ed5761196c8184838154811061195457fe5b906000526020600020906005020160020154856126b9565b156119ec5782818154811061197d57fe5b9060005260206000209060050201600101548201915060008382815481106119a157fe5b906000526020600020906005020160000160006101000a81548160ff021916908315150217905550428382815481106119d657fe5b9060005260206000209060050201600301819055505b5b5b80806001019150506118e4565b508092505050919050565b6003600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611aa457611a598160026127cb565b611aa3576002600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b6002600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611b4257611af78160016127cb565b611b41576001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611bde57611b9381612288565b611bdd576000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b50565b6060600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015611cc6578382906000526020600020016040518060200160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611c42565b50505050905060008090505b8151811015611d64576000828260018551030381518110611cef57fe5b602002602001015160000151905083600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540392505081905550611d5681611a06565b508080600101915050611cd2565b50505050565b6000606082905060008090506000806000600290505b602a811015611fb65761010084029350848181518110611d9c57fe5b602001015160f81c60f81b60f81c60ff169250846001820181518110611dbe57fe5b602001015160f81c60f81b60f81c60ff16915060618373ffffffffffffffffffffffffffffffffffffffff1610158015611e0f575060668373ffffffffffffffffffffffffffffffffffffffff1611155b15611e1f57605783039250611eb9565b60418373ffffffffffffffffffffffffffffffffffffffff1610158015611e5d575060468373ffffffffffffffffffffffffffffffffffffffff1611155b15611e6d57603783039250611eb8565b60308373ffffffffffffffffffffffffffffffffffffffff1610158015611eab575060398373ffffffffffffffffffffffffffffffffffffffff1611155b15611eb7576030830392505b5b5b60618273ffffffffffffffffffffffffffffffffffffffff1610158015611ef7575060668273ffffffffffffffffffffffffffffffffffffffff1611155b15611f0757605782039150611fa1565b60418273ffffffffffffffffffffffffffffffffffffffff1610158015611f45575060468273ffffffffffffffffffffffffffffffffffffffff1611155b15611f5557603782039150611fa0565b60308273ffffffffffffffffffffffffffffffffffffffff1610158015611f93575060398273ffffffffffffffffffffffffffffffffffffffff1611155b15611f9f576030820391505b5b5b81601084020184019350600281019050611d80565b5082945050505050919050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900460ff161561218057600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209080546120a9929190612dd7565b50600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180602001604052808473ffffffffffffffffffffffffffffffffffffffff1681525090806001815401808255809150509060018203906000526020600020016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505b505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900460ff161561228357600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208390806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b505050565b600080600090506060600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561235057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612306575b50505050509050600354600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154101580156123ad57506003815110155b80156124055750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff165b156125665760008060009050600080905060008090505b84518110156124f0576009600086838151811061243557fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549350680ad78ebc5ac6200000841015801561249e5750681043561a882930000084105b156124bb5760008214806124b157508184105b156124ba578391505b5b681043561a882930000084106124e35760008314806124d957508284105b156124e2578392505b5b808060010191505061241c565b506000821180156125015750600082115b1561256257681b1ae4d6e2ef5000008183600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015403031061256157600194505b5b5050505b8192505050919050565b6060600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015612655578382906000526020600020016040518060200160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050815260200190600101906125d1565b50505050905060008151905060008111156126b35760008090505b818110156126b1576000838260018503038151811061268b57fe5b60200260200101516000015190506126a38186612a51565b508080600101915050612670565b505b50505050565b60008060018501905060008090505b8380549050821080156126d9575080155b156127bf57848483815481106126eb57fe5b90600052602060002090600502016004015410158015612732575083828154811061271257fe5b906000526020600020906005020160000160019054906101000a900460ff165b156127b45783868154811061274357fe5b90600052602060002090600502016001015484838154811061276157fe5b906000526020600020906005020160010154106127b35760019050600084838154811061278a57fe5b906000526020600020906005020160000160016101000a81548160ff0219169083151502179055505b5b6001820191506126c8565b80925050509392505050565b600080600090506060600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561289357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612849575b50505050509050600354600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154101580156128f057506003815110155b15612a46576000600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050600080600090505b8351811015612a165786600d600086848151811061295e57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612a09578180600101925050600960008583815181106129be57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154830392505b8080600101915050612944565b506002811415612a3657681b1ae4d6e2ef5000008210612a3557600193505b5b60038110612a4357600193505b50505b819250505092915050565b60008111612a5e57600080fd5b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900460ff1615612d3f578181600101600082825401925050819055506000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612b6b57612b1b83612288565b15612b66576001600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b612d3e565b6000612bb5600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d44565b9050606481840281612bc357fe5b04600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540192505081905550612c5c84600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127cb565b15612d3c57600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055506003600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612d3b576003600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002050505b5b505b5b505050565b600080821415612d575760009050612d92565b6001821415612d695760039050612d92565b6002821415612d7b5760059050612d92565b6003821415612d8d5760069050612d92565b600090505b919050565b6040518060800160405280600015158152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b828054828255906000526020600020908101928215612e7f5760005260206000209182015b82811115612e7e5782826000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505091600101919060010190612dfc565b5b509050612e8c9190612e90565b5090565b612ed391905b80821115612ecf57600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101612e96565b5090565b9056fea265627a7a72315820a8291c624e3fd5000653df61210c5a32402168e442e9380c800a603932a37fe364736f6c634300050c0032

Deployed Bytecode

0x6080604052600436106100f35760003560e01c8063959499b61161008a578063be67092f11610059578063be67092f1461053b578063d0e30db0146105b9578063d41b6db6146105c3578063e4fd35f714610628576100f3565b8063959499b6146103e1578063a082c86e146103eb578063a87430ba14610416578063b3db22ad146104c0576100f3565b80634e94f499116100c65780634e94f4991461022a5780636f989d42146102c55780637d863fed146102cf5780638da5cb5b1461038a576100f3565b806306661abd146100fe578063085a400e146101295780630ef67887146101c4578063195199f6146101ef575b6100fc346106c2565b005b34801561010a57600080fd5b506101136107ae565b6040518082815260200191505060405180910390f35b34801561013557600080fd5b506101826004803603604081101561014c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107b4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101d057600080fd5b506101d9610808565b6040518082815260200191505060405180910390f35b3480156101fb57600080fd5b506102286004803603602081101561021257600080fd5b8101908080359060200190929190505050610827565b005b34801561023657600080fd5b506102836004803603604081101561024d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102cd6108f1565b005b610388600480360360208110156102e557600080fd5b810190808035906020019064010000000081111561030257600080fd5b82018360208201111561031457600080fd5b8035906020019184600183028401116401000000008311171561033657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610c4d565b005b34801561039657600080fd5b5061039f610f57565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103e9610f7d565b005b3480156103f757600080fd5b50610400611241565b6040518082815260200191505060405180910390f35b34801561042257600080fd5b506104656004803603602081101561043957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611247565b60405180851515151581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390f35b3480156104cc57600080fd5b506104f9600480360360208110156104e357600080fd5b81019080803590602001909291905050506112a4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054757600080fd5b5061058a6004803603602081101561055e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112d7565b604051808515151515815260200184815260200183815260200182815260200194505050505060405180910390f35b6105c1611314565b005b3480156105cf57600080fd5b50610612600480360360208110156105e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061180d565b6040518082815260200191505060405180910390f35b34801561063457600080fd5b506106816004803603604081101561064b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611825565b604051808715151515815260200186151515158152602001858152602001848152602001838152602001828152602001965050505050505060405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064838161070857fe5b049081150290604051600060405180830381858888f19350505050158015610734573d6000803e3d6000fd5b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064600984028161077e57fe5b049081150290604051600060405180830381858888f193505050501580156107aa573d6000803e3d6000fd5b5050565b60065481565b600b60205281600052604060002081815481106107cd57fe5b90600052602060002001600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461088157600080fd5b600f81101580156108935750601e8111155b61089c57600080fd5b8060058190555050565b600c60205281600052604060002081815481106108bf57fe5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000339050600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615610bca57600061095682611895565b90506000811115610b445760006064600883028161097057fe5b048201905081600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254039250508190555081600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610a5b573d6000803e3d6000fd5b50610a6583611a06565b610a6f8383611be1565b80600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff167f7b978928a121aa6f108a8b64ab68936e9683ffd3cc5f1e09d36e44856dd5377a60405180806020018281038252600f8152602001807f576974686472617720537563636573000000000000000000000000000000000081525060200191505060405180910390a250610bc4565b8173ffffffffffffffffffffffffffffffffffffffff167f7b978928a121aa6f108a8b64ab68936e9683ffd3cc5f1e09d36e44856dd5377a6040518080602001828103825260208152602001807f596f7520417265204e6f7420456c696769626c6520546f20576974686472617781525060200191505060405180910390a25b50610c4a565b8073ffffffffffffffffffffffffffffffffffffffff167f7b978928a121aa6f108a8b64ab68936e9683ffd3cc5f1e09d36e44856dd5377a60405180806020018281038252601a8152602001807f596f75204d617920496e7665737420546f20576974686472617700000000000081525060200191505060405180910390a25b50565b60008082511115610c6857610c6182611d6a565b9050610c6d565b600090505b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16610cc657600090505b6000339050600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16158015610d5457508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610f5257600660008154809291906001019190505550610d758183611fc3565b610d7f8183612185565b610d87612d97565b60405180608001604052806001151581526020018473ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815250905080600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010155606082015181600201559050503360086000600654815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f226a56ac8447b9517a409ee2e3074a3e38b8d0887cb89de1d23913ef9d483219600184600060405180841515151581526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505b505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000339050600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16156111be578073ffffffffffffffffffffffffffffffffffffffff166108fc600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549081150290604051600060405180830381858888f1935050505015801561105f573d6000803e3d6000fd5b50600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301600082825401925050819055506000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055508073ffffffffffffffffffffffffffffffffffffffff167f7b978928a121aa6f108a8b64ab68936e9683ffd3cc5f1e09d36e44856dd5377a60405180806020018281038252600f8152602001807f576974686472617720537563636573000000000000000000000000000000000081525060200191505060405180910390a261123e565b8073ffffffffffffffffffffffffffffffffffffffff167f7b978928a121aa6f108a8b64ab68936e9683ffd3cc5f1e09d36e44856dd5377a60405180806020018281038252601b8152602001807f596f75204d617920496e7665737420546f20576974686472617720000000000081525060200191505060405180910390a25b50565b60055481565b60096020528060005260406000206000915090508060000160009054906101000a900460ff16908060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905084565b60086020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020154908060030154905084565b60045434101561132357600080fd5b6000339050611331346106c2565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16156118095734600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555034600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002016000828254019250508190555060006201518060055402420190506001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff021916908315150217905550600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060c00160405280600115158152602001600115158152602001348152602001838152602001428152602001428152509080600181540180825580915050906001820390600052602060002090600502016000909192909190915060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff02191690831515021790555060408201518160010155606082015181600201556080820151816003015560a08201518160040155505050600a6000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff161561170e576064600834028161165b57fe5b04600a6000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600082825401925050819055505b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156117ab5761175f82612288565b156117aa576001600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b6117b58234612570565b8173ffffffffffffffffffffffffffffffffffffffff167fa8126f7572bb1fdeae5b5aa9ec126438b91f658a07873f009d041ae690f3a193346040518082815260200191505060405180910390a25061180a565b5b50565b600d6020528060005260406000206000915090505481565b6007602052816000526040600020818154811061183e57fe5b9060005260206000209060050201600091509150508060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060010154908060020154908060030154908060040154905086565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600080905060008090505b82805490508110156119fb578281815481106118fc57fe5b90600052602060002090600502016002015442106119ee5782818154811061192057fe5b906000526020600020906005020160000160009054906101000a900460ff16156119ed5761196c8184838154811061195457fe5b906000526020600020906005020160020154856126b9565b156119ec5782818154811061197d57fe5b9060005260206000209060050201600101548201915060008382815481106119a157fe5b906000526020600020906005020160000160006101000a81548160ff021916908315150217905550428382815481106119d657fe5b9060005260206000209060050201600301819055505b5b5b80806001019150506118e4565b508092505050919050565b6003600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611aa457611a598160026127cb565b611aa3576002600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b6002600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611b4257611af78160016127cb565b611b41576001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611bde57611b9381612288565b611bdd576000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b50565b6060600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015611cc6578382906000526020600020016040518060200160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611c42565b50505050905060008090505b8151811015611d64576000828260018551030381518110611cef57fe5b602002602001015160000151905083600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540392505081905550611d5681611a06565b508080600101915050611cd2565b50505050565b6000606082905060008090506000806000600290505b602a811015611fb65761010084029350848181518110611d9c57fe5b602001015160f81c60f81b60f81c60ff169250846001820181518110611dbe57fe5b602001015160f81c60f81b60f81c60ff16915060618373ffffffffffffffffffffffffffffffffffffffff1610158015611e0f575060668373ffffffffffffffffffffffffffffffffffffffff1611155b15611e1f57605783039250611eb9565b60418373ffffffffffffffffffffffffffffffffffffffff1610158015611e5d575060468373ffffffffffffffffffffffffffffffffffffffff1611155b15611e6d57603783039250611eb8565b60308373ffffffffffffffffffffffffffffffffffffffff1610158015611eab575060398373ffffffffffffffffffffffffffffffffffffffff1611155b15611eb7576030830392505b5b5b60618273ffffffffffffffffffffffffffffffffffffffff1610158015611ef7575060668273ffffffffffffffffffffffffffffffffffffffff1611155b15611f0757605782039150611fa1565b60418273ffffffffffffffffffffffffffffffffffffffff1610158015611f45575060468273ffffffffffffffffffffffffffffffffffffffff1611155b15611f5557603782039150611fa0565b60308273ffffffffffffffffffffffffffffffffffffffff1610158015611f93575060398273ffffffffffffffffffffffffffffffffffffffff1611155b15611f9f576030820391505b5b5b81601084020184019350600281019050611d80565b5082945050505050919050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900460ff161561218057600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209080546120a9929190612dd7565b50600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180602001604052808473ffffffffffffffffffffffffffffffffffffffff1681525090806001815401808255809150509060018203906000526020600020016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505b505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900460ff161561228357600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208390806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b505050565b600080600090506060600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561235057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612306575b50505050509050600354600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154101580156123ad57506003815110155b80156124055750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff165b156125665760008060009050600080905060008090505b84518110156124f0576009600086838151811061243557fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549350680ad78ebc5ac6200000841015801561249e5750681043561a882930000084105b156124bb5760008214806124b157508184105b156124ba578391505b5b681043561a882930000084106124e35760008314806124d957508284105b156124e2578392505b5b808060010191505061241c565b506000821180156125015750600082115b1561256257681b1ae4d6e2ef5000008183600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015403031061256157600194505b5b5050505b8192505050919050565b6060600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015612655578382906000526020600020016040518060200160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050815260200190600101906125d1565b50505050905060008151905060008111156126b35760008090505b818110156126b1576000838260018503038151811061268b57fe5b60200260200101516000015190506126a38186612a51565b508080600101915050612670565b505b50505050565b60008060018501905060008090505b8380549050821080156126d9575080155b156127bf57848483815481106126eb57fe5b90600052602060002090600502016004015410158015612732575083828154811061271257fe5b906000526020600020906005020160000160019054906101000a900460ff165b156127b45783868154811061274357fe5b90600052602060002090600502016001015484838154811061276157fe5b906000526020600020906005020160010154106127b35760019050600084838154811061278a57fe5b906000526020600020906005020160000160016101000a81548160ff0219169083151502179055505b5b6001820191506126c8565b80925050509392505050565b600080600090506060600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561289357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612849575b50505050509050600354600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154101580156128f057506003815110155b15612a46576000600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050600080600090505b8351811015612a165786600d600086848151811061295e57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612a09578180600101925050600960008583815181106129be57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154830392505b8080600101915050612944565b506002811415612a3657681b1ae4d6e2ef5000008210612a3557600193505b5b60038110612a4357600193505b50505b819250505092915050565b60008111612a5e57600080fd5b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900460ff1615612d3f578181600101600082825401925050819055506000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612b6b57612b1b83612288565b15612b66576001600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b612d3e565b6000612bb5600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d44565b9050606481840281612bc357fe5b04600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540192505081905550612c5c84600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127cb565b15612d3c57600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055506003600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612d3b576003600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002050505b5b505b5b505050565b600080821415612d575760009050612d92565b6001821415612d695760039050612d92565b6002821415612d7b5760059050612d92565b6003821415612d8d5760069050612d92565b600090505b919050565b6040518060800160405280600015158152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b828054828255906000526020600020908101928215612e7f5760005260206000209182015b82811115612e7e5782826000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505091600101919060010190612dfc565b5b509050612e8c9190612e90565b5090565b612ed391905b80821115612ecf57600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101612e96565b5090565b9056fea265627a7a72315820a8291c624e3fd5000653df61210c5a32402168e442e9380c800a603932a37fe364736f6c634300050c0032

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  ]
[ 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.