ETH Price: $1,965.02 (-3.46%)
 

Overview

ETH Balance

1.49 ETH

Eth Value

$2,927.88 (@ $1,965.02/ETH)

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Process Hunting84929342019-09-05 23:16:242371 days ago1567725384IN
0xe2Bef3e4...1C5c4382f
0.005 ETH0.000496563
Process Hunting69563852018-12-26 13:28:172624 days ago1545830897IN
0xe2Bef3e4...1C5c4382f
0.005 ETH0.00040642.7
Process Hunting69556122018-12-26 10:14:122624 days ago1545819252IN
0xe2Bef3e4...1C5c4382f
0.005 ETH0.00037632.5
Process Hunting69554362018-12-26 9:27:102624 days ago1545816430IN
0xe2Bef3e4...1C5c4382f
0.005 ETH0.00038072.3
Process Hunting64416522018-10-02 20:38:092709 days ago1538512689IN
0xe2Bef3e4...1C5c4382f
0.005 ETH0.00106877.1
Process Hunting64393012018-10-02 11:37:152709 days ago1538480235IN
0xe2Bef3e4...1C5c4382f
0.005 ETH0.0015052210
Process Hunting64383842018-10-02 8:02:022709 days ago1538467322IN
0xe2Bef3e4...1C5c4382f
0.005 ETH0.0021517813
Process Hunting63812512018-09-22 22:57:102719 days ago1537657030IN
0xe2Bef3e4...1C5c4382f
0.005 ETH0.000827875.5
Process Hunting63179222018-09-12 11:51:142729 days ago1536753074IN
0xe2Bef3e4...1C5c4382f
0.005 ETH0.000752615
Process Hunting63123742018-09-11 13:55:242730 days ago1536674124IN
0xe2Bef3e4...1C5c4382f
0.005 ETH0.000602084
Process Hunting63044632018-09-10 6:13:512731 days ago1536560031IN
0xe2Bef3e4...1C5c4382f
0.005 ETH0.000511773.4
Item Bid63041732018-09-10 5:07:482731 days ago1536556068IN
0xe2Bef3e4...1C5c4382f
0.003 ETH0.000127863.8
Process Hunting63035272018-09-10 2:30:472731 days ago1536546647IN
0xe2Bef3e4...1C5c4382f
0.005 ETH0.000628983.8
Create Items62941712018-09-08 12:30:032733 days ago1536409803IN
0xe2Bef3e4...1C5c4382f
0 ETH0.00063155.21875
Create Items62940682018-09-08 12:06:302733 days ago1536408390IN
0xe2Bef3e4...1C5c4382f
0 ETH0.001706985.4
Create Item Sale...62933762018-09-08 9:19:052733 days ago1536398345IN
0xe2Bef3e4...1C5c4382f
0 ETH0.000407453.2
Process Hunting62927352018-09-08 6:42:372733 days ago1536388957IN
0xe2Bef3e4...1C5c4382f
0.005 ETH0.000481673.2
Process Hunting62892122018-09-07 16:24:002734 days ago1536337440IN
0xe2Bef3e4...1C5c4382f
0.005 ETH0.000546223.3
Process Hunting62872512018-09-07 8:26:192734 days ago1536308779IN
0xe2Bef3e4...1C5c4382f
0.005 ETH0.000632194.2
Process Hunting62872512018-09-07 8:26:192734 days ago1536308779IN
0xe2Bef3e4...1C5c4382f
0.005 ETH0.000632194.2
Item Bid62872412018-09-07 8:23:592734 days ago1536308639IN
0xe2Bef3e4...1C5c4382f
0.002 ETH0.000144824.3
Item Bid62872192018-09-07 8:18:012734 days ago1536308281IN
0xe2Bef3e4...1C5c4382f
0.001 ETH0.000172964.2
Process Hunting62785142018-09-05 21:31:142736 days ago1536183074IN
0xe2Bef3e4...1C5c4382f
0.005 ETH0.000451563
Process Hunting62785122018-09-05 21:31:062736 days ago1536183066IN
0xe2Bef3e4...1C5c4382f
0.005 ETH0.000451563
Process Hunting62785102018-09-05 21:30:292736 days ago1536183029IN
0xe2Bef3e4...1C5c4382f
0.005 ETH0.000451563
View all transactions

Latest 17 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer63041732018-09-10 5:07:482731 days ago1536556068
0xe2Bef3e4...1C5c4382f
0.003 ETH
Transfer62872412018-09-07 8:23:592734 days ago1536308639
0xe2Bef3e4...1C5c4382f
0.002 ETH
Transfer62872192018-09-07 8:18:012734 days ago1536308281
0xe2Bef3e4...1C5c4382f
0.001 ETH
Transfer62740002018-09-05 3:19:582736 days ago1536117598
0xe2Bef3e4...1C5c4382f
0.005 ETH
Transfer62501322018-09-01 2:53:472740 days ago1535770427
0xe2Bef3e4...1C5c4382f
0.001 ETH
Transfer60719092018-08-02 0:11:532771 days ago1533168713
0xe2Bef3e4...1C5c4382f
0.004 ETH
Transfer60532202018-07-29 20:35:402774 days ago1532896540
0xe2Bef3e4...1C5c4382f
0.01 ETH
Transfer60500522018-07-29 7:46:452774 days ago1532850405
0xe2Bef3e4...1C5c4382f
0.50625 ETH
Transfer60479382018-07-28 23:27:182775 days ago1532820438
0xe2Bef3e4...1C5c4382f
0.001 ETH
Transfer60095812018-07-22 11:27:142781 days ago1532258834
0xe2Bef3e4...1C5c4382f
0.00095 ETH
Transfer60095662018-07-22 11:25:292781 days ago1532258729
0xe2Bef3e4...1C5c4382f
0.001 ETH
Transfer60095642018-07-22 11:25:042781 days ago1532258704
0xe2Bef3e4...1C5c4382f
0.00095 ETH
Transfer59720482018-07-16 1:34:252787 days ago1531704865
0xe2Bef3e4...1C5c4382f
0.0095 ETH
Transfer59719952018-07-16 1:21:142787 days ago1531704074
0xe2Bef3e4...1C5c4382f
0.00285 ETH
Transfer59718862018-07-16 0:52:292787 days ago1531702349
0xe2Bef3e4...1C5c4382f
0.01 ETH
Transfer59717512018-07-16 0:24:002788 days ago1531700640
0xe2Bef3e4...1C5c4382f
0.0095 ETH
Transfer59297922018-07-08 22:48:232795 days ago1531090103
0xe2Bef3e4...1C5c4382f
0.001 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

Contract Source Code Verified (Exact Match)

Contract Name:
ItemsCore

Compiler Version
v0.4.22+commit.4cb486ee

Optimization Enabled:
No with 200 runs

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

pragma solidity ^0.4.22;

/// @title ERC-721に準拠した契約のインタフェース
contract ERC721 {
    // イベント
    event Transfer(address indexed _from, address indexed _to, uint256 _tokenId);
    event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId);

    // 必要なメソッド
    function balanceOf(address _owner) public view returns (uint256 _balance);
    function ownerOf(uint256 _tokenId) external view returns (address _owner);
    function approve(address _to, uint256 _tokenId) external;
    function transfer(address _to, uint256 _tokenId) public;
    function transferFrom(address _from, address _to, uint256 _tokenId) public;
    function totalSupply() public view returns (uint);

    // ERC-165 Compatibility (https://github.com/ethereum/EIPs/issues/165)
    function supportsInterface(bytes4 _interfaceID) external view returns (bool);
}

/**
 * @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;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
    * @dev The Ownable constructor sets the original `owner` of the contract to the sender
    * account.
    */
    function Ownable() public {
        owner = msg.sender;
    }


    /**
    * @dev Throws if called by any account other than the owner.
    */
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }


    /**
    * @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) public onlyOwner {
        require(newOwner != address(0));
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }

}

/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Ownable {
    event Pause();
    event Unpause();

    bool public paused = false;


    /**
    * @dev Modifier to make a function callable only when the contract is not paused.
    *               契約が一時停止されている場合にのみアクションを許可する
    */
    modifier whenNotPaused() {
        require(!paused);
        _;
    }

    /**
    * @dev Modifier to make a function callable only when the contract is paused.
    *               契約が一時停止されていない場合にのみアクションを許可する
    */
    modifier whenPaused() {
        require(paused);
        _;
    }

    /**
    * @dev called by the owner to pause, triggers stopped state
    *             一時停止するために所有者によって呼び出され、停止状態をトリガする
    */
    function pause() onlyOwner whenNotPaused public {
        paused = true;
        emit Pause();
    }

    /**
    * @dev called by the owner to unpause, returns to normal state
    *             ポーズをとるためにオーナーが呼び出し、通常の状態に戻ります
    */
    function unpause() onlyOwner whenPaused public {
        paused = false;
        emit Unpause();
    }
}

