Contract 0x714c1ef3854591d4118bd6887d4740bc4d5f5412

 

TxHash Block Age From To Value [TxFee]
0xd1715f8e0216298a193a385f5bb1f2702d531fe8128d2b386c93bc298e4b770872412254 hrs 12 mins ago0x9d61d95b20ac96079e25785b7a5354b169612564 IN  0x714c1ef3854591d4118bd6887d4740bc4d5f54120 Ether0.0001475308
0x25542c97475d62f48af2b0e3ea2c5772c80adc93ddc2d012528815f6acb3701772405767 hrs 54 mins ago0x9d61d95b20ac96079e25785b7a5354b169612564 IN  0x714c1ef3854591d4118bd6887d4740bc4d5f54120 Ether0.0002449568
0x2dbe0f4821ef40ba3250230638b571337e84dc7c6858d1fdeeba29ff984b1ae0723838019 hrs 53 mins ago0x9d61d95b20ac96079e25785b7a5354b169612564 IN  0x714c1ef3854591d4118bd6887d4740bc4d5f54120 Ether0.00013918
0x5ef2bc48dcd2bcc726955ea63394d3f618e6d5e23fe1fca5bf1859b4f9457020723819221 hrs 3 mins ago0x9d61d95b20ac96079e25785b7a5354b169612564 IN  0x714c1ef3854591d4118bd6887d4740bc4d5f54120 Ether0.00013918
0x3f5ad77211738bbb1bef2e9e302f3550197863a421b060f1d6c0c88452c33767723794822 hrs 33 mins ago0x9d61d95b20ac96079e25785b7a5354b169612564 IN  0x714c1ef3854591d4118bd6887d4740bc4d5f54120 Ether0.00013918
0x3889d39db1088f38c9bcbc8827cf29080e9711b78670dfa4cfa5ccf7d15445c9723772723 hrs 43 mins ago0x9d61d95b20ac96079e25785b7a5354b169612564 IN  0x714c1ef3854591d4118bd6887d4740bc4d5f54120 Ether0.00013918
0x01860b7a0d60a58c757a031dc0ee6f03fb60cabd03dd6b0d063088c402b634da72362631 day 8 hrs ago0x9d61d95b20ac96079e25785b7a5354b169612564 IN  0x714c1ef3854591d4118bd6887d4740bc4d5f54120 Ether0.000444352
0xd3b1730c873eb6797cb2c22a309bbd2d3e2cb83231d1145910cb59a8ee7529fc72360521 day 9 hrs ago0x9d61d95b20ac96079e25785b7a5354b169612564 IN  0x714c1ef3854591d4118bd6887d4740bc4d5f54120 Ether0.00042255048
0x292b912783365afa96d3a1a126b472bc49c6d1d30eaa0a4ef337529827a8f48872344201 day 18 hrs ago0x9d61d95b20ac96079e25785b7a5354b169612564 IN  0x714c1ef3854591d4118bd6887d4740bc4d5f54120 Ether0.000222688
0x3282ccfc4abcf52af615a6bb2e67ffc710d16334ed18a7e0fb440d5f2f4ac29d72340841 day 20 hrs ago0x9d61d95b20ac96079e25785b7a5354b169612564 IN  0x714c1ef3854591d4118bd6887d4740bc4d5f54120 Ether0.00013918
0xdd9d49123d8962351ecbee2c27b9107b7c91ae42cda040f1d1fc792f088c503572336451 day 23 hrs ago0x9d61d95b20ac96079e25785b7a5354b169612564 IN  0x714c1ef3854591d4118bd6887d4740bc4d5f54120 Ether0.00013918
0xe9e7462aad153a955e9efa70de85a6d87f8cb95d67bbce8da2d681d0b25a281a72333762 days 43 mins ago0x9d61d95b20ac96079e25785b7a5354b169612564 IN  0x714c1ef3854591d4118bd6887d4740bc4d5f54120 Ether0.000111344
0xc4de66df29fab4c78ed52b45c685b0eb71ab2d62066d5516c917e99bd806ffb572315752 days 10 hrs ago0x9d61d95b20ac96079e25785b7a5354b169612564 IN  0x714c1ef3854591d4118bd6887d4740bc4d5f54120 Ether0.00027836
0xdd4036e5f2bfcd80c29f2b26bf1f6f9230b7d481f5138002af6dd7604255f1c972315412 days 11 hrs ago0x9d61d95b20ac96079e25785b7a5354b169612564 IN  0x714c1ef3854591d4118bd6887d4740bc4d5f54120 Ether0.00027836
0x4dafa672438987864bc17473728f10e8d232194c4799b120b725660dca315e3d72238004 days 7 hrs ago0x9d61d95b20ac96079e25785b7a5354b169612564 IN  0x714c1ef3854591d4118bd6887d4740bc4d5f54120 Ether0.0003215058
0x76f05c6c67b62373725acba1efff92105367f25064ceac4b2566973914d2f1e172191215 days 10 hrs ago0x9d61d95b20ac96079e25785b7a5354b169612564 IN  0x714c1ef3854591d4118bd6887d4740bc4d5f54120 Ether0.00013918
0xc02ea172090045196fa996194bf6b67fb2393e220c83b2d94872c85a202e379372173495 days 20 hrs ago0x9d61d95b20ac96079e25785b7a5354b169612564 IN  0x714c1ef3854591d4118bd6887d4740bc4d5f54120 Ether0.000111344
0xf2e883a360883429c73ec09cf8ab37e11f6b14497cefb87426b7500e30fc804a72156576 days 6 hrs ago0x9d61d95b20ac96079e25785b7a5354b169612564 IN  0x714c1ef3854591d4118bd6887d4740bc4d5f54120 Ether0.00013918
0xccb6acfbb61d12bed7f897a8a03b29ac800717858df5167881a5ef6365edb66e72140516 days 15 hrs ago0x9d61d95b20ac96079e25785b7a5354b169612564 IN  0x714c1ef3854591d4118bd6887d4740bc4d5f54120 Ether0.00013918
0xe08b204ec9bc2a5a932455768bdfd368d2511653e780b5bac23ff81b4e4bf76772110197 days 8 hrs ago0x9d61d95b20ac96079e25785b7a5354b169612564 IN  0x714c1ef3854591d4118bd6887d4740bc4d5f54120 Ether0.00013918
0xfa6246e8bcd32ce3eb7c598959a2b79c10f47ca10ea5052f9dc7b61ad0080ccd72087967 days 21 hrs ago0x9d61d95b20ac96079e25785b7a5354b169612564 IN  0x714c1ef3854591d4118bd6887d4740bc4d5f54120 Ether0.00013918
0x83156ddca89d273fca7e51cd9040cdf35096aa491b838908b1b18ead5485632b72072248 days 6 hrs ago0x0628e4a50a7c54c548f899e93f931796953d3a08 IN  0x714c1ef3854591d4118bd6887d4740bc4d5f54120 Ether0.00007584
0xad20b2778cb9068331935e717abbbc105e29b41d6c18f436206d3f0a88f5d15c72071948 days 6 hrs ago0x0628e4a50a7c54c548f899e93f931796953d3a08 IN  0x714c1ef3854591d4118bd6887d4740bc4d5f54120 Ether0.000074816
0xfc9a9f8a416de66865e92cac8d81e80079cde839d44fc434c7cc3ce2e67d3c0072070178 days 7 hrs ago0x9d61d95b20ac96079e25785b7a5354b169612564 IN  0x714c1ef3854591d4118bd6887d4740bc4d5f54120 Ether0.00013918
0x4df5d97868c75698a765dc8fb3584e81f4d69900fe1739dc90c125ec694912f272069208 days 8 hrs ago0x0628e4a50a7c54c548f899e93f931796953d3a08 IN  0x714c1ef3854591d4118bd6887d4740bc4d5f54120 Ether0.00095612
[ Download CSV Export 

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

Parent TxHash Block Age From To Value
0x357f6d26dd19f250af687133038c5c1ed5eec53fa8535e54603e5243568977bf700669746 days 18 hrs ago0xd4f5bf184bebfd53ac276ec6e091d051d0ed459e0x714c1ef3854591d4118bd6887d4740bc4d5f54120.01 Ether
0xfc83f5d10867dfe659551605b31f3a66766d481c7499aab6f4a7fcd3d12814016353964154 days 10 hrs ago0x714c1ef3854591d4118bd6887d4740bc4d5f54120x9d61d95b20ac96079e25785b7a5354b1696125640.0293004894 Ether
0x168a31b18c081f0f2cd60b1f47fa9c85c798f041b583348a19fff125fbb3d04c6353888154 days 11 hrs ago0x714c1ef3854591d4118bd6887d4740bc4d5f54120x9d61d95b20ac96079e25785b7a5354b1696125640.02927985 Ether
0x1dc5540d670f2a1882a14b3fc18b2d4017afc5e437141fdef835337aad83cc896353880154 days 11 hrs ago0x714c1ef3854591d4118bd6887d4740bc4d5f54120x9d61d95b20ac96079e25785b7a5354b1696125640.02927985 Ether
0xf82c74ece0825da0b9fa03a507987e74a2ea0f055ccb4744e8bc77d1f7970c246328411158 days 16 hrs ago0x714c1ef3854591d4118bd6887d4740bc4d5f54120x9d61d95b20ac96079e25785b7a5354b1696125640.08646435 Ether
0x541f19e727ada823249ebaaafb706cfa27fbeb520682b8d05107201c83bb3ac46326118159 days 1 hr ago0x714c1ef3854591d4118bd6887d4740bc4d5f54120x9d61d95b20ac96079e25785b7a5354b1696125640.07427985 Ether
0xa949ba72cf2ddcf75a0e2e8d582aeda34fda24721c1f90387b30c94210c4da6a6319859160 days 2 hrs ago0x714c1ef3854591d4118bd6887d4740bc4d5f54120x9d61d95b20ac96079e25785b7a5354b1696125640.02927985 Ether
0xb363f0d324f99052b96a20d9990d1949c49e875e3491b71d302ef4d08e54d29c6319837160 days 2 hrs ago0x714c1ef3854591d4118bd6887d4740bc4d5f54120x9d61d95b20ac96079e25785b7a5354b1696125640.02927985 Ether
0x8852d3f6bd0297698326e9d2b93b027134c809f85e9534ee6e4e688903ab15126272284168 days 1 hr ago0x714c1ef3854591d4118bd6887d4740bc4d5f54120x9d61d95b20ac96079e25785b7a5354b1696125640.0284625 Ether
0xebe93b7f33d91098f0053a1e501e1418a90f089a385dda95a9da94146e905c2f6257125170 days 14 hrs ago0x714c1ef3854591d4118bd6887d4740bc4d5f54120x9d61d95b20ac96079e25785b7a5354b1696125640.03 Ether
[ Download CSV Export 
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) Solidity Compiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: KaasyToken
Compiler Version: v0.4.24+commit.e67f0147
Optimization Enabled: No
Runs (Optimizer):  200


Contract Source Code
pragma solidity ^0.4.24;

// ----------------------------------------------------------------------------
// 'Kaasy' CROWDSALE token contract
//
// Deployed to : 0x714c1ef3854591d4118bd6887d4740bc4d5f5412
// Symbol      : KAAS
// Name        : KAASY.AI Token
// Total supply: 500000000
// Decimals    : 18
//
// Enjoy.
//
// (c) by KAASY AI LTD. The MIT Licence.
// ----------------------------------------------------------------------------


// ----------------------------------------------------------------------------
// Safe maths
// ----------------------------------------------------------------------------
contract SafeMath {
    function safeAdd(uint a, uint b) internal pure returns (uint c) {
        c = a + b;
        require(c >= a);
    }
    function safeSub(uint a, uint b) internal pure returns (uint c) {
        require(b <= a);
        c = a - b;
    }
    function safeMul(uint a, uint b) internal pure returns (uint c) {
        c = a * b;
        require(a == 0 || c / a == b);
    }
    function safeDiv(uint a, uint b) internal pure returns (uint c) {
        require(b > 0);
        c = a / b;
    }
}


// ----------------------------------------------------------------------------
// ERC Token Standard #20 Interface
// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md
// ----------------------------------------------------------------------------
contract ERC20Interface {
    function totalSupply() public constant returns (uint);
    function balanceOf(address tokenOwner) public constant returns (uint balance);
    function allowance(address tokenOwner, address spender) public constant returns (uint remaining);
    function transfer(address to, uint tokens) public returns (bool success);
    function approve(address spender, uint tokens) public returns (bool success);
    function transferFrom(address from, address to, uint tokens) public returns (bool success);

    event Transfer(address indexed from, address indexed to, uint tokens);
    event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
}


// ----------------------------------------------------------------------------
// Contract function to receive approval and execute function in one call
//
// Borrowed from MiniMeToken
// ----------------------------------------------------------------------------
contract ApproveAndCallFallBack {
    function receiveApproval(address from, uint256 tokens, address token, bytes data) public;
}


// ----------------------------------------------------------------------------
// Owned contract
// ----------------------------------------------------------------------------
contract Owned {
    address public owner;
    address public newOwner;
    
    address public ownerAPI;
    address public newOwnerAPI;

    event OwnershipTransferred(address indexed _from, address indexed _to);
    event OwnershipAPITransferred(address indexed _from, address indexed _to);

    constructor() public {
        owner = msg.sender;
        ownerAPI = msg.sender;
    }

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }

    modifier onlyOwnerAPI {
        require(msg.sender == ownerAPI);
        _;
    }

    modifier onlyOwnerOrOwnerAPI {
        require(msg.sender == owner || msg.sender == ownerAPI);
        _;
    }

    function transferOwnership(address _newOwner) public onlyOwner {
        newOwner = _newOwner;
    }

    function transferAPIOwnership(address _newOwnerAPI) public onlyOwner {
        newOwnerAPI = _newOwnerAPI;
    }
    function acceptOwnership() public {
        require(msg.sender == newOwner);
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
        newOwner = address(0);
    }
    function acceptOwnershipAPI() public {
        require(msg.sender == newOwnerAPI);
        emit OwnershipAPITransferred(ownerAPI, newOwnerAPI);
        ownerAPI = newOwnerAPI;
        newOwnerAPI = address(0);
    }
}

