Contract Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 11 txns
 Latest 11 txns

TxHash Age From To Value [TxFee]
0xb9b1b7fdc8ebc98eef6fc856efd2a0f51b75c316b6eee2db07b15a09bcf71ecd190 days 1 hr ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d  IN   0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.0046322
0x5e6d538c54bb3c7dabb7cb8aba72329cd9ae535b6cc173839b4ab2be2a4df135190 days 1 hr ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d  IN   0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.0031322
0x1a6751750fe9a3acec0802e9e15ebffd5ad06deb693e030cbee016a47baa2da9190 days 2 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d  IN   0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.00115865
0xfd4f5f4e8a479257e69b9ce5d11a69002e15d152b61eebf45f503a0175ec4ca7190 days 4 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d  IN   0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.0058489
0x78e929c3aae7b60894878604f82104085b563eb7b32423fbf50c32195caa3ea0190 days 11 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d  IN   0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.00486555
0xfb1961e4d8f529d5282f0891e98cf97a50854dd70702bf88c0320a86f9af3a07190 days 22 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d  IN   0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.00115865
0xfb4318f8b71715cfdf03ad5eaff1c89b2067ac02ea96caca21d8755f0eed6215190 days 22 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d  IN   0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.00115865
0x4ce8e613365598071a36d1ee962c41e0afa4e521305d9d2017e65b8cdf79c38b196 days 1 hr ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d  IN   0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.0031322
0x30426d8fc98b365271d3416296aa317ca5cfbc9849205630059323d16988ee83198 days 3 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d  IN   0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.0046322
0xc45ab10633b9466be91fbd4a147c0f220e8f3acffb0b72834c21ac3ff76b6129198 days 20 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d  IN   0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.00117495
0x466142ae5f35928c18790752cdba5a4ac6dace16a6058069b0bf6b82214f1e40200 days 55 mins ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d  IN    Contract Creation0 Ether0.4332605
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 2 Internal Transactions

ParentTxHash Block Age From To Value
0x466142ae5f35928c18790752cdba5a4ac6dace16a6058069b0bf6b82214f1e405372834200 days 55 mins ago0xef9a85c6c6f61b59d7a371afcb519f5f55d07d53  Contract Creation0 Ether
0x466142ae5f35928c18790752cdba5a4ac6dace16a6058069b0bf6b82214f1e405372834200 days 55 mins ago0xef9a85c6c6f61b59d7a371afcb519f5f55d07d53  Contract Creation0 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity), ZeroFunctionSelector (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: ArtToujourICO
Compiler Text: v0.4.17+commit.bdeb9e52
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity 0.4.17;
/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  uint256 public totalSupply;
  function balanceOf(address who) public constant returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}
/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address internal owner;
  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  function Ownable() public {
    owner = msg.sender;
  }
  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }
  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferOwnership(address newOwner) onlyOwner public {
    require(newOwner != address(0));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }
}
/**
 * @title ArtToujourICO
 * @dev ArtToujourCrowdsale is a base contract for managing a token crowdsale.
 * Crowdsales have a start and end timestamps, where investors can make
 * token purchases and the crowdsale will assign them ARTZ tokens based
 * on a ARTZ token per ETH rate. Funds collected are forwarded to a wallet
 * as they arrive.
 */
/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances.
 */