contract RocsCoreRe {

    function getRoc(uint _tokenId) public returns (
        uint rocId,
        string dna,
        uint marketsFlg);

    function getRocIdToTokenId(uint _rocId) public view returns (uint);
    function getRocIndexToOwner(uint _rocId) public view returns (address);
}

contract ItemsBase is Pausable {
    // ハント代
    uint public huntingPrice = 5 finney;
    function setHuntingPrice(uint256 price) public onlyOwner {
        huntingPrice = price;
    }

    // ERC721
    event Transfer(address from, address to, uint tokenId);
    event ItemTransfer(address from, address to, uint tokenId);

    // Itemの作成
    event ItemCreated(address owner, uint tokenId, uint ticketId);

    event HuntingCreated(uint huntingId, uint rocId);

    /// @dev Itemの構造体
    struct Item {
        uint itemId;
        uint8 marketsFlg;
        uint rocId;
        uint8 equipmentFlg;
    }
    Item[] public items;

    // itemIdとtokenIdのマッピング
    mapping(uint => uint) public itemIndex;
    // itemIdからtokenIdを取得
    function getItemIdToTokenId(uint _itemId) public view returns (uint) {
        return itemIndex[_itemId];
    }

    /// @dev itemの所有するアドレスへのマッピング
    mapping (uint => address) public itemIndexToOwner;
    // @dev itemの所有者アドレスから所有するトークン数へのマッピング
    mapping (address => uint) public itemOwnershipTokenCount;
    /// @dev itemの呼び出しが承認されたアドレスへのマッピング
    mapping (uint => address) public itemIndexToApproved;

    /// @dev 特定のitem所有権をアドレスに割り当てます。
    function _transfer(address _from, address _to, uint256 _tokenId) internal {
        itemOwnershipTokenCount[_to]++;
        itemOwnershipTokenCount[_from]--;
        itemIndexToOwner[_tokenId] = _to;
        // イベント開始
        emit ItemTransfer(_from, _to, _tokenId);
    }

    address public rocCoreAddress;
    RocsCoreRe rocCore;

    function setRocCoreAddress(address _rocCoreAddress) public onlyOwner {
        rocCoreAddress = _rocCoreAddress;
        rocCore = RocsCoreRe(rocCoreAddress);
    }
    function getRocCoreAddress() 
        external
        view
        onlyOwner
        returns (
        address
    ) {
        return rocCore;
    }

    /// @dev Huntingの構造体
    struct Hunting {
        uint huntingId;
    }
    // Huntingのmapping rocHuntingIndex[rocId][tokenId] = Hunting
    mapping(uint => mapping (uint => Hunting)) public rocHuntingIndex;

    /// @notice Huntingを作成して保存する内部メソッド。 
    /// @param _rocId 
    /// @param _huntingId 
    function _createRocHunting(
        uint _rocId,
        uint _huntingId
    )
        internal
        returns (bool)
    {
        Hunting memory _hunting = Hunting({
            huntingId: _huntingId
        });

        rocHuntingIndex[_rocId][_huntingId] = _hunting;
        // HuntingCreatedイベント
        emit HuntingCreated(_huntingId, _rocId);

        return true;
    }
}

/// @title Item所有権を管理するコントラクト
/// @dev OpenZeppelinのERC721ドラフト実装に準拠
contract ItemsOwnership is ItemsBase, ERC721 {

    /// @notice ERC721で定義されている、置き換え不可能なトークンの名前と記号。
    string public constant name = "CryptoFeatherItems";
    string public constant symbol = "CCHI";

    bytes4 constant InterfaceSignature_ERC165 = 
    bytes4(keccak256('supportsInterface(bytes4)'));

    bytes4 constant InterfaceSignature_ERC721 =
    bytes4(keccak256('name()')) ^
    bytes4(keccak256('symbol()')) ^
    bytes4(keccak256('balanceOf(address)')) ^
    bytes4(keccak256('ownerOf(uint256)')) ^
    bytes4(keccak256('approve(address,uint256)')) ^
    bytes4(keccak256('transfer(address,uint256)')) ^
    bytes4(keccak256('transferFrom(address,address,uint256)')) ^
    bytes4(keccak256('totalSupply()'));

    /// @notice Introspection interface as per ERC-165 (https://github.com/ethereum/EIPs/issues/165).
    ///  この契約によって実装された標準化されたインタフェースでtrueを返します。
    function supportsInterface(bytes4 _interfaceID) external view returns (bool)
    {
        // DEBUG ONLY
        //require((InterfaceSignature_ERC165 == 0x01ffc9a7) && (InterfaceSignature_ERC721 == 0x9a20483d));
        return ((_interfaceID == InterfaceSignature_ERC165) || (_interfaceID == InterfaceSignature_ERC721));
    }

    /// @dev 特定のアドレスに指定されたitemの現在の所有者であるかどうかをチェックします。
    /// @param _claimant 
    /// @param _tokenId 
    function _owns(address _claimant, uint256 _tokenId) internal view returns (bool) {
        return itemIndexToOwner[_tokenId] == _claimant;
    }

    /// @dev 特定のアドレスに指定されたitemが存在するかどうかをチェックします。
    /// @param _claimant the address we are confirming kitten is approved for.
    /// @param _tokenId kitten id, only valid when > 0
    function _approvedFor(address _claimant, uint256 _tokenId) internal view returns (bool) {
        return itemIndexToApproved[_tokenId] == _claimant;
    }

    /// @dev 以前の承認を上書きして、transferFrom()に対して承認されたアドレスをマークします。
    function _approve(uint256 _tokenId, address _approved) internal {
        itemIndexToApproved[_tokenId] = _approved;
    }

    // 指定されたアドレスのitem数を取得します。
    function balanceOf(address _owner) public view returns (uint256 count) {
        return itemOwnershipTokenCount[_owner];
    }

    /// @notice itemの所有者を変更します。
    /// @dev ERC-721への準拠に必要
    function transfer(address _to, uint256 _tokenId) public whenNotPaused {
        // 安全チェック
        require(_to != address(0));
        // 自分のitemしか送ることはできません。
        require(_owns(msg.sender, _tokenId));
        // 所有権の再割り当て、保留中の承認のクリア、転送イベントの送信
        _transfer(msg.sender, _to, _tokenId);
    }

    /// @notice transferFrom()を介して別のアドレスに特定のitemを転送する権利を与えます。
    /// @dev ERC-721への準拠に必要
    function approve(address _to, uint256 _tokenId) external whenNotPaused {
        // 所有者のみが譲渡承認を認めることができます。
        require(_owns(msg.sender, _tokenId));
        // 承認を登録します(以前の承認を置き換えます)。
        _approve(_tokenId, _to);
        // 承認イベントを発行する。
        emit Approval(msg.sender, _to, _tokenId);
    }

    /// @notice item所有者の変更を行います。を転送します。そのアドレスには、以前の所有者から転送承認が与えられています。
    /// @dev ERC-721への準拠に必要
    function transferFrom(address _from, address _to, uint256 _tokenId) public whenNotPaused {
        // 安全チェック。
        require(_to != address(0));
        // 承認と有効な所有権の確認
        require(_approvedFor(msg.sender, _tokenId));
        require(_owns(_from, _tokenId));
        // 所有権を再割り当てします(保留中の承認をクリアし、転送イベントを発行します)。
        _transfer(_from, _to, _tokenId);
    }

    /// @notice 現在存在するitemの総数を返します。
    /// @dev ERC-721への準拠に必要です。
    function totalSupply() public view returns (uint) {
        return items.length - 1;
    }

    /// @notice 指定されたitemの現在所有権が割り当てられているアドレスを返します。
    /// @dev ERC-721への準拠に必要です。
    function ownerOf(uint256 _tokenId) external view returns (address owner) {
        owner = itemIndexToOwner[_tokenId];
        require(owner != address(0));
    }

    /// @dev この契約に所有権を割り当て、NFTを強制終了します。
    /// @param _owner 
    /// @param _tokenId 
    function _escrow(address _owner, uint256 _tokenId) internal {
        // it will throw if transfer fails
        transferFrom(_owner, this, _tokenId);
    }

}