/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Owned {
  event Pause();
  event Unpause();

  bool public isPaused = false;

  function paused() public view returns (bool currentlyPaused) {
      return isPaused;
  }

  /**
   * @dev Modifier to make a function callable only when the contract is not paused.
   */
  modifier whenNotPaused() {
    require(!isPaused);
    _;
  }

  /**
   * @dev Modifier to make a function callable only when the contract is paused.
   */
  modifier whenPaused() {
    require(isPaused);
    _;
  }

  /**
   * @dev called by the owner to pause, triggers stopped state
   */
  function pause() public onlyOwner whenNotPaused {
    isPaused = true;
    emit Pause();
  }

  /**
   * @dev called by the owner to unpause, returns to normal state
   */
  function unpause() public onlyOwner whenPaused {
    isPaused = false;
    emit Unpause();
  }
}


// ----------------------------------------------------------------------------
// ERC20 Token, with the addition of symbol, name and decimals and assisted
// token transfers
// ----------------------------------------------------------------------------
contract KaasyToken is ERC20Interface, Pausable, SafeMath {
    string public symbol = "KAAS";
    string public  name  = "KAASY.AI Token";
    uint8 public decimals = 18;
    uint public _totalSupply;
    uint public startDate;
    uint public bonusEnd20;
    uint public bonusEnd10;
    uint public bonusEnd05;
    uint public endDate;
    uint public tradingDate;
    uint public exchangeRate = 25000; // IN Euro cents = 300E
    uint256 public maxSupply;
    uint256 public soldSupply;
    uint256 public maxSellable;
    uint8 private teamWOVestingPercentage = 5;
    
    uint256 public minAmountETH;
    uint256 public maxAmountETH;
    
    address public currentRunningAddress;

    mapping(address => uint256) balances; //keeps ERC20 balances, in Symbol
    mapping(address => uint256) ethDeposits; //keeps balances, in ETH
    mapping(address => bool) kycAddressState; //keeps list of addresses which can send ETH without direct fail
    mapping(address => mapping(address => uint256)) allowed;
    mapping(address => uint256) burnedBalances; //keeps ERC20 balances, in Symbol

    //event KYCStateUpdate(address indexed addr, bool state);
    
    event MintingFinished(uint indexed moment);
    bool isMintingFinished = false;
    
    event OwnBlockchainLaunched(uint indexed moment);
    event TokensBurned(address indexed exOwner, uint256 indexed amount, uint indexed moment);
    bool isOwnBlockchainLaunched = false;
    uint momentOwnBlockchainLaunched = 0;
    
    uint8 public versionIndex = 1;
    
    address addrUniversity;
    address addrEarlySkills;
    address addrHackathons;
    address addrLegal;
    address addrMarketing;

    // ------------------------------------------------------------------------
    // Constructor
    // ------------------------------------------------------------------------
    constructor() public {
        maxSupply = 500000000 * (10 ** 18);
        maxSellable = maxSupply * 60 / 100;
        
        currentRunningAddress = address(this);
        
        soldSupply = 0;
        
        startDate = 1535760000;  // September 1st
        bonusEnd20 = 1536969600; // September 15th
        bonusEnd10 = 1538179200; // September 29th
        bonusEnd05 = 1539388800; // October 13th
        endDate = 1542240000;    // November 15th
        tradingDate = 1543536000;// November 30th
        
        minAmountETH = safeDiv(1 ether, 10);
        maxAmountETH = safeMul(1 ether, 5000);
        
        uint256 teamAmount = maxSupply * 150 / 1000;
        
        balances[address(this)] = teamAmount * (100 - teamWOVestingPercentage) / 100; //team with vesting
        emit Transfer(address(0), address(this), balances[address(this)]);
        
        balances[owner] = teamAmount * teamWOVestingPercentage / 100; //team without vesting
        kycAddressState[owner] = true;
        emit Transfer(address(0), owner, balances[owner]);
        
        addrUniversity = 0x20D9846AB6c348AfF24e762150aBfa15D99e4Af5;
        balances[addrUniversity] =  maxSupply * 50 / 1000; //univ
        kycAddressState[addrUniversity] = true;
        emit Transfer(address(0), addrUniversity, balances[addrUniversity]);
        
        addrEarlySkills = 0x3CF15B214734bB3C9040f18033440a35d18746Ca;
        balances[addrEarlySkills] = maxSupply * 50 / 1000; //skills
        kycAddressState[addrEarlySkills] = true;
        emit Transfer(address(0), addrEarlySkills, balances[addrEarlySkills]);
        
        addrHackathons = 0x3ACEB78ff4B064aEE870dcb844cCa43FC6DcBe7d;
        balances[addrHackathons] =  maxSupply * 45 / 1000; //hackathons and bug bounties
        kycAddressState[addrHackathons] = true;
        emit Transfer(address(0), addrHackathons, balances[addrHackathons]);
        
        addrLegal = 0x65e1af8d76af6d1d3E47F14014F3105286FFBcF2;
        balances[addrLegal] =       maxSupply * 30 / 1000; //legal fees & backup
        kycAddressState[addrLegal] = true;
        emit Transfer(address(0), addrLegal, balances[addrLegal]);
        
        addrMarketing = 0x3d7Db960837aF96C457bdB481C3De7cE80366b2c;
        balances[addrMarketing] =   maxSupply * 75 / 1000; //marketing
        kycAddressState[addrMarketing] = true;
        emit Transfer(address(0), addrMarketing, balances[addrMarketing]);
        
        _totalSupply = maxSupply * 40 / 100;
        
        
    }

    // ------------------------------------------------------------------------
    // token minter function
    // ------------------------------------------------------------------------
    function () public payable whenNotPaused {
        if(now > endDate && isMintingFinished == false) {
            finishMinting();
            msg.sender.transfer(msg.value); //return this transfer, as it is too late.
        } else {
            require(now >= startDate && now <= endDate && isMintingFinished == false);
            
            require(msg.value >= minAmountETH && msg.value <= maxAmountETH);
            require(msg.value + ethDeposits[msg.sender] <= maxAmountETH);
            
            require(kycAddressState[msg.sender] == true);
            
            uint tokens = getAmountToIssue(msg.value);
            require(safeAdd(soldSupply, tokens) <= maxSellable);
            
            soldSupply = safeAdd(soldSupply, tokens);
            _totalSupply = safeAdd(_totalSupply, tokens);
            balances[msg.sender] = safeAdd(balances[msg.sender], tokens);
            ethDeposits[msg.sender] = safeAdd(ethDeposits[msg.sender], msg.value);
            emit Transfer(address(0), msg.sender, tokens);
            
            ownerAPI.transfer(msg.value * 15 / 100);   //transfer 15% of the ETH now, the other 85% at the end of the ICO process
        }
    }
    
    // ------------------------------------------------------------------------
    // Burns tokens of `msg.sender` and sets them as redeemable on KAASY blokchain
    // ------------------------------------------------------------------------
    function BurnMyTokensAndSetAmountForNewBlockchain() public  {
        require(isOwnBlockchainLaunched);
        
        uint senderBalance = balances[msg.sender];
        burnedBalances[msg.sender] = safeAdd(burnedBalances[msg.sender], senderBalance);
        balances[msg.sender] = 0;
        emit TokensBurned(msg.sender, senderBalance, now);
        emit Transfer(msg.sender, address(0), senderBalance);
    }
    
    // ------------------------------------------------------------------------
    // Burns tokens of `exOwner` and sets them as redeemable on KAASY blokchain
    // ------------------------------------------------------------------------
    function BurnTokensAndSetAmountForNewBlockchain(address exOwner) onlyOwnerOrOwnerAPI public {
        require(isOwnBlockchainLaunched);
        
        uint exBalance = balances[exOwner];
        burnedBalances[exOwner] = safeAdd(burnedBalances[exOwner], exBalance);
        balances[exOwner] = 0;
        emit TokensBurned(exOwner, exBalance, now);
        emit Transfer(exOwner, address(0), exBalance);
    }
    
    // ------------------------------------------------------------------------
    // Enables the burning of tokens to move to the new KAASY blockchain
    // ------------------------------------------------------------------------
    function SetNewBlockchainEnabled() onlyOwner public {
        require(isMintingFinished && isOwnBlockchainLaunched == false);
        isOwnBlockchainLaunched = true;
        momentOwnBlockchainLaunched = now;
        emit OwnBlockchainLaunched(now);
    }

    // ------------------------------------------------------------------------
    // Evaluates conditions for finishing the ICO and does that if conditions are met
    // ------------------------------------------------------------------------
    function finishMinting() public returns (bool finished) {
        if(now > endDate && isMintingFinished == false) {
            internalFinishMinting();
            return true;
        } else if (_totalSupply >= maxSupply) {
            internalFinishMinting();
            return true;
        }
        if(now > endDate && address(this).balance > 0) {
            owner.transfer(address(this).balance);
        }
        return false;
    }
    
    // ------------------------------------------------------------------------
    // Actually executes the finish of the ICO, 
    //  no longer minting tokens, 
    //  releasing the 85% of ETH kept by contract and
    //  enables trading 15 days after this moment
    // ------------------------------------------------------------------------
    function internalFinishMinting() internal {
        tradingDate = now + 3600;// * 24 * 15; // 2 weeks after ICO end moment
        isMintingFinished = true;
        emit MintingFinished(now);
        owner.transfer(address(this).balance); //transfer all ETH left (the 85% not sent instantly) to the owner address
    }

    // ------------------------------------------------------------------------
    // Calculates amount of KAAS to issue to `msg.sender` for `ethAmount`
    // Can be called by any interested party, to evaluate the amount of KAAS obtained for `ethAmount` specified
    // ------------------------------------------------------------------------
    function getAmountToIssue(uint256 ethAmount) public view returns(uint256) {
        //price is 10c/KAAS
        uint256 euroAmount = exchangeEthToEur(ethAmount);
        uint256 ret = euroAmount / 10; // 1kaas=0.1EUR, exchange rate is in cents, so *10/100 = /10
        if(now < bonusEnd20) {
            ret = euroAmount * 12 / 100;            //weeks 1+2, 20% bonus
            
        } else if(now < bonusEnd10) {
            ret = euroAmount * 11 / 100;            //weeks 3+4, 10% bonus
            
        } else if(now < bonusEnd05) {
            ret = euroAmount * 105 / 1000;          //weeks 5+6, 5% bonus
            
        }
        
        //rate is in CENTS, so * 100
        if(euroAmount >= 50000 * 100) {
            ret = ret * 13 / 10;
            
        } else if(euroAmount >= 10000 * 100) {
            ret = ret * 12 / 10;
        }
        
        
        return ret  * (uint256)(10) ** (uint256)(decimals);
    }
    
    // ------------------------------------------------------------------------
    // Calculates EUR amount for ethAmount
    // ------------------------------------------------------------------------
    function exchangeEthToEur(uint256 ethAmount) internal view returns(uint256 rate) {
        return safeDiv(safeMul(ethAmount, exchangeRate), 1 ether);
    }
    
    // ------------------------------------------------------------------------
    // Calculates KAAS amount for eurAmount
    // ------------------------------------------------------------------------
    function exchangeEurToEth(uint256 eurAmount) internal view returns(uint256 rate) {
        return safeDiv(safeMul(safeDiv(safeMul(eurAmount, 1000000000000000000), exchangeRate), 1 ether), 1000000000000000000);
    }
    
    // ------------------------------------------------------------------------
    // Calculates and transfers monthly vesting amount to founders, into the balance of `owner` address
    // ------------------------------------------------------------------------
    function transferVestingMonthlyAmount(address destination) public onlyOwner returns (bool) {
        require(destination != address(0));
        uint monthsSinceLaunch = (now - tradingDate) / 3600 / 24 / 30;
        uint256 totalAmountInVesting = maxSupply * 15 / 100 * (100 - teamWOVestingPercentage) / 100; //15% of total, of which 5% instant and 95% with vesting
        uint256 releaseableUpToToday = (monthsSinceLaunch + 1) * totalAmountInVesting / 24; // 15% of total, across 24 months
        
        //address(this) holds the vestable amount left
        uint256 alreadyReleased = totalAmountInVesting - balances[address(this)];
        uint256 releaseableNow = releaseableUpToToday - alreadyReleased;
        require (releaseableNow > 0);
        transferFrom(address(this), destination, releaseableNow);
        
        if(now > tradingDate + 3600 * 24 * 365 * 2 ){
            transferFrom(address(this), destination, balances[address(this)]);
        }
        
        return true;
    }
    
    // ------------------------------------------------------------------------
    // Set KYC state for `depositer` to `isAllowed`, by admins
    // ------------------------------------------------------------------------
    function setAddressKYC(address depositer, bool isAllowed) public onlyOwnerOrOwnerAPI returns (bool) {
        kycAddressState[depositer] = isAllowed;
        //emit KYCStateUpdate(depositer, isAllowed);
        return true;
    }
    
    // ------------------------------------------------------------------------
    // Get an addresses KYC state
    // ------------------------------------------------------------------------
    function getAddressKYCState(address depositer) public view returns (bool) {
        return kycAddressState[depositer];
    }
    
    // ------------------------------------------------------------------------
    // Token name, as seen by the network
    // ------------------------------------------------------------------------
    function name() public view returns (string) {
        return name;
    }
    
    // ------------------------------------------------------------------------
    // Token symbol, as seen by the network
    // ------------------------------------------------------------------------
    function symbol() public view returns (string) {
        return symbol;
    }
    
    // ------------------------------------------------------------------------
    // Token decimals
    // ------------------------------------------------------------------------
    function decimals() public view returns (uint8) {
        return decimals;
    }

    // ------------------------------------------------------------------------
    // Total supply
    // ------------------------------------------------------------------------
    function totalSupply() public constant returns (uint) {
        return _totalSupply  - balances[address(0)]; //address(0) represents burned tokens
    }
    
    // ------------------------------------------------------------------------
    // Circulating supply
    // ------------------------------------------------------------------------
    function circulatingSupply() public constant returns (uint) {
        return _totalSupply - balances[address(0)] - balances[address(this)]; //address(0) represents burned tokens
    }

    // ------------------------------------------------------------------------
    // Get the token balance for account `tokenOwner`
    // ------------------------------------------------------------------------
    function balanceOf(address tokenOwner) public constant returns (uint balance) {
        return balances[tokenOwner];
    }
    
    // ------------------------------------------------------------------------
    // Get the total ETH deposited by `depositer`
    // ------------------------------------------------------------------------
    function depositsOf(address depositer) public constant returns (uint balance) {
        return ethDeposits[depositer];
    }
    
    // ------------------------------------------------------------------------
    // Get the total KAAS burned by `exOwner`
    // ------------------------------------------------------------------------
    function burnedBalanceOf(address exOwner) public constant returns (uint balance) {
        return burnedBalances[exOwner];
    }

    // ------------------------------------------------------------------------
    // Transfer the balance from token owner's account to `to` account
    // - Owner's account must have sufficient balance to transfer
    // - 0 value transfers are allowed
    //  !! fund source is the address calling this function !!
    // ------------------------------------------------------------------------
    function transfer(address to, uint tokens) public whenNotPaused returns (bool success) {
        if(now > endDate && isMintingFinished == false) {
            finishMinting();
        }
        require(now >= tradingDate || kycAddressState[to] == true || msg.sender == addrMarketing); //allow internal transfers before tradingDate
        balances[msg.sender] = safeSub(balances[msg.sender], tokens);
        balances[to] = safeAdd(balances[to], tokens);
        emit Transfer(msg.sender, to, tokens);
        return true;
    }

    // ------------------------------------------------------------------------
    // Token owner can approve for `destination` to transferFrom(...) `tokens`
    // from the token owner's account
    //
    // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md
    // recommends that there are no checks for the approval double-spend attack
    // as this should be implemented in user interfaces
    
    // !!! When called, the amount of tokens DESTINATION can retrieve from MSG.SENDER is set to AMOUNT
    // !!! This is used when another account C calls and pays gas for the transfer between A and B, like bank cheques
    // !!! meaning: Allow DESTINATION to transfer a total AMOUNT from ME=callerOfThisFunction, from this point on, ignoring previous allows
    
    // ------------------------------------------------------------------------
    function approve(address destination, uint amount) public returns (bool success) {
        allowed[msg.sender][destination] = amount;
        emit Approval(msg.sender, destination, amount);
        return true;
    }

    // ------------------------------------------------------------------------
    // Transfer `tokens` from the `from` account to the `to` account
    //
    // The calling account must already have sufficient tokens approve(...)-d
    // for spending from the `from` account and
    // - From account must have sufficient balance to transfer
    // - Spender must have sufficient allowance to transfer
    // - 0 value transfers are allowed
    // ------------------------------------------------------------------------
    function transferFrom(address from, address to, uint tokens) public whenNotPaused returns (bool success) {
        if(now > endDate && isMintingFinished == false) {
            finishMinting();
        }
        require(now >= tradingDate || kycAddressState[to] == true); //allow internal transfers before tradingDate
        allowed[from][msg.sender] = safeSub(allowed[from][msg.sender], tokens);
        balances[from] = safeSub(balances[from], tokens);
        balances[to] = safeAdd(balances[to], tokens);
        emit Transfer(from, to, tokens);
        return true;
    }

    // ------------------------------------------------------------------------
    // Returns the amount of tokens approved by the owner that can be
    // transferred to the requester's account
    // ------------------------------------------------------------------------
    function allowance(address tokenOwner, address requester) public constant returns (uint remaining) {
        return allowed[tokenOwner][requester];
    }

    // ------------------------------------------------------------------------
    // Token owner can approve for `requester` to transferFrom(...) `tokens`
    // from the token owner's account. The `requester` contract function
    // `receiveApproval(...)` is then executed
    // ------------------------------------------------------------------------
    function approveAndCall(address requester, uint tokens, bytes data) public whenNotPaused returns (bool success) {
        allowed[msg.sender][requester] = tokens;
        emit Approval(msg.sender, requester, tokens);
        ApproveAndCallFallBack(requester).receiveApproval(msg.sender, tokens, this, data);
        return true;
    }
    
    // ------------------------------------------------------------------------
    // Owner can transfer out `tokens` amount of accidentally sent ERC20 tokens
    // ------------------------------------------------------------------------
    function transferAllERC20Token(address tokenAddress, uint tokens) public onlyOwnerOrOwnerAPI returns (bool success) {
        return ERC20Interface(tokenAddress).transfer(owner, tokens);
    }
    
    // ------------------------------------------------------------------------
    // Owner can transfer out all accidentally sent ERC20 tokens
    // ------------------------------------------------------------------------
    function transferAnyERC20Token(address tokenAddress) public onlyOwnerOrOwnerAPI returns (bool success) {
        return ERC20Interface(tokenAddress).transfer(owner, ERC20Interface(tokenAddress).balanceOf(this));
    }
    
    // ------------------------------------------------------------------------
    // Set the new ETH-EUR exchange rate, in cents
    // ------------------------------------------------------------------------
    function updateExchangeRate(uint newEthEurRate) public onlyOwnerOrOwnerAPI returns (bool success) {
        exchangeRate = newEthEurRate;
        return true;
    }
    
    // ------------------------------------------------------------------------
    // Get the current ETH-EUR exchange rate, in cents
    // ------------------------------------------------------------------------
    function getExchangeRate() public view returns (uint256 rate) {
        return exchangeRate;
    }
    
    // ------------------------------------------------------------------------
    // Set the new EndDate
    // ------------------------------------------------------------------------
    function updateEndDate(uint256 newDate) public onlyOwnerOrOwnerAPI returns (bool success) {
        require(!isMintingFinished);
        require(!isOwnBlockchainLaunched);
        
        endDate = newDate;
        
        return true;
    }
    
    // ------------------------------------------------------------------------
    // Set the new Token name, Symbol, Contract address when updating
    // ------------------------------------------------------------------------
    function updateTokenNameSymbolAddress(string newTokenName, string newSymbol, address newContractAddress) public whenPaused onlyOwnerOrOwnerAPI returns (bool success) {
        name = newTokenName;
        symbol = newSymbol;
        currentRunningAddress = newContractAddress;
        
        return true;
    }
    
}