contract BasicToken is ERC20Basic {
  using SafeMath for uint256;
  mapping(address => uint256) balances;
  /**
  * @dev transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    // SafeMath.sub will throw if there is not enough balance.
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    Transfer(msg.sender, _to, _value);
    return true;
  }
  /**
  * @dev Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) public constant returns (uint256 balance) {
    return balances[_owner];
  }
}
/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) public constant returns (uint256);
  function transferFrom(address from, address to, uint256 value) public returns (bool);
  function approve(address spender, uint256 value) public returns (bool);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}
/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * @dev https://github.com/ethereum/EIPs/issues/20
 * @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 */
contract StandardToken is ERC20, BasicToken {
  mapping (address => mapping (address => uint256)) allowed;
  /**
   * @dev Transfer tokens from one address to another
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amount of tokens to be transferred
   */
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    uint256 _allowance = allowed[_from][msg.sender];
    // Check is not needed because sub(_allowance, _value) will already throw if this condition is not met
    // require (_value <= _allowance);
    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = _allowance.sub(_value);
    Transfer(_from, _to, _value);
    return true;
  }
  /**
   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
   *
   * Beware that changing an allowance with this method brings the risk that someone may use both the old
   * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
   * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) public returns (bool) {
    allowed[msg.sender][_spender] = _value;
    Approval(msg.sender, _spender, _value);
    return true;
  }
  /**
   * @dev Function to check the amount of tokens that an owner allowed to a spender.
   * @param _owner address The address which owns the funds.
   * @param _spender address The address which will spend the funds.
   * @return A uint256 specifying the amount of tokens still available for the spender.
   */
  function allowance(address _owner, address _spender) public constant returns (uint256 remaining) {
    return allowed[_owner][_spender];
  }
  /**
   * approve should be called when allowed[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   */
  function increaseApproval (address _spender, uint _addedValue)
    returns (bool success) {
    allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }
  function decreaseApproval (address _spender, uint _subtractedValue)
    returns (bool success) {
    uint oldValue = allowed[msg.sender][_spender];
    if (_subtractedValue > oldValue) {
      allowed[msg.sender][_spender] = 0;
    } else {
      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }
}
/**
 * @title Mintable token
 * @dev Simple ERC20 Token example, with mintable token creation
 * @dev Issue: * https://github.com/OpenZeppelin/zeppelin-solidity/issues/120
 * Based on code by TokenMarketNet: https://github.com/TokenMarketNet/ico/blob/master/contracts/MintableToken.sol
 */
contract MintableToken is StandardToken, Ownable {
  event Mint(address indexed to, uint256 amount);
  event MintFinished();
  bool public mintingFinished = false;
  modifier canMint() {
    require(!mintingFinished);
    _;
  }
  /**
   * @dev Function to mint tokens
   * @param _to The address that will receive the minted tokens.
   * @param _amount The amount of tokens to mint.
   * @return A boolean that indicates if the operation was successful.
   */
  function mint(address _to, uint256 _amount) onlyOwner canMint public returns (bool) {
    //totalSupply = totalSupply.add(_amount);
    balances[_to] = balances[_to].add(_amount);
    Mint(_to, _amount);
    Transfer(msg.sender, _to, _amount);
    return true;
  }
  /**
   * @dev Function to stop minting new tokens.
   * @return True if the operation was successful.
   */
  function finishMinting() onlyOwner public returns (bool) {
    mintingFinished = true;
    MintFinished();
    return true;
  }
  function burnTokens(uint256 _unsoldTokens) onlyOwner public returns (bool) {
    totalSupply = SafeMath.sub(totalSupply, _unsoldTokens);
  }
}
/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Ownable {
  event Pause();
  event Unpause();
  bool public paused = false;
  /**
   * @dev Modifier to make a function callable only when the contract is not paused.
   */
  modifier whenNotPaused() {
    require(!paused);
    _;
  }
  /**
   * @dev Modifier to make a function callable only when the contract is paused.
   */
  modifier whenPaused() {
    require(paused);
    _;
  }
  /**
   * @dev called by the owner to pause, triggers stopped state
   */
  function pause() onlyOwner whenNotPaused public {
    paused = true;
    Pause();
  }
  /**
   * @dev called by the owner to unpause, returns to normal state
   */
  function unpause() onlyOwner whenPaused public {
    paused = false;
    Unpause();
  }
}
/**
 * @title ArtToujour Crowdsale
 * @dev Crowdsale is a base contract for managing a token crowdsale.
 * Crowdsales have a start and end timestamps, where investors can make
 * token purchases and the crowdsale will assign them tokens based
 * on a token per ETH rate. Funds collected are forwarded to a wallet
 * as they arrive.
 */
contract Crowdsale is Ownable, Pausable {
  using SafeMath for uint256;
  /**
   *  @MintableToken token - Token Object
   *  @address wallet - Wallet Address
   *  @uint8 rate - Tokens per Ether
   *  @uint256 weiRaised - Total funds raised in Ethers
  */
  MintableToken internal token;
  address internal wallet;
  uint256 public rate;
  uint256 internal weiRaised;
  /**
   *  @uint256 preSaleStartTime - Pre-Sale Start Time
   *  @uint256 preSaleEndTime - Pre-Sale End Time
   *  @uint256 preICOStartTime - Pre-ICO Start Time
   *  @uint256 preICOEndTime - Pre-ICO End Time
   *  @uint256 ICOstartTime - ICO Start Time
   *  @uint256 ICOEndTime - ICO End Time
  */
  uint256 public preSaleStartTime;
  uint256 public preSaleEndTime;
  uint256 public preICOStartTime;
  uint256 public preICOEndTime;
  uint256 public ICOstartTime;
  uint256 public ICOEndTime;
  
  /**
   *  @uint preSaleBonus - Pre-Sale Start Time
   *  @uint preICOBonus - Pre-Sale End Time
   *  @uint firstWeekBonus - Pre-ICO Start Time
   *  @uint secondWeekBonus - Pre-ICO End Time
   *  @uint thirdWeekBonus - ICO Start Time
  */
  uint internal preSaleBonus;
  uint internal preICOBonus;
  uint internal firstWeekBonus;
  uint internal secondWeekBonus;
  uint internal thirdWeekBonus;
  
  /**
   *  @uint256 weekOne - WeekOne Time 
   *  @uint256 weekTwo - WeekTwo Time 
   *  @uint256 weekThree - WeekThree Time 
  */
  uint256 internal weekOne;
  uint256 internal weekTwo;
  uint256 internal weekThree;
  /**
   *  @uint256 totalSupply - Total supply of tokens 
   *  @uint256 publicSupply - Total public Supply 
   *  @uint256 reserveSupply - Total Reserve Supply 
   *  @uint256 bountySupply - Total Bounty Supply
   *  @uint256 teamSupply - Total Team Supply divided by 4
   *  @uint256 advisorSupply - Total Advisor Supply divided by 4
   *  @uint256 founderSupply - Total Founder Supply divided by 4
   *  @uint256 preSaleSupply - Total PreSale Supply from Public Supply 
   *  @uint256 preICOSupply - Total PreICO Supply from Public Supply
   *  @uint256 icoSupply - Total ICO Supply from Public Supply
  */
  uint256 public totalSupply = SafeMath.mul(700000000, 1 ether);
  uint256 internal publicSupply = SafeMath.mul(SafeMath.div(totalSupply,100),50);
  uint256 internal reserveSupply = SafeMath.mul(SafeMath.div(totalSupply,100),14);
  uint256 internal teamSupply = SafeMath.div(SafeMath.mul(SafeMath.div(totalSupply,100),13),4);
  uint256 internal advisorSupply = SafeMath.div(SafeMath.mul(SafeMath.div(totalSupply,100),3),4);
  uint256 internal bountySupply = SafeMath.mul(SafeMath.div(totalSupply,100),5);
  uint256 internal founderSupply = SafeMath.div(SafeMath.mul(SafeMath.div(totalSupply,100),15),4);
  uint256 internal preSaleSupply = SafeMath.mul(SafeMath.div(totalSupply,100),2);
  uint256 internal preICOSupply = SafeMath.mul(SafeMath.div(totalSupply,100),13);
  uint256 internal icoSupply = SafeMath.mul(SafeMath.div(totalSupply,100),35);
  /**
   *  @uint256 advisorTimeLock - Advisor Timelock 
   *  @uint256 founderTeamTimeLock - Founder and Team Timelock 
  */
  uint256 internal advisorTimeLock;
  uint256 internal founderTeamTimeLock;
  /**
   *  @bool checkUnsoldTokens - 
   *  @bool upgradePreICOSupply - Boolean variable updates when the PreSale tokens added to PreICO supply
   *  @bool upgradeICOSupply - Boolean variable updates when the PreICO tokens added to ICO supply
   *  @bool grantAdvisorSupply -  Boolean variable updates when Team tokens minted
   *  @bool grantFounderTeamSupply - Boolean variable updates when Team and Founder tokens minted
  */
  bool internal checkUnsoldTokens;
  bool internal upgradePreICOSupply;
  bool internal upgradeICOSupply;
  bool internal grantAdvisorSupply;
  bool internal grantFounderTeamSupply;
  /**
   *  @uint vestedFounderTeamCheck - Variable count for vesting
   *  @uint vestedAdvisorCheck - Variable count for vesting 
  */
  uint vestedFounderTeamCheck;
  uint vestedAdvisorCheck;
  /**
   * event for token purchase logging
   * @param purchaser who paid for the tokens
   * @param beneficiary who got the tokens
   * @param value Wei's paid for purchase
   * @param amount amount of tokens purchased
   */
  event TokenPurchase(address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount);
  /**
   * function Crowdsale - Parameterized Constructor
   * @param _startTime - StartTime of Crowdsale
   * @param _endTime - EndTime of Crowdsale
   * @param _rate - Tokens against Ether
   * @param _wallet - MultiSignature Wallet Address
   */
  function Crowdsale(uint256 _startTime, uint256 _endTime, uint256 _rate, address _wallet) internal {
    
    require(_wallet != 0x0);
    token = createTokenContract();
    preSaleStartTime = _startTime;
    preSaleEndTime = 1525352400;
    preICOStartTime = preSaleEndTime;
    preICOEndTime = 1528030800;
    ICOstartTime = preICOEndTime;
    ICOEndTime = _endTime;
    rate = _rate;
    wallet = _wallet;
    preSaleBonus = SafeMath.div(SafeMath.mul(rate,40),100);
    preICOBonus = SafeMath.div(SafeMath.mul(rate,30),100);
    firstWeekBonus = SafeMath.div(SafeMath.mul(rate,20),100);
    secondWeekBonus = SafeMath.div(SafeMath.mul(rate,15),100);
    thirdWeekBonus = SafeMath.div(SafeMath.mul(rate,10),100);
 
    weekOne = SafeMath.add(ICOstartTime, 7 days);
    weekTwo = SafeMath.add(weekOne, 7 days);
    weekThree = SafeMath.add(weekTwo, 7 days);
    advisorTimeLock = SafeMath.add(ICOEndTime, 180 days);
    founderTeamTimeLock = SafeMath.add(ICOEndTime, 180 days);
    checkUnsoldTokens = false;
    upgradeICOSupply = false;
    upgradePreICOSupply = false;
    grantAdvisorSupply = false;
    grantFounderTeamSupply = false;
    vestedFounderTeamCheck = 0;
    vestedAdvisorCheck = 0;
    
  }
  /**
   * function createTokenContract - Mintable Token Created
   */
  function createTokenContract() internal returns (MintableToken) {
    return new MintableToken();
  }
  
  /**
   * function Fallback - Receives Ethers
   */
  function () payable {
    buyTokens(msg.sender);
  }
  /**
   * function preSaleTokens - Calculate Tokens in PreSale
   */
  function preSaleTokens(uint256 weiAmount, uint256 tokens) internal returns (uint256) {
        
    require(preSaleSupply > 0);
    tokens = SafeMath.add(tokens, weiAmount.mul(preSaleBonus));
    tokens = SafeMath.add(tokens, weiAmount.mul(rate));
    require(preSaleSupply >= tokens);
    preSaleSupply = preSaleSupply.sub(tokens);        
    return tokens;
  }
  /**
    * function preICOTokens - Calculate Tokens in PreICO
    */
  function preICOTokens(uint256 weiAmount, uint256 tokens) internal returns (uint256) {
        
    require(preICOSupply > 0);
    if (!upgradePreICOSupply) {
      preICOSupply = SafeMath.add(preICOSupply,preSaleSupply);
      upgradePreICOSupply = true;
    }
    tokens = SafeMath.add(tokens, weiAmount.mul(preICOBonus));
    tokens = SafeMath.add(tokens, weiAmount.mul(rate));
    
    require(preICOSupply >= tokens);
    
    preICOSupply = preICOSupply.sub(tokens);        
    return tokens;
  }
  /**
   * function icoTokens - Calculate Tokens in ICO
   */
  
  function icoTokens(uint256 weiAmount, uint256 tokens, uint256 accessTime) internal returns (uint256) {
        
    require(icoSupply > 0);
    if (!upgradeICOSupply) {
      icoSupply = SafeMath.add(icoSupply,preICOSupply);
      upgradeICOSupply = true;
    }
    
    if (accessTime <= weekOne) {
      tokens = SafeMath.add(tokens, weiAmount.mul(firstWeekBonus));
    } else if (accessTime <= weekTwo) {
      tokens = SafeMath.add(tokens, weiAmount.mul(secondWeekBonus));
    } else if ( accessTime < weekThree ) {
      tokens = SafeMath.add(tokens, weiAmount.mul(thirdWeekBonus));
    }
    
    tokens = SafeMath.add(tokens, weiAmount.mul(rate));
    icoSupply = icoSupply.sub(tokens);        
    return tokens;
  }
  /**
  * function buyTokens - Collect Ethers and transfer tokens
  */
  function buyTokens(address beneficiary) whenNotPaused public payable {
    require(beneficiary != 0x0);
    require(validPurchase());
    uint256 accessTime = now;
    uint256 tokens = 0;
    uint256 weiAmount = msg.value;
    require((weiAmount >= (100000000000000000)) && (weiAmount <= (25000000000000000000)));
    if ((accessTime >= preSaleStartTime) && (accessTime < preSaleEndTime)) {
      tokens = preSaleTokens(weiAmount, tokens);
    } else if ((accessTime >= preICOStartTime) && (accessTime < preICOEndTime)) {
      tokens = preICOTokens(weiAmount, tokens);
    } else if ((accessTime >= ICOstartTime) && (accessTime <= ICOEndTime)) { 
      tokens = icoTokens(weiAmount, tokens, accessTime);
    } else {
      revert();
    }
    
    publicSupply = publicSupply.sub(tokens);
    weiRaised = weiRaised.add(weiAmount);
    token.mint(beneficiary, tokens);
    TokenPurchase(msg.sender, beneficiary, weiAmount, tokens);
    forwardFunds();
  }
  /**
   * function forwardFunds - Transfer funds to wallet
   */
  function forwardFunds() internal {
    wallet.transfer(msg.value);
  }
  /**
   * function validPurchase - Checks the purchase is valid or not
   * @return true - Purchase is withPeriod and nonZero
   */
  function validPurchase() internal constant returns (bool) {
    bool withinPeriod = now >= preSaleStartTime && now <= ICOEndTime;
    bool nonZeroPurchase = msg.value != 0;
    return withinPeriod && nonZeroPurchase;
  }
  /**
   * function hasEnded - Checks the ICO ends or not
   * @return true - ICO Ends
   */
  
  function hasEnded() public constant returns (bool) {
    return now > ICOEndTime;
  }
  /**
   * function unsoldToken - Function used to transfer all 
   *               unsold public tokens to reserve supply
   */
  function unsoldToken() onlyOwner public {
    require(hasEnded());
    require(!checkUnsoldTokens);
    
    checkUnsoldTokens = true;
    reserveSupply = SafeMath.add(reserveSupply, publicSupply);
    publicSupply = 0;
  }
  /** 
   * function getTokenAddress - Get Token Address 
   */
  function getTokenAddress() onlyOwner public returns (address) {
    return token;
  }
  /** 
   * function getPublicSupply - Get Public Address 
   */
  function getPublicSupply() onlyOwner public returns (uint256) {
    return publicSupply;
  }
}
/**
 * @title CappedCrowdsale
 * @dev Extension of Crowdsale with a max amount of funds raised
 */
 
contract CappedCrowdsale is Crowdsale {
  using SafeMath for uint256;
  uint256 public cap;
  function CappedCrowdsale(uint256 _cap) {
    require(_cap > 0);
    cap = _cap;
  }
  // overriding Crowdsale#validPurchase to add extra cap logic
  // @return true if investors can buy at the moment
  function validPurchase() internal constant returns (bool) {
    bool withinCap = weiRaised.add(msg.value) <= cap;
    return super.validPurchase() && withinCap;
  }
  // overriding Crowdsale#hasEnded to add cap logic
  // @return true if crowdsale event has ended
  function hasEnded() public constant returns (bool) {
    bool capReached = weiRaised >= cap;
    return super.hasEnded() || capReached;
  }
}
/**
 * @title FinalizableCrowdsale
 * @dev Extension of Crowdsale where an owner can do extra work
 * after finishing.
 */
contract FinalizableCrowdsale is Crowdsale {
  using SafeMath for uint256;
  bool isFinalized = false;
  event Finalized();
  /**
   * @dev Must be called after crowdsale ends, to do some extra finalization
   * work. Calls the contract's finalization function.
   */
  function finalize() onlyOwner public {
    require(!isFinalized);
    require(hasEnded());
    finalization();
    Finalized();
    isFinalized = true;
  }
  /**
   * @dev Can be overridden to add finalization logic. The overriding function
   * should call super.finalization() to ensure the chain of finalization is
   * executed entirely.
   */
  function finalization() internal {
  }
}
/**
 * @title RefundVault
 * @dev This contract is used for storing funds while a crowdsale
 * is in progress. Supports refunding the money if crowdsale fails,
 * and forwarding it if crowdsale is successful.
 */
contract RefundVault is Ownable {
  using SafeMath for uint256;
  enum State { Active, Refunding, Closed }
  mapping (address => uint256) public deposited;
  address public wallet;
  State public state;
  event Closed();
  event RefundsEnabled();
  event Refunded(address indexed beneficiary, uint256 weiAmount);
  function RefundVault(address _wallet) {
    require(_wallet != 0x0);
    wallet = _wallet;
    state = State.Active;
  }
  function deposit(address investor) onlyOwner public payable {
    require(state == State.Active);
    deposited[investor] = deposited[investor].add(msg.value);
  }
  function close() onlyOwner public {
    require(state == State.Active);
    state = State.Closed;
    Closed();
    wallet.transfer(this.balance);
  }
  function enableRefunds() onlyOwner public {
    require(state == State.Active);
    state = State.Refunding;
    RefundsEnabled();
  }
  function refund(address investor) public {
    require(state == State.Refunding);
    uint256 depositedValue = deposited[investor];
    deposited[investor] = 0;
    investor.transfer(depositedValue);
    Refunded(investor, depositedValue);
  }
}
/**
 * @title RefundableCrowdsale
 * @dev Extension of Crowdsale contract that adds a funding goal, and
 * the possibility of users getting a refund if goal is not met.
 * Uses a RefundVault as the crowdsale's vault.
 */
contract RefundableCrowdsale is FinalizableCrowdsale {
  using SafeMath for uint256;
  // minimum amount of funds to be raised in weis
  uint256 public goal;
  bool private _goalReached = false;
  // refund vault used to hold funds while crowdsale is running
  RefundVault private vault;
  function RefundableCrowdsale(uint256 _goal) {
    require(_goal > 0);
    vault = new RefundVault(wallet);
    goal = _goal;
  }
  // We're overriding the fund forwarding from Crowdsale.
  // In addition to sending the funds, we want to call
  // the RefundVault deposit function
  function forwardFunds() internal {
    vault.deposit.value(msg.value)(msg.sender);
  }
  // if crowdsale is unsuccessful, investors can claim refunds here
  function claimRefund() public {
    require(isFinalized);
    require(!goalReached());
    vault.refund(msg.sender);
  }
  // vault finalization task, called when owner calls finalize()
  function finalization() internal {
    if (goalReached()) {
      vault.close();
    } else {
      vault.enableRefunds();
    }
    super.finalization();
  }
  function goalReached() public constant returns (bool) {
    if (weiRaised >= goal) {
      _goalReached = true;
      return true;
    } else if (_goalReached) {
      return true;
    } 
    else {
      return false;
    }
  }
  function updateGoalCheck() onlyOwner public {
    _goalReached = true;
  }
  function getVaultAddress() onlyOwner public returns (address) {
    return vault;
  }
}
/**
 * @title ArtToujourToken 
 */
 
contract ArtToujourToken is MintableToken {
  /**
   *  @string name - Token Name
   *  @string symbol - Token Symbol
   *  @uint8 decimals - Token Decimals
   *  @uint256 _totalSupply - Token Total Supply
  */
  string public constant name = "ARISTON";
  string public constant symbol = "ARTZ";
  uint8 public constant decimals = 18;
  uint256 public constant _totalSupply = 700000000 * 1 ether;
  
/** Constructor ArtToujourToken */
  function ArtToujourToken() {
    totalSupply = _totalSupply;
  }
}
/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
  function mul(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }
  function div(uint256 a, uint256 b) internal constant 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;
  }
  function sub(uint256 a, uint256 b) internal constant returns (uint256) {
    assert(b <= a);
    return a - b;
  }
  function add(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}
