ETH Price: $2,536.10 (-5.30%)
Gas: 2 Gwei

Contract

0xE403fD53eb2Ab7735dF442191f9A03DffA459e6F
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdrawal62348572018-08-29 13:22:322174 days ago1535548952IN
0xE403fD53...ffA459e6F
0 ETH0.000097142.6
Pay62303102018-08-28 18:39:142175 days ago1535481554IN
0xE403fD53...ffA459e6F
0 ETH0.000633513
Withdrawal61403332018-08-13 13:58:392190 days ago1534168719IN
0xE403fD53...ffA459e6F
0 ETH0.000112093
Pay60830592018-08-03 21:57:222200 days ago1533333442IN
0xE403fD53...ffA459e6F
0 ETH0.015200052
Withdrawal60633582018-07-31 13:30:062203 days ago1533043806IN
0xE403fD53...ffA459e6F
0 ETH0.00004111.1
Pay60410602018-07-27 19:57:142207 days ago1532721434IN
0xE403fD53...ffA459e6F
0 ETH0.0084
Pay60409592018-07-27 19:34:102207 days ago1532720050IN
0xE403fD53...ffA459e6F
0 ETH0.03040014
Pay60352742018-07-26 20:26:572208 days ago1532636817IN
0xE403fD53...ffA459e6F
0 ETH0.006071574
Pay60352612018-07-26 20:22:472208 days ago1532636567IN
0xE403fD53...ffA459e6F
0 ETH0.002071574
Pay60351022018-07-26 19:41:382208 days ago1532634098IN
0xE403fD53...ffA459e6F
0 ETH0.000635782
Pay60349542018-07-26 19:03:242208 days ago1532631804IN
0xE403fD53...ffA459e6F
0 ETH0.000811574
Pay60345512018-07-26 17:17:352208 days ago1532625455IN
0xE403fD53...ffA459e6F
0 ETH0.000514483
Pay60344412018-07-26 16:50:152208 days ago1532623815IN
0xE403fD53...ffA459e6F
0 ETH0.000514683
Pay60344322018-07-26 16:47:212208 days ago1532623641IN
0xE403fD53...ffA459e6F
0 ETH0.010293660
Pay60343542018-07-26 16:30:372208 days ago1532622637IN
0xE403fD53...ffA459e6F
0 ETH0.0135713790
Pay60343342018-07-26 16:25:542208 days ago1532622354IN
0xE403fD53...ffA459e6F
0 ETH0.0045990
Pay60294792018-07-25 20:34:542209 days ago1532550894IN
0xE403fD53...ffA459e6F
0 ETH0.000343122
Pay60285552018-07-25 16:54:242209 days ago1532537664IN
0xE403fD53...ffA459e6F
0 ETH0.000720554.2
Pay60279732018-07-25 14:32:262209 days ago1532529146IN
0xE403fD53...ffA459e6F
0 ETH0.000391862
Lend54809002018-04-21 16:14:212304 days ago1524327261IN
0xE403fD53...ffA459e6F
0 ETH0.000440862
Lend54554522018-04-17 6:51:262309 days ago1523947886IN
0xE403fD53...ffA459e6F
0 ETH0.000192890.9
Approve54292212018-04-12 20:25:152313 days ago1523564715IN
0xE403fD53...ffA459e6F
0 ETH0.000134723
Create Loan54292192018-04-12 20:25:042313 days ago1523564704IN
0xE403fD53...ffA459e6F
0 ETH0.00014860.5
Approve54046372018-04-08 18:04:332317 days ago1523210673IN
0xE403fD53...ffA459e6F
0 ETH0.000089812
Create Loan54046362018-04-08 18:04:172317 days ago1523210657IN
0xE403fD53...ffA459e6F
0 ETH0.000297211
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
NanoLoanEngine

Compiler Version
v0.4.15+commit.bbb8e64f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2017-11-15
*/

pragma solidity ^0.4.15;

contract Oracle {
    event NewSymbol(string _symbol, uint8 _decimals);
    function getTimestamp(string symbol) constant returns(uint256);
    function getRateFor(string symbol) returns (uint256);
    function getCost(string symbol) constant returns (uint256);
    function getDecimals(string symbol) constant returns (uint256);
}

contract Token {
    function transfer(address _to, uint _value) returns (bool success);
    function transferFrom(address _from, address _to, uint256 _value) returns (bool success);
    function allowance(address _owner, address _spender) constant returns (uint256 remaining);
    function approve(address _spender, uint256 _value) returns (bool success);
    function increaseApproval (address _spender, uint _addedValue) public returns (bool success);
    function balanceOf(address _owner) constant returns (uint256 balance);
}

contract RpSafeMath {
    function safeAdd(uint256 x, uint256 y) internal returns(uint256) {
      uint256 z = x + y;
      assert((z >= x) && (z >= y));
      return z;
    }

    function safeSubtract(uint256 x, uint256 y) internal returns(uint256) {
      assert(x >= y);
      uint256 z = x - y;
      return z;
    }

    function safeMult(uint256 x, uint256 y) internal returns(uint256) {
      uint256 z = x * y;
      assert((x == 0)||(z/x == y));
      return z;
    }

    function min(uint256 a, uint256 b) internal returns(uint256) {
        if (a < b) { 
          return a;
        } else { 
          return b; 
        }
    }
    
    function max(uint256 a, uint256 b) internal returns(uint256) {
        if (a > b) { 
          return a;
        } else { 
          return b; 
        }
    }
}