Contract ABI
[{"constant":false,"inputs":[],"name":"acceptOwnershipAPI","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"}],"name":"transferAnyERC20Token","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"destination","type":"address"},{"name":"amount","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"SetNewBlockchainEnabled","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"startDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"maxSellable","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minAmountETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"exchangeRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_totalSupply","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":"tradingDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwnerAPI","type":"address"}],"name":"transferAPIOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"bonusEnd10","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"currentlyPaused","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"destination","type":"address"}],"name":"transferVestingMonthlyAmount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finishMinting","outputs":[{"name":"finished","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"currentRunningAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"BurnMyTokensAndSetAmountForNewBlockchain","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"exOwner","type":"address"}],"name":"burnedBalanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"circulatingSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bonusEnd20","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newTokenName","type":"string"},{"name":"newSymbol","type":"string"},{"name":"newContractAddress","type":"address"}],"name":"updateTokenNameSymbolAddress","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isPaused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newEthEurRate","type":"uint256"}],"name":"updateExchangeRate","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"bonusEnd05","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"ethAmount","type":"uint256"}],"name":"getAmountToIssue","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"requester","type":"address"},{"name":"tokens","type":"uint256"},{"name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ownerAPI","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferAllERC20Token","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"},{"name":"requester","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"exOwner","type":"address"}],"name":"BurnTokensAndSetAmountForNewBlockchain","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"depositer","type":"address"}],"name":"depositsOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getExchangeRate","outputs":[{"name":"rate","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newDate","type":"uint256"}],"name":"updateEndDate","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"depositer","type":"address"},{"name":"isAllowed","type":"bool"}],"name":"setAddressKYC","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"depositer","type":"address"}],"name":"getAddressKYCState","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"soldSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwnerAPI","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxAmountETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"versionIndex","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"moment","type":"uint256"}],"name":"MintingFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"moment","type":"uint256"}],"name":"OwnBlockchainLaunched","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"exOwner","type":"address"},{"indexed":true,"name":"amount","type":"uint256"},{"indexed":true,"name":"moment","type":"uint256"}],"name":"TokensBurned","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"OwnershipAPITransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenOwner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Approval","type":"event"}]

