ETH Price: $2,346.73 (+7.60%)

Contract

0x27dcD5e49B14A5dA4202Fe2A778fDD22f09007cf
 

Overview

ETH Balance

0.000000004 ETH

Eth Value

Less Than $0.01 (@ $2,346.73/ETH)

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Spend155344872022-09-14 18:41:481279 days ago1663180908IN
0x27dcD5e4...2f09007cf
0 ETH0.0037542149.77215786
Transfer155136862022-09-11 7:58:501282 days ago1662883130IN
0x27dcD5e4...2f09007cf
0.21272716 ETH0.0002297610.24771337
Spend154649962022-09-03 11:00:591290 days ago1662202859IN
0x27dcD5e4...2f09007cf
0 ETH0.000565357.49643614
Transfer154582582022-09-02 9:05:311291 days ago1662109531IN
0x27dcD5e4...2f09007cf
0.21456578 ETH0.000215649.6180666
Transfer154023612022-08-24 10:20:351300 days ago1661336435IN
0x27dcD5e4...2f09007cf
0.22094999 ETH0.000105114.68829753
Transfer153452802022-08-15 9:32:021309 days ago1660555922IN
0x27dcD5e4...2f09007cf
0.2007731 ETH0.000304213.56769848
Transfer152941302022-08-07 8:37:501317 days ago1659861470IN
0x27dcD5e4...2f09007cf
0.21123925 ETH0.000170687.61281618
Transfer152573682022-08-01 14:59:321323 days ago1659365972IN
0x27dcD5e4...2f09007cf
0.22263245 ETH0.0003471515.48346876
Spend152566512022-08-01 12:26:441323 days ago1659356804IN
0x27dcD5e4...2f09007cf
0 ETH0.0015496620.54163834
Transfer152236052022-07-27 9:05:001328 days ago1658912700IN
0x27dcD5e4...2f09007cf
0.202444 ETH0.000200648.94895158
Transfer151978642022-07-23 8:31:431332 days ago1658565103IN
0x27dcD5e4...2f09007cf
0.23479024 ETH0.000195368.71340296
Spend151746662022-07-19 18:22:231336 days ago1658254943IN
0x27dcD5e4...2f09007cf
0 ETH0.0028090130.35855307
Transfer151717862022-07-19 7:45:491336 days ago1658216749IN
0x27dcD5e4...2f09007cf
0.23685681 ETH0.0002587611.54129743
Transfer151463492022-07-15 9:09:321340 days ago1657876172IN
0x27dcD5e4...2f09007cf
0.24535667 ETH0.000201128.97022289
Transfer151206452022-07-11 9:49:051344 days ago1657532945IN
0x27dcD5e4...2f09007cf
0.20144352 ETH0.000174567.78556837
Transfer151008392022-07-08 8:28:481347 days ago1657268928IN
0x27dcD5e4...2f09007cf
0.22589991 ETH0.0004040318.02040476
Transfer150814852022-07-05 8:45:021350 days ago1657010702IN
0x27dcD5e4...2f09007cf
0.27100134 ETH0.0003019213.46618476
Transfer150619632022-07-02 8:17:051353 days ago1656749825IN
0x27dcD5e4...2f09007cf
0.28060717 ETH0.00039317.52845489
Transfer150443632022-06-29 9:34:211356 days ago1656495261IN
0x27dcD5e4...2f09007cf
0.250824 ETH0.0003898317.38690311
Transfer150280832022-06-26 8:27:141359 days ago1656232034IN
0x27dcD5e4...2f09007cf
0.24159094 ETH0.0011356350.65029766
Transfer150121202022-06-23 8:49:391362 days ago1655974179IN
0x27dcD5e4...2f09007cf
0.25612434 ETH0.001102949.19049538
Transfer149957522022-06-20 9:21:391365 days ago1655716899IN
0x27dcD5e4...2f09007cf
0.2264066 ETH0.0005251623.4229814
Transfer149780232022-06-17 7:45:341368 days ago1655451934IN
0x27dcD5e4...2f09007cf
0.26861403 ETH0.000827236.89440233
Transfer149607522022-06-14 8:15:371371 days ago1655194537IN
0x27dcD5e4...2f09007cf
0.26821352 ETH0.0010748647.94000381
Transfer149431452022-06-11 7:59:051374 days ago1654934345IN
0x27dcD5e4...2f09007cf
0.23978547 ETH0.0007719634.4305474
View all transactions

Latest 4 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer155344872022-09-14 18:41:481279 days ago1663180908
0x27dcD5e4...2f09007cf
0.21272716 ETH
Transfer154649962022-09-03 11:00:591290 days ago1662202859
0x27dcD5e4...2f09007cf
1.07016059 ETH
Transfer152566512022-08-01 12:26:441323 days ago1659356804
0x27dcD5e4...2f09007cf
0.43723425 ETH
Transfer151746662022-07-19 18:22:231336 days ago1658254943
0x27dcD5e4...2f09007cf
4.14422175 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

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

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xB6020EBE...bE4B9321e
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
OwnbitMultiSig