/// @title Itemに関する管理を行うコントラクト
contract ItemsBreeding is ItemsOwnership {

    /// @notice Itemを作成して保存。 
    /// @param _itemId 
    /// @param _marketsFlg 
    /// @param _rocId 
    /// @param _equipmentFlg 
    /// @param _owner 
    function _createItem(
        uint _itemId,
        uint _marketsFlg,
        uint _rocId,
        uint _equipmentFlg,
        address _owner
    )
        internal
        returns (uint)
    {
        Item memory _item = Item({
            itemId: _itemId,
            marketsFlg: uint8(_marketsFlg),
            rocId: _rocId,
            equipmentFlg: uint8(_equipmentFlg)
        });

        uint newItemId = items.push(_item) - 1;
        // 同一のトークンIDが発生した場合は実行を停止します
        require(newItemId == uint(newItemId));
        // RocCreatedイベント
        emit ItemCreated(_owner, newItemId, _itemId);

        // これにより所有権が割り当てられ、ERC721ドラフトごとに転送イベントが発行されます
        itemIndex[_itemId] = newItemId;
        _transfer(0, _owner, newItemId);

        return newItemId;
    }

    /// @notice アイテムの装備状態を更新します。 
    /// @param _reItems 
    /// @param _inItems 
    /// @param _rocId 
    function equipmentItem(
        uint[] _reItems,
        uint[] _inItems,
        uint _rocId
    )
        external
        whenNotPaused
        returns(bool)
    {
        uint checkTokenId = rocCore.getRocIdToTokenId(_rocId);
        uint i;
        uint itemTokenId;
        Item memory item;
        // 解除
        for (i = 0; i < _reItems.length; i++) {
            itemTokenId = getItemIdToTokenId(_reItems[i]);
            // itemのパラメータチェック
            item = items[itemTokenId];
            // マーケットへの出品中か確認してください。
            require(uint(item.marketsFlg) == 0);
            // アイテム装着中か確認してください。
            require(uint(item.equipmentFlg) == 1);
            // 装着チックが同一か確認してください。
            require(uint(item.rocId) == _rocId);
            // 装備解除
            items[itemTokenId].rocId = 0;
            items[itemTokenId].equipmentFlg = 0;
            // アイテムのオーナーが違えばチックのオーナーをセットしなおします。
            address itemOwner = itemIndexToOwner[itemTokenId];
            address checkOwner = rocCore.getRocIndexToOwner(checkTokenId);
            if (itemOwner != checkOwner) {
                itemIndexToOwner[itemTokenId] = checkOwner;
            }
        }
        // 装着
        for (i = 0; i < _inItems.length; i++) {
            itemTokenId = getItemIdToTokenId(_inItems[i]);
            // itemのパラメータチェック
            item = items[itemTokenId];
            // itemのオーナーである事
            require(_owns(msg.sender, itemTokenId));
            // マーケットへの出品中か確認してください。
            require(uint(item.marketsFlg) == 0);
            // アイテム未装備か確認してください。
            require(uint(item.equipmentFlg) == 0);
            // 装備処理
            items[itemTokenId].rocId = _rocId;
            items[itemTokenId].equipmentFlg = 1;
        }
        return true;
    }

    /// @notice 消費した事で削除の処理を行います。
    /// @param _itemId 
    function usedItem(
        uint _itemId
    )
        external
        whenNotPaused
        returns(bool)
    {
        uint itemTokenId = getItemIdToTokenId(_itemId);
        Item memory item = items[itemTokenId];
        // itemのオーナーである事
        require(_owns(msg.sender, itemTokenId));
        // マーケットへの出品中か確認してください。
        require(uint(item.marketsFlg) == 0);
        // アイテム未装備か確認してください。
        require(uint(item.equipmentFlg) == 0);
        delete itemIndex[_itemId];
        delete items[itemTokenId];
        delete itemIndexToOwner[itemTokenId];
        return true;
    }

    /// @notice Huntingの処理を行います。
    /// @param _rocId 
    /// @param _huntingId 
    /// @param _items 
    function processHunting(
        uint _rocId,
        uint _huntingId,
        uint[] _items
    )
        external
        payable
        whenNotPaused
        returns(bool)
    {
        require(msg.value >= huntingPrice);

        uint checkTokenId = rocCore.getRocIdToTokenId(_rocId);
        uint marketsFlg;
        ( , , marketsFlg) = rocCore.getRoc(checkTokenId);

        // markets中か確認してください。
        require(marketsFlg == 0);
        bool createHunting = false;
        // Hunting処理
        require(_huntingId > 0);
        createHunting = _createRocHunting(
            _rocId,
            _huntingId
        );

        uint i;
        for (i = 0; i < _items.length; i++) {
            _createItem(
                _items[i],
                0,
                0,
                0,
                msg.sender
            );
        }

        // 超過分を買い手に返す
        uint256 bidExcess = msg.value - huntingPrice;
        msg.sender.transfer(bidExcess);

        return createHunting;
    }

    /// @notice Itemを作成します。イベント用
    /// @param _items 
    /// @param _owners 
    function createItems(
        uint[] _items,
        address[] _owners
    )
        external onlyOwner
        returns (uint)
    {
        uint i;
        uint createItemId;
        for (i = 0; i < _items.length; i++) {
            createItemId = _createItem(
                _items[i],
                0,
                0,
                0,
                _owners[i]
            );
        }
        return createItemId;
    }

}

/// @title ItemのMarketに関する処理
contract ItemsMarkets is ItemsBreeding {

    event ItemMarketsCreated(uint256 tokenId, uint128 marketsPrice);
    event ItemMarketsSuccessful(uint256 tokenId, uint128 marketsPriceice, address buyer);
    event ItemMarketsCancelled(uint256 tokenId);

    // ERC721
    event Transfer(address from, address to, uint tokenId);

    // NFT上のMarket
    struct ItemMarkets {
        // 登録時のNFT売手
        address seller;
        // Marketの価格
        uint128 marketsPrice;
    }

    // トークンIDから対応するマーケットへの出品にマップします。
    mapping (uint256 => ItemMarkets) tokenIdToItemMarkets;

    // マーケットへの出品の手数料を設定
    uint256 public ownerCut = 0;
    function setOwnerCut(uint256 _cut) public onlyOwner {
        require(_cut <= 10000);
        ownerCut = _cut;
    }

    /// @notice Itemマーケットへの出品を作成し、開始します。
    /// @param _itemId 
    /// @param _marketsPrice 
    function createItemSaleMarkets(
        uint256 _itemId,
        uint256 _marketsPrice
    )
        external
        whenNotPaused
    {
        require(_marketsPrice == uint256(uint128(_marketsPrice)));

        // チェック用のtokenIdをセット
        uint itemTokenId = getItemIdToTokenId(_itemId);
        // itemのオーナーである事
        require(_owns(msg.sender, itemTokenId));
        // itemのパラメータチェック
        Item memory item = items[itemTokenId];
        // マーケットへの出品中か確認してください。
        require(uint(item.marketsFlg) == 0);
        // 装備中か確認してください。
        require(uint(item.rocId) == 0);
        require(uint(item.equipmentFlg) == 0);
        // 承認
        _approve(itemTokenId, msg.sender);
        // マーケットへの出品セット
        _escrow(msg.sender, itemTokenId);
        ItemMarkets memory itemMarkets = ItemMarkets(
            msg.sender,
            uint128(_marketsPrice)
        );

        // マーケットへの出品FLGをセット
        items[itemTokenId].marketsFlg = 1;

        _itemAddMarkets(itemTokenId, itemMarkets);
    }

    /// @dev マーケットへの出品を公開マーケットへの出品のリストに追加します。 
    ///  また、ItemMarketsCreatedイベントを発生させます。
    /// @param _tokenId The ID of the token to be put on markets.
    /// @param _markets Markets to add.
    function _itemAddMarkets(uint256 _tokenId, ItemMarkets _markets) internal {
        tokenIdToItemMarkets[_tokenId] = _markets;
        emit ItemMarketsCreated(
            uint256(_tokenId),
            uint128(_markets.marketsPrice)
        );
    }

    /// @dev マーケットへの出品を公開マーケットへの出品のリストから削除します。
    /// @param _tokenId 
    function _itemRemoveMarkets(uint256 _tokenId) internal {
        delete tokenIdToItemMarkets[_tokenId];
    }

    /// @dev 無条件にマーケットへの出品を取り消します。
    /// @param _tokenId 
    function _itemCancelMarkets(uint256 _tokenId) internal {
        _itemRemoveMarkets(_tokenId);
        emit ItemMarketsCancelled(_tokenId);
    }

    /// @dev まだ獲得されていないマーケットへの出品をキャンセルします。
    ///  元の所有者にNFTを返します。
    /// @notice これは、契約が一時停止している間に呼び出すことができる状態変更関数です。
    /// @param _itemId 
    function itemCancelMarkets(uint _itemId) external {
        uint itemTokenId = getItemIdToTokenId(_itemId);
        ItemMarkets storage markets = tokenIdToItemMarkets[itemTokenId];
        address seller = markets.seller;
        require(msg.sender == seller);
        _itemCancelMarkets(itemTokenId);
        itemIndexToOwner[itemTokenId] = seller;
        items[itemTokenId].marketsFlg = 0;
    }

    /// @dev 契約が一時停止されたときにマーケットへの出品をキャンセルします。
    ///  所有者だけがこれを行うことができ、NFTは売り手に返されます。 
    ///  緊急時にのみ使用してください。
    /// @param _itemId 
    function itemCancelMarketsWhenPaused(uint _itemId) whenPaused onlyOwner external {
        uint itemTokenId = getItemIdToTokenId(_itemId);
        ItemMarkets storage markets = tokenIdToItemMarkets[itemTokenId];
        address seller = markets.seller;
        _itemCancelMarkets(itemTokenId);
        itemIndexToOwner[itemTokenId] = seller;
        items[itemTokenId].marketsFlg = 0;
    }

    /// @dev マーケットへの出品入札
    ///  十分な量のEtherが供給されればNFTの所有権を移転する。
    /// @param _itemId 
    function itemBid(uint _itemId) external payable whenNotPaused {
        uint itemTokenId = getItemIdToTokenId(_itemId);
        // マーケットへの出品構造体への参照を取得する
        ItemMarkets storage markets = tokenIdToItemMarkets[itemTokenId];

        uint128 sellingPrice = uint128(markets.marketsPrice);
        // 入札額が価格以上である事を確認する。
        // msg.valueはweiの数
        require(msg.value >= sellingPrice);
        // マーケットへの出品構造体が削除される前に、販売者への参照を取得します。
        address seller = markets.seller;

        // マーケットへの出品を削除します。
        _itemRemoveMarkets(itemTokenId);

        if (sellingPrice > 0) {
            // 競売人のカットを計算します。
            uint128 marketseerCut = uint128(_computeCut(sellingPrice));
            uint128 sellerProceeds = sellingPrice - marketseerCut;

            // 売り手に送金する
            seller.transfer(sellerProceeds);
        }

        // 超過分を買い手に返す
        msg.sender.transfer(msg.value - sellingPrice);
        // イベント
        emit ItemMarketsSuccessful(itemTokenId, sellingPrice, msg.sender);

        _transfer(seller, msg.sender, itemTokenId);
        // マーケットへの出品FLGをセット
        items[itemTokenId].marketsFlg = 0;
    }

    /// @dev 手数料計算
    /// @param _price 
    function _computeCut(uint128 _price) internal view returns (uint) {
        return _price * ownerCut / 10000;
    }

}

