ETH Price: $3,310.06 (+1.17%)
Gas: 4 Gwei

Contract

0x98278eB74b388Efd4d6Fc81Dd3f95b642Ce53f2b
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim War Fund D...98662892020-04-13 20:53:191567 days ago1586811199IN
0x98278eB7...42Ce53f2b
0 ETH0.000309273.1
Claim War Fund D...98661612020-04-13 20:28:011567 days ago1586809681IN
0x98278eB7...42Ce53f2b
0 ETH0.000175472
Claim War Fund D...98659562020-04-13 19:46:231567 days ago1586807183IN
0x98278eB7...42Ce53f2b
0 ETH0.00046193.51
Snapshot Daily W...98649562020-04-13 16:00:051568 days ago1586793605IN
0x98278eB7...42Ce53f2b
0 ETH0.0044796911
Claim War Fund D...98626132020-04-13 7:17:091568 days ago1586762229IN
0x98278eB7...42Ce53f2b
0 ETH0.000465015
Snapshot Daily W...98587372020-04-12 16:59:561569 days ago1586710796IN
0x98278eB7...42Ce53f2b
0 ETH0.0044796911
Claim War Fund D...98525472020-04-11 18:19:091570 days ago1586629149IN
0x98278eB7...42Ce53f2b
0 ETH0.000073371.1
Claim War Fund D...98525272020-04-11 18:14:161570 days ago1586628856IN
0x98278eB7...42Ce53f2b
0 ETH0.000253881
Snapshot Daily W...98524632020-04-11 18:00:021570 days ago1586628002IN
0x98278eB7...42Ce53f2b
0 ETH0.003166837.5
Claim War Fund D...98520762020-04-11 16:28:181570 days ago1586622498IN
0x98278eB7...42Ce53f2b
0 ETH0.000181711.2
Claim War Fund D...98520762020-04-11 16:28:181570 days ago1586622498IN
0x98278eB7...42Ce53f2b
0 ETH0.000087241.2
Claim War Fund D...98520602020-04-11 16:25:141570 days ago1586622314IN
0x98278eB7...42Ce53f2b
0 ETH0.000271242.1
Claim War Fund D...98520602020-04-11 16:25:141570 days ago1586622314IN
0x98278eB7...42Ce53f2b
0 ETH0.000224912.1
Claim War Fund D...98489052020-04-11 4:49:301570 days ago1586580570IN
0x98278eB7...42Ce53f2b
0 ETH0.000694247.8
Claim War Fund D...98463182020-04-10 19:09:051571 days ago1586545745IN
0x98278eB7...42Ce53f2b
0 ETH0.000465015
Snapshot Daily W...98462832020-04-10 19:00:071571 days ago1586545207IN
0x98278eB7...42Ce53f2b
0 ETH0.002965567.02331796
Claim War Fund D...98416212020-04-10 1:39:391571 days ago1586482779IN
0x98278eB7...42Ce53f2b
0 ETH0.000170011.11
Claim War Fund D...98408202020-04-09 22:50:581571 days ago1586472658IN
0x98278eB7...42Ce53f2b
0 ETH0.000114041.2
Claim War Fund D...98401202020-04-09 20:14:321571 days ago1586463272IN
0x98278eB7...42Ce53f2b
0 ETH0.000714816
Claim War Fund D...98400782020-04-09 20:04:411571 days ago1586462681IN
0x98278eB7...42Ce53f2b
0 ETH0.00029713
Snapshot Daily W...98400582020-04-09 20:00:231571 days ago1586462423IN
0x98278eB7...42Ce53f2b
0 ETH0.002850717
Claim War Fund D...98345912020-04-08 23:47:181572 days ago1586389638IN
0x98278eB7...42Ce53f2b
0 ETH0.000281593.1
Snapshot Daily W...98338162020-04-08 20:59:371572 days ago1586379577IN
0x98278eB7...42Ce53f2b
0 ETH0.002955717
Claim War Fund D...98329112020-04-08 17:37:041573 days ago1586367424IN
0x98278eB7...42Ce53f2b
0 ETH0.000465015
Claim War Fund D...98288972020-04-08 2:39:131573 days ago1586313553IN
0x98278eB7...42Ce53f2b
0 ETH0.000275913.1
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Army

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-05-05
*/

pragma solidity ^0.4.25;

/**
 * 
 * World War Goo - Competitive Idle Game
 * 
 * https://ethergoo.io
 * 
 */