Compiler Version
v0.4.26+commit.4563c3fc

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-01-01
*/

pragma solidity ^0.4.26;

// This is the ETH/ERC20 multisig contract for Ownbit.
//
// For 2-of-3 multisig, to authorize a spend, two signtures must be provided by 2 of the 3 owners.
// To generate the message to be signed, provide the destination address and
// spend amount (in wei) to the generateMessageToSign method.
// The signatures must be provided as the (v, r, s) hex-encoded coordinates.
// The S coordinate must be 0x00 or 0x01 corresponding to 0x1b and 0x1c, respectively.
//
// WARNING: The generated message is only valid until the next spend is executed.
//          after that, a new message will need to be calculated.
//
//
// INFO: This contract is ERC20 compatible.
// This contract can both receive ETH and ERC20 tokens.
// Notice that NFT (ERC721/ERC1155) is not supported. But can be transferred out throught spendAny.
// Last update time: 2020-12-21.
// copyright @ ownbit.io
//
// Accident Protection MultiSig, rules:
//
// Participants must keep themselves active by submitting transactions. 
// Not submitting any transaction within 3,000,000 ETH blocks (roughly 416 days) will be treated as wallet lost (i.e. accident happened), 
// other participants can still spend the assets as along as: valid signing count >= Min(mininual required count, active owners).
//

interface Erc20 {
  function approve(address, uint256) public;

  function transfer(address, uint256) public;
    
  //function balanceOf(address) view public returns (uint256);
}

