ETH Price: $2,164.85 (+1.49%)

Contract

0xFFD883e94F7A3700aaf81a411bd164AD27AcC656
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Trade71179252019-01-24 7:54:522616 days ago1548316492IN
0xFFD883e9...D27AcC656
0 ETH0.002945196
Trade71177092019-01-24 6:48:352616 days ago1548312515IN
0xFFD883e9...D27AcC656
0 ETH0.002793816
Trade71176852019-01-24 6:42:072616 days ago1548312127IN
0xFFD883e9...D27AcC656
0 ETH0.002846826
Trade71174422019-01-24 5:38:212616 days ago1548308301IN
0xFFD883e9...D27AcC656
0 ETH0.001079322.4
User Repay71170292019-01-24 3:42:572617 days ago1548301377IN
0xFFD883e9...D27AcC656
0 ETH0.000876456
User Repay71170282019-01-24 3:42:482617 days ago1548301368IN
0xFFD883e9...D27AcC656
0 ETH0.000991936
User Repay71170262019-01-24 3:42:402617 days ago1548301360IN
0xFFD883e9...D27AcC656
0 ETH0.001003446
User Repay71170242019-01-24 3:41:522617 days ago1548301312IN
0xFFD883e9...D27AcC656
0 ETH0.001019666
Trade71170092019-01-24 3:36:402617 days ago1548301000IN
0xFFD883e9...D27AcC656
0 ETH0.001766143.6
Trade71166672019-01-24 2:01:462617 days ago1548295306IN
0xFFD883e9...D27AcC656
0 ETH0.002314094.8
User Repay71161852019-01-23 23:44:422617 days ago1548287082IN
0xFFD883e9...D27AcC656
0 ETH0.000975486
User Repay71161832019-01-23 23:43:492617 days ago1548287029IN
0xFFD883e9...D27AcC656
0 ETH0.001052676
User Repay71161822019-01-23 23:43:462617 days ago1548287026IN
0xFFD883e9...D27AcC656
0 ETH0.001060456
User Repay71161802019-01-23 23:42:132617 days ago1548286933IN
0xFFD883e9...D27AcC656
0 ETH0.001068636
User Repay71161782019-01-23 23:41:572617 days ago1548286917IN
0xFFD883e9...D27AcC656
0 ETH0.001117876
Trade71157152019-01-23 21:32:312617 days ago1548279151IN
0xFFD883e9...D27AcC656
0 ETH0.00308896
Trade71156182019-01-23 21:01:442617 days ago1548277304IN
0xFFD883e9...D27AcC656
0 ETH0.002946656
Trade71154732019-01-23 20:21:082617 days ago1548274868IN
0xFFD883e9...D27AcC656
0 ETH0.001159972.4
Trade71153692019-01-23 19:49:462617 days ago1548272986IN
0xFFD883e9...D27AcC656
0 ETH0.001709423.6
User Repay71153552019-01-23 19:42:452617 days ago1548272565IN
0xFFD883e9...D27AcC656
0 ETH0.001016476
User Repay71153522019-01-23 19:42:022617 days ago1548272522IN
0xFFD883e9...D27AcC656
0 ETH0.00105246
User Repay71153502019-01-23 19:41:092617 days ago1548272469IN
0xFFD883e9...D27AcC656
0 ETH0.001085136
Trade71149282019-01-23 17:40:592617 days ago1548265259IN
0xFFD883e9...D27AcC656
0 ETH0.001767743.6
User Repay71149252019-01-23 17:40:412617 days ago1548265241IN
0xFFD883e9...D27AcC656
0 ETH0.000641173.6
Trade71149162019-01-23 17:37:552617 days ago1548265075IN
0xFFD883e9...D27AcC656
0 ETH0.001767043.6
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Update Data Afte...71179252019-01-24 7:54:522616 days ago1548316492
0xFFD883e9...D27AcC656
0 ETH
Modify Balance71179252019-01-24 7:54:522616 days ago1548316492
0xFFD883e9...D27AcC656
0 ETH
Modify Balance71179252019-01-24 7:54:522616 days ago1548316492
0xFFD883e9...D27AcC656
0 ETH
Get Available Ba...71179252019-01-24 7:54:522616 days ago1548316492
0xFFD883e9...D27AcC656
0 ETH
Get Available Ba...71179252019-01-24 7:54:522616 days ago1548316492
0xFFD883e9...D27AcC656
0 ETH
Get Pledge Amoun...71179252019-01-24 7:54:522616 days ago1548316492
0xFFD883e9...D27AcC656
0 ETH
Get Token Assura...71179252019-01-24 7:54:522616 days ago1548316492
0xFFD883e9...D27AcC656
0 ETH
Get Token Assura...71179252019-01-24 7:54:522616 days ago1548316492
0xFFD883e9...D27AcC656
0 ETH
Update Data Afte...71177092019-01-24 6:48:352616 days ago1548312515
0xFFD883e9...D27AcC656
0 ETH
Modify Balance71177092019-01-24 6:48:352616 days ago1548312515
0xFFD883e9...D27AcC656
0 ETH
Modify Balance71177092019-01-24 6:48:352616 days ago1548312515
0xFFD883e9...D27AcC656
0 ETH
Get Available Ba...71177092019-01-24 6:48:352616 days ago1548312515
0xFFD883e9...D27AcC656
0 ETH
Get Available Ba...71177092019-01-24 6:48:352616 days ago1548312515
0xFFD883e9...D27AcC656
0 ETH
Get Pledge Amoun...71177092019-01-24 6:48:352616 days ago1548312515
0xFFD883e9...D27AcC656
0 ETH
Get Token Assura...71177092019-01-24 6:48:352616 days ago1548312515
0xFFD883e9...D27AcC656
0 ETH
Get Token Assura...71177092019-01-24 6:48:352616 days ago1548312515
0xFFD883e9...D27AcC656
0 ETH
Update Data Afte...71176852019-01-24 6:42:072616 days ago1548312127
0xFFD883e9...D27AcC656
0 ETH
Modify Balance71176852019-01-24 6:42:072616 days ago1548312127
0xFFD883e9...D27AcC656
0 ETH
Modify Balance71176852019-01-24 6:42:072616 days ago1548312127
0xFFD883e9...D27AcC656
0 ETH
Get Available Ba...71176852019-01-24 6:42:072616 days ago1548312127
0xFFD883e9...D27AcC656
0 ETH
Get Available Ba...71176852019-01-24 6:42:072616 days ago1548312127
0xFFD883e9...D27AcC656
0 ETH
Get Pledge Amoun...71176852019-01-24 6:42:072616 days ago1548312127
0xFFD883e9...D27AcC656
0 ETH
Get Token Assura...71176852019-01-24 6:42:072616 days ago1548312127
0xFFD883e9...D27AcC656
0 ETH
Get Token Assura...71176852019-01-24 6:42:072616 days ago1548312127
0xFFD883e9...D27AcC656
0 ETH
Update Data Afte...71174422019-01-24 5:38:212616 days ago1548308301
0xFFD883e9...D27AcC656
0 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BiLinkLoan

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-10-31
*/

pragma solidity ^0.4.13;