contract CrowdsaleFunctions is Crowdsale {
 /** 
  * function bountyFunds - Transfer bounty tokens via AirDrop
  * @param beneficiary address where owner wants to transfer tokens
  * @param tokens value of token
  */
  function bountyFunds(address[] beneficiary, uint256[] tokens) onlyOwner public {
    for (uint256 i = 0; i < beneficiary.length; i++) {
      tokens[i] = SafeMath.mul(tokens[i],1 ether); 
      require(bountySupply >= tokens[i]);
      bountySupply = SafeMath.sub(bountySupply,tokens[i]);
      token.mint(beneficiary[i], tokens[i]);
    }
  }
  /** 
   * function reserveFunds - Transfer reserve tokens to wallet for future platform usage
   */
  function reserveFunds() onlyOwner public { 
    require(reserveSupply > 0);
    token.mint(0x3501C88dCEAC658014d6C4406E0D39e11a7e0340, reserveSupply);
    reserveSupply = 0;
  }
  /** 
  * function grantAdvisorToken - Transfer advisor tokens to advisor wallet 
  */
  function grantAdvisorToken() onlyOwner public {
    require(!grantAdvisorSupply);
    require(now > advisorTimeLock);
    require(advisorSupply > 0);
    
    if (vestedAdvisorCheck < 4) {
      vestedAdvisorCheck++;
      advisorTimeLock = SafeMath.add(advisorTimeLock, 90 days);
      token.mint(0x819acdf6731B51Dd7E68D5DfB6f602BBD8E62871, advisorSupply);
  
      if (vestedAdvisorCheck == 4) {
        advisorSupply = 0;
      }
    }
  }
  /** 
   * function grantFounderTeamToken - Transfer advisor tokens to Founder and Team wallets 
   */
  function grantFounderTeamToken() onlyOwner public {
    require(!grantFounderTeamSupply);
    require(now > founderTeamTimeLock);
    require(founderSupply > 0);
    
    if (vestedFounderTeamCheck < 4) {
       vestedFounderTeamCheck++;
       founderTeamTimeLock = SafeMath.add(founderTeamTimeLock, 180 days);
       token.mint(0x996f2959cE684B2cA221b9f0Da41899662220953, founderSupply);
       token.mint(0x3c61fD8BDFf22C3Aa309f52793288CfB8A271325, teamSupply);
       if (vestedFounderTeamCheck == 4) {
          grantFounderTeamSupply = true;
          founderSupply = 0;
          teamSupply = 0;
       }
    }
  }
/** 
 *.function transferToken - Used to transfer tokens to investors who pays us other than Ethers
 * @param beneficiary - Address where owner wants to transfer tokens
 * @param tokens -  Number of tokens
 */
  function transferToken(address beneficiary, uint256 tokens) onlyOwner public {
    require(publicSupply > 0);
    tokens = SafeMath.mul(tokens,1 ether);
    require(publicSupply >= tokens);
    publicSupply = SafeMath.sub(publicSupply,tokens);
    token.mint(beneficiary, tokens);
  }
}
contract ArtToujourICO is Crowdsale, CappedCrowdsale, RefundableCrowdsale, CrowdsaleFunctions {
  
    /** Constructor ArtToujourICO */
    function ArtToujourICO(uint256 _startTime, uint256 _endTime, uint256 _rate, uint256 _goal, uint256 _cap, address _wallet) 
    CappedCrowdsale(_cap)
    FinalizableCrowdsale()
    RefundableCrowdsale(_goal)   
    Crowdsale(_startTime,_endTime,_rate,_wallet) 
    {
        require(_goal < _cap);
    }
    
    /** ArtToujourToken Contract */
    function createTokenContract() internal returns (MintableToken) {
        return new ArtToujourToken();
    }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"preSaleStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"getTokenAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"updateGoalCheck","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unsoldToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"grantAdvisorToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"goal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"getVaultAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"reserveFunds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"getPublicSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"goalReached","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address[]"},{"name":"tokens","type":"uint256[]"}],"name":"bountyFunds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ICOEndTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"preICOEndTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claimRefund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"preICOStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ICOstartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"preSaleEndTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"grantFounderTeamToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"},{"name":"_rate","type":"uint256"},{"name":"_goal","type":"uint256"},{"name":"_cap","type":"uint256"},{"name":"_wallet","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

  Contract Creation Code Switch To Opcodes View
60606040526000805460a060020a60ff02191690556200003a6329b92700670de0b6b3a76400006401000000006200137f620005c982021704565b6013556200007a620000646013546064620005f764010000000002620014a6176401000000009004565b60326401000000006200137f620005c982021704565b601455620000ba620000a46013546064620005f764010000000002620014a6176401000000009004565b600e6401000000006200137f620005c982021704565b60155562000114620000fe620000e86013546064620005f764010000000002620014a6176401000000009004565b600d6401000000006200137f620005c982021704565b6004640100000000620014a6620005f782021704565b60165562000158620000fe620001426013546064620005f764010000000002620014a6176401000000009004565b60036401000000006200137f620005c982021704565b60175562000198620001826013546064620005f764010000000002620014a6176401000000009004565b60056401000000006200137f620005c982021704565b601855620001dc620000fe620001c66013546064620005f764010000000002620014a6176401000000009004565b600f6401000000006200137f620005c982021704565b6019556200021c620002066013546064620005f764010000000002620014a6176401000000009004565b60026401000000006200137f620005c982021704565b601a5562000246620000e86013546064620005f764010000000002620014a6176401000000009004565b601b5562000286620002706013546064620005f764010000000002620014a6176401000000009004565b60236401000000006200137f620005c982021704565b601c556023805460ff199081169091556025805490911690553415620002ab57600080fd5b60405160c0806200387c83398101604052808051919060200180519190602001805191906020018051919060200180519190602001805160008054600160a060020a03191633600160a060020a039081169190911790915590925084915083908890889088908690811615156200032157600080fd5b62000339640100000000620014bd6200060f82021704565b60018054600160a060020a0319908116600160a060020a03938416179091556005869055635aeb07d06006819055600755635b13e6506008819055600955600a859055600384905560028054909116918316919091179055620003c6620003b0836028640100000000620005c981026200137f1704565b6064640100000000620014a6620005f782021704565b600b55600354620003ec90620003b090601e6401000000006200137f620005c982021704565b600c556003546200041290620003b09060146401000000006200137f620005c982021704565b600d556003546200043890620003b090600f6401000000006200137f620005c982021704565b600e556003546200045e90620003b090600a6401000000006200137f620005c982021704565b600f55600954620004819062093a80640100000000620013036200063782021704565b6010819055620004a39062093a80640100000000620013036200063782021704565b6011819055620004c59062093a80640100000000620013036200063782021704565b601255600a54620004e89062ed4e00640100000000620013036200063782021704565b601d55600a546200050b9062ed4e00640100000000620013036200063782021704565b601e555050601f805464ffffffffff19169055505060006020819055602181905581116200053857600080fd5b602255600081116200054957600080fd5b600254600160a060020a03166200055f62000647565b600160a060020a039091168152602001604051809103906000f08015156200058657600080fd5b60258054600160a060020a03929092166101000261010060a860020a0319909216919091179055602455818310620005bd57600080fd5b50505050505062000669565b6000828202831580620005e75750828482811515620005e457fe5b04145b1515620005f057fe5b9392505050565b60008082848115156200060657fe5b04949350505050565b60006200061b62000658565b604051809103906000f08015156200063257600080fd5b905090565b600082820183811015620005f057fe5b6040516105dd806200271b83390190565b604051610b848062002cf883390190565b6120a280620006796000396000f300606060405236156101595763ffffffff60e060020a60003504166306d65af381146101645780631072cbea1461018957806310fe9ae8146101ab57806318160ddd146101da5780631df025d6146101ed57806327608c2414610200578063288811cb146102135780632c4e722e14610226578063355274ea146102395780633f4ba83a1461024c578063401938831461025f5780634bb278f3146102725780635c975abb1461028557806365cacaa4146102ac57806372a9e232146102bf57806373cbd8ce146102d25780637d3d6522146102e55780638456cb59146102f85780639a4714161461030b578063a242f0491461039a578063a273738c146103ad578063b5545a3c146103c0578063bfcdbae9146103d3578063c1da3923146103e6578063cce29ea7146103f9578063ec8ac4d81461040c578063ecb70fb714610420578063f2fde38b14610433578063ff95a8d214610452575b61016233610465565b005b341561016f57600080fd5b610177610655565b60405190815260200160405180910390f35b341561019457600080fd5b610162600160a060020a036004351660243561065b565b34156101b657600080fd5b6101be610738565b604051600160a060020a03909116815260200160405180910390f35b34156101e557600080fd5b610177610765565b34156101f857600080fd5b61016261076b565b341561020b57600080fd5b610162610795565b341561021e57600080fd5b6101626107fa565b341561023157600080fd5b610177610919565b341561024457600080fd5b61017761091f565b341561025757600080fd5b610162610925565b341561026a57600080fd5b6101776109a4565b341561027d57600080fd5b6101626109aa565b341561029057600080fd5b610298610a2b565b604051901515815260200160405180910390f35b34156102b757600080fd5b6101be610a3b565b34156102ca57600080fd5b610162610a6c565b34156102dd57600080fd5b610177610b33565b34156102f057600080fd5b610298610b56565b341561030357600080fd5b610162610b96565b341561031657600080fd5b610162600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750949650610c1a95505050505050565b34156103a557600080fd5b610177610d79565b34156103b857600080fd5b610177610d7f565b34156103cb57600080fd5b610162610d85565b34156103de57600080fd5b610177610e0e565b34156103f157600080fd5b610177610e14565b341561040457600080fd5b610177610e1a565b610162600160a060020a0360043516610465565b341561042b57600080fd5b610298610e20565b341561043e57600080fd5b610162600160a060020a0360043516610e42565b341561045d57600080fd5b610162610edd565b600080548190819060a060020a900460ff161561048157600080fd5b600160a060020a038416151561049657600080fd5b61049e6110ab565b15156104a957600080fd5b50429150600090503467016345785d8a000081108015906104d3575068015af1d78b58c400008111155b15156104de57600080fd5b60055483101580156104f1575060065483105b156105075761050081836110de565b9150610552565b600754831015801561051a575060085483105b15610529576105008183611158565b600954831015801561053d5750600a548311155b1561054d576105008183856111ff565b600080fd5b601454610565908363ffffffff6112f116565b60145560045461057b908263ffffffff61130316565b600455600154600160a060020a03166340c10f19858460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156105dd57600080fd5b6102c65a03f115156105ee57600080fd5b505050604051805190505083600160a060020a031633600160a060020a03167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18838560405191825260208201526040908101905180910390a361064f611319565b50505050565b60055481565b60005433600160a060020a0390811691161461067657600080fd5b6014546000901161068657600080fd5b61069881670de0b6b3a764000061137f565b905080601454101515156106ab57600080fd5b6106b7601454826112f1565b601455600154600160a060020a03166340c10f19838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561071957600080fd5b6102c65a03f1151561072a57600080fd5b505050604051805150505050565b6000805433600160a060020a0390811691161461075457600080fd5b50600154600160a060020a03165b90565b60135481565b60005433600160a060020a0390811691161461078657600080fd5b6025805460ff19166001179055565b60005433600160a060020a039081169116146107b057600080fd5b6107b8610e20565b15156107c357600080fd5b601f5460ff16156107d357600080fd5b601f805460ff191660011790556015546014546107f09190611303565b6015556000601455565b60005433600160a060020a0390811691161461081557600080fd5b601f546301000000900460ff161561082c57600080fd5b601d54421161083a57600080fd5b6017546000901161084a57600080fd5b6004602154101561091757602180546001019055601d5461086e906276a700611303565b601d55600154601754600160a060020a03909116906340c10f199073819acdf6731b51dd7e68d5dfb6f602bbd8e628719060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156108eb57600080fd5b6102c65a03f115156108fc57600080fd5b50505060405180515050602154600414156109175760006017555b565b60035481565b60225481565b60005433600160a060020a0390811691161461094057600080fd5b60005460a060020a900460ff16151561095857600080fd5b6000805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60245481565b60005433600160a060020a039081169116146109c557600080fd5b60235460ff16156109d557600080fd5b6109dd610e20565b15156109e857600080fd5b6109f06113a3565b7f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768160405160405180910390a16023805460ff19166001179055565b60005460a060020a900460ff1681565b6000805433600160a060020a03908116911614610a5757600080fd5b506025546101009004600160a060020a031690565b60005433600160a060020a03908116911614610a8757600080fd5b60155460009011610a9757600080fd5b600154601554600160a060020a03909116906340c10f1990733501c88dceac658014d6c4406e0d39e11a7e03409060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610b1157600080fd5b6102c65a03f11515610b2257600080fd5b505050604051805150506000601555565b6000805433600160a060020a03908116911614610b4f57600080fd5b5060145490565b6000602454600454101515610b7b57506025805460ff19166001908117909155610762565b60255460ff1615610b8e57506001610762565b506000610762565b60005433600160a060020a03908116911614610bb157600080fd5b60005460a060020a900460ff1615610bc857600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b6000805433600160a060020a03908116911614610c3657600080fd5b5060005b8251811015610d7457610c6a828281518110610c5257fe5b90602001906020020151670de0b6b3a764000061137f565b828281518110610c7657fe5b60209081029091010152818181518110610c8c57fe5b906020019060200201516018541015610ca457600080fd5b610cc5601854838381518110610cb657fe5b906020019060200201516112f1565b601855600154600160a060020a03166340c10f19848381518110610ce557fe5b90602001906020020151848481518110610cfb57fe5b9060200190602002015160006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610d5157600080fd5b6102c65a03f11515610d6257600080fd5b50505060405180515050600101610c3a565b505050565b600a5481565b60085481565b60235460ff161515610d9657600080fd5b610d9e610b56565b15610da857600080fd5b6025546101009004600160a060020a031663fa89401a3360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515610dfd57600080fd5b6102c65a03f11515610d7457600080fd5b60075481565b60095481565b60065481565b602254600454600091901015610e3461146e565b80610e3c5750805b91505090565b60005433600160a060020a03908116911614610e5d57600080fd5b600160a060020a0381161515610e7257600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60005433600160a060020a03908116911614610ef857600080fd5b601f54640100000000900460ff1615610f1057600080fd5b601e544211610f1e57600080fd5b60195460009011610f2e57600080fd5b6004602054101561091757602080546001019055601e54610f529062ed4e00611303565b601e55600154601954600160a060020a03909116906340c10f199073996f2959ce684b2ca221b9f0da418996622209539060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610fcf57600080fd5b6102c65a03f11515610fe057600080fd5b50505060405180515050600154601654600160a060020a03909116906340c10f1990733c61fd8bdff22c3aa309f52793288cfb8a2713259060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561106457600080fd5b6102c65a03f1151561107557600080fd5b505050604051805150506020546004141561091757601f805464ff00000000191664010000000017905560006019819055601655565b6000806022546110c63460045461130390919063ffffffff16565b111590506110d2611476565b8015610e3c5750919050565b600080601a541115156110f057600080fd5b61110e82611109600b548661137f90919063ffffffff16565b611303565b9150611129826111096003548661137f90919063ffffffff16565b915081601a541015151561113c57600080fd5b601a5461114f908363ffffffff6112f116565b601a5550919050565b600080601b5411151561116a57600080fd5b601f54610100900460ff16151561119c57611189601b54601a54611303565b601b55601f805461ff0019166101001790555b6111b582611109600c548661137f90919063ffffffff16565b91506111d0826111096003548661137f90919063ffffffff16565b915081601b54101515156111e357600080fd5b601b546111f6908363ffffffff6112f116565b601b5550919050565b600080601c5411151561121157600080fd5b601f5462010000900460ff16151561124657611231601c54601b54611303565b601c55601f805462ff00001916620100001790555b601054821161126f5761126883611109600d548761137f90919063ffffffff16565b92506112b7565b60115482116112915761126883611109600e548761137f90919063ffffffff16565b6012548210156112b7576112b483611109600f548761137f90919063ffffffff16565b92505b6112d0836111096003548761137f90919063ffffffff16565b601c549093506112e6908463ffffffff6112f116565b601c55509092915050565b6000828211156112fd57fe5b50900390565b60008282018381101561131257fe5b9392505050565b6025546101009004600160a060020a031663f340fa01343360405160e060020a63ffffffff8516028152600160a060020a0390911660048201526024016000604051808303818588803b151561136e57600080fd5b6125ee5a03f1151561064f57600080fd5b600082820283158061139b575082848281151561139857fe5b04145b151561131257fe5b6113ab610b56565b1561140d576025546101009004600160a060020a03166343d726d66040518163ffffffff1660e060020a028152600401600060405180830381600087803b15156113f457600080fd5b6102c65a03f1151561140557600080fd5b505050611466565b6025546101009004600160a060020a0316638c52dc416040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561145157600080fd5b6102c65a03f1151561146257600080fd5b5050505b610917610917565b600a54421190565b6000806000600554421015801561148f5750600a544211155b91505034151581801561149f5750805b9250505090565b60008082848115156114b457fe5b04949350505050565b60006114c76114e2565b604051809103906000f08015156114dd57600080fd5b905090565b604051610b84806114f383390190560060606040526003805460a060020a60ff0219169055341561001f57600080fd5b60038054600160a060020a033316600160a060020a03199091161790556b024306c4097859c43c000000600055610b298061005b6000396000f300606060405236156100ee5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b81146100f357806306fdde031461011a578063095ea7b3146101a457806318160ddd146101c657806323b872dd146101eb578063313ce567146102135780633eaaf86b1461023c57806340c10f191461024f57806366188463146102715780636d1b229d1461029357806370a08231146102a95780637d64bcb4146102c857806395d89b41146102db578063a9059cbb146102ee578063d73dd62314610310578063dd62ed3e14610332578063f2fde38b14610357575b600080fd5b34156100fe57600080fd5b610106610378565b604051901515815260200160405180910390f35b341561012557600080fd5b61012d610399565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610169578082015183820152602001610151565b50505050905090810190601f1680156101965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101af57600080fd5b610106600160a060020a03600435166024356103d0565b34156101d157600080fd5b6101d961043c565b60405190815260200160405180910390f35b34156101f657600080fd5b610106600160a060020a0360043581169060243516604435610442565b341561021e57600080fd5b61022661056c565b60405160ff909116815260200160405180910390f35b341561024757600080fd5b6101d9610571565b341561025a57600080fd5b610106600160a060020a0360043516602435610581565b341561027c57600080fd5b610106600160a060020a0360043516602435610692565b341561029e57600080fd5b61010660043561078c565b34156102b457600080fd5b6101d9600160a060020a03600435166107be565b34156102d357600080fd5b6101066107d9565b34156102e657600080fd5b61012d61085e565b34156102f957600080fd5b610106600160a060020a0360043516602435610895565b341561031b57600080fd5b610106600160a060020a036004351660243561096b565b341561033d57600080fd5b6101d9600160a060020a0360043581169060243516610a0f565b341561036257600080fd5b610376600160a060020a0360043516610a3a565b005b60035474010000000000000000000000000000000000000000900460ff1681565b60408051908101604052600781527f41524953544f4e00000000000000000000000000000000000000000000000000602082015281565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b60005481565b600080600160a060020a038416151561045a57600080fd5b50600160a060020a038085166000818152600260209081526040808320339095168352938152838220549282526001905291909120546104a0908463ffffffff610ad516565b600160a060020a0380871660009081526001602052604080822093909355908616815220546104d5908463ffffffff610ae716565b600160a060020a0385166000908152600160205260409020556104fe818463ffffffff610ad516565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3506001949350505050565b601281565b6b024306c4097859c43c00000081565b60035460009033600160a060020a0390811691161461059f57600080fd5b60035474010000000000000000000000000000000000000000900460ff16156105c757600080fd5b600160a060020a0383166000908152600160205260409020546105f0908363ffffffff610ae716565b600160a060020a0384166000818152600160205260409081902092909255907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859084905190815260200160405180910390a282600160a060020a031633600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a350600192915050565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054808311156106ef57600160a060020a033381166000908152600260209081526040808320938816835292905290812055610726565b6106ff818463ffffffff610ad516565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a35060019392505050565b60035460009033600160a060020a039081169116146107aa57600080fd5b6107b660005483610ad5565b600055919050565b600160a060020a031660009081526001602052604090205490565b60035460009033600160a060020a039081169116146107f757600080fd5b6003805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790557fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a150600190565b60408051908101604052600481527f4152545a00000000000000000000000000000000000000000000000000000000602082015281565b6000600160a060020a03831615156108ac57600080fd5b600160a060020a0333166000908152600160205260409020546108d5908363ffffffff610ad516565b600160a060020a03338116600090815260016020526040808220939093559085168152205461090a908363ffffffff610ae716565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350600192915050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120546109a3908363ffffffff610ae716565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b60035433600160a060020a03908116911614610a5557600080fd5b600160a060020a0381161515610a6a57600080fd5b600354600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600082821115610ae157fe5b50900390565b600082820183811015610af657fe5b93925050505600a165627a7a723058206a9b4c05d51ea73ea47889f7930affe7cc138c63782b79cd616f30a0c8c98f110029a165627a7a72305820e33ae71c89a3150145c3e4e0d719903b17be2f6258a9bb466132c9422084dc6500296060604052341561000f57600080fd5b6040516020806105dd8339810160405280805160008054600160a060020a03191633600160a060020a039081169190911790915590925082161515905061005557600080fd5b60028054600160a060020a031916600160a060020a03929092169190911760a060020a60ff021916905561054f8061008e6000396000f3006060604052361561008b5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166343d726d68114610090578063521eb273146100a55780638c52dc41146100d4578063c19d93fb146100e7578063cb13cddb1461011e578063f2fde38b1461014f578063f340fa011461016e578063fa89401a14610182575b600080fd5b341561009b57600080fd5b6100a36101a1565b005b34156100b057600080fd5b6100b861027c565b604051600160a060020a03909116815260200160405180910390f35b34156100df57600080fd5b6100a361028b565b34156100f257600080fd5b6100fa61031c565b6040518082600281111561010a57fe5b60ff16815260200191505060405180910390f35b341561012957600080fd5b61013d600160a060020a036004351661032c565b60405190815260200160405180910390f35b341561015a57600080fd5b6100a3600160a060020a036004351661033e565b6100a3600160a060020a03600435166103d9565b341561018d57600080fd5b6100a3600160a060020a036004351661045d565b60005433600160a060020a039081169116146101bc57600080fd5b60006002805460a060020a900460ff16908111156101d657fe5b146101e057600080fd5b6002805474ff00000000000000000000000000000000000000001916740200000000000000000000000000000000000000001790557f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a1600254600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151561027a57600080fd5b565b600254600160a060020a031681565b60005433600160a060020a039081169116146102a657600080fd5b60006002805460a060020a900460ff16908111156102c057fe5b146102ca57600080fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a1790557f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8960405160405180910390a1565b60025460a060020a900460ff1681565b60016020526000908152604090205481565b60005433600160a060020a0390811691161461035957600080fd5b600160a060020a038116151561036e57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60005433600160a060020a039081169116146103f457600080fd5b60006002805460a060020a900460ff169081111561040e57fe5b1461041857600080fd5b600160a060020a038116600090815260016020526040902054610441903463ffffffff61050d16565b600160a060020a03909116600090815260016020526040902055565b600060016002805460a060020a900460ff169081111561047957fe5b1461048357600080fd5b50600160a060020a038116600081815260016020526040808220805492905590919082156108fc0290839051600060405180830381858888f1935050505015156104cc57600080fd5b81600160a060020a03167fd7dee2702d63ad89917b6a4da9981c90c4d24f8c2bdfd64c604ecae57d8d06518260405190815260200160405180910390a25050565b60008282018381101561051c57fe5b93925050505600a165627a7a72305820df1cc141f8f523625a055dc0b6736d6f81ddb0108e6a9b4aed5d5386a7869f55002960606040526003805460a060020a60ff0219169055341561001f57600080fd5b60038054600160a060020a033316600160a060020a03199091161790556b024306c4097859c43c000000600055610b298061005b6000396000f300606060405236156100ee5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b81146100f357806306fdde031461011a578063095ea7b3146101a457806318160ddd146101c657806323b872dd146101eb578063313ce567146102135780633eaaf86b1461023c57806340c10f191461024f57806366188463146102715780636d1b229d1461029357806370a08231146102a95780637d64bcb4146102c857806395d89b41146102db578063a9059cbb146102ee578063d73dd62314610310578063dd62ed3e14610332578063f2fde38b14610357575b600080fd5b34156100fe57600080fd5b610106610378565b604051901515815260200160405180910390f35b341561012557600080fd5b61012d610399565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610169578082015183820152602001610151565b50505050905090810190601f1680156101965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101af57600080fd5b610106600160a060020a03600435166024356103d0565b34156101d157600080fd5b6101d961043c565b60405190815260200160405180910390f35b34156101f657600080fd5b610106600160a060020a0360043581169060243516604435610442565b341561021e57600080fd5b61022661056c565b60405160ff909116815260200160405180910390f35b341561024757600080fd5b6101d9610571565b341561025a57600080fd5b610106600160a060020a0360043516602435610581565b341561027c57600080fd5b610106600160a060020a0360043516602435610692565b341561029e57600080fd5b61010660043561078c565b34156102b457600080fd5b6101d9600160a060020a03600435166107be565b34156102d357600080fd5b6101066107d9565b34156102e657600080fd5b61012d61085e565b34156102f957600080fd5b610106600160a060020a0360043516602435610895565b341561031b57600080fd5b610106600160a060020a036004351660243561096b565b341561033d57600080fd5b6101d9600160a060020a0360043581169060243516610a0f565b341561036257600080fd5b610376600160a060020a0360043516610a3a565b005b60035474010000000000000000000000000000000000000000900460ff1681565b60408051908101604052600781527f41524953544f4e00000000000000000000000000000000000000000000000000602082015281565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b60005481565b600080600160a060020a038416151561045a57600080fd5b50600160a060020a038085166000818152600260209081526040808320339095168352938152838220549282526001905291909120546104a0908463ffffffff610ad516565b600160a060020a0380871660009081526001602052604080822093909355908616815220546104d5908463ffffffff610ae716565b600160a060020a0385166000908152600160205260409020556104fe818463ffffffff610ad516565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3506001949350505050565b601281565b6b024306c4097859c43c00000081565b60035460009033600160a060020a0390811691161461059f57600080fd5b60035474010000000000000000000000000000000000000000900460ff16156105c757600080fd5b600160a060020a0383166000908152600160205260409020546105f0908363ffffffff610ae716565b600160a060020a0384166000818152600160205260409081902092909255907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859084905190815260200160405180910390a282600160a060020a031633600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a350600192915050565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054808311156106ef57600160a060020a033381166000908152600260209081526040808320938816835292905290812055610726565b6106ff818463ffffffff610ad516565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a35060019392505050565b60035460009033600160a060020a039081169116146107aa57600080fd5b6107b660005483610ad5565b600055919050565b600160a060020a031660009081526001602052604090205490565b60035460009033600160a060020a039081169116146107f757600080fd5b6003805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790557fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a150600190565b60408051908101604052600481527f4152545a00000000000000000000000000000000000000000000000000000000602082015281565b6000600160a060020a03831615156108ac57600080fd5b600160a060020a0333166000908152600160205260409020546108d5908363ffffffff610ad516565b600160a060020a03338116600090815260016020526040808220939093559085168152205461090a908363ffffffff610ae716565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350600192915050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120546109a3908363ffffffff610ae716565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b60035433600160a060020a03908116911614610a5557600080fd5b600160a060020a0381161515610a6a57600080fd5b600354600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600082821115610ae157fe5b50900390565b600082820183811015610af657fe5b93925050505600a165627a7a723058206a9b4c05d51ea73ea47889f7930affe7cc138c63782b79cd616f30a0c8c98f110029000000000000000000000000000000000000000000000000000000005ac37ad0000000000000000000000000000000000000000000000000000000005b4b45500000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000007f0e10af47c1c7000000000000000000000000000001101edf3b192b93ac903edfdbdbc859085e187b1

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

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000005ac37ad0
Arg [1] : 000000000000000000000000000000000000000000000000000000005b4b4550
Arg [2] : 0000000000000000000000000000000000000000000000000000000000001f40
Arg [3] : 00000000000000000000000000000000000000000000010f0cf064dd59200000
Arg [4] : 0000000000000000000000000000000000000000000007f0e10af47c1c700000
Arg [5] : 0000000000000000000000001101edf3b192b93ac903edfdbdbc859085e187b1


   Swarm Source:
bzzr://6a9b4c05d51ea73ea47889f7930affe7cc138c63782b79cd616f30a0c8c98f11

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.