ETH Price: $3,237.73 (-2.82%)

Contract

0xeF07beB03e66533b4862f62a280995Bb84CBAF13
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Registration Ext112705342020-11-16 18:32:461525 days ago1605551566IN
0xeF07beB0...b84CBAF13
0.1 ETH0.0193166743
Registration Ext112697492020-11-16 15:43:281525 days ago1605541408IN
0xeF07beB0...b84CBAF13
0.1 ETH0.0289394866
Registration Ext112686172020-11-16 11:32:551525 days ago1605526375IN
0xeF07beB0...b84CBAF13
0.1 ETH0.0114155728.00000145
Registration Ext110615212020-10-15 16:38:461557 days ago1602779926IN
0xeF07beB0...b84CBAF13
0.1 ETH0.021692550
Registration Ext110607472020-10-15 13:50:051557 days ago1602769805IN
0xeF07beB0...b84CBAF13
0.1 ETH0.0224042153
Buy New Level110555962020-10-14 18:57:291558 days ago1602701849IN
0xeF07beB0...b84CBAF13
0.1 ETH0.00477734.00000145
Buy New Level110555462020-10-14 18:46:561558 days ago1602701216IN
0xeF07beB0...b84CBAF13
0.1 ETH0.007165551.00000145
Registration Ext110493792020-10-13 20:06:071559 days ago1602619567IN
0xeF07beB0...b84CBAF13
0.1 ETH0.0112804126
Registration Ext110240992020-10-09 23:07:031563 days ago1602284823IN
0xeF07beB0...b84CBAF13
0.1 ETH0.0153158730
Registration Ext110087682020-10-07 13:07:371565 days ago1602076057IN
0xeF07beB0...b84CBAF13
0.1 ETH0.0227614952.00000145
Registration Ext110084262020-10-07 11:53:531565 days ago1602071633IN
0xeF07beB0...b84CBAF13
0.1 ETH0.0227614952.00000145
Buy New Level109990382020-10-06 0:43:021567 days ago1601944982IN
0xeF07beB0...b84CBAF13
0.1 ETH0.012818880
Registration Ext109989432020-10-06 0:19:361567 days ago1601943576IN
0xeF07beB0...b84CBAF13
0.1 ETH0.031124477
Buy New Level109982972020-10-05 21:51:301567 days ago1601934690IN
0xeF07beB0...b84CBAF13
0.2 ETH0.00833240
Buy New Level109978302020-10-05 20:14:411567 days ago1601928881IN
0xeF07beB0...b84CBAF13
0.1 ETH0.007310448
Registration Ext109977332020-10-05 19:50:371567 days ago1601927437IN
0xeF07beB0...b84CBAF13
0.1 ETH0.0215218453.24
Registration Ext109969682020-10-05 17:02:041567 days ago1601917324IN
0xeF07beB0...b84CBAF13
0.07143897 ETH0.0019279882
Registration Ext109969472020-10-05 16:56:311567 days ago1601916991IN
0xeF07beB0...b84CBAF13
0.06795112 ETH0.0021395991
Registration Ext109949932020-10-05 9:44:081567 days ago1601891048IN
0xeF07beB0...b84CBAF13
0.1 ETH0.0202145845
Buy New Level109864332020-10-04 1:31:211569 days ago1601775081IN
0xeF07beB0...b84CBAF13
0.1 ETH0.0063214547
Registration Ext109860082020-10-03 23:54:241569 days ago1601769264IN
0xeF07beB0...b84CBAF13
0.1 ETH0.0146188434.00000145
Buy New Level109640342020-09-30 13:30:501572 days ago1601472650IN
0xeF07beB0...b84CBAF13
0.1 ETH0.02198839107.00000145
Registration Ext109558272020-09-29 6:38:581573 days ago1601361538IN
0xeF07beB0...b84CBAF13
0.1 ETH0.04340104101.99675114
Buy New Level109523902020-09-28 17:51:121574 days ago1601315472IN
0xeF07beB0...b84CBAF13
0.2 ETH0.0148589278
Buy New Level109523652020-09-28 17:44:221574 days ago1601315062IN
0xeF07beB0...b84CBAF13
0.2 ETH0.0125474671.5
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
112705342020-11-16 18:32:461525 days ago1605551566
0xeF07beB0...b84CBAF13
0.05 ETH
112705342020-11-16 18:32:461525 days ago1605551566
0xeF07beB0...b84CBAF13
0.05 ETH
112697492020-11-16 15:43:281525 days ago1605541408
0xeF07beB0...b84CBAF13
0.05 ETH
112697492020-11-16 15:43:281525 days ago1605541408
0xeF07beB0...b84CBAF13
0.05 ETH
112686172020-11-16 11:32:551525 days ago1605526375
0xeF07beB0...b84CBAF13
0.05 ETH
112686172020-11-16 11:32:551525 days ago1605526375
0xeF07beB0...b84CBAF13
0.05 ETH
110615212020-10-15 16:38:461557 days ago1602779926
0xeF07beB0...b84CBAF13
0.05 ETH
110615212020-10-15 16:38:461557 days ago1602779926
0xeF07beB0...b84CBAF13
0.05 ETH
110607472020-10-15 13:50:051557 days ago1602769805
0xeF07beB0...b84CBAF13
0.05 ETH
110607472020-10-15 13:50:051557 days ago1602769805
0xeF07beB0...b84CBAF13
0.05 ETH
110555962020-10-14 18:57:291558 days ago1602701849
0xeF07beB0...b84CBAF13
0.1 ETH
110555462020-10-14 18:46:561558 days ago1602701216
0xeF07beB0...b84CBAF13
0.1 ETH
110493792020-10-13 20:06:071559 days ago1602619567
0xeF07beB0...b84CBAF13
0.05 ETH
110493792020-10-13 20:06:071559 days ago1602619567
0xeF07beB0...b84CBAF13
0.05 ETH
110240992020-10-09 23:07:031563 days ago1602284823
0xeF07beB0...b84CBAF13
0.05 ETH
110240992020-10-09 23:07:031563 days ago1602284823
0xeF07beB0...b84CBAF13
0.05 ETH
110087682020-10-07 13:07:371565 days ago1602076057
0xeF07beB0...b84CBAF13
0.05 ETH
110087682020-10-07 13:07:371565 days ago1602076057
0xeF07beB0...b84CBAF13
0.05 ETH
110084262020-10-07 11:53:531565 days ago1602071633
0xeF07beB0...b84CBAF13
0.05 ETH
110084262020-10-07 11:53:531565 days ago1602071633
0xeF07beB0...b84CBAF13
0.05 ETH
109990382020-10-06 0:43:021567 days ago1601944982
0xeF07beB0...b84CBAF13
0.1 ETH
109989432020-10-06 0:19:361567 days ago1601943576
0xeF07beB0...b84CBAF13
0.05 ETH
109989432020-10-06 0:19:361567 days ago1601943576
0xeF07beB0...b84CBAF13
0.05 ETH
109982972020-10-05 21:51:301567 days ago1601934690
0xeF07beB0...b84CBAF13
0.2 ETH
109978302020-10-05 20:14:411567 days ago1601928881
0xeF07beB0...b84CBAF13
0.1 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
WealthExchangeNetwork

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2020-07-29
*/

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

/**
*


██╗    ██╗███████╗ █████╗ ██╗  ████████╗██╗  ██╗██╗  ██╗
██║    ██║██╔════╝██╔══██╗██║  ╚══██╔══╝██║  ██║╚██╗██╔╝
██║ █╗ ██║█████╗  ███████║██║     ██║   ███████║ ╚███╔╝ 
██║███╗██║██╔══╝  ██╔══██║██║     ██║   ██╔══██║ ██╔██╗ 
╚███╔███╔╝███████╗██║  ██║███████╗██║   ██║  ██║██╔╝ ██╗
 ╚══╝╚══╝ ╚══════╝╚═╝  ╚═╝╚══════╝╚═╝   ╚═╝  ╚═╝╚═╝  ╚═╝
                                                        

     
*
* 
* 
* http://wealthx.network/
* (only for WealthX members)
* 
**/


pragma solidity >=0.4.23 <0.6.0;


interface tokenInterface
{
    function transfer(address _to, uint256 _amount) external returns (bool);
}