contract NanoLoanEngine is RpSafeMath {
    uint256 public constant VERSION = 15;
    
    Token public token;

    enum Status { initial, lent, paid, destroyed }

    address public owner;
    bool public deprecated;
    uint256 public totalLenderBalance;

    event CreatedLoan(uint _index, address _borrower, address _creator);
    event ApprovedBy(uint _index, address _address);
    event Lent(uint _index, address _lender);
    event CreatedDebt(uint _index, address _lend);
    event DestroyedBy(uint _index, address _address);
    event PartialPayment(uint _index, address _sender, address _from, uint256 _amount);
    event Transfer(uint _index, address _from, address _to);
    event TotalPayment(uint _index);

    function NanoLoanEngine(Token _token) {
        owner = msg.sender;
        token = _token;
    }

    struct Loan {
        Oracle oracle;

        Status status;

        address borrower;
        address cosigner;
        address lender;
        address creator;
        
        uint256 amount;
        uint256 interest;
        uint256 punitoryInterest;
        uint256 interestTimestamp;
        uint256 paid;
        uint256 cosignerFee;
        uint256 interestRate;
        uint256 interestRatePunitory;
        uint256 dueTime;
        uint256 duesIn;

        string currency;
        uint256 cancelableAt;
        uint256 lenderBalance;

        address approvedTransfer;
        uint256 expirationRequest;

        mapping(address => bool) approbations;
    }

    Loan[] private loans;

    // _oracleContract: Address of the Oracle contract, must implement OracleInterface. 0x0 for no oracle
    // _cosigner: Responsable of the payment of the loan if the lender does not pay. 0x0 for no cosigner
    // _cosignerFee: absolute amount in currency
    // _interestRate: 100 000 / interest; ej 100 000 = 100 %; 10 000 000 = 1% (by second)
    function createLoan(Oracle _oracleContract, address _borrower, address _cosigner,
        uint256 _cosignerFee, string _currency, uint256 _amount, uint256 _interestRate,
        uint256 _interestRatePunitory, uint256 _duesIn, uint256 _cancelableAt, uint256 _expirationRequest) returns (uint256) {

        require(!deprecated);
        require(_cancelableAt <= _duesIn);
        require(_oracleContract != address(0) || bytes(_currency).length == 0);
        require(_cosigner != address(0) || _cosignerFee == 0);
        require(_borrower != address(0));
        require(_amount != 0);
        require(_interestRatePunitory != 0);
        require(_interestRate != 0);
        require(_expirationRequest > block.timestamp);

        var loan = Loan(_oracleContract, Status.initial, _borrower, _cosigner, 0x0, msg.sender, _amount,
            0, 0, 0, 0, _cosignerFee, _interestRate, _interestRatePunitory, 0, _duesIn, _currency, _cancelableAt, 0, 0x0, _expirationRequest);
        uint index = loans.push(loan) - 1;
        CreatedLoan(index, _borrower, msg.sender);
        return index;
    }
    
    function getLoanConfig(uint index) constant returns (address oracle, address borrower, address lender, address creator, uint amount, 
        uint cosignerFee, uint interestRate, uint interestRatePunitory, uint duesIn, uint cancelableAt, uint decimals, bytes32 currencyHash, uint256 expirationRequest) {
        Loan storage loan = loans[index];
        oracle = loan.oracle;
        borrower = loan.borrower;
        lender = loan.lender;
        creator = loan.creator;
        amount = loan.amount;
        cosignerFee = loan.cosignerFee;
        interestRate = loan.interestRate;
        interestRatePunitory = loan.interestRatePunitory;
        duesIn = loan.duesIn;
        cancelableAt = loan.cancelableAt;
        decimals = loan.oracle.getDecimals(loan.currency);
        currencyHash = keccak256(loan.currency); 
        expirationRequest = loan.expirationRequest;
    }

    function getLoanState(uint index) constant returns (uint interest, uint punitoryInterest, uint interestTimestamp,
        uint paid, uint dueTime, Status status, uint lenderBalance, address approvedTransfer, bool approved) {
        Loan storage loan = loans[index];
        interest = loan.interest;
        punitoryInterest = loan.punitoryInterest;
        interestTimestamp = loan.interestTimestamp;
        paid = loan.paid;
        dueTime = loan.dueTime;
        status = loan.status;
        lenderBalance = loan.lenderBalance;
        approvedTransfer = loan.approvedTransfer;
        approved = isApproved(index);
    }
    
    function getTotalLoans() constant returns (uint256) { return loans.length; }
    function getOracle(uint index) constant returns (Oracle) { return loans[index].oracle; }
    function getBorrower(uint index) constant returns (address) { return loans[index].borrower; }
    function getCosigner(uint index) constant returns (address) { return loans[index].cosigner; }
    function getLender(uint index) constant returns (address) { return loans[index].lender; }
    function getCreator(uint index) constant returns (address) { return loans[index].creator; }
    function getAmount(uint index) constant returns (uint256) { return loans[index].amount; }
    function getInterest(uint index) constant returns (uint256) { return loans[index].interest; }
    function getPunitoryInterest(uint index) constant returns (uint256) { return loans[index].punitoryInterest; }
    function getInterestTimestamp(uint index) constant returns (uint256) { return loans[index].interestTimestamp; }
    function getPaid(uint index) constant returns (uint256) { return loans[index].paid; }
    function getCosignerFee(uint index) constant returns (uint256) { return loans[index].cosignerFee; }
    function getInterestRate(uint index) constant returns (uint256) { return loans[index].interestRate; }
    function getInterestRatePunitory(uint index) constant returns (uint256) { return loans[index].interestRatePunitory; }
    function getDueTime(uint index) constant returns (uint256) { return loans[index].dueTime; }
    function getDuesIn(uint index) constant returns (uint256) { return loans[index].duesIn; }
    function getCurrency(uint index) constant returns (string) { return loans[index].currency; }
    function getCancelableAt(uint index) constant returns (uint256) { return loans[index].cancelableAt; }
    function getApprobation(uint index, address _address) constant returns (bool) { return loans[index].approbations[_address]; }
    function getStatus(uint index) constant returns (Status) { return loans[index].status; }
    function getLenderBalance(uint index) constant returns (uint256) { return loans[index].lenderBalance; }
    function getCurrencyLength(uint index) constant returns (uint256) { return bytes(loans[index].currency).length; }
    function getCurrencyByte(uint index, uint cindex) constant returns (bytes1) { return bytes(loans[index].currency)[cindex]; }
    function getApprovedTransfer(uint index) constant returns (address) {return loans[index].approvedTransfer; }
    function getCurrencyHash(uint index) constant returns (bytes32) { return keccak256(loans[index].currency); }
    function getCurrencyDecimals(uint index) constant returns (uint256) { return loans[index].oracle.getDecimals(loans[index].currency); }
    function getExpirationRequest(uint index) constant returns (uint256) { return loans[index].expirationRequest; }

    function isApproved(uint index) constant returns (bool) {
        Loan storage loan = loans[index];
        return loan.approbations[loan.borrower] && (loan.approbations[loan.cosigner] || loan.cosigner == address(0));
    }

    function approve(uint index) public returns(bool) {
        Loan storage loan = loans[index];
        require(loan.status == Status.initial);
        loan.approbations[msg.sender] = true;
        ApprovedBy(index, msg.sender);
        return true;
    }

    function lend(uint index) public returns (bool) {
        Loan storage loan = loans[index];
        require(loan.status == Status.initial);
        require(isApproved(index));
        require(block.timestamp <= loan.expirationRequest);

        loan.lender = msg.sender;
        loan.dueTime = safeAdd(block.timestamp, loan.duesIn);
        loan.interestTimestamp = block.timestamp;
        loan.status = Status.lent;

        if (loan.cancelableAt > 0)
            internalAddInterest(index, safeAdd(block.timestamp, loan.cancelableAt));

        uint256 rate = getOracleRate(index);
        require(token.transferFrom(msg.sender, loan.borrower, safeMult(loan.amount, rate)));

        if (loan.cosigner != address(0))
            require(token.transferFrom(msg.sender, loan.cosigner, safeMult(loan.cosignerFee, rate)));
        
        Lent(index, loan.lender);
        return true;
    }

    function destroy(uint index) public returns (bool) {
        Loan storage loan = loans[index];
        require(loan.status != Status.destroyed);
        require(msg.sender == loan.lender || ((msg.sender == loan.borrower || msg.sender == loan.cosigner) && loan.status == Status.initial));
        DestroyedBy(index, msg.sender);
        loan.status = Status.destroyed;
        return true;
    }

    function transfer(uint index, address to) public returns (bool) {
        Loan storage loan = loans[index];
        require(loan.status != Status.destroyed);
        require(msg.sender == loan.lender || msg.sender == loan.approvedTransfer);
        require(to != address(0));
        Transfer(index, loan.lender, to);
        loan.lender = to;
        loan.approvedTransfer = address(0);
        return true;
    }

    function approveTransfer(uint index, address to) public returns (bool) {
        Loan storage loan = loans[index];
        require(msg.sender == loan.lender);
        loan.approvedTransfer = to;
        return true;
    }

    function getPendingAmount(uint index) public constant returns (uint256) {
        Loan storage loan = loans[index];
        return safeSubtract(safeAdd(safeAdd(loan.amount, loan.interest), loan.punitoryInterest), loan.paid);
    }

    function calculateInterest(uint256 timeDelta, uint256 interestRate, uint256 amount) public constant returns (uint256 realDelta, uint256 interest) {
        interest = safeMult(safeMult(100000, amount), timeDelta) / interestRate;
        realDelta = safeMult(interest, interestRate) / (amount * 100000);
    }

    function internalAddInterest(uint index, uint256 timestamp) internal {
        Loan storage loan = loans[index];
        if (timestamp > loan.interestTimestamp) {
            uint256 newInterest = loan.interest;
            uint256 newPunitoryInterest = loan.punitoryInterest;

            uint256 newTimestamp;
            uint256 realDelta;
            uint256 calculatedInterest;

            uint256 deltaTime;
            uint256 pending;

            uint256 endNonPunitory = min(timestamp, loan.dueTime);
            if (endNonPunitory > loan.interestTimestamp) {
                deltaTime = safeSubtract(endNonPunitory, loan.interestTimestamp);
                pending = safeSubtract(loan.amount, loan.paid);
                (realDelta, calculatedInterest) = calculateInterest(deltaTime, loan.interestRate, pending);
                newInterest = safeAdd(calculatedInterest, newInterest);
                newTimestamp = loan.interestTimestamp + realDelta;
            }

            if (timestamp > loan.dueTime) {
                uint256 startPunitory = max(loan.dueTime, loan.interestTimestamp);
                deltaTime = safeSubtract(timestamp, startPunitory);
                pending = safeSubtract(safeAdd(loan.amount, newInterest), loan.paid);
                (realDelta, calculatedInterest) = calculateInterest(deltaTime, loan.interestRatePunitory, pending);
                newPunitoryInterest = safeAdd(newPunitoryInterest, calculatedInterest);
                newTimestamp = startPunitory + realDelta;
            }
            
            if (newInterest != loan.interest || newPunitoryInterest != loan.punitoryInterest) {
                loan.interestTimestamp = newTimestamp;
                loan.interest = newInterest;
                loan.punitoryInterest = newPunitoryInterest;
            }
        }
    }

    function addInterestUpTo(uint index, uint256 timestamp) internal {
        Loan storage loan = loans[index];
        require(loan.status == Status.lent);
        if (timestamp <= block.timestamp) {
            internalAddInterest(index, timestamp);
        }
    }

    function addInterest(uint index) public {
        addInterestUpTo(index, block.timestamp);
    }
    
    function pay(uint index, uint256 _amount, address _from) public returns (bool) {
        Loan storage loan = loans[index];
        require(loan.status == Status.lent);
        addInterest(index);
        uint256 toPay = min(getPendingAmount(index), _amount);

        loan.paid = safeAdd(loan.paid, toPay);
        if (getPendingAmount(index) == 0) {
            TotalPayment(index);
            loan.status = Status.paid;
        }

        uint256 transferValue = safeMult(toPay, getOracleRate(index));
        require(token.transferFrom(msg.sender, this, transferValue));
        loan.lenderBalance = safeAdd(transferValue, loan.lenderBalance);
        totalLenderBalance = safeAdd(transferValue, totalLenderBalance);
        PartialPayment(index, msg.sender, _from, toPay);

        return true;
    }

    function withdrawal(uint index, address to, uint256 amount) public returns (bool) {
        Loan storage loan = loans[index];
        require(to != address(0));
        if (msg.sender == loan.lender && loan.lenderBalance >= amount) {
            loan.lenderBalance = safeSubtract(loan.lenderBalance, amount);
            totalLenderBalance = safeSubtract(totalLenderBalance, amount);
            require(token.transfer(to, amount));
            return true;
        }
    }

    function changeOwner(address to) public {
        require(msg.sender == owner);
        require(to != address(0));
        owner = to;
    }

    function setDeprecated(bool _deprecated) public {
        require(msg.sender == owner);
        deprecated = _deprecated;
    }

    function getOracleRate(uint index) internal returns (uint256) {
        Loan storage loan = loans[index];
        if (loan.oracle == address(0)) 
            return 1;

        uint256 costOracle = loan.oracle.getCost(loan.currency);
        require(token.transferFrom(msg.sender, this, costOracle));
        require(token.approve(loan.oracle, costOracle));
        uint256 rate = loan.oracle.getRateFor(loan.currency);
        require(rate != 0);
        return rate;
    }

    function emergencyWithdrawal(Token _token, address to, uint256 amount) returns (bool) {
        require(msg.sender == owner);
        require(_token != token || safeSubtract(token.balanceOf(this), totalLenderBalance) >= amount);
        require(to != address(0));
        return _token.transfer(to, amount);
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getLoanConfig","outputs":[{"name":"oracle","type":"address"},{"name":"borrower","type":"address"},{"name":"lender","type":"address"},{"name":"creator","type":"address"},{"name":"amount","type":"uint256"},{"name":"cosignerFee","type":"uint256"},{"name":"interestRate","type":"uint256"},{"name":"interestRatePunitory","type":"uint256"},{"name":"duesIn","type":"uint256"},{"name":"cancelableAt","type":"uint256"},{"name":"decimals","type":"uint256"},{"name":"currencyHash","type":"bytes32"},{"name":"expirationRequest","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getApprovedTransfer","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"timeDelta","type":"uint256"},{"name":"interestRate","type":"uint256"},{"name":"amount","type":"uint256"}],"name":"calculateInterest","outputs":[{"name":"realDelta","type":"uint256"},{"name":"interest","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"index","type":"uint256"},{"name":"_amount","type":"uint256"},{"name":"_from","type":"address"}],"name":"pay","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getInterestRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"deprecated","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getOracle","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getInterestTimestamp","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getPaid","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"index","type":"uint256"}],"name":"addInterest","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getCurrencyDecimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getDuesIn","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getInterestRatePunitory","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getLenderBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getLoanState","outputs":[{"name":"interest","type":"uint256"},{"name":"punitoryInterest","type":"uint256"},{"name":"interestTimestamp","type":"uint256"},{"name":"paid","type":"uint256"},{"name":"dueTime","type":"uint256"},{"name":"status","type":"uint8"},{"name":"lenderBalance","type":"uint256"},{"name":"approvedTransfer","type":"address"},{"name":"approved","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getDueTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getStatus","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"},{"name":"cindex","type":"uint256"}],"name":"getCurrencyByte","outputs":[{"name":"","type":"bytes1"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getInterest","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"isApproved","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getTotalLoans","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getBorrower","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"to","type":"address"},{"name":"amount","type":"uint256"}],"name":"emergencyWithdrawal","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getPendingAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getPunitoryInterest","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getCosigner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"index","type":"uint256"}],"name":"destroy","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"index","type":"uint256"},{"name":"to","type":"address"}],"name":"approveTransfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"},{"name":"_address","type":"address"}],"name":"getApprobation","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"index","type":"uint256"}],"name":"lend","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getCosignerFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"index","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"index","type":"uint256"},{"name":"to","type":"address"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getCancelableAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getCurrency","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getCreator","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_deprecated","type":"bool"}],"name":"setDeprecated","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getCurrencyHash","outputs":[{"name":"","type":"bytes32"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalLenderBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getExpirationRequest","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"index","type":"uint256"},{"name":"to","type":"address"},{"name":"amount","type":"uint256"}],"name":"withdrawal","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getLender","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getCurrencyLength","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_oracleContract","type":"address"},{"name":"_borrower","type":"address"},{"name":"_cosigner","type":"address"},{"name":"_cosignerFee","type":"uint256"},{"name":"_currency","type":"string"},{"name":"_amount","type":"uint256"},{"name":"_interestRate","type":"uint256"},{"name":"_interestRatePunitory","type":"uint256"},{"name":"_duesIn","type":"uint256"},{"name":"_cancelableAt","type":"uint256"},{"name":"_expirationRequest","type":"uint256"}],"name":"createLoan","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"VERSION","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[{"name":"_token","type":"address"}],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_index","type":"uint256"},{"indexed":false,"name":"_borrower","type":"address"},{"indexed":false,"name":"_creator","type":"address"}],"name":"CreatedLoan","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_index","type":"uint256"},{"indexed":false,"name":"_address","type":"address"}],"name":"ApprovedBy","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_index","type":"uint256"},{"indexed":false,"name":"_lender","type":"address"}],"name":"Lent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_index","type":"uint256"},{"indexed":false,"name":"_lend","type":"address"}],"name":"CreatedDebt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_index","type":"uint256"},{"indexed":false,"name":"_address","type":"address"}],"name":"DestroyedBy","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_index","type":"uint256"},{"indexed":false,"name":"_sender","type":"address"},{"indexed":false,"name":"_from","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"PartialPayment","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_index","type":"uint256"},{"indexed":false,"name":"_from","type":"address"},{"indexed":false,"name":"_to","type":"address"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_index","type":"uint256"}],"name":"TotalPayment","type":"event"}]

6060604052341561000f57600080fd5b604051602080613131833981016040528080519150505b60018054600160a060020a03338116600160a060020a03199283161790925560008054928416929091169190911790555b505b6130c9806100686000396000f300606060405236156102345763ffffffff60e060020a600035041662442a0781146102395780630557b2b0146102c657806305e1bd8c146102f85780630ad6ac851461032c5780630c196a74146103655780630e136b191461038d57806310a9de60146103b45780632924e254146103e65780632a92362c1461040e5780633290f5151461043657806335a3e83c1461044e5780634a8e4d78146104765780634d5e9a2a1461049e57806355121498146104c6578063567e75c4146104ee57806359357045146105765780635c622a0e1461059e5780635f5fa782146105d85780635fe2d689146106265780637910867b1461064e578063833be5d5146106785780638500d9191461069d5780638d8e5da7146106cf5780638da5cb5b1461070b57806391cb98af1461073a5780639380614414610762578063964f61f91461078a5780639980ec86146107bc5780639d118770146107e4578063a40868541461080e578063a578ae3214610844578063a6aa57ce1461087a578063a6f9dae1146108a4578063a78cb567146108c5578063b759f954146108ed578063b7760c8f14610917578063bed33cae1461094d578063cdf9b77e14610975578063d48e638a14610a03578063d848dee714610a35578063dac3ab8814610a4f578063e47dace514610a77578063e6c8fcf114610a9c578063f24ff92c14610ac4578063fa2c7f9b14610afd578063fc0c546a14610b2f578063fe7eba0614610b5e578063fe925e8014610b86578063ffa1ad7414610c26575b600080fd5b341561024457600080fd5b61024f600435610c4b565b604051600160a060020a039d8e1681529b8d1660208d0152998c166040808d019190915298909b1660608b015260808a019690965260a089019490945260c088019290925260e08701526101008601526101208501526101408401526101608301939093526101808201526101a001905180910390f35b34156102d157600080fd5b6102dc600435610e9b565b604051600160a060020a03909116815260200160405180910390f35b341561030357600080fd5b610314600435602435604435610ed3565b60405191825260208201526040908101905180910390f35b341561033757600080fd5b610351600435602435600160a060020a0360443516610f1e565b604051901515815260200160405180910390f35b341561037057600080fd5b61037b600435611143565b60405190815260200160405180910390f35b341561039857600080fd5b610351611172565b604051901515815260200160405180910390f35b34156103bf57600080fd5b6102dc600435611182565b604051600160a060020a03909116815260200160405180910390f35b34156103f157600080fd5b61037b6004356111b7565b60405190815260200160405180910390f35b341561041957600080fd5b61037b6004356111e6565b60405190815260200160405180910390f35b341561044157600080fd5b61044c600435611215565b005b341561045957600080fd5b61037b600435611223565b60405190815260200160405180910390f35b341561048157600080fd5b61037b600435611357565b60405190815260200160405180910390f35b34156104a957600080fd5b61037b600435611386565b60405190815260200160405180910390f35b34156104d157600080fd5b61037b6004356113b5565b60405190815260200160405180910390f35b34156104f957600080fd5b6105046004356113e4565b604051808a815260200189815260200188815260200187815260200186815260200185600381111561053257fe5b60ff16815260200184815260200183600160a060020a0316600160a060020a0316815260200182151515158152602001995050505050505050505060405180910390f35b341561058157600080fd5b61037b600435611488565b60405190815260200160405180910390f35b34156105a957600080fd5b6105b46004356114b7565b604051808260038111156105c457fe5b60ff16815260200191505060405180910390f35b34156105e357600080fd5b6105f16004356024356114ed565b6040517fff00000000000000000000000000000000000000000000000000000000000000909116815260200160405180910390f35b341561063157600080fd5b61037b60043561157f565b60405190815260200160405180910390f35b341561065957600080fd5b6103516004356115ae565b604051901515815260200160405180910390f35b341561068357600080fd5b61037b611640565b60405190815260200160405180910390f35b34156106a857600080fd5b6102dc600435611647565b604051600160a060020a03909116815260200160405180910390f35b34156106da57600080fd5b610351600160a060020a036004358116906024351660443561167f565b604051901515815260200160405180910390f35b341561071657600080fd5b6102dc6117dd565b604051600160a060020a03909116815260200160405180910390f35b341561074557600080fd5b61037b6004356117ec565b60405190815260200160405180910390f35b341561076d57600080fd5b61037b600435611847565b60405190815260200160405180910390f35b341561079557600080fd5b6102dc600435611876565b604051600160a060020a03909116815260200160405180910390f35b34156107c757600080fd5b61037b6004356118ae565b60405190815260200160405180910390f35b34156107ef57600080fd5b6103516004356118dd565b604051901515815260200160405180910390f35b341561081957600080fd5b610351600435600160a060020a0360243516611a19565b604051901515815260200160405180910390f35b341561084f57600080fd5b610351600435600160a060020a0360243516611a86565b604051901515815260200160405180910390f35b341561088557600080fd5b610351600435611ad2565b604051901515815260200160405180910390f35b34156108af57600080fd5b61044c600160a060020a0360043516611da0565b005b34156108d057600080fd5b61037b600435611def565b60405190815260200160405180910390f35b34156108f857600080fd5b610351600435611e1e565b604051901515815260200160405180910390f35b341561092257600080fd5b610351600435600160a060020a0360243516611ede565b604051901515815260200160405180910390f35b341561095857600080fd5b61037b60043561200e565b60405190815260200160405180910390f35b341561098057600080fd5b61098b60043561203d565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156109c85780820151818401525b6020016109af565b50505050905090810190601f1680156109f55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610a0e57600080fd5b6102dc600435612109565b604051600160a060020a03909116815260200160405180910390f35b3415610a4057600080fd5b61044c6004351515612141565b005b3415610a5a57600080fd5b61037b600435612188565b60405190815260200160405180910390f35b3415610a8257600080fd5b61037b61221e565b60405190815260200160405180910390f35b3415610aa757600080fd5b61037b600435612224565b60405190815260200160405180910390f35b3415610acf57600080fd5b610351600435600160a060020a0360243516604435612253565b604051901515815260200160405180910390f35b3415610b0857600080fd5b6102dc600435612370565b604051600160a060020a03909116815260200160405180910390f35b3415610b3a57600080fd5b6102dc6123a8565b604051600160a060020a03909116815260200160405180910390f35b3415610b6957600080fd5b61037b6004356123b7565b60405190815260200160405180910390f35b3415610b9157600080fd5b61037b60048035600160a060020a03908116916024803583169260443516916064359160a49060843590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650508435946020810135945060408101359350606081013592506080810135915060a001356123f9565b60405190815260200160405180910390f35b3415610c3157600080fd5b61037b6127d0565b60405190815260200160405180910390f35b60008060008060008060008060008060008060008060038f815481101515610c6f57fe5b906000526020600020906015020160005b5090508060000160009054906101000a9004600160a060020a03169d508060010160009054906101000a9004600160a060020a03169c508060030160009054906101000a9004600160a060020a03169b508060040160009054906101000a9004600160a060020a03169a508060050154995080600a0154985080600b0154975080600c0154965080600e01549550806010015494508060000160009054906101000a9004600160a060020a0316600160a060020a031663afd0fd1d82600f0160006040516020015260405160e060020a63ffffffff8416028152602060048201908152825460026000196101006001841615020190911604602483018190529091829160449091019084908015610dd85780601f10610dad57610100808354040283529160200191610dd8565b820191906000526020600020905b815481529060010190602001808311610dbb57829003601f168201915b505092505050602060405180830381600087803b1515610df757600080fd5b6102c65a03f11515610e0857600080fd5b5050506040518051945050600f81016040518082805460018160011615610100020316600290048015610e725780601f10610e50576101008083540402835291820191610e72565b820191906000526020600020905b815481529060010190602001808311610e5e575b505091505060405180910390209250806013015491505b5091939597999b9d90929496989a9c50565b6000600382815481101515610eac57fe5b906000526020600020906015020160005b5060120154600160a060020a031690505b919050565b60008083610eed610ee7620186a0866127d5565b876127d5565b811515610ef657fe5b04905082620186a002610f0982866127d5565b811515610f1257fe5b0491505b935093915050565b600080600080600387815481101515610f3357fe5b906000526020600020906015020160005b50925060015b835460a060020a900460ff166003811115610f6157fe5b14610f6b57600080fd5b610f7487611215565b610f86610f80886117ec565b87612804565b9150610f96836009015483612823565b6009840155610fa4876117ec565b1515611009577f45bbf9b5373297284296c5c84c733f3e536eb719e3fe3ee1771900622621cfb78760405190815260200160405180910390a18254600290849074ff0000000000000000000000000000000000000000191660a060020a835b02179055505b61101b826110168961284b565b6127d5565b60008054919250600160a060020a03909116906323b872dd903390309085906040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561109057600080fd5b6102c65a03f115156110a157600080fd5b5050506040518051905015156110b657600080fd5b6110c4818460110154612823565b60118401556002546110d7908290612823565b6002557f208972b4933bf2f7f9bb4c3c61cd484970eb0babe7539d22a18ab1d80fa7bec687338785604051938452600160a060020a039283166020850152911660408084019190915260608301919091526080909101905180910390a1600193505b5050509392505050565b600060038281548110151561115457fe5b906000526020600020906015020160005b50600b015490505b919050565b60015460a060020a900460ff1681565b600060038281548110151561119357fe5b906000526020600020906015020160005b5054600160a060020a031690505b919050565b60006003828154811015156111c857fe5b906000526020600020906015020160005b506008015490505b919050565b60006003828154811015156111f757fe5b906000526020600020906015020160005b506009015490505b919050565b61121f8142612b9e565b5b50565b600060038281548110151561123457fe5b906000526020600020906015020160005b505460038054600160a060020a039092169163afd0fd1d91908590811061126857fe5b906000526020600020906015020160005b50600f0160006040516020015260405160e060020a63ffffffff84160281526020600482019081528254600260001961010060018416150201909116046024830181905290918291604490910190849080156113165780601f106112eb57610100808354040283529160200191611316565b820191906000526020600020905b8154815290600101906020018083116112f957829003601f168201915b505092505050602060405180830381600087803b151561133557600080fd5b6102c65a03f1151561134657600080fd5b50505060405180519150505b919050565b600060038281548110151561136857fe5b906000526020600020906015020160005b50600e015490505b919050565b600060038281548110151561139757fe5b906000526020600020906015020160005b50600c015490505b919050565b60006003828154811015156113c657fe5b906000526020600020906015020160005b506011015490505b919050565b60008060008060008060008060008060038b81548110151561140257fe5b906000526020600020906015020160005b5090508060060154995080600701549850806008015497508060090154965080600d015495508060000160149054906101000a900460ff169450806011015493508060120160009054906101000a9004600160a060020a031692506114778b6115ae565b91505b509193959799909294969850565b600060038281548110151561149957fe5b906000526020600020906015020160005b50600d015490505b919050565b60006003828154811015156114c857fe5b906000526020600020906015020160005b505460a060020a900460ff1690505b919050565b60006003838154811015156114fe57fe5b906000526020600020906015020160005b50600f0182815460018160011615610100020316600290048110151561153157fe5b8154600116156115505790600052602060002090602091828204019190065b9054901a7f01000000000000000000000000000000000000000000000000000000000000000290505b92915050565b600060038281548110151561159057fe5b906000526020600020906015020160005b506006015490505b919050565b6000806003838154811015156115c057fe5b906000526020600020906015020160005b506001810154600160a060020a0316600090815260148201602052604090205490915060ff16801561163657506002810154600160a060020a0316600090815260148201602052604090205460ff168061163657506002810154600160a060020a0316155b5b91505b50919050565b6003545b90565b600060038281548110151561165857fe5b906000526020600020906015020160005b5060010154600160a060020a031690505b919050565b60015460009033600160a060020a0390811691161461169d57600080fd5b600054600160a060020a03858116911614158061173c575060008054839161173991600160a060020a0316906370a082319030906040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561171657600080fd5b6102c65a03f1151561172757600080fd5b50505060405180519050600254612bff565b10155b151561174757600080fd5b600160a060020a038316151561175c57600080fd5b83600160a060020a031663a9059cbb848460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156117b957600080fd5b6102c65a03f115156117ca57600080fd5b50505060405180519150505b9392505050565b600154600160a060020a031681565b6000806003838154811015156117fe57fe5b906000526020600020906015020160005b50905061163661183461182a83600501548460060154612823565b8360070154612823565b8260090154612bff565b91505b50919050565b600060038281548110151561185857fe5b906000526020600020906015020160005b506007015490505b919050565b600060038281548110151561188757fe5b906000526020600020906015020160005b5060020154600160a060020a031690505b919050565b60006003828154811015156118bf57fe5b906000526020600020906015020160005b506005015490505b919050565b6000806003838154811015156118ef57fe5b906000526020600020906015020160005b50905060035b815460a060020a900460ff16600381111561191d57fe5b141561192857600080fd5b600381015433600160a060020a03908116911614806119945750600181015433600160a060020a03908116911614806119715750600281015433600160a060020a039081169116145b8015611994575060005b815460a060020a900460ff16600381111561199257fe5b145b5b15156119a057600080fd5b7f5e81ba96d90c4ed224a3379b681aa7910d3832eabf32b38d8fffdfb58b3ed9628333604051918252600160a060020a031660208201526040908101905180910390a18054600390829074ff0000000000000000000000000000000000000000191660a060020a835b0217905550600191505b50919050565b600080600384815481101515611a2b57fe5b906000526020600020906015020160005b50600381015490915033600160a060020a03908116911614611a5d57600080fd5b601281018054600160a060020a031916600160a060020a038516179055600191505b5092915050565b6000600383815481101515611a9757fe5b906000526020600020906015020160005b50600160a060020a0383166000908152601491909101602052604090205460ff1690505b92915050565b6000806000600384815481101515611ae657fe5b906000526020600020906015020160005b50915060005b825460a060020a900460ff166003811115611b1457fe5b14611b1e57600080fd5b611b27846115ae565b1515611b3257600080fd5b6013820154421115611b4357600080fd5b600382018054600160a060020a03191633600160a060020a0316179055600e820154611b70904290612823565b600d8301554260088301558154600190839074ff0000000000000000000000000000000000000000191660a060020a835b0217905550600082601001541115611bca57611bca84611bc5428560100154612823565b612c1a565b5b611bd48461284b565b60005460018401546005850154929350600160a060020a03918216926323b872dd9233921690611c0490866127d5565b60006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515611c5c57600080fd5b6102c65a03f11515611c6d57600080fd5b505050604051805190501515611c8257600080fd5b6002820154600160a060020a031615611d41576000546002830154600a840154600160a060020a03928316926323b872dd923392911690611cc390866127d5565b60006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515611d1b57600080fd5b6102c65a03f11515611d2c57600080fd5b505050604051805190501515611d4157600080fd5b5b60038201547fe69a2d9a97bd2617dba9d6377976d828bb5b0c24b515820e3a191eb1c5d57bc3908590600160a060020a0316604051918252600160a060020a031660208201526040908101905180910390a1600192505b5050919050565b60015433600160a060020a03908116911614611dbb57600080fd5b600160a060020a0381161515611dd057600080fd5b60018054600160a060020a031916600160a060020a0383161790555b50565b6000600382815481101515611e0057fe5b906000526020600020906015020160005b50600a015490505b919050565b600080600383815481101515611e3057fe5b906000526020600020906015020160005b50905060005b815460a060020a900460ff166003811115611e5e57fe5b14611e6857600080fd5b600160a060020a0333908116600090815260148301602052604090819020805460ff191660011790557f25892f9206787c4121725a78d5ce4ccdd67396188489c0ec7181390a436776a991859151918252600160a060020a031660208201526040908101905180910390a1600191505b50919050565b600080600384815481101515611ef057fe5b906000526020600020906015020160005b50905060035b815460a060020a900460ff166003811115611f1e57fe5b1415611f2957600080fd5b600381015433600160a060020a0390811691161480611f585750601281015433600160a060020a039081169116145b1515611f6357600080fd5b600160a060020a0383161515611f7857600080fd5b60038101547f0a429aba3d89849a2db0153e4534d95c46a1d83c8109d73893f55ebc44010ff4908590600160a060020a031685604051928352600160a060020a039182166020840152166040808301919091526060909101905180910390a1600381018054600160a060020a038516600160a060020a0319918216179091556012820180549091169055600191505b5092915050565b600060038281548110151561201f57fe5b906000526020600020906015020160005b506010015490505b919050565b612045612da0565b600380548390811061205357fe5b906000526020600020906015020160005b50600f018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156120fc5780601f106120d1576101008083540402835291602001916120fc565b820191906000526020600020905b8154815290600101906020018083116120df57829003601f168201915b505050505090505b919050565b600060038281548110151561211a57fe5b906000526020600020906015020160005b5060040154600160a060020a031690505b919050565b60015433600160a060020a0390811691161461215c57600080fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a831515021790555b50565b600060038281548110151561219957fe5b906000526020600020906015020160005b50600f0160405180828054600181600116156101000203166002900480156122095780601f106121e7576101008083540402835291820191612209565b820191906000526020600020905b8154815290600101906020018083116121f5575b5050915050604051809103902090505b919050565b60025481565b600060038281548110151561223557fe5b906000526020600020906015020160005b506013015490505b919050565b60008060038581548110151561226557fe5b906000526020600020906015020160005b509050600160a060020a038416151561228e57600080fd5b600381015433600160a060020a0390811691161480156122b2575082816011015410155b15612367576122c5816011015484612bff565b60118201556002546122d79084612bff565b60025560008054600160a060020a03169063a9059cbb90869086906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561233c57600080fd5b6102c65a03f1151561234d57600080fd5b50505060405180519050151561236257600080fd5b600191505b5b509392505050565b600060038281548110151561238157fe5b906000526020600020906015020160005b5060030154600160a060020a031690505b919050565b600054600160a060020a031681565b60006003828154811015156123c857fe5b906000526020600020906015020160005b50600f01546002600019610100600184161502019091160490505b919050565b6000612403612db2565b60015460009060a060020a900460ff161561241d57600080fd5b8585111561242a57600080fd5b600160a060020a038e1615158061244057508951155b151561244b57600080fd5b600160a060020a038c1615158061246057508a155b151561246b57600080fd5b600160a060020a038d16151561248057600080fd5b88151561248c57600080fd5b86151561249857600080fd5b8715156124a457600080fd5b4284116124b057600080fd5b6102a0604051908101604052600160a060020a038f1681526020810160005b81526020018e600160a060020a031681526020018d600160a060020a031681526020016000600160a060020a0316815260200133600160a060020a031681526020018a8152602001600081526020016000815260200160008152602001600081526020018c8152602001898152602001888152602001600081526020018781526020018b8152602001868152602001600081526020016000600160a060020a031681526020018581525091506001600380548060010182816125919190612e87565b916000526020600020906015020160005b50849081518154600160a060020a031916600160a060020a039190911617815560208201518154829074ff0000000000000000000000000000000000000000191660a060020a8360038111156125f457fe5b02179055506040820151600182018054600160a060020a031916600160a060020a03929092169190911790556060820151600282018054600160a060020a031916600160a060020a03929092169190911790556080820151600382018054600160a060020a031916600160a060020a039290921691909117905560a0820151600482018054600160a060020a031916600160a060020a039290921691909117905560c0820151816005015560e0820151816006015561010082015181600701556101208201518160080155610140820151816009015561016082015181600a015561018082015181600b01556101a082015181600c01556101c082015181600d01556101e082015181600e015561020082015181600f0190805161271c929160200190612eb9565b5061022082015181601001556102408201518160110155610260820151601282018054600160a060020a031916600160a060020a0392909216919091179055610280820151816013015550500390507fd1acb464ac8b592a0bd76da52fada20c0b6e5fc41cccd5ad10a27f7e410a9302818e33604051928352600160a060020a039182166020840152166040808301919091526060909101905180910390a18092505b50509b9a5050505050505050505050565b600f81565b60008282028315806127f157508284828115156127ee57fe5b04145b15156127f957fe5b8091505b5092915050565b600081831015612815575081611579565b5080611579565b5b92915050565b60008282018381108015906127f15750828110155b15156127f957fe5b8091505b5092915050565b60008060008060038581548110151561286057fe5b906000526020600020906015020160005b508054909350600160a060020a0316151561288f5760019350612b96565b8254600160a060020a0316639ca3c29c600f850160006040516020015260405160e060020a63ffffffff841602815260206004820190815282546002600019610100600184161502019091160460248301819052909182916044909101908490801561293c5780601f106129115761010080835404028352916020019161293c565b820191906000526020600020905b81548152906001019060200180831161291f57829003601f168201915b505092505050602060405180830381600087803b151561295b57600080fd5b6102c65a03f1151561296c57600080fd5b505050604051805160008054919450600160a060020a0390911691506323b872dd903390309086906040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b15156129ea57600080fd5b6102c65a03f115156129fb57600080fd5b505050604051805190501515612a1057600080fd5b600080548454600160a060020a039182169263095ea7b3929091169085906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515612a7857600080fd5b6102c65a03f11515612a8957600080fd5b505050604051805190501515612a9e57600080fd5b8254600160a060020a0316634a2ff078600f850160006040516020015260405160e060020a63ffffffff8416028152602060048201908152825460026000196101006001841615020190911604602483018190529091829160449091019084908015612b4b5780601f10612b2057610100808354040283529160200191612b4b565b820191906000526020600020905b815481529060010190602001808311612b2e57829003601f168201915b505092505050602060405180830381600087803b1515612b6a57600080fd5b6102c65a03f11515612b7b57600080fd5b5050506040518051915050801515612b9257600080fd5b8093505b505050919050565b6000600383815481101515612baf57fe5b906000526020600020906015020160005b50905060015b815460a060020a900460ff166003811115612bdd57fe5b14612be757600080fd5b428211612bf857612bf88383612c1a565b5b5b505050565b60008082841015612c0c57fe5b5050808203805b5092915050565b60008060008060008060008060008060038c815481101515612c3857fe5b906000526020600020906015020160005b50995089600801548b1115612d71578960060154985089600701549750612c748b8b600d0154612804565b91508960080154821115612cd057612c90828b60080154612bff565b9350612ca48a600501548b60090154612bff565b9250612cb5848b600b015485610ed3565b9096509450612cc4858a612823565b9850858a600801540196505b89600d01548b1115612d3f57612cee8a600d01548b60080154612d81565b9050612cfa8b82612bff565b9350612d17612d0d8b600501548b612823565b8b60090154612bff565b9250612d28848b600c015485610ed3565b9096509450612d378886612823565b975085810196505b896006015489141580612d56575089600701548814155b15612d715760088a0187905560068a0189905560078a018890555b5b5b505050505050505050505050565b600081831115612815575081611579565b5080611579565b5b92915050565b60206040519081016040526000815290565b6102a0604051908101604052600080825260208201905b81526020016000600160a060020a031681526020016000600160a060020a031681526020016000600160a060020a031681526020016000600160a060020a0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001612e5c612da0565b815260200160008152602001600081526020016000600160a060020a03168152602001600081525090565b815481835581811511612bf857601502816015028360005260206000209182019101612bf89190612f4a565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612efa57805160ff1916838001178555612f27565b82800160010185558215612f27579182015b82811115612f27578251825591602001919060010190612f0c565b5b50612f34929150613034565b5090565b60206040519081016040526000815290565b61164491905b80821115612f3457805474ffffffffffffffffffffffffffffffffffffffffff19168155600181018054600160a060020a03199081169091556002820180548216905560038201805482169055600482018054909116905560006005820181905560068201819055600782018190556008820181905560098201819055600a8201819055600b8201819055600c8201819055600d8201819055600e8201819055612ffd600f830182613055565b5060006010820181905560118201819055601282018054600160a060020a03191690556013820155601501612f50565b5090565b90565b61164491905b80821115612f34576000815560010161303a565b5090565b90565b50805460018160011615610100020316600290046000825580601f1061307b575061121f565b601f01602090049060005260206000209081019061121f9190613034565b5b505600a165627a7a72305820a496e31d812cdb278dfadf3f08b3bc811c549dd46a87c90258a1d218c6d4241c0029000000000000000000000000f970b8e36e23f7fc3fd752eea86f8be8d83375a6

Deployed Bytecode

0x606060405236156102345763ffffffff60e060020a600035041662442a0781146102395780630557b2b0146102c657806305e1bd8c146102f85780630ad6ac851461032c5780630c196a74146103655780630e136b191461038d57806310a9de60146103b45780632924e254146103e65780632a92362c1461040e5780633290f5151461043657806335a3e83c1461044e5780634a8e4d78146104765780634d5e9a2a1461049e57806355121498146104c6578063567e75c4146104ee57806359357045146105765780635c622a0e1461059e5780635f5fa782146105d85780635fe2d689146106265780637910867b1461064e578063833be5d5146106785780638500d9191461069d5780638d8e5da7146106cf5780638da5cb5b1461070b57806391cb98af1461073a5780639380614414610762578063964f61f91461078a5780639980ec86146107bc5780639d118770146107e4578063a40868541461080e578063a578ae3214610844578063a6aa57ce1461087a578063a6f9dae1146108a4578063a78cb567146108c5578063b759f954146108ed578063b7760c8f14610917578063bed33cae1461094d578063cdf9b77e14610975578063d48e638a14610a03578063d848dee714610a35578063dac3ab8814610a4f578063e47dace514610a77578063e6c8fcf114610a9c578063f24ff92c14610ac4578063fa2c7f9b14610afd578063fc0c546a14610b2f578063fe7eba0614610b5e578063fe925e8014610b86578063ffa1ad7414610c26575b600080fd5b341561024457600080fd5b61024f600435610c4b565b604051600160a060020a039d8e1681529b8d1660208d0152998c166040808d019190915298909b1660608b015260808a019690965260a089019490945260c088019290925260e08701526101008601526101208501526101408401526101608301939093526101808201526101a001905180910390f35b34156102d157600080fd5b6102dc600435610e9b565b604051600160a060020a03909116815260200160405180910390f35b341561030357600080fd5b610314600435602435604435610ed3565b60405191825260208201526040908101905180910390f35b341561033757600080fd5b610351600435602435600160a060020a0360443516610f1e565b604051901515815260200160405180910390f35b341561037057600080fd5b61037b600435611143565b60405190815260200160405180910390f35b341561039857600080fd5b610351611172565b604051901515815260200160405180910390f35b34156103bf57600080fd5b6102dc600435611182565b604051600160a060020a03909116815260200160405180910390f35b34156103f157600080fd5b61037b6004356111b7565b60405190815260200160405180910390f35b341561041957600080fd5b61037b6004356111e6565b60405190815260200160405180910390f35b341561044157600080fd5b61044c600435611215565b005b341561045957600080fd5b61037b600435611223565b60405190815260200160405180910390f35b341561048157600080fd5b61037b600435611357565b60405190815260200160405180910390f35b34156104a957600080fd5b61037b600435611386565b60405190815260200160405180910390f35b34156104d157600080fd5b61037b6004356113b5565b60405190815260200160405180910390f35b34156104f957600080fd5b6105046004356113e4565b604051808a815260200189815260200188815260200187815260200186815260200185600381111561053257fe5b60ff16815260200184815260200183600160a060020a0316600160a060020a0316815260200182151515158152602001995050505050505050505060405180910390f35b341561058157600080fd5b61037b600435611488565b60405190815260200160405180910390f35b34156105a957600080fd5b6105b46004356114b7565b604051808260038111156105c457fe5b60ff16815260200191505060405180910390f35b34156105e357600080fd5b6105f16004356024356114ed565b6040517fff00000000000000000000000000000000000000000000000000000000000000909116815260200160405180910390f35b341561063157600080fd5b61037b60043561157f565b60405190815260200160405180910390f35b341561065957600080fd5b6103516004356115ae565b604051901515815260200160405180910390f35b341561068357600080fd5b61037b611640565b60405190815260200160405180910390f35b34156106a857600080fd5b6102dc600435611647565b604051600160a060020a03909116815260200160405180910390f35b34156106da57600080fd5b610351600160a060020a036004358116906024351660443561167f565b604051901515815260200160405180910390f35b341561071657600080fd5b6102dc6117dd565b604051600160a060020a03909116815260200160405180910390f35b341561074557600080fd5b61037b6004356117ec565b60405190815260200160405180910390f35b341561076d57600080fd5b61037b600435611847565b60405190815260200160405180910390f35b341561079557600080fd5b6102dc600435611876565b604051600160a060020a03909116815260200160405180910390f35b34156107c757600080fd5b61037b6004356118ae565b60405190815260200160405180910390f35b34156107ef57600080fd5b6103516004356118dd565b604051901515815260200160405180910390f35b341561081957600080fd5b610351600435600160a060020a0360243516611a19565b604051901515815260200160405180910390f35b341561084f57600080fd5b610351600435600160a060020a0360243516611a86565b604051901515815260200160405180910390f35b341561088557600080fd5b610351600435611ad2565b604051901515815260200160405180910390f35b34156108af57600080fd5b61044c600160a060020a0360043516611da0565b005b34156108d057600080fd5b61037b600435611def565b60405190815260200160405180910390f35b34156108f857600080fd5b610351600435611e1e565b604051901515815260200160405180910390f35b341561092257600080fd5b610351600435600160a060020a0360243516611ede565b604051901515815260200160405180910390f35b341561095857600080fd5b61037b60043561200e565b60405190815260200160405180910390f35b341561098057600080fd5b61098b60043561203d565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156109c85780820151818401525b6020016109af565b50505050905090810190601f1680156109f55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610a0e57600080fd5b6102dc600435612109565b604051600160a060020a03909116815260200160405180910390f35b3415610a4057600080fd5b61044c6004351515612141565b005b3415610a5a57600080fd5b61037b600435612188565b60405190815260200160405180910390f35b3415610a8257600080fd5b61037b61221e565b60405190815260200160405180910390f35b3415610aa757600080fd5b61037b600435612224565b60405190815260200160405180910390f35b3415610acf57600080fd5b610351600435600160a060020a0360243516604435612253565b604051901515815260200160405180910390f35b3415610b0857600080fd5b6102dc600435612370565b604051600160a060020a03909116815260200160405180910390f35b3415610b3a57600080fd5b6102dc6123a8565b604051600160a060020a03909116815260200160405180910390f35b3415610b6957600080fd5b61037b6004356123b7565b60405190815260200160405180910390f35b3415610b9157600080fd5b61037b60048035600160a060020a03908116916024803583169260443516916064359160a49060843590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650508435946020810135945060408101359350606081013592506080810135915060a001356123f9565b60405190815260200160405180910390f35b3415610c3157600080fd5b61037b6127d0565b60405190815260200160405180910390f35b60008060008060008060008060008060008060008060038f815481101515610c6f57fe5b906000526020600020906015020160005b5090508060000160009054906101000a9004600160a060020a03169d508060010160009054906101000a9004600160a060020a03169c508060030160009054906101000a9004600160a060020a03169b508060040160009054906101000a9004600160a060020a03169a508060050154995080600a0154985080600b0154975080600c0154965080600e01549550806010015494508060000160009054906101000a9004600160a060020a0316600160a060020a031663afd0fd1d82600f0160006040516020015260405160e060020a63ffffffff8416028152602060048201908152825460026000196101006001841615020190911604602483018190529091829160449091019084908015610dd85780601f10610dad57610100808354040283529160200191610dd8565b820191906000526020600020905b815481529060010190602001808311610dbb57829003601f168201915b505092505050602060405180830381600087803b1515610df757600080fd5b6102c65a03f11515610e0857600080fd5b5050506040518051945050600f81016040518082805460018160011615610100020316600290048015610e725780601f10610e50576101008083540402835291820191610e72565b820191906000526020600020905b815481529060010190602001808311610e5e575b505091505060405180910390209250806013015491505b5091939597999b9d90929496989a9c50565b6000600382815481101515610eac57fe5b906000526020600020906015020160005b5060120154600160a060020a031690505b919050565b60008083610eed610ee7620186a0866127d5565b876127d5565b811515610ef657fe5b04905082620186a002610f0982866127d5565b811515610f1257fe5b0491505b935093915050565b600080600080600387815481101515610f3357fe5b906000526020600020906015020160005b50925060015b835460a060020a900460ff166003811115610f6157fe5b14610f6b57600080fd5b610f7487611215565b610f86610f80886117ec565b87612804565b9150610f96836009015483612823565b6009840155610fa4876117ec565b1515611009577f45bbf9b5373297284296c5c84c733f3e536eb719e3fe3ee1771900622621cfb78760405190815260200160405180910390a18254600290849074ff0000000000000000000000000000000000000000191660a060020a835b02179055505b61101b826110168961284b565b6127d5565b60008054919250600160a060020a03909116906323b872dd903390309085906040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561109057600080fd5b6102c65a03f115156110a157600080fd5b5050506040518051905015156110b657600080fd5b6110c4818460110154612823565b60118401556002546110d7908290612823565b6002557f208972b4933bf2f7f9bb4c3c61cd484970eb0babe7539d22a18ab1d80fa7bec687338785604051938452600160a060020a039283166020850152911660408084019190915260608301919091526080909101905180910390a1600193505b5050509392505050565b600060038281548110151561115457fe5b906000526020600020906015020160005b50600b015490505b919050565b60015460a060020a900460ff1681565b600060038281548110151561119357fe5b906000526020600020906015020160005b5054600160a060020a031690505b919050565b60006003828154811015156111c857fe5b906000526020600020906015020160005b506008015490505b919050565b60006003828154811015156111f757fe5b906000526020600020906015020160005b506009015490505b919050565b61121f8142612b9e565b5b50565b600060038281548110151561123457fe5b906000526020600020906015020160005b505460038054600160a060020a039092169163afd0fd1d91908590811061126857fe5b906000526020600020906015020160005b50600f0160006040516020015260405160e060020a63ffffffff84160281526020600482019081528254600260001961010060018416150201909116046024830181905290918291604490910190849080156113165780601f106112eb57610100808354040283529160200191611316565b820191906000526020600020905b8154815290600101906020018083116112f957829003601f168201915b505092505050602060405180830381600087803b151561133557600080fd5b6102c65a03f1151561134657600080fd5b50505060405180519150505b919050565b600060038281548110151561136857fe5b906000526020600020906015020160005b50600e015490505b919050565b600060038281548110151561139757fe5b906000526020600020906015020160005b50600c015490505b919050565b60006003828154811015156113c657fe5b906000526020600020906015020160005b506011015490505b919050565b60008060008060008060008060008060038b81548110151561140257fe5b906000526020600020906015020160005b5090508060060154995080600701549850806008015497508060090154965080600d015495508060000160149054906101000a900460ff169450806011015493508060120160009054906101000a9004600160a060020a031692506114778b6115ae565b91505b509193959799909294969850565b600060038281548110151561149957fe5b906000526020600020906015020160005b50600d015490505b919050565b60006003828154811015156114c857fe5b906000526020600020906015020160005b505460a060020a900460ff1690505b919050565b60006003838154811015156114fe57fe5b906000526020600020906015020160005b50600f0182815460018160011615610100020316600290048110151561153157fe5b8154600116156115505790600052602060002090602091828204019190065b9054901a7f01000000000000000000000000000000000000000000000000000000000000000290505b92915050565b600060038281548110151561159057fe5b906000526020600020906015020160005b506006015490505b919050565b6000806003838154811015156115c057fe5b906000526020600020906015020160005b506001810154600160a060020a0316600090815260148201602052604090205490915060ff16801561163657506002810154600160a060020a0316600090815260148201602052604090205460ff168061163657506002810154600160a060020a0316155b5b91505b50919050565b6003545b90565b600060038281548110151561165857fe5b906000526020600020906015020160005b5060010154600160a060020a031690505b919050565b60015460009033600160a060020a0390811691161461169d57600080fd5b600054600160a060020a03858116911614158061173c575060008054839161173991600160a060020a0316906370a082319030906040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561171657600080fd5b6102c65a03f1151561172757600080fd5b50505060405180519050600254612bff565b10155b151561174757600080fd5b600160a060020a038316151561175c57600080fd5b83600160a060020a031663a9059cbb848460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156117b957600080fd5b6102c65a03f115156117ca57600080fd5b50505060405180519150505b9392505050565b600154600160a060020a031681565b6000806003838154811015156117fe57fe5b906000526020600020906015020160005b50905061163661183461182a83600501548460060154612823565b8360070154612823565b8260090154612bff565b91505b50919050565b600060038281548110151561185857fe5b906000526020600020906015020160005b506007015490505b919050565b600060038281548110151561188757fe5b906000526020600020906015020160005b5060020154600160a060020a031690505b919050565b60006003828154811015156118bf57fe5b906000526020600020906015020160005b506005015490505b919050565b6000806003838154811015156118ef57fe5b906000526020600020906015020160005b50905060035b815460a060020a900460ff16600381111561191d57fe5b141561192857600080fd5b600381015433600160a060020a03908116911614806119945750600181015433600160a060020a03908116911614806119715750600281015433600160a060020a039081169116145b8015611994575060005b815460a060020a900460ff16600381111561199257fe5b145b5b15156119a057600080fd5b7f5e81ba96d90c4ed224a3379b681aa7910d3832eabf32b38d8fffdfb58b3ed9628333604051918252600160a060020a031660208201526040908101905180910390a18054600390829074ff0000000000000000000000000000000000000000191660a060020a835b0217905550600191505b50919050565b600080600384815481101515611a2b57fe5b906000526020600020906015020160005b50600381015490915033600160a060020a03908116911614611a5d57600080fd5b601281018054600160a060020a031916600160a060020a038516179055600191505b5092915050565b6000600383815481101515611a9757fe5b906000526020600020906015020160005b50600160a060020a0383166000908152601491909101602052604090205460ff1690505b92915050565b6000806000600384815481101515611ae657fe5b906000526020600020906015020160005b50915060005b825460a060020a900460ff166003811115611b1457fe5b14611b1e57600080fd5b611b27846115ae565b1515611b3257600080fd5b6013820154421115611b4357600080fd5b600382018054600160a060020a03191633600160a060020a0316179055600e820154611b70904290612823565b600d8301554260088301558154600190839074ff0000000000000000000000000000000000000000191660a060020a835b0217905550600082601001541115611bca57611bca84611bc5428560100154612823565b612c1a565b5b611bd48461284b565b60005460018401546005850154929350600160a060020a03918216926323b872dd9233921690611c0490866127d5565b60006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515611c5c57600080fd5b6102c65a03f11515611c6d57600080fd5b505050604051805190501515611c8257600080fd5b6002820154600160a060020a031615611d41576000546002830154600a840154600160a060020a03928316926323b872dd923392911690611cc390866127d5565b60006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515611d1b57600080fd5b6102c65a03f11515611d2c57600080fd5b505050604051805190501515611d4157600080fd5b5b60038201547fe69a2d9a97bd2617dba9d6377976d828bb5b0c24b515820e3a191eb1c5d57bc3908590600160a060020a0316604051918252600160a060020a031660208201526040908101905180910390a1600192505b5050919050565b60015433600160a060020a03908116911614611dbb57600080fd5b600160a060020a0381161515611dd057600080fd5b60018054600160a060020a031916600160a060020a0383161790555b50565b6000600382815481101515611e0057fe5b906000526020600020906015020160005b50600a015490505b919050565b600080600383815481101515611e3057fe5b906000526020600020906015020160005b50905060005b815460a060020a900460ff166003811115611e5e57fe5b14611e6857600080fd5b600160a060020a0333908116600090815260148301602052604090819020805460ff191660011790557f25892f9206787c4121725a78d5ce4ccdd67396188489c0ec7181390a436776a991859151918252600160a060020a031660208201526040908101905180910390a1600191505b50919050565b600080600384815481101515611ef057fe5b906000526020600020906015020160005b50905060035b815460a060020a900460ff166003811115611f1e57fe5b1415611f2957600080fd5b600381015433600160a060020a0390811691161480611f585750601281015433600160a060020a039081169116145b1515611f6357600080fd5b600160a060020a0383161515611f7857600080fd5b60038101547f0a429aba3d89849a2db0153e4534d95c46a1d83c8109d73893f55ebc44010ff4908590600160a060020a031685604051928352600160a060020a039182166020840152166040808301919091526060909101905180910390a1600381018054600160a060020a038516600160a060020a0319918216179091556012820180549091169055600191505b5092915050565b600060038281548110151561201f57fe5b906000526020600020906015020160005b506010015490505b919050565b612045612da0565b600380548390811061205357fe5b906000526020600020906015020160005b50600f018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156120fc5780601f106120d1576101008083540402835291602001916120fc565b820191906000526020600020905b8154815290600101906020018083116120df57829003601f168201915b505050505090505b919050565b600060038281548110151561211a57fe5b906000526020600020906015020160005b5060040154600160a060020a031690505b919050565b60015433600160a060020a0390811691161461215c57600080fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a831515021790555b50565b600060038281548110151561219957fe5b906000526020600020906015020160005b50600f0160405180828054600181600116156101000203166002900480156122095780601f106121e7576101008083540402835291820191612209565b820191906000526020600020905b8154815290600101906020018083116121f5575b5050915050604051809103902090505b919050565b60025481565b600060038281548110151561223557fe5b906000526020600020906015020160005b506013015490505b919050565b60008060038581548110151561226557fe5b906000526020600020906015020160005b509050600160a060020a038416151561228e57600080fd5b600381015433600160a060020a0390811691161480156122b2575082816011015410155b15612367576122c5816011015484612bff565b60118201556002546122d79084612bff565b60025560008054600160a060020a03169063a9059cbb90869086906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561233c57600080fd5b6102c65a03f1151561234d57600080fd5b50505060405180519050151561236257600080fd5b600191505b5b509392505050565b600060038281548110151561238157fe5b906000526020600020906015020160005b5060030154600160a060020a031690505b919050565b600054600160a060020a031681565b60006003828154811015156123c857fe5b906000526020600020906015020160005b50600f01546002600019610100600184161502019091160490505b919050565b6000612403612db2565b60015460009060a060020a900460ff161561241d57600080fd5b8585111561242a57600080fd5b600160a060020a038e1615158061244057508951155b151561244b57600080fd5b600160a060020a038c1615158061246057508a155b151561246b57600080fd5b600160a060020a038d16151561248057600080fd5b88151561248c57600080fd5b86151561249857600080fd5b8715156124a457600080fd5b4284116124b057600080fd5b6102a0604051908101604052600160a060020a038f1681526020810160005b81526020018e600160a060020a031681526020018d600160a060020a031681526020016000600160a060020a0316815260200133600160a060020a031681526020018a8152602001600081526020016000815260200160008152602001600081526020018c8152602001898152602001888152602001600081526020018781526020018b8152602001868152602001600081526020016000600160a060020a031681526020018581525091506001600380548060010182816125919190612e87565b916000526020600020906015020160005b50849081518154600160a060020a031916600160a060020a039190911617815560208201518154829074ff0000000000000000000000000000000000000000191660a060020a8360038111156125f457fe5b02179055506040820151600182018054600160a060020a031916600160a060020a03929092169190911790556060820151600282018054600160a060020a031916600160a060020a03929092169190911790556080820151600382018054600160a060020a031916600160a060020a039290921691909117905560a0820151600482018054600160a060020a031916600160a060020a039290921691909117905560c0820151816005015560e0820151816006015561010082015181600701556101208201518160080155610140820151816009015561016082015181600a015561018082015181600b01556101a082015181600c01556101c082015181600d01556101e082015181600e015561020082015181600f0190805161271c929160200190612eb9565b5061022082015181601001556102408201518160110155610260820151601282018054600160a060020a031916600160a060020a0392909216919091179055610280820151816013015550500390507fd1acb464ac8b592a0bd76da52fada20c0b6e5fc41cccd5ad10a27f7e410a9302818e33604051928352600160a060020a039182166020840152166040808301919091526060909101905180910390a18092505b50509b9a5050505050505050505050565b600f81565b60008282028315806127f157508284828115156127ee57fe5b04145b15156127f957fe5b8091505b5092915050565b600081831015612815575081611579565b5080611579565b5b92915050565b60008282018381108015906127f15750828110155b15156127f957fe5b8091505b5092915050565b60008060008060038581548110151561286057fe5b906000526020600020906015020160005b508054909350600160a060020a0316151561288f5760019350612b96565b8254600160a060020a0316639ca3c29c600f850160006040516020015260405160e060020a63ffffffff841602815260206004820190815282546002600019610100600184161502019091160460248301819052909182916044909101908490801561293c5780601f106129115761010080835404028352916020019161293c565b820191906000526020600020905b81548152906001019060200180831161291f57829003601f168201915b505092505050602060405180830381600087803b151561295b57600080fd5b6102c65a03f1151561296c57600080fd5b505050604051805160008054919450600160a060020a0390911691506323b872dd903390309086906040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b15156129ea57600080fd5b6102c65a03f115156129fb57600080fd5b505050604051805190501515612a1057600080fd5b600080548454600160a060020a039182169263095ea7b3929091169085906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515612a7857600080fd5b6102c65a03f11515612a8957600080fd5b505050604051805190501515612a9e57600080fd5b8254600160a060020a0316634a2ff078600f850160006040516020015260405160e060020a63ffffffff8416028152602060048201908152825460026000196101006001841615020190911604602483018190529091829160449091019084908015612b4b5780601f10612b2057610100808354040283529160200191612b4b565b820191906000526020600020905b815481529060010190602001808311612b2e57829003601f168201915b505092505050602060405180830381600087803b1515612b6a57600080fd5b6102c65a03f11515612b7b57600080fd5b5050506040518051915050801515612b9257600080fd5b8093505b505050919050565b6000600383815481101515612baf57fe5b906000526020600020906015020160005b50905060015b815460a060020a900460ff166003811115612bdd57fe5b14612be757600080fd5b428211612bf857612bf88383612c1a565b5b5b505050565b60008082841015612c0c57fe5b5050808203805b5092915050565b60008060008060008060008060008060038c815481101515612c3857fe5b906000526020600020906015020160005b50995089600801548b1115612d71578960060154985089600701549750612c748b8b600d0154612804565b91508960080154821115612cd057612c90828b60080154612bff565b9350612ca48a600501548b60090154612bff565b9250612cb5848b600b015485610ed3565b9096509450612cc4858a612823565b9850858a600801540196505b89600d01548b1115612d3f57612cee8a600d01548b60080154612d81565b9050612cfa8b82612bff565b9350612d17612d0d8b600501548b612823565b8b60090154612bff565b9250612d28848b600c015485610ed3565b9096509450612d378886612823565b975085810196505b896006015489141580612d56575089600701548814155b15612d715760088a0187905560068a0189905560078a018890555b5b5b505050505050505050505050565b600081831115612815575081611579565b5080611579565b5b92915050565b60206040519081016040526000815290565b6102a0604051908101604052600080825260208201905b81526020016000600160a060020a031681526020016000600160a060020a031681526020016000600160a060020a031681526020016000600160a060020a0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001612e5c612da0565b815260200160008152602001600081526020016000600160a060020a03168152602001600081525090565b815481835581811511612bf857601502816015028360005260206000209182019101612bf89190612f4a565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612efa57805160ff1916838001178555612f27565b82800160010185558215612f27579182015b82811115612f27578251825591602001919060010190612f0c565b5b50612f34929150613034565b5090565b60206040519081016040526000815290565b61164491905b80821115612f3457805474ffffffffffffffffffffffffffffffffffffffffff19168155600181018054600160a060020a03199081169091556002820180548216905560038201805482169055600482018054909116905560006005820181905560068201819055600782018190556008820181905560098201819055600a8201819055600b8201819055600c8201819055600d8201819055600e8201819055612ffd600f830182613055565b5060006010820181905560118201819055601282018054600160a060020a03191690556013820155601501612f50565b5090565b90565b61164491905b80821115612f34576000815560010161303a565b5090565b90565b50805460018160011615610100020316600290046000825580601f1061307b575061121f565b601f01602090049060005260206000209081019061121f9190613034565b5b505600a165627a7a72305820a496e31d812cdb278dfadf3f08b3bc811c549dd46a87c90258a1d218c6d4241c0029

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

000000000000000000000000f970b8e36e23f7fc3fd752eea86f8be8d83375a6

-----Decoded View---------------
Arg [0] : _token (address): 0xF970b8E36e23F7fC3FD752EeA86f8Be8D83375A6

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000f970b8e36e23f7fc3fd752eea86f8be8d83375a6


Swarm Source

bzzr://a496e31d812cdb278dfadf3f08b3bc811c549dd46a87c90258a1d218c6d4241c

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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