contract Army {

    GooToken constant goo = GooToken(0xdf0960778c6e6597f197ed9a25f12f5d971da86c);
    Clans clans = Clans(0x0);

    uint224 public totalArmyPower; // Global power of players (attack + defence)
    uint224 public gooBankroll; // Goo dividends to be split over time between clans/players' army power
    uint256 public nextSnapshotTime;
    address public owner; // Minor management of game

    mapping(address => mapping(uint256 => ArmyPower)) public armyPowerSnapshots; // Store player's army power for given day (snapshot)
    mapping(address => mapping(uint256 => bool)) public armyPowerZeroedSnapshots; // Edgecase to determine difference between 0 army and an unused/inactive day.
    mapping(address => uint256) public lastWarFundClaim; // Days (snapshot number)
    mapping(address => uint256) public lastArmyPowerUpdate; // Days (last snapshot) player's army was updated
    mapping(address => bool) operator;

    uint224[] public totalArmyPowerSnapshots; // The total player army power for each prior day past
    uint224[] public allocatedWarFundSnapshots; // Div pot (goo allocated to each prior day past)
    
    uint224 public playerDivPercent = 2;
    uint224 public clanDivPercent = 2;

    struct ArmyPower {
        uint80 attack;
        uint80 defense;
        uint80 looting;
    }

    constructor(uint256 firstSnapshotTime) public {
        nextSnapshotTime = firstSnapshotTime;
        owner = msg.sender;
    }

    function setClans(address clansContract) external {
        require(msg.sender == owner);
        clans = Clans(clansContract);
    }

    function setOperator(address gameContract, bool isOperator) external {
        require(msg.sender == owner);
        operator[gameContract] = isOperator;
    }
    
    function updateDailyDivPercents(uint224 newPlayersPercent, uint224 newClansPercent) external {
        require(msg.sender == owner);
        require(newPlayersPercent > 0 && newPlayersPercent <= 10); // 1-10% daily
        require(newClansPercent > 0 && newClansPercent <= 10); // 1-10% daily
        playerDivPercent = newPlayersPercent;
        clanDivPercent = newClansPercent;
    }

    function depositSpentGoo(uint224 gooSpent) external {
        require(operator[msg.sender]);
        gooBankroll += gooSpent;
    }

    function getArmyPower(address player) external view returns (uint80, uint80, uint80) {
        ArmyPower memory armyPower = armyPowerSnapshots[player][lastArmyPowerUpdate[player]];
        return (armyPower.attack, armyPower.defense, armyPower.looting);
    }
    
    // Convenience function 
    function getArmiesPower(address player, address target) external view returns (uint80 playersAttack, uint80 playersLooting, uint80 targetsDefense) {
        ArmyPower memory armyPower = armyPowerSnapshots[player][lastArmyPowerUpdate[player]];
        playersAttack = armyPower.attack;
        playersLooting = armyPower.looting;
        targetsDefense = armyPowerSnapshots[target][lastArmyPowerUpdate[target]].defense;
    }

    function increasePlayersArmyPowerTrio(address player, uint80 attackGain, uint80 defenseGain, uint80 lootingGain) public {
        require(operator[msg.sender]);

        ArmyPower memory existingArmyPower = armyPowerSnapshots[player][lastArmyPowerUpdate[player]];
        uint256 snapshotDay = allocatedWarFundSnapshots.length;

        // Adjust army power (reusing struct)
        existingArmyPower.attack += attackGain;
        existingArmyPower.defense += defenseGain;
        existingArmyPower.looting += lootingGain;
        armyPowerSnapshots[player][snapshotDay] = existingArmyPower;

        if (lastArmyPowerUpdate[player] != snapshotDay) {
            lastArmyPowerUpdate[player] = snapshotDay;
        }
        
        totalArmyPower += (attackGain + defenseGain);
        clans.increaseClanPower(player, attackGain + defenseGain);
    }

    function decreasePlayersArmyPowerTrio(address player, uint80 attackLoss, uint80 defenseLoss, uint80 lootingLoss) public {
        require(operator[msg.sender]);

        ArmyPower memory existingArmyPower = armyPowerSnapshots[player][lastArmyPowerUpdate[player]];
        uint256 snapshotDay = allocatedWarFundSnapshots.length;

        // Adjust army power (reusing struct)
        existingArmyPower.attack -= attackLoss;
        existingArmyPower.defense -= defenseLoss;
        existingArmyPower.looting -= lootingLoss;

        if (existingArmyPower.attack == 0 && existingArmyPower.defense == 0) { // Special case which tangles with "inactive day" snapshots (claiming divs)
            armyPowerZeroedSnapshots[player][snapshotDay] = true;
            delete armyPowerSnapshots[player][snapshotDay]; // 0
        } else {
            armyPowerSnapshots[player][snapshotDay] = existingArmyPower;
        }
        
        if (lastArmyPowerUpdate[player] != snapshotDay) {
            lastArmyPowerUpdate[player] = snapshotDay;
        }

        totalArmyPower -= (attackLoss + defenseLoss);
        clans.decreaseClanPower(player, attackLoss + defenseLoss);
    }

    function changePlayersArmyPowerTrio(address player, int attackChange, int defenseChange, int lootingChange) public {
        require(operator[msg.sender]);

        ArmyPower memory existingArmyPower = armyPowerSnapshots[player][lastArmyPowerUpdate[player]];
        uint256 snapshotDay = allocatedWarFundSnapshots.length;

        // Allow change to be positive or negative
        existingArmyPower.attack = uint80(int(existingArmyPower.attack) + attackChange);
        existingArmyPower.defense = uint80(int(existingArmyPower.defense) + defenseChange);
        existingArmyPower.looting = uint80(int(existingArmyPower.looting) + lootingChange);

        if (existingArmyPower.attack == 0 && existingArmyPower.defense == 0) { // Special case which tangles with "inactive day" snapshots (claiming divs)
            armyPowerZeroedSnapshots[player][snapshotDay] = true;
            delete armyPowerSnapshots[player][snapshotDay]; // 0
        } else {
            armyPowerSnapshots[player][snapshotDay] = existingArmyPower;
        }

        if (lastArmyPowerUpdate[player] != snapshotDay) {
            lastArmyPowerUpdate[player] = snapshotDay;
        }
        changeTotalArmyPower(player, attackChange, defenseChange);
    }

    function changeTotalArmyPower(address player, int attackChange, int defenseChange) internal {
        uint224 newTotal = uint224(int(totalArmyPower) + attackChange + defenseChange);

        if (newTotal > totalArmyPower) {
            clans.increaseClanPower(player, newTotal - totalArmyPower);
        } else if (newTotal < totalArmyPower) {
            clans.decreaseClanPower(player, totalArmyPower - newTotal);
        }
        totalArmyPower = newTotal;
    }

    // Allocate army power divs for the day (00:00 cron job)
    function snapshotDailyWarFunding() external {
        require(msg.sender == owner);
        require(now + 6 hours > nextSnapshotTime);

        totalArmyPowerSnapshots.push(totalArmyPower);
        allocatedWarFundSnapshots.push((gooBankroll * playerDivPercent) / 100);
        uint256 allocatedClanWarFund = (gooBankroll * clanDivPercent) / 100; // No daily snapshots needed for Clans (as below will also claim between the handful of clans)
        gooBankroll -= (gooBankroll * (playerDivPercent + clanDivPercent)) / 100;  // % of pool daily

        uint256 numClans = clans.totalSupply();
        uint256[] memory clanArmyPower = new uint256[](numClans);

        // Get total power from all clans
        uint256 todaysTotalClanPower;
        for (uint256 i = 1; i <= numClans; i++) {
            clanArmyPower[i-1] = clans.clanTotalArmyPower(i);
            todaysTotalClanPower += clanArmyPower[i-1];
        }

        // Distribute goo divs to clans based on their relative power
        for (i = 1; i <= numClans; i++) {
            clans.depositGoo((allocatedClanWarFund * clanArmyPower[i-1]) / todaysTotalClanPower, i);
        }

        nextSnapshotTime = now + 24 hours;
    }

    function claimWarFundDividends(uint256 startSnapshot, uint256 endSnapShot) external {
        require(startSnapshot <= endSnapShot);
        require(startSnapshot >= lastWarFundClaim[msg.sender]);
        require(endSnapShot < allocatedWarFundSnapshots.length);

        uint224 gooShare;
        ArmyPower memory previousArmyPower = armyPowerSnapshots[msg.sender][lastWarFundClaim[msg.sender] - 1]; // Underflow won't be a problem as armyPowerSnapshots[][0xffffffff] = 0;
        for (uint256 i = startSnapshot; i <= endSnapShot; i++) {

            // Slightly complex things by accounting for days/snapshots when user made no tx's
            ArmyPower memory armyPowerDuringSnapshot = armyPowerSnapshots[msg.sender][i];
            bool soldAllArmy = armyPowerZeroedSnapshots[msg.sender][i];
            if (!soldAllArmy && armyPowerDuringSnapshot.attack == 0 && armyPowerDuringSnapshot.defense == 0) {
                armyPowerDuringSnapshot = previousArmyPower;
            } else {
               previousArmyPower = armyPowerDuringSnapshot;
            }

            gooShare += (allocatedWarFundSnapshots[i] * (armyPowerDuringSnapshot.attack + armyPowerDuringSnapshot.defense)) / totalArmyPowerSnapshots[i];
        }


        ArmyPower memory endSnapshotArmyPower = armyPowerSnapshots[msg.sender][endSnapShot];
        if (endSnapshotArmyPower.attack == 0 && endSnapshotArmyPower.defense == 0 && !armyPowerZeroedSnapshots[msg.sender][endSnapShot] && (previousArmyPower.attack + previousArmyPower.defense) > 0) {
            armyPowerSnapshots[msg.sender][endSnapShot] = previousArmyPower; // Checkpoint for next claim
        }

        lastWarFundClaim[msg.sender] = endSnapShot + 1;

        (uint224 clanFee, uint224 leaderFee, address leader, uint224 referalFee, address referer) = clans.getPlayerFees(msg.sender);
        if (clanFee > 0) {
            clanFee = (gooShare * clanFee) / 100; // Convert from percent to goo
            leaderFee = (gooShare * leaderFee) / 100; // Convert from percent to goo
            clans.mintGoo(msg.sender, clanFee);
            goo.mintGoo(leaderFee, leader);
        }
        if (referer == address(0)) {
            referalFee = 0;
        } else if (referalFee > 0) {
            referalFee = (gooShare * referalFee) / 100; // Convert from percent to goo
            goo.mintGoo(referalFee, referer);
        }
        
        goo.mintGoo(gooShare - (clanFee + leaderFee + referalFee), msg.sender);
    }

    function getSnapshotDay() external view returns (uint256 snapshot) {
        snapshot = allocatedWarFundSnapshots.length;
    }

}