contract IToken {



  /// @notice send `_value` token to `_to` from `msg.sender`

  /// @param _to The address of the recipient

  /// @param _value The amount of token to be transferred

  /// @return Whether the transfer was successful or not

  function transfer(address _to, uint256 _value) public returns (bool success);



  /// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`

  /// @param _from The address of the sender

  /// @param _to The address of the recipient

  /// @param _value The amount of token to be transferred

  /// @return Whether the transfer was successful or not

  function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);



  function approve(address _spender, uint256 _value) public returns (bool success);



}

library SafeMath {



  /**

  * @dev Multiplies two numbers, throws on overflow.

  */

  function mul(uint256 a, uint256 b) internal pure returns (uint256) {

    if (a == 0) {

      return 0;

    }

    uint256 c = a * b;

    require(c / a == b);

    return c;

  }



  /**

  * @dev Integer division of two numbers, truncating the quotient.

  */

  function div(uint256 a, uint256 b) internal pure returns (uint256) {

    require(b > 0); // Solidity automatically throws when dividing by 0

    uint256 c = a / b;

    return c;

  }



  /**

  * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).

  */

  function sub(uint256 a, uint256 b) internal pure returns (uint256) {

    require(b <= a);

    return a - b;

  }



  /**

  * @dev Adds two numbers, throws on overflow.

  */

  function add(uint256 a, uint256 b) internal pure returns (uint256) {

    uint256 c = a + b;

    require(c >= a);

    return c;

  }

}

contract Ownable 

{

  address public owner;

 

  constructor(address _owner) public 

  {

    owner = _owner;

  }

 

  modifier onlyOwner() 

  {

    require(msg.sender == owner);

    _;

  }

 

  function transferOwnership(address newOwner) onlyOwner 

  {

    require(newOwner != address(0));      

    owner = newOwner;

  }

}