contract OwnbitMultiSig {
    
  uint constant public MAX_OWNER_COUNT = 9;
  //uint constant public MAX_INACTIVE_BLOCKNUMBER = 300; //300 ETH blocks, roughly 1 hour, for testing.
  uint constant public MAX_INACTIVE_BLOCKNUMBER = 3000000; //3,000,000 ETH blocks, roughly 416 days.

  // The N addresses which control the funds in this contract. The
  // owners of M of these addresses will need to both sign a message
  // allowing the funds in this contract to be spent.
  mapping(address => uint256) private ownerBlockMap; //uint256 is the active blockNumber of this owner
  address[] private owners;
  uint private required;

  // The contract nonce is not accessible to the contract so we
  // implement a nonce-like variable for replay protection.
  uint256 private spendNonce = 0;
  
  // An event sent when funds are received.
  event Funded(address from, uint value);
  
  // An event sent when a spend is triggered to the given address.
  event Spent(address to, uint transfer);
  
  // An event sent when a spendERC20 is triggered to the given address.
  event SpentERC20(address erc20contract, address to, uint transfer);
  
  // An event sent when an spendAny is executed.
  event SpentAny(address to, uint transfer);

  modifier validRequirement(uint ownerCount, uint _required) {
    require (ownerCount <= MAX_OWNER_COUNT
            && _required <= ownerCount
            && _required >= 1);
    _;
  }
  
  /// @dev Contract constructor sets initial owners and required number of confirmations.
  /// @param _owners List of initial owners.
  /// @param _required Number of required confirmations.
  constructor(address[] _owners, uint _required) public validRequirement(_owners.length, _required) {
    for (uint i = 0; i < _owners.length; i++) {
        //onwer should be distinct, and non-zero
        if (ownerBlockMap[_owners[i]] > 0 || _owners[i] == address(0x0)) {
            revert();
        }
        ownerBlockMap[_owners[i]] = block.number;
    }
    owners = _owners;
    required = _required;
  }


  // The fallback function for this contract.
  function() public payable {
    if (msg.value > 0) {
        emit Funded(msg.sender, msg.value);
    }
  }
  
  // @dev Returns list of owners.
  // @return List of owner addresses.
  function getOwners() public view returns (address[]) {
    return owners;
  }
    
  function getSpendNonce() public view returns (uint256) {
    return spendNonce;
  }
    
  function getRequired() public view returns (uint) {
    return required;
  }
  
  //return the active block number of this owner
  function getOwnerBlock(address addr) public view returns (uint) {
    return ownerBlockMap[addr];
  }

  // Generates the message to sign given the output destination address and amount.
  // includes this contract's address and a nonce for replay protection.
  // One option to independently verify: https://leventozturk.com/engineering/sha3/ and select keccak
  function generateMessageToSign(address erc20Contract, address destination, uint256 value) private view returns (bytes32) {
    //the sequence should match generateMultiSigV2 in JS
    bytes32 message = keccak256(abi.encodePacked(address(this), erc20Contract, destination, value, spendNonce));
    return message;
  }
  
  function _messageToRecover(address erc20Contract, address destination, uint256 value) private view returns (bytes32) {
    bytes32 hashedUnsignedMessage = generateMessageToSign(erc20Contract, destination, value);
    bytes memory prefix = "\x19Ethereum Signed Message:\n32";
    return keccak256(abi.encodePacked(prefix, hashedUnsignedMessage));
  }
  
  // @destination: the ether receiver address.
  // @value: the ether value, in wei.
  // @vs, rs, ss: the signatures
  function spend(address destination, uint256 value, uint8[] vs, bytes32[] rs, bytes32[] ss) external {
    require(destination != address(this), "Not allow sending to yourself");
    require(address(this).balance >= value && value > 0, "balance or spend value invalid");
    require(_validSignature(address(0x0), destination, value, vs, rs, ss), "invalid signatures");
    spendNonce = spendNonce + 1;
    //transfer will throw if fails
    destination.transfer(value);
    emit Spent(destination, value);
  }
  
  // @erc20contract: the erc20 contract address.
  // @destination: the token receiver address.
  // @value: the token value, in token minimum unit.
  // @vs, rs, ss: the signatures
  function spendERC20(address destination, address erc20contract, uint256 value, uint8[] vs, bytes32[] rs, bytes32[] ss) external {
    require(destination != address(this), "Not allow sending to yourself");
    //transfer erc20 token
    //uint256 tokenValue = Erc20(erc20contract).balanceOf(address(this));
    require(value > 0, "Erc20 spend value invalid");
    require(_validSignature(erc20contract, destination, value, vs, rs, ss), "invalid signatures");
    spendNonce = spendNonce + 1;
    // transfer tokens from this contract to the destination address
    Erc20(erc20contract).transfer(destination, value);
    emit SpentERC20(erc20contract, destination, value);
  }
  
  //0x9 is used for spendAny
  //be careful with any action, data is not included into signature computation. So any data can be included in spendAny.
  //This is usually for some emergent recovery, for example, recovery of NTFs, etc.
  //Owners should not generate 0x9 based signatures in normal cases.
  function spendAny(address destination, uint256 value, uint8[] vs, bytes32[] rs, bytes32[] ss, bytes data) external {
    require(destination != address(this), "Not allow sending to yourself");
    require(_validSignature(address(0x9), destination, value, vs, rs, ss), "invalid signatures");
    spendNonce = spendNonce + 1;
    //transfer tokens from this contract to the destination address
    if (destination.call.value(value)(data)) {
        emit SpentAny(destination, value);
    }
  }
  
  //send a tx from the owner address to active the owner
  //Allow the owner to transfer some ETH, although this is not necessary.
  function active() external payable {
    require(ownerBlockMap[msg.sender] > 0, "Not an owner");
    ownerBlockMap[msg.sender] = block.number;
  }
  
  function getRequiredWithoutInactive() public view returns (uint) {
    uint activeOwner = 0;  
    for (uint i = 0; i < owners.length; i++) {
        //if the owner is active
        if (ownerBlockMap[owners[i]] + MAX_INACTIVE_BLOCKNUMBER >= block.number) {
            activeOwner++;
        }
    }
    //active owners still equal or greater then required
    if (activeOwner >= required) {
        return required;
    }
    //active less than required, all active must sign
    if (activeOwner >= 1) {
        return activeOwner;
    }
    //at least needs one signature.
    return 1;
  }

  // Confirm that the signature triplets (v1, r1, s1) (v2, r2, s2) ...
  // authorize a spend of this contract's funds to the given destination address.
  function _validSignature(address erc20Contract, address destination, uint256 value, uint8[] vs, bytes32[] rs, bytes32[] ss) private returns (bool) {
    require(vs.length == rs.length);
    require(rs.length == ss.length);
    require(vs.length <= owners.length);
    require(vs.length >= getRequiredWithoutInactive());
    bytes32 message = _messageToRecover(erc20Contract, destination, value);
    address[] memory addrs = new address[](vs.length);
    for (uint i = 0; i < vs.length; i++) {
        //recover the address associated with the public key from elliptic curve signature or return zero on error 
        addrs[i] = ecrecover(message, vs[i]+27, rs[i], ss[i]);
    }
    require(_distinctOwners(addrs));
    _updateActiveBlockNumber(addrs); //update addrs' active block number
    
    //check again, this is important to prevent inactive owners from stealing the money.
    require(vs.length >= getRequiredWithoutInactive(), "Active owners updated after the call, please call active() before calling spend.");
    
    return true;
  }
  
  // Confirm the addresses as distinct owners of this contract.
  function _distinctOwners(address[] addrs) private view returns (bool) {
    if (addrs.length > owners.length) {
        return false;
    }
    for (uint i = 0; i < addrs.length; i++) {
        //> 0 means one of the owner
        if (ownerBlockMap[addrs[i]] == 0) {
            return false;
        }
        //address should be distinct
        for (uint j = 0; j < i; j++) {
            if (addrs[i] == addrs[j]) {
                return false;
            }
        }
    }
    return true;
  }
  
  //update the active block number for those owners
  function _updateActiveBlockNumber(address[] addrs) private {
    for (uint i = 0; i < addrs.length; i++) {
        //only update block number for owners
        if (ownerBlockMap[addrs[i]] > 0) {
            ownerBlockMap[addrs[i]] = block.number;
        }
    }
  }
  
}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[{"name":"destination","type":"address"},{"name":"erc20contract","type":"address"},{"name":"value","type":"uint256"},{"name":"vs","type":"uint8[]"},{"name":"rs","type":"bytes32[]"},{"name":"ss","type":"bytes32[]"}],"name":"spendERC20","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"active","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"getRequired","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_INACTIVE_BLOCKNUMBER","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"getOwnerBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"destination","type":"address"},{"name":"value","type":"uint256"},{"name":"vs","type":"uint8[]"},{"name":"rs","type":"bytes32[]"},{"name":"ss","type":"bytes32[]"}],"name":"spend","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getOwners","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"destination","type":"address"},{"name":"value","type":"uint256"},{"name":"vs","type":"uint8[]"},{"name":"rs","type":"bytes32[]"},{"name":"ss","type":"bytes32[]"},{"name":"data","type":"bytes"}],"name":"spendAny","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getSpendNonce","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_OWNER_COUNT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getRequiredWithoutInactive","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_owners","type":"address[]"},{"name":"_required","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Funded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"transfer","type":"uint256"}],"name":"Spent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"erc20contract","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"transfer","type":"uint256"}],"name":"SpentERC20","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"transfer","type":"uint256"}],"name":"SpentAny","type":"event"}]