/// @title CryptoFeather
contract ItemsCore is ItemsMarkets {

    // コア契約が壊れてアップグレードが必要な場合に設定します
    address public newContractAddress;

    /// @dev 一時停止を無効にすると、契約を一時停止する前にすべての外部契約アドレスを設定する必要があります。
    function unpause() public onlyOwner whenPaused {
        require(newContractAddress == address(0));
        // 実際に契約を一時停止しないでください。
        super.unpause();
    }

    // @dev 利用可能な残高を取得できるようにします。
    function withdrawBalance(uint _subtractFees) external onlyOwner {
        uint256 balance = address(this).balance;
        if (balance > _subtractFees) {
            owner.transfer(balance - _subtractFees);
        }
    }

    /// @notice tokenIdからItemに関するすべての関連情報を返します。
    /// @param _tokenId 
    function getItem(uint _tokenId)
        external
        view
        returns (
        uint itemId,
        uint marketsFlg,
        uint rocId,
        uint equipmentFlg
    ) {
        Item memory item = items[_tokenId];
        itemId = uint(item.itemId);
        marketsFlg = uint(item.marketsFlg);
        rocId = uint(item.rocId);
        equipmentFlg = uint(item.equipmentFlg);
    }

    /// @notice itemIdからItemに関するすべての関連情報を返します。
    /// @param _itemId 
    function getItemItemId(uint _itemId)
        external
        view
        returns (
        uint itemId,
        uint marketsFlg,
        uint rocId,
        uint equipmentFlg
    ) {
        Item memory item = items[getItemIdToTokenId(_itemId)];
        itemId = uint(item.itemId);
        marketsFlg = uint(item.marketsFlg);
        rocId = uint(item.rocId);
        equipmentFlg = uint(item.equipmentFlg);
    }

    /// @notice itemIdからMarkets情報を返します。
    /// @param _itemId 
    function getMarketsItemId(uint _itemId)
        external
        view
        returns (
        address seller,
        uint marketsPrice
    ) {
        uint itemTokenId = getItemIdToTokenId(_itemId);
        ItemMarkets storage markets = tokenIdToItemMarkets[itemTokenId];
        seller = markets.seller;
        marketsPrice = uint(markets.marketsPrice);
    }

    /// @notice itemIdからオーナー情報を返します。
    /// @param _itemId 
    function getItemIndexToOwner(uint _itemId)
        external
        view
        returns (
        address owner
    ) {
        uint itemTokenId = getItemIdToTokenId(_itemId);
        owner = itemIndexToOwner[itemTokenId];
    }

    /// @notice rocIdとhuntingIdからhuntingの存在チェック
    /// @param _rocId 
    /// @param _huntingId 
    function getHunting(uint _rocId, uint _huntingId)
        public
        view
        returns (
        uint huntingId
    ) {
        Hunting memory hunting = rocHuntingIndex[_rocId][_huntingId];
        huntingId = uint(hunting.huntingId);
    }

    /// @notice _rocIdからオーナー情報を返します。
    /// @param _rocId 
    function getRocOwnerItem(uint _rocId)
        external
        view
        returns (
        address owner
    ) {
        uint checkTokenId = rocCore.getRocIdToTokenId(_rocId);
        owner = rocCore.getRocIndexToOwner(checkTokenId);
    }

}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[{"name":"_itemId","type":"uint256"}],"name":"getItemIdToTokenId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_itemId","type":"uint256"}],"name":"getItemIndexToOwner","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"rocHuntingIndex","outputs":[{"name":"huntingId","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"huntingPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_rocId","type":"uint256"},{"name":"_huntingId","type":"uint256"},{"name":"_items","type":"uint256[]"}],"name":"processHunting","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_itemId","type":"uint256"}],"name":"itemBid","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"getRocCoreAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_rocId","type":"uint256"},{"name":"_huntingId","type":"uint256"}],"name":"getHunting","outputs":[{"name":"huntingId","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getItem","outputs":[{"name":"itemId","type":"uint256"},{"name":"marketsFlg","type":"uint256"},{"name":"rocId","type":"uint256"},{"name":"equipmentFlg","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_rocCoreAddress","type":"address"}],"name":"setRocCoreAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_reItems","type":"uint256[]"},{"name":"_inItems","type":"uint256[]"},{"name":"_rocId","type":"uint256"}],"name":"equipmentItem","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_itemId","type":"uint256"},{"name":"_marketsPrice","type":"uint256"}],"name":"createItemSaleMarkets","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"itemOwnershipTokenCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newContractAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"count","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_itemId","type":"uint256"}],"name":"itemCancelMarketsWhenPaused","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_itemId","type":"uint256"}],"name":"getItemItemId","outputs":[{"name":"itemId","type":"uint256"},{"name":"marketsFlg","type":"uint256"},{"name":"rocId","type":"uint256"},{"name":"equipmentFlg","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rocCoreAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_cut","type":"uint256"}],"name":"setOwnerCut","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_itemId","type":"uint256"}],"name":"itemCancelMarkets","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"price","type":"uint256"}],"name":"setHuntingPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ownerCut","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"itemIndexToApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"itemIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_items","type":"uint256[]"},{"name":"_owners","type":"address[]"}],"name":"createItems","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_itemId","type":"uint256"}],"name":"getMarketsItemId","outputs":[{"name":"seller","type":"address"},{"name":"marketsPrice","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"items","outputs":[{"name":"itemId","type":"uint256"},{"name":"marketsFlg","type":"uint8"},{"name":"rocId","type":"uint256"},{"name":"equipmentFlg","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_itemId","type":"uint256"}],"name":"usedItem","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_subtractFees","type":"uint256"}],"name":"withdrawBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_rocId","type":"uint256"}],"name":"getRocOwnerItem","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"itemIndexToOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"marketsPrice","type":"uint128"}],"name":"ItemMarketsCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"marketsPriceice","type":"uint128"},{"indexed":false,"name":"buyer","type":"address"}],"name":"ItemMarketsSuccessful","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"ItemMarketsCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_approved","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"ItemTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"ticketId","type":"uint256"}],"name":"ItemCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"huntingId","type":"uint256"},{"indexed":false,"name":"rocId","type":"uint256"}],"name":"HuntingCreated","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