contract BiLinkLoan is Ownable {

	using SafeMath for uint256;



	address public contractLoanLogic;

	address public contractBalance;

	address public contractMarketData;

	address public accountCost;

	uint256 public commissionRatio;//percentage

	

	mapping (address => mapping ( bytes32 => uint256)) public account2Order2TradeAmount;

	

	mapping (address => mapping (address => uint16)) public tokenPledgeRatio;//pledge 2 borrow percentage

	bool public isLegacy;//if true, not allow new trade,new deposit



	event OnTrade(bytes32 guid,address tokenPledge, address tokenBorrow, address borrower, address lender, uint256 amountPledge, uint256 amountInterest, uint256 amountBorrow, uint256 timestamp);

	event OnUserRepay(uint256 id, address tokenPledge, address tokenBorrow, address borrower, address lender, uint256 amountPledge, uint256 amountOriginInterest, uint256 amountActualInterest

		, uint256 amountRepaied, uint256 amountRepaiedPledgeToken, uint256 timestamp);

	event OnForceRepay(uint256 id, address tokenPledge, address tokenBorrow, address borrower, address lender, uint256 amountPledge, uint256 amountOriginInterest, uint256 amountActualInterest

		, uint256 amountRepaied, uint256 amountRepaiedPledgeToken, uint256 timestamp);

	event OnLossCompensated(address tokenPledge, address tokenBorrow, address borrower, address lender, uint256 amountLoss, uint256 amountCompensated, uint256 timestamp);

	event OnLossCompensatedByAssurance(address tokenPledge, address tokenBorrow, address borrower, address lender, uint256 amountLoss, uint256 amountCompensated, uint256 timestamp);

		

	constructor(address _owner, address _accountCost, address _contractLoanLogic, address _contractMarketData, uint256 _commissionRatio) public Ownable(_owner) {

		contractLoanLogic= _contractLoanLogic;

		contractMarketData= _contractMarketData;

		isLegacy= false;

		commissionRatio= _commissionRatio;

		accountCost= _accountCost;

	}

	

	function setTokenPledgeRatio(address[] _pledgeTokens, address[] _borrowTokens, uint16[] _ratioPledges) public onlyOwner {

		for(uint256 i= 0; i< _pledgeTokens.length; i++) {

			tokenPledgeRatio[_pledgeTokens[i]][_borrowTokens[i]]= _ratioPledges[i];

		}

	}



	function setThisContractAsLegacy() public onlyOwner {

		isLegacy= true;

	}



	function setBalanceContract(address _contractBalance) public onlyOwner {

		contractBalance= _contractBalance;

	}



	//_arr1:tokenPledge,tokenBorrow,borrower,lender

	//_arr2:amountOrigin,amountInterest,periodDays,expireTime,amountTake

	//_arr3:rMaker,sMaker

	function trade(address[] _arr1, uint256[] _arr2, bool _borrowOrLend, bytes32 _guid, uint8 _vMaker, bytes32[] _arr3) public {

		require(isLegacy== false&& _arr2[4]<= _arr2[0]&& verifyInput( _arr1, _arr2, _borrowOrLend, _vMaker, _arr3)&& tokenPledgeRatio[_arr1[0]][_arr1[1]]> 0);

		if(_borrowOrLend)

			require(msg.sender== _arr1[2]);

		else

			require(msg.sender== _arr1[3]);



		uint256 amountPledge= ILoanLogic(contractLoanLogic).getPledgeAmount(_arr1[0], _arr1[1], _arr2[4], tokenPledgeRatio[_arr1[0]][_arr1[1]]);

		require(amountPledge!= 0);



		uint256 amountInterest = amountPledge.mul(_arr2[1]).mul(_arr2[2]).mul(100).div(tokenPledgeRatio[_arr1[0]][_arr1[1]]).div(100000);

		require(amountPledge.add(amountInterest)<= IBalance(contractBalance).getAvailableBalance(_arr1[0], _arr1[2])&&_arr2[4]<= IBalance(contractBalance).getAvailableBalance(_arr1[1], _arr1[3]));



		IBalance(contractBalance).modifyBalance(_arr1[3], _arr1[1], _arr2[4], false); 

		IBalance(contractBalance).modifyBalance(_arr1[2], _arr1[1], _arr2[4], true); 



		require(ILoanLogic(contractLoanLogic).updateDataAfterTrade(_arr1[0], _arr1[1], _arr1[2], _arr1[3], _arr2[4], amountPledge, amountInterest, _arr2[2]));

		

		emit OnTrade(_guid, _arr1[0], _arr1[1], _arr1[2], _arr1[3], amountPledge, amountInterest, _arr2[4], now);

	}



	function verifyInput( address[] _arr1, uint256[] _arr2, bool _borrowOrLend, uint8 _vMaker, bytes32[] _arr3) private returns (bool) {

		require(now <= _arr2[3]);

		address _accountPledgeAssurance= IBalance(contractBalance).getTokenAssuranceAccount(_arr1[0]);

		address _accountBorrowAssurance= IBalance(contractBalance).getTokenAssuranceAccount(_arr1[1]);

		require(_accountPledgeAssurance!= _arr1[2]&& _accountPledgeAssurance!= _arr1[3]&& _accountBorrowAssurance!= _arr1[2]&& _accountBorrowAssurance!= _arr1[3]);



		bytes32 _hash= keccak256(abi.encodePacked(this, _arr1[0], _arr1[1], _arr2[1], _arr2[2], _arr2[3]));

		require(ecrecover(_hash, _vMaker, _arr3[0], _arr3[1]) == (_borrowOrLend? _arr1[3] : _arr1[2]));

		

		if(_borrowOrLend) {

			require(account2Order2TradeAmount[_arr1[3]][_hash].add(_arr2[4])<= _arr2[0]);

			account2Order2TradeAmount[_arr1[3]][_hash]= account2Order2TradeAmount[_arr1[3]][_hash].add(_arr2[4]);

		}

		else {

			require(account2Order2TradeAmount[_arr1[2]][_hash].add(_arr2[4])<= _arr2[0]);

			account2Order2TradeAmount[_arr1[2]][_hash]= account2Order2TradeAmount[_arr1[2]][_hash].add(_arr2[4]);

		}

		return true;

	}



	function getNeedRepayPledgeTokenAmount(uint256 _amountUnRepaiedPledgeTokenAmount, address _pledgeToken, address _borrowToken) private returns (uint256) {

		return _amountUnRepaiedPledgeTokenAmount.mul((tokenPledgeRatio[_pledgeToken][_borrowToken] - 100)/4 + 100).div(100);

	}



	function doRepay(uint256 _id, bool _userOrForce) private {

		var (_tokenPledge,_tokenBorrow,_borrower,_lender)= ILoanLogic(contractLoanLogic).getLoanDataPart(_id);

		require(_borrower!= address(0));

		 

		uint256 _available= IBalance(contractBalance).getAvailableBalance(_tokenBorrow, _borrower);

		var (_amount, _amountOriginInterest, _amountActualInterest,_amountUnRepaiedAmount, _amountPledge)= ILoanLogic(contractLoanLogic).updateDataAfterRepay(_id, _available);

		require(_amount!= 0);



		uint256 _amountUnRepaiedPledgeToken= tryCompensateLossByAssurance(_tokenPledge, _tokenBorrow, _borrower, _lender, _amountPledge, _amountUnRepaiedAmount);



		_available= IBalance(contractBalance).getAvailableBalance(_tokenBorrow, _borrower);

		uint256 _amountRepaiedPledgeToken= getNeedRepayPledgeTokenAmount(_amountUnRepaiedPledgeToken, _tokenPledge, _tokenBorrow);

		adjustBalancesAfterRepay(_tokenPledge, _tokenBorrow, _borrower, _lender, _amountActualInterest, (_amountRepaiedPledgeToken< _amountPledge? _amountRepaiedPledgeToken: _amountPledge), (_available> _amount? _amount: _available)

			, (_amountUnRepaiedPledgeToken > _amountPledge? _amountUnRepaiedPledgeToken - _amountPledge: 0));



		if(_userOrForce)

			emit OnUserRepay(_id, _tokenPledge, _tokenBorrow, _borrower, _lender, _amountPledge, _amountOriginInterest, _amountActualInterest, _amount, _amountRepaiedPledgeToken, now);

		else

			emit OnForceRepay(_id, _tokenPledge, _tokenBorrow, _borrower, _lender, _amountPledge, _amountOriginInterest, _amountActualInterest, _amount, _amountRepaiedPledgeToken, now);

	}



	function tryCompensateLossByAssurance(address _tokenPledge, address _tokenBorrow, address _borrower, address _lender, uint256 _amountPledge, uint256 _amountUnRepaiedAmount) private returns (uint256) {

		uint256 _amountUnRepaiedPledgeToken= 0;

		address _accountAssurance= IBalance(contractBalance).getTokenAssuranceAccount(_tokenBorrow);

		uint256 _available= IBalance(contractBalance).getAvailableBalance(_tokenBorrow, _accountAssurance);

		(uint256 _num, uint256 _denom)= IMarketData(contractMarketData).getTokenExchangeRatio(_tokenPledge, _tokenBorrow);

		uint256 _equalAmount= _amountPledge.mul(_denom).div(_num);



		if(_amountUnRepaiedAmount > _equalAmount&& _available> 0) {

			uint256 _actualCompensatedAmountByAssurance= _amountUnRepaiedAmount.sub(_equalAmount);

			if(_available< _amountUnRepaiedAmount)

				_actualCompensatedAmountByAssurance= _available;

			IBalance(contractBalance).modifyBalance(_accountAssurance, _tokenBorrow, _actualCompensatedAmountByAssurance, false); 

			IBalance(contractBalance).modifyBalance(_borrower, _tokenBorrow, _actualCompensatedAmountByAssurance, true); 

			

			emit OnLossCompensatedByAssurance(_tokenPledge, _tokenBorrow, _borrower, _lender, _amountUnRepaiedAmount, _actualCompensatedAmountByAssurance, now);

			_amountUnRepaiedAmount= _amountUnRepaiedAmount.sub(_actualCompensatedAmountByAssurance);

		}



		_amountUnRepaiedPledgeToken= _amountUnRepaiedAmount.mul(_num).div(_denom);



		return _amountUnRepaiedPledgeToken;

	}



	function userRepay(uint256 _id) public {

		var (_tokenPledge, _tokenBorrow, _borrower, _lender)= ILoanLogic(contractLoanLogic).getLoanDataPart(_id);

		require(msg.sender == _borrower);

		 

		doRepay(_id, true);

	}



	function forceRepay(uint256[] _arr) public onlyOwner {

		for(uint256 i= 0; i< _arr.length; i++) {

			if(ILoanLogic(contractLoanLogic).needForceClose(_arr[i])) {

				doRepay(_arr[i], false);

			}

		}

	}



	function adjustBalancesAfterRepay(address _tokenPledge, address _tokenBorrow, address _borrower, address _lender, uint256 _amountActualInterest, uint256 _amountRepaiedPeldgeToken, uint256 _amountRepaiedBorrowToken, uint256 _amountLoss) private {

		uint256 _amountProfit= (_amountActualInterest.mul(commissionRatio))/ 100;

		IBalance(contractBalance).modifyBalance(_borrower, _tokenPledge, _amountRepaiedPeldgeToken.add(_amountActualInterest), false); 

		IBalance(contractBalance).modifyBalance(_lender, _tokenPledge, _amountActualInterest.sub(_amountProfit), true);

		 		 

		if(_amountRepaiedBorrowToken> 0) {

			IBalance(contractBalance).modifyBalance(_borrower, _tokenBorrow, _amountRepaiedBorrowToken, false);

			IBalance(contractBalance).modifyBalance(_lender, _tokenBorrow, _amountRepaiedBorrowToken, true);

		}



		if(_amountLoss> 0) {

			if(IBalance(contractBalance).getAvailableBalance(_tokenPledge, accountCost)/ 10> _amountLoss) {

				IBalance(contractBalance).modifyBalance(accountCost, _tokenPledge, _amountLoss, false); 

				IBalance(contractBalance).modifyBalance(_lender, _tokenPledge, _amountLoss, true); 

				emit OnLossCompensated(_tokenPledge, _tokenBorrow, _borrower, _lender, _amountLoss, _amountLoss, now);

			}

			else {

				uint256 uActualPaiedLoss= IBalance(contractBalance).getAvailableBalance(_tokenPledge, accountCost)/ 10;

				IBalance(contractBalance).modifyBalance(accountCost, _tokenPledge, uActualPaiedLoss, false); 

				IBalance(contractBalance).modifyBalance(_lender, _tokenPledge, uActualPaiedLoss, true); 

				emit OnLossCompensated(_tokenPledge, _tokenBorrow, _borrower, _lender, _amountLoss, uActualPaiedLoss, now);

			}

		}



		IBalance(contractBalance).modifyBalance(_lender, _tokenPledge, _amountRepaiedPeldgeToken, true);



		if(_tokenPledge== address(0)) {

			IBalance(contractBalance).distributeEthProfit(_lender, _amountProfit);

		}

		else {

			IBalance(contractBalance).distributeTokenProfit(_lender, _tokenPledge, _amountProfit);

		}

	}

}

