Contract 0xef9a85c6c6f61b59d7a371afcb519f5f55d07d53

 

TxHash Block Age From To Value [TxFee]
0x70427e11751c19f529f061f67984b137dcfdb0f3729b3ff33d7dd115f641e719709385834 days 9 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d IN  0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.000066888
0x53d6bef5ee147abd63aebf6686656eed5b09e662b249c1bdf8f7996cfbf96f5e709385134 days 9 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d IN  0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.000073497
0xf6488584d4b1e4154db3b587bcd947f06dfca0f82d13778906cb0ac2c4ef7760709382834 days 9 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d IN  0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.000160434
0x012cc1d7225d2d6a51f223d79f281095cb8e5e903d1a389d8bb3fde68cbc83df709382434 days 9 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d IN  0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.000066651
0xde26dacd29d56a07b6e47c6159475fa15e309794a69b80bf2561574b9b535746709382434 days 9 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d IN  0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.000068475
0xa66c6b3e6823ccdb94ca331648efee6422d6df21b5a1159d89e8f10d763acf78709350534 days 11 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d IN  0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.000083931
0x6eab14bdbf4c4adc4016693483c95858c48d0fa06d019de4c4ef6ff96c5dfb79709350434 days 11 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d IN  0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.000076512
0x7d86c2af291800b48a46e29558e024104d01a7bebf28064d31ab73b8f1bfde2d709350434 days 11 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d IN  0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.000076512
0xaa97617a679909780157c09243be61a48135d4f26a13a448b3e21a699348d448709350434 days 11 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d IN  0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.000076512
0x53a7e82aaa48bd578573d8ddc9f3f9727d2708a76e0b293bda0aed4a13438dc4709341434 days 11 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d IN  0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.000128931
0x72f09ce2b1554d549d5f9955fd94745c909e3eedf0aa2b2df10df73ae1af1ee5709339634 days 11 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d IN  0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.000129123
0x3527e5a67ecbdd698224816a878dc0bf0005fb3cb8be8828ac8a927d1efac158709330134 days 11 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d IN  0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.000128931
0x3cd90d5a5e2a48d0ade58608cb11ab0eee68d2b617a832812b551775685c92c4709330134 days 11 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d IN  0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.000128931
0xa02038c9dc7d2db418e168e415f3db6b569f8eff0aff6fddf7ed9a4ca8f6bd22709329634 days 11 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d IN  0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.000076704
0xe260d1a5cdd4aae65c5c74177aea883be185adab0e89d757b5df5b484d01f0e6709326334 days 12 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d IN  0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.000129123
0xcedc0f12c4d94428fbd48e5572ef3e0419ebb43e5f6ba655ed10655e815cc7c7709312134 days 12 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d IN  0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.000129123
0xdf0fee0744d10b83d4931e3b74e86a44c1f5c73cba7c186e0864ae83645c7b2e709310434 days 12 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d IN  0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.000128931
0xfdc894af77c622f5df02400d5440738737307d36f7c4b2d7815aca3536dc1a57709309434 days 12 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d IN  0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.000129123
0xc061dc92e624576e78695f625d90a5c54fd8c5c89a0d6db07522907972dc5f38709308434 days 12 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d IN  0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.000129123
0x0cd815db0e4c2b33d8f2ca6bc6af3614f8efc4ab42303084739d44cc24a0fb64709307134 days 12 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d IN  0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.000174123
0x468ce4444e89991b9b66626ab0d62f957ad9500bd11d4960d3082bbd4ad660b9708677435 days 15 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d IN  0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.000111765
0xbd9cc7f785f73867bcfc3b43e310b81572443cac58a978b3084d35ee676407a4708677435 days 15 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d IN  0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.000111765
0xa7cacfde87a1bea27f64f6e9ee6b882700f2d0278f9d855733d1f0c0d7ff344b708677435 days 15 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d IN  0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.000114185
0xe8574677cfc1c7740baa96d460d37cf6c6df1b9b56b2c65524a644afcc3c3e1a708094736 days 16 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d IN  0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.000114185
0x7131d84cf6ac9eeadfa3750eb62401fc28cea7636f793c34cdc1568fa3dd21f0708085836 days 16 hrs ago0xf5b2cd8a97ee840934d2c571a4b2fde71d2e212d IN  0xef9a85c6c6f61b59d7a371afcb519f5f55d07d530 Ether0.00022353
[ Download CSV Export 

Latest 2 Internal Transactions Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0x466142ae5f35928c18790752cdba5a4ac6dace16a6058069b0bf6b82214f1e405372834325 days 14 hrs ago0xef9a85c6c6f61b59d7a371afcb519f5f55d07d53  Contract Creation0 Ether
0x466142ae5f35928c18790752cdba5a4ac6dace16a6058069b0bf6b82214f1e405372834325 days 14 hrs 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) Solidity Compiler Bugs.

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


Contract Source Code
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
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
Block Age transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.