608060405260008060146101000a81548160ff0219169083151502179055506611c37937e080006001556000600b55336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613b0f8061007d6000396000f30060806040526004361061021a576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063016e03b11461021f57806301ffc9a71461026057806306fdde03146102c4578063095ea7b3146103545780630b0740ae146103a15780630e22f2841461040e578063166858901461045957806318160ddd146104845780631b78e3c4146104af5780631b9414ae146105095780631f1bd0051461052957806323b872dd146105805780632a304900146105ed5780633129e773146106385780633f4ba83a1461068e578063513a0149146106a557806356e9ec88146106e85780635c239e581461075d5780635c975abb146107945780636352211e146107c357806365f1f8b9146108305780636af04a571461088757806370a08231146108de57806370d19a431461093557806370de1e30146109625780637354eb04146109b8578063757de57314610a0f5780637a1a7e7f14610a3c57806380dceec414610a6957806383b5ff8b14610a965780638456cb5914610ac15780638807270014610ad85780638da5cb5b14610b4557806392647eab14610b9c57806395d89b4114610bdd578063a7e4792014610c6d578063a9059cbb14610cd4578063b86c49e114610d21578063bfb231d214610d95578063c7b0fc5e14610df7578063da76d5cd14610e3c578063f0794ca614610e69578063f2fde38b14610ed6578063fe9b1a8914610f19575b600080fd5b34801561022b57600080fd5b5061024a60048036038101908080359060200190929190505050610f86565b6040518082815260200191505060405180910390f35b34801561026c57600080fd5b506102aa60048036038101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610fa3565b604051808215151515815260200191505060405180910390f35b3480156102d057600080fd5b506102d9611246565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103195780820151818401526020810190506102fe565b50505050905090810190601f1680156103465780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036057600080fd5b5061039f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061127f565b005b3480156103ad57600080fd5b506103cc60048036038101908080359060200190929190505050611323565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561041a57600080fd5b50610443600480360381019080803590602001909291908035906020019092919050505061136d565b6040518082815260200191505060405180910390f35b34801561046557600080fd5b5061046e611398565b6040518082815260200191505060405180910390f35b34801561049057600080fd5b5061049961139e565b6040518082815260200191505060405180910390f35b6104ef60048036038101908080359060200190929190803590602001909291908035906020019082018035906020019190919293919293905050506113ae565b604051808215151515815260200191505060405180910390f35b610527600480360381019080803590602001909291905050506116c1565b005b34801561053557600080fd5b5061053e61193f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561058c57600080fd5b506105eb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119c4565b005b3480156105f957600080fd5b506106226004803603810190808035906020019092919080359060200190929190505050611a56565b6040518082815260200191505060405180910390f35b34801561064457600080fd5b5061066360048036038101908080359060200190929190505050611aaa565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b34801561069a57600080fd5b506106a3611b5b565b005b3480156106b157600080fd5b506106e6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c38565b005b3480156106f457600080fd5b5061074360048036038101908080359060200190820180359060200191909192939192939080359060200190820180359060200191909192939192939080359060200190929190505050611d3a565b604051808215151515815260200191505060405180910390f35b34801561076957600080fd5b50610792600480360381019080803590602001909291908035906020019092919050505061227c565b005b3480156107a057600080fd5b506107a9612440565b604051808215151515815260200191505060405180910390f35b3480156107cf57600080fd5b506107ee60048036038101908080359060200190929190505050612453565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561083c57600080fd5b50610871600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124cc565b6040518082815260200191505060405180910390f35b34801561089357600080fd5b5061089c6124e4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108ea57600080fd5b5061091f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061250a565b6040518082815260200191505060405180910390f35b34801561094157600080fd5b5061096060048036038101908080359060200190929190505050612553565b005b34801561096e57600080fd5b5061098d600480360381019080803590602001909291905050506126af565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b3480156109c457600080fd5b506109cd612768565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a1b57600080fd5b50610a3a6004803603810190808035906020019092919050505061278e565b005b348015610a4857600080fd5b50610a6760048036038101908080359060200190929190505050612804565b005b348015610a7557600080fd5b50610a9460048036038101908080359060200190929190505050612925565b005b348015610aa257600080fd5b50610aab61298a565b6040518082815260200191505060405180910390f35b348015610acd57600080fd5b50610ad6612990565b005b348015610ae457600080fd5b50610b0360048036038101908080359060200190929190505050612a50565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b5157600080fd5b50610b5a612a83565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ba857600080fd5b50610bc760048036038101908080359060200190929190505050612aa8565b6040518082815260200191505060405180910390f35b348015610be957600080fd5b50610bf2612ac0565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c32578082015181840152602081019050610c17565b50505050905090810190601f168015610c5f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c7957600080fd5b50610cbe600480360381019080803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390505050612af9565b6040518082815260200191505060405180910390f35b348015610ce057600080fd5b50610d1f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612bd2565b005b348015610d2d57600080fd5b50610d4c60048036038101908080359060200190929190505050612c4e565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b348015610da157600080fd5b50610dc060048036038101908080359060200190929190505050612cd7565b604051808581526020018460ff1660ff1681526020018381526020018260ff1660ff16815260200194505050505060405180910390f35b348015610e0357600080fd5b50610e2260048036038101908080359060200190929190505050612d30565b604051808215151515815260200191505060405180910390f35b348015610e4857600080fd5b50610e6760048036038101908080359060200190929190505050612ecc565b005b348015610e7557600080fd5b50610e9460048036038101908080359060200190929190505050612fba565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ee257600080fd5b50610f17600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061315f565b005b348015610f2557600080fd5b50610f44600480360381019080803590602001909291905050506132b4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600060036000838152602001908152602001600020549050919050565b600060405180807f737570706f727473496e74657266616365286279746573342900000000000000815250601901905060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061123f575060405180807f746f74616c537570706c79282900000000000000000000000000000000000000815250600d019050604051809103902060405180807f7472616e7366657246726f6d28616464726573732c616464726573732c75696e81526020017f74323536290000000000000000000000000000000000000000000000000000008152506025019050604051809103902060405180807f7472616e7366657228616464726573732c75696e7432353629000000000000008152506019019050604051809103902060405180807f617070726f766528616464726573732c75696e743235362900000000000000008152506018019050604051809103902060405180807f6f776e65724f662875696e7432353629000000000000000000000000000000008152506010019050604051809103902060405180807f62616c616e63654f6628616464726573732900000000000000000000000000008152506012019050604051809103902060405180807f73796d626f6c28290000000000000000000000000000000000000000000000008152506008019050604051809103902060405180807f6e616d652829000000000000000000000000000000000000000000000000000081525060060190506040518091039020181818181818187bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6040805190810160405280601281526020017f43727970746f466561746865724974656d73000000000000000000000000000081525081565b600060149054906101000a900460ff1615151561129b57600080fd5b6112a533826132e7565b15156112b057600080fd5b6112ba8183613353565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b60008061132f83610f86565b90506004600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b6009602052816000526040600020602052806000526040600020600091509150508060000154905081565b60015481565b6000600160028054905003905090565b600080600080600080600060149054906101000a900460ff161515156113d357600080fd5b60015434101515156113e457600080fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f6d516388b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561147557600080fd5b505af1158015611489573d6000803e3d6000fd5b505050506040513d602081101561149f57600080fd5b81019080805190602001909291905050509450600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638119f4ae866040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561154357600080fd5b505af1158015611557573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250606081101561158157600080fd5b810190808051906020019092919080516401000000008111156115a357600080fd5b828101905060208101848111156115b957600080fd5b81518560018202830111640100000000821117156115d657600080fd5b50509291906020018051906020019092919050505090915090508094505060008414151561160357600080fd5b6000925060008911151561161657600080fd5b6116208a8a6133a9565b9250600091505b8787905082101561166357611655888884818110151561164357fe5b90506020020135600080600033613441565b508180600101925050611627565b600154340390503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156116b0573d6000803e3d6000fd5b508295505050505050949350505050565b600080600080600080600060149054906101000a900460ff161515156116e657600080fd5b6116ef87610f86565b9550600a600087815260200190815260200160002094508460010160009054906101000a90046fffffffffffffffffffffffffffffffff169350836fffffffffffffffffffffffffffffffff16341015151561174a57600080fd5b8460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16925061177a866135b5565b6000846fffffffffffffffffffffffffffffffff1611156117ff5761179e84613618565b915081840390508273ffffffffffffffffffffffffffffffffffffffff166108fc826fffffffffffffffffffffffffffffffff169081150290604051600060405180830381858888f193505050501580156117fd573d6000803e3d6000fd5b505b3373ffffffffffffffffffffffffffffffffffffffff166108fc856fffffffffffffffffffffffffffffffff1634039081150290604051600060405180830381858888f19350505050158015611859573d6000803e3d6000fd5b507f1cde15823ef185822d5774ddecddaa35629495fa00cdbab370a310d5ffba74fd86853360405180848152602001836fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a16118fc833388613645565b600060028781548110151561190d57fe5b906000526020600020906004020160010160006101000a81548160ff021916908360ff16021790555050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561199c57600080fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600060149054906101000a900460ff161515156119e057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611a1c57600080fd5b611a2633826137da565b1515611a3157600080fd5b611a3b83826132e7565b1515611a4657600080fd5b611a51838383613645565b505050565b6000611a60613a5e565b600960008581526020019081526020016000206000848152602001908152602001600020602060405190810160405290816000820154815250509050806000015191505092915050565b600080600080611ab8613a72565b600286815481101515611ac757fe5b906000526020600020906004020160806040519081016040529081600082015481526020016001820160009054906101000a900460ff1660ff1660ff168152602001600282015481526020016003820160009054906101000a900460ff1660ff1660ff1681525050905080600001519450806020015160ff16935080604001519250806060015160ff169150509193509193565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bb657600080fd5b600060149054906101000a900460ff161515611bd157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c2e57600080fd5b611c36613846565b565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c9357600080fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600080611d48613a72565b600080600060149054906101000a900460ff16151515611d6757600080fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f6d51638896040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015611df857600080fd5b505af1158015611e0c573d6000803e3d6000fd5b505050506040513d6020811015611e2257600080fd5b81019080805190602001909291905050509550600094505b8b8b905085101561211457611e628c8c878181101515611e5657fe5b90506020020135610f86565b9350600284815481101515611e7357fe5b906000526020600020906004020160806040519081016040529081600082015481526020016001820160009054906101000a900460ff1660ff1660ff168152602001600282015481526020016003820160009054906101000a900460ff1660ff1660ff168152505092506000836020015160ff16141515611ef357600080fd5b6001836060015160ff16141515611f0957600080fd5b878360400151141515611f1b57600080fd5b6000600285815481101515611f2c57fe5b9060005260206000209060040201600201819055506000600285815481101515611f5257fe5b906000526020600020906004020160030160006101000a81548160ff021916908360ff1602179055506004600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634ea5a6ac876040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561204257600080fd5b505af1158015612056573d6000803e3d6000fd5b505050506040513d602081101561206c57600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561210757806004600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8480600101955050611e3a565b600094505b89899050851015612269576121418a8a87818110151561213557fe5b90506020020135610f86565b935060028481548110151561215257fe5b906000526020600020906004020160806040519081016040529081600082015481526020016001820160009054906101000a900460ff1660ff1660ff168152602001600282015481526020016003820160009054906101000a900460ff1660ff1660ff168152505092506121c633856132e7565b15156121d157600080fd5b6000836020015160ff161415156121e757600080fd5b6000836060015160ff161415156121fd57600080fd5b8760028581548110151561220d57fe5b906000526020600020906004020160020181905550600160028581548110151561223357fe5b906000526020600020906004020160030160006101000a81548160ff021916908360ff1602179055508480600101955050612119565b6001965050505050505095945050505050565b6000612286613a72565b61228e613aa1565b600060149054906101000a900460ff161515156122aa57600080fd5b836fffffffffffffffffffffffffffffffff16841415156122ca57600080fd5b6122d385610f86565b92506122df33846132e7565b15156122ea57600080fd5b6002838154811015156122f957fe5b906000526020600020906004020160806040519081016040529081600082015481526020016001820160009054906101000a900460ff1660ff1660ff168152602001600282015481526020016003820160009054906101000a900460ff1660ff1660ff168152505091506000826020015160ff1614151561237957600080fd5b6000826040015114151561238c57600080fd5b6000826060015160ff161415156123a257600080fd5b6123ac8333613353565b6123b63384613904565b60408051908101604052803373ffffffffffffffffffffffffffffffffffffffff168152602001856fffffffffffffffffffffffffffffffff168152509050600160028481548110151561240657fe5b906000526020600020906004020160010160006101000a81548160ff021916908360ff1602179055506124398382613913565b5050505050565b600060149054906101000a900460ff1681565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156124c757600080fd5b919050565b60056020528060005260406000206000915090505481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060008060149054906101000a900460ff16151561257257600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156125cd57600080fd5b6125d684610f86565b9250600a600084815260200190815260200160002091508160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061261d83613a1b565b806004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060028481548110151561268057fe5b906000526020600020906004020160010160006101000a81548160ff021916908360ff16021790555050505050565b6000806000806126bd613a72565b60026126c887610f86565b8154811015156126d457fe5b906000526020600020906004020160806040519081016040529081600082015481526020016001820160009054906101000a900460ff1660ff1660ff168152602001600282015481526020016003820160009054906101000a900460ff1660ff1660ff1681525050905080600001519450806020015160ff16935080604001519250806060015160ff169150509193509193565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156127e957600080fd5b61271081111515156127fa57600080fd5b80600b8190555050565b600080600061281284610f86565b9250600a600084815260200190815260200160002091508160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561288a57600080fd5b61289383613a1b565b806004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006002848154811015156128f657fe5b906000526020600020906004020160010160006101000a81548160ff021916908360ff16021790555050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561298057600080fd5b8060018190555050565b600b5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129eb57600080fd5b600060149054906101000a900460ff16151515612a0757600080fd5b6001600060146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b60066020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915090505481565b6040805190810160405280600481526020017f434348490000000000000000000000000000000000000000000000000000000081525081565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612b5957600080fd5b600091505b86869050821015612bc557612bb68787848181101515612b7a57fe5b9050602002013560008060008989888181101515612b9457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16613441565b90508180600101925050612b5e565b8092505050949350505050565b600060149054906101000a900460ff16151515612bee57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612c2a57600080fd5b612c3433826132e7565b1515612c3f57600080fd5b612c4a338383613645565b5050565b600080600080612c5d85610f86565b9150600a600083815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693508060010160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1692505050915091565b600281815481101515612ce657fe5b90600052602060002090600402016000915090508060000154908060010160009054906101000a900460ff16908060020154908060030160009054906101000a900460ff16905084565b600080612d3b613a72565b600060149054906101000a900460ff16151515612d5757600080fd5b612d6084610f86565b9150600282815481101515612d7157fe5b906000526020600020906004020160806040519081016040529081600082015481526020016001820160009054906101000a900460ff1660ff1660ff168152602001600282015481526020016003820160009054906101000a900460ff1660ff1660ff16815250509050612de533836132e7565b1515612df057600080fd5b6000816020015160ff16141515612e0657600080fd5b6000816060015160ff16141515612e1c57600080fd5b6003600085815260200190815260200160002060009055600282815481101515612e4257fe5b90600052602060002090600402016000808201600090556001820160006101000a81549060ff021916905560028201600090556003820160006101000a81549060ff021916905550506004600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600192505050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612f2957600080fd5b3073ffffffffffffffffffffffffffffffffffffffff1631905081811115612fb6576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8383039081150290604051600060405180830381858888f19350505050158015612fb4573d6000803e3d6000fd5b505b5050565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f6d51638846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561304e57600080fd5b505af1158015613062573d6000803e3d6000fd5b505050506040513d602081101561307857600080fd5b81019080805190602001909291905050509050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634ea5a6ac826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561311c57600080fd5b505af1158015613130573d6000803e3d6000fd5b505050506040513d602081101561314657600080fd5b8101908080519060200190929190505050915050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156131ba57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156131f657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008273ffffffffffffffffffffffffffffffffffffffff166004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b806006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60006133b3613a5e565b60206040519081016040528084815250905080600960008681526020019081526020016000206000858152602001908152602001600020600082015181600001559050507fd74036d0a17d4446b747ce494e60573744f560c13d416b6ffb1eb9a81ff18cab8385604051808381526020018281526020019250505060405180910390a1600191505092915050565b600061344b613a72565b60006080604051908101604052808981526020018860ff1681526020018781526020018660ff1681525091506001600283908060018154018082558091505090600182039060005260206000209060040201600090919290919091506000820151816000015560208201518160010160006101000a81548160ff021916908360ff1602179055506040820151816002015560608201518160030160006101000a81548160ff021916908360ff1602179055505050039050808114151561351057600080fd5b7f58f25bafb74c20778a1e28941b2b8b439c6585dcf2f5ebb39c3050bd7e26f09a84828a604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a180600360008a8152602001908152602001600020819055506135a760008583613645565b809250505095945050505050565b600a6000828152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a8154906fffffffffffffffffffffffffffffffff0219169055505050565b6000612710600b54836fffffffffffffffffffffffffffffffff160281151561363d57fe5b049050919050565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa147cb4b0f35c9a0d326bd3c5186ffddbf8a675d4979ac8faf34839853a72b1a838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b60008273ffffffffffffffffffffffffffffffffffffffff166006600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156138a157600080fd5b600060149054906101000a900460ff1615156138bc57600080fd5b60008060146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b61390f8230836119c4565b5050565b80600a600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050507ff12aef2c32646275a380f60302a80ca6e9dea94aed5852880284c0a3f315e5d482826020015160405180838152602001826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b613a24816135b5565b7f8005b97e00de46db9e17d13eb84fe0ed3cabd23bfcc76ce93a5db1d6c3ed7ea8816040518082815260200191505060405180910390a150565b602060405190810160405280600081525090565b60806040519081016040528060008152602001600060ff16815260200160008152602001600060ff1681525090565b6040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160006fffffffffffffffffffffffffffffffff16815250905600a165627a7a7230582067c4d0c7c9b3d34c9afededcf3941b70050f334370dc7c742af1485f4a8b2eb90029