contract WealthExchangeNetwork {
    
    struct User {
        uint id;
        address referrer;
        uint partnersCount;
        
        mapping(uint8 => bool) activeX3Levels;
        mapping(uint8 => bool) activeX6Levels;
        
        mapping(uint8 => X3) x3Matrix;
        mapping(uint8 => X6) x6Matrix;
    }
    
    struct X3 {
        address currentReferrer;
        address[] referrals;
        bool blocked;
        uint reinvestCount;
    }
    
    struct X6 {
        address currentReferrer;
        address[] firstLevelReferrals;
        address[] secondLevelReferrals;
        bool blocked;
        uint reinvestCount;

        address closedPart;
    }

    uint8 public constant LAST_LEVEL = 12;
    
    mapping(address => User) public users;
    mapping(uint => address) public idToAddress;
    mapping(uint => address) public userIds;
    mapping(address => uint) public balances; 

    uint public lastUserId = 2;
    address public owner;
    uint256 public contractDeployTime;
    
    mapping(uint8 => uint) public levelPrice;

    uint public tokenReward = 1000 * (10 ** 18);
    address public tokenAddress = 0xfA68bfE953efA64b021719bF617aFB5AE73C0d98;
    
    event Registration(address indexed user, address indexed referrer, uint indexed userId, uint referrerId, uint amount);
    event Reinvest(address indexed user, address indexed currentReferrer, address indexed caller, uint8 matrix, uint8 level);
    event Upgrade(address indexed user, address indexed referrer, uint8 matrix, uint8 level, uint amount);
    event NewUserPlace(address indexed user, address indexed referrer, uint8 matrix, uint8 level, uint8 place);
    event MissedEthReceive(address indexed receiver, address indexed from, uint8 matrix, uint8 level);
    event SentExtraEthDividends(address indexed from, address indexed receiver, uint8 matrix, uint8 level);
    
    
    constructor() public {

        contractDeployTime = now;
        levelPrice[1] = 0.05 ether;
        for (uint8 i = 2; i <= LAST_LEVEL; i++) {
            levelPrice[i] = levelPrice[i-1] * 2;
        }
        
        owner = msg.sender;
        
        User memory user = User({
            id: 1,
            referrer: address(0),
            partnersCount: uint(0)
        });
        
        users[owner] = user;
        idToAddress[1] = owner;
        
        for (uint8 i = 1; i <= LAST_LEVEL; i++) {
            users[owner].activeX3Levels[i] = true;
            users[owner].activeX6Levels[i] = true;
        }
        
        userIds[1] = owner;
    }
    
    function() external payable {
        if(msg.data.length == 0) {
            return registration(msg.sender, owner);
        }
        
        registration(msg.sender, bytesToAddress(msg.data));
    }

    function registrationExt(address referrerAddress) external payable returns(string memory) {
        registration(msg.sender, referrerAddress);
        return "registration successful";
    }
    
    function registrationCreator(address userAddress, address referrerAddress) external returns(string memory) {
        require(msg.sender==owner, 'Invalid Donor');
        require(contractDeployTime+86400 > now, 'This function is only available for first 24 hours' );
        registration(userAddress, referrerAddress);
        return "registration successful";
    }
    
    function buyLevelCreator(address userAddress, uint8 matrix, uint8 level) external returns(string memory) {
        require(msg.sender==owner, 'Invalid Donor');
        require(contractDeployTime+86400 > now, 'This function is only available for first 24 hours' );
        buyNewLevelInternal(userAddress, matrix, level);
        return "Level bought successfully";
    }
    
    function buyNewLevel(uint8 matrix, uint8 level) external payable returns(string memory) {
        buyNewLevelInternal(msg.sender, matrix, level);
        return "Level bought successfully";
    }
    
  
    function buyNewLevelInternal(address user, uint8 matrix, uint8 level) private {
        require(isUserExists(user), "user is not exists. Register first.");
        require(matrix == 1 || matrix == 2, "invalid matrix");
        if(!(msg.sender==owner)) require(msg.value == levelPrice[level], "invalid price");
        require(level > 1 && level <= LAST_LEVEL, "invalid level");

        require(tokenInterface(tokenAddress).transfer(user, tokenReward), "token sending fail" );

        if (matrix == 1) {
            require(!users[user].activeX3Levels[level], "level already activated");

            if (users[user].x3Matrix[level-1].blocked) {
                users[user].x3Matrix[level-1].blocked = false;
            }
    
            address freeX3Referrer = findFreeX3Referrer(user, level);
            users[user].x3Matrix[level].currentReferrer = freeX3Referrer;
            users[user].activeX3Levels[level] = true;
            updateX3Referrer(user, freeX3Referrer, level);
            
            emit Upgrade(user, freeX3Referrer, 1, level, msg.value);

        } else {
            require(!users[user].activeX6Levels[level], "level already activated"); 

            if (users[user].x6Matrix[level-1].blocked) {
                users[user].x6Matrix[level-1].blocked = false;
            }

            address freeX6Referrer = findFreeX6Referrer(user, level);
            
            users[user].activeX6Levels[level] = true;
            updateX6Referrer(user, freeX6Referrer, level);
            
            emit Upgrade(user, freeX6Referrer, 2, level, msg.value);
        }
    }    
    
    function registration(address userAddress, address referrerAddress) private {
        if(!(msg.sender==owner)) require(msg.value == (levelPrice[1]*2), "Invalid registration amount");       
        require(!isUserExists(userAddress), "user exists");
        require(isUserExists(referrerAddress), "referrer not exists");

        require(tokenInterface(tokenAddress).transfer(msg.sender, tokenReward), "token sending fail" );

        uint32 size;
        assembly {
            size := extcodesize(userAddress)
        }
        require(size == 0, "cannot be a contract");
        
		lastUserId++;
		
        User memory user = User({
            id: lastUserId,
            referrer: referrerAddress,
            partnersCount: 0
        });
        
        users[userAddress] = user;
        idToAddress[lastUserId] = userAddress;
        
        users[userAddress].referrer = referrerAddress;
        
        users[userAddress].activeX3Levels[1] = true; 
        users[userAddress].activeX6Levels[1] = true;
        
        
        userIds[lastUserId] = userAddress;
        
        
        users[referrerAddress].partnersCount++;

        address freeX3Referrer = findFreeX3Referrer(userAddress, 1);
        users[userAddress].x3Matrix[1].currentReferrer = freeX3Referrer;
        updateX3Referrer(userAddress, freeX3Referrer, 1);

        updateX6Referrer(userAddress, findFreeX6Referrer(userAddress, 1), 1);
        
        emit Registration(userAddress, referrerAddress, users[userAddress].id, users[referrerAddress].id, msg.value);
    }
    function updateX3Referrer(address userAddress, address referrerAddress, uint8 level) private {
        users[referrerAddress].x3Matrix[level].referrals.push(userAddress);

        if (users[referrerAddress].x3Matrix[level].referrals.length < 3) {
            emit NewUserPlace(userAddress, referrerAddress, 1, level, uint8(users[referrerAddress].x3Matrix[level].referrals.length));
            return sendETHDividends(referrerAddress, userAddress, 1, level);
        }
        
        emit NewUserPlace(userAddress, referrerAddress, 1, level, 3);
        //close matrix
        users[referrerAddress].x3Matrix[level].referrals = new address[](0);
        if (!users[referrerAddress].activeX3Levels[level+1] && level != LAST_LEVEL) {
            users[referrerAddress].x3Matrix[level].blocked = true;
        }

        //create new one by recursion
        if (referrerAddress != owner) {
            //check referrer active level
            address freeReferrerAddress = findFreeX3Referrer(referrerAddress, level);
            if (users[referrerAddress].x3Matrix[level].currentReferrer != freeReferrerAddress) {
                users[referrerAddress].x3Matrix[level].currentReferrer = freeReferrerAddress;
            }
            
            users[referrerAddress].x3Matrix[level].reinvestCount++;
            emit Reinvest(referrerAddress, freeReferrerAddress, userAddress, 1, level);
            updateX3Referrer(referrerAddress, freeReferrerAddress, level);
        } else {
            sendETHDividends(owner, userAddress, 1, level);
            users[owner].x3Matrix[level].reinvestCount++;
            emit Reinvest(owner, address(0), userAddress, 1, level);
        }
    }

    function updateX6Referrer(address userAddress, address referrerAddress, uint8 level) private {
        require(users[referrerAddress].activeX6Levels[level], "500. Referrer level is inactive");
        
        if (users[referrerAddress].x6Matrix[level].firstLevelReferrals.length < 2) {
            users[referrerAddress].x6Matrix[level].firstLevelReferrals.push(userAddress);
            emit NewUserPlace(userAddress, referrerAddress, 2, level, uint8(users[referrerAddress].x6Matrix[level].firstLevelReferrals.length));
            
            //set current level
            users[userAddress].x6Matrix[level].currentReferrer = referrerAddress;

            if (referrerAddress == owner) {
                return sendETHDividends(referrerAddress, userAddress, 2, level);
            }
            
            address ref = users[referrerAddress].x6Matrix[level].currentReferrer;            
            users[ref].x6Matrix[level].secondLevelReferrals.push(userAddress); 
            
            uint len = users[ref].x6Matrix[level].firstLevelReferrals.length;
            
            if ((len == 2) && 
                (users[ref].x6Matrix[level].firstLevelReferrals[0] == referrerAddress) &&
                (users[ref].x6Matrix[level].firstLevelReferrals[1] == referrerAddress)) {
                if (users[referrerAddress].x6Matrix[level].firstLevelReferrals.length == 1) {
                    emit NewUserPlace(userAddress, ref, 2, level, 5);
                } else {
                    emit NewUserPlace(userAddress, ref, 2, level, 6);
                }
            }  else if ((len == 1 || len == 2) &&
                    users[ref].x6Matrix[level].firstLevelReferrals[0] == referrerAddress) {
                if (users[referrerAddress].x6Matrix[level].firstLevelReferrals.length == 1) {
                    emit NewUserPlace(userAddress, ref, 2, level, 3);
                } else {
                    emit NewUserPlace(userAddress, ref, 2, level, 4);
                }
            } else if (len == 2 && users[ref].x6Matrix[level].firstLevelReferrals[1] == referrerAddress) {
                if (users[referrerAddress].x6Matrix[level].firstLevelReferrals.length == 1) {
                    emit NewUserPlace(userAddress, ref, 2, level, 5);
                } else {
                    emit NewUserPlace(userAddress, ref, 2, level, 6);
                }
            }

            return updateX6ReferrerSecondLevel(userAddress, ref, level);
        }
        
        users[referrerAddress].x6Matrix[level].secondLevelReferrals.push(userAddress);

        if (users[referrerAddress].x6Matrix[level].closedPart != address(0)) {
            if ((users[referrerAddress].x6Matrix[level].firstLevelReferrals[0] == 
                users[referrerAddress].x6Matrix[level].firstLevelReferrals[1]) &&
                (users[referrerAddress].x6Matrix[level].firstLevelReferrals[0] ==
                users[referrerAddress].x6Matrix[level].closedPart)) {

                updateX6(userAddress, referrerAddress, level, true);
                return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
            } else if (users[referrerAddress].x6Matrix[level].firstLevelReferrals[0] == 
                users[referrerAddress].x6Matrix[level].closedPart) {
                updateX6(userAddress, referrerAddress, level, true);
                return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
            } else {
                updateX6(userAddress, referrerAddress, level, false);
                return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
            }
        }

        if (users[referrerAddress].x6Matrix[level].firstLevelReferrals[1] == userAddress) {
            updateX6(userAddress, referrerAddress, level, false);
            return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
        } else if (users[referrerAddress].x6Matrix[level].firstLevelReferrals[0] == userAddress) {
            updateX6(userAddress, referrerAddress, level, true);
            return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
        }
        
        if (users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[0]].x6Matrix[level].firstLevelReferrals.length <= 
            users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[1]].x6Matrix[level].firstLevelReferrals.length) {
            updateX6(userAddress, referrerAddress, level, false);
        } else {
            updateX6(userAddress, referrerAddress, level, true);
        }
        
        updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
    }

    function updateX6(address userAddress, address referrerAddress, uint8 level, bool x2) private {
        if (!x2) {
            users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[0]].x6Matrix[level].firstLevelReferrals.push(userAddress);
            emit NewUserPlace(userAddress, users[referrerAddress].x6Matrix[level].firstLevelReferrals[0], 2, level, uint8(users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[0]].x6Matrix[level].firstLevelReferrals.length));
            emit NewUserPlace(userAddress, referrerAddress, 2, level, 2 + uint8(users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[0]].x6Matrix[level].firstLevelReferrals.length));
            //set current level
            users[userAddress].x6Matrix[level].currentReferrer = users[referrerAddress].x6Matrix[level].firstLevelReferrals[0];
        } else {
            users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[1]].x6Matrix[level].firstLevelReferrals.push(userAddress);
            emit NewUserPlace(userAddress, users[referrerAddress].x6Matrix[level].firstLevelReferrals[1], 2, level, uint8(users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[1]].x6Matrix[level].firstLevelReferrals.length));
            emit NewUserPlace(userAddress, referrerAddress, 2, level, 4 + uint8(users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[1]].x6Matrix[level].firstLevelReferrals.length));
            //set current level
            users[userAddress].x6Matrix[level].currentReferrer = users[referrerAddress].x6Matrix[level].firstLevelReferrals[1];
        }
    }
    
    function updateX6ReferrerSecondLevel(address userAddress, address referrerAddress, uint8 level) private {
        if (users[referrerAddress].x6Matrix[level].secondLevelReferrals.length < 4) {
            return sendETHDividends(referrerAddress, userAddress, 2, level);
        }
        
        address[] memory x6 = users[users[referrerAddress].x6Matrix[level].currentReferrer].x6Matrix[level].firstLevelReferrals;
        
        if (x6.length == 2) {
            if (x6[0] == referrerAddress ||
                x6[1] == referrerAddress) {
                users[users[referrerAddress].x6Matrix[level].currentReferrer].x6Matrix[level].closedPart = referrerAddress;
            } else if (x6.length == 1) {
                if (x6[0] == referrerAddress) {
                    users[users[referrerAddress].x6Matrix[level].currentReferrer].x6Matrix[level].closedPart = referrerAddress;
                }
            }
        }
        
        users[referrerAddress].x6Matrix[level].firstLevelReferrals = new address[](0);
        users[referrerAddress].x6Matrix[level].secondLevelReferrals = new address[](0);
        users[referrerAddress].x6Matrix[level].closedPart = address(0);

        if (!users[referrerAddress].activeX6Levels[level+1] && level != LAST_LEVEL) {
            users[referrerAddress].x6Matrix[level].blocked = true;
        }

        users[referrerAddress].x6Matrix[level].reinvestCount++;
        
        if (referrerAddress != owner) {
            address freeReferrerAddress = findFreeX6Referrer(referrerAddress, level);

            emit Reinvest(referrerAddress, freeReferrerAddress, userAddress, 2, level);
            updateX6Referrer(referrerAddress, freeReferrerAddress, level);
        } else {
            emit Reinvest(owner, address(0), userAddress, 2, level);
            sendETHDividends(owner, userAddress, 2, level);
        }
    }
    
    function findFreeX3Referrer(address userAddress, uint8 level) public view returns(address) {
        while (true) {
            if (users[users[userAddress].referrer].activeX3Levels[level]) {
                return users[userAddress].referrer;
            }
            
            userAddress = users[userAddress].referrer;
        }
    }
    
    function findFreeX6Referrer(address userAddress, uint8 level) public view returns(address) {
        while (true) {
            if (users[users[userAddress].referrer].activeX6Levels[level]) {
                return users[userAddress].referrer;
            }
            
            userAddress = users[userAddress].referrer;
        }
    }
        
    function usersActiveX3Levels(address userAddress, uint8 level) public view returns(bool) {
        return users[userAddress].activeX3Levels[level];
    }

    function usersActiveX6Levels(address userAddress, uint8 level) public view returns(bool) {
        return users[userAddress].activeX6Levels[level];
    }

    function usersX3Matrix(address userAddress, uint8 level) public view returns(address, address[] memory, bool) {
        return (users[userAddress].x3Matrix[level].currentReferrer,
                users[userAddress].x3Matrix[level].referrals,
                users[userAddress].x3Matrix[level].blocked);
    }

    function usersX6Matrix(address userAddress, uint8 level) public view returns(address, address[] memory, address[] memory, bool, address) {
        return (users[userAddress].x6Matrix[level].currentReferrer,
                users[userAddress].x6Matrix[level].firstLevelReferrals,
                users[userAddress].x6Matrix[level].secondLevelReferrals,
                users[userAddress].x6Matrix[level].blocked,
                users[userAddress].x6Matrix[level].closedPart);
    }
    
    function isUserExists(address user) public view returns (bool) {
        return (users[user].id != 0);
    }

    function findEthReceiver(address userAddress, address _from, uint8 matrix, uint8 level) private returns(address, bool) {
        address receiver = userAddress;
        bool isExtraDividends;
        if (matrix == 1) {
            while (true) {
                if (users[receiver].x3Matrix[level].blocked) {
                    emit MissedEthReceive(receiver, _from, 1, level);
                    isExtraDividends = true;
                    receiver = users[receiver].x3Matrix[level].currentReferrer;
                } else {
                    return (receiver, isExtraDividends);
                }
            }
        } else {
            while (true) {
                if (users[receiver].x6Matrix[level].blocked) {
                    emit MissedEthReceive(receiver, _from, 2, level);
                    isExtraDividends = true;
                    receiver = users[receiver].x6Matrix[level].currentReferrer;
                } else {
                    return (receiver, isExtraDividends);
                }
            }
        }
    }

    function sendETHDividends(address userAddress, address _from, uint8 matrix, uint8 level) private {
        if(msg.sender!=owner)
        {
            (address receiver, bool isExtraDividends) = findEthReceiver(userAddress, _from, matrix, level);

            if (!address(uint160(receiver)).send(levelPrice[level])) {
                return address(uint160(receiver)).transfer(address(this).balance);
            }
        
            if (isExtraDividends) {
                emit SentExtraEthDividends(_from, receiver, matrix, level);
            }
        }
    }
    function bytesToAddress(bytes memory bys) private pure returns (address addr) {
        assembly {
            addr := mload(add(bys, 20))
        }
    }

    function viewLevels(address user) public view returns (bool[12] memory x3Levels, bool[12] memory x6Levels,uint8 x3LastTrue, uint8 x6LastTrue)
    {
        for (uint8 i = 1; i <= LAST_LEVEL; i++) {
            x3Levels[i] = users[user].activeX3Levels[i];
            if(x3Levels[i]) x3LastTrue = i;
            x6Levels[i] = users[user].activeX6Levels[i];
            if(x6Levels[i]) x6LastTrue = i;
        }
    }

    function withdrawExtraToken(uint amount) public returns(bool)
    {
        require(msg.sender == owner, "Invalid caller");
        require(tokenInterface(tokenAddress).transfer(msg.sender, amount), "token sending fail" );
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint8","name":"matrix","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"level","type":"uint8"}],"name":"MissedEthReceive","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":false,"internalType":"uint8","name":"matrix","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"level","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"place","type":"uint8"}],"name":"NewUserPlace","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":true,"internalType":"uint256","name":"userId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"referrerId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Registration","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"currentReferrer","type":"address"},{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint8","name":"matrix","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"level","type":"uint8"}],"name":"Reinvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint8","name":"matrix","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"level","type":"uint8"}],"name":"SentExtraEthDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":false,"internalType":"uint8","name":"matrix","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"level","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Upgrade","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"LAST_LEVEL","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint8","name":"matrix","type":"uint8"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"buyLevelCreator","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint8","name":"matrix","type":"uint8"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"buyNewLevel","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"contractDeployTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"findFreeX3Referrer","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"findFreeX6Referrer","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"idToAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isUserExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastUserId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint8","name":"","type":"uint8"}],"name":"levelPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"address","name":"referrerAddress","type":"address"}],"name":"registrationCreator","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"referrerAddress","type":"address"}],"name":"registrationExt","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"tokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"userIds","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"referrer","type":"address"},{"internalType":"uint256","name":"partnersCount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"usersActiveX3Levels","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"usersActiveX6Levels","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"usersX3Matrix","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"usersX6Matrix","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"viewLevels","outputs":[{"internalType":"bool[12]","name":"x3Levels","type":"bool[12]"},{"internalType":"bool[12]","name":"x6Levels","type":"bool[12]"},{"internalType":"uint8","name":"x3LastTrue","type":"uint8"},{"internalType":"uint8","name":"x6LastTrue","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawExtraToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040526002600455683635c9adc5dea00000600855600980546001600160a01b03191673fa68bfe953efa64b021719bf617afb5ae73c0d981790553480156200004957600080fd5b50426006556001600052600760205266b1a2bc2ec500007fb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b8285560025b600c60ff821611620000c15760ff6000198201811660009081526007602052604080822054928416825290206002909102905560010162000085565b50600580546001600160a01b03191633179055620000de6200023d565b5060408051606081018252600180825260006020808401828152848601838152600580546001600160a01b0390811686528585529785208751815592518387018054918a166001600160a01b03199283161790559151600290930192909255905492849052908390527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f80549091169190941617909255905b600c60ff821611620001ea57600580546001600160a01b0390811660009081526020818152604080832060ff8716808552600390910183528184208054600160ff199182168117909255965490951684528383528184209084526004019091529020805490921681179091550162000177565b5050600554600160005260026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e080546001600160a01b0319166001600160a01b0390921691909117905562000267565b60405180606001604052806000815260200160006001600160a01b03168152602001600081525090565b61354380620002776000396000f3fe60806040526004361061014b5760003560e01c80638da5cb5b116100b6578063b2f7543a1161006f578063b2f7543a146106c2578063be389d57146106fe578063e06e8dbd14610726578063ecabdf7914610762578063fa45323d1461078f578063fb005f9c146107cb5761014b565b80638da5cb5b14610507578063979e075f1461051c5780639cc102fc146105465780639d76ea581461063f5780639f54790d14610654578063a87430ba146106695761014b565b80634635fd68116101085780634635fd6814610382578063509222cd146103ac5780636e66f6e9146103df578063797eee24146103f45780637fb2b9171461041a57806383ba31b21461045e5761014b565b806307279e2a146101b757806327e235e31461020757806329c704001461024c5780632a2d0c4714610277578063348d4487146102bd57806343755d41146102d2575b3661016c576005546101679033906001600160a01b031661087d565b6101b5565b6101b5336101b06000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c8492505050565b61087d565b005b3480156101c357600080fd5b506101f3600480360360408110156101da57600080fd5b5080356001600160a01b0316906020013560ff16610c8b565b604080519115158252519081900360200190f35b34801561021357600080fd5b5061023a6004803603602081101561022a57600080fd5b50356001600160a01b0316610cbf565b60408051918252519081900360200190f35b34801561025857600080fd5b50610261610cd1565b6040805160ff9092168252519081900360200190f35b34801561028357600080fd5b506102a16004803603602081101561029a57600080fd5b5035610cd6565b604080516001600160a01b039092168252519081900360200190f35b3480156102c957600080fd5b5061023a610cf1565b3480156102de57600080fd5b5061030d600480360360408110156102f557600080fd5b506001600160a01b0381358116916020013516610cf7565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561034757818101518382015260200161032f565b50505050905090810190601f1680156103745780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561038e57600080fd5b506102a1600480360360208110156103a557600080fd5b5035610dcd565b3480156103b857600080fd5b506101f3600480360360208110156103cf57600080fd5b50356001600160a01b0316610de8565b3480156103eb57600080fd5b5061023a610e05565b61030d6004803603602081101561040a57600080fd5b50356001600160a01b0316610e0b565b34801561042657600080fd5b5061030d6004803603606081101561043d57600080fd5b506001600160a01b038135169060ff60208201358116916040013516610e4a565b34801561046a57600080fd5b5061049a6004803603604081101561048157600080fd5b5080356001600160a01b0316906020013560ff16610f24565b604080516001600160a01b0385168152821515918101919091526060602080830182815285519284019290925284516080840191868101910280838360005b838110156104f15781810151838201526020016104d9565b5050505090500194505050505060405180910390f35b34801561051357600080fd5b506102a1610fd1565b34801561052857600080fd5b506101f36004803603602081101561053f57600080fd5b5035610fe0565b34801561055257600080fd5b506105826004803603604081101561056957600080fd5b5080356001600160a01b0316906020013560ff16611101565b604080516001600160a01b03808816825284151560608301528316608082015260a060208083018281528851928401929092528751929391929184019160c0850191898101910280838360005b838110156105e75781810151838201526020016105cf565b50505050905001838103825286818151815260200191508051906020019060200280838360005b8381101561062657818101518382015260200161060e565b5050505090500197505050505050505060405180910390f35b34801561064b57600080fd5b506102a1611220565b34801561066057600080fd5b5061023a61122f565b34801561067557600080fd5b5061069c6004803603602081101561068c57600080fd5b50356001600160a01b0316611235565b604080519384526001600160a01b03909216602084015282820152519081900360600190f35b3480156106ce57600080fd5b506101f3600480360360408110156106e557600080fd5b5080356001600160a01b0316906020013560ff1661125f565b61030d6004803603604081101561071457600080fd5b5060ff8135811691602001351661128e565b34801561073257600080fd5b506102a16004803603604081101561074957600080fd5b5080356001600160a01b0316906020013560ff166112d2565b34801561076e57600080fd5b5061023a6004803603602081101561078557600080fd5b503560ff1661135e565b34801561079b57600080fd5b506102a1600480360360408110156107b257600080fd5b5080356001600160a01b0316906020013560ff16611370565b3480156107d757600080fd5b506107fe600480360360208110156107ee57600080fd5b50356001600160a01b03166113fc565b604051808561018080838360005b8381101561082457818101518382015260200161080c565b5050505090500184600c60200280838360005b8381101561084f578181015183820152602001610837565b505050509050018360ff1660ff1681526020018260ff1660ff16815260200194505050505060405180910390f35b6005546001600160a01b0316331461091157600160005260076020527fb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828546002023414610911576040805162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726567697374726174696f6e20616d6f756e740000000000604482015290519081900360640190fd5b61091a82610de8565b1561095a576040805162461bcd60e51b815260206004820152600b60248201526a757365722065786973747360a81b604482015290519081900360640190fd5b61096381610de8565b6109aa576040805162461bcd60e51b81526020600482015260136024820152727265666572726572206e6f742065786973747360681b604482015290519081900360640190fd5b6009546008546040805163a9059cbb60e01b81523360048201526024810192909252516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b158015610a0157600080fd5b505af1158015610a15573d6000803e3d6000fd5b505050506040513d6020811015610a2b57600080fd5b5051610a73576040805162461bcd60e51b81526020600482015260126024820152711d1bdad95b881cd95b991a5b99c819985a5b60721b604482015290519081900360640190fd5b813b63ffffffff811615610ac5576040805162461bcd60e51b815260206004820152601460248201527318d85b9b9bdd08189948184818dbdb9d1c9858dd60621b604482015290519081900360640190fd5b600480546001019055610ad66133a4565b50604080516060810182526004805482526001600160a01b03808616602080850182815260008688018181528b861680835282855289832089518155935160018086018054929099166001600160a01b03199283161789559251600280870191909155895485528387528b852080548316841790558854821688179098558284526003850186528a8420805460ff19908116851790915583855294890186528a84208054909516831790945596548252858452888220805490931690961790915591825281905293842001805482019055909190610bb5908690611370565b6001600160a01b038681166000908152602081815260408083206001808552600590910190925290912080546001600160a01b03191692841692909217909155909150610c0590869083906114ef565b610c1b85610c148760016112d2565b600161185e565b6001600160a01b038086166000818152602081815260408083205494891680845292819020548151908152349281019290925280519293927fc1df0cc11cc2a40ae327c4da54a7bc5d5007047ac744e37eed7b461a781172159281900390910190a45050505050565b6014015190565b6001600160a01b03821660009081526020818152604080832060ff8086168552600390910190925290912054165b92915050565b60036020526000908152604090205481565b600c81565b6001602052600090815260409020546001600160a01b031681565b60045481565b6005546060906001600160a01b03163314610d49576040805162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2102237b737b960991b604482015290519081900360640190fd5b42600654620151800111610d8e5760405162461bcd60e51b815260040180806020018281038252603281526020018061347a6032913960400191505060405180910390fd5b610d98838361087d565b506040805180820190915260178152761c9959da5cdd1c985d1a5bdb881cdd58d8d95cdcd99d5b604a1b602082015292915050565b6002602052600090815260409020546001600160a01b031681565b6001600160a01b0316600090815260208190526040902054151590565b60085481565b6060610e17338361087d565b50506040805180820190915260178152761c9959da5cdd1c985d1a5bdb881cdd58d8d95cdcd99d5b604a1b602082015290565b6005546060906001600160a01b03163314610e9c576040805162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2102237b737b960991b604482015290519081900360640190fd5b42600654620151800111610ee15760405162461bcd60e51b815260040180806020018281038252603281526020018061347a6032913960400191505060405180910390fd5b610eec8484846121f4565b506040805180820190915260198152784c6576656c20626f75676874207375636365737366756c6c7960381b60208201529392505050565b6001600160a01b0382811660009081526020818152604080832060ff8681168552600590910183528184208054600282015460019092018054855181880281018801909652808652969760609789979390911695919493909316929091849190830182828015610fbd57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f9f575b505050505091509250925092509250925092565b6005546001600160a01b031681565b6005546000906001600160a01b03163314611033576040805162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21031b0b63632b960911b604482015290519081900360640190fd5b6009546040805163a9059cbb60e01b81523360048201526024810185905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561108757600080fd5b505af115801561109b573d6000803e3d6000fd5b505050506040513d60208110156110b157600080fd5b50516110f9576040805162461bcd60e51b81526020600482015260126024820152711d1bdad95b881cd95b991a5b99c819985a5b60721b604482015290519081900360640190fd5b506001919050565b6001600160a01b0382811660009081526020818152604080832060ff8681168552600690910183528184208054600382015460058301546001840180548751818a0281018a0190985280885298996060998a998c998a999784169894976002909501969094169490921692918691908301828280156111a957602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161118b575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561120557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116111e7575b50505050509250945094509450945094509295509295909350565b6009546001600160a01b031681565b60065481565b60006020819052908152604090208054600182015460029092015490916001600160a01b03169083565b6001600160a01b039190911660009081526020818152604080832060ff94851684526004019091529020541690565b606061129b3384846121f4565b506040805180820190915260198152784c6576656c20626f75676874207375636365737366756c6c7960381b602082015292915050565b60005b6001600160a01b0380841660009081526020818152604080832060010154909316825282822060ff8087168452600490910190915291902054161561133857506001600160a01b0380831660009081526020819052604090206001015416610cb9565b6001600160a01b03928316600090815260208190526040902060010154909216916112d5565b60076020526000908152604090205481565b60005b6001600160a01b0380841660009081526020818152604080832060010154909316825282822060ff808716845260039091019091529190205416156113d657506001600160a01b0380831660009081526020819052604090206001015416610cb9565b6001600160a01b0392831660009081526020819052604090206001015490921691611373565b6114046133ce565b61140c6133ce565b60008060015b600c60ff8216116114e7576001600160a01b03861660009081526020818152604080832060ff808616808652600390920190935292205416908690600c811061145757fe5b911515602090920201528460ff8216600c811061147057fe5b60200201511561147e578092505b6001600160a01b03861660009081526020818152604080832060ff808616808652600490920190935292205416908590600c81106114b857fe5b911515602090920201528360ff8216600c81106114d157fe5b6020020151156114df578091505b600101611412565b509193509193565b6001600160a01b0382811660009081526020818152604080832060ff8616808552600590910183529083206001908101805491820181558085529284200180546001600160a01b0319169488169490941790935591905254600311156115c7576001600160a01b0380831660008181526020818152604080832060ff80881680865260059092018452938290206001908101548351918252938101919091529190921681830152905191928616916000805160206134ac8339815191529181900360600190a36115c2828460018461275f565b611859565b604080516001815260ff8316602082015260038183015290516001600160a01b0380851692908616916000805160206134ac8339815191529181900360600190a360408051600080825260208083018085526001600160a01b038716835282825284832060ff87168452600501909152929020905161164c92600190920191906133ed565b506001600160a01b03821660009081526020818152604080832060ff60018601811685526003909101909252909120541615801561168e575060ff8116600c14155b156116c9576001600160a01b03821660009081526020818152604080832060ff851684526005019091529020600201805460ff191660011790555b6005546001600160a01b038381169116146117d45760006116ea8383611370565b6001600160a01b0384811660009081526020818152604080832060ff8816845260050190915290205491925082811691161461175e576001600160a01b0383811660009081526020818152604080832060ff87168452600501909152902080546001600160a01b0319169183169190911790555b6001600160a01b0380841660008181526020818152604080832060ff8816808552600590910183529281902060030180546001908101909155815190815291820192909252815188851694861693926000805160206134cc833981519152928290030190a46117ce8382846114ef565b50611859565b6005546117ed906001600160a01b03168460018461275f565b600580546001600160a01b0390811660009081526020818152604080832060ff87168085529086018352818420600301805460019081019091559554825196875292860152805188851695939492909216926000805160206134cc833981519152929081900390910190a45b505050565b6001600160a01b03821660009081526020818152604080832060ff8086168552600490910190925290912054166118dc576040805162461bcd60e51b815260206004820152601f60248201527f3530302e205265666572726572206c6576656c20697320696e61637469766500604482015290519081900360640190fd5b6001600160a01b03821660009081526020818152604080832060ff8516845260060190915290206001015460021115611e41576001600160a01b0382811660008181526020818152604080832060ff8781168086526006909201845282852060019081018054918201815580875285872090910180546001600160a01b031916988c169889179055948290529354825160028152938401919091529092168183015290519192916000805160206134ac833981519152916060908290030190a36001600160a01b0383811660009081526020818152604080832060ff86168452600601909152902080546001600160a01b03191684831690811790915560055490911614156119f2576115c2828460028461275f565b6001600160a01b0382811660009081526020818152604080832060ff8616808552600691820184528285205486168086528585528386208287529092018452918420600280820180546001808201835591885295872090950180546001600160a01b031916978b1697909717909655919093520154909181148015611ac357506001600160a01b0382811660009081526020818152604080832060ff881684526006019091528120600101805492871692909190611aac57fe5b6000918252602090912001546001600160a01b0316145b8015611b1f57506001600160a01b0382811660009081526020818152604080832060ff88168452600601909152902060019081018054928716929091908110611b0857fe5b6000918252602090912001546001600160a01b0316145b15611be4576001600160a01b03841660009081526020818152604080832060ff8716845260060190915290206001908101541415611b9d57604080516002815260ff8516602082015260058183015290516001600160a01b0380851692908816916000805160206134ac8339815191529181900360600190a3611bdf565b604080516002815260ff8516602082015260068183015290516001600160a01b0380851692908816916000805160206134ac8339815191529181900360600190a35b611e2f565b8060011480611bf35750806002145b8015611c4b57506001600160a01b0382811660009081526020818152604080832060ff881684526006019091528120600101805492871692909190611c3457fe5b6000918252602090912001546001600160a01b0316145b15611d0f576001600160a01b03841660009081526020818152604080832060ff8716845260060190915290206001908101541415611cc957604080516002815260ff8516602082015260038183015290516001600160a01b0380851692908816916000805160206134ac8339815191529181900360600190a3611bdf565b604080516002815260ff8516602082015260048183015290516001600160a01b0380851692908816916000805160206134ac8339815191529181900360600190a3611e2f565b806002148015611d6f57506001600160a01b0382811660009081526020818152604080832060ff88168452600601909152902060019081018054928716929091908110611d5857fe5b6000918252602090912001546001600160a01b0316145b15611e2f576001600160a01b03841660009081526020818152604080832060ff8716845260060190915290206001908101541415611ded57604080516002815260ff8516602082015260058183015290516001600160a01b0380851692908816916000805160206134ac8339815191529181900360600190a3611e2f565b604080516002815260ff8516602082015260068183015290516001600160a01b0380851692908816916000805160206134ac8339815191529181900360600190a35b611e3a85838561285b565b5050611859565b6001600160a01b0382811660009081526020818152604080832060ff86168085526006909101835290832060028101805460018101825590855292842090920180546001600160a01b031916888616179055909152600501541615612025576001600160a01b03821660009081526020818152604080832060ff851684526006019091529020600190810180549091908110611ed957fe5b60009182526020808320909101546001600160a01b038581168452838352604080852060ff87168652600601909352918320600101805492909116929091611f1d57fe5b6000918252602090912001546001600160a01b0316148015611f9257506001600160a01b0382811660009081526020818152604080832060ff86168452600601909152812060058101546001909101805491909316929190611f7b57fe5b6000918252602090912001546001600160a01b0316145b15611faf57611fa48383836001612ca7565b6115c283838361285b565b6001600160a01b0382811660009081526020818152604080832060ff86168452600601909152812060058101546001909101805491909316929190611ff057fe5b6000918252602090912001546001600160a01b0316141561201857611fa48383836001612ca7565b611fa48383836000612ca7565b6001600160a01b0382811660009081526020818152604080832060ff8616845260060190915290206001908101805492861692909190811061206357fe5b6000918252602090912001546001600160a01b0316141561208b57611fa48383836000612ca7565b6001600160a01b0382811660009081526020818152604080832060ff8616845260060190915281206001018054928616929091906120c557fe5b6000918252602090912001546001600160a01b031614156120ed57611fa48383836001612ca7565b6001600160a01b03821660009081526020818152604080832060ff85168452600601909152812060019081018054839290811061212657fe5b60009182526020808320909101546001600160a01b039081168452838201949094526040928301822060ff861680845260069182018352848420600190810154968916855284845285852091855291019091529181209091018054829190829061218c57fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff86168252600601909252902060010154116121dc576121d78383836000612ca7565b6121e9565b6121e98383836001612ca7565b61185983838361285b565b6121fd83610de8565b6122385760405162461bcd60e51b81526004018080602001828103825260238152602001806134ec6023913960400191505060405180910390fd5b8160ff166001148061224d57508160ff166002145b61228f576040805162461bcd60e51b815260206004820152600e60248201526d0d2dcecc2d8d2c840dac2e8e4d2f60931b604482015290519081900360640190fd5b6005546001600160a01b031633146122f75760ff811660009081526007602052604090205434146122f7576040805162461bcd60e51b815260206004820152600d60248201526c696e76616c696420707269636560981b604482015290519081900360640190fd5b60018160ff1611801561230e5750600c60ff821611155b61234f576040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081b195d995b609a1b604482015290519081900360640190fd5b6009546008546040805163a9059cbb60e01b81526001600160a01b03878116600483015260248201939093529051919092169163a9059cbb9160448083019260209291908290030181600087803b1580156123a957600080fd5b505af11580156123bd573d6000803e3d6000fd5b505050506040513d60208110156123d357600080fd5b505161241b576040805162461bcd60e51b81526020600482015260126024820152711d1bdad95b881cd95b991a5b99c819985a5b60721b604482015290519081900360640190fd5b8160ff16600114156125d3576001600160a01b03831660009081526020818152604080832060ff808616855260039091019092529091205416156124a0576040805162461bcd60e51b81526020600482015260176024820152761b195d995b08185b1c9958591e481858dd1a5d985d1959604a1b604482015290519081900360640190fd5b6001600160a01b03831660009081526020818152604080832060ff6000198601811685526005909101909252909120600201541615612510576001600160a01b03831660009081526020818152604080832060ff60001986011684526005019091529020600201805460ff191690555b600061251c8483611370565b6001600160a01b0385811660009081526020818152604080832060ff8816845260058101835281842080546001600160a01b031916958716959095179094556003909301905220805460ff19166001179055905061257b8482846114ef565b604080516001815260ff84166020820152348183015290516001600160a01b0380841692908716917f2ac186f095e215dc3ab153a0ce480c2155b22ace0abd4e26591d4d22b379343c9181900360600190a350611859565b6001600160a01b03831660009081526020818152604080832060ff8086168552600490910190925290912054161561264c576040805162461bcd60e51b81526020600482015260176024820152761b195d995b08185b1c9958591e481858dd1a5d985d1959604a1b604482015290519081900360640190fd5b6001600160a01b03831660009081526020818152604080832060ff60001986018116855260069091019092529091206003015416156126bc576001600160a01b03831660009081526020818152604080832060ff60001986011684526006019091529020600301805460ff191690555b60006126c884836112d2565b6001600160a01b03851660009081526020818152604080832060ff871684526004019091529020805460ff19166001179055905061270784828461185e565b604080516002815260ff84166020820152348183015290516001600160a01b0380841692908716917f2ac186f095e215dc3ab153a0ce480c2155b22ace0abd4e26591d4d22b379343c9181900360600190a350505050565b6005546001600160a01b031633146128555760008061278086868686613210565b60ff85166000908152600760205260408082205490519395509193506001600160a01b0385169282156108fc029291818181858888f193505050506127fc576040516001600160a01b038316904780156108fc02916000818181858888f193505050501580156127f4573d6000803e3d6000fd5b505050612855565b8015612852576040805160ff80871682528516602082015281516001600160a01b0380861693908916927ff0ddc65c0d411f042f723dcfa1b7d13e85a35b7b70761d447c6500411cacf328929081900390910190a35b50505b50505050565b6001600160a01b03821660009081526020818152604080832060ff851684526006019091529020600201546004111561289b576115c2828460028461275f565b6001600160a01b0380831660009081526020818152604080832060ff8616808552600691820184528285205490951684528383528184209484529390930181529082902060010180548351818402810184019094528084526060939283018282801561293057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612912575b50505050509050805160021415612a8d57826001600160a01b03168160008151811061295857fe5b60200260200101516001600160a01b0316148061299a5750826001600160a01b03168160018151811061298757fe5b60200260200101516001600160a01b0316145b156129fc576001600160a01b0380841660008181526020818152604080832060ff8816808552600691820184528285205490961684528383528184209584529490940190529190912060050180546001600160a01b0319169091179055612a8d565b805160011415612a8d57826001600160a01b031681600081518110612a1d57fe5b60200260200101516001600160a01b03161415612a8d576001600160a01b0380841660008181526020818152604080832060ff8816808552600691820184528285205490961684528383528184209584529490940190529190912060050180546001600160a01b03191690911790555b60408051600080825260208083018085526001600160a01b038816835282825284832060ff881684526006019091529290209051612ad192600190920191906133ed565b5060408051600080825260208083018085526001600160a01b038816835282825284832060ff881684526006019091529290209051612b1692600290920191906133ed565b506001600160a01b03831660009081526020818152604080832060ff808716855260068201845282852060050180546001600160a01b0319169055600187018116855260049091019092529091205416158015612b77575060ff8216600c14155b15612bb2576001600160a01b03831660009081526020818152604080832060ff861684526006019091529020600301805460ff191660011790555b6001600160a01b0380841660008181526020818152604080832060ff8816845260060190915290206004018054600101905560055490911614612c4d576000612bfb84846112d2565b604080516002815260ff8616602082015281519293506001600160a01b038089169381861693918916926000805160206134cc83398151915292908290030190a4612c4784828561185e565b50612855565b600554604080516002815260ff8516602082015281516001600160a01b03808916946000949116926000805160206134cc833981519152929081900390910190a4600554612855906001600160a01b03168560028561275f565b80612f57576001600160a01b03831660009081526020818152604080832060ff86168452600601909152812060010180548291908290612ce357fe5b6000918252602080832091909101546001600160a01b039081168452838201949094526040928301822060ff8716808452600691820183528484206001908101805480830182559086528486200180546001600160a01b0319168c891617905595891684528383528484209084520190529081209091018054909190612d6557fe5b60009182526020808320909101546001600160a01b038681168452838352604080852060ff88168652600601909352918320600101805491831693928816926000805160206134ac833981519152926002928892918291908290612dc557fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c1683526006909101845290829020600101548251958216865293811692850192909252911682820152519081900360600190a36001600160a01b0380841660008181526020818152604080832060ff881684526006019091528120600101805492938816926000805160206134ac8339815191529260029288928291908290612e7557fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c168352600690910184529082902060010154825195821686529381169285019290925260029092011682820152519081900360600190a36001600160a01b03831660009081526020818152604080832060ff8616845260060190915281206001018054909190612f0c57fe5b60009182526020808320909101546001600160a01b038781168452838352604080852060ff881686526006019093529190922080546001600160a01b03191691909216179055612855565b6001600160a01b03831660009081526020818152604080832060ff861684526006019091528120600190810180548392908110612f9057fe5b6000918252602080832091909101546001600160a01b039081168452838201949094526040928301822060ff8716808452600691820183528484206001908101805480830182559086528486200180546001600160a01b0319168c891617905595891684528383528484209084520190522081018054909190811061301157fe5b60009182526020808320909101546001600160a01b038681168452838352604080852060ff881686526006019093529183206001908101805492841694938916936000805160206134ac8339815191529360029389938392909190811061307457fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c1683526006909101845290829020600101548251958216865293811692850192909252911682820152519081900360600190a36001600160a01b0380841660008181526020818152604080832060ff8816845260060190915281206001908101805493948916936000805160206134ac833981519152936002938993919283929190811061312957fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c168352600690910184529082902060010154825195821686529381169285019290925260049092011682820152519081900360600190a36001600160a01b03831660009081526020818152604080832060ff8616845260060190915290206001908101805490919081106131c457fe5b60009182526020808320909101546001600160a01b038781168452838352604080852060ff881686526006019093529190922080546001600160a01b0319169190921617905550505050565b6000808581600160ff871614156132e6575b6001600160a01b03821660009081526020818152604080832060ff808a16855260059091019092529091206002015416156132d757604080516001815260ff8716602082015281516001600160a01b03808b1693908616927ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709929081900390910190a3506001600160a01b0390811660009081526020818152604080832060ff881684526005019091529020541660016132e1565b909250905061339b565b613222565b6001600160a01b03821660009081526020818152604080832060ff808a16855260069091019092529091206003015416156132d757604080516002815260ff8716602082015281516001600160a01b03808b1693908616927ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709929081900390910190a3506001600160a01b0390811660009081526020818152604080832060ff881684526006019091529020541660016132e6565b94509492505050565b60405180606001604052806000815260200160006001600160a01b03168152602001600081525090565b604051806101800160405280600c906020820280388339509192915050565b828054828255906000526020600020908101928215613442579160200282015b8281111561344257825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061340d565b5061344e929150613452565b5090565b61347691905b8082111561344e5780546001600160a01b0319168155600101613458565b9056fe546869732066756e6374696f6e206973206f6e6c7920617661696c61626c6520666f7220666972737420323420686f75727368062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d82a00c953eff38ec1b71e7fe060b2ab8df0bbe5354319fbdde4fbdafd6324386a675736572206973206e6f74206578697374732e2052656769737465722066697273742ea265627a7a7231582092e0e1254b0900f58f10e99be3d5d158fc63f8aceb7605237768de640b6acd1b64736f6c63430005100032

Deployed Bytecode

0x60806040526004361061014b5760003560e01c80638da5cb5b116100b6578063b2f7543a1161006f578063b2f7543a146106c2578063be389d57146106fe578063e06e8dbd14610726578063ecabdf7914610762578063fa45323d1461078f578063fb005f9c146107cb5761014b565b80638da5cb5b14610507578063979e075f1461051c5780639cc102fc146105465780639d76ea581461063f5780639f54790d14610654578063a87430ba146106695761014b565b80634635fd68116101085780634635fd6814610382578063509222cd146103ac5780636e66f6e9146103df578063797eee24146103f45780637fb2b9171461041a57806383ba31b21461045e5761014b565b806307279e2a146101b757806327e235e31461020757806329c704001461024c5780632a2d0c4714610277578063348d4487146102bd57806343755d41146102d2575b3661016c576005546101679033906001600160a01b031661087d565b6101b5565b6101b5336101b06000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c8492505050565b61087d565b005b3480156101c357600080fd5b506101f3600480360360408110156101da57600080fd5b5080356001600160a01b0316906020013560ff16610c8b565b604080519115158252519081900360200190f35b34801561021357600080fd5b5061023a6004803603602081101561022a57600080fd5b50356001600160a01b0316610cbf565b60408051918252519081900360200190f35b34801561025857600080fd5b50610261610cd1565b6040805160ff9092168252519081900360200190f35b34801561028357600080fd5b506102a16004803603602081101561029a57600080fd5b5035610cd6565b604080516001600160a01b039092168252519081900360200190f35b3480156102c957600080fd5b5061023a610cf1565b3480156102de57600080fd5b5061030d600480360360408110156102f557600080fd5b506001600160a01b0381358116916020013516610cf7565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561034757818101518382015260200161032f565b50505050905090810190601f1680156103745780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561038e57600080fd5b506102a1600480360360208110156103a557600080fd5b5035610dcd565b3480156103b857600080fd5b506101f3600480360360208110156103cf57600080fd5b50356001600160a01b0316610de8565b3480156103eb57600080fd5b5061023a610e05565b61030d6004803603602081101561040a57600080fd5b50356001600160a01b0316610e0b565b34801561042657600080fd5b5061030d6004803603606081101561043d57600080fd5b506001600160a01b038135169060ff60208201358116916040013516610e4a565b34801561046a57600080fd5b5061049a6004803603604081101561048157600080fd5b5080356001600160a01b0316906020013560ff16610f24565b604080516001600160a01b0385168152821515918101919091526060602080830182815285519284019290925284516080840191868101910280838360005b838110156104f15781810151838201526020016104d9565b5050505090500194505050505060405180910390f35b34801561051357600080fd5b506102a1610fd1565b34801561052857600080fd5b506101f36004803603602081101561053f57600080fd5b5035610fe0565b34801561055257600080fd5b506105826004803603604081101561056957600080fd5b5080356001600160a01b0316906020013560ff16611101565b604080516001600160a01b03808816825284151560608301528316608082015260a060208083018281528851928401929092528751929391929184019160c0850191898101910280838360005b838110156105e75781810151838201526020016105cf565b50505050905001838103825286818151815260200191508051906020019060200280838360005b8381101561062657818101518382015260200161060e565b5050505090500197505050505050505060405180910390f35b34801561064b57600080fd5b506102a1611220565b34801561066057600080fd5b5061023a61122f565b34801561067557600080fd5b5061069c6004803603602081101561068c57600080fd5b50356001600160a01b0316611235565b604080519384526001600160a01b03909216602084015282820152519081900360600190f35b3480156106ce57600080fd5b506101f3600480360360408110156106e557600080fd5b5080356001600160a01b0316906020013560ff1661125f565b61030d6004803603604081101561071457600080fd5b5060ff8135811691602001351661128e565b34801561073257600080fd5b506102a16004803603604081101561074957600080fd5b5080356001600160a01b0316906020013560ff166112d2565b34801561076e57600080fd5b5061023a6004803603602081101561078557600080fd5b503560ff1661135e565b34801561079b57600080fd5b506102a1600480360360408110156107b257600080fd5b5080356001600160a01b0316906020013560ff16611370565b3480156107d757600080fd5b506107fe600480360360208110156107ee57600080fd5b50356001600160a01b03166113fc565b604051808561018080838360005b8381101561082457818101518382015260200161080c565b5050505090500184600c60200280838360005b8381101561084f578181015183820152602001610837565b505050509050018360ff1660ff1681526020018260ff1660ff16815260200194505050505060405180910390f35b6005546001600160a01b0316331461091157600160005260076020527fb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828546002023414610911576040805162461bcd60e51b815260206004820152601b60248201527f496e76616c696420726567697374726174696f6e20616d6f756e740000000000604482015290519081900360640190fd5b61091a82610de8565b1561095a576040805162461bcd60e51b815260206004820152600b60248201526a757365722065786973747360a81b604482015290519081900360640190fd5b61096381610de8565b6109aa576040805162461bcd60e51b81526020600482015260136024820152727265666572726572206e6f742065786973747360681b604482015290519081900360640190fd5b6009546008546040805163a9059cbb60e01b81523360048201526024810192909252516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b158015610a0157600080fd5b505af1158015610a15573d6000803e3d6000fd5b505050506040513d6020811015610a2b57600080fd5b5051610a73576040805162461bcd60e51b81526020600482015260126024820152711d1bdad95b881cd95b991a5b99c819985a5b60721b604482015290519081900360640190fd5b813b63ffffffff811615610ac5576040805162461bcd60e51b815260206004820152601460248201527318d85b9b9bdd08189948184818dbdb9d1c9858dd60621b604482015290519081900360640190fd5b600480546001019055610ad66133a4565b50604080516060810182526004805482526001600160a01b03808616602080850182815260008688018181528b861680835282855289832089518155935160018086018054929099166001600160a01b03199283161789559251600280870191909155895485528387528b852080548316841790558854821688179098558284526003850186528a8420805460ff19908116851790915583855294890186528a84208054909516831790945596548252858452888220805490931690961790915591825281905293842001805482019055909190610bb5908690611370565b6001600160a01b038681166000908152602081815260408083206001808552600590910190925290912080546001600160a01b03191692841692909217909155909150610c0590869083906114ef565b610c1b85610c148760016112d2565b600161185e565b6001600160a01b038086166000818152602081815260408083205494891680845292819020548151908152349281019290925280519293927fc1df0cc11cc2a40ae327c4da54a7bc5d5007047ac744e37eed7b461a781172159281900390910190a45050505050565b6014015190565b6001600160a01b03821660009081526020818152604080832060ff8086168552600390910190925290912054165b92915050565b60036020526000908152604090205481565b600c81565b6001602052600090815260409020546001600160a01b031681565b60045481565b6005546060906001600160a01b03163314610d49576040805162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2102237b737b960991b604482015290519081900360640190fd5b42600654620151800111610d8e5760405162461bcd60e51b815260040180806020018281038252603281526020018061347a6032913960400191505060405180910390fd5b610d98838361087d565b506040805180820190915260178152761c9959da5cdd1c985d1a5bdb881cdd58d8d95cdcd99d5b604a1b602082015292915050565b6002602052600090815260409020546001600160a01b031681565b6001600160a01b0316600090815260208190526040902054151590565b60085481565b6060610e17338361087d565b50506040805180820190915260178152761c9959da5cdd1c985d1a5bdb881cdd58d8d95cdcd99d5b604a1b602082015290565b6005546060906001600160a01b03163314610e9c576040805162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2102237b737b960991b604482015290519081900360640190fd5b42600654620151800111610ee15760405162461bcd60e51b815260040180806020018281038252603281526020018061347a6032913960400191505060405180910390fd5b610eec8484846121f4565b506040805180820190915260198152784c6576656c20626f75676874207375636365737366756c6c7960381b60208201529392505050565b6001600160a01b0382811660009081526020818152604080832060ff8681168552600590910183528184208054600282015460019092018054855181880281018801909652808652969760609789979390911695919493909316929091849190830182828015610fbd57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f9f575b505050505091509250925092509250925092565b6005546001600160a01b031681565b6005546000906001600160a01b03163314611033576040805162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21031b0b63632b960911b604482015290519081900360640190fd5b6009546040805163a9059cbb60e01b81523360048201526024810185905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561108757600080fd5b505af115801561109b573d6000803e3d6000fd5b505050506040513d60208110156110b157600080fd5b50516110f9576040805162461bcd60e51b81526020600482015260126024820152711d1bdad95b881cd95b991a5b99c819985a5b60721b604482015290519081900360640190fd5b506001919050565b6001600160a01b0382811660009081526020818152604080832060ff8681168552600690910183528184208054600382015460058301546001840180548751818a0281018a0190985280885298996060998a998c998a999784169894976002909501969094169490921692918691908301828280156111a957602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161118b575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561120557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116111e7575b50505050509250945094509450945094509295509295909350565b6009546001600160a01b031681565b60065481565b60006020819052908152604090208054600182015460029092015490916001600160a01b03169083565b6001600160a01b039190911660009081526020818152604080832060ff94851684526004019091529020541690565b606061129b3384846121f4565b506040805180820190915260198152784c6576656c20626f75676874207375636365737366756c6c7960381b602082015292915050565b60005b6001600160a01b0380841660009081526020818152604080832060010154909316825282822060ff8087168452600490910190915291902054161561133857506001600160a01b0380831660009081526020819052604090206001015416610cb9565b6001600160a01b03928316600090815260208190526040902060010154909216916112d5565b60076020526000908152604090205481565b60005b6001600160a01b0380841660009081526020818152604080832060010154909316825282822060ff808716845260039091019091529190205416156113d657506001600160a01b0380831660009081526020819052604090206001015416610cb9565b6001600160a01b0392831660009081526020819052604090206001015490921691611373565b6114046133ce565b61140c6133ce565b60008060015b600c60ff8216116114e7576001600160a01b03861660009081526020818152604080832060ff808616808652600390920190935292205416908690600c811061145757fe5b911515602090920201528460ff8216600c811061147057fe5b60200201511561147e578092505b6001600160a01b03861660009081526020818152604080832060ff808616808652600490920190935292205416908590600c81106114b857fe5b911515602090920201528360ff8216600c81106114d157fe5b6020020151156114df578091505b600101611412565b509193509193565b6001600160a01b0382811660009081526020818152604080832060ff8616808552600590910183529083206001908101805491820181558085529284200180546001600160a01b0319169488169490941790935591905254600311156115c7576001600160a01b0380831660008181526020818152604080832060ff80881680865260059092018452938290206001908101548351918252938101919091529190921681830152905191928616916000805160206134ac8339815191529181900360600190a36115c2828460018461275f565b611859565b604080516001815260ff8316602082015260038183015290516001600160a01b0380851692908616916000805160206134ac8339815191529181900360600190a360408051600080825260208083018085526001600160a01b038716835282825284832060ff87168452600501909152929020905161164c92600190920191906133ed565b506001600160a01b03821660009081526020818152604080832060ff60018601811685526003909101909252909120541615801561168e575060ff8116600c14155b156116c9576001600160a01b03821660009081526020818152604080832060ff851684526005019091529020600201805460ff191660011790555b6005546001600160a01b038381169116146117d45760006116ea8383611370565b6001600160a01b0384811660009081526020818152604080832060ff8816845260050190915290205491925082811691161461175e576001600160a01b0383811660009081526020818152604080832060ff87168452600501909152902080546001600160a01b0319169183169190911790555b6001600160a01b0380841660008181526020818152604080832060ff8816808552600590910183529281902060030180546001908101909155815190815291820192909252815188851694861693926000805160206134cc833981519152928290030190a46117ce8382846114ef565b50611859565b6005546117ed906001600160a01b03168460018461275f565b600580546001600160a01b0390811660009081526020818152604080832060ff87168085529086018352818420600301805460019081019091559554825196875292860152805188851695939492909216926000805160206134cc833981519152929081900390910190a45b505050565b6001600160a01b03821660009081526020818152604080832060ff8086168552600490910190925290912054166118dc576040805162461bcd60e51b815260206004820152601f60248201527f3530302e205265666572726572206c6576656c20697320696e61637469766500604482015290519081900360640190fd5b6001600160a01b03821660009081526020818152604080832060ff8516845260060190915290206001015460021115611e41576001600160a01b0382811660008181526020818152604080832060ff8781168086526006909201845282852060019081018054918201815580875285872090910180546001600160a01b031916988c169889179055948290529354825160028152938401919091529092168183015290519192916000805160206134ac833981519152916060908290030190a36001600160a01b0383811660009081526020818152604080832060ff86168452600601909152902080546001600160a01b03191684831690811790915560055490911614156119f2576115c2828460028461275f565b6001600160a01b0382811660009081526020818152604080832060ff8616808552600691820184528285205486168086528585528386208287529092018452918420600280820180546001808201835591885295872090950180546001600160a01b031916978b1697909717909655919093520154909181148015611ac357506001600160a01b0382811660009081526020818152604080832060ff881684526006019091528120600101805492871692909190611aac57fe5b6000918252602090912001546001600160a01b0316145b8015611b1f57506001600160a01b0382811660009081526020818152604080832060ff88168452600601909152902060019081018054928716929091908110611b0857fe5b6000918252602090912001546001600160a01b0316145b15611be4576001600160a01b03841660009081526020818152604080832060ff8716845260060190915290206001908101541415611b9d57604080516002815260ff8516602082015260058183015290516001600160a01b0380851692908816916000805160206134ac8339815191529181900360600190a3611bdf565b604080516002815260ff8516602082015260068183015290516001600160a01b0380851692908816916000805160206134ac8339815191529181900360600190a35b611e2f565b8060011480611bf35750806002145b8015611c4b57506001600160a01b0382811660009081526020818152604080832060ff881684526006019091528120600101805492871692909190611c3457fe5b6000918252602090912001546001600160a01b0316145b15611d0f576001600160a01b03841660009081526020818152604080832060ff8716845260060190915290206001908101541415611cc957604080516002815260ff8516602082015260038183015290516001600160a01b0380851692908816916000805160206134ac8339815191529181900360600190a3611bdf565b604080516002815260ff8516602082015260048183015290516001600160a01b0380851692908816916000805160206134ac8339815191529181900360600190a3611e2f565b806002148015611d6f57506001600160a01b0382811660009081526020818152604080832060ff88168452600601909152902060019081018054928716929091908110611d5857fe5b6000918252602090912001546001600160a01b0316145b15611e2f576001600160a01b03841660009081526020818152604080832060ff8716845260060190915290206001908101541415611ded57604080516002815260ff8516602082015260058183015290516001600160a01b0380851692908816916000805160206134ac8339815191529181900360600190a3611e2f565b604080516002815260ff8516602082015260068183015290516001600160a01b0380851692908816916000805160206134ac8339815191529181900360600190a35b611e3a85838561285b565b5050611859565b6001600160a01b0382811660009081526020818152604080832060ff86168085526006909101835290832060028101805460018101825590855292842090920180546001600160a01b031916888616179055909152600501541615612025576001600160a01b03821660009081526020818152604080832060ff851684526006019091529020600190810180549091908110611ed957fe5b60009182526020808320909101546001600160a01b038581168452838352604080852060ff87168652600601909352918320600101805492909116929091611f1d57fe5b6000918252602090912001546001600160a01b0316148015611f9257506001600160a01b0382811660009081526020818152604080832060ff86168452600601909152812060058101546001909101805491909316929190611f7b57fe5b6000918252602090912001546001600160a01b0316145b15611faf57611fa48383836001612ca7565b6115c283838361285b565b6001600160a01b0382811660009081526020818152604080832060ff86168452600601909152812060058101546001909101805491909316929190611ff057fe5b6000918252602090912001546001600160a01b0316141561201857611fa48383836001612ca7565b611fa48383836000612ca7565b6001600160a01b0382811660009081526020818152604080832060ff8616845260060190915290206001908101805492861692909190811061206357fe5b6000918252602090912001546001600160a01b0316141561208b57611fa48383836000612ca7565b6001600160a01b0382811660009081526020818152604080832060ff8616845260060190915281206001018054928616929091906120c557fe5b6000918252602090912001546001600160a01b031614156120ed57611fa48383836001612ca7565b6001600160a01b03821660009081526020818152604080832060ff85168452600601909152812060019081018054839290811061212657fe5b60009182526020808320909101546001600160a01b039081168452838201949094526040928301822060ff861680845260069182018352848420600190810154968916855284845285852091855291019091529181209091018054829190829061218c57fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff86168252600601909252902060010154116121dc576121d78383836000612ca7565b6121e9565b6121e98383836001612ca7565b61185983838361285b565b6121fd83610de8565b6122385760405162461bcd60e51b81526004018080602001828103825260238152602001806134ec6023913960400191505060405180910390fd5b8160ff166001148061224d57508160ff166002145b61228f576040805162461bcd60e51b815260206004820152600e60248201526d0d2dcecc2d8d2c840dac2e8e4d2f60931b604482015290519081900360640190fd5b6005546001600160a01b031633146122f75760ff811660009081526007602052604090205434146122f7576040805162461bcd60e51b815260206004820152600d60248201526c696e76616c696420707269636560981b604482015290519081900360640190fd5b60018160ff1611801561230e5750600c60ff821611155b61234f576040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081b195d995b609a1b604482015290519081900360640190fd5b6009546008546040805163a9059cbb60e01b81526001600160a01b03878116600483015260248201939093529051919092169163a9059cbb9160448083019260209291908290030181600087803b1580156123a957600080fd5b505af11580156123bd573d6000803e3d6000fd5b505050506040513d60208110156123d357600080fd5b505161241b576040805162461bcd60e51b81526020600482015260126024820152711d1bdad95b881cd95b991a5b99c819985a5b60721b604482015290519081900360640190fd5b8160ff16600114156125d3576001600160a01b03831660009081526020818152604080832060ff808616855260039091019092529091205416156124a0576040805162461bcd60e51b81526020600482015260176024820152761b195d995b08185b1c9958591e481858dd1a5d985d1959604a1b604482015290519081900360640190fd5b6001600160a01b03831660009081526020818152604080832060ff6000198601811685526005909101909252909120600201541615612510576001600160a01b03831660009081526020818152604080832060ff60001986011684526005019091529020600201805460ff191690555b600061251c8483611370565b6001600160a01b0385811660009081526020818152604080832060ff8816845260058101835281842080546001600160a01b031916958716959095179094556003909301905220805460ff19166001179055905061257b8482846114ef565b604080516001815260ff84166020820152348183015290516001600160a01b0380841692908716917f2ac186f095e215dc3ab153a0ce480c2155b22ace0abd4e26591d4d22b379343c9181900360600190a350611859565b6001600160a01b03831660009081526020818152604080832060ff8086168552600490910190925290912054161561264c576040805162461bcd60e51b81526020600482015260176024820152761b195d995b08185b1c9958591e481858dd1a5d985d1959604a1b604482015290519081900360640190fd5b6001600160a01b03831660009081526020818152604080832060ff60001986018116855260069091019092529091206003015416156126bc576001600160a01b03831660009081526020818152604080832060ff60001986011684526006019091529020600301805460ff191690555b60006126c884836112d2565b6001600160a01b03851660009081526020818152604080832060ff871684526004019091529020805460ff19166001179055905061270784828461185e565b604080516002815260ff84166020820152348183015290516001600160a01b0380841692908716917f2ac186f095e215dc3ab153a0ce480c2155b22ace0abd4e26591d4d22b379343c9181900360600190a350505050565b6005546001600160a01b031633146128555760008061278086868686613210565b60ff85166000908152600760205260408082205490519395509193506001600160a01b0385169282156108fc029291818181858888f193505050506127fc576040516001600160a01b038316904780156108fc02916000818181858888f193505050501580156127f4573d6000803e3d6000fd5b505050612855565b8015612852576040805160ff80871682528516602082015281516001600160a01b0380861693908916927ff0ddc65c0d411f042f723dcfa1b7d13e85a35b7b70761d447c6500411cacf328929081900390910190a35b50505b50505050565b6001600160a01b03821660009081526020818152604080832060ff851684526006019091529020600201546004111561289b576115c2828460028461275f565b6001600160a01b0380831660009081526020818152604080832060ff8616808552600691820184528285205490951684528383528184209484529390930181529082902060010180548351818402810184019094528084526060939283018282801561293057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612912575b50505050509050805160021415612a8d57826001600160a01b03168160008151811061295857fe5b60200260200101516001600160a01b0316148061299a5750826001600160a01b03168160018151811061298757fe5b60200260200101516001600160a01b0316145b156129fc576001600160a01b0380841660008181526020818152604080832060ff8816808552600691820184528285205490961684528383528184209584529490940190529190912060050180546001600160a01b0319169091179055612a8d565b805160011415612a8d57826001600160a01b031681600081518110612a1d57fe5b60200260200101516001600160a01b03161415612a8d576001600160a01b0380841660008181526020818152604080832060ff8816808552600691820184528285205490961684528383528184209584529490940190529190912060050180546001600160a01b03191690911790555b60408051600080825260208083018085526001600160a01b038816835282825284832060ff881684526006019091529290209051612ad192600190920191906133ed565b5060408051600080825260208083018085526001600160a01b038816835282825284832060ff881684526006019091529290209051612b1692600290920191906133ed565b506001600160a01b03831660009081526020818152604080832060ff808716855260068201845282852060050180546001600160a01b0319169055600187018116855260049091019092529091205416158015612b77575060ff8216600c14155b15612bb2576001600160a01b03831660009081526020818152604080832060ff861684526006019091529020600301805460ff191660011790555b6001600160a01b0380841660008181526020818152604080832060ff8816845260060190915290206004018054600101905560055490911614612c4d576000612bfb84846112d2565b604080516002815260ff8616602082015281519293506001600160a01b038089169381861693918916926000805160206134cc83398151915292908290030190a4612c4784828561185e565b50612855565b600554604080516002815260ff8516602082015281516001600160a01b03808916946000949116926000805160206134cc833981519152929081900390910190a4600554612855906001600160a01b03168560028561275f565b80612f57576001600160a01b03831660009081526020818152604080832060ff86168452600601909152812060010180548291908290612ce357fe5b6000918252602080832091909101546001600160a01b039081168452838201949094526040928301822060ff8716808452600691820183528484206001908101805480830182559086528486200180546001600160a01b0319168c891617905595891684528383528484209084520190529081209091018054909190612d6557fe5b60009182526020808320909101546001600160a01b038681168452838352604080852060ff88168652600601909352918320600101805491831693928816926000805160206134ac833981519152926002928892918291908290612dc557fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c1683526006909101845290829020600101548251958216865293811692850192909252911682820152519081900360600190a36001600160a01b0380841660008181526020818152604080832060ff881684526006019091528120600101805492938816926000805160206134ac8339815191529260029288928291908290612e7557fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c168352600690910184529082902060010154825195821686529381169285019290925260029092011682820152519081900360600190a36001600160a01b03831660009081526020818152604080832060ff8616845260060190915281206001018054909190612f0c57fe5b60009182526020808320909101546001600160a01b038781168452838352604080852060ff881686526006019093529190922080546001600160a01b03191691909216179055612855565b6001600160a01b03831660009081526020818152604080832060ff861684526006019091528120600190810180548392908110612f9057fe5b6000918252602080832091909101546001600160a01b039081168452838201949094526040928301822060ff8716808452600691820183528484206001908101805480830182559086528486200180546001600160a01b0319168c891617905595891684528383528484209084520190522081018054909190811061301157fe5b60009182526020808320909101546001600160a01b038681168452838352604080852060ff881686526006019093529183206001908101805492841694938916936000805160206134ac8339815191529360029389938392909190811061307457fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c1683526006909101845290829020600101548251958216865293811692850192909252911682820152519081900360600190a36001600160a01b0380841660008181526020818152604080832060ff8816845260060190915281206001908101805493948916936000805160206134ac833981519152936002938993919283929190811061312957fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c168352600690910184529082902060010154825195821686529381169285019290925260049092011682820152519081900360600190a36001600160a01b03831660009081526020818152604080832060ff8616845260060190915290206001908101805490919081106131c457fe5b60009182526020808320909101546001600160a01b038781168452838352604080852060ff881686526006019093529190922080546001600160a01b0319169190921617905550505050565b6000808581600160ff871614156132e6575b6001600160a01b03821660009081526020818152604080832060ff808a16855260059091019092529091206002015416156132d757604080516001815260ff8716602082015281516001600160a01b03808b1693908616927ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709929081900390910190a3506001600160a01b0390811660009081526020818152604080832060ff881684526005019091529020541660016132e1565b909250905061339b565b613222565b6001600160a01b03821660009081526020818152604080832060ff808a16855260069091019092529091206003015416156132d757604080516002815260ff8716602082015281516001600160a01b03808b1693908616927ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709929081900390910190a3506001600160a01b0390811660009081526020818152604080832060ff881684526006019091529020541660016132e6565b94509492505050565b60405180606001604052806000815260200160006001600160a01b03168152602001600081525090565b604051806101800160405280600c906020820280388339509192915050565b828054828255906000526020600020908101928215613442579160200282015b8281111561344257825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061340d565b5061344e929150613452565b5090565b61347691905b8082111561344e5780546001600160a01b0319168155600101613458565b9056fe546869732066756e6374696f6e206973206f6e6c7920617661696c61626c6520666f7220666972737420323420686f75727368062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d82a00c953eff38ec1b71e7fe060b2ab8df0bbe5354319fbdde4fbdafd6324386a675736572206973206e6f74206578697374732e2052656769737465722066697273742ea265627a7a7231582092e0e1254b0900f58f10e99be3d5d158fc63f8aceb7605237768de640b6acd1b64736f6c63430005100032

Deployed Bytecode Sourcemap

1277:21830:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3965:8;3962:90;;4034:5;;4009:31;;4022:10;;-1:-1:-1;;;;;4034:5:0;4009:12;:31::i;:::-;4002:38;;3962:90;4072:50;4085:10;4097:24;4112:8;;4097:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4097:14:0;;-1:-1:-1;;;4097:24:0:i;:::-;4072:12;:50::i;:::-;1277:21830;19324:155;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19324:155:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19324:155:0;;-1:-1:-1;;;;;19324:155:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2183:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2183:40:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2183:40:0;-1:-1:-1;;;;;2183:40:0;;:::i;:::-;;;;;;;;;;;;;;;;1993:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1993:37:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2087:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2087:43:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2087:43:0;;:::i;:::-;;;;-1:-1:-1;;;;;2087:43:0;;;;;;;;;;;;;;2233:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2233:26:0;;;:::i;4343:370::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4343:370:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4343:370:0;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4343:370:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2137:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2137:39:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2137:39:0;;:::i;20469:110::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20469:110:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20469:110:0;-1:-1:-1;;;;;20469:110:0;;:::i;2388:43::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2388:43:0;;;:::i;4138:193::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4138:193:0;-1:-1:-1;;;;;4138:193:0;;:::i;4725:375::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4725:375:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4725:375:0;;;;;;;;;;;;;;;;;:::i;19650:312::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19650:312:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19650:312:0;;-1:-1:-1;;;;;19650:312:0;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;19650:312:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;19650:312:0;;;;;;;;;;;;;;;;;;;2266:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2266:20:0;;;:::i;22850:254::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22850:254:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22850:254:0;;:::i;19970:487::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19970:487:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19970:487:0;;-1:-1:-1;;;;;19970:487:0;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;19970:487:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;19970:487:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;19970:487:0;;;;;;;;;;;;;;;;;;;;;;2438:72;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2438:72:0;;;:::i;2293:33::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2293:33:0;;;:::i;2043:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2043:37:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2043:37:0;-1:-1:-1;;;;;2043:37:0;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2043:37:0;;;;;;;;;;;;;;;;;;;;19487:155;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19487:155:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19487:155:0;;-1:-1:-1;;;;;19487:155:0;;;;;;;;:::i;5112:198::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5112:198:0;;;;;;;;;;;:::i;18959:349::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18959:349:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18959:349:0;;-1:-1:-1;;;;;18959:349:0;;;;;;;;:::i;2339:40::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2339:40:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2339:40:0;;;;:::i;18598:349::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18598:349:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18598:349:0;;-1:-1:-1;;;;;18598:349:0;;;;;;;;:::i;22419:423::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22419:423:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22419:423:0;-1:-1:-1;;;;;22419:423:0;;:::i;:::-;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;22419:423:0;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;22419:423:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6978:1596;7082:5;;-1:-1:-1;;;;;7082:5:0;7070:10;:17;7065:95;;7123:1;7112:13;;:10;:13;;;;7126:1;7112:15;7098:9;:30;7090:70;;;;;-1:-1:-1;;;7090:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7187:25;7200:11;7187:12;:25::i;:::-;7186:26;7178:50;;;;;-1:-1:-1;;;7178:50:0;;;;;;;;;;;;-1:-1:-1;;;7178:50:0;;;;;;;;;;;;;;;7247:29;7260:15;7247:12;:29::i;:::-;7239:61;;;;;-1:-1:-1;;;7239:61:0;;;;;;;;;;;;-1:-1:-1;;;7239:61:0;;;;;;;;;;;;;;;7336:12;;7371:11;;7321:62;;;-1:-1:-1;;;7321:62:0;;7359:10;7321:62;;;;;;;;;;;;-1:-1:-1;;;;;7336:12:0;;;;7321:37;;:62;;;;;;;;;;;;;;;7336:12;;7321:62;;;5:2:-1;;;;30:1;27;20:12;5:2;7321:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7321:62:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7321:62:0;7313:94;;;;;-1:-1:-1;;;7313:94:0;;;;;;;;;;;;-1:-1:-1;;;7313:94:0;;;;;;;;;;;;;;;7474:24;;7527:9;;;;7519:42;;;;;-1:-1:-1;;;7519:42:0;;;;;;;;;;;;-1:-1:-1;;;7519:42:0;;;;;;;;;;;;;;;7576:10;:12;;;;;;7603:16;;:::i;:::-;-1:-1:-1;7622:117:0;;;;;;;;7646:10;;;7622:117;;-1:-1:-1;;;;;7622:117:0;;;;;;;;;;-1:-1:-1;7622:117:0;;;;;;7760:18;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7760:25:0;;;;;;;;;;;;;;;;7808:10;;7796:23;;;;;;;;:37;;;;;;;;7854:45;;;;;;;;;7920:36;;;:33;;;:36;;;;;:43;;-1:-1:-1;;7920:43:0;;;;;;;;7975:36;;;:33;;;:36;;;;;:43;;;;;;;;;;8057:10;;8049:19;;;;;;;;:33;;;;;;;;;;;8113:22;;;;;;;;;:36;:38;;;;;;7622:117;;-1:-1:-1;8189:34:0;;7766:11;;8189:18;:34::i;:::-;-1:-1:-1;;;;;8234:18:0;;;:5;:18;;;;;;;;;;;8262:1;8234:30;;;:27;;;;:30;;;;;;:63;;-1:-1:-1;;;;;;8234:63:0;;;;;;;;;;;;;-1:-1:-1;8308:48:0;;8234:18;;:63;;8308:16;:48::i;:::-;8369:68;8386:11;8399:34;8418:11;8431:1;8399:18;:34::i;:::-;8435:1;8369:16;:68::i;:::-;-1:-1:-1;;;;;8506:18:0;;;:5;:18;;;;;;;;;;;:21;8463:103;;;8529:22;;;;;;;:25;8463:103;;;;;8556:9;8463:103;;;;;;;;;;;8506:18;8463:103;;;;;;;;;;6978:1596;;;;;:::o;22253:158::-;22389:2;22380:12;22374:19;;22351:53::o;19324:155::-;-1:-1:-1;;;;;19431:18:0;;19407:4;19431:18;;;;;;;;;;;:40;;;;;;:33;;;;:40;;;;;;;;19324:155;;;;;:::o;2183:40::-;;;;;;;;;;;;;:::o;1993:37::-;2028:2;1993:37;:::o;2087:43::-;;;;;;;;;;;;-1:-1:-1;;;;;2087:43:0;;:::o;2233:26::-;;;;:::o;4343:370::-;4481:5;;4435:13;;-1:-1:-1;;;;;4481:5:0;4469:10;:17;4461:43;;;;;-1:-1:-1;;;4461:43:0;;;;;;;;;;;;-1:-1:-1;;;4461:43:0;;;;;;;;;;;;;;;4550:3;4523:18;;4542:5;4523:24;:30;4515:94;;;;-1:-1:-1;;;4515:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4620:42;4633:11;4646:15;4620:12;:42::i;:::-;-1:-1:-1;4673:32:0;;;;;;;;;;;;-1:-1:-1;;;4673:32:0;;;;4343:370;;;;:::o;2137:39::-;;;;;;;;;;;;-1:-1:-1;;;;;2137:39:0;;:::o;20469:110::-;-1:-1:-1;;;;;20551:11:0;20526:4;20551:11;;;;;;;;;;:14;:19;;;20469:110::o;2388:43::-;;;;:::o;4138:193::-;4213:13;4239:41;4252:10;4264:15;4239:12;:41::i;:::-;-1:-1:-1;;4291:32:0;;;;;;;;;;;;-1:-1:-1;;;4291:32:0;;;;;4138:193::o;4725:375::-;4861:5;;4815:13;;-1:-1:-1;;;;;4861:5:0;4849:10;:17;4841:43;;;;;-1:-1:-1;;;4841:43:0;;;;;;;;;;;;-1:-1:-1;;;4841:43:0;;;;;;;;;;;;;;;4930:3;4903:18;;4922:5;4903:24;:30;4895:94;;;;-1:-1:-1;;;4895:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5000:47;5020:11;5033:6;5041:5;5000:19;:47::i;:::-;-1:-1:-1;5058:34:0;;;;;;;;;;;;-1:-1:-1;;;5058:34:0;;;;4725:375;;;;;:::o;19650:312::-;-1:-1:-1;;;;;19779:18:0;;;19727:7;19779:18;;;;;;;;;;;:34;;;;;;:27;;;;:34;;;;;:50;;19911:42;;;;19779:50;19848:44;;;19771:183;;;;;;;;;;;;;;;;;19727:7;;19736:16;;19727:7;;19779:50;;;;;19848:44;;19911:42;;;;;19771:183;;19848:44;;19771:183;;;19848:44;19771:183;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19771:183:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19650:312;;;;;:::o;2266:20::-;;;-1:-1:-1;;;;;2266:20:0;;:::o;22850:254::-;22950:5;;22906:4;;-1:-1:-1;;;;;22950:5:0;22936:10;:19;22928:46;;;;;-1:-1:-1;;;22928:46:0;;;;;;;;;;;;-1:-1:-1;;;22928:46:0;;;;;;;;;;;;;;;23008:12;;22993:57;;;-1:-1:-1;;;22993:57:0;;23031:10;22993:57;;;;;;;;;;;;-1:-1:-1;;;;;23008:12:0;;;;22993:37;;:57;;;;;;;;;;;;;;;23008:12;;22993:57;;;5:2:-1;;;;30:1;27;20:12;5:2;22993:57:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22993:57:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22993:57:0;22985:89;;;;;-1:-1:-1;;;22985:89:0;;;;;;;;;;;;-1:-1:-1;;;22985:89:0;;;;;;;;;;;;;;;-1:-1:-1;23092:4:0;22850:254;;;:::o;19970:487::-;-1:-1:-1;;;;;20126:18:0;;;20047:7;20126:18;;;;;;;;;;;:34;;;;;;:27;;;;:34;;;;;:50;;20342:42;;;;20403:45;;;;20126:50;20195:54;;20118:331;;;;;;;;;;;;;;;;;20047:7;;20056:16;;;;20047:7;;;;20126:50;;;;20195:54;;20268:55;;;;;20342:42;;;;20403:45;;;;20118:331;20195:54;;20118:331;;;20195:54;20118:331;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20118:331:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20118:331:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19970:487;;;;;;;;:::o;2438:72::-;;;-1:-1:-1;;;;;2438:72:0;;:::o;2293:33::-;;;;:::o;2043:37::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2043:37:0;;;:::o;19487:155::-;-1:-1:-1;;;;;19594:18:0;;;;19570:4;19594:18;;;;;;;;;;;:40;;;;;;:33;;:40;;;;;;;;19487:155::o;5112:198::-;5185:13;5211:46;5231:10;5243:6;5251:5;5211:19;:46::i;:::-;-1:-1:-1;5268:34:0;;;;;;;;;;;;-1:-1:-1;;;5268:34:0;;;;5112:198;;;;:::o;18959:349::-;19041:7;19061:240;-1:-1:-1;;;;;19099:18:0;;;19093:5;19099:18;;;;;;;;;;;:27;;;;;;19093:34;;;;;:56;;;;;;:49;;;;:56;;;;;;;;19089:131;;;-1:-1:-1;;;;;;19177:18:0;;;:5;:18;;;;;;;;;;:27;;;;19170:34;;19089:131;-1:-1:-1;;;;;19262:18:0;;;:5;:18;;;;;;;;;;:27;;;;;;;19061:240;;2339:40;;;;;;;;;;;;;:::o;18598:349::-;18680:7;18700:240;-1:-1:-1;;;;;18738:18:0;;;18732:5;18738:18;;;;;;;;;;;:27;;;;;;18732:34;;;;;:56;;;;;;:49;;;;:56;;;;;;;;18728:131;;;-1:-1:-1;;;;;;18816:18:0;;;:5;:18;;;;;;;;;;:27;;;;18809:34;;18728:131;-1:-1:-1;;;;;18901:18:0;;;:5;:18;;;;;;;;;;:27;;;;;;;18700:240;;22419:423;22474:24;;:::i;:::-;22500;;:::i;:::-;22525:16;;22592:1;22577:258;2028:2;22595:15;;;;22577:258;;-1:-1:-1;;;;;22646:11:0;;:5;:11;;;;;;;;;;;:29;;;;;;;:26;;;;:29;;;;;;;;22632:8;;:11;;;;;;;:43;;;:11;;;;;:43;22693:8;:11;;;;;;;;;;;;;;22690:30;;;22719:1;22706:14;;22690:30;-1:-1:-1;;;;;22749:11:0;;:5;:11;;;;;;;;;;;:29;;;;;;;:26;;;;:29;;;;;;;;22735:8;;:11;;;;;;;:43;;;:11;;;;;:43;22796:8;:11;;;;;;;;;;;;;;22793:30;;;22822:1;22809:14;;22793:30;22612:3;;22577:258;;;;22419:423;;;;;:::o;8580:1717::-;-1:-1:-1;;;;;8684:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;;:31;;;;:38;;;;;:48;;;;27:10:-1;;23:18;;;45:23;;8684:66:0;;;;;;;;;-1:-1:-1;;;;;;8684:66:0;;;;;;;;;;;8767:38;;;:55;8825:1;-1:-1:-1;8763:291:0;;;-1:-1:-1;;;;;8848:116:0;;;8907:5;:22;;;;;;;;;;;:38;;;;;;;:31;;;;:38;;;;;;8891:1;8907:48;;;:55;8848:116;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8848:116:0;;;;;;;;8986:56;9003:15;9020:11;9033:1;9036:5;8986:16;:56::i;:::-;8979:63;;8763:291;9079:55;;;9122:1;9079:55;;;;;;;;;9132:1;9079:55;;;;;;-1:-1:-1;;;;;9079:55:0;;;;;;;;-1:-1:-1;;;;;;;;;;;9079:55:0;;;;;;;;9220:16;;;9234:1;9220:16;;;;;;;;;;-1:-1:-1;;;;;9169:22:0;;;;;;;;;;:38;;;;;:31;;:38;;;;;;:67;;;;:48;;;;;9220:16;9169:67;:::i;:::-;-1:-1:-1;;;;;;9252:22:0;;:5;:22;;;;;;;;;;;:46;9296:1;9290:7;;9252:46;;;;:37;;;;:46;;;;;;;;9251:47;:70;;;;-1:-1:-1;9302:19:0;;;2028:2;9302:19;;9251:70;9247:156;;;-1:-1:-1;;;;;9338:22:0;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:46;;:53;;-1:-1:-1;;9338:53:0;9387:4;9338:53;;;9247:156;9477:5;;-1:-1:-1;;;;;9458:24:0;;;9477:5;;9458:24;9454:836;;9542:27;9572:42;9591:15;9608:5;9572:18;:42::i;:::-;-1:-1:-1;;;;;9633:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:54;9542:72;;-1:-1:-1;9633:77:0;;;:54;;:77;9629:194;;-1:-1:-1;;;;;9731:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:76;;-1:-1:-1;;;;;;9731:76:0;;;;;;;;;;9629:194;-1:-1:-1;;;;;9851:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;;:31;;;;:38;;;;;;:52;;:54;;;;;;;;;9925:69;;;;;;;;;;;;;;;;;;;;;9851:22;-1:-1:-1;;;;;;;;;;;9925:69:0;;;;;;;10009:61;10026:15;10043:19;10064:5;10009:16;:61::i;:::-;9454:836;;;;10120:5;;10103:46;;-1:-1:-1;;;;;10120:5:0;10127:11;10120:5;10143;10103:16;:46::i;:::-;10170:5;;;-1:-1:-1;;;;;10170:5:0;;;10164;:12;;;;;;;;;;;:28;;;;;;:21;;;:28;;;;;:42;;:44;;10170:5;10164:44;;;;;;10237:5;;10228:50;;;;;;;;;;;;;;;10164:5;;10237;;;;;-1:-1:-1;;;;;;;;;;;10228:50:0;;;;;;;;;;9454:836;8580:1717;;;:::o;10305:4735::-;-1:-1:-1;;;;;10417:22:0;;:5;:22;;;;;;;;;;;:44;;;;;;:37;;;;:44;;;;;;;;10409:88;;;;;-1:-1:-1;;;10409:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10522:22:0;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;:65;10590:1;-1:-1:-1;10518:2298:0;;;-1:-1:-1;;;;;10608:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;;;:31;;;;:38;;;;;:58;;;;27:10:-1;;23:18;;;45:23;;10608:76:0;;;;;;;;;;;-1:-1:-1;;;;;;10608:76:0;;;;;;;;;10763:38;;;;:65;;10704:126;;10747:1;10704:126;;;;;;;;;;;;;;;;;;10608:22;;:76;-1:-1:-1;;;;;;;;;;;10704:126:0;;;;;;;;;-1:-1:-1;;;;;10892:18:0;;;:5;:18;;;;;;;;;;;:34;;;;;:27;;:34;;;;;:68;;-1:-1:-1;;;;;;10892:68:0;;;;;;;;;;11000:5;;;;;10981:24;10977:128;;;11033:56;11050:15;11067:11;11080:1;11083:5;11033:16;:56::i;10977:128::-;-1:-1:-1;;;;;11147:22:0;;;11133:11;11147:22;;;;;;;;;;;:38;;;;;;:31;;;;:38;;;;;:54;;;11228:10;;;;;;;;;:26;;;:19;;;:26;;;;;:47;;;;27:10:-1;;11147:54:0;23:18:-1;;;45:23;;11228:65:0;;;;;;;;;;;-1:-1:-1;;;;;;11228:65:0;;;;;;;;;;;11334:26;;;;:46;:53;11147:54;;11421:8;;11420:102;;;;-1:-1:-1;;;;;;11453:10:0;;;:5;:10;;;;;;;;;;;:26;;;;;:19;;:26;;;;;:46;;:49;;:68;;;;:46;;:5;:49;;;;;;;;;;;;;;-1:-1:-1;;;;;11453:49:0;:68;11420:102;:193;;;;-1:-1:-1;;;;;;11544:10:0;;;:5;:10;;;;;;;;;;;:26;;;;;:19;;:26;;;;;:46;;;;:49;;:68;;;;:46;;;:49;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11544:49:0;:68;11420:193;11416:1313;;;-1:-1:-1;;;;;11638:22:0;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;;;:65;:70;11634:264;;;11738:43;;;11769:1;11738:43;;;;;;;;;11779:1;11738:43;;;;;;-1:-1:-1;;;;;11738:43:0;;;;;;;;-1:-1:-1;;;;;;;;;;;11738:43:0;;;;;;;;11634:264;;;11835:43;;;11866:1;11835:43;;;;;;;;;11876:1;11835:43;;;;;;-1:-1:-1;;;;;11835:43:0;;;;;;;;-1:-1:-1;;;;;;;;;;;11835:43:0;;;;;;;;11634:264;11416:1313;;;11925:3;11932:1;11925:8;:20;;;;11937:3;11944:1;11937:8;11925:20;11924:115;;;;-1:-1:-1;;;;;;11971:10:0;;;:5;:10;;;;;;;;;;;:26;;;;;:19;;:26;;;;;:46;;:49;;:68;;;;:46;;:5;:49;;;;;;;;;;;;;;-1:-1:-1;;;;;11971:49:0;:68;11924:115;11920:809;;;-1:-1:-1;;;;;12064:22:0;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;;;:65;:70;12060:264;;;12164:43;;;12195:1;12164:43;;;;;;;;;12205:1;12164:43;;;;;;-1:-1:-1;;;;;12164:43:0;;;;;;;;-1:-1:-1;;;;;;;;;;;12164:43:0;;;;;;;;12060:264;;;12261:43;;;12292:1;12261:43;;;;;;;;;12302:1;12261:43;;;;;;-1:-1:-1;;;;;12261:43:0;;;;;;;;-1:-1:-1;;;;;;;;;;;12261:43:0;;;;;;;;11920:809;;;12349:3;12356:1;12349:8;:80;;;;-1:-1:-1;;;;;;12361:10:0;;;:5;:10;;;;;;;;;;;:26;;;;;:19;;:26;;;;;:46;;;;:49;;:68;;;;:46;;;:49;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12361:49:0;:68;12349:80;12345:384;;;-1:-1:-1;;;;;12454:22:0;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;;;:65;:70;12450:264;;;12554:43;;;12585:1;12554:43;;;;;;;;;12595:1;12554:43;;;;;;-1:-1:-1;;;;;12554:43:0;;;;;;;;-1:-1:-1;;;;;;;;;;;12554:43:0;;;;;;;;12450:264;;;12651:43;;;12682:1;12651:43;;;;;;;;;12692:1;12651:43;;;;;;-1:-1:-1;;;;;12651:43:0;;;;;;;;-1:-1:-1;;;;;;;;;;;12651:43:0;;;;;;;;12450:264;12752:52;12780:11;12793:3;12798:5;12752:27;:52::i;:::-;12745:59;;;;10518:2298;-1:-1:-1;;;;;12836:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;;:31;;;;:38;;;;;:59;;;27:10:-1;;39:1;23:18;;45:23;;12836:77:0;;;;;;;;;;;-1:-1:-1;;;;;;12836:77:0;;;;;;;12930:38;;;:49;;;;:63;12926:1082;;-1:-1:-1;;;;;13098:22:0;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;;;:61;;:58;;;:61;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13015:22:0;;;;;;;;;;;;:38;;;;;:31;;:38;;;;;;13098:61;13015:58;:61;;13098;;;;;13015:58;;:61;;;;;;;;;;;;;;-1:-1:-1;;;;;13015:61:0;:144;13014:300;;;;-1:-1:-1;;;;;;13264:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:49;;;;;13182:58;;;:61;;13264:49;;;;;13182:58;13264:5;13182:61;;;;;;;;;;;;;;-1:-1:-1;;;;;13182:61:0;:131;13014:300;13010:987;;;13337:51;13346:11;13359:15;13376:5;13383:4;13337:8;:51::i;:::-;13414:64;13442:11;13455:15;13472:5;13414:27;:64::i;13010:987::-;-1:-1:-1;;;;;13587:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:49;;;;;13504:58;;;:61;;13587:49;;;;;13504:58;13587:5;13504:61;;;;;;;;;;;;;;-1:-1:-1;;;;;13504:61:0;:132;13500:497;;;13657:51;13666:11;13679:15;13696:5;13703:4;13657:8;:51::i;13500:497::-;13839:52;13848:11;13861:15;13878:5;13885;13839:8;:52::i;13500:497::-;-1:-1:-1;;;;;14024:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;;;:61;;:76;;;;:58;;;:61;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14024:61:0;:76;14020:499;;;14117:52;14126:11;14139:15;14156:5;14163;14117:8;:52::i;14020:499::-;-1:-1:-1;;;;;14277:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;:61;;:76;;;;:58;;:5;:61;;;;;;;;;;;;;;-1:-1:-1;;;;;14277:61:0;:76;14273:246;;;14370:51;14379:11;14392:15;14409:5;14416:4;14370:8;:51::i;14273:246::-;-1:-1:-1;;;;;14678:22:0;;14672:5;14678:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;;;:61;;14672:5;;14678:58;:61;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14678:61:0;;;14672:68;;;;;;;;;;;;;;;:84;;;;;;:77;;;;:84;;;;;14678:61;14672:104;;;:111;14549:22;;;;;;;;;;;:38;;;:31;;:38;;;;;;:58;;;:61;;14678;;14549:58;14678:61;;14549;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14549:61:0;14543:68;;;;;;;;;;;;;;;:84;;;;;:77;;:84;;;;;14549:61;14543:104;:111;:240;14539:409;;14800:52;14809:11;14822:15;14839:5;14846;14800:8;:52::i;:::-;14539:409;;;14885:51;14894:11;14907:15;14924:5;14931:4;14885:8;:51::i;:::-;14968:64;14996:11;15009:15;15026:5;14968:27;:64::i;5326:1636::-;5423:18;5436:4;5423:12;:18::i;:::-;5415:66;;;;-1:-1:-1;;;5415:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5500:6;:11;;5510:1;5500:11;:26;;;;5515:6;:11;;5525:1;5515:11;5500:26;5492:53;;;;;-1:-1:-1;;;5492:53:0;;;;;;;;;;;;-1:-1:-1;;;5492:53:0;;;;;;;;;;;;;;;5573:5;;-1:-1:-1;;;;;5573:5:0;5561:10;:17;5556:81;;5602:17;;;;;;;:10;:17;;;;;;5589:9;:30;5581:56;;;;;-1:-1:-1;;;5581:56:0;;;;;;;;;;;;-1:-1:-1;;;5581:56:0;;;;;;;;;;;;;;;5664:1;5656:5;:9;;;:32;;;;-1:-1:-1;2028:2:0;5669:19;;;;;5656:32;5648:58;;;;;-1:-1:-1;;;5648:58:0;;;;;;;;;;;;-1:-1:-1;;;5648:58:0;;;;;;;;;;;;;;;5742:12;;5771:11;;5727:56;;;-1:-1:-1;;;5727:56:0;;-1:-1:-1;;;;;5727:56:0;;;;;;;;;;;;;;;;5742:12;;;;;5727:37;;:56;;;;;;;;;;;;;;5742:12;;5727:56;;;5:2:-1;;;;30:1;27;20:12;5:2;5727:56:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5727:56:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5727:56:0;5719:88;;;;;-1:-1:-1;;;5719:88:0;;;;;;;;;;;;-1:-1:-1;;;5719:88:0;;;;;;;;;;;;;;;5824:6;:11;;5834:1;5824:11;5820:1135;;;-1:-1:-1;;;;;5861:11:0;;:5;:11;;;;;;;;;;;:33;;;;;;:26;;;;:33;;;;;;;;5860:34;5852:70;;;;;-1:-1:-1;;;5852:70:0;;;;;;;;;;;;-1:-1:-1;;;5852:70:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;5943:11:0;;:5;:11;;;;;;;;;;;:29;-1:-1:-1;;5964:7:0;;5943:29;;;;:20;;;;:29;;;;;;:37;;;;5939:123;;;-1:-1:-1;;;;;6001:11:0;;6041:5;6001:11;;;;;;;;;;;:29;-1:-1:-1;;6022:7:0;;6001:29;;;:20;;:29;;;;;:37;;:45;;-1:-1:-1;;6001:45:0;;;5939:123;6082:22;6107:31;6126:4;6132:5;6107:18;:31::i;:::-;-1:-1:-1;;;;;6153:11:0;;;:5;:11;;;;;;;;;;;:27;;;;;:20;;;:27;;;;;:60;;-1:-1:-1;;;;;;6153:60:0;;;;;;;;;;;6228:26;;;;:33;;;:40;;-1:-1:-1;;6228:40:0;-1:-1:-1;6228:40:0;;;6153:60;-1:-1:-1;6283:45:0;6153:11;:60;:27;6283:16;:45::i;:::-;6362:50;;;6392:1;6362:50;;;;;;;;;6402:9;6362:50;;;;;;-1:-1:-1;;;;;6362:50:0;;;;;;;;;;;;;;;;;5820:1135;;;;-1:-1:-1;;;;;6456:11:0;;:5;:11;;;;;;;;;;;:33;;;;;;:26;;;;:33;;;;;;;;6455:34;6447:70;;;;;-1:-1:-1;;;6447:70:0;;;;;;;;;;;;-1:-1:-1;;;6447:70:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;6539:11:0;;:5;:11;;;;;;;;;;;:29;-1:-1:-1;;6560:7:0;;6539:29;;;;:20;;;;:29;;;;;;:37;;;;6535:123;;;-1:-1:-1;;;;;6597:11:0;;6637:5;6597:11;;;;;;;;;;;:29;-1:-1:-1;;6618:7:0;;6597:29;;;:20;;:29;;;;;:37;;:45;;-1:-1:-1;;6597:45:0;;;6535:123;6674:22;6699:31;6718:4;6724:5;6699:18;:31::i;:::-;-1:-1:-1;;;;;6759:11:0;;:5;:11;;;;;;;;;;;:33;;;;;:26;;:33;;;;;:40;;-1:-1:-1;;6759:40:0;6795:4;6759:40;;;6674:56;-1:-1:-1;6814:45:0;6765:4;6674:56;6786:5;6814:16;:45::i;:::-;6893:50;;;6923:1;6893:50;;;;;;;;;6933:9;6893:50;;;;;;-1:-1:-1;;;;;6893:50:0;;;;;;;;;;;;;;;;;5820:1135;5326:1636;;;:::o;21668:579::-;21791:5;;-1:-1:-1;;;;;21791:5:0;21779:10;:17;21776:464;;21823:16;21841:21;21866:50;21882:11;21895:5;21902:6;21910:5;21866:15;:50::i;:::-;21970:17;;;;;;;:10;:17;;;;;;;21938:50;;21822:94;;-1:-1:-1;21822:94:0;;-1:-1:-1;;;;;;21938:31:0;;;:50;;;;;21970:17;21938:50;21970:17;21938:50;21970:17;21938:31;:50;;;;;;;21933:157;;22016:58;;-1:-1:-1;;;;;22016:35:0;;;22052:21;22016:58;;;;;;;;;22052:21;22016:35;:58;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22016:58:0;22009:65;;;;21933:157;22118:16;22114:115;;;22160:53;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22160:53:0;;;;;;;;;;;;;;;;;;;22114:115;21776:464;;;21668:579;;;;:::o;16677:1909::-;-1:-1:-1;;;;;16796:22:0;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:59;;:66;16865:1;-1:-1:-1;16792:166:0;;;16890:56;16907:15;16924:11;16937:1;16940:5;16890:16;:56::i;16792:166::-;-1:-1:-1;;;;;17006:22:0;;;17000:5;17006:22;;;;;;;;;;;:38;;;;;;:31;;;;:38;;;;;:54;;;;17000:61;;;;;;;;:77;;;:70;;;;:77;;;;;;17006:54;17000:97;16978:119;;;;;;;;;;;;;;;;;:19;;:119;;;17000:97;16978:119;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16978:119:0;;;;;;;;;;;;;;;;;;;;;;;17122:2;:9;17135:1;17122:14;17118:501;;;17166:15;-1:-1:-1;;;;;17157:24:0;:2;17160:1;17157:5;;;;;;;;;;;;;;-1:-1:-1;;;;;17157:24:0;;:69;;;;17211:15;-1:-1:-1;;;;;17202:24:0;:2;17205:1;17202:5;;;;;;;;;;;;;;-1:-1:-1;;;;;17202:24:0;;17157:69;17153:455;;;-1:-1:-1;;;;;17253:22:0;;;17247:5;17253:22;;;;;;;;;;;:38;;;;;;:31;;;;:38;;;;;:54;;;;17247:61;;;;;;;;:77;;;:70;;;;:77;;;;;;:88;;:106;;-1:-1:-1;;;;;;17247:106:0;;;;;;17153:455;;;17379:2;:9;17392:1;17379:14;17375:233;;;17427:15;-1:-1:-1;;;;;17418:24:0;:2;17421:1;17418:5;;;;;;;;;;;;;;-1:-1:-1;;;;;17418:24:0;;17414:179;;;-1:-1:-1;;;;;17473:22:0;;;17467:5;17473:22;;;;;;;;;;;:38;;;;;;:31;;;;:38;;;;;:54;;;;17467:61;;;;;;;;:77;;;:70;;;;:77;;;;;;:88;;:106;;-1:-1:-1;;;;;;17467:106:0;;;;;;17414:179;17700:16;;;17714:1;17700:16;;;;;;;;;;-1:-1:-1;;;;;17639:22:0;;;;;;;;;;:38;;;;;:31;;:38;;;;;;:77;;;;:58;;;;;17700:16;17639:77;:::i;:::-;-1:-1:-1;17789:16:0;;;17803:1;17789:16;;;;;;;;;;-1:-1:-1;;;;;17727:22:0;;;;;;;;;;:38;;;;;:31;;:38;;;;;;:78;;;;:59;;;;;17789:16;17727:78;:::i;:::-;-1:-1:-1;;;;;;17816:22:0;;17876:1;17816:22;;;;;;;;;;;:38;;;;;;:31;;;:38;;;;;:49;;:62;;-1:-1:-1;;;;;;17816:62:0;;;;17934:7;;17896:46;;;;:37;;;;:46;;;;;;;;17895:47;:70;;;;-1:-1:-1;17946:19:0;;;2028:2;17946:19;;17895:70;17891:156;;;-1:-1:-1;;;;;17982:22:0;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:46;;:53;;-1:-1:-1;;17982:53:0;18031:4;17982:53;;;17891:156;-1:-1:-1;;;;;18059:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:52;;:54;;;;;;18157:5;;;;;18138:24;18134:445;;18179:27;18209:42;18228:15;18245:5;18209:18;:42::i;:::-;18273:69;;;18333:1;18273:69;;;;;;;;;;;18179:72;;-1:-1:-1;;;;;;18273:69:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18273:69:0;;;;;;;;18357:61;18374:15;18391:19;18412:5;18357:16;:61::i;:::-;18134:445;;;;18465:5;;18456:50;;;18497:1;18456:50;;;;;;;;;;;-1:-1:-1;;;;;18456:50:0;;;;18480:1;;18465:5;;;-1:-1:-1;;;;;;;;;;;18456:50:0;;;;;;;;;;18538:5;;18521:46;;-1:-1:-1;;;;;18538:5:0;18545:11;18558:1;18561:5;18521:16;:46::i;15048:1617::-;15158:2;15153:1505;;-1:-1:-1;;;;;15183:22:0;;15177:5;15183:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;:61;;15177:5;;15183:58;15177:5;;15183:61;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15183:61:0;;;15177:68;;;;;;;;;;;;;;;:84;;;;;;:77;;;;:84;;;;;15183:61;15177:104;;;27:10:-1;;23:18;;;45:23;;15177:122:0;;;;;;;;;-1:-1:-1;;;;;;15177:122:0;;;;;;;15345:22;;;;;;;;;;;:38;;;:31;:38;;;;;:58;;;:61;;:58;;15183:61;15345;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15430:22:0;;;;;;;;;;;;:38;;;;;:31;;:38;;;;;;15345:61;15430:58;:61;;15345;;;;15319:218;;;;-1:-1:-1;;;;;;;;;;;15319:218:0;15408:1;;15411:5;;15345:61;;;15430:58;15345:61;;15430;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15430:61:0;15424:68;;;;;;;;;;;;;;;:84;;;;;;:77;;;;:84;;;;;;15430:61;15424:104;:111;15319:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15557:176:0;;;15620:5;15626:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;:61;;15557:176;;;;;-1:-1:-1;;;;;;;;;;;15557:176:0;15600:1;;15603:5;;15620;;15626:58;15620:5;;15626:61;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15626:61:0;15620:68;;;;;;;;;;;;;;;:84;;;;;;:77;;;;:84;;;;;;15626:61;15620:104;:111;15557:176;;;;;;;;;;;;;;;;;15610:1;:122;;;15557:176;;;;;;;;;;;;;;-1:-1:-1;;;;;15834:22:0;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;:61;;:58;;:5;:61;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15781:18:0;;;;;;;;;;;;:34;;;;;:27;;:34;;;;;;;:114;;-1:-1:-1;;;;;;15781:114:0;15834:61;;;;15781:114;;;15153:1505;;;-1:-1:-1;;;;;15934:22:0;;15928:5;15934:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;;;:61;;15928:5;;15934:58;:61;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15934:61:0;;;15928:68;;;;;;;;;;;;;;;:84;;;;;;:77;;;;:84;;;;;15934:61;15928:104;;;27:10:-1;;23:18;;;45:23;;15928:122:0;;;;;;;;;-1:-1:-1;;;;;;15928:122:0;;;;;;;16096:22;;;;;;;;;;;:38;;;:31;:38;;;:58;;:61;;:58;;15934:61;16096;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16181:22:0;;;;;;;;;;;;:38;;;;;:31;;:38;;;;;;16096:61;16181:58;;;:61;;16096;;;;16070:218;;;;-1:-1:-1;;;;;;;;;;;16070:218:0;16159:1;;16162:5;;16096:61;;16181:58;;16096:61;16181;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16181:61:0;16175:68;;;;;;;;;;;;;;;:84;;;;;;:77;;;;:84;;;;;;16181:61;16175:104;:111;16070:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16308:176:0;;;16371:5;16377:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;;;:61;;16308:176;;;;;-1:-1:-1;;;;;;;;;;;16308:176:0;16351:1;;16354:5;;16371;;;;16377:58;;:61;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16377:61:0;16371:68;;;;;;;;;;;;;;;:84;;;;;;:77;;;;:84;;;;;;16377:61;16371:104;:111;16308:176;;;;;;;;;;;;;;;;;16361:1;:122;;;16308:176;;;;;;;;;;;;;;-1:-1:-1;;;;;16585:22:0;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;;;:61;;:58;;;:61;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16532:18:0;;;;;;;;;;;;:34;;;;;:27;;:34;;;;;;;:114;;-1:-1:-1;;;;;;16532:114:0;16585:61;;;;16532:114;;;15048:1617;;;;:::o;20587:1073::-;20691:7;;20736:11;20691:7;20804:1;20794:11;;;;20790:863;;;20822:394;-1:-1:-1;;;;;20858:15:0;;:5;:15;;;;;;;;;;;:31;;;;;;:24;;;;:31;;;;;;:39;;;;20854:347;;;20927:43;;;20961:1;20927:43;;;;;;;;;;;-1:-1:-1;;;;;20927:43:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21050:15:0;;;:5;:15;;;;;;;;;;;:31;;;;;:24;;:31;;;;;:47;;21012:4;20854:347;;;21154:8;;-1:-1:-1;21164:16:0;-1:-1:-1;21146:35:0;;20854:347;20822:394;;20790:863;-1:-1:-1;;;;;21284:15:0;;:5;:15;;;;;;;;;;;:31;;;;;;:24;;;;:31;;;;;;:39;;;;21280:347;;;21353:43;;;21387:1;21353:43;;;;;;;;;;;-1:-1:-1;;;;;21353:43:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21476:15:0;;;:5;:15;;;;;;;;;;;:31;;;;;:24;;:31;;;;;:47;;21438:4;21248:394;;20587:1073;;;;;;;;:::o;1277:21830::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;1277:21830:0;;;;;;;;;;:::o;:::-;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;1277:21830:0;;;-1:-1:-1;;1277:21830:0:o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1277:21830:0;-1:-1:-1;;;;;1277:21830:0;;;;;;;;;;;-1:-1:-1;1277:21830:0;;;;;;;-1:-1:-1;1277:21830:0;;;-1:-1:-1;1277:21830:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;1277:21830:0;;;;;;;;;:::o

Swarm Source

bzzr://92e0e1254b0900f58f10e99be3d5d158fc63f8aceb7605237768de640b6acd1b

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.