ERC-20
Overview
Max Total Supply
330,000,000 FST
Holders
8,788
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
FunderSmartToken
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
Yes with 330000000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-07-31 */ pragma solidity ^0.4.24; pragma experimental "v0.5.0"; pragma experimental ABIEncoderV2; library AddressExtension { function isValid(address _address) internal pure returns (bool) { return 0 != _address; } function isAccount(address _address) internal view returns (bool result) { assembly { result := iszero(extcodesize(_address)) } } function toBytes(address _address) internal pure returns (bytes b) { assembly { let m := mload(0x40) mstore(add(m, 20), xor(0x140000000000000000000000000000000000000000, _address)) mstore(0x40, add(m, 52)) b := m } } } library Math { struct Fraction { uint256 numerator; uint256 denominator; } function isPositive(Fraction memory fraction) internal pure returns (bool) { return fraction.numerator > 0 && fraction.denominator > 0; } function mul(uint256 a, uint256 b) internal pure returns (uint256 r) { r = a * b; require((a == 0) || (r / a == b)); } function div(uint256 a, uint256 b) internal pure returns (uint256 r) { r = a / b; } function sub(uint256 a, uint256 b) internal pure returns (uint256 r) { require((r = a - b) <= a); } function add(uint256 a, uint256 b) internal pure returns (uint256 r) { require((r = a + b) >= a); } function min(uint256 x, uint256 y) internal pure returns (uint256 r) { return x <= y ? x : y; } function max(uint256 x, uint256 y) internal pure returns (uint256 r) { return x >= y ? x : y; } function mulDiv(uint256 value, uint256 m, uint256 d) internal pure returns (uint256 r) { r = value * m; if (r / value == m) { r /= d; } else { r = mul(value / d, m); } } function mulDivCeil(uint256 value, uint256 m, uint256 d) internal pure returns (uint256 r) { r = value * m; if (r / value == m) { if (r % d == 0) { r /= d; } else { r = (r / d) + 1; } } else { r = mul(value / d, m); if (value % d != 0) { r += 1; } } } function mul(uint256 x, Fraction memory f) internal pure returns (uint256) { return mulDiv(x, f.numerator, f.denominator); } function mulCeil(uint256 x, Fraction memory f) internal pure returns (uint256) { return mulDivCeil(x, f.numerator, f.denominator); } function div(uint256 x, Fraction memory f) internal pure returns (uint256) { return mulDiv(x, f.denominator, f.numerator); } function divCeil(uint256 x, Fraction memory f) internal pure returns (uint256) { return mulDivCeil(x, f.denominator, f.numerator); } function mul(Fraction memory x, Fraction memory y) internal pure returns (Math.Fraction) { return Math.Fraction({ numerator: mul(x.numerator, y.numerator), denominator: mul(x.denominator, y.denominator) }); } } contract FsTKAuthority { function isAuthorized(address sender, address _contract, bytes data) public view returns (bool); function isApproved(bytes32 hash, uint256 approveTime, bytes approveToken) public view returns (bool); function validate() public pure returns (bytes4); } contract Authorizable { event SetFsTKAuthority(FsTKAuthority indexed _address); modifier onlyFsTKAuthorized { require(fstkAuthority.isAuthorized(msg.sender, this, msg.data)); _; } modifier onlyFsTKApproved(bytes32 hash, uint256 approveTime, bytes approveToken) { require(fstkAuthority.isApproved(hash, approveTime, approveToken)); _; } FsTKAuthority internal fstkAuthority; constructor(FsTKAuthority _fstkAuthority) internal { fstkAuthority = _fstkAuthority; } function setFsTKAuthority(FsTKAuthority _fstkAuthority) public onlyFsTKAuthorized { require(_fstkAuthority.validate() == _fstkAuthority.validate.selector); emit SetFsTKAuthority(fstkAuthority = _fstkAuthority); } } contract ERC20 { event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); function balanceOf(address owner) public view returns (uint256); function allowance(address owner, address spender) public view returns (uint256); function transfer(address to, uint256 value) public returns (bool); function transferFrom(address from, address to, uint256 value) public returns (bool); function approve(address spender, uint256 value) public returns (bool); } contract SecureERC20 is ERC20 { event SetERC20ApproveChecking(bool approveChecking); function approve(address spender, uint256 expectedValue, uint256 newValue) public returns (bool); function increaseAllowance(address spender, uint256 value) public returns (bool); function decreaseAllowance(address spender, uint256 value, bool strict) public returns (bool); function setERC20ApproveChecking(bool approveChecking) public; } contract FsTKToken { enum DelegateMode { PublicMsgSender, PublicTxOrigin, PrivateMsgSender, PrivateTxOrigin } event Consume(address indexed from, uint256 value, bytes32 challenge); event IncreaseNonce(address indexed from, uint256 nonce); event SetupDirectDebit(address indexed debtor, address indexed receiver, DirectDebitInfo info); event TerminateDirectDebit(address indexed debtor, address indexed receiver); event WithdrawDirectDebitFailure(address indexed debtor, address indexed receiver); event SetMetadata(string metadata); event SetLiquid(bool liquidity); event SetDelegate(bool isDelegateEnable); event SetDirectDebit(bool isDirectDebitEnable); struct DirectDebitInfo { uint256 amount; uint256 startTime; uint256 interval; } struct DirectDebit { DirectDebitInfo info; uint256 epoch; } struct Instrument { uint256 allowance; DirectDebit directDebit; } struct Account { uint256 balance; uint256 nonce; mapping (address => Instrument) instruments; } function spendableAllowance(address owner, address spender) public view returns (uint256); function transfer(uint256[] data) public returns (bool); function transferAndCall(address to, uint256 value, bytes data) public payable returns (bool); function nonceOf(address owner) public view returns (uint256); function increaseNonce() public returns (bool); function delegateTransferAndCall( uint256 nonce, uint256 fee, uint256 gasAmount, address to, uint256 value, bytes data, DelegateMode mode, uint8 v, bytes32 r, bytes32 s ) public returns (bool); function directDebit(address debtor, address receiver) public view returns (DirectDebit); function setupDirectDebit(address receiver, DirectDebitInfo info) public returns (bool); function terminateDirectDebit(address receiver) public returns (bool); function withdrawDirectDebit(address debtor) public returns (bool); function withdrawDirectDebit(address[] debtors, bool strict) public returns (bool); } contract ERC20Like is SecureERC20, FsTKToken { using AddressExtension for address; using Math for uint256; modifier liquid { require(isLiquid); _; } modifier canUseDirectDebit { require(isDirectDebitEnable); _; } modifier canDelegate { require(isDelegateEnable); _; } bool public erc20ApproveChecking; bool public isLiquid = true; bool public isDelegateEnable; bool public isDirectDebitEnable; string public metadata; mapping(address => Account) internal accounts; constructor(string _metadata) public { metadata = _metadata; } function balanceOf(address owner) public view returns (uint256) { return accounts[owner].balance; } function allowance(address owner, address spender) public view returns (uint256) { return accounts[owner].instruments[spender].allowance; } function transfer(address to, uint256 value) public liquid returns (bool) { Account storage senderAccount = accounts[msg.sender]; senderAccount.balance = senderAccount.balance.sub(value); accounts[to].balance += value; emit Transfer(msg.sender, to, value); return true; } function transferFrom(address from, address to, uint256 value) public liquid returns (bool) { Account storage fromAccount = accounts[from]; Instrument storage senderInstrument = fromAccount.instruments[msg.sender]; fromAccount.balance = fromAccount.balance.sub(value); senderInstrument.allowance = senderInstrument.allowance.sub(value); accounts[to].balance += value; emit Transfer(from, to, value); return true; } function approve(address spender, uint256 value) public returns (bool) { Instrument storage spenderInstrument = accounts[msg.sender].instruments[spender]; if (erc20ApproveChecking) { require((value == 0) || (spenderInstrument.allowance == 0)); } emit Approval( msg.sender, spender, spenderInstrument.allowance = value ); return true; } function setERC20ApproveChecking(bool approveChecking) public { emit SetERC20ApproveChecking(erc20ApproveChecking = approveChecking); } function approve(address spender, uint256 expectedValue, uint256 newValue) public returns (bool) { Instrument storage spenderInstrument = accounts[msg.sender].instruments[spender]; require(spenderInstrument.allowance == expectedValue); emit Approval( msg.sender, spender, spenderInstrument.allowance = newValue ); return true; } function increaseAllowance(address spender, uint256 value) public returns (bool) { Instrument storage spenderInstrument = accounts[msg.sender].instruments[spender]; emit Approval( msg.sender, spender, spenderInstrument.allowance = spenderInstrument.allowance.add(value) ); return true; } function decreaseAllowance(address spender, uint256 value, bool strict) public returns (bool) { Instrument storage spenderInstrument = accounts[msg.sender].instruments[spender]; uint256 currentValue = spenderInstrument.allowance; uint256 newValue; if (strict) { newValue = currentValue.sub(value); } else if (value < currentValue) { newValue = currentValue - value; } emit Approval( msg.sender, spender, spenderInstrument.allowance = newValue ); return true; } function setMetadata0(string _metadata) internal { emit SetMetadata(metadata = _metadata); } function setLiquid0(bool liquidity) internal { emit SetLiquid(isLiquid = liquidity); } function setDelegate(bool delegate) public { emit SetDelegate(isDelegateEnable = delegate); } function setDirectDebit(bool directDebit) public { emit SetDirectDebit(isDirectDebitEnable = directDebit); } function spendableAllowance(address owner, address spender) public view returns (uint256) { Account storage ownerAccount = accounts[owner]; return Math.min( ownerAccount.instruments[spender].allowance, ownerAccount.balance ); } function transfer(uint256[] data) public liquid returns (bool) { Account storage senderAccount = accounts[msg.sender]; uint256 totalValue; for (uint256 i = 0; i < data.length; i++) { address receiver = address(data[i] >> 96); uint256 value = data[i] & 0xffffffffffffffffffffffff; totalValue = totalValue.add(value); accounts[receiver].balance += value; emit Transfer(msg.sender, receiver, value); } senderAccount.balance = senderAccount.balance.sub(totalValue); return true; } function transferAndCall( address to, uint256 value, bytes data ) public payable liquid returns (bool) { require( to != address(this) && data.length >= 68 && transfer(to, value) ); assembly { mstore(add(data, 36), value) mstore(add(data, 68), caller) } require(to.call.value(msg.value)(data)); return true; } function nonceOf(address owner) public view returns (uint256) { return accounts[owner].nonce; } function increaseNonce() public returns (bool) { emit IncreaseNonce(msg.sender, accounts[msg.sender].nonce += 1); } function delegateTransferAndCall( uint256 nonce, uint256 fee, uint256 gasAmount, address to, uint256 value, bytes data, DelegateMode mode, uint8 v, bytes32 r, bytes32 s ) public liquid canDelegate returns (bool) { require(to != address(this)); address signer; address relayer; if (mode == DelegateMode.PublicMsgSender) { signer = ecrecover( keccak256(abi.encodePacked(this, nonce, fee, gasAmount, to, value, data, mode, address(0))), v, r, s ); relayer = msg.sender; } else if (mode == DelegateMode.PublicTxOrigin) { signer = ecrecover( keccak256(abi.encodePacked(this, nonce, fee, gasAmount, to, value, data, mode, address(0))), v, r, s ); relayer = tx.origin; } else if (mode == DelegateMode.PrivateMsgSender) { signer = ecrecover( keccak256(abi.encodePacked(this, nonce, fee, gasAmount, to, value, data, mode, msg.sender)), v, r, s ); relayer = msg.sender; } else if (mode == DelegateMode.PrivateTxOrigin) { signer = ecrecover( keccak256(abi.encodePacked(this, nonce, fee, gasAmount, to, value, data, mode, tx.origin)), v, r, s ); relayer = tx.origin; } else { revert(); } Account storage signerAccount = accounts[signer]; require(nonce == signerAccount.nonce); emit IncreaseNonce(signer, signerAccount.nonce += 1); signerAccount.balance = signerAccount.balance.sub(value.add(fee)); accounts[to].balance += value; if (fee != 0) { accounts[relayer].balance += fee; emit Transfer(signer, relayer, fee); } if (!to.isAccount() && data.length >= 68) { assembly { mstore(add(data, 36), value) mstore(add(data, 68), signer) } if (to.call.gas(gasAmount)(data)) { emit Transfer(signer, to, value); } else { signerAccount.balance += value; accounts[to].balance -= value; } } else { emit Transfer(signer, to, value); } return true; } function directDebit(address debtor, address receiver) public view returns (DirectDebit) { return accounts[debtor].instruments[receiver].directDebit; } function setupDirectDebit( address receiver, DirectDebitInfo info ) public returns (bool) { accounts[msg.sender].instruments[receiver].directDebit = DirectDebit({ info: info, epoch: 0 }); emit SetupDirectDebit(msg.sender, receiver, info); return true; } function terminateDirectDebit(address receiver) public returns (bool) { delete accounts[msg.sender].instruments[receiver].directDebit; emit TerminateDirectDebit(msg.sender, receiver); return true; } function withdrawDirectDebit(address debtor) public liquid canUseDirectDebit returns (bool) { Account storage debtorAccount = accounts[debtor]; DirectDebit storage debit = debtorAccount.instruments[msg.sender].directDebit; uint256 epoch = (block.timestamp.sub(debit.info.startTime) / debit.info.interval).add(1); uint256 amount = epoch.sub(debit.epoch).mul(debit.info.amount); require(amount > 0); debtorAccount.balance = debtorAccount.balance.sub(amount); accounts[msg.sender].balance += amount; debit.epoch = epoch; emit Transfer(debtor, msg.sender, amount); return true; } function withdrawDirectDebit(address[] debtors, bool strict) public liquid canUseDirectDebit returns (bool result) { Account storage receiverAccount = accounts[msg.sender]; result = true; uint256 total; for (uint256 i = 0; i < debtors.length; i++) { address debtor = debtors[i]; Account storage debtorAccount = accounts[debtor]; DirectDebit storage debit = debtorAccount.instruments[msg.sender].directDebit; uint256 epoch = (block.timestamp.sub(debit.info.startTime) / debit.info.interval).add(1); uint256 amount = epoch.sub(debit.epoch).mul(debit.info.amount); require(amount > 0); uint256 debtorBalance = debtorAccount.balance; if (amount > debtorBalance) { if (strict) { revert(); } result = false; emit WithdrawDirectDebitFailure(debtor, msg.sender); } else { debtorAccount.balance = debtorBalance - amount; total += amount; debit.epoch = epoch; emit Transfer(debtor, msg.sender, amount); } } receiverAccount.balance += total; } } contract FsTKAllocation { function initialize(uint256 _vestedAmount) public; } contract FunderSmartToken is Authorizable, ERC20Like { string public constant name = "Funder Smart Token"; string public constant symbol = "FST"; uint256 public constant totalSupply = 330000000 ether; uint8 public constant decimals = 18; constructor( FsTKAuthority _fstkAuthority, string _metadata, address coldWallet, FsTKAllocation allocation ) Authorizable(_fstkAuthority) ERC20Like(_metadata) public { uint256 vestedAmount = totalSupply / 12; accounts[allocation].balance = vestedAmount; emit Transfer(address(0), allocation, vestedAmount); allocation.initialize(vestedAmount); uint256 releaseAmount = totalSupply - vestedAmount; accounts[coldWallet].balance = releaseAmount; emit Transfer(address(0), coldWallet, releaseAmount); } function setMetadata(string infoUrl) public onlyFsTKAuthorized { setMetadata0(infoUrl); } function setLiquid(bool liquidity) public onlyFsTKAuthorized { setLiquid0(liquidity); } function setERC20ApproveChecking(bool approveChecking) public onlyFsTKAuthorized { super.setERC20ApproveChecking(approveChecking); } function setDelegate(bool delegate) public onlyFsTKAuthorized { super.setDelegate(delegate); } function setDirectDebit(bool directDebit) public onlyFsTKAuthorized { super.setDirectDebit(directDebit); } function transferToken(ERC20 erc20, address to, uint256 value) public onlyFsTKAuthorized { erc20.transfer(to, value); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"receiver","type":"address"}],"name":"terminateDirectDebit","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"approveChecking","type":"bool"}],"name":"setERC20ApproveChecking","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"delegate","type":"bool"}],"name":"setDelegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"},{"name":"strict","type":"bool"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"metadata","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"}],"name":"transferAndCall","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"debtor","type":"address"},{"name":"receiver","type":"address"}],"name":"directDebit","outputs":[{"components":[{"components":[{"name":"amount","type":"uint256"},{"name":"startTime","type":"uint256"},{"name":"interval","type":"uint256"}],"name":"info","type":"tuple"},{"name":"epoch","type":"uint256"}],"name":"","type":"tuple"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"liquidity","type":"bool"}],"name":"setLiquid","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"expectedValue","type":"uint256"},{"name":"newValue","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isDelegateEnable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isLiquid","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"spendableAllowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_fstkAuthority","type":"address"}],"name":"setFsTKAuthority","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"debtors","type":"address[]"},{"name":"strict","type":"bool"}],"name":"withdrawDirectDebit","outputs":[{"name":"result","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"directDebit","type":"bool"}],"name":"setDirectDebit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"receiver","type":"address"},{"components":[{"name":"amount","type":"uint256"},{"name":"startTime","type":"uint256"},{"name":"interval","type":"uint256"}],"name":"info","type":"tuple"}],"name":"setupDirectDebit","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"nonce","type":"uint256"},{"name":"fee","type":"uint256"},{"name":"gasAmount","type":"uint256"},{"name":"to","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"},{"name":"mode","type":"uint8"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"delegateTransferAndCall","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isDirectDebitEnable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"infoUrl","type":"string"}],"name":"setMetadata","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"debtor","type":"address"}],"name":"withdrawDirectDebit","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"data","type":"uint256[]"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"increaseNonce","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"nonceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"erc20ApproveChecking","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"erc20","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_fstkAuthority","type":"address"},{"name":"_metadata","type":"string"},{"name":"coldWallet","type":"address"},{"name":"allocation","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"challenge","type":"bytes32"}],"name":"Consume","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"nonce","type":"uint256"}],"name":"IncreaseNonce","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"debtor","type":"address"},{"indexed":true,"name":"receiver","type":"address"},{"components":[{"name":"amount","type":"uint256"},{"name":"startTime","type":"uint256"},{"name":"interval","type":"uint256"}],"indexed":false,"name":"info","type":"tuple"}],"name":"SetupDirectDebit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"debtor","type":"address"},{"indexed":true,"name":"receiver","type":"address"}],"name":"TerminateDirectDebit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"debtor","type":"address"},{"indexed":true,"name":"receiver","type":"address"}],"name":"WithdrawDirectDebitFailure","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"metadata","type":"string"}],"name":"SetMetadata","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"liquidity","type":"bool"}],"name":"SetLiquid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"isDelegateEnable","type":"bool"}],"name":"SetDelegate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"isDirectDebitEnable","type":"bool"}],"name":"SetDirectDebit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"approveChecking","type":"bool"}],"name":"SetERC20ApproveChecking","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_address","type":"address"}],"name":"SetFsTKAuthority","type":"event"}]
Contract Creation Code
60806040526000805460a860020a60ff02191675010000000000000000000000000000000000000000001790553480156200003957600080fd5b50604051620038d6380380620038d683398101806040526200005f9190810190620002ec565b60008054600160a060020a031916600160a060020a03861617815583518190859062000093906001906020840190620001c8565b5050600160a060020a0383166000818152600260205260408082206a16bf59fcb70386cb800000908190559051909450600080516020620038b683398151915290620000e19086906200037f565b60405180910390a36040517ffe4b84df000000000000000000000000000000000000000000000000000000008152600160a060020a0384169063fe4b84df90620001309085906004016200037f565b600060405180830381600087803b1580156200014b57600080fd5b505af115801562000160573d6000803e3d6000fd5b50505050600160a060020a0384166000818152600260205260408082206b0110f837d8942a518a000000869003908190559051909350600080516020620038b683398151915290620001b49085906200037f565b60405180910390a350505050505062000430565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200020b57805160ff19168380011785556200023b565b828001600101855582156200023b579182015b828111156200023b5782518255916020019190600101906200021e565b50620002499291506200024d565b5090565b6200026a91905b8082111562000249576000815560010162000254565b90565b60006200027b8251620003e4565b9392505050565b60006200027b8251620003f0565b6000601f82018313620002a257600080fd5b8151620002b9620002b382620003bc565b62000395565b91508082526020830160208301858383011115620002d657600080fd5b620002e3838284620003fd565b50505092915050565b600080600080608085870312156200030357600080fd5b600062000311878762000282565b94505060208501516001604060020a038111156200032e57600080fd5b6200033c8782880162000290565b93505060406200034f878288016200026d565b9250506060620003628782880162000282565b91505092959194509250565b62000379816200026a565b82525050565b602081016200038f82846200036e565b92915050565b6040518181016001604060020a0381118282101715620003b457600080fd5b604052919050565b60006001604060020a03821115620003d357600080fd5b506020601f91909101601f19160190565b600160a060020a031690565b60006200038f82620003e4565b60005b838110156200041a57818101518382015260200162000400565b838111156200042a576000848401525b50505050565b61347680620004406000396000f3006080604052600436106101b65763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146101bb578063095ea7b3146101e65780630ade71421461021357806318160ddd1461023357806319261e6f14610255578063218e68771461027757806323b872dd1461029757806324a73e5f146102b7578063313ce567146102d7578063392f37e9146102f9578063395093511461030e5780634000aea01461032e57806340086aa01461034157806340f828a21461036e578063426a84931461038e5780635551b6b6146103ae5780635d272468146103c35780635d71cf46146103d8578063643f0e2a146103f857806370a0823114610418578063712c0c5a146104385780637bc0e00514610458578063806333c4146104785780638b8ba6921461049857806395d89b41146104b8578063a196bea0146104cd578063a49a1e7d146104e2578063a9059cbb14610502578063b39e1c6c14610522578063b5e3641714610542578063c53a029214610562578063dd62ed3e14610577578063ed2a2d6414610597578063ef765af8146105b7578063f5537ede146105cc575b600080fd5b3480156101c757600080fd5b506101d06105ec565b6040516101dd9190613281565b60405180910390f35b3480156101f257600080fd5b50610206610201366004612d1e565b610623565b6040516101dd9190613235565b34801561021f57600080fd5b5061020661022e366004612c49565b6106ed565b34801561023f57600080fd5b50610248610771565b6040516101dd91906132bf565b34801561026157600080fd5b50610275610270366004612e9a565b610781565b005b34801561028357600080fd5b50610275610292366004612e9a565b610844565b3480156102a357600080fd5b506102066102b2366004612ca1565b610904565b3480156102c357600080fd5b506102066102d2366004612d4e565b610a06565b3480156102e357600080fd5b506102ec610ac7565b6040516101dd91906132cd565b34801561030557600080fd5b506101d0610acc565b34801561031a57600080fd5b50610206610329366004612d1e565b610b77565b61020661033c366004612d91565b610bf2565b34801561034d57600080fd5b5061036161035c366004612c67565b610d08565b6040516101dd91906132b1565b34801561037a57600080fd5b50610275610389366004612e9a565b610d82565b34801561039a57600080fd5b506102066103a9366004612dec565b610e42565b3480156103ba57600080fd5b50610206610ee1565b3480156103cf57600080fd5b50610206610f04565b3480156103e457600080fd5b506102486103f3366004612c67565b610f26565b34801561040457600080fd5b50610275610413366004612f15565b610f73565b34801561042457600080fd5b50610248610433366004612c49565b611162565b34801561044457600080fd5b50610206610453366004612e1e565b61118a565b34801561046457600080fd5b50610275610473366004612e9a565b6113ad565b34801561048457600080fd5b50610206610493366004612cee565b61146d565b3480156104a457600080fd5b506102066104b3366004612f68565b61151d565b3480156104c457600080fd5b506101d0612065565b3480156104d957600080fd5b5061020661209c565b3480156104ee57600080fd5b506102756104fd366004612f33565b6120c0565b34801561050e57600080fd5b5061020661051d366004612d1e565b612180565b34801561052e57600080fd5b5061020661053d366004612c49565b61222e565b34801561054e57600080fd5b5061020661055d366004612e65565b612381565b34801561056e57600080fd5b506102066124b1565b34801561058357600080fd5b50610248610592366004612c67565b61250a565b3480156105a357600080fd5b506102486105b2366004612c49565b612543565b3480156105c357600080fd5b5061020661256e565b3480156105d857600080fd5b506102756105e7366004612ef4565b61258f565b60408051808201909152601281527f46756e64657220536d61727420546f6b656e0000000000000000000000000000602082015281565b33600090815260026020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716855290920190528120815474010000000000000000000000000000000000000000900460ff161561068e5782158061068357508054155b151561068e57600080fd5b82815560405173ffffffffffffffffffffffffffffffffffffffff85169033907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106db9087906132bf565b60405180910390a35060019392505050565b33600081815260026020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652908401909252808420600181018590559283018490556003830184905560049092018390559051919290917f7f321b39581bf86dddbaa9ddeec3e0740b71f116b22c14cf346cb71d91fd0832908490a3506001919050565b6b0110f837d8942a518a00000081565b600080546040517f0a85bb2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691630a85bb25916107dd91339130919036906004016131e2565b60206040518083038186803b1580156107f557600080fd5b505afa158015610809573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061082d9190810190612eb8565b151561083857600080fd5b610841816126f2565b50565b600080546040517f0a85bb2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691630a85bb25916108a091339130919036906004016131e2565b60206040518083038186803b1580156108b857600080fd5b505afa1580156108cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108f09190810190612eb8565b15156108fb57600080fd5b61084181612770565b60008054819081907501000000000000000000000000000000000000000000900460ff16151561093357600080fd5b505073ffffffffffffffffffffffffffffffffffffffff84166000908152600260208181526040808420338552928301909152909120815461097b908563ffffffff6127e516565b8255805461098f908563ffffffff6127e516565b815573ffffffffffffffffffffffffffffffffffffffff808616600081815260026020526040908190208054880190555190918816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109f29088906132bf565b60405180910390a350600195945050505050565b33600090815260026020818152604080842073ffffffffffffffffffffffffffffffffffffffff88168552909201905281208054828415610a5857610a51828763ffffffff6127e516565b9050610a65565b81861015610a6557508481035b80835560405173ffffffffffffffffffffffffffffffffffffffff88169033907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ab29085906132bf565b60405180910390a35060019695505050505050565b601281565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f81018490048402820184019092528181529291830182828015610b6f5780601f10610b4457610100808354040283529160200191610b6f565b820191906000526020600020905b815481529060010190602001808311610b5257829003601f168201915b505050505081565b33600081815260026020818152604080842073ffffffffffffffffffffffffffffffffffffffff8816808652930190915282208054929390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610be2908763ffffffff6127f516565b8085556040516106db91906132bf565b600080547501000000000000000000000000000000000000000000900460ff161515610c1d57600080fd5b73ffffffffffffffffffffffffffffffffffffffff84163014801590610c4557506044825110155b8015610c565750610c568484612180565b1515610c6157600080fd5b8260248301523360448301528373ffffffffffffffffffffffffffffffffffffffff16348360405180828051906020019080838360005b83811015610cb0578181015183820152602001610c98565b50505050905090810190601f168015610cdd5780820380516001836020036101000a031916815260200191505b5091505060006040518083038185875af1925050501515610cfd57600080fd5b5060015b9392505050565b610d10612972565b5073ffffffffffffffffffffffffffffffffffffffff80831660009081526002602081815260408084209486168452938201815291839020835160a081018552600182015494810194855291810154606083015260038101546080830152928152600490920154908201525b92915050565b600080546040517f0a85bb2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691630a85bb2591610dde91339130919036906004016131e2565b60206040518083038186803b158015610df657600080fd5b505afa158015610e0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e2e9190810190612eb8565b1515610e3957600080fd5b61084181612805565b33600090815260026020818152604080842073ffffffffffffffffffffffffffffffffffffffff881685529092019052812080548414610e8157600080fd5b82815560405173ffffffffffffffffffffffffffffffffffffffff86169033907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ece9087906132bf565b60405180910390a3506001949350505050565b600054760100000000000000000000000000000000000000000000900460ff1681565b6000547501000000000000000000000000000000000000000000900460ff1681565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600260208181526040808420948616845291840190528120548254919291610f6b9190612879565b949350505050565b600080546040517f0a85bb2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691630a85bb2591610fcf91339130919036906004016131e2565b60206040518083038186803b158015610fe757600080fd5b505afa158015610ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061101f9190810190612eb8565b151561102a57600080fd5b604080517f6901f66800000000000000000000000000000000000000000000000000000000808252915173ffffffffffffffffffffffffffffffffffffffff841691636901f668916004808301926020929190829003018186803b15801561109157600080fd5b505afa1580156110a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110c99190810190612ed6565b7fffffffff0000000000000000000000000000000000000000000000000000000016146110f557600080fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405190917f1e03f798432da753fa76bd6d807748d894d4e59e05731b05fff74173f35464d191a250565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205490565b600080600080600080600080600080600060159054906101000a900460ff1615156111b457600080fd5b60005477010000000000000000000000000000000000000000000000900460ff1615156111e057600080fd5b33600090815260026020526040812060019b50995096505b8b51871015611397578b8781518110151561120f57fe5b602090810290910181015173ffffffffffffffffffffffffffffffffffffffff81166000908152600280845260408083203384528083019095529091206003810154918101549299509297506001928301965061128e929161127890429063ffffffff6127e516565b81151561128157fe5b049063ffffffff6127f516565b845460038601549194506112b9916112ad90869063ffffffff6127e516565b9063ffffffff61289016565b9150600082116112c857600080fd5b50835480821115611329578a156112de57600080fd5b60405160009a50339073ffffffffffffffffffffffffffffffffffffffff8816907f3a2e3d0ecec3142514fb77933d7647fd6c7cf9f76de44841c91ceadaa38a9565908d90a361138c565b81810385556003840183905560405197820197339073ffffffffffffffffffffffffffffffffffffffff8816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113839086906132bf565b60405180910390a35b6001909601956111f8565b5050865490950190955550939695505050505050565b600080546040517f0a85bb2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691630a85bb259161140991339130919036906004016131e2565b60206040518083038186803b15801561142157600080fd5b505afa158015611435573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114599190810190612eb8565b151561146457600080fd5b610841816128b5565b6040805180820182528281526000602080830182815233808452600280845286852073ffffffffffffffffffffffffffffffffffffffff8a168087529082018552878620965180516001890155948501519187019190915592860151600386015590516004909401939093559251909291907fa25dcfb713acdeba8b55101aa403f8ce07b4d6f33b0cebf81226fe558a28c56b9061150c9086906132a3565b60405180910390a350600192915050565b600080600080600060159054906101000a900460ff16151561153e57600080fd5b600054760100000000000000000000000000000000000000000000900460ff16151561156957600080fd5b73ffffffffffffffffffffffffffffffffffffffff8b1630141561158c57600080fd5b600088600381111561159a57fe5b141561182e576001308f8f8f8f8f8f8f6000604051602001808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831061169657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611659565b6001836020036101000a0380198251168184511680821785525050505050509050018360038111156116c457fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140199505050505050505050506040516020818303038152906040526040518082805190602001908083835b6020831061179657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611759565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909216911617905260408051929094018290038220600083529101928390526117f8945092508b918b91508a90613243565b6020604051602081039080840390855afa15801561181a573d6000803e3d6000fd5b505050602060405103519250339150611ce0565b600188600381111561183c57fe5b1415611ad0576001308f8f8f8f8f8f8f6000604051602001808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831061193857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016118fb565b6001836020036101000a03801982511681845116808217855250505050505090500183600381111561196657fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140199505050505050505050506040516020818303038152906040526040518082805190602001908083835b60208310611a3857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016119fb565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040805192909401829003822060008352910192839052611a9a945092508b918b91508a90613243565b6020604051602081039080840390855afa158015611abc573d6000803e3d6000fd5b505050602060405103519250329150611ce0565b6002886003811115611ade57fe5b1415611bd8576001308f8f8f8f8f8f8f33604051602001808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083836020831061169657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611659565b6003886003811115611be657fe5b14156101b6576001308f8f8f8f8f8f8f32604051602001808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083836020831061193857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016118fb565b5073ffffffffffffffffffffffffffffffffffffffff8216600090815260026020526040902060018101548e14611d1657600080fd5b8273ffffffffffffffffffffffffffffffffffffffff167fceb9e69e536dba286db476863cd607b4a7dd1f8f1c044bf410f2c4306517cc26600183600101600082825401925050819055604051611d6d91906132bf565b60405180910390a2611d96611d888b8f63ffffffff6127f516565b82549063ffffffff6127e516565b815573ffffffffffffffffffffffffffffffffffffffff8b16600090815260026020526040902080548b0190558c15611e7f578c600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8f604051611e7691906132bf565b60405180910390a35b611e9e8b73ffffffffffffffffffffffffffffffffffffffff1661292b565b158015611ead57506044895110155b15611feb578960248a01528260448a01528a73ffffffffffffffffffffffffffffffffffffffff168c8a60405180828051906020019080838360005b83811015611f01578181015183820152602001611ee9565b50505050905090810190601f168015611f2e5780820380516001836020036101000a031916815260200191505b5091505060006040518083038160008787f19250505015611fb3578a73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c604051611fa691906132bf565b60405180910390a3611fe6565b80548a01815573ffffffffffffffffffffffffffffffffffffffff8b16600090815260026020526040902080548b900390555b612051565b8a73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c60405161204891906132bf565b60405180910390a35b5060019d9c50505050505050505050505050565b60408051808201909152600381527f4653540000000000000000000000000000000000000000000000000000000000602082015281565b60005477010000000000000000000000000000000000000000000000900460ff1681565b600080546040517f0a85bb2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691630a85bb259161211c91339130919036906004016131e2565b60206040518083038186803b15801561213457600080fd5b505afa158015612148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061216c9190810190612eb8565b151561217757600080fd5b61084181612930565b6000805481907501000000000000000000000000000000000000000000900460ff1615156121ad57600080fd5b5033600090815260026020526040902080546121cf908463ffffffff6127e516565b815573ffffffffffffffffffffffffffffffffffffffff8416600081815260026020526040908190208054860190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106db9087906132bf565b60008060008060008060159054906101000a900460ff16151561225057600080fd5b60005477010000000000000000000000000000000000000000000000900460ff16151561227c57600080fd5b73ffffffffffffffffffffffffffffffffffffffff86166000908152600260208181526040808420338552808401909252909220600381015491810154929650600190810195506122db9290919061127890429063ffffffff6127e516565b835460038501549193506122fa916112ad90859063ffffffff6127e516565b90506000811161230957600080fd5b835461231b908263ffffffff6127e516565b84553360008181526002602052604090819020805484019055600385018490555173ffffffffffffffffffffffffffffffffffffffff8816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109f29085906132bf565b600080600080600080600060159054906101000a900460ff1615156123a557600080fd5b336000908152600260205260408120955092505b865183101561249057606087848151811015156123d257fe5b906020019060200201519060020a9004915086838151811015156123f257fe5b602090810290910101516bffffffffffffffffffffffff16905061241c848263ffffffff6127f516565b73ffffffffffffffffffffffffffffffffffffffff831660008181526002602052604090819020805485019055519195509033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061247d9085906132bf565b60405180910390a36001909201916123b9565b84546124a2908563ffffffff6127e516565b90945550600195945050505050565b33600081815260026020526040808220600190810180549091019081905590519192917fceb9e69e536dba286db476863cd607b4a7dd1f8f1c044bf410f2c4306517cc26916124ff916132bf565b60405180910390a290565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526002602081815260408084209490951683529201909152205490565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090206001015490565b60005474010000000000000000000000000000000000000000900460ff1681565b600080546040517f0a85bb2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691630a85bb25916125eb91339130919036906004016131e2565b60206040518083038186803b15801561260357600080fd5b505afa158015612617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061263b9190810190612eb8565b151561264657600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb9061269a908590859060040161321a565b602060405180830381600087803b1580156126b457600080fd5b505af11580156126c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126ec9190810190612eb8565b50505050565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000831515021790556040517f0742a23da401b3f99c3da7b7508a78f0faf0098b7e54106be805c671dd91300790612765908390613235565b60405180910390a150565b600080547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff16760100000000000000000000000000000000000000000000831515021790556040517f8557fc9589f24ba6adfed162065f291fe9d7e55aff6a9b2924dcd6c2cfce875590612765908390613235565b80820382811115610d7c57600080fd5b80820182811015610d7c57600080fd5b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000831515021790556040517ff6ff712ce1a864d00b4e395a3226b3b51837947e34df82826504708e4da4739390612765908390613235565b6000818311156128895781610d01565b5090919050565b8181028215806128aa57508183828115156128a757fe5b04145b1515610d7c57600080fd5b600080547fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff1677010000000000000000000000000000000000000000000000831515021790556040517f93365d0422216fbe0e6a095101b1602da2d51549500da385b7d0920e6eb0db1390612765908390613235565b3b1590565b80517f862d2bb6b8cf31caf965347718f48b7d2ac43dd5af10d2040d8da4fde4f3855090612965906001906020850190612993565b6040516127659190613292565b608060405190810160405280612986612a11565b8152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106129d457805160ff1916838001178555612a01565b82800160010185558215612a01579182015b82811115612a015782518255916020019190600101906129e6565b50612a0d929150612a33565b5090565b6060604051908101604052806000815260200160008152602001600081525090565b612a4d91905b80821115612a0d5760008155600101612a39565b90565b6000610d018235613379565b6000601f82018313612a6d57600080fd5b8135612a80612a7b82613302565b6132db565b91508181835260208401935060208101905083856020840282011115612aa557600080fd5b60005b83811015612ad15781612abb8882612a50565b8452506020928301929190910190600101612aa8565b5050505092915050565b6000601f82018313612aec57600080fd5b8135612afa612a7b82613302565b91508181835260208401935060208101905083856020840282011115612b1f57600080fd5b60005b83811015612ad15781612b358882612b63565b8452506020928301929190910190600101612b22565b6000610d018235613392565b6000610d018251613392565b6000610d018235612a4d565b6000610d01825161339d565b6000601f82018313612b8c57600080fd5b8135612b9a612a7b82613323565b91508082526020830160208301858383011115612bb657600080fd5b612bc18382846133dc565b50505092915050565b6000610d0182356133c2565b6000610d0182356133cd565b600060608284031215612bf457600080fd5b612bfe60606132db565b90506000612c0c8484612b63565b8252506020612c1d84848301612b63565b6020830152506040612c3184828501612b63565b60408301525092915050565b6000610d018235613397565b600060208284031215612c5b57600080fd5b6000610f6b8484612a50565b60008060408385031215612c7a57600080fd5b6000612c868585612a50565b9250506020612c9785828601612a50565b9150509250929050565b600080600060608486031215612cb657600080fd5b6000612cc28686612a50565b9350506020612cd386828701612a50565b9250506040612ce486828701612b63565b9150509250925092565b60008060808385031215612d0157600080fd5b6000612d0d8585612a50565b9250506020612c9785828601612be2565b60008060408385031215612d3157600080fd5b6000612d3d8585612a50565b9250506020612c9785828601612b63565b600080600060608486031215612d6357600080fd5b6000612d6f8686612a50565b9350506020612d8086828701612b63565b9250506040612ce486828701612b4b565b600080600060608486031215612da657600080fd5b6000612db28686612a50565b9350506020612dc386828701612b63565b925050604084013567ffffffffffffffff811115612de057600080fd5b612ce486828701612b7b565b600080600060608486031215612e0157600080fd5b6000612e0d8686612a50565b9350506020612cd386828701612b63565b60008060408385031215612e3157600080fd5b823567ffffffffffffffff811115612e4857600080fd5b612e5485828601612a5c565b9250506020612c9785828601612b4b565b600060208284031215612e7757600080fd5b813567ffffffffffffffff811115612e8e57600080fd5b610f6b84828501612adb565b600060208284031215612eac57600080fd5b6000610f6b8484612b4b565b600060208284031215612eca57600080fd5b6000610f6b8484612b57565b600060208284031215612ee857600080fd5b6000610f6b8484612b6f565b600080600060608486031215612f0957600080fd5b6000612cc28686612bca565b600060208284031215612f2757600080fd5b6000610f6b8484612bca565b600060208284031215612f4557600080fd5b813567ffffffffffffffff811115612f5c57600080fd5b610f6b84828501612b7b565b6000806000806000806000806000806101408b8d031215612f8857600080fd5b6000612f948d8d612b63565b9a50506020612fa58d828e01612b63565b9950506040612fb68d828e01612b63565b9850506060612fc78d828e01612a50565b9750506080612fd88d828e01612b63565b96505060a08b013567ffffffffffffffff811115612ff557600080fd5b6130018d828e01612b7b565b95505060c06130128d828e01612bd6565b94505060e06130238d828e01612c3d565b9350506101006130358d828e01612b63565b9250506101206130478d828e01612b63565b9150509295989b9194979a5092959850565b61306281613379565b82525050565b61306281613392565b61306281612a4d565b60008284526020840193506130908385846133dc565b61309983613414565b9093019392505050565b613062816133c2565b60006130b782613375565b8084526130cb8160208601602086016133e8565b6130d481613414565b9093016020019392505050565b6000815460018116600081146130fe576001811461313a57613176565b60028204607f1685527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082166020860152604085019250613176565b6002820480865260208601955061315085613369565b60005b8281101561316f57815488820152600190910190602001613153565b8701945050505b505092915050565b8051606083019061318f8482613071565b5060208201516131a26020850182613071565b5060408201516126ec6040850182613071565b805160808301906131c6848261317e565b5060208201516126ec6060850182613071565b61306281613397565b606081016131f08287613059565b6131fd60208301866130a3565b818103604083015261321081848661307a565b9695505050505050565b604081016132288285613059565b610d016020830184613071565b60208101610d7c8284613068565b608081016132518287613071565b61325e60208301866131d9565b61326b6040830185613071565b6132786060830184613071565b95945050505050565b60208082528101610d0181846130ac565b60208082528101610d0181846130e1565b60608101610d7c828461317e565b60808101610d7c82846131b5565b60208101610d7c8284613071565b60208101610d7c82846131d9565b60405181810167ffffffffffffffff811182821017156132fa57600080fd5b604052919050565b600067ffffffffffffffff82111561331957600080fd5b5060209081020190565b600067ffffffffffffffff82111561333a57600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60009081526020902090565b5190565b73ffffffffffffffffffffffffffffffffffffffff1690565b151590565b60ff1690565b7fffffffff000000000000000000000000000000000000000000000000000000001690565b6000610d7c82613379565b600060048210612a0d57600080fd5b82818337506000910152565b60005b838110156134035781810151838201526020016133eb565b838111156126ec5750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016905600a265627a7a72305820fcef133d4d56dc03bdeec7b7b4b71b4f71699f75c349d154d99aa1afbefbc6546c6578706572696d656e74616cf50037ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef000000000000000000000000bab2ffe40c73e2983030e5e23fb32cc0f30916590000000000000000000000000000000000000000000000000000000000000080000000000000000000000000684564950fdafedad73a79c9074aed1b85428feb00000000000000000000000042e54856ac383a86b404ab9fdbfc9224e5527b2f00000000000000000000000000000000000000000000000000000000000000632f697066732f7a4275724b394462446671524e397a7355486d685739315a4a627364384b64746a796e5258615061366a315346716e5154726579746d677a6b7945616347725356566d59615a5734506837477577616b53597345556b567a67485547560000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106101b65763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146101bb578063095ea7b3146101e65780630ade71421461021357806318160ddd1461023357806319261e6f14610255578063218e68771461027757806323b872dd1461029757806324a73e5f146102b7578063313ce567146102d7578063392f37e9146102f9578063395093511461030e5780634000aea01461032e57806340086aa01461034157806340f828a21461036e578063426a84931461038e5780635551b6b6146103ae5780635d272468146103c35780635d71cf46146103d8578063643f0e2a146103f857806370a0823114610418578063712c0c5a146104385780637bc0e00514610458578063806333c4146104785780638b8ba6921461049857806395d89b41146104b8578063a196bea0146104cd578063a49a1e7d146104e2578063a9059cbb14610502578063b39e1c6c14610522578063b5e3641714610542578063c53a029214610562578063dd62ed3e14610577578063ed2a2d6414610597578063ef765af8146105b7578063f5537ede146105cc575b600080fd5b3480156101c757600080fd5b506101d06105ec565b6040516101dd9190613281565b60405180910390f35b3480156101f257600080fd5b50610206610201366004612d1e565b610623565b6040516101dd9190613235565b34801561021f57600080fd5b5061020661022e366004612c49565b6106ed565b34801561023f57600080fd5b50610248610771565b6040516101dd91906132bf565b34801561026157600080fd5b50610275610270366004612e9a565b610781565b005b34801561028357600080fd5b50610275610292366004612e9a565b610844565b3480156102a357600080fd5b506102066102b2366004612ca1565b610904565b3480156102c357600080fd5b506102066102d2366004612d4e565b610a06565b3480156102e357600080fd5b506102ec610ac7565b6040516101dd91906132cd565b34801561030557600080fd5b506101d0610acc565b34801561031a57600080fd5b50610206610329366004612d1e565b610b77565b61020661033c366004612d91565b610bf2565b34801561034d57600080fd5b5061036161035c366004612c67565b610d08565b6040516101dd91906132b1565b34801561037a57600080fd5b50610275610389366004612e9a565b610d82565b34801561039a57600080fd5b506102066103a9366004612dec565b610e42565b3480156103ba57600080fd5b50610206610ee1565b3480156103cf57600080fd5b50610206610f04565b3480156103e457600080fd5b506102486103f3366004612c67565b610f26565b34801561040457600080fd5b50610275610413366004612f15565b610f73565b34801561042457600080fd5b50610248610433366004612c49565b611162565b34801561044457600080fd5b50610206610453366004612e1e565b61118a565b34801561046457600080fd5b50610275610473366004612e9a565b6113ad565b34801561048457600080fd5b50610206610493366004612cee565b61146d565b3480156104a457600080fd5b506102066104b3366004612f68565b61151d565b3480156104c457600080fd5b506101d0612065565b3480156104d957600080fd5b5061020661209c565b3480156104ee57600080fd5b506102756104fd366004612f33565b6120c0565b34801561050e57600080fd5b5061020661051d366004612d1e565b612180565b34801561052e57600080fd5b5061020661053d366004612c49565b61222e565b34801561054e57600080fd5b5061020661055d366004612e65565b612381565b34801561056e57600080fd5b506102066124b1565b34801561058357600080fd5b50610248610592366004612c67565b61250a565b3480156105a357600080fd5b506102486105b2366004612c49565b612543565b3480156105c357600080fd5b5061020661256e565b3480156105d857600080fd5b506102756105e7366004612ef4565b61258f565b60408051808201909152601281527f46756e64657220536d61727420546f6b656e0000000000000000000000000000602082015281565b33600090815260026020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716855290920190528120815474010000000000000000000000000000000000000000900460ff161561068e5782158061068357508054155b151561068e57600080fd5b82815560405173ffffffffffffffffffffffffffffffffffffffff85169033907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106db9087906132bf565b60405180910390a35060019392505050565b33600081815260026020818152604080842073ffffffffffffffffffffffffffffffffffffffff8716808652908401909252808420600181018590559283018490556003830184905560049092018390559051919290917f7f321b39581bf86dddbaa9ddeec3e0740b71f116b22c14cf346cb71d91fd0832908490a3506001919050565b6b0110f837d8942a518a00000081565b600080546040517f0a85bb2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691630a85bb25916107dd91339130919036906004016131e2565b60206040518083038186803b1580156107f557600080fd5b505afa158015610809573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061082d9190810190612eb8565b151561083857600080fd5b610841816126f2565b50565b600080546040517f0a85bb2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691630a85bb25916108a091339130919036906004016131e2565b60206040518083038186803b1580156108b857600080fd5b505afa1580156108cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108f09190810190612eb8565b15156108fb57600080fd5b61084181612770565b60008054819081907501000000000000000000000000000000000000000000900460ff16151561093357600080fd5b505073ffffffffffffffffffffffffffffffffffffffff84166000908152600260208181526040808420338552928301909152909120815461097b908563ffffffff6127e516565b8255805461098f908563ffffffff6127e516565b815573ffffffffffffffffffffffffffffffffffffffff808616600081815260026020526040908190208054880190555190918816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109f29088906132bf565b60405180910390a350600195945050505050565b33600090815260026020818152604080842073ffffffffffffffffffffffffffffffffffffffff88168552909201905281208054828415610a5857610a51828763ffffffff6127e516565b9050610a65565b81861015610a6557508481035b80835560405173ffffffffffffffffffffffffffffffffffffffff88169033907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ab29085906132bf565b60405180910390a35060019695505050505050565b601281565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f81018490048402820184019092528181529291830182828015610b6f5780601f10610b4457610100808354040283529160200191610b6f565b820191906000526020600020905b815481529060010190602001808311610b5257829003601f168201915b505050505081565b33600081815260026020818152604080842073ffffffffffffffffffffffffffffffffffffffff8816808652930190915282208054929390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610be2908763ffffffff6127f516565b8085556040516106db91906132bf565b600080547501000000000000000000000000000000000000000000900460ff161515610c1d57600080fd5b73ffffffffffffffffffffffffffffffffffffffff84163014801590610c4557506044825110155b8015610c565750610c568484612180565b1515610c6157600080fd5b8260248301523360448301528373ffffffffffffffffffffffffffffffffffffffff16348360405180828051906020019080838360005b83811015610cb0578181015183820152602001610c98565b50505050905090810190601f168015610cdd5780820380516001836020036101000a031916815260200191505b5091505060006040518083038185875af1925050501515610cfd57600080fd5b5060015b9392505050565b610d10612972565b5073ffffffffffffffffffffffffffffffffffffffff80831660009081526002602081815260408084209486168452938201815291839020835160a081018552600182015494810194855291810154606083015260038101546080830152928152600490920154908201525b92915050565b600080546040517f0a85bb2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691630a85bb2591610dde91339130919036906004016131e2565b60206040518083038186803b158015610df657600080fd5b505afa158015610e0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e2e9190810190612eb8565b1515610e3957600080fd5b61084181612805565b33600090815260026020818152604080842073ffffffffffffffffffffffffffffffffffffffff881685529092019052812080548414610e8157600080fd5b82815560405173ffffffffffffffffffffffffffffffffffffffff86169033907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ece9087906132bf565b60405180910390a3506001949350505050565b600054760100000000000000000000000000000000000000000000900460ff1681565b6000547501000000000000000000000000000000000000000000900460ff1681565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600260208181526040808420948616845291840190528120548254919291610f6b9190612879565b949350505050565b600080546040517f0a85bb2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691630a85bb2591610fcf91339130919036906004016131e2565b60206040518083038186803b158015610fe757600080fd5b505afa158015610ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061101f9190810190612eb8565b151561102a57600080fd5b604080517f6901f66800000000000000000000000000000000000000000000000000000000808252915173ffffffffffffffffffffffffffffffffffffffff841691636901f668916004808301926020929190829003018186803b15801561109157600080fd5b505afa1580156110a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110c99190810190612ed6565b7fffffffff0000000000000000000000000000000000000000000000000000000016146110f557600080fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405190917f1e03f798432da753fa76bd6d807748d894d4e59e05731b05fff74173f35464d191a250565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205490565b600080600080600080600080600080600060159054906101000a900460ff1615156111b457600080fd5b60005477010000000000000000000000000000000000000000000000900460ff1615156111e057600080fd5b33600090815260026020526040812060019b50995096505b8b51871015611397578b8781518110151561120f57fe5b602090810290910181015173ffffffffffffffffffffffffffffffffffffffff81166000908152600280845260408083203384528083019095529091206003810154918101549299509297506001928301965061128e929161127890429063ffffffff6127e516565b81151561128157fe5b049063ffffffff6127f516565b845460038601549194506112b9916112ad90869063ffffffff6127e516565b9063ffffffff61289016565b9150600082116112c857600080fd5b50835480821115611329578a156112de57600080fd5b60405160009a50339073ffffffffffffffffffffffffffffffffffffffff8816907f3a2e3d0ecec3142514fb77933d7647fd6c7cf9f76de44841c91ceadaa38a9565908d90a361138c565b81810385556003840183905560405197820197339073ffffffffffffffffffffffffffffffffffffffff8816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113839086906132bf565b60405180910390a35b6001909601956111f8565b5050865490950190955550939695505050505050565b600080546040517f0a85bb2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691630a85bb259161140991339130919036906004016131e2565b60206040518083038186803b15801561142157600080fd5b505afa158015611435573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114599190810190612eb8565b151561146457600080fd5b610841816128b5565b6040805180820182528281526000602080830182815233808452600280845286852073ffffffffffffffffffffffffffffffffffffffff8a168087529082018552878620965180516001890155948501519187019190915592860151600386015590516004909401939093559251909291907fa25dcfb713acdeba8b55101aa403f8ce07b4d6f33b0cebf81226fe558a28c56b9061150c9086906132a3565b60405180910390a350600192915050565b600080600080600060159054906101000a900460ff16151561153e57600080fd5b600054760100000000000000000000000000000000000000000000900460ff16151561156957600080fd5b73ffffffffffffffffffffffffffffffffffffffff8b1630141561158c57600080fd5b600088600381111561159a57fe5b141561182e576001308f8f8f8f8f8f8f6000604051602001808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831061169657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611659565b6001836020036101000a0380198251168184511680821785525050505050509050018360038111156116c457fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140199505050505050505050506040516020818303038152906040526040518082805190602001908083835b6020831061179657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611759565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909216911617905260408051929094018290038220600083529101928390526117f8945092508b918b91508a90613243565b6020604051602081039080840390855afa15801561181a573d6000803e3d6000fd5b505050602060405103519250339150611ce0565b600188600381111561183c57fe5b1415611ad0576001308f8f8f8f8f8f8f6000604051602001808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831061193857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016118fb565b6001836020036101000a03801982511681845116808217855250505050505090500183600381111561196657fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140199505050505050505050506040516020818303038152906040526040518082805190602001908083835b60208310611a3857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016119fb565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040805192909401829003822060008352910192839052611a9a945092508b918b91508a90613243565b6020604051602081039080840390855afa158015611abc573d6000803e3d6000fd5b505050602060405103519250329150611ce0565b6002886003811115611ade57fe5b1415611bd8576001308f8f8f8f8f8f8f33604051602001808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083836020831061169657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611659565b6003886003811115611be657fe5b14156101b6576001308f8f8f8f8f8f8f32604051602001808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083836020831061193857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016118fb565b5073ffffffffffffffffffffffffffffffffffffffff8216600090815260026020526040902060018101548e14611d1657600080fd5b8273ffffffffffffffffffffffffffffffffffffffff167fceb9e69e536dba286db476863cd607b4a7dd1f8f1c044bf410f2c4306517cc26600183600101600082825401925050819055604051611d6d91906132bf565b60405180910390a2611d96611d888b8f63ffffffff6127f516565b82549063ffffffff6127e516565b815573ffffffffffffffffffffffffffffffffffffffff8b16600090815260026020526040902080548b0190558c15611e7f578c600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8f604051611e7691906132bf565b60405180910390a35b611e9e8b73ffffffffffffffffffffffffffffffffffffffff1661292b565b158015611ead57506044895110155b15611feb578960248a01528260448a01528a73ffffffffffffffffffffffffffffffffffffffff168c8a60405180828051906020019080838360005b83811015611f01578181015183820152602001611ee9565b50505050905090810190601f168015611f2e5780820380516001836020036101000a031916815260200191505b5091505060006040518083038160008787f19250505015611fb3578a73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c604051611fa691906132bf565b60405180910390a3611fe6565b80548a01815573ffffffffffffffffffffffffffffffffffffffff8b16600090815260026020526040902080548b900390555b612051565b8a73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c60405161204891906132bf565b60405180910390a35b5060019d9c50505050505050505050505050565b60408051808201909152600381527f4653540000000000000000000000000000000000000000000000000000000000602082015281565b60005477010000000000000000000000000000000000000000000000900460ff1681565b600080546040517f0a85bb2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691630a85bb259161211c91339130919036906004016131e2565b60206040518083038186803b15801561213457600080fd5b505afa158015612148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061216c9190810190612eb8565b151561217757600080fd5b61084181612930565b6000805481907501000000000000000000000000000000000000000000900460ff1615156121ad57600080fd5b5033600090815260026020526040902080546121cf908463ffffffff6127e516565b815573ffffffffffffffffffffffffffffffffffffffff8416600081815260026020526040908190208054860190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106db9087906132bf565b60008060008060008060159054906101000a900460ff16151561225057600080fd5b60005477010000000000000000000000000000000000000000000000900460ff16151561227c57600080fd5b73ffffffffffffffffffffffffffffffffffffffff86166000908152600260208181526040808420338552808401909252909220600381015491810154929650600190810195506122db9290919061127890429063ffffffff6127e516565b835460038501549193506122fa916112ad90859063ffffffff6127e516565b90506000811161230957600080fd5b835461231b908263ffffffff6127e516565b84553360008181526002602052604090819020805484019055600385018490555173ffffffffffffffffffffffffffffffffffffffff8816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109f29085906132bf565b600080600080600080600060159054906101000a900460ff1615156123a557600080fd5b336000908152600260205260408120955092505b865183101561249057606087848151811015156123d257fe5b906020019060200201519060020a9004915086838151811015156123f257fe5b602090810290910101516bffffffffffffffffffffffff16905061241c848263ffffffff6127f516565b73ffffffffffffffffffffffffffffffffffffffff831660008181526002602052604090819020805485019055519195509033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061247d9085906132bf565b60405180910390a36001909201916123b9565b84546124a2908563ffffffff6127e516565b90945550600195945050505050565b33600081815260026020526040808220600190810180549091019081905590519192917fceb9e69e536dba286db476863cd607b4a7dd1f8f1c044bf410f2c4306517cc26916124ff916132bf565b60405180910390a290565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526002602081815260408084209490951683529201909152205490565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090206001015490565b60005474010000000000000000000000000000000000000000900460ff1681565b600080546040517f0a85bb2500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691630a85bb25916125eb91339130919036906004016131e2565b60206040518083038186803b15801561260357600080fd5b505afa158015612617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061263b9190810190612eb8565b151561264657600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb9061269a908590859060040161321a565b602060405180830381600087803b1580156126b457600080fd5b505af11580156126c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126ec9190810190612eb8565b50505050565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000831515021790556040517f0742a23da401b3f99c3da7b7508a78f0faf0098b7e54106be805c671dd91300790612765908390613235565b60405180910390a150565b600080547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff16760100000000000000000000000000000000000000000000831515021790556040517f8557fc9589f24ba6adfed162065f291fe9d7e55aff6a9b2924dcd6c2cfce875590612765908390613235565b80820382811115610d7c57600080fd5b80820182811015610d7c57600080fd5b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000831515021790556040517ff6ff712ce1a864d00b4e395a3226b3b51837947e34df82826504708e4da4739390612765908390613235565b6000818311156128895781610d01565b5090919050565b8181028215806128aa57508183828115156128a757fe5b04145b1515610d7c57600080fd5b600080547fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff1677010000000000000000000000000000000000000000000000831515021790556040517f93365d0422216fbe0e6a095101b1602da2d51549500da385b7d0920e6eb0db1390612765908390613235565b3b1590565b80517f862d2bb6b8cf31caf965347718f48b7d2ac43dd5af10d2040d8da4fde4f3855090612965906001906020850190612993565b6040516127659190613292565b608060405190810160405280612986612a11565b8152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106129d457805160ff1916838001178555612a01565b82800160010185558215612a01579182015b82811115612a015782518255916020019190600101906129e6565b50612a0d929150612a33565b5090565b6060604051908101604052806000815260200160008152602001600081525090565b612a4d91905b80821115612a0d5760008155600101612a39565b90565b6000610d018235613379565b6000601f82018313612a6d57600080fd5b8135612a80612a7b82613302565b6132db565b91508181835260208401935060208101905083856020840282011115612aa557600080fd5b60005b83811015612ad15781612abb8882612a50565b8452506020928301929190910190600101612aa8565b5050505092915050565b6000601f82018313612aec57600080fd5b8135612afa612a7b82613302565b91508181835260208401935060208101905083856020840282011115612b1f57600080fd5b60005b83811015612ad15781612b358882612b63565b8452506020928301929190910190600101612b22565b6000610d018235613392565b6000610d018251613392565b6000610d018235612a4d565b6000610d01825161339d565b6000601f82018313612b8c57600080fd5b8135612b9a612a7b82613323565b91508082526020830160208301858383011115612bb657600080fd5b612bc18382846133dc565b50505092915050565b6000610d0182356133c2565b6000610d0182356133cd565b600060608284031215612bf457600080fd5b612bfe60606132db565b90506000612c0c8484612b63565b8252506020612c1d84848301612b63565b6020830152506040612c3184828501612b63565b60408301525092915050565b6000610d018235613397565b600060208284031215612c5b57600080fd5b6000610f6b8484612a50565b60008060408385031215612c7a57600080fd5b6000612c868585612a50565b9250506020612c9785828601612a50565b9150509250929050565b600080600060608486031215612cb657600080fd5b6000612cc28686612a50565b9350506020612cd386828701612a50565b9250506040612ce486828701612b63565b9150509250925092565b60008060808385031215612d0157600080fd5b6000612d0d8585612a50565b9250506020612c9785828601612be2565b60008060408385031215612d3157600080fd5b6000612d3d8585612a50565b9250506020612c9785828601612b63565b600080600060608486031215612d6357600080fd5b6000612d6f8686612a50565b9350506020612d8086828701612b63565b9250506040612ce486828701612b4b565b600080600060608486031215612da657600080fd5b6000612db28686612a50565b9350506020612dc386828701612b63565b925050604084013567ffffffffffffffff811115612de057600080fd5b612ce486828701612b7b565b600080600060608486031215612e0157600080fd5b6000612e0d8686612a50565b9350506020612cd386828701612b63565b60008060408385031215612e3157600080fd5b823567ffffffffffffffff811115612e4857600080fd5b612e5485828601612a5c565b9250506020612c9785828601612b4b565b600060208284031215612e7757600080fd5b813567ffffffffffffffff811115612e8e57600080fd5b610f6b84828501612adb565b600060208284031215612eac57600080fd5b6000610f6b8484612b4b565b600060208284031215612eca57600080fd5b6000610f6b8484612b57565b600060208284031215612ee857600080fd5b6000610f6b8484612b6f565b600080600060608486031215612f0957600080fd5b6000612cc28686612bca565b600060208284031215612f2757600080fd5b6000610f6b8484612bca565b600060208284031215612f4557600080fd5b813567ffffffffffffffff811115612f5c57600080fd5b610f6b84828501612b7b565b6000806000806000806000806000806101408b8d031215612f8857600080fd5b6000612f948d8d612b63565b9a50506020612fa58d828e01612b63565b9950506040612fb68d828e01612b63565b9850506060612fc78d828e01612a50565b9750506080612fd88d828e01612b63565b96505060a08b013567ffffffffffffffff811115612ff557600080fd5b6130018d828e01612b7b565b95505060c06130128d828e01612bd6565b94505060e06130238d828e01612c3d565b9350506101006130358d828e01612b63565b9250506101206130478d828e01612b63565b9150509295989b9194979a5092959850565b61306281613379565b82525050565b61306281613392565b61306281612a4d565b60008284526020840193506130908385846133dc565b61309983613414565b9093019392505050565b613062816133c2565b60006130b782613375565b8084526130cb8160208601602086016133e8565b6130d481613414565b9093016020019392505050565b6000815460018116600081146130fe576001811461313a57613176565b60028204607f1685527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082166020860152604085019250613176565b6002820480865260208601955061315085613369565b60005b8281101561316f57815488820152600190910190602001613153565b8701945050505b505092915050565b8051606083019061318f8482613071565b5060208201516131a26020850182613071565b5060408201516126ec6040850182613071565b805160808301906131c6848261317e565b5060208201516126ec6060850182613071565b61306281613397565b606081016131f08287613059565b6131fd60208301866130a3565b818103604083015261321081848661307a565b9695505050505050565b604081016132288285613059565b610d016020830184613071565b60208101610d7c8284613068565b608081016132518287613071565b61325e60208301866131d9565b61326b6040830185613071565b6132786060830184613071565b95945050505050565b60208082528101610d0181846130ac565b60208082528101610d0181846130e1565b60608101610d7c828461317e565b60808101610d7c82846131b5565b60208101610d7c8284613071565b60208101610d7c82846131d9565b60405181810167ffffffffffffffff811182821017156132fa57600080fd5b604052919050565b600067ffffffffffffffff82111561331957600080fd5b5060209081020190565b600067ffffffffffffffff82111561333a57600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60009081526020902090565b5190565b73ffffffffffffffffffffffffffffffffffffffff1690565b151590565b60ff1690565b7fffffffff000000000000000000000000000000000000000000000000000000001690565b6000610d7c82613379565b600060048210612a0d57600080fd5b82818337506000910152565b60005b838110156134035781810151838201526020016133eb565b838111156126ec5750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016905600a265627a7a72305820fcef133d4d56dc03bdeec7b7b4b71b4f71699f75c349d154d99aa1afbefbc6546c6578706572696d656e74616cf50037
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000bab2ffe40c73e2983030e5e23fb32cc0f30916590000000000000000000000000000000000000000000000000000000000000080000000000000000000000000684564950fdafedad73a79c9074aed1b85428feb00000000000000000000000042e54856ac383a86b404ab9fdbfc9224e5527b2f00000000000000000000000000000000000000000000000000000000000000632f697066732f7a4275724b394462446671524e397a7355486d685739315a4a627364384b64746a796e5258615061366a315346716e5154726579746d677a6b7945616347725356566d59615a5734506837477577616b53597345556b567a67485547560000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _fstkAuthority (address): 0xBab2Ffe40c73E2983030e5E23Fb32Cc0F3091659
Arg [1] : _metadata (string): /ipfs/zBurK9DbDfqRN9zsUHmhW91ZJbsd8KdtjynRXaPa6j1SFqnQTreytmgzkyEacGrSVVmYaZW4Ph7GuwakSYsEUkVzgHUGV
Arg [2] : coldWallet (address): 0x684564950fDaFeDad73A79C9074AeD1b85428FEb
Arg [3] : allocation (address): 0x42E54856aC383a86b404Ab9FdBFC9224E5527b2F
-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 000000000000000000000000bab2ffe40c73e2983030e5e23fb32cc0f3091659
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 000000000000000000000000684564950fdafedad73a79c9074aed1b85428feb
Arg [3] : 00000000000000000000000042e54856ac383a86b404ab9fdbfc9224e5527b2f
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000063
Arg [5] : 2f697066732f7a4275724b394462446671524e397a7355486d685739315a4a62
Arg [6] : 7364384b64746a796e5258615061366a315346716e5154726579746d677a6b79
Arg [7] : 45616347725356566d59615a5734506837477577616b53597345556b567a6748
Arg [8] : 5547560000000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.