0x608060405260006003553480156200001657600080fd5b5060405162001b0438038062001b0483398101806040528101908080518201929190602001805190602001909291905050506000825182600982111580156200005f5750818111155b80156200006d575060018110155b15156200007957600080fd5b600092505b8451831015620001a657600080600087868151811015156200009c57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180620001325750600073ffffffffffffffffffffffffffffffffffffffff1685848151811015156200011057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16145b156200013d57600080fd5b4360008087868151811015156200015057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082806001019350506200007e565b8460019080519060200190620001be929190620001d1565b50836002819055505050505050620002a6565b8280548282559060005260206000209081019282156200024d579160200282015b828111156200024c5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190620001f2565b5b5090506200025c919062000260565b5090565b620002a391905b808211156200029f57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000267565b5090565b90565b61184e80620002b66000396000f3006080604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063011736721461012657806302fb0c5e146101db5780631398a5f6146101e55780635f43e63f146102105780636ad688261461023b57806385b2566a14610292578063a0e67e2b14610327578063b7d5e56414610393578063c6a2a9f114610440578063d74f8edd1461046b578063f3acb25814610496575b6000341115610124577f5af8184bef8e4b45eb9f6ed7734d04da38ced226495548f46e0c8ff8d7d9a5243334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b005b34801561013257600080fd5b506101d9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019082018035906020019190919293919293908035906020019082018035906020019190919293919293908035906020019082018035906020019190919293919293905050506104c1565b005b6101e361085d565b005b3480156101f157600080fd5b506101fa610958565b6040518082815260200191505060405180910390f35b34801561021c57600080fd5b50610225610962565b6040518082815260200191505060405180910390f35b34801561024757600080fd5b5061027c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610969565b6040518082815260200191505060405180910390f35b34801561029e57600080fd5b50610325600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019082018035906020019190919293919293908035906020019082018035906020019190919293919293908035906020019082018035906020019190919293919293905050506109b1565b005b34801561033357600080fd5b5061033c610cc8565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561037f578082015181840152602081019050610364565b505050509050019250505060405180910390f35b34801561039f57600080fd5b5061043e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390505050610d56565b005b34801561044c57600080fd5b50610455610fd1565b6040518082815260200191505060405180910390f35b34801561047757600080fd5b50610480610fdb565b6040518082815260200191505060405180910390f35b3480156104a257600080fd5b506104ab610fe0565b6040518082815260200191505060405180910390f35b3073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614151515610565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4e6f7420616c6c6f772073656e64696e6720746f20796f757273656c6600000081525060200191505060405180910390fd5b6000871115156105dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4572633230207370656e642076616c756520696e76616c69640000000000000081525060200191505060405180910390fd5b610678888a898989808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508888808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508787808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050506110c6565b15156106ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f696e76616c6964207369676e617475726573000000000000000000000000000081525060200191505060405180910390fd5b6001600354016003819055508773ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8a896040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561079b57600080fd5b505af11580156107af573d6000803e3d6000fd5b505050507f3d1915a2cdcecdfffc5eb2a7994c069bad5d4aa96aca85667dedbe60bb80491c888a89604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050505050505050565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111515610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420616e206f776e6572000000000000000000000000000000000000000081525060200191505060405180910390fd5b436000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b6000600254905090565b622dc6c081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614151515610a55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4e6f7420616c6c6f772073656e64696e6720746f20796f757273656c6600000081525060200191505060405180910390fd5b863073ffffffffffffffffffffffffffffffffffffffff163110158015610a7c5750600087115b1515610af0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f62616c616e6365206f72207370656e642076616c756520696e76616c6964000081525060200191505060405180910390fd5b610b8c600089898989808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508888808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508787808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050506110c6565b1515610c00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f696e76616c6964207369676e617475726573000000000000000000000000000081525060200191505060405180910390fd5b6001600354016003819055508773ffffffffffffffffffffffffffffffffffffffff166108fc889081150290604051600060405180830381858888f19350505050158015610c52573d6000803e3d6000fd5b507fd3eec71143c45f28685b24760ea218d476917aa0ac0392a55e5304cef40bd2b68888604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050505050505050565b60606001805480602002602001604051908101604052809291908181526020018280548015610d4c57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610d02575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614151515610dfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4e6f7420616c6c6f772073656e64696e6720746f20796f757273656c6600000081525060200191505060405180910390fd5b610e9660098b8b8b8b808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508a8a808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508989808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050506110c6565b1515610f0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f696e76616c6964207369676e617475726573000000000000000000000000000081525060200191505060405180910390fd5b6001600354016003819055508973ffffffffffffffffffffffffffffffffffffffff168983836040518083838082843782019150509250505060006040518083038185875af19250505015610fc5577f62ee6f1a2424e70e5cff9d61a0d928aa101e198f192d726c651f1bdad1cd40d98a8a604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b50505050505050505050565b6000600354905090565b600981565b6000806000809150600090505b6001805490508110156110955743622dc6c060008060018581548110151561101157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011015156110885781806001019250505b8080600101915050610fed565b600254821015156110aa5760025492506110c1565b6001821015156110bc578192506110c1565b600192505b505090565b60008060606000855187511415156110dd57600080fd5b845186511415156110ed57600080fd5b60018054905087511115151561110257600080fd5b61110a610fe0565b87511015151561111957600080fd5b6111248a8a8a611381565b925086516040519080825280602002602001820160405280156111565781602001602082028038833980820191505090505b509150600090505b865181101561128757600183601b898481518110151561117a57fe5b9060200190602002015101888481518110151561119357fe5b9060200190602002015188858151811015156111ab57fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015611226573d6000803e3d6000fd5b50505060206040510351828281518110151561123e57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808060010191505061115e565b611290826114b5565b151561129b57600080fd5b6112a4826115e4565b6112ac610fe0565b875110151515611370576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260508152602001807f416374697665206f776e6572732075706461746564206166746572207468652081526020017f63616c6c2c20706c656173652063616c6c206163746976652829206265666f7281526020017f652063616c6c696e67207370656e642e0000000000000000000000000000000081525060600191505060405180910390fd5b600193505050509695505050505050565b60008060606113918686866116bd565b91506040805190810160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250905080826040516020018083805190602001908083835b60208310151561140557805182526020820191506020810190506020830392506113e0565b6001836020036101000a0380198251168184511680821785525050505050509050018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b60208310151561147d5780518252602082019150602081019050602083039250611458565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020925050509392505050565b6000806000600180549050845111156114d157600092506115dd565b600091505b83518210156115d857600080600086858151811015156114f257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561154657600092506115dd565b600090505b818110156115cb57838181518110151561156157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16848381518110151561158f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614156115be57600092506115dd565b808060010191505061154b565b81806001019250506114d6565b600192505b5050919050565b60008090505b81518110156116b9576000806000848481518110151561160657fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156116ac5743600080848481518110151561166357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80806001019150506115ea565b5050565b60008030858585600354604051602001808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401838152602001828152602001955050505050506040516020818303038152906040526040518082805190602001908083835b6020831015156117e857805182526020820191506020810190506020830392506117c3565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090508091505093925050505600a165627a7a72305820b613b06855ae81ee59124d428e10c528ef699dc39b36ec9cc5ca527fc94d92820029000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002000000000000000000000000bb9b5ee79b58445c038bbd73a7567c1194a730690000000000000000000000004ff1e9fb53d3d5c81d45f10210448f2489b5ea1b

