Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 673 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 13847392 | 1249 days ago | IN | 0 ETH | 0.00251699 | ||||
Transfer | 13745478 | 1265 days ago | IN | 0 ETH | 0.0040905 | ||||
Transfer | 11608520 | 1596 days ago | IN | 0 ETH | 0.00591705 | ||||
Transfer | 9630728 | 1902 days ago | IN | 0 ETH | 0.00041402 | ||||
Transfer | 9469389 | 1926 days ago | IN | 0 ETH | 0.00041402 | ||||
Transfer | 9053104 | 1996 days ago | IN | 0 ETH | 0.0001609 | ||||
Transfer | 8797394 | 2038 days ago | IN | 0 ETH | 0.00105248 | ||||
Transfer | 8788787 | 2040 days ago | IN | 0 ETH | 0.00048626 | ||||
Transfer | 8756463 | 2045 days ago | IN | 0 ETH | 0.00004862 | ||||
Transfer | 8699073 | 2054 days ago | IN | 0 ETH | 0.00076299 | ||||
Transfer | 8456897 | 2092 days ago | IN | 0 ETH | 0.00158399 | ||||
Transfer | 8444907 | 2094 days ago | IN | 0 ETH | 0.00148942 | ||||
Transfer | 8201856 | 2131 days ago | IN | 0 ETH | 0.00015479 | ||||
Transfer | 8038994 | 2157 days ago | IN | 0 ETH | 0.00077396 | ||||
Transfer | 8013338 | 2161 days ago | IN | 0 ETH | 0.00038634 | ||||
Transfer | 7988953 | 2165 days ago | IN | 0 ETH | 0.00097817 | ||||
Transfer | 7978810 | 2166 days ago | IN | 0 ETH | 0.00009453 | ||||
Transfer | 7978636 | 2166 days ago | IN | 0 ETH | 0.000951 | ||||
Transfer | 7935608 | 2173 days ago | IN | 0 ETH | 0.0014216 | ||||
Transfer | 7935491 | 2173 days ago | IN | 0 ETH | 0.00048328 | ||||
Transfer | 7829600 | 2189 days ago | IN | 0 ETH | 0.00038698 | ||||
Transfer | 7808698 | 2193 days ago | IN | 0 ETH | 0.00058997 | ||||
Transfer | 7732294 | 2205 days ago | IN | 0 ETH | 0.00040177 | ||||
Transfer | 7727446 | 2205 days ago | IN | 0 ETH | 0.00096899 | ||||
Transfer | 7727423 | 2205 days ago | IN | 0 ETH | 0.00158399 |
Loading...
Loading
Contract Name:
JCT
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-08-28 */ pragma solidity ^0.4.24; /* _____ ______ ________ * / | / \ / | * $$$$$ | /$$$$$$ | $$$$$$$$/ * $$ | $$ | $$/ $$ | * __ $$ | $$ | $$ | * / | $$ | $$ | __ $$ | * $$ \__$$ | $$ \__/ | $$ | * $$ $$/ $$ $$/ $$ | * $$$$$$/ $$$$$$/ $$/ */ /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization * control functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; address public collector; address public distributor; address public freezer; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event CollectorshipTransferred(address indexed previousCollector, address indexed newCollector); event DistributorshipTransferred(address indexed previousDistributor, address indexed newDistributor); event FreezershipTransferred(address indexed previousFreezer, address indexed newFreezer); /** * @dev The Ownable constructor sets the original `owner`, `collector`, `distributor` and `freezer` of the contract to the * sender account. */ constructor() public { owner = msg.sender; collector = msg.sender; distributor = msg.sender; freezer = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Throws if called by any account other than the collector. */ modifier onlyCollector() { require(msg.sender == collector); _; } /** * @dev Throws if called by any account other than the distributor. */ modifier onlyDistributor() { require(msg.sender == distributor); _; } /** * @dev Throws if called by any account other than the freezer. */ modifier onlyFreezer() { require(msg.sender == freezer); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) onlyOwner public { require(isNonZeroAccount(newOwner)); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } /** * @dev Allows the owner to transfer control of the contract to a newCollector. * @param newCollector The address to transfer collectorship to. */ function transferCollectorship(address newCollector) onlyOwner public { require(isNonZeroAccount(newCollector)); emit CollectorshipTransferred(collector, newCollector); collector = newCollector; } /** * @dev Allows the owner to transfer control of the contract to a newDistributor. * @param newDistributor The address to transfer distributorship to. */ function transferDistributorship(address newDistributor) onlyOwner public { require(isNonZeroAccount(newDistributor)); emit DistributorshipTransferred(distributor, newDistributor); distributor = newDistributor; } /** * @dev Allows the owner to transfer control of the contract to a newFreezer. * @param newFreezer The address to transfer freezership to. */ function transferFreezership(address newFreezer) onlyOwner public { require(isNonZeroAccount(newFreezer)); emit FreezershipTransferred(freezer, newFreezer); freezer = newFreezer; } // check if the given account is valid function isNonZeroAccount(address _addr) internal pure returns (bool is_nonzero_account) { return _addr != address(0); } } /** * @title ERC20 * @dev ERC20 contract interface */ contract ERC20 { uint public totalSupply; function balanceOf(address who) public view returns (uint); function totalSupply() public view returns (uint256 _supply); function transfer(address to, uint value) public returns (bool ok); function transferFrom(address _from, address _to, uint256 _value) public returns (bool success); function approve(address _spender, uint256 _value) public returns (bool success); function allowance(address _owner, address _spender) public view returns (uint256 remaining); function name() public view returns (string _name); function symbol() public view returns (string _symbol); function decimals() public view returns (uint8 _decimals); event Transfer(address indexed _from, address indexed _to, uint256 _value); event Approval(address indexed _owner, address indexed _spender, uint _value); } /** * @title JCT * @author Daisuke Hirata & Noriyuki Izawa * @dev JCT is an ERC20 Token. First envisioned by NANJCOIN */ contract JCT is ERC20, Ownable { using SafeMath for uint256; string public name = "JCT"; string public symbol = "JCT"; uint8 public decimals = 8; uint256 public totalSupply = 18e7 * 1e8; address public relay; mapping(address => uint256) public balanceOf; mapping(address => mapping (address => uint256)) public allowance; mapping (address => bool) public frozenAccount; mapping (address => uint256) public unlockUnixTime; event FrozenFunds(address indexed target, bool frozen); event LockedFunds(address indexed target, uint256 locked); /** * @dev Constructor is called only once and can not be called again */ constructor(address founder, address _relay) public { owner = founder; collector = founder; distributor = founder; freezer = founder; balanceOf[founder] = totalSupply; relay = _relay; } modifier onlyAuthorized() { require(msg.sender == relay || checkMessageData(msg.sender)); _; } function name() public view returns (string _name) { return name; } function symbol() public view returns (string _symbol) { return symbol; } function decimals() public view returns (uint8 _decimals) { return decimals; } function totalSupply() public view returns (uint256 _totalSupply) { return totalSupply; } function balanceOf(address _owner) public view returns (uint256 balance) { return balanceOf[_owner]; } /** * @dev Prevent targets from sending or receiving tokens * @param targets Addresses to be frozen * @param isFrozen either to freeze it or not */ function freezeAccounts(address[] targets, bool isFrozen) onlyFreezer public { require(targets.length > 0); for (uint j = 0; j < targets.length; j++) { require(isNonZeroAccount(targets[j])); frozenAccount[targets[j]] = isFrozen; emit FrozenFunds(targets[j], isFrozen); } } /** * @dev Prevent targets from sending or receiving tokens by setting Unix times * @param targets Addresses to be locked funds * @param unixTimes Unix times when locking up will be finished */ function lockupAccounts(address[] targets, uint[] unixTimes) onlyOwner public { require(hasSameArrayLength(targets, unixTimes)); for(uint j = 0; j < targets.length; j++){ require(unlockUnixTime[targets[j]] < unixTimes[j]); unlockUnixTime[targets[j]] = unixTimes[j]; emit LockedFunds(targets[j], unixTimes[j]); } } /** * @dev Standard function transfer with no _data */ function transfer(address _to, uint _value) public returns (bool success) { require(hasEnoughBalance(msg.sender, _value) && isAvailableAccount(msg.sender) && isAvailableAccount(_to)); balanceOf[msg.sender] = balanceOf[msg.sender].sub(_value); balanceOf[_to] = balanceOf[_to].add(_value); emit Transfer(msg.sender, _to, _value); return true; } /** * @dev Transfer tokens from one address to another * @param _from address The address which you want to send tokens from * @param _to address The address which you want to transfer to * @param _value uint256 the amount of tokens to be transferred */ function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) { require(isNonZeroAccount(_to) && hasEnoughBalance(_from, _value) && hasEnoughAllowance(_from, msg.sender, _value) && isAvailableAccount(_from) && isAvailableAccount(_to)); balanceOf[_from] = balanceOf[_from].sub(_value); balanceOf[_to] = balanceOf[_to].add(_value); allowance[_from][msg.sender] = allowance[_from][msg.sender].sub(_value); emit Transfer(_from, _to, _value); return true; } /** * @dev Allows _spender to spend no more than _value tokens in your behalf * @param _spender The address authorized to spend * @param _value the max amount they can spend */ function approve(address _spender, uint256 _value) public returns (bool success) { allowance[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } /** * @dev Allows _spender to spend no more than _value tokens in your behalf. intended to be called from TxRelay contract */ function approveTokenCollection(address _claimedSender, address _spender, uint256 _value) onlyAuthorized public returns (bool success) { require(isAvailableAccount(_claimedSender) && isAvailableAccount(msg.sender)); allowance[_claimedSender][_spender] = _value; emit Approval(_claimedSender, _spender, _value); return true; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender * @param _owner address The address which owns the funds * @param _spender address The address which will spend the funds */ function allowance(address _owner, address _spender) public view returns (uint256 remaining) { return allowance[_owner][_spender]; } /** * @dev Function to collect tokens from the list of addresses */ function collectTokens(address[] addresses, uint[] amounts) onlyCollector public returns (bool) { require(hasSameArrayLength(addresses, amounts)); uint256 totalAmount = 0; for (uint j = 0; j < addresses.length; j++) { require(amounts[j] > 0 && isNonZeroAccount(addresses[j]) && isAvailableAccount(addresses[j]) && hasEnoughAllowance(addresses[j], msg.sender, amounts[j])); require(hasEnoughBalance(addresses[j], amounts[j])); balanceOf[addresses[j]] = balanceOf[addresses[j]].sub(amounts[j]); allowance[addresses[j]][msg.sender] = allowance[addresses[j]][msg.sender].sub(amounts[j]); totalAmount = totalAmount.add(amounts[j]); emit Transfer(addresses[j], msg.sender, amounts[j]); } balanceOf[msg.sender] = balanceOf[msg.sender].add(totalAmount); return true; } /** * @dev Function to distribute tokens to the list of addresses */ function distributeTokens(address[] addresses, uint[] amounts) onlyDistributor public returns (bool) { require(hasSameArrayLength(addresses, amounts) && isAvailableAccount(msg.sender)); uint256 totalAmount = 0; for(uint j = 0; j < addresses.length; j++){ require(amounts[j] > 0 && isNonZeroAccount(addresses[j]) && isAvailableAccount(addresses[j])); totalAmount = totalAmount.add(amounts[j]); } require(hasEnoughBalance(msg.sender, totalAmount)); for (j = 0; j < addresses.length; j++) { balanceOf[addresses[j]] = balanceOf[addresses[j]].add(amounts[j]); emit Transfer(msg.sender, addresses[j], amounts[j]); } balanceOf[msg.sender] = balanceOf[msg.sender].sub(totalAmount); return true; } // check if the given account is available function isAvailableAccount(address _addr) public view returns (bool is_valid_account) { return isUnLockedAccount(_addr) && isUnfrozenAccount(_addr); } // check if the given account is not locked up function isUnLockedAccount(address _addr) public view returns (bool is_unlocked_account) { return now > unlockUnixTime[_addr]; } // check if the given account is not frozen function isUnfrozenAccount(address _addr) public view returns (bool is_unfrozen_account) { return frozenAccount[_addr] == false; } // check if the given account has enough balance more than given amount function hasEnoughBalance(address _addr, uint256 _value) public view returns (bool has_enough_balance) { return _value > 0 && balanceOf[_addr] >= _value; } // check if the given spender has enough allowance of owner more than given amount function hasEnoughAllowance(address _owner, address _spender, uint256 _value) public view returns (bool has_enough_balance) { return allowance[_owner][_spender] >= _value; } // check if the given account is not frozen function hasSameArrayLength(address[] addresses, uint[] amounts) private pure returns (bool has_same_array_length) { return addresses.length > 0 && addresses.length == amounts.length; } //Checks that address a is the first input in msg.data. //Has very minimal gas overhead. function checkMessageData(address a) private pure returns (bool t) { if (msg.data.length < 36) return false; assembly { let mask := 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF t := eq(a, and(mask, calldataload(4))) } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"_name","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"hasEnoughAllowance","outputs":[{"name":"has_enough_balance","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"_totalSupply","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"isUnLockedAccount","outputs":[{"name":"is_unlocked_account","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newCollector","type":"address"}],"name":"transferCollectorship","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"_decimals","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newFreezer","type":"address"}],"name":"transferFreezership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addresses","type":"address[]"},{"name":"amounts","type":"uint256[]"}],"name":"distributeTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"targets","type":"address[]"},{"name":"unixTimes","type":"uint256[]"}],"name":"lockupAccounts","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"collector","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"freezer","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"_symbol","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_claimedSender","type":"address"},{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approveTokenCollection","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"isAvailableAccount","outputs":[{"name":"is_valid_account","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"frozenAccount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"relay","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"distributor","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"targets","type":"address[]"},{"name":"isFrozen","type":"bool"}],"name":"freezeAccounts","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"unlockUnixTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"},{"name":"_value","type":"uint256"}],"name":"hasEnoughBalance","outputs":[{"name":"has_enough_balance","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newDistributor","type":"address"}],"name":"transferDistributorship","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addresses","type":"address[]"},{"name":"amounts","type":"uint256[]"}],"name":"collectTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"isUnfrozenAccount","outputs":[{"name":"is_unfrozen_account","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"founder","type":"address"},{"name":"_relay","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"target","type":"address"},{"indexed":false,"name":"frozen","type":"bool"}],"name":"FrozenFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"target","type":"address"},{"indexed":false,"name":"locked","type":"uint256"}],"name":"LockedFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousCollector","type":"address"},{"indexed":true,"name":"newCollector","type":"address"}],"name":"CollectorshipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousDistributor","type":"address"},{"indexed":true,"name":"newDistributor","type":"address"}],"name":"DistributorshipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousFreezer","type":"address"},{"indexed":true,"name":"newFreezer","type":"address"}],"name":"FreezershipTransferred","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"}]
Contract Creation Code
60806040526040805190810160405280600381526020017f4a43540000000000000000000000000000000000000000000000000000000000815250600590805190602001906200005192919062000399565b506040805190810160405280600381526020017f4a43540000000000000000000000000000000000000000000000000000000000815250600690805190602001906200009f92919062000399565b506008600760006101000a81548160ff021916908360ff160217905550663ff2e795f50000600855348015620000d457600080fd5b506040516040806200300d833981018060405281019080805190602001909291908051906020019092919050505033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600854600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505062000448565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003dc57805160ff19168380011785556200040d565b828001600101855582156200040d579182015b828111156200040c578251825591602001919060010190620003ef565b5b5090506200041c919062000420565b5090565b6200044591905b808211156200044157600081600090555060010162000427565b5090565b90565b612bb580620004586000396000f300608060405260043610610180576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610185578063095ea7b3146102155780630c89ef351461027a57806318160ddd146102ff5780631a8432ea1461032a57806323b872dd1461038557806328ea0fc31461040a578063313ce5671461044d5780634231e2d71461047e5780634bd09c2a146104c157806364ddc6051461058257806370a082311461062b5780638da5cb5b14610682578063913e77ad146106d9578063927160541461073057806395d89b411461078757806397ebe0d614610817578063a3d884531461089c578063a9059cbb146108f7578063b414d4b61461095c578063b59589d1146109b7578063bfe1092814610a0e578063c341b9f614610a65578063cbbe974b14610ad7578063dd62ed3e14610b2e578063e359cbbb14610ba5578063ecd9c15514610c0a578063f0dc417114610c4d578063f2fde38b14610d0e578063ff46f21014610d51575b600080fd5b34801561019157600080fd5b5061019a610dac565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101da5780820151818401526020810190506101bf565b50505050905090810190601f1680156102075780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022157600080fd5b50610260600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e4e565b604051808215151515815260200191505060405180910390f35b34801561028657600080fd5b506102e5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f40565b604051808215151515815260200191505060405180910390f35b34801561030b57600080fd5b50610314610fcb565b6040518082815260200191505060405180910390f35b34801561033657600080fd5b5061036b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fd5565b604051808215151515815260200191505060405180910390f35b34801561039157600080fd5b506103f0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611020565b604051808215151515815260200191505060405180910390f35b34801561041657600080fd5b5061044b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611326565b005b34801561045957600080fd5b50610462611456565b604051808260ff1660ff16815260200191505060405180910390f35b34801561048a57600080fd5b506104bf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061146d565b005b3480156104cd57600080fd5b50610568600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061159d565b604051808215151515815260200191505060405180910390f35b34801561058e57600080fd5b506106296004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611923565b005b34801561063757600080fd5b5061066c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b1f565b6040518082815260200191505060405180910390f35b34801561068e57600080fd5b50610697611b68565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106e557600080fd5b506106ee611b8e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561073c57600080fd5b50610745611bb4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561079357600080fd5b5061079c611bda565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107dc5780820151818401526020810190506107c1565b50505050905090810190601f1680156108095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561082357600080fd5b50610882600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c7c565b604051808215151515815260200191505060405180910390f35b3480156108a857600080fd5b506108dd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e00565b604051808215151515815260200191505060405180910390f35b34801561090357600080fd5b50610942600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e23565b604051808215151515815260200191505060405180910390f35b34801561096857600080fd5b5061099d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ff5565b604051808215151515815260200191505060405180910390f35b3480156109c357600080fd5b506109cc612015565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a1a57600080fd5b50610a2361203b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a7157600080fd5b50610ad560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803515159060200190929190505050612061565b005b348015610ae357600080fd5b50610b18600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121f1565b6040518082815260200191505060405180910390f35b348015610b3a57600080fd5b50610b8f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612209565b6040518082815260200191505060405180910390f35b348015610bb157600080fd5b50610bf0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612290565b604051808215151515815260200191505060405180910390f35b348015610c1657600080fd5b50610c4b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122e8565b005b348015610c5957600080fd5b50610cf46004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050612418565b604051808215151515815260200191505060405180910390f35b348015610d1a57600080fd5b50610d4f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612935565b005b348015610d5d57600080fd5b50610d92600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a65565b604051808215151515815260200191505060405180910390f35b606060058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e445780601f10610e1957610100808354040283529160200191610e44565b820191906000526020600020905b815481529060010190602001808311610e2757829003601f168201915b5050505050905090565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101590509392505050565b6000600854905090565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442119050919050565b600061102b83612ac1565b801561103d575061103c8483612290565b5b8015611050575061104f843384610f40565b5b8015611061575061106084611e00565b5b8015611072575061107183611e00565b5b151561107d57600080fd5b6110cf82600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612afa90919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061116482600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1390919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061123682600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612afa90919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561138257600080fd5b61138b81612ac1565b151561139657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd992b87b06713a04c5806924ee3c29dbf04a04144c28c14fd6818e161bbd9a5860405160405180910390a380600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600760009054906101000a900460ff16905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114c957600080fd5b6114d281612ac1565b15156114dd57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1033cd1b6544a47e7e262eedb7004b145ab50943e4c2cc67e354b4acdb57564f60405160405180910390a380600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115fe57600080fd5b6116088585612b31565b8015611619575061161833611e00565b5b151561162457600080fd5b60009150600090505b84518110156116e5576000848281518110151561164657fe5b906020019060200201511180156116795750611678858281518110151561166957fe5b90602001906020020151612ac1565b5b80156116a157506116a0858281518110151561169157fe5b90602001906020020151611e00565b5b15156116ac57600080fd5b6116d684828151811015156116bd57fe5b9060200190602002015183612b1390919063ffffffff16565b9150808060010191505061162d565b6116ef3383612290565b15156116fa57600080fd5b600090505b845181101561188257611788848281518110151561171957fe5b90602001906020020151600a6000888581518110151561173557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1390919063ffffffff16565b600a6000878481518110151561179a57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084818151811015156117f057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef868481518110151561185657fe5b906020019060200201516040518082815260200191505060405180910390a380806001019150506116ff565b6118d482600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612afa90919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019250505092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561198157600080fd5b61198b8383612b31565b151561199657600080fd5b600090505b8251811015611b1a5781818151811015156119b257fe5b90602001906020020151600d600085848151811015156119ce57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515611a1f57600080fd5b8181815181101515611a2d57fe5b90602001906020020151600d60008584815181101515611a4957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508281815181101515611a9f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff167f1bd6fb9fa2c39ce5d0d2afa1eaba998963eb5f553fd862c94f131aa9e35c15778383815181101515611aee57fe5b906020019060200201516040518082815260200191505060405180910390a2808060010191505061199b565b505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c725780601f10611c4757610100808354040283529160200191611c72565b820191906000526020600020905b815481529060010190602001808311611c5557829003601f168201915b5050505050905090565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611cdf5750611cde33612b4c565b5b1515611cea57600080fd5b611cf384611e00565b8015611d045750611d0333611e00565b5b1515611d0f57600080fd5b81600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a3600190509392505050565b6000611e0b82610fd5565b8015611e1c5750611e1b82612a65565b5b9050919050565b6000611e2f3383612290565b8015611e405750611e3f33611e00565b5b8015611e515750611e5083611e00565b5b1515611e5c57600080fd5b611eae82600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612afa90919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f4382600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1390919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600c6020528060005260406000206000915054906101000a900460ff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120bf57600080fd5b600083511115156120cf57600080fd5b600090505b82518110156121ec576120fd83828151811015156120ee57fe5b90602001906020020151612ac1565b151561210857600080fd5b81600c6000858481518110151561211b57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550828181518110151561218457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff167f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a583604051808215151515815260200191505060405180910390a280806001019150506120d4565b505050565b600d6020528060005260406000206000915090505481565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080821180156122e0575081600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561234457600080fd5b61234d81612ac1565b151561235857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f15d6a222d98c55f7cb4bf969055edad614234b365bf9f9342394edb573e32dc160405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561247957600080fd5b6124838585612b31565b151561248e57600080fd5b60009150600090505b845181101561289457600084828151811015156124b057fe5b906020019060200201511180156124e357506124e285828151811015156124d357fe5b90602001906020020151612ac1565b5b801561250b575061250a85828151811015156124fb57fe5b90602001906020020151611e00565b5b801561254c575061254b858281518110151561252357fe5b9060200190602002015133868481518110151561253c57fe5b90602001906020020151610f40565b5b151561255757600080fd5b61258f858281518110151561256857fe5b90602001906020020151858381518110151561258057fe5b90602001906020020151612290565b151561259a57600080fd5b61261a84828151811015156125ab57fe5b90602001906020020151600a600088858151811015156125c757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612afa90919063ffffffff16565b600a6000878481518110151561262c57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612731848281518110151561268557fe5b90602001906020020151600b600088858151811015156126a157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612afa90919063ffffffff16565b600b6000878481518110151561274357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127f284828151811015156127d957fe5b9060200190602002015183612b1390919063ffffffff16565b91503373ffffffffffffffffffffffffffffffffffffffff16858281518110151561281957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef868481518110151561286857fe5b906020019060200201516040518082815260200191505060405180910390a38080600101915050612497565b6128e682600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1390919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019250505092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561299157600080fd5b61299a81612ac1565b15156129a557600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000801515600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000828211151515612b0857fe5b818303905092915050565b6000808284019050838110151515612b2757fe5b8091505092915050565b6000808351118015612b44575081518351145b905092915050565b6000602460003690501015612b645760009050612b84565b73ffffffffffffffffffffffffffffffffffffffff600435811683149150505b9190505600a165627a7a723058202ead92c3fe36c204f6224d995c90d481f4614a35f37a0546ec77124aae91a0f90029000000000000000000000000f64c412d7ad6b9317cafec098c24f7c15cb3bcc10000000000000000000000002057bbafad6e3073c7ee643538770093c965d659
Deployed Bytecode
0x608060405260043610610180576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610185578063095ea7b3146102155780630c89ef351461027a57806318160ddd146102ff5780631a8432ea1461032a57806323b872dd1461038557806328ea0fc31461040a578063313ce5671461044d5780634231e2d71461047e5780634bd09c2a146104c157806364ddc6051461058257806370a082311461062b5780638da5cb5b14610682578063913e77ad146106d9578063927160541461073057806395d89b411461078757806397ebe0d614610817578063a3d884531461089c578063a9059cbb146108f7578063b414d4b61461095c578063b59589d1146109b7578063bfe1092814610a0e578063c341b9f614610a65578063cbbe974b14610ad7578063dd62ed3e14610b2e578063e359cbbb14610ba5578063ecd9c15514610c0a578063f0dc417114610c4d578063f2fde38b14610d0e578063ff46f21014610d51575b600080fd5b34801561019157600080fd5b5061019a610dac565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101da5780820151818401526020810190506101bf565b50505050905090810190601f1680156102075780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022157600080fd5b50610260600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e4e565b604051808215151515815260200191505060405180910390f35b34801561028657600080fd5b506102e5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f40565b604051808215151515815260200191505060405180910390f35b34801561030b57600080fd5b50610314610fcb565b6040518082815260200191505060405180910390f35b34801561033657600080fd5b5061036b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fd5565b604051808215151515815260200191505060405180910390f35b34801561039157600080fd5b506103f0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611020565b604051808215151515815260200191505060405180910390f35b34801561041657600080fd5b5061044b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611326565b005b34801561045957600080fd5b50610462611456565b604051808260ff1660ff16815260200191505060405180910390f35b34801561048a57600080fd5b506104bf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061146d565b005b3480156104cd57600080fd5b50610568600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061159d565b604051808215151515815260200191505060405180910390f35b34801561058e57600080fd5b506106296004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611923565b005b34801561063757600080fd5b5061066c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b1f565b6040518082815260200191505060405180910390f35b34801561068e57600080fd5b50610697611b68565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106e557600080fd5b506106ee611b8e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561073c57600080fd5b50610745611bb4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561079357600080fd5b5061079c611bda565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107dc5780820151818401526020810190506107c1565b50505050905090810190601f1680156108095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561082357600080fd5b50610882600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c7c565b604051808215151515815260200191505060405180910390f35b3480156108a857600080fd5b506108dd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e00565b604051808215151515815260200191505060405180910390f35b34801561090357600080fd5b50610942600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e23565b604051808215151515815260200191505060405180910390f35b34801561096857600080fd5b5061099d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ff5565b604051808215151515815260200191505060405180910390f35b3480156109c357600080fd5b506109cc612015565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a1a57600080fd5b50610a2361203b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a7157600080fd5b50610ad560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803515159060200190929190505050612061565b005b348015610ae357600080fd5b50610b18600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121f1565b6040518082815260200191505060405180910390f35b348015610b3a57600080fd5b50610b8f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612209565b6040518082815260200191505060405180910390f35b348015610bb157600080fd5b50610bf0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612290565b604051808215151515815260200191505060405180910390f35b348015610c1657600080fd5b50610c4b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122e8565b005b348015610c5957600080fd5b50610cf46004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050612418565b604051808215151515815260200191505060405180910390f35b348015610d1a57600080fd5b50610d4f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612935565b005b348015610d5d57600080fd5b50610d92600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a65565b604051808215151515815260200191505060405180910390f35b606060058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e445780601f10610e1957610100808354040283529160200191610e44565b820191906000526020600020905b815481529060010190602001808311610e2757829003601f168201915b5050505050905090565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101590509392505050565b6000600854905090565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442119050919050565b600061102b83612ac1565b801561103d575061103c8483612290565b5b8015611050575061104f843384610f40565b5b8015611061575061106084611e00565b5b8015611072575061107183611e00565b5b151561107d57600080fd5b6110cf82600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612afa90919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061116482600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1390919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061123682600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612afa90919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561138257600080fd5b61138b81612ac1565b151561139657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd992b87b06713a04c5806924ee3c29dbf04a04144c28c14fd6818e161bbd9a5860405160405180910390a380600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600760009054906101000a900460ff16905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114c957600080fd5b6114d281612ac1565b15156114dd57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1033cd1b6544a47e7e262eedb7004b145ab50943e4c2cc67e354b4acdb57564f60405160405180910390a380600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115fe57600080fd5b6116088585612b31565b8015611619575061161833611e00565b5b151561162457600080fd5b60009150600090505b84518110156116e5576000848281518110151561164657fe5b906020019060200201511180156116795750611678858281518110151561166957fe5b90602001906020020151612ac1565b5b80156116a157506116a0858281518110151561169157fe5b90602001906020020151611e00565b5b15156116ac57600080fd5b6116d684828151811015156116bd57fe5b9060200190602002015183612b1390919063ffffffff16565b9150808060010191505061162d565b6116ef3383612290565b15156116fa57600080fd5b600090505b845181101561188257611788848281518110151561171957fe5b90602001906020020151600a6000888581518110151561173557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1390919063ffffffff16565b600a6000878481518110151561179a57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084818151811015156117f057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef868481518110151561185657fe5b906020019060200201516040518082815260200191505060405180910390a380806001019150506116ff565b6118d482600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612afa90919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019250505092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561198157600080fd5b61198b8383612b31565b151561199657600080fd5b600090505b8251811015611b1a5781818151811015156119b257fe5b90602001906020020151600d600085848151811015156119ce57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515611a1f57600080fd5b8181815181101515611a2d57fe5b90602001906020020151600d60008584815181101515611a4957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508281815181101515611a9f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff167f1bd6fb9fa2c39ce5d0d2afa1eaba998963eb5f553fd862c94f131aa9e35c15778383815181101515611aee57fe5b906020019060200201516040518082815260200191505060405180910390a2808060010191505061199b565b505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c725780601f10611c4757610100808354040283529160200191611c72565b820191906000526020600020905b815481529060010190602001808311611c5557829003601f168201915b5050505050905090565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611cdf5750611cde33612b4c565b5b1515611cea57600080fd5b611cf384611e00565b8015611d045750611d0333611e00565b5b1515611d0f57600080fd5b81600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a3600190509392505050565b6000611e0b82610fd5565b8015611e1c5750611e1b82612a65565b5b9050919050565b6000611e2f3383612290565b8015611e405750611e3f33611e00565b5b8015611e515750611e5083611e00565b5b1515611e5c57600080fd5b611eae82600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612afa90919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f4382600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1390919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600c6020528060005260406000206000915054906101000a900460ff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120bf57600080fd5b600083511115156120cf57600080fd5b600090505b82518110156121ec576120fd83828151811015156120ee57fe5b90602001906020020151612ac1565b151561210857600080fd5b81600c6000858481518110151561211b57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550828181518110151561218457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff167f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a583604051808215151515815260200191505060405180910390a280806001019150506120d4565b505050565b600d6020528060005260406000206000915090505481565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080821180156122e0575081600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561234457600080fd5b61234d81612ac1565b151561235857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f15d6a222d98c55f7cb4bf969055edad614234b365bf9f9342394edb573e32dc160405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561247957600080fd5b6124838585612b31565b151561248e57600080fd5b60009150600090505b845181101561289457600084828151811015156124b057fe5b906020019060200201511180156124e357506124e285828151811015156124d357fe5b90602001906020020151612ac1565b5b801561250b575061250a85828151811015156124fb57fe5b90602001906020020151611e00565b5b801561254c575061254b858281518110151561252357fe5b9060200190602002015133868481518110151561253c57fe5b90602001906020020151610f40565b5b151561255757600080fd5b61258f858281518110151561256857fe5b90602001906020020151858381518110151561258057fe5b90602001906020020151612290565b151561259a57600080fd5b61261a84828151811015156125ab57fe5b90602001906020020151600a600088858151811015156125c757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612afa90919063ffffffff16565b600a6000878481518110151561262c57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612731848281518110151561268557fe5b90602001906020020151600b600088858151811015156126a157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612afa90919063ffffffff16565b600b6000878481518110151561274357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127f284828151811015156127d957fe5b9060200190602002015183612b1390919063ffffffff16565b91503373ffffffffffffffffffffffffffffffffffffffff16858281518110151561281957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef868481518110151561286857fe5b906020019060200201516040518082815260200191505060405180910390a38080600101915050612497565b6128e682600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1390919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019250505092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561299157600080fd5b61299a81612ac1565b15156129a557600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000801515600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000828211151515612b0857fe5b818303905092915050565b6000808284019050838110151515612b2757fe5b8091505092915050565b6000808351118015612b44575081518351145b905092915050565b6000602460003690501015612b645760009050612b84565b73ffffffffffffffffffffffffffffffffffffffff600435811683149150505b9190505600a165627a7a723058202ead92c3fe36c204f6224d995c90d481f4614a35f37a0546ec77124aae91a0f90029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f64c412d7ad6b9317cafec098c24f7c15cb3bcc10000000000000000000000002057bbafad6e3073c7ee643538770093c965d659
-----Decoded View---------------
Arg [0] : founder (address): 0xf64C412D7aD6b9317caFEc098c24F7c15Cb3bCC1
Arg [1] : _relay (address): 0x2057bBAFAd6e3073c7EE643538770093c965d659
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000f64c412d7ad6b9317cafec098c24f7c15cb3bcc1
Arg [1] : 0000000000000000000000002057bbafad6e3073c7ee643538770093c965d659
Swarm Source
bzzr://2ead92c3fe36c204f6224d995c90d481f4614a35f37a0546ec77124aae91a0f9
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.