Contract Creation Code
60806040526000600360146101000a81548160ff0219169083151502179055506040805190810160405280600481526020017f4b41415300000000000000000000000000000000000000000000000000000000815250600490805190602001906200006c92919062001165565b506040805190810160405280600e81526020017f4b414153592e414920546f6b656e00000000000000000000000000000000000081525060059080519060200190620000ba92919062001165565b506012600660006101000a81548160ff021916908360ff1602179055506161a8600e556005601260006101000a81548160ff021916908360ff1602179055506000601b60006101000a81548160ff0219169083151502179055506000601b60016101000a81548160ff0219169083151502179055506000601c556001601d60006101000a81548160ff021916908360ff1602179055503480156200015d57600080fd5b506000336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506b019d971e4fe8401e74000000600f819055506064603c600f54028115156200020657fe5b0460118190555030601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601081905550635b89d680600881905550635b9c4b80600981905550635baec080600a81905550635bc13580600b81905550635becb700600c81905550635c007d80600d81905550620002bc670de0b6b3a7640000600a6200110b640100000000026401000000009004565b601381905550620002e7670de0b6b3a764000061138862001131640100000000026401000000009004565b6014819055506103e86096600f54028115156200030057fe5b0490506064601260009054906101000a900460ff1660640360ff1682028115156200032757fe5b04601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36064601260009054906101000a900460ff1660ff1682028115156200043157fe5b04601660008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001601860008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601660008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a37320d9846ab6c348aff24e762150abfa15d99e4af5601d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e86032600f54028115156200065e57fe5b0460166000601d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160186000601d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60166000601d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3733cf15b214734bb3c9040f18033440a35d18746ca601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e86032600f54028115156200088f57fe5b0460166000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160186000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60166000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3733aceb78ff4b064aee870dcb844cca43fc6dcbe7d601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e8602d600f540281151562000ac057fe5b0460166000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160186000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60166000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a37365e1af8d76af6d1d3e47f14014f3105286ffbcf2602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e8601e600f540281151562000cf157fe5b0460166000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160186000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60166000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3733d7db960837af96c457bdb481c3de7ce80366b2c602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e8604b600f540281151562000f2257fe5b0460166000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160186000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60166000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a360646028600f5402811515620010fd57fe5b046007819055505062001214565b600080821115156200111c57600080fd5b81838115156200112857fe5b04905092915050565b6000818302905060008314806200115357508183828115156200115057fe5b04145b15156200115f57600080fd5b92915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620011a857805160ff1916838001178555620011d9565b82800160010185558215620011d9579182015b82811115620011d8578251825591602001919060010190620011bb565b5b509050620011e89190620011ec565b5090565b6200121191905b808211156200120d576000816000905550600101620011f3565b5090565b90565b613db280620012246000396000f300608060405260043610610288576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063039e9e001461067757806306fdde031461068e57806308b27e3e1461071e578063095ea7b3146107795780630b58dc38146107de5780630b97bc86146107f557806318160ddd1461082057806323b872dd1461084b578063313354dc146108d0578063313ce567146108fb578063350a64291461092c5780633ba0b9a9146109575780633eaaf86b146109825780633f4ba83a146109ad57806343f98a56146109c45780634978ddcc146109ef578063541ee05014610a325780635c975abb14610a5d578063705b5c2714610a8c57806370a0823114610ae757806379ba509714610b3e5780637d64bcb414610b555780638456cb5914610b845780638561d13614610b9b5780638d44c90b14610bf25780638da5cb5b14610c0957806391c1e2c114610c605780639358928b14610cb757806394c70cb114610ce257806395d89b4114610d0d578063a7b2fc0014610d9d578063a9059cbb14610e84578063b187bd2614610ee9578063b9e205ae14610f18578063ba16e00e14610f5d578063c24a0f8b14610f88578063c3f17ae814610fb3578063cae9ca5114610ff4578063cb09b0d01461109f578063d4ee1d90146110f6578063d5abeb011461114d578063d9c1ac2514611178578063dd62ed3e146111dd578063de49bd5414611254578063e3a9db1a14611297578063e6aa216c146112ee578063ef2bbbdf14611319578063f2fde38b1461135e578063f45ce8d7146113a1578063f74c67b314611408578063fa2299ee14611463578063fbaeac891461148e578063fe9b7f2f146114e5578063ff1d271214611510575b6000600360149054906101000a900460ff161515156102a657600080fd5b600c54421180156102ca575060001515601b60009054906101000a900460ff161515145b15610324576102d7611541565b503373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561031e573d6000803e3d6000fd5b50610674565b60085442101580156103385750600c544211155b8015610357575060001515601b60009054906101000a900460ff161515145b151561036257600080fd5b601354341015801561037657506014543411155b151561038157600080fd5b601454601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020543401111515156103d357600080fd5b60011515601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151561043257600080fd5b61043b34611650565b905060115461044c60105483611735565b1115151561045957600080fd5b61046560105482611735565b60108190555061047760075482611735565b6007819055506104c6601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611735565b601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610552601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205434611735565b601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064600f340281151561064657fe5b049081150290604051600060405180830381858888f19350505050158015610672573d6000803e3d6000fd5b505b50005b34801561068357600080fd5b5061068c611751565b005b34801561069a57600080fd5b506106a36118f2565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106e35780820151818401526020810190506106c8565b50505050905090810190601f1680156107105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561072a57600080fd5b5061075f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611994565b604051808215151515815260200191505060405180910390f35b34801561078557600080fd5b506107c4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c24565b604051808215151515815260200191505060405180910390f35b3480156107ea57600080fd5b506107f3611d16565b005b34801561080157600080fd5b5061080a611dfc565b6040518082815260200191505060405180910390f35b34801561082c57600080fd5b50610835611e02565b6040518082815260200191505060405180910390f35b34801561085757600080fd5b506108b6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e4d565b604051808215151515815260200191505060405180910390f35b3480156108dc57600080fd5b506108e5612198565b6040518082815260200191505060405180910390f35b34801561090757600080fd5b5061091061219e565b604051808260ff1660ff16815260200191505060405180910390f35b34801561093857600080fd5b506109416121b5565b6040518082815260200191505060405180910390f35b34801561096357600080fd5b5061096c6121bb565b6040518082815260200191505060405180910390f35b34801561098e57600080fd5b506109976121c1565b6040518082815260200191505060405180910390f35b3480156109b957600080fd5b506109c26121c7565b005b3480156109d057600080fd5b506109d9612286565b6040518082815260200191505060405180910390f35b3480156109fb57600080fd5b50610a30600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061228c565b005b348015610a3e57600080fd5b50610a4761232b565b6040518082815260200191505060405180910390f35b348015610a6957600080fd5b50610a72612331565b604051808215151515815260200191505060405180910390f35b348015610a9857600080fd5b50610acd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612348565b604051808215151515815260200191505060405180910390f35b348015610af357600080fd5b50610b28600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061252c565b6040518082815260200191505060405180910390f35b348015610b4a57600080fd5b50610b53612575565b005b348015610b6157600080fd5b50610b6a611541565b604051808215151515815260200191505060405180910390f35b348015610b9057600080fd5b50610b99612714565b005b348015610ba757600080fd5b50610bb06127d4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610bfe57600080fd5b50610c076127fa565b005b348015610c1557600080fd5b50610c1e6129d8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c6c57600080fd5b50610ca1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129fd565b6040518082815260200191505060405180910390f35b348015610cc357600080fd5b50610ccc612a46565b6040518082815260200191505060405180910390f35b348015610cee57600080fd5b50610cf7612ad2565b6040518082815260200191505060405180910390f35b348015610d1957600080fd5b50610d22612ad8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610d62578082015181840152602081019050610d47565b50505050905090810190601f168015610d8f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610da957600080fd5b50610e6a600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b7a565b604051808215151515815260200191505060405180910390f35b348015610e9057600080fd5b50610ecf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612cc4565b604051808215151515815260200191505060405180910390f35b348015610ef557600080fd5b50610efe612f60565b604051808215151515815260200191505060405180910390f35b348015610f2457600080fd5b50610f4360048036038101908080359060200190929190505050612f73565b604051808215151515815260200191505060405180910390f35b348015610f6957600080fd5b50610f72613038565b6040518082815260200191505060405180910390f35b348015610f9457600080fd5b50610f9d61303e565b6040518082815260200191505060405180910390f35b348015610fbf57600080fd5b50610fde60048036038101908080359060200190929190505050611650565b6040518082815260200191505060405180910390f35b34801561100057600080fd5b50611085600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050613044565b604051808215151515815260200191505060405180910390f35b3480156110ab57600080fd5b506110b46132af565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561110257600080fd5b5061110b6132d5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561115957600080fd5b506111626132fb565b6040518082815260200191505060405180910390f35b34801561118457600080fd5b506111c3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613301565b604051808215151515815260200191505060405180910390f35b3480156111e957600080fd5b5061123e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134bd565b6040518082815260200191505060405180910390f35b34801561126057600080fd5b50611295600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613544565b005b3480156112a357600080fd5b506112d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506137d6565b6040518082815260200191505060405180910390f35b3480156112fa57600080fd5b5061130361381f565b6040518082815260200191505060405180910390f35b34801561132557600080fd5b5061134460048036038101908080359060200190929190505050613829565b604051808215151515815260200191505060405180910390f35b34801561136a57600080fd5b5061139f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613926565b005b3480156113ad57600080fd5b506113ee600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506139c5565b604051808215151515815260200191505060405180910390f35b34801561141457600080fd5b50611449600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613adb565b604051808215151515815260200191505060405180910390f35b34801561146f57600080fd5b50611478613b31565b6040518082815260200191505060405180910390f35b34801561149a57600080fd5b506114a3613b37565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156114f157600080fd5b506114fa613b5d565b6040518082815260200191505060405180910390f35b34801561151c57600080fd5b50611525613b63565b604051808260ff1660ff16815260200191505060405180910390f35b6000600c5442118015611567575060001515601b60009054906101000a900460ff161515145b1561157d57611574613b76565b6001905061164d565b600f5460075410151561159b57611592613b76565b6001905061164d565b600c54421180156115c3575060003073ffffffffffffffffffffffffffffffffffffffff1631115b15611648576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015611646573d6000803e3d6000fd5b505b600090505b90565b600080600061165e84613c4a565b9150600a8281151561166c57fe5b049050600954421015611690576064600c830281151561168857fe5b0490506116d1565b600a544210156116b1576064600b83028115156116a957fe5b0490506116d0565b600b544210156116cf576103e8606983028115156116cb57fe5b0490505b5b5b624c4b40821015156116f457600a600d82028115156116ec57fe5b049050611714565b620f42408210151561171357600a600c820281151561170f57fe5b0490505b5b600660009054906101000a900460ff1660ff16600a0a810292505050919050565b6000818301905082811015151561174b57600080fd5b92915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117ad57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1fd2d1a8cc84fd3ec53680ba1d026371bce2e990ca952143223748a0ee5b170260405160405180910390a3600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060058054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561198a5780601f1061195f5761010080835404028352916020019161198a565b820191906000526020600020905b81548152906001019060200180831161196d57829003601f168201915b5050505050905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611a3e5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611a4957600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611b2257600080fd5b505af1158015611b36573d6000803e3d6000fd5b505050506040513d6020811015611b4c57600080fd5b81019080805190602001909291905050506040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611be257600080fd5b505af1158015611bf6573d6000803e3d6000fd5b505050506040513d6020811015611c0c57600080fd5b81019080805190602001909291905050509050919050565b600081601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d7157600080fd5b601b60009054906101000a900460ff168015611da0575060001515601b60019054906101000a900460ff161515145b1515611dab57600080fd5b6001601b60016101000a81548160ff02191690831515021790555042601c81905550427f35faa1e328b369ae53ce7c8a27cacbeeb13c4ebc77e84160b7e96afea7c5867960405160405180910390a2565b60085481565b6000601660008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460075403905090565b6000600360149054906101000a900460ff16151515611e6b57600080fd5b600c5442118015611e8f575060001515601b60009054906101000a900460ff161515145b15611e9e57611e9c611541565b505b600d5442101580611eff575060011515601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b1515611f0a57600080fd5b611f90601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613c70565b601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612059601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613c70565b601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120e5601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611735565b601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60115481565b6000600660009054906101000a900460ff16905090565b60135481565b600e5481565b60075481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561222257600080fd5b600360149054906101000a900460ff16151561223d57600080fd5b6000600360146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b600d5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156122e757600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a5481565b6000600360149054906101000a900460ff16905090565b6000806000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156123ac57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141515156123e857600080fd5b601e6018610e10600d5442038115156123fd57fe5b0481151561240757fe5b0481151561241157fe5b0494506064601260009054906101000a900460ff1660640360ff166064600f80540281151561243c57fe5b040281151561244757fe5b049350601884600187010281151561245b57fe5b049250601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548403915081830390506000811115156124b657600080fd5b6124c1308883611e4d565b506303c26700600d540142111561251e5761251c3088601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e4d565b505b600195505050505050919050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156125d157600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561276f57600080fd5b600360149054906101000a900460ff1615151561278b57600080fd5b6001600360146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601b60019054906101000a900460ff16151561281757600080fd5b601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506128a2601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611735565b601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042813373ffffffffffffffffffffffffffffffffffffffff167fccbea4088a3b7ae9ca2d15fab9a9742a4075b4d7247768a1eecea917565aba0060405160405180910390a4600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601660008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546007540303905090565b60095481565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612b705780601f10612b4557610100808354040283529160200191612b70565b820191906000526020600020905b815481529060010190602001808311612b5357829003601f168201915b5050505050905090565b6000600360149054906101000a900460ff161515612b9757600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612c3f5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612c4a57600080fd5b8360059080519060200190612c60929190613ce1565b508260049080519060200190612c77929190613ce1565b5081601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600190509392505050565b6000600360149054906101000a900460ff16151515612ce257600080fd5b600c5442118015612d06575060001515601b60009054906101000a900460ff161515145b15612d1557612d13611541565b505b600d5442101580612d76575060011515601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b80612dce5750602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612dd957600080fd5b612e22601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613c70565b601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612eae601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611735565b601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600360149054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061301d5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561302857600080fd5b81600e8190555060019050919050565b600b5481565b600c5481565b6000600360149054906101000a900460ff1615151561306257600080fd5b82601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561323d578082015181840152602081019050613222565b50505050905090810190601f16801561326a5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561328c57600080fd5b505af11580156132a0573d6000803e3d6000fd5b50505050600190509392505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806133ab5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156133b657600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561347a57600080fd5b505af115801561348e573d6000803e3d6000fd5b505050506040513d60208110156134a457600080fd5b8101908080519060200190929190505050905092915050565b6000601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806135ee5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156135f957600080fd5b601b60019054906101000a900460ff16151561361457600080fd5b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061369f601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611735565b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042818373ffffffffffffffffffffffffffffffffffffffff167fccbea4088a3b7ae9ca2d15fab9a9742a4075b4d7247768a1eecea917565aba0060405160405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600e54905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806138d35750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156138de57600080fd5b601b60009054906101000a900460ff161515156138fa57600080fd5b601b60019054906101000a900460ff1615151561391657600080fd5b81600c8190555060019050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561398157600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480613a6f5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515613a7a57600080fd5b81601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001905092915050565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60105481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b601d60009054906101000a900460ff1681565b610e104201600d819055506001601b60006101000a81548160ff021916908315150217905550427ff6af8e1d23f8a5997a11116c1e59bd11c947226b74890b8e0fde60d95a7c076a60405160405180910390a26000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015613c47573d6000803e3d6000fd5b50565b6000613c69613c5b83600e54613c8c565b670de0b6b3a7640000613cbd565b9050919050565b6000828211151515613c8157600080fd5b818303905092915050565b600081830290506000831480613cac5750818382811515613ca957fe5b04145b1515613cb757600080fd5b92915050565b60008082111515613ccd57600080fd5b8183811515613cd857fe5b04905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613d2257805160ff1916838001178555613d50565b82800160010185558215613d50579182015b82811115613d4f578251825591602001919060010190613d34565b5b509050613d5d9190613d61565b5090565b613d8391905b80821115613d7f576000816000905550600101613d67565b5090565b905600a165627a7a7230582016637a766d63481a097fb2d90fa501f0c10d58f47f3a9af58d2e508773a1b6be0029


   Swarm Source:
bzzr://16637a766d63481a097fb2d90fa501f0c10d58f47f3a9af58d2e508773a1b6be
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.