Deployed Bytecode

0x6080604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063011736721461012657806302fb0c5e146101db5780631398a5f6146101e55780635f43e63f146102105780636ad688261461023b57806385b2566a14610292578063a0e67e2b14610327578063b7d5e56414610393578063c6a2a9f114610440578063d74f8edd1461046b578063f3acb25814610496575b6000341115610124577f5af8184bef8e4b45eb9f6ed7734d04da38ced226495548f46e0c8ff8d7d9a5243334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b005b34801561013257600080fd5b506101d9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019082018035906020019190919293919293908035906020019082018035906020019190919293919293908035906020019082018035906020019190919293919293905050506104c1565b005b6101e361085d565b005b3480156101f157600080fd5b506101fa610958565b6040518082815260200191505060405180910390f35b34801561021c57600080fd5b50610225610962565b6040518082815260200191505060405180910390f35b34801561024757600080fd5b5061027c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610969565b6040518082815260200191505060405180910390f35b34801561029e57600080fd5b50610325600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019082018035906020019190919293919293908035906020019082018035906020019190919293919293908035906020019082018035906020019190919293919293905050506109b1565b005b34801561033357600080fd5b5061033c610cc8565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561037f578082015181840152602081019050610364565b505050509050019250505060405180910390f35b34801561039f57600080fd5b5061043e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390505050610d56565b005b34801561044c57600080fd5b50610455610fd1565b6040518082815260200191505060405180910390f35b34801561047757600080fd5b50610480610fdb565b6040518082815260200191505060405180910390f35b3480156104a257600080fd5b506104ab610fe0565b6040518082815260200191505060405180910390f35b3073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614151515610565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4e6f7420616c6c6f772073656e64696e6720746f20796f757273656c6600000081525060200191505060405180910390fd5b6000871115156105dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4572633230207370656e642076616c756520696e76616c69640000000000000081525060200191505060405180910390fd5b610678888a898989808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508888808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508787808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050506110c6565b15156106ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f696e76616c6964207369676e617475726573000000000000000000000000000081525060200191505060405180910390fd5b6001600354016003819055508773ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8a896040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561079b57600080fd5b505af11580156107af573d6000803e3d6000fd5b505050507f3d1915a2cdcecdfffc5eb2a7994c069bad5d4aa96aca85667dedbe60bb80491c888a89604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050505050505050565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111515610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420616e206f776e6572000000000000000000000000000000000000000081525060200191505060405180910390fd5b436000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b6000600254905090565b622dc6c081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614151515610a55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4e6f7420616c6c6f772073656e64696e6720746f20796f757273656c6600000081525060200191505060405180910390fd5b863073ffffffffffffffffffffffffffffffffffffffff163110158015610a7c5750600087115b1515610af0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f62616c616e6365206f72207370656e642076616c756520696e76616c6964000081525060200191505060405180910390fd5b610b8c600089898989808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508888808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508787808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050506110c6565b1515610c00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f696e76616c6964207369676e617475726573000000000000000000000000000081525060200191505060405180910390fd5b6001600354016003819055508773ffffffffffffffffffffffffffffffffffffffff166108fc889081150290604051600060405180830381858888f19350505050158015610c52573d6000803e3d6000fd5b507fd3eec71143c45f28685b24760ea218d476917aa0ac0392a55e5304cef40bd2b68888604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050505050505050565b60606001805480602002602001604051908101604052809291908181526020018280548015610d4c57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610d02575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614151515610dfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4e6f7420616c6c6f772073656e64696e6720746f20796f757273656c6600000081525060200191505060405180910390fd5b610e9660098b8b8b8b808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508a8a808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508989808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050506110c6565b1515610f0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f696e76616c6964207369676e617475726573000000000000000000000000000081525060200191505060405180910390fd5b6001600354016003819055508973ffffffffffffffffffffffffffffffffffffffff168983836040518083838082843782019150509250505060006040518083038185875af19250505015610fc5577f62ee6f1a2424e70e5cff9d61a0d928aa101e198f192d726c651f1bdad1cd40d98a8a604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b50505050505050505050565b6000600354905090565b600981565b6000806000809150600090505b6001805490508110156110955743622dc6c060008060018581548110151561101157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011015156110885781806001019250505b8080600101915050610fed565b600254821015156110aa5760025492506110c1565b6001821015156110bc578192506110c1565b600192505b505090565b60008060606000855187511415156110dd57600080fd5b845186511415156110ed57600080fd5b60018054905087511115151561110257600080fd5b61110a610fe0565b87511015151561111957600080fd5b6111248a8a8a611381565b925086516040519080825280602002602001820160405280156111565781602001602082028038833980820191505090505b509150600090505b865181101561128757600183601b898481518110151561117a57fe5b9060200190602002015101888481518110151561119357fe5b9060200190602002015188858151811015156111ab57fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015611226573d6000803e3d6000fd5b50505060206040510351828281518110151561123e57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808060010191505061115e565b611290826114b5565b151561129b57600080fd5b6112a4826115e4565b6112ac610fe0565b875110151515611370576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260508152602001807f416374697665206f776e6572732075706461746564206166746572207468652081526020017f63616c6c2c20706c656173652063616c6c206163746976652829206265666f7281526020017f652063616c6c696e67207370656e642e0000000000000000000000000000000081525060600191505060405180910390fd5b600193505050509695505050505050565b60008060606113918686866116bd565b91506040805190810160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250905080826040516020018083805190602001908083835b60208310151561140557805182526020820191506020810190506020830392506113e0565b6001836020036101000a0380198251168184511680821785525050505050509050018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b60208310151561147d5780518252602082019150602081019050602083039250611458565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020925050509392505050565b6000806000600180549050845111156114d157600092506115dd565b600091505b83518210156115d857600080600086858151811015156114f257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561154657600092506115dd565b600090505b818110156115cb57838181518110151561156157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16848381518110151561158f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614156115be57600092506115dd565b808060010191505061154b565b81806001019250506114d6565b600192505b5050919050565b60008090505b81518110156116b9576000806000848481518110151561160657fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156116ac5743600080848481518110151561166357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80806001019150506115ea565b5050565b60008030858585600354604051602001808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401838152602001828152602001955050505050506040516020818303038152906040526040518082805190602001908083835b6020831015156117e857805182526020820191506020810190506020830392506117c3565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090508091505093925050505600a165627a7a72305820b613b06855ae81ee59124d428e10c528ef699dc39b36ec9cc5ca527fc94d92820029