contract GooToken {
    function transfer(address to, uint256 tokens) external returns (bool);
    function increasePlayersGooProduction(address player, uint256 increase) external;
    function decreasePlayersGooProduction(address player, uint256 decrease) external;
    function updatePlayersGooFromPurchase(address player, uint224 purchaseCost) external;
    function updatePlayersGoo(address player) external;
    function mintGoo(uint224 amount, address player) external;
}

contract Clans {
    mapping(uint256 => uint256) public clanTotalArmyPower;
    function totalSupply() external view returns (uint256);
    function depositGoo(uint256 amount, uint256 clanId) external;
    function getPlayerFees(address player) external view returns (uint224 clansFee, uint224 leadersFee, address leader, uint224 referalsFee, address referer);
    function getPlayersClanUpgrade(address player, uint256 upgradeClass) external view returns (uint224 upgradeGain);
    function mintGoo(address player, uint256 amount) external;
    function increaseClanPower(address player, uint256 amount) external;
    function decreaseClanPower(address player, uint256 amount) external;
}

contract Factories {
    uint256 public constant MAX_SIZE = 40;
    function getFactories(address player) external returns (uint256[]);
    function addFactory(address player, uint8 position, uint256 unitId) external;
}


library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint224 a, uint224 b) internal pure returns (uint224) {
    if (a == 0) {
      return 0;
    }
    uint224 c = a * b;
    assert(c / a == b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

  /**
  * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}


library SafeMath224 {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint224 a, uint224 b) internal pure returns (uint224) {
    if (a == 0) {
      return 0;
    }
    uint224 c = a * b;
    assert(c / a == b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint224 a, uint224 b) internal pure returns (uint224) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint224 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

  /**
  * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint224 a, uint224 b) internal pure returns (uint224) {
    assert(b <= a);
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint224 a, uint224 b) internal pure returns (uint224) {
    uint224 c = a + b;
    assert(c >= a);
    return c;
  }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"player","type":"address"},{"name":"attackChange","type":"int256"},{"name":"defenseChange","type":"int256"},{"name":"lootingChange","type":"int256"}],"name":"changePlayersArmyPowerTrio","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"gooSpent","type":"uint224"}],"name":"depositSpentGoo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getSnapshotDay","outputs":[{"name":"snapshot","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"allocatedWarFundSnapshots","outputs":[{"name":"","type":"uint224"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"startSnapshot","type":"uint256"},{"name":"endSnapShot","type":"uint256"}],"name":"claimWarFundDividends","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"armyPowerZeroedSnapshots","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"player","type":"address"},{"name":"attackGain","type":"uint80"},{"name":"defenseGain","type":"uint80"},{"name":"lootingGain","type":"uint80"}],"name":"increasePlayersArmyPowerTrio","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"gameContract","type":"address"},{"name":"isOperator","type":"bool"}],"name":"setOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"gooBankroll","outputs":[{"name":"","type":"uint224"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"armyPowerSnapshots","outputs":[{"name":"attack","type":"uint80"},{"name":"defense","type":"uint80"},{"name":"looting","type":"uint80"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"snapshotDailyWarFunding","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalArmyPower","outputs":[{"name":"","type":"uint224"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newPlayersPercent","type":"uint224"},{"name":"newClansPercent","type":"uint224"}],"name":"updateDailyDivPercents","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"playerDivPercent","outputs":[{"name":"","type":"uint224"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"nextSnapshotTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"player","type":"address"},{"name":"target","type":"address"}],"name":"getArmiesPower","outputs":[{"name":"playersAttack","type":"uint80"},{"name":"playersLooting","type":"uint80"},{"name":"targetsDefense","type":"uint80"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"lastArmyPowerUpdate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"totalArmyPowerSnapshots","outputs":[{"name":"","type":"uint224"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"clanDivPercent","outputs":[{"name":"","type":"uint224"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"player","type":"address"}],"name":"getArmyPower","outputs":[{"name":"","type":"uint80"},{"name":"","type":"uint80"},{"name":"","type":"uint80"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"lastWarFundClaim","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"clansContract","type":"address"}],"name":"setClans","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"player","type":"address"},{"name":"attackLoss","type":"uint80"},{"name":"defenseLoss","type":"uint80"},{"name":"lootingLoss","type":"uint80"}],"name":"decreasePlayersArmyPowerTrio","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"firstSnapshotTime","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]

608060405260008054600160a060020a0319169055600c805460027fffffffff000000000000000000000000000000000000000000000000000000009182168117909255600d8054909116909117905534801561005b57600080fd5b50604051602080611bdb833981016040525160035560048054600160a060020a03191633179055611b4a806100916000396000f3006080604052600436106101245763ffffffff60e060020a60003504166308688ce081146101295780631149ef5a14610155578063158993fd146101765780631b7ab0311461019d57806322ea067a146101d15780632928f883146101ec57806336bce99814610224578063558a729714610260578063560a28df146102865780636ede9ca81461029b5780638b26819f146102ed5780638da5cb5b1461030257806398a72e11146103335780639e33c2eb14610348578063a41b7d861461036f578063a89cdad914610384578063aabd985714610399578063b03ee6c0146103c0578063b5648fa8146103e1578063da01ebc9146103f9578063dd53c7281461040e578063e0ef84b91461042f578063f40b26bd14610450578063fa5ccd0b14610471575b600080fd5b34801561013557600080fd5b50610153600160a060020a03600435166024356044356064356104ad565b005b34801561016157600080fd5b50610153600160e060020a03600435166106b8565b34801561018257600080fd5b5061018b6106fd565b60408051918252519081900360200190f35b3480156101a957600080fd5b506101b5600435610703565b60408051600160e060020a039092168252519081900360200190f35b3480156101dd57600080fd5b5061015360043560243561072b565b3480156101f857600080fd5b50610210600160a060020a0360043516602435610e3a565b604080519115158252519081900360200190f35b34801561023057600080fd5b50610153600160a060020a036004351669ffffffffffffffffffff60243581169060443581169060643516610e5a565b34801561026c57600080fd5b50610153600160a060020a03600435166024351515611049565b34801561029257600080fd5b506101b561108b565b3480156102a757600080fd5b506102bf600160a060020a036004351660243561109a565b6040805169ffffffffffffffffffff9485168152928416602084015292168183015290519081900360600190f35b3480156102f957600080fd5b506101536110d9565b34801561030e57600080fd5b50610317611446565b60408051600160a060020a039092168252519081900360200190f35b34801561033f57600080fd5b506101b5611455565b34801561035457600080fd5b50610153600160e060020a0360043581169060243516611464565b34801561037b57600080fd5b506101b5611505565b34801561039057600080fd5b5061018b611514565b3480156103a557600080fd5b506102bf600160a060020a036004358116906024351661151a565b3480156103cc57600080fd5b5061018b600160a060020a03600435166115b8565b3480156103ed57600080fd5b506101b56004356115ca565b34801561040557600080fd5b506101b56115d8565b34801561041a57600080fd5b506102bf600160a060020a03600435166115e7565b34801561043b57600080fd5b5061018b600160a060020a0360043516611663565b34801561045c57600080fd5b50610153600160a060020a0360043516611675565b34801561047d57600080fd5b50610153600160a060020a036004351669ffffffffffffffffffff602435811690604435811690606435166116bb565b6104b5611ade565b3360009081526009602052604081205460ff1615156104d357600080fd5b5050600160a060020a03841660009081526005602090815260408083206008835281842054845282529182902082516060810184529054600b5469ffffffffffffffffffff80831689018116808552605060020a84048216890182169585019590955260a060020a909204821686019091169382019390935291901580156105695750602082015169ffffffffffffffffffff16155b156105d757600160a060020a03861660008181526006602090815260408083208584528252808320805460ff191660011790559282526005815282822084835290522080547fffff00000000000000000000000000000000000000000000000000000000000016905561066a565b600160a060020a038616600090815260056020908152604080832084845282529182902084518154928601519386015169ffffffffffffffffffff90811660a060020a02600080516020611aff833981519152958216605060020a0273ffffffffffffffffffff00000000000000000000199290931669ffffffffffffffffffff19909516949094171617929092161790555b600160a060020a03861660009081526008602052604090205481146106a557600160a060020a03861660009081526008602052604090208190555b6106b0868686611957565b505050505050565b3360009081526009602052604090205460ff1615156106d657600080fd5b60028054600160e060020a03198116600160e060020a039182169390930116919091179055565b600b5490565b600b80548290811061071157fe5b600091825260209091200154600160e060020a0316905081565b6000610735611ade565b600061073f611ade565b6000610749611ade565b6000808080808b8d111561075c57600080fd5b336000908152600760205260409020548d101561077857600080fd5b600b548c1061078657600080fd5b33600090815260056020908152604080832060078352818420546000190184528252918290208251606081018452905469ffffffffffffffffffff8082168352605060020a820481169383019390935260a060020a90049091169181019190915299508c98505b8b8911610932573360008181526005602090815260408083208d845282528083208151606081018352905469ffffffffffffffffffff8082168352605060020a820481168386015260a060020a9091041681830152938352600682528083208d845290915290205490985060ff169650861580156108765750875169ffffffffffffffffffff16155b80156108905750602088015169ffffffffffffffffffff16155b1561089d578997506108a1565b8799505b600a80548a9081106108af57fe5b9060005260206000200160009054906101000a9004600160e060020a0316600160e060020a0316886020015189600001510169ffffffffffffffffffff16600b8b8154811015156108fc57fe5b600091825260209091200154600160e060020a03908116919091021681151561092157fe5b049a909a01996001909801976107ed565b3360009081526005602090815260408083208f84528252918290208251606081018452905469ffffffffffffffffffff808216808452605060020a830482169484019490945260a060020a90910416928101929092529096501580156109a65750602086015169ffffffffffffffffffff16155b80156109cd57503360009081526006602090815260408083208f845290915290205460ff16155b80156109ef575060008a602001518b600001510169ffffffffffffffffffff16115b15610a7e573360009081526005602090815260408083208f84528252918290208c518154928e0151938e015169ffffffffffffffffffff90811660a060020a02600080516020611aff833981519152958216605060020a0273ffffffffffffffffffff00000000000000000000199290931669ffffffffffffffffffff19909516949094171617929092161790555b8b6001016007600033600160a060020a0316600160a060020a03168152602001908152602001600020819055506000809054906101000a9004600160a060020a0316600160a060020a031663118382ff336040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a0316815260200191505060a060405180830381600087803b158015610b1a57600080fd5b505af1158015610b2e573d6000803e3d6000fd5b505050506040513d60a0811015610b4457600080fd5b508051602082015160408301516060840151608090940151929850909650945090925090506000600160e060020a0386161115610cc3576064600160e060020a038c8702160494506064600160e060020a038c86021660008054604080517f70b11a35000000000000000000000000000000000000000000000000000000008152336004820152600160e060020a038b1660248201529051949093049750600160a060020a0316926370b11a3592604480820193929182900301818387803b158015610c0f57600080fd5b505af1158015610c23573d6000803e3d6000fd5b5050604080517f4f03f17c000000000000000000000000000000000000000000000000000000008152600160e060020a0388166004820152600160a060020a0387166024820152905173df0960778c6e6597f197ed9a25f12f5d971da86c9350634f03f17c9250604480830192600092919082900301818387803b158015610caa57600080fd5b505af1158015610cbe573d6000803e3d6000fd5b505050505b600160a060020a0381161515610cdc5760009150610d93565b600082600160e060020a03161115610d9357604080517f4f03f17c0000000000000000000000000000000000000000000000000000000081526064600160e060020a03948e028516049384166004820152600160a060020a0383166024820152905173df0960778c6e6597f197ed9a25f12f5d971da86c91634f03f17c91604480830192600092919082900301818387803b158015610d7a57600080fd5b505af1158015610d8e573d6000803e3d6000fd5b505050505b604080517f4f03f17c000000000000000000000000000000000000000000000000000000008152600160e060020a0387870185018e03166004820152336024820152905173df0960778c6e6597f197ed9a25f12f5d971da86c91634f03f17c91604480830192600092919082900301818387803b158015610e1357600080fd5b505af1158015610e27573d6000803e3d6000fd5b5050505050505050505050505050505050565b600660209081526000928352604080842090915290825290205460ff1681565b610e62611ade565b3360009081526009602052604081205460ff161515610e8057600080fd5b5050600160a060020a038416600081815260056020908152604080832060088084528285208054865282855283862084516060810186529054600b5469ffffffffffffffffffff8083168e0181168452605060020a80840482168e018216858b0190815260a060020a9485900483168e018316868b01908152848d52988b52988b20855181549a51995169ffffffffffffffffffff19909b169084161773ffffffffffffffffffff00000000000000000000191698831690910297909717600080516020611aff83398151915216971690910295909517909355959094529290915291549091908114610f8957600160a060020a03861660009081526008602052604090208190555b60018054600160e060020a0319811686880169ffffffffffffffffffff16600160e060020a0392831681019092161790915560008054604080517f4defaa78000000000000000000000000000000000000000000000000000000008152600160a060020a038b81166004830152602482019590955290519390911692634defaa789260448084019391929182900301818387803b15801561102957600080fd5b505af115801561103d573d6000803e3d6000fd5b50505050505050505050565b600454600160a060020a0316331461106057600080fd5b600160a060020a03919091166000908152600960205260409020805460ff1916911515919091179055565b600254600160e060020a031681565b600560209081526000928352604080842090915290825290205469ffffffffffffffffffff80821691605060020a810482169160a060020a9091041683565b600454600090819060609082908190600160a060020a031633146110fc57600080fd5b60035461546042011161110e57600080fd5b60018054600a80548084019091557fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8018054600160e060020a0319908116600160e060020a0393841617909155600c805460028054600b8054978801815560009081527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9909701805486166064928816948816949094028716829004871693909317909255600d5481549354948416938616908616948616850181028616839004810386169390931790558454604080517f18160ddd0000000000000000000000000000000000000000000000000000000081529051939094028516919091049093169850600160a060020a03909216926318160ddd926004808401936020939083900390910190829087803b15801561124757600080fd5b505af115801561125b573d6000803e3d6000fd5b505050506040513d602081101561127157600080fd5b505160408051828152602080840282010190915290945084801561129f578160200160208202803883390190505b509250600190505b8381116113875760008054604080517fe3d39e66000000000000000000000000000000000000000000000000000000008152600481018590529051600160a060020a039092169263e3d39e66926024808401936020939083900390910190829087803b15801561131657600080fd5b505af115801561132a573d6000803e3d6000fd5b505050506040513d602081101561134057600080fd5b505183518490600019840190811061135457fe5b6020908102909101015282518390600019830190811061137057fe5b6020908102909101015191909101906001016112a7565b5060015b838111611436576000548351600160a060020a0390911690635d74979e908490869060001986019081106113bb57fe5b9060200190602002015188028115156113d057fe5b04836040518363ffffffff1660e060020a0281526004018083815260200182815260200192505050600060405180830381600087803b15801561141257600080fd5b505af1158015611426573d6000803e3d6000fd5b50506001909201915061138b9050565b5050506201518042016003555050565b600454600160a060020a031681565b600154600160e060020a031681565b600454600160a060020a0316331461147b57600080fd5b600082600160e060020a031611801561149e5750600a82600160e060020a031611155b15156114a957600080fd5b600081600160e060020a03161180156114cc5750600a81600160e060020a031611155b15156114d757600080fd5b600c8054600160e060020a03938416600160e060020a031991821617909155600d8054929093169116179055565b600c54600160e060020a031681565b60035481565b6000806000611527611ade565b50505050600160a060020a03918216600090815260056020818152604080842060088084528286205486529083528185208251606081018452905469ffffffffffffffffffff808216808452605060020a80840483168589015260a060020a909304821693860184905298909916875294845282862091845282862054865292529092205492949193920490911690565b60086020526000908152604090205481565b600a80548290811061071157fe5b600d54600160e060020a031681565b60008060006115f4611ade565b50505050600160a060020a03166000908152600560209081526040808320600883528184205484528252918290208251606081018452905469ffffffffffffffffffff808216808452605060020a8304821694840185905260a060020a90920416919093018190529192909190565b60076020526000908152604090205481565b600454600160a060020a0316331461168c57600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6116c3611ade565b3360009081526009602052604081205460ff1615156116e157600080fd5b5050600160a060020a03841660009081526005602090815260408083206008835281842054845282529182902082516060810184529054600b5469ffffffffffffffffffff8083168990038116808552605060020a8404821689900382169585019590955260a060020a909204821686900390911693820193909352919015801561177a5750602082015169ffffffffffffffffffff16155b156117e857600160a060020a03861660008181526006602090815260408083208584528252808320805460ff191660011790559282526005815282822084835290522080547fffff00000000000000000000000000000000000000000000000000000000000016905561187b565b600160a060020a038616600090815260056020908152604080832084845282529182902084518154928601519386015169ffffffffffffffffffff90811660a060020a02600080516020611aff833981519152958216605060020a0273ffffffffffffffffffff00000000000000000000199290931669ffffffffffffffffffff19909516949094171617929092161790555b600160a060020a03861660009081526008602052604090205481146118b657600160a060020a03861660009081526008602052604090208190555b60018054600160e060020a0319811686880169ffffffffffffffffffff16600160e060020a039283168190039092161790915560008054604080517f646a59b3000000000000000000000000000000000000000000000000000000008152600160a060020a038b8116600483015260248201959095529051939091169263646a59b39260448084019391929182900301818387803b15801561102957600080fd5b600154600160e060020a0390811680840183019182161115611a0c5760008054600154604080517f4defaa78000000000000000000000000000000000000000000000000000000008152600160a060020a038981166004830152600160e060020a039384168703909316602482015290519190921692634defaa78926044808201939182900301818387803b1580156119ef57600080fd5b505af1158015611a03573d6000803e3d6000fd5b50505050611ab9565b600154600160e060020a039081169082161015611ab95760008054600154604080517f646a59b3000000000000000000000000000000000000000000000000000000008152600160a060020a038981166004830152600160e060020a0393841687900390931660248201529051919092169263646a59b3926044808201939182900301818387803b158015611aa057600080fd5b505af1158015611ab4573d6000803e3d6000fd5b505050505b60018054600160e060020a031916600160e060020a0392909216919091179055505050565b6040805160608101825260008082526020820181905291810191909152905600ffff00000000000000000000ffffffffffffffffffffffffffffffffffffffffa165627a7a72305820f80843ec46150aac0f4ce6539e4cbe259e44e99936b05dcc69ac1e69597cc9c70029000000000000000000000000000000000000000000000000000000005cce2780

Deployed Bytecode

0x6080604052600436106101245763ffffffff60e060020a60003504166308688ce081146101295780631149ef5a14610155578063158993fd146101765780631b7ab0311461019d57806322ea067a146101d15780632928f883146101ec57806336bce99814610224578063558a729714610260578063560a28df146102865780636ede9ca81461029b5780638b26819f146102ed5780638da5cb5b1461030257806398a72e11146103335780639e33c2eb14610348578063a41b7d861461036f578063a89cdad914610384578063aabd985714610399578063b03ee6c0146103c0578063b5648fa8146103e1578063da01ebc9146103f9578063dd53c7281461040e578063e0ef84b91461042f578063f40b26bd14610450578063fa5ccd0b14610471575b600080fd5b34801561013557600080fd5b50610153600160a060020a03600435166024356044356064356104ad565b005b34801561016157600080fd5b50610153600160e060020a03600435166106b8565b34801561018257600080fd5b5061018b6106fd565b60408051918252519081900360200190f35b3480156101a957600080fd5b506101b5600435610703565b60408051600160e060020a039092168252519081900360200190f35b3480156101dd57600080fd5b5061015360043560243561072b565b3480156101f857600080fd5b50610210600160a060020a0360043516602435610e3a565b604080519115158252519081900360200190f35b34801561023057600080fd5b50610153600160a060020a036004351669ffffffffffffffffffff60243581169060443581169060643516610e5a565b34801561026c57600080fd5b50610153600160a060020a03600435166024351515611049565b34801561029257600080fd5b506101b561108b565b3480156102a757600080fd5b506102bf600160a060020a036004351660243561109a565b6040805169ffffffffffffffffffff9485168152928416602084015292168183015290519081900360600190f35b3480156102f957600080fd5b506101536110d9565b34801561030e57600080fd5b50610317611446565b60408051600160a060020a039092168252519081900360200190f35b34801561033f57600080fd5b506101b5611455565b34801561035457600080fd5b50610153600160e060020a0360043581169060243516611464565b34801561037b57600080fd5b506101b5611505565b34801561039057600080fd5b5061018b611514565b3480156103a557600080fd5b506102bf600160a060020a036004358116906024351661151a565b3480156103cc57600080fd5b5061018b600160a060020a03600435166115b8565b3480156103ed57600080fd5b506101b56004356115ca565b34801561040557600080fd5b506101b56115d8565b34801561041a57600080fd5b506102bf600160a060020a03600435166115e7565b34801561043b57600080fd5b5061018b600160a060020a0360043516611663565b34801561045c57600080fd5b50610153600160a060020a0360043516611675565b34801561047d57600080fd5b50610153600160a060020a036004351669ffffffffffffffffffff602435811690604435811690606435166116bb565b6104b5611ade565b3360009081526009602052604081205460ff1615156104d357600080fd5b5050600160a060020a03841660009081526005602090815260408083206008835281842054845282529182902082516060810184529054600b5469ffffffffffffffffffff80831689018116808552605060020a84048216890182169585019590955260a060020a909204821686019091169382019390935291901580156105695750602082015169ffffffffffffffffffff16155b156105d757600160a060020a03861660008181526006602090815260408083208584528252808320805460ff191660011790559282526005815282822084835290522080547fffff00000000000000000000000000000000000000000000000000000000000016905561066a565b600160a060020a038616600090815260056020908152604080832084845282529182902084518154928601519386015169ffffffffffffffffffff90811660a060020a02600080516020611aff833981519152958216605060020a0273ffffffffffffffffffff00000000000000000000199290931669ffffffffffffffffffff19909516949094171617929092161790555b600160a060020a03861660009081526008602052604090205481146106a557600160a060020a03861660009081526008602052604090208190555b6106b0868686611957565b505050505050565b3360009081526009602052604090205460ff1615156106d657600080fd5b60028054600160e060020a03198116600160e060020a039182169390930116919091179055565b600b5490565b600b80548290811061071157fe5b600091825260209091200154600160e060020a0316905081565b6000610735611ade565b600061073f611ade565b6000610749611ade565b6000808080808b8d111561075c57600080fd5b336000908152600760205260409020548d101561077857600080fd5b600b548c1061078657600080fd5b33600090815260056020908152604080832060078352818420546000190184528252918290208251606081018452905469ffffffffffffffffffff8082168352605060020a820481169383019390935260a060020a90049091169181019190915299508c98505b8b8911610932573360008181526005602090815260408083208d845282528083208151606081018352905469ffffffffffffffffffff8082168352605060020a820481168386015260a060020a9091041681830152938352600682528083208d845290915290205490985060ff169650861580156108765750875169ffffffffffffffffffff16155b80156108905750602088015169ffffffffffffffffffff16155b1561089d578997506108a1565b8799505b600a80548a9081106108af57fe5b9060005260206000200160009054906101000a9004600160e060020a0316600160e060020a0316886020015189600001510169ffffffffffffffffffff16600b8b8154811015156108fc57fe5b600091825260209091200154600160e060020a03908116919091021681151561092157fe5b049a909a01996001909801976107ed565b3360009081526005602090815260408083208f84528252918290208251606081018452905469ffffffffffffffffffff808216808452605060020a830482169484019490945260a060020a90910416928101929092529096501580156109a65750602086015169ffffffffffffffffffff16155b80156109cd57503360009081526006602090815260408083208f845290915290205460ff16155b80156109ef575060008a602001518b600001510169ffffffffffffffffffff16115b15610a7e573360009081526005602090815260408083208f84528252918290208c518154928e0151938e015169ffffffffffffffffffff90811660a060020a02600080516020611aff833981519152958216605060020a0273ffffffffffffffffffff00000000000000000000199290931669ffffffffffffffffffff19909516949094171617929092161790555b8b6001016007600033600160a060020a0316600160a060020a03168152602001908152602001600020819055506000809054906101000a9004600160a060020a0316600160a060020a031663118382ff336040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a0316815260200191505060a060405180830381600087803b158015610b1a57600080fd5b505af1158015610b2e573d6000803e3d6000fd5b505050506040513d60a0811015610b4457600080fd5b508051602082015160408301516060840151608090940151929850909650945090925090506000600160e060020a0386161115610cc3576064600160e060020a038c8702160494506064600160e060020a038c86021660008054604080517f70b11a35000000000000000000000000000000000000000000000000000000008152336004820152600160e060020a038b1660248201529051949093049750600160a060020a0316926370b11a3592604480820193929182900301818387803b158015610c0f57600080fd5b505af1158015610c23573d6000803e3d6000fd5b5050604080517f4f03f17c000000000000000000000000000000000000000000000000000000008152600160e060020a0388166004820152600160a060020a0387166024820152905173df0960778c6e6597f197ed9a25f12f5d971da86c9350634f03f17c9250604480830192600092919082900301818387803b158015610caa57600080fd5b505af1158015610cbe573d6000803e3d6000fd5b505050505b600160a060020a0381161515610cdc5760009150610d93565b600082600160e060020a03161115610d9357604080517f4f03f17c0000000000000000000000000000000000000000000000000000000081526064600160e060020a03948e028516049384166004820152600160a060020a0383166024820152905173df0960778c6e6597f197ed9a25f12f5d971da86c91634f03f17c91604480830192600092919082900301818387803b158015610d7a57600080fd5b505af1158015610d8e573d6000803e3d6000fd5b505050505b604080517f4f03f17c000000000000000000000000000000000000000000000000000000008152600160e060020a0387870185018e03166004820152336024820152905173df0960778c6e6597f197ed9a25f12f5d971da86c91634f03f17c91604480830192600092919082900301818387803b158015610e1357600080fd5b505af1158015610e27573d6000803e3d6000fd5b5050505050505050505050505050505050565b600660209081526000928352604080842090915290825290205460ff1681565b610e62611ade565b3360009081526009602052604081205460ff161515610e8057600080fd5b5050600160a060020a038416600081815260056020908152604080832060088084528285208054865282855283862084516060810186529054600b5469ffffffffffffffffffff8083168e0181168452605060020a80840482168e018216858b0190815260a060020a9485900483168e018316868b01908152848d52988b52988b20855181549a51995169ffffffffffffffffffff19909b169084161773ffffffffffffffffffff00000000000000000000191698831690910297909717600080516020611aff83398151915216971690910295909517909355959094529290915291549091908114610f8957600160a060020a03861660009081526008602052604090208190555b60018054600160e060020a0319811686880169ffffffffffffffffffff16600160e060020a0392831681019092161790915560008054604080517f4defaa78000000000000000000000000000000000000000000000000000000008152600160a060020a038b81166004830152602482019590955290519390911692634defaa789260448084019391929182900301818387803b15801561102957600080fd5b505af115801561103d573d6000803e3d6000fd5b50505050505050505050565b600454600160a060020a0316331461106057600080fd5b600160a060020a03919091166000908152600960205260409020805460ff1916911515919091179055565b600254600160e060020a031681565b600560209081526000928352604080842090915290825290205469ffffffffffffffffffff80821691605060020a810482169160a060020a9091041683565b600454600090819060609082908190600160a060020a031633146110fc57600080fd5b60035461546042011161110e57600080fd5b60018054600a80548084019091557fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8018054600160e060020a0319908116600160e060020a0393841617909155600c805460028054600b8054978801815560009081527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9909701805486166064928816948816949094028716829004871693909317909255600d5481549354948416938616908616948616850181028616839004810386169390931790558454604080517f18160ddd0000000000000000000000000000000000000000000000000000000081529051939094028516919091049093169850600160a060020a03909216926318160ddd926004808401936020939083900390910190829087803b15801561124757600080fd5b505af115801561125b573d6000803e3d6000fd5b505050506040513d602081101561127157600080fd5b505160408051828152602080840282010190915290945084801561129f578160200160208202803883390190505b509250600190505b8381116113875760008054604080517fe3d39e66000000000000000000000000000000000000000000000000000000008152600481018590529051600160a060020a039092169263e3d39e66926024808401936020939083900390910190829087803b15801561131657600080fd5b505af115801561132a573d6000803e3d6000fd5b505050506040513d602081101561134057600080fd5b505183518490600019840190811061135457fe5b6020908102909101015282518390600019830190811061137057fe5b6020908102909101015191909101906001016112a7565b5060015b838111611436576000548351600160a060020a0390911690635d74979e908490869060001986019081106113bb57fe5b9060200190602002015188028115156113d057fe5b04836040518363ffffffff1660e060020a0281526004018083815260200182815260200192505050600060405180830381600087803b15801561141257600080fd5b505af1158015611426573d6000803e3d6000fd5b50506001909201915061138b9050565b5050506201518042016003555050565b600454600160a060020a031681565b600154600160e060020a031681565b600454600160a060020a0316331461147b57600080fd5b600082600160e060020a031611801561149e5750600a82600160e060020a031611155b15156114a957600080fd5b600081600160e060020a03161180156114cc5750600a81600160e060020a031611155b15156114d757600080fd5b600c8054600160e060020a03938416600160e060020a031991821617909155600d8054929093169116179055565b600c54600160e060020a031681565b60035481565b6000806000611527611ade565b50505050600160a060020a03918216600090815260056020818152604080842060088084528286205486529083528185208251606081018452905469ffffffffffffffffffff808216808452605060020a80840483168589015260a060020a909304821693860184905298909916875294845282862091845282862054865292529092205492949193920490911690565b60086020526000908152604090205481565b600a80548290811061071157fe5b600d54600160e060020a031681565b60008060006115f4611ade565b50505050600160a060020a03166000908152600560209081526040808320600883528184205484528252918290208251606081018452905469ffffffffffffffffffff808216808452605060020a8304821694840185905260a060020a90920416919093018190529192909190565b60076020526000908152604090205481565b600454600160a060020a0316331461168c57600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6116c3611ade565b3360009081526009602052604081205460ff1615156116e157600080fd5b5050600160a060020a03841660009081526005602090815260408083206008835281842054845282529182902082516060810184529054600b5469ffffffffffffffffffff8083168990038116808552605060020a8404821689900382169585019590955260a060020a909204821686900390911693820193909352919015801561177a5750602082015169ffffffffffffffffffff16155b156117e857600160a060020a03861660008181526006602090815260408083208584528252808320805460ff191660011790559282526005815282822084835290522080547fffff00000000000000000000000000000000000000000000000000000000000016905561187b565b600160a060020a038616600090815260056020908152604080832084845282529182902084518154928601519386015169ffffffffffffffffffff90811660a060020a02600080516020611aff833981519152958216605060020a0273ffffffffffffffffffff00000000000000000000199290931669ffffffffffffffffffff19909516949094171617929092161790555b600160a060020a03861660009081526008602052604090205481146118b657600160a060020a03861660009081526008602052604090208190555b60018054600160e060020a0319811686880169ffffffffffffffffffff16600160e060020a039283168190039092161790915560008054604080517f646a59b3000000000000000000000000000000000000000000000000000000008152600160a060020a038b8116600483015260248201959095529051939091169263646a59b39260448084019391929182900301818387803b15801561102957600080fd5b600154600160e060020a0390811680840183019182161115611a0c5760008054600154604080517f4defaa78000000000000000000000000000000000000000000000000000000008152600160a060020a038981166004830152600160e060020a039384168703909316602482015290519190921692634defaa78926044808201939182900301818387803b1580156119ef57600080fd5b505af1158015611a03573d6000803e3d6000fd5b50505050611ab9565b600154600160e060020a039081169082161015611ab95760008054600154604080517f646a59b3000000000000000000000000000000000000000000000000000000008152600160a060020a038981166004830152600160e060020a0393841687900390931660248201529051919092169263646a59b3926044808201939182900301818387803b158015611aa057600080fd5b505af1158015611ab4573d6000803e3d6000fd5b505050505b60018054600160e060020a031916600160e060020a0392909216919091179055505050565b6040805160608101825260008082526020820181905291810191909152905600ffff00000000000000000000ffffffffffffffffffffffffffffffffffffffffa165627a7a72305820f80843ec46150aac0f4ce6539e4cbe259e44e99936b05dcc69ac1e69597cc9c70029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000005cce2780

-----Decoded View---------------
Arg [0] : firstSnapshotTime (uint256): 1557014400

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000005cce2780


Swarm Source

bzzr://f80843ec46150aac0f4ce6539e4cbe259e44e99936b05dcc69ac1e69597cc9c7

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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