contract ILoanLogic {  

	function setTokenExchangeRatio(address[] tokenPledge, address[] tokenBorrow, uint256[] amountDenom, uint256[] amountNum) public returns (bool);

	function getPledgeAmount(address tokenPledge, address tokenBorrow, uint256 amount,uint16 ratioPledge) public constant returns (uint256);

	function updateDataAfterTrade(address tokenPledge, address tokenBorrow, address borrower, address lender,

		uint256 amountPledge, uint256 amount, uint256 amountInterest, uint256 periodDays) public returns(bool);

	function updateDataAfterRepay(uint256 id, uint256 uBorrowerAvailableAmount) public returns (uint256, uint256, uint256, uint256, uint256);

	function getLoanDataPart(uint256 id) public constant returns (address, address, address, address);

	function needForceClose(uint256 id) public constant returns (bool);

}

contract IMarketData {

	function getTokenExchangeRatio(address _tokenNum, address _tokenDenom) public returns (uint256 num, uint256 denom);

}

contract IBalance {

	function distributeEthProfit(address profitMaker, uint256 amount) public ;

	function distributeTokenProfit (address profitMaker, address token, uint256 amount) public ;

	function modifyBalance(address _account, address _token, uint256 _amount, bool _addOrSub) public;

	function getAvailableBalance(address _token, address _account) public constant returns (uint256);

	function getTokenAssuranceAccount(address _token) public constant returns (address);

}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"contractMarketData","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"accountCost","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"setThisContractAsLegacy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"tokenPledgeRatio","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_pledgeTokens","type":"address[]"},{"name":"_borrowTokens","type":"address[]"},{"name":"_ratioPledges","type":"uint16[]"}],"name":"setTokenPledgeRatio","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"contractLoanLogic","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"}],"name":"userRepay","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_contractBalance","type":"address"}],"name":"setBalanceContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"contractBalance","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_arr1","type":"address[]"},{"name":"_arr2","type":"uint256[]"},{"name":"_borrowOrLend","type":"bool"},{"name":"_guid","type":"bytes32"},{"name":"_vMaker","type":"uint8"},{"name":"_arr3","type":"bytes32[]"}],"name":"trade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_arr","type":"uint256[]"}],"name":"forceRepay","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"bytes32"}],"name":"account2Order2TradeAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"commissionRatio","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isLegacy","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_owner","type":"address"},{"name":"_accountCost","type":"address"},{"name":"_contractLoanLogic","type":"address"},{"name":"_contractMarketData","type":"address"},{"name":"_commissionRatio","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"guid","type":"bytes32"},{"indexed":false,"name":"tokenPledge","type":"address"},{"indexed":false,"name":"tokenBorrow","type":"address"},{"indexed":false,"name":"borrower","type":"address"},{"indexed":false,"name":"lender","type":"address"},{"indexed":false,"name":"amountPledge","type":"uint256"},{"indexed":false,"name":"amountInterest","type":"uint256"},{"indexed":false,"name":"amountBorrow","type":"uint256"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"OnTrade","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"id","type":"uint256"},{"indexed":false,"name":"tokenPledge","type":"address"},{"indexed":false,"name":"tokenBorrow","type":"address"},{"indexed":false,"name":"borrower","type":"address"},{"indexed":false,"name":"lender","type":"address"},{"indexed":false,"name":"amountPledge","type":"uint256"},{"indexed":false,"name":"amountOriginInterest","type":"uint256"},{"indexed":false,"name":"amountActualInterest","type":"uint256"},{"indexed":false,"name":"amountRepaied","type":"uint256"},{"indexed":false,"name":"amountRepaiedPledgeToken","type":"uint256"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"OnUserRepay","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"id","type":"uint256"},{"indexed":false,"name":"tokenPledge","type":"address"},{"indexed":false,"name":"tokenBorrow","type":"address"},{"indexed":false,"name":"borrower","type":"address"},{"indexed":false,"name":"lender","type":"address"},{"indexed":false,"name":"amountPledge","type":"uint256"},{"indexed":false,"name":"amountOriginInterest","type":"uint256"},{"indexed":false,"name":"amountActualInterest","type":"uint256"},{"indexed":false,"name":"amountRepaied","type":"uint256"},{"indexed":false,"name":"amountRepaiedPledgeToken","type":"uint256"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"OnForceRepay","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenPledge","type":"address"},{"indexed":false,"name":"tokenBorrow","type":"address"},{"indexed":false,"name":"borrower","type":"address"},{"indexed":false,"name":"lender","type":"address"},{"indexed":false,"name":"amountLoss","type":"uint256"},{"indexed":false,"name":"amountCompensated","type":"uint256"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"OnLossCompensated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenPledge","type":"address"},{"indexed":false,"name":"tokenBorrow","type":"address"},{"indexed":false,"name":"borrower","type":"address"},{"indexed":false,"name":"lender","type":"address"},{"indexed":false,"name":"amountLoss","type":"uint256"},{"indexed":false,"name":"amountCompensated","type":"uint256"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"OnLossCompensatedByAssurance","type":"event"}]