Deployed Bytecode Sourcemap

1509:9100:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3688:1;3676:9;:13;3672:72;;;3707:29;3714:10;3726:9;3707:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;3672:72;1509:9100;6042:685;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6042:685:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7683:149;;;;;;4015:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4015:78:0;;;;;;;;;;;;;;;;;;;;;;;1694:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1694:55:0;;;;;;;;;;;;;;;;;;;;;;;4151:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4151:103:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5332:516;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5332:516:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3831:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3831:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3831:79:0;;;;;;;;;;;;;;;;;7043:499;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7043:499:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3920:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3920:85:0;;;;;;;;;;;;;;;;;;;;;;;1544:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1544:40:0;;;;;;;;;;;;;;;;;;;;;;;7840:611;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7840:611:0;;;;;;;;;;;;;;;;;;;;;;;6042:685;6208:4;6185:28;;:11;:28;;;;6177:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6373:1;6365:5;:9;6357:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6419:62;6435:13;6450:11;6463:5;6470:2;;6419:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6474:2;;6419:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6478:2;;6419:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;:62::i;:::-;6411:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6537:1;6524:10;;:14;6511:10;:27;;;;6621:13;6615:29;;;6645:11;6658:5;6615:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6615:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6615:49:0;;;;6676:45;6687:13;6702:11;6715:5;6676:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6042:685;;;;;;;;;:::o;7683:149::-;7761:1;7733:13;:25;7747:10;7733:25;;;;;;;;;;;;;;;;:29;7725:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7814:12;7786:13;:25;7800:10;7786:25;;;;;;;;;;;;;;;:40;;;;7683:149::o;4015:78::-;4059:4;4079:8;;4072:15;;4015:78;:::o;1694:55::-;1742:7;1694:55;:::o;4151:103::-;4209:4;4229:13;:19;4243:4;4229:19;;;;;;;;;;;;;;;;4222:26;;4151:103;;;:::o;5332:516::-;5470:4;5447:28;;:11;:28;;;;5439:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5549:5;5532:4;5524:21;;;:30;;:43;;;;;5566:1;5558:5;:9;5524:43;5516:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5617:61;5641:3;5647:11;5660:5;5667:2;;5617:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5671:2;;5617:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5675:2;;5617:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;:61::i;:::-;5609:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5734:1;5721:10;;:14;5708:10;:27;;;;5778:11;:20;;:27;5799:5;5778:27;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5778:27:0;5817:25;5823:11;5836:5;5817:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;5332:516;;;;;;;;:::o;3831:79::-;3873:9;3898:6;3891:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3831:79;:::o;7043:499::-;7196:4;7173:28;;:11;:28;;;;7165:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7250:61;7274:3;7280:11;7293:5;7300:2;;7250:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7304:2;;7250:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7308:2;;7250:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;:61::i;:::-;7242:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7367:1;7354:10;;:14;7341:10;:27;;;;7448:11;:16;;7471:5;7478:4;;7448:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7444:93;;;7501:28;7510:11;7523:5;7501:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;7444:93;7043:499;;;;;;;;;;:::o;3920:85::-;3966:7;3989:10;;3982:17;;3920:85;:::o;1544:40::-;1583:1;1544:40;:::o;7840:611::-;7899:4;7912:16;7946:6;7931:1;7912:20;;7955:1;7946:10;;7941:206;7962:6;:13;;;;7958:1;:17;7941:206;;;8086:12;1742:7;8031:13;:24;8045:6;8052:1;8045:9;;;;;;;;;;;;;;;;;;;;;;;;;;;8031:24;;;;;;;;;;;;;;;;:51;:67;;8027:113;;;8115:13;;;;;;;8027:113;7977:3;;;;;;;7941:206;;;8230:8;;8215:11;:23;;8211:63;;;8258:8;;8251:15;;;;8211:63;8354:1;8339:11;:16;;8335:59;;;8375:11;8368:18;;;;8335:59;8444:1;8437:8;;7840:611;;;;:::o;8612:1066::-;8753:4;8941:15;9018:22;9079:6;8787:2;:9;8774:2;:9;:22;8766:31;;;;;;;;8825:2;:9;8812:2;:9;:22;8804:31;;;;;;;;8863:6;:13;;;;8850:2;:9;:26;;8842:35;;;;;;;;8905:28;:26;:28::i;:::-;8892:2;:9;:41;;8884:50;;;;;;;;8959:52;8977:13;8992:11;9005:5;8959:17;:52::i;:::-;8941:70;;9057:2;:9;9043:24;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;9043:24:0;;;;9018:49;;9088:1;9079:10;;9074:226;9095:2;:9;9091:1;:13;9074:226;;;9250:42;9260:7;9275:2;9269;9272:1;9269:5;;;;;;;;;;;;;;;;;;:8;9279:2;9282:1;9279:5;;;;;;;;;;;;;;;;;;9286:2;9289:1;9286:5;;;;;;;;;;;;;;;;;;9250:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9250:42:0;;;;;;;;9239:5;9245:1;9239:8;;;;;;;;;;;;;;;;;:53;;;;;;;;;;;9106:3;;;;;;;9074:226;;;9314:22;9330:5;9314:15;:22::i;:::-;9306:31;;;;;;;;9344;9369:5;9344:24;:31::i;:::-;9535:28;:26;:28::i;:::-;9522:2;:9;:41;;9514:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9668:4;9661:11;;8612:1066;;;;;;;;;;;:::o;4850:353::-;4958:7;4974:29;5069:19;5006:56;5028:13;5043:11;5056:5;5006:21;:56::i;:::-;4974:88;;5069:56;;;;;;;;;;;;;;;;;;;;5166:6;5174:21;5149:47;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5149:47:0;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5149:47:0;;;5139:58;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5139:58:0;;;;;;;;;;;;;;;;5132:65;;4850:353;;;;;;;:::o;9751:516::-;9815:4;9904:6;10114;9847;:13;;;;9832:5;:12;:28;9828:65;;;9880:5;9873:12;;;;9828:65;9913:1;9904:10;;9899:345;9920:5;:12;9916:1;:16;9899:345;;;10019:1;9992:13;:23;10006:5;10012:1;10006:8;;;;;;;;;;;;;;;;;;9992:23;;;;;;;;;;;;;;;;:28;9988:73;;;10044:5;10037:12;;;;9988:73;10123:1;10114:10;;10109:128;10130:1;10126;:5;10109:128;;;10169:5;10175:1;10169:8;;;;;;;;;;;;;;;;;;10157:20;;:5;10163:1;10157:8;;;;;;;;;;;;;;;;;;:20;;;10153:73;;;10205:5;10198:12;;;;10153:73;10133:3;;;;;;;10109:128;;;9934:3;;;;;;;9899:345;;;10257:4;10250:11;;9751:516;;;;;;:::o;10328:274::-;10399:6;10408:1;10399:10;;10394:203;10415:5;:12;10411:1;:16;10394:203;;;10522:1;10496:13;:23;10510:5;10516:1;10510:8;;;;;;;;;;;;;;;;;;10496:23;;;;;;;;;;;;;;;;:27;10492:98;;;10566:12;10540:13;:23;10554:5;10560:1;10554:8;;;;;;;;;;;;;;;;;;10540:23;;;;;;;;;;;;;;;:38;;;;10492:98;10429:3;;;;;;;10394:203;;;10328:274;;:::o;4522:320::-;4634:7;4708:15;4761:4;4768:13;4783:11;4796:5;4803:10;;4736:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4736:78:0;;;4726:89;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4726:89:0;;;;;;;;;;;;;;;;4708:107;;4829:7;4822:14;;4522:320;;;;;;:::o

Swarm Source

bzzr://b613b06855ae81ee59124d428e10c528ef699dc39b36ec9cc5ca527fc94d9282

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ 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.