Deployed Bytecode

0x60806040526004361061021a576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063016e03b11461021f57806301ffc9a71461026057806306fdde03146102c4578063095ea7b3146103545780630b0740ae146103a15780630e22f2841461040e578063166858901461045957806318160ddd146104845780631b78e3c4146104af5780631b9414ae146105095780631f1bd0051461052957806323b872dd146105805780632a304900146105ed5780633129e773146106385780633f4ba83a1461068e578063513a0149146106a557806356e9ec88146106e85780635c239e581461075d5780635c975abb146107945780636352211e146107c357806365f1f8b9146108305780636af04a571461088757806370a08231146108de57806370d19a431461093557806370de1e30146109625780637354eb04146109b8578063757de57314610a0f5780637a1a7e7f14610a3c57806380dceec414610a6957806383b5ff8b14610a965780638456cb5914610ac15780638807270014610ad85780638da5cb5b14610b4557806392647eab14610b9c57806395d89b4114610bdd578063a7e4792014610c6d578063a9059cbb14610cd4578063b86c49e114610d21578063bfb231d214610d95578063c7b0fc5e14610df7578063da76d5cd14610e3c578063f0794ca614610e69578063f2fde38b14610ed6578063fe9b1a8914610f19575b600080fd5b34801561022b57600080fd5b5061024a60048036038101908080359060200190929190505050610f86565b6040518082815260200191505060405180910390f35b34801561026c57600080fd5b506102aa60048036038101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610fa3565b604051808215151515815260200191505060405180910390f35b3480156102d057600080fd5b506102d9611246565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103195780820151818401526020810190506102fe565b50505050905090810190601f1680156103465780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036057600080fd5b5061039f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061127f565b005b3480156103ad57600080fd5b506103cc60048036038101908080359060200190929190505050611323565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561041a57600080fd5b50610443600480360381019080803590602001909291908035906020019092919050505061136d565b6040518082815260200191505060405180910390f35b34801561046557600080fd5b5061046e611398565b6040518082815260200191505060405180910390f35b34801561049057600080fd5b5061049961139e565b6040518082815260200191505060405180910390f35b6104ef60048036038101908080359060200190929190803590602001909291908035906020019082018035906020019190919293919293905050506113ae565b604051808215151515815260200191505060405180910390f35b610527600480360381019080803590602001909291905050506116c1565b005b34801561053557600080fd5b5061053e61193f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561058c57600080fd5b506105eb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119c4565b005b3480156105f957600080fd5b506106226004803603810190808035906020019092919080359060200190929190505050611a56565b6040518082815260200191505060405180910390f35b34801561064457600080fd5b5061066360048036038101908080359060200190929190505050611aaa565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b34801561069a57600080fd5b506106a3611b5b565b005b3480156106b157600080fd5b506106e6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c38565b005b3480156106f457600080fd5b5061074360048036038101908080359060200190820180359060200191909192939192939080359060200190820180359060200191909192939192939080359060200190929190505050611d3a565b604051808215151515815260200191505060405180910390f35b34801561076957600080fd5b50610792600480360381019080803590602001909291908035906020019092919050505061227c565b005b3480156107a057600080fd5b506107a9612440565b604051808215151515815260200191505060405180910390f35b3480156107cf57600080fd5b506107ee60048036038101908080359060200190929190505050612453565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561083c57600080fd5b50610871600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124cc565b6040518082815260200191505060405180910390f35b34801561089357600080fd5b5061089c6124e4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108ea57600080fd5b5061091f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061250a565b6040518082815260200191505060405180910390f35b34801561094157600080fd5b5061096060048036038101908080359060200190929190505050612553565b005b34801561096e57600080fd5b5061098d600480360381019080803590602001909291905050506126af565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b3480156109c457600080fd5b506109cd612768565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a1b57600080fd5b50610a3a6004803603810190808035906020019092919050505061278e565b005b348015610a4857600080fd5b50610a6760048036038101908080359060200190929190505050612804565b005b348015610a7557600080fd5b50610a9460048036038101908080359060200190929190505050612925565b005b348015610aa257600080fd5b50610aab61298a565b6040518082815260200191505060405180910390f35b348015610acd57600080fd5b50610ad6612990565b005b348015610ae457600080fd5b50610b0360048036038101908080359060200190929190505050612a50565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b5157600080fd5b50610b5a612a83565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ba857600080fd5b50610bc760048036038101908080359060200190929190505050612aa8565b6040518082815260200191505060405180910390f35b348015610be957600080fd5b50610bf2612ac0565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c32578082015181840152602081019050610c17565b50505050905090810190601f168015610c5f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c7957600080fd5b50610cbe600480360381019080803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390505050612af9565b6040518082815260200191505060405180910390f35b348015610ce057600080fd5b50610d1f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612bd2565b005b348015610d2d57600080fd5b50610d4c60048036038101908080359060200190929190505050612c4e565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b348015610da157600080fd5b50610dc060048036038101908080359060200190929190505050612cd7565b604051808581526020018460ff1660ff1681526020018381526020018260ff1660ff16815260200194505050505060405180910390f35b348015610e0357600080fd5b50610e2260048036038101908080359060200190929190505050612d30565b604051808215151515815260200191505060405180910390f35b348015610e4857600080fd5b50610e6760048036038101908080359060200190929190505050612ecc565b005b348015610e7557600080fd5b50610e9460048036038101908080359060200190929190505050612fba565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ee257600080fd5b50610f17600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061315f565b005b348015610f2557600080fd5b50610f44600480360381019080803590602001909291905050506132b4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600060036000838152602001908152602001600020549050919050565b600060405180807f737570706f727473496e74657266616365286279746573342900000000000000815250601901905060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061123f575060405180807f746f74616c537570706c79282900000000000000000000000000000000000000815250600d019050604051809103902060405180807f7472616e7366657246726f6d28616464726573732c616464726573732c75696e81526020017f74323536290000000000000000000000000000000000000000000000000000008152506025019050604051809103902060405180807f7472616e7366657228616464726573732c75696e7432353629000000000000008152506019019050604051809103902060405180807f617070726f766528616464726573732c75696e743235362900000000000000008152506018019050604051809103902060405180807f6f776e65724f662875696e7432353629000000000000000000000000000000008152506010019050604051809103902060405180807f62616c616e63654f6628616464726573732900000000000000000000000000008152506012019050604051809103902060405180807f73796d626f6c28290000000000000000000000000000000000000000000000008152506008019050604051809103902060405180807f6e616d652829000000000000000000000000000000000000000000000000000081525060060190506040518091039020181818181818187bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6040805190810160405280601281526020017f43727970746f466561746865724974656d73000000000000000000000000000081525081565b600060149054906101000a900460ff1615151561129b57600080fd5b6112a533826132e7565b15156112b057600080fd5b6112ba8183613353565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b60008061132f83610f86565b90506004600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b6009602052816000526040600020602052806000526040600020600091509150508060000154905081565b60015481565b6000600160028054905003905090565b600080600080600080600060149054906101000a900460ff161515156113d357600080fd5b60015434101515156113e457600080fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f6d516388b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561147557600080fd5b505af1158015611489573d6000803e3d6000fd5b505050506040513d602081101561149f57600080fd5b81019080805190602001909291905050509450600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638119f4ae866040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561154357600080fd5b505af1158015611557573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250606081101561158157600080fd5b810190808051906020019092919080516401000000008111156115a357600080fd5b828101905060208101848111156115b957600080fd5b81518560018202830111640100000000821117156115d657600080fd5b50509291906020018051906020019092919050505090915090508094505060008414151561160357600080fd5b6000925060008911151561161657600080fd5b6116208a8a6133a9565b9250600091505b8787905082101561166357611655888884818110151561164357fe5b90506020020135600080600033613441565b508180600101925050611627565b600154340390503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156116b0573d6000803e3d6000fd5b508295505050505050949350505050565b600080600080600080600060149054906101000a900460ff161515156116e657600080fd5b6116ef87610f86565b9550600a600087815260200190815260200160002094508460010160009054906101000a90046fffffffffffffffffffffffffffffffff169350836fffffffffffffffffffffffffffffffff16341015151561174a57600080fd5b8460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16925061177a866135b5565b6000846fffffffffffffffffffffffffffffffff1611156117ff5761179e84613618565b915081840390508273ffffffffffffffffffffffffffffffffffffffff166108fc826fffffffffffffffffffffffffffffffff169081150290604051600060405180830381858888f193505050501580156117fd573d6000803e3d6000fd5b505b3373ffffffffffffffffffffffffffffffffffffffff166108fc856fffffffffffffffffffffffffffffffff1634039081150290604051600060405180830381858888f19350505050158015611859573d6000803e3d6000fd5b507f1cde15823ef185822d5774ddecddaa35629495fa00cdbab370a310d5ffba74fd86853360405180848152602001836fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a16118fc833388613645565b600060028781548110151561190d57fe5b906000526020600020906004020160010160006101000a81548160ff021916908360ff16021790555050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561199c57600080fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600060149054906101000a900460ff161515156119e057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611a1c57600080fd5b611a2633826137da565b1515611a3157600080fd5b611a3b83826132e7565b1515611a4657600080fd5b611a51838383613645565b505050565b6000611a60613a5e565b600960008581526020019081526020016000206000848152602001908152602001600020602060405190810160405290816000820154815250509050806000015191505092915050565b600080600080611ab8613a72565b600286815481101515611ac757fe5b906000526020600020906004020160806040519081016040529081600082015481526020016001820160009054906101000a900460ff1660ff1660ff168152602001600282015481526020016003820160009054906101000a900460ff1660ff1660ff1681525050905080600001519450806020015160ff16935080604001519250806060015160ff169150509193509193565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bb657600080fd5b600060149054906101000a900460ff161515611bd157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c2e57600080fd5b611c36613846565b565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c9357600080fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600080611d48613a72565b600080600060149054906101000a900460ff16151515611d6757600080fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f6d51638896040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015611df857600080fd5b505af1158015611e0c573d6000803e3d6000fd5b505050506040513d6020811015611e2257600080fd5b81019080805190602001909291905050509550600094505b8b8b905085101561211457611e628c8c878181101515611e5657fe5b90506020020135610f86565b9350600284815481101515611e7357fe5b906000526020600020906004020160806040519081016040529081600082015481526020016001820160009054906101000a900460ff1660ff1660ff168152602001600282015481526020016003820160009054906101000a900460ff1660ff1660ff168152505092506000836020015160ff16141515611ef357600080fd5b6001836060015160ff16141515611f0957600080fd5b878360400151141515611f1b57600080fd5b6000600285815481101515611f2c57fe5b9060005260206000209060040201600201819055506000600285815481101515611f5257fe5b906000526020600020906004020160030160006101000a81548160ff021916908360ff1602179055506004600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634ea5a6ac876040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561204257600080fd5b505af1158015612056573d6000803e3d6000fd5b505050506040513d602081101561206c57600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561210757806004600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8480600101955050611e3a565b600094505b89899050851015612269576121418a8a87818110151561213557fe5b90506020020135610f86565b935060028481548110151561215257fe5b906000526020600020906004020160806040519081016040529081600082015481526020016001820160009054906101000a900460ff1660ff1660ff168152602001600282015481526020016003820160009054906101000a900460ff1660ff1660ff168152505092506121c633856132e7565b15156121d157600080fd5b6000836020015160ff161415156121e757600080fd5b6000836060015160ff161415156121fd57600080fd5b8760028581548110151561220d57fe5b906000526020600020906004020160020181905550600160028581548110151561223357fe5b906000526020600020906004020160030160006101000a81548160ff021916908360ff1602179055508480600101955050612119565b6001965050505050505095945050505050565b6000612286613a72565b61228e613aa1565b600060149054906101000a900460ff161515156122aa57600080fd5b836fffffffffffffffffffffffffffffffff16841415156122ca57600080fd5b6122d385610f86565b92506122df33846132e7565b15156122ea57600080fd5b6002838154811015156122f957fe5b906000526020600020906004020160806040519081016040529081600082015481526020016001820160009054906101000a900460ff1660ff1660ff168152602001600282015481526020016003820160009054906101000a900460ff1660ff1660ff168152505091506000826020015160ff1614151561237957600080fd5b6000826040015114151561238c57600080fd5b6000826060015160ff161415156123a257600080fd5b6123ac8333613353565b6123b63384613904565b60408051908101604052803373ffffffffffffffffffffffffffffffffffffffff168152602001856fffffffffffffffffffffffffffffffff168152509050600160028481548110151561240657fe5b906000526020600020906004020160010160006101000a81548160ff021916908360ff1602179055506124398382613913565b5050505050565b600060149054906101000a900460ff1681565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156124c757600080fd5b919050565b60056020528060005260406000206000915090505481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060008060149054906101000a900460ff16151561257257600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156125cd57600080fd5b6125d684610f86565b9250600a600084815260200190815260200160002091508160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061261d83613a1b565b806004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060028481548110151561268057fe5b906000526020600020906004020160010160006101000a81548160ff021916908360ff16021790555050505050565b6000806000806126bd613a72565b60026126c887610f86565b8154811015156126d457fe5b906000526020600020906004020160806040519081016040529081600082015481526020016001820160009054906101000a900460ff1660ff1660ff168152602001600282015481526020016003820160009054906101000a900460ff1660ff1660ff1681525050905080600001519450806020015160ff16935080604001519250806060015160ff169150509193509193565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156127e957600080fd5b61271081111515156127fa57600080fd5b80600b8190555050565b600080600061281284610f86565b9250600a600084815260200190815260200160002091508160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561288a57600080fd5b61289383613a1b565b806004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006002848154811015156128f657fe5b906000526020600020906004020160010160006101000a81548160ff021916908360ff16021790555050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561298057600080fd5b8060018190555050565b600b5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129eb57600080fd5b600060149054906101000a900460ff16151515612a0757600080fd5b6001600060146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b60066020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915090505481565b6040805190810160405280600481526020017f434348490000000000000000000000000000000000000000000000000000000081525081565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612b5957600080fd5b600091505b86869050821015612bc557612bb68787848181101515612b7a57fe5b9050602002013560008060008989888181101515612b9457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16613441565b90508180600101925050612b5e565b8092505050949350505050565b600060149054906101000a900460ff16151515612bee57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612c2a57600080fd5b612c3433826132e7565b1515612c3f57600080fd5b612c4a338383613645565b5050565b600080600080612c5d85610f86565b9150600a600083815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693508060010160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1692505050915091565b600281815481101515612ce657fe5b90600052602060002090600402016000915090508060000154908060010160009054906101000a900460ff16908060020154908060030160009054906101000a900460ff16905084565b600080612d3b613a72565b600060149054906101000a900460ff16151515612d5757600080fd5b612d6084610f86565b9150600282815481101515612d7157fe5b906000526020600020906004020160806040519081016040529081600082015481526020016001820160009054906101000a900460ff1660ff1660ff168152602001600282015481526020016003820160009054906101000a900460ff1660ff1660ff16815250509050612de533836132e7565b1515612df057600080fd5b6000816020015160ff16141515612e0657600080fd5b6000816060015160ff16141515612e1c57600080fd5b6003600085815260200190815260200160002060009055600282815481101515612e4257fe5b90600052602060002090600402016000808201600090556001820160006101000a81549060ff021916905560028201600090556003820160006101000a81549060ff021916905550506004600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600192505050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612f2957600080fd5b3073ffffffffffffffffffffffffffffffffffffffff1631905081811115612fb6576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8383039081150290604051600060405180830381858888f19350505050158015612fb4573d6000803e3d6000fd5b505b5050565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f6d51638846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561304e57600080fd5b505af1158015613062573d6000803e3d6000fd5b505050506040513d602081101561307857600080fd5b81019080805190602001909291905050509050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634ea5a6ac826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561311c57600080fd5b505af1158015613130573d6000803e3d6000fd5b505050506040513d602081101561314657600080fd5b8101908080519060200190929190505050915050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156131ba57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156131f657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008273ffffffffffffffffffffffffffffffffffffffff166004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b806006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60006133b3613a5e565b60206040519081016040528084815250905080600960008681526020019081526020016000206000858152602001908152602001600020600082015181600001559050507fd74036d0a17d4446b747ce494e60573744f560c13d416b6ffb1eb9a81ff18cab8385604051808381526020018281526020019250505060405180910390a1600191505092915050565b600061344b613a72565b60006080604051908101604052808981526020018860ff1681526020018781526020018660ff1681525091506001600283908060018154018082558091505090600182039060005260206000209060040201600090919290919091506000820151816000015560208201518160010160006101000a81548160ff021916908360ff1602179055506040820151816002015560608201518160030160006101000a81548160ff021916908360ff1602179055505050039050808114151561351057600080fd5b7f58f25bafb74c20778a1e28941b2b8b439c6585dcf2f5ebb39c3050bd7e26f09a84828a604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a180600360008a8152602001908152602001600020819055506135a760008583613645565b809250505095945050505050565b600a6000828152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a8154906fffffffffffffffffffffffffffffffff0219169055505050565b6000612710600b54836fffffffffffffffffffffffffffffffff160281151561363d57fe5b049050919050565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa147cb4b0f35c9a0d326bd3c5186ffddbf8a675d4979ac8faf34839853a72b1a838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b60008273ffffffffffffffffffffffffffffffffffffffff166006600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156138a157600080fd5b600060149054906101000a900460ff1615156138bc57600080fd5b60008060146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b61390f8230836119c4565b5050565b80600a600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050507ff12aef2c32646275a380f60302a80ca6e9dea94aed5852880284c0a3f315e5d482826020015160405180838152602001826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b613a24816135b5565b7f8005b97e00de46db9e17d13eb84fe0ed3cabd23bfcc76ce93a5db1d6c3ed7ea8816040518082815260200191505060405180910390a150565b602060405190810160405280600081525090565b60806040519081016040528060008152602001600060ff16815260200160008152602001600060ff1681525090565b6040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160006fffffffffffffffffffffffffffffffff16815250905600a165627a7a7230582067c4d0c7c9b3d34c9afededcf3941b70050f334370dc7c742af1485f4a8b2eb90029

Swarm Source

bzzr://67c4d0c7c9b3d34c9afededcf3941b70050f334370dc7c742af1485f4a8b2eb9

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.