608060405234801561001057600080fd5b5060405160a080614c0e833981018060405281019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505084806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860006101000a81548160ff0219169083151502179055508060058190555083600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050614a78806101966000396000f3006080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630fc77e2d146100eb57806330b2079b14610142578063313cb4dd14610199578063365e78f7146101b05780634e3a67741461022f57806357a299b91461031b57806374edab5a14610372578063898786ac1461039f5780638b7afe2e146103e25780638da5cb5b146104395780639353d0f1146104905780639dab5308146105a3578063a2ba6ef814610609578063bc3dfaf11461066e578063ca5e1f8d14610699578063f2fde38b146106c8575b600080fd5b3480156100f757600080fd5b5061010061070b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014e57600080fd5b50610157610731565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101a557600080fd5b506101ae610757565b005b3480156101bc57600080fd5b50610211600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107cf565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561023b57600080fd5b506103196004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506107ff565b005b34801561032757600080fd5b50610330610959565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561037e57600080fd5b5061039d6004803603810190808035906020019092919050505061097f565b005b3480156103ab57600080fd5b506103e0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ac3565b005b3480156103ee57600080fd5b506103f7610b62565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561044557600080fd5b5061044e610b88565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561049c57600080fd5b506105a160048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035151590602001909291908035600019169060200190929190803560ff16906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610bad565b005b3480156105af57600080fd5b5061060760048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611b0b565b005b34801561061557600080fd5b50610658600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050611c92565b6040518082815260200191505060405180910390f35b34801561067a57600080fd5b50610683611cb7565b6040518082815260200191505060405180910390f35b3480156106a557600080fd5b506106ae611cbd565b604051808215151515815260200191505060405180910390f35b3480156106d457600080fd5b50610709600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cd0565b005b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107b257600080fd5b6001600860006101000a81548160ff021916908315150217905550565b60076020528160005260406000206020528060005260406000206000915091509054906101000a900461ffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561085c57600080fd5b600090505b835181101561095357818181518110151561087857fe5b9060200190602002015160076000868481518110151561089457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085848151811015156108e857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548161ffff021916908361ffff1602179055508080600101915050610861565b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359028853866040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050608060405180830381600087803b158015610a1657600080fd5b505af1158015610a2a573d6000803e3d6000fd5b505050506040513d6080811015610a4057600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919050505093509350935093508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ab157600080fd5b610abc856001611daa565b5050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b1e57600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060001515600860009054906101000a900460ff161515148015610c035750866000815181101515610bdd57fe5b90602001906020020151876004815181101515610bf657fe5b9060200190602002015111155b8015610c185750610c178888888787612540565b5b8015610ce257506000600760008a6000815181101515610c3457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a6001815181101515610c8957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff1661ffff16115b1515610ced57600080fd5b8515610d4a57876002815181101515610d0257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d4557600080fd5b610d9d565b876003815181101515610d5957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d9c57600080fd5b5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637afc964c896000815181101515610dea57fe5b906020019060200201518a6001815181101515610e0357fe5b906020019060200201518a6004815181101515610e1c57fe5b90602001906020020151600760008e6000815181101515610e3957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e6001815181101515610e8e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff166040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018261ffff1661ffff168152602001945050505050602060405180830381600087803b158015610fa857600080fd5b505af1158015610fbc573d6000803e3d6000fd5b505050506040513d6020811015610fd257600080fd5b8101908080519060200190929190505050915060008214151515610ff557600080fd5b611142620186a0611134600760008c600081518110151561101257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c600181518110151561106757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff1661ffff1661112660646111188d60028151811015156110d557fe5b9060200190602002015161110a8f60018151811015156110f157fe5b906020019060200201518b612f8b90919063ffffffff16565b612f8b90919063ffffffff16565b612f8b90919063ffffffff16565b612fc990919063ffffffff16565b612fc990919063ffffffff16565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2838a7389600081518110151561119157fe5b906020019060200201518a60028151811015156111aa57fe5b906020019060200201516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561126557600080fd5b505af1158015611279573d6000803e3d6000fd5b505050506040513d602081101561128f57600080fd5b81019080805190602001909291905050506112b38284612ff390919063ffffffff16565b111580156114345750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2838a7389600181518110151561130957fe5b906020019060200201518a600381518110151561132257fe5b906020019060200201516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156113dd57600080fd5b505af11580156113f1573d6000803e3d6000fd5b505050506040513d602081101561140757600080fd5b810190808051906020019092919050505087600481518110151561142757fe5b9060200190602002015111155b151561143f57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c9689600381518110151561148c57fe5b906020019060200201518a60018151811015156114a557fe5b906020019060200201518a60048151811015156114be57fe5b9060200190602002015160006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b15801561158d57600080fd5b505af11580156115a1573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c968960028151811015156115f257fe5b906020019060200201518a600181518110151561160b57fe5b906020019060200201518a600481518110151561162457fe5b9060200190602002015160016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b1580156116f357600080fd5b505af1158015611707573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c1de44e189600081518110151561175857fe5b906020019060200201518a600181518110151561177157fe5b906020019060200201518b600281518110151561178a57fe5b906020019060200201518c60038151811015156117a357fe5b906020019060200201518c60048151811015156117bc57fe5b9060200190602002015188888f60028151811015156117d757fe5b906020019060200201516040518963ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183815260200182815260200198505050505050505050602060405180830381600087803b15801561191457600080fd5b505af1158015611928573d6000803e3d6000fd5b505050506040513d602081101561193e57600080fd5b8101908080519060200190929190505050151561195a57600080fd5b7fb22aa78ea09a55aa3481a2ccab361989913e9aa97cd6d9cbce9a7666279758a88589600081518110151561198b57fe5b906020019060200201518a60018151811015156119a457fe5b906020019060200201518b60028151811015156119bd57fe5b906020019060200201518c60038151811015156119d657fe5b9060200190602002015187878e60048151811015156119f157fe5b9060200190602002015142604051808a600019166000191681526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001838152602001828152602001995050505050505050505060405180910390a15050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b6857600080fd5b600090505b8151811015611c8e57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663264a8d2e8383815181101515611bc257fe5b906020019060200201516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015611c1e57600080fd5b505af1158015611c32573d6000803e3d6000fd5b505050506040513d6020811015611c4857600080fd5b810190808051906020019092919050505015611c8157611c808282815181101515611c6f57fe5b906020019060200201516000611daa565b5b8080600101915050611b6d565b5050565b6006602052816000526040600020602052806000526040600020600091509150505481565b60055481565b600860009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d2b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611d6757600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600080600080600080600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663590288538f6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050608060405180830381600087803b158015611e4d57600080fd5b505af1158015611e61573d6000803e3d6000fd5b505050506040513d6080811015611e7757600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291905050509b509b509b509b50600073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614151515611eea57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2838a738c8c6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015611fdb57600080fd5b505af1158015611fef573d6000803e3d6000fd5b505050506040513d602081101561200557600080fd5b81019080805190602001909291905050509750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663104584548f8a6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018281526020019250505060a060405180830381600087803b1580156120b157600080fd5b505af11580156120c5573d6000803e3d6000fd5b505050506040513d60a08110156120db57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050965096509650965096506000871415151561212e57600080fd5b61213c8c8c8c8c8789613014565b9150600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2838a738c8c6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561222f57600080fd5b505af1158015612243573d6000803e3d6000fd5b505050506040513d602081101561225957600080fd5b81019080805190602001909291905050509750612277828d8d613785565b90506122b68c8c8c8c8988871061228e5788612290565b865b8d8f1161229d578e61229f565b8d5b8a8a116122ad5760006122b1565b8a8a035b61385a565b8c156123f8577f0889e4048b5afe70ea6de8592cfc535605f946ca5e5f1743b2b22f83e00d7eaf8e8d8d8d8d888c8c8f8a42604051808c81526020018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018781526020018681526020018581526020018481526020018381526020018281526020019b50505050505050505050505060405180910390a1612530565b7fee77b01bcc1a819fe9856426fe7572f4583ed925dc8e2766babe3e12258fefbf8e8d8d8d8d888c8c8f8a42604051808c81526020018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018781526020018681526020018581526020018481526020018381526020018281526020019b50505050505050505050505060405180910390a15b5050505050505050505050505050565b60008060008087600381518110151561255557fe5b90602001906020020151421115151561256d57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a2974038a60008151811015156125ba57fe5b906020019060200201516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561264257600080fd5b505af1158015612656573d6000803e3d6000fd5b505050506040513d602081101561266c57600080fd5b81019080805190602001909291905050509250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a2974038a60018151811015156126cc57fe5b906020019060200201516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561275457600080fd5b505af1158015612768573d6000803e3d6000fd5b505050506040513d602081101561277e57600080fd5b810190808051906020019092919050505091508860028151811015156127a057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561282957508860038151811015156127ef57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612879575088600281518110151561283f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128c9575088600381518110151561288f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15156128d457600080fd5b308960008151811015156128e457fe5b906020019060200201518a60018151811015156128fd57fe5b906020019060200201518a600181518110151561291657fe5b906020019060200201518b600281518110151561292f57fe5b906020019060200201518c600381518110151561294857fe5b90602001906020020151604051602001808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140184815260200183815260200182815260200196505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515612a7a5780518252602082019150602081019050602083039250612a55565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905086612acc57886002815181101515612abd57fe5b90602001906020020151612ae6565b886003815181101515612adb57fe5b906020019060200201515b73ffffffffffffffffffffffffffffffffffffffff1660018288886000815181101515612b0f57fe5b90602001906020020151896001815181101515612b2857fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015612ba3573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16141515612bcf57600080fd5b8615612daa57876000815181101515612be457fe5b90602001906020020151612c89896004815181101515612c0057fe5b90602001906020020151600660008d6003815181101515612c1d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000856000191660001916815260200190815260200160002054612ff390919063ffffffff16565b11151515612c9657600080fd5b612d31886004815181101515612ca857fe5b90602001906020020151600660008c6003815181101515612cc557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002054612ff390919063ffffffff16565b600660008b6003815181101515612d4457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002081905550612f7b565b876000815181101515612db957fe5b90602001906020020151612e5e896004815181101515612dd557fe5b90602001906020020151600660008d6002815181101515612df257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000856000191660001916815260200190815260200160002054612ff390919063ffffffff16565b11151515612e6b57600080fd5b612f06886004815181101515612e7d57fe5b90602001906020020151600660008c6002815181101515612e9a57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002054612ff390919063ffffffff16565b600660008b6002815181101515612f1957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360001916600019168152602001908152602001600020819055505b6001935050505095945050505050565b6000806000841415612fa05760009150612fc2565b8284029050828482811515612fb157fe5b04141515612fbe57600080fd5b8091505b5092915050565b600080600083111515612fdb57600080fd5b8284811515612fe657fe5b0490508091505092915050565b600080828401905083811015151561300a57600080fd5b8091505092915050565b60008060008060008060008060009650600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a2974038e6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156130e157600080fd5b505af11580156130f5573d6000803e3d6000fd5b505050506040513d602081101561310b57600080fd5b81019080805190602001909291905050509550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2838a738e886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561320f57600080fd5b505af1158015613223573d6000803e3d6000fd5b505050506040513d602081101561323957600080fd5b81019080805190602001909291905050509450600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c07b2ca8f8f6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001925050506040805180830381600087803b15801561333c57600080fd5b505af1158015613350573d6000803e3d6000fd5b505050506040513d604081101561336657600080fd5b810190808051906020019092919080519060200190929190505050935093506133aa8461339c858d612f8b90919063ffffffff16565b612fc990919063ffffffff16565b915081891180156133bb5750600085115b1561374a576133d3828a614a3090919063ffffffff16565b9050888510156133e1578490505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96878f8460006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b1580156134e757600080fd5b505af11580156134fb573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c968d8f8460016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b15801561360557600080fd5b505af1158015613619573d6000803e3d6000fd5b505050507ff069b0bcbba7c248c8393101cb8c3f02c2bef79af362e9ded7bdda48f59f5d798e8e8e8e8d8642604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200197505050505050505060405180910390a1613747818a614a3090919063ffffffff16565b98505b61376f83613761868c612f8b90919063ffffffff16565b612fc990919063ffffffff16565b9650869750505050505050509695505050505050565b60006138516064613843606460046064600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff160361ffff1681151561382e57fe5b040161ffff1687612f8b90919063ffffffff16565b612fc990919063ffffffff16565b90509392505050565b600080606461387460055488612f8b90919063ffffffff16565b81151561387d57fe5b049150600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96898c6138d38a8a612ff390919063ffffffff16565b60006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b15801561399857600080fd5b505af11580156139ac573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96888c613a03868b614a3090919063ffffffff16565b60016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b158015613ac857600080fd5b505af1158015613adc573d6000803e3d6000fd5b505050506000841115613d2657600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96898b8760006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b158015613bef57600080fd5b505af1158015613c03573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96888b8760016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b158015613d0d57600080fd5b505af1158015613d21573d6000803e3d6000fd5b505050505b60008311156146dd5782600a600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2838a738d600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015613e4557600080fd5b505af1158015613e59573d6000803e3d6000fd5b505050506040513d6020811015613e6f57600080fd5b8101908080519060200190929190505050811515613e8957fe5b04111561420a57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168c8660006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b158015613fb857600080fd5b505af1158015613fcc573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96888c8660016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b1580156140d657600080fd5b505af11580156140ea573d6000803e3d6000fd5b505050507f3d9d67d7eecf0bdf2a451e4c7f86452d396629333c1ff4e173b4485ee7a0928d8a8a8a8a878842604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200197505050505050505060405180910390a16146dc565b600a600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2838a738c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561431f57600080fd5b505af1158015614333573d6000803e3d6000fd5b505050506040513d602081101561434957600080fd5b810190808051906020019092919050505081151561436357fe5b049050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168c8460006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b15801561448e57600080fd5b505af11580156144a2573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96888c8460016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b1580156145ac57600080fd5b505af11580156145c0573d6000803e3d6000fd5b505050507f3d9d67d7eecf0bdf2a451e4c7f86452d396629333c1ff4e173b4485ee7a0928d8a8a8a8a878642604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200197505050505050505060405180910390a15b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96888c8860016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b1580156147e357600080fd5b505af11580156147f7573d6000803e3d6000fd5b50505050600073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16141561491257600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fb2e379a88846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156148f557600080fd5b505af1158015614909573d6000803e3d6000fd5b50505050614a24565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663757060a5888c856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015614a0b57600080fd5b505af1158015614a1f573d6000803e3d6000fd5b505050505b50505050505050505050565b6000828211151515614a4157600080fd5b8183039050929150505600a165627a7a72305820b4ffeaa5a3996c0cc81778e808d5c5bbc7fd5bac2c0abb6a7b7ae91bfca918cb0029000000000000000000000000e4e3627034a97b75d899ee7525d446bf2d42ad6600000000000000000000000019350aa51f45965b783ec8e40538d4b88d24698a000000000000000000000000aea870ca4ad2ee820050124a7580e78176d9c806000000000000000000000000611ce695290729805e138c9c14dbddf132e76de3000000000000000000000000000000000000000000000000000000000000000a

Deployed Bytecode

0x6080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630fc77e2d146100eb57806330b2079b14610142578063313cb4dd14610199578063365e78f7146101b05780634e3a67741461022f57806357a299b91461031b57806374edab5a14610372578063898786ac1461039f5780638b7afe2e146103e25780638da5cb5b146104395780639353d0f1146104905780639dab5308146105a3578063a2ba6ef814610609578063bc3dfaf11461066e578063ca5e1f8d14610699578063f2fde38b146106c8575b600080fd5b3480156100f757600080fd5b5061010061070b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014e57600080fd5b50610157610731565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101a557600080fd5b506101ae610757565b005b3480156101bc57600080fd5b50610211600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107cf565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561023b57600080fd5b506103196004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506107ff565b005b34801561032757600080fd5b50610330610959565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561037e57600080fd5b5061039d6004803603810190808035906020019092919050505061097f565b005b3480156103ab57600080fd5b506103e0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ac3565b005b3480156103ee57600080fd5b506103f7610b62565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561044557600080fd5b5061044e610b88565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561049c57600080fd5b506105a160048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035151590602001909291908035600019169060200190929190803560ff16906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610bad565b005b3480156105af57600080fd5b5061060760048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611b0b565b005b34801561061557600080fd5b50610658600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050611c92565b6040518082815260200191505060405180910390f35b34801561067a57600080fd5b50610683611cb7565b6040518082815260200191505060405180910390f35b3480156106a557600080fd5b506106ae611cbd565b604051808215151515815260200191505060405180910390f35b3480156106d457600080fd5b50610709600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cd0565b005b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107b257600080fd5b6001600860006101000a81548160ff021916908315150217905550565b60076020528160005260406000206020528060005260406000206000915091509054906101000a900461ffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561085c57600080fd5b600090505b835181101561095357818181518110151561087857fe5b9060200190602002015160076000868481518110151561089457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085848151811015156108e857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548161ffff021916908361ffff1602179055508080600101915050610861565b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359028853866040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050608060405180830381600087803b158015610a1657600080fd5b505af1158015610a2a573d6000803e3d6000fd5b505050506040513d6080811015610a4057600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919050505093509350935093508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ab157600080fd5b610abc856001611daa565b5050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b1e57600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060001515600860009054906101000a900460ff161515148015610c035750866000815181101515610bdd57fe5b90602001906020020151876004815181101515610bf657fe5b9060200190602002015111155b8015610c185750610c178888888787612540565b5b8015610ce257506000600760008a6000815181101515610c3457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a6001815181101515610c8957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff1661ffff16115b1515610ced57600080fd5b8515610d4a57876002815181101515610d0257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d4557600080fd5b610d9d565b876003815181101515610d5957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d9c57600080fd5b5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637afc964c896000815181101515610dea57fe5b906020019060200201518a6001815181101515610e0357fe5b906020019060200201518a6004815181101515610e1c57fe5b90602001906020020151600760008e6000815181101515610e3957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e6001815181101515610e8e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff166040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018261ffff1661ffff168152602001945050505050602060405180830381600087803b158015610fa857600080fd5b505af1158015610fbc573d6000803e3d6000fd5b505050506040513d6020811015610fd257600080fd5b8101908080519060200190929190505050915060008214151515610ff557600080fd5b611142620186a0611134600760008c600081518110151561101257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c600181518110151561106757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff1661ffff1661112660646111188d60028151811015156110d557fe5b9060200190602002015161110a8f60018151811015156110f157fe5b906020019060200201518b612f8b90919063ffffffff16565b612f8b90919063ffffffff16565b612f8b90919063ffffffff16565b612fc990919063ffffffff16565b612fc990919063ffffffff16565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2838a7389600081518110151561119157fe5b906020019060200201518a60028151811015156111aa57fe5b906020019060200201516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561126557600080fd5b505af1158015611279573d6000803e3d6000fd5b505050506040513d602081101561128f57600080fd5b81019080805190602001909291905050506112b38284612ff390919063ffffffff16565b111580156114345750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2838a7389600181518110151561130957fe5b906020019060200201518a600381518110151561132257fe5b906020019060200201516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156113dd57600080fd5b505af11580156113f1573d6000803e3d6000fd5b505050506040513d602081101561140757600080fd5b810190808051906020019092919050505087600481518110151561142757fe5b9060200190602002015111155b151561143f57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c9689600381518110151561148c57fe5b906020019060200201518a60018151811015156114a557fe5b906020019060200201518a60048151811015156114be57fe5b9060200190602002015160006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b15801561158d57600080fd5b505af11580156115a1573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c968960028151811015156115f257fe5b906020019060200201518a600181518110151561160b57fe5b906020019060200201518a600481518110151561162457fe5b9060200190602002015160016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b1580156116f357600080fd5b505af1158015611707573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c1de44e189600081518110151561175857fe5b906020019060200201518a600181518110151561177157fe5b906020019060200201518b600281518110151561178a57fe5b906020019060200201518c60038151811015156117a357fe5b906020019060200201518c60048151811015156117bc57fe5b9060200190602002015188888f60028151811015156117d757fe5b906020019060200201516040518963ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183815260200182815260200198505050505050505050602060405180830381600087803b15801561191457600080fd5b505af1158015611928573d6000803e3d6000fd5b505050506040513d602081101561193e57600080fd5b8101908080519060200190929190505050151561195a57600080fd5b7fb22aa78ea09a55aa3481a2ccab361989913e9aa97cd6d9cbce9a7666279758a88589600081518110151561198b57fe5b906020019060200201518a60018151811015156119a457fe5b906020019060200201518b60028151811015156119bd57fe5b906020019060200201518c60038151811015156119d657fe5b9060200190602002015187878e60048151811015156119f157fe5b9060200190602002015142604051808a600019166000191681526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001838152602001828152602001995050505050505050505060405180910390a15050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b6857600080fd5b600090505b8151811015611c8e57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663264a8d2e8383815181101515611bc257fe5b906020019060200201516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015611c1e57600080fd5b505af1158015611c32573d6000803e3d6000fd5b505050506040513d6020811015611c4857600080fd5b810190808051906020019092919050505015611c8157611c808282815181101515611c6f57fe5b906020019060200201516000611daa565b5b8080600101915050611b6d565b5050565b6006602052816000526040600020602052806000526040600020600091509150505481565b60055481565b600860009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d2b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611d6757600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600080600080600080600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663590288538f6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050608060405180830381600087803b158015611e4d57600080fd5b505af1158015611e61573d6000803e3d6000fd5b505050506040513d6080811015611e7757600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291905050509b509b509b509b50600073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614151515611eea57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2838a738c8c6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015611fdb57600080fd5b505af1158015611fef573d6000803e3d6000fd5b505050506040513d602081101561200557600080fd5b81019080805190602001909291905050509750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663104584548f8a6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018281526020019250505060a060405180830381600087803b1580156120b157600080fd5b505af11580156120c5573d6000803e3d6000fd5b505050506040513d60a08110156120db57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050965096509650965096506000871415151561212e57600080fd5b61213c8c8c8c8c8789613014565b9150600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2838a738c8c6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561222f57600080fd5b505af1158015612243573d6000803e3d6000fd5b505050506040513d602081101561225957600080fd5b81019080805190602001909291905050509750612277828d8d613785565b90506122b68c8c8c8c8988871061228e5788612290565b865b8d8f1161229d578e61229f565b8d5b8a8a116122ad5760006122b1565b8a8a035b61385a565b8c156123f8577f0889e4048b5afe70ea6de8592cfc535605f946ca5e5f1743b2b22f83e00d7eaf8e8d8d8d8d888c8c8f8a42604051808c81526020018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018781526020018681526020018581526020018481526020018381526020018281526020019b50505050505050505050505060405180910390a1612530565b7fee77b01bcc1a819fe9856426fe7572f4583ed925dc8e2766babe3e12258fefbf8e8d8d8d8d888c8c8f8a42604051808c81526020018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018781526020018681526020018581526020018481526020018381526020018281526020019b50505050505050505050505060405180910390a15b5050505050505050505050505050565b60008060008087600381518110151561255557fe5b90602001906020020151421115151561256d57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a2974038a60008151811015156125ba57fe5b906020019060200201516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561264257600080fd5b505af1158015612656573d6000803e3d6000fd5b505050506040513d602081101561266c57600080fd5b81019080805190602001909291905050509250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a2974038a60018151811015156126cc57fe5b906020019060200201516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561275457600080fd5b505af1158015612768573d6000803e3d6000fd5b505050506040513d602081101561277e57600080fd5b810190808051906020019092919050505091508860028151811015156127a057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561282957508860038151811015156127ef57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612879575088600281518110151561283f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128c9575088600381518110151561288f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15156128d457600080fd5b308960008151811015156128e457fe5b906020019060200201518a60018151811015156128fd57fe5b906020019060200201518a600181518110151561291657fe5b906020019060200201518b600281518110151561292f57fe5b906020019060200201518c600381518110151561294857fe5b90602001906020020151604051602001808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140184815260200183815260200182815260200196505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515612a7a5780518252602082019150602081019050602083039250612a55565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905086612acc57886002815181101515612abd57fe5b90602001906020020151612ae6565b886003815181101515612adb57fe5b906020019060200201515b73ffffffffffffffffffffffffffffffffffffffff1660018288886000815181101515612b0f57fe5b90602001906020020151896001815181101515612b2857fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015612ba3573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16141515612bcf57600080fd5b8615612daa57876000815181101515612be457fe5b90602001906020020151612c89896004815181101515612c0057fe5b90602001906020020151600660008d6003815181101515612c1d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000856000191660001916815260200190815260200160002054612ff390919063ffffffff16565b11151515612c9657600080fd5b612d31886004815181101515612ca857fe5b90602001906020020151600660008c6003815181101515612cc557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002054612ff390919063ffffffff16565b600660008b6003815181101515612d4457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002081905550612f7b565b876000815181101515612db957fe5b90602001906020020151612e5e896004815181101515612dd557fe5b90602001906020020151600660008d6002815181101515612df257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000856000191660001916815260200190815260200160002054612ff390919063ffffffff16565b11151515612e6b57600080fd5b612f06886004815181101515612e7d57fe5b90602001906020020151600660008c6002815181101515612e9a57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002054612ff390919063ffffffff16565b600660008b6002815181101515612f1957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360001916600019168152602001908152602001600020819055505b6001935050505095945050505050565b6000806000841415612fa05760009150612fc2565b8284029050828482811515612fb157fe5b04141515612fbe57600080fd5b8091505b5092915050565b600080600083111515612fdb57600080fd5b8284811515612fe657fe5b0490508091505092915050565b600080828401905083811015151561300a57600080fd5b8091505092915050565b60008060008060008060008060009650600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a2974038e6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156130e157600080fd5b505af11580156130f5573d6000803e3d6000fd5b505050506040513d602081101561310b57600080fd5b81019080805190602001909291905050509550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2838a738e886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561320f57600080fd5b505af1158015613223573d6000803e3d6000fd5b505050506040513d602081101561323957600080fd5b81019080805190602001909291905050509450600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c07b2ca8f8f6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001925050506040805180830381600087803b15801561333c57600080fd5b505af1158015613350573d6000803e3d6000fd5b505050506040513d604081101561336657600080fd5b810190808051906020019092919080519060200190929190505050935093506133aa8461339c858d612f8b90919063ffffffff16565b612fc990919063ffffffff16565b915081891180156133bb5750600085115b1561374a576133d3828a614a3090919063ffffffff16565b9050888510156133e1578490505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96878f8460006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b1580156134e757600080fd5b505af11580156134fb573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c968d8f8460016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b15801561360557600080fd5b505af1158015613619573d6000803e3d6000fd5b505050507ff069b0bcbba7c248c8393101cb8c3f02c2bef79af362e9ded7bdda48f59f5d798e8e8e8e8d8642604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200197505050505050505060405180910390a1613747818a614a3090919063ffffffff16565b98505b61376f83613761868c612f8b90919063ffffffff16565b612fc990919063ffffffff16565b9650869750505050505050509695505050505050565b60006138516064613843606460046064600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff160361ffff1681151561382e57fe5b040161ffff1687612f8b90919063ffffffff16565b612fc990919063ffffffff16565b90509392505050565b600080606461387460055488612f8b90919063ffffffff16565b81151561387d57fe5b049150600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96898c6138d38a8a612ff390919063ffffffff16565b60006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b15801561399857600080fd5b505af11580156139ac573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96888c613a03868b614a3090919063ffffffff16565b60016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b158015613ac857600080fd5b505af1158015613adc573d6000803e3d6000fd5b505050506000841115613d2657600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96898b8760006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b158015613bef57600080fd5b505af1158015613c03573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96888b8760016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b158015613d0d57600080fd5b505af1158015613d21573d6000803e3d6000fd5b505050505b60008311156146dd5782600a600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2838a738d600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015613e4557600080fd5b505af1158015613e59573d6000803e3d6000fd5b505050506040513d6020811015613e6f57600080fd5b8101908080519060200190929190505050811515613e8957fe5b04111561420a57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168c8660006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b158015613fb857600080fd5b505af1158015613fcc573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96888c8660016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b1580156140d657600080fd5b505af11580156140ea573d6000803e3d6000fd5b505050507f3d9d67d7eecf0bdf2a451e4c7f86452d396629333c1ff4e173b4485ee7a0928d8a8a8a8a878842604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200197505050505050505060405180910390a16146dc565b600a600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2838a738c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561431f57600080fd5b505af1158015614333573d6000803e3d6000fd5b505050506040513d602081101561434957600080fd5b810190808051906020019092919050505081151561436357fe5b049050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168c8460006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b15801561448e57600080fd5b505af11580156144a2573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96888c8460016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b1580156145ac57600080fd5b505af11580156145c0573d6000803e3d6000fd5b505050507f3d9d67d7eecf0bdf2a451e4c7f86452d396629333c1ff4e173b4485ee7a0928d8a8a8a8a878642604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200197505050505050505060405180910390a15b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368db6c96888c8860016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b1580156147e357600080fd5b505af11580156147f7573d6000803e3d6000fd5b50505050600073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16141561491257600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fb2e379a88846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156148f557600080fd5b505af1158015614909573d6000803e3d6000fd5b50505050614a24565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663757060a5888c856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015614a0b57600080fd5b505af1158015614a1f573d6000803e3d6000fd5b505050505b50505050505050505050565b6000828211151515614a4157600080fd5b8183039050929150505600a165627a7a72305820b4ffeaa5a3996c0cc81778e808d5c5bbc7fd5bac2c0abb6a7b7ae91bfca918cb0029

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

000000000000000000000000e4e3627034a97b75d899ee7525d446bf2d42ad6600000000000000000000000019350aa51f45965b783ec8e40538d4b88d24698a000000000000000000000000aea870ca4ad2ee820050124a7580e78176d9c806000000000000000000000000611ce695290729805e138c9c14dbddf132e76de3000000000000000000000000000000000000000000000000000000000000000a

-----Decoded View---------------
Arg [0] : _owner (address): 0xe4e3627034a97b75d899eE7525D446bF2D42AD66
Arg [1] : _accountCost (address): 0x19350AA51f45965B783EC8e40538D4b88D24698a
Arg [2] : _contractLoanLogic (address): 0xAea870CA4aD2ee820050124A7580e78176D9C806
Arg [3] : _contractMarketData (address): 0x611ce695290729805e138C9c14dBddf132E76De3
Arg [4] : _commissionRatio (uint256): 10

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000e4e3627034a97b75d899ee7525d446bf2d42ad66
Arg [1] : 00000000000000000000000019350aa51f45965b783ec8e40538d4b88d24698a
Arg [2] : 000000000000000000000000aea870ca4ad2ee820050124a7580e78176d9c806
Arg [3] : 000000000000000000000000611ce695290729805e138c9c14dbddf132e76de3
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000a


Swarm Source

bzzr://b4ffeaa5a3996c0cc81778e808d5c5bbc7fd5bac2c0abb6a7b7ae91bfca918cb

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.