Contract 0xf3C8Ed6C721774C022c530E813a369dFe78a6E85

 

Contract Overview

Balance:
0.095772987361410139 Ether

EtherValue:
$14.15 (@ $147.72/ETH)
TxHash Block Age From To Value [TxFee]
0x3d2d310c347b3e0982f58c6dadf679ab98c6a8d56b230872550c59d8b28a0bf8704896540 days 3 hrs ago0x406f4533b2f6209812d7ef9c7d69b8c54217c208 IN  0xf3c8ed6c721774c022c530e813a369dfe78a6e850.000267955388382 Ether0.001082405
0xb767c9dad027bca8726e30668e7a21fd2031d6fdc0a35254601ddce7c772ebc05188095354 days 11 hrs ago0x4eee20bec65bded1203cb9159085c05a14e5dd7f IN  0xf3c8ed6c721774c022c530e813a369dfe78a6e850.00000000001 Ether0.00052538
0x57ca4a8f292cfbddf6caccff33c1e0f762245774699bdde1b0706b1efdae1a4a5188084354 days 11 hrs ago0x4eee20bec65bded1203cb9159085c05a14e5dd7f IN  0xf3c8ed6c721774c022c530e813a369dfe78a6e850.00000000001 Ether0.00052538
0x6adfdb28589e08e4fbfae52d0db8a84028e05ca8877455c05b07fa11e64d12535188080354 days 11 hrs ago0x4eee20bec65bded1203cb9159085c05a14e5dd7f IN  0xf3c8ed6c721774c022c530e813a369dfe78a6e850.00000000001 Ether0.000499111
0x9ad8c24d8b20044492f9544ebf574e8650df78cb8a886e46ff14adbdc4bf25155188074354 days 11 hrs ago0x4eee20bec65bded1203cb9159085c05a14e5dd7f IN  0xf3c8ed6c721774c022c530e813a369dfe78a6e850.00000000001 Ether0.000399
0x0cf097435395cac1973adab8dd8f792b159976e02de0ce30de659734d0b7208e5188069354 days 11 hrs ago0x4eee20bec65bded1203cb9159085c05a14e5dd7f IN  0xf3c8ed6c721774c022c530e813a369dfe78a6e850.00000000001 Ether0.00052538
0x892f8016b4466c1f5f1a5fb00bea3b2b77c46505236eca882e19058d578720865188063354 days 11 hrs ago0x4eee20bec65bded1203cb9159085c05a14e5dd7f IN  0xf3c8ed6c721774c022c530e813a369dfe78a6e850.01 Ether0.000499111
0x45155218c0752dd8d36579b08b4d5cb17ab40cfabbc2ff378fba20385edb9d4a5187224354 days 14 hrs ago0xa7ab2ea319948818b62e84f0947f33651c25c25c IN  0xf3c8ed6c721774c022c530e813a369dfe78a6e850 Ether0.000063687
0xd283ca45276e4939d9e64068f61de4a3f5181145ca22d0c22f234b82dbe1945f5187219354 days 14 hrs ago0xa7ab2ea319948818b62e84f0947f33651c25c25c IN  0xf3c8ed6c721774c022c530e813a369dfe78a6e850 Ether0.000063623
0xd5f2213a90c84ef1d3900a532940df0967ca5bc9c043230b3c39b07e86f947715187213354 days 14 hrs ago0xa7ab2ea319948818b62e84f0947f33651c25c25c IN  0xf3c8ed6c721774c022c530e813a369dfe78a6e850 Ether0.000063623
0xf715ddf1e414c94fe891da57d1bf4c4647ca617bb41b9540376db78a2b38d6d25187204354 days 14 hrs ago0xa7ab2ea319948818b62e84f0947f33651c25c25c IN  0xf3c8ed6c721774c022c530e813a369dfe78a6e850 Ether0.000063623
0x991ee6bdad1f538b1d2843bd4ebc202f6302070d82b4c08e63dfd184ee92c0885187202354 days 14 hrs ago0xa7ab2ea319948818b62e84f0947f33651c25c25c IN  0xf3c8ed6c721774c022c530e813a369dfe78a6e850 Ether0.000063623
0x255a25e89636e060135c78e9fd56d4b9b2824aff8754f8267c069ee20315518a5187202354 days 14 hrs ago0x8f35356c487b9cd75a2c1c9e08c4c09ffd66a4d1 IN  0xf3c8ed6c721774c022c530e813a369dfe78a6e850 Ether0.000063623
0x77de8d0b5b521bd340088cdeca84f25eabb8b051c60e821a88eccd428401aeba5187196354 days 14 hrs ago0x8f35356c487b9cd75a2c1c9e08c4c09ffd66a4d1 IN  0xf3c8ed6c721774c022c530e813a369dfe78a6e850 Ether0.000063623
0xee821b7958c5b22feb76a51209b0d881e0db88a2cb7e695ac499de8f7a9322f25187195354 days 14 hrs ago0xa7ab2ea319948818b62e84f0947f33651c25c25c IN  0xf3c8ed6c721774c022c530e813a369dfe78a6e850 Ether0.000063623
0x3bea0d07bd0581fde79a24fa837a78d7fe46c430ab6613babed9bc89a289e0f05187191354 days 14 hrs ago0x8f35356c487b9cd75a2c1c9e08c4c09ffd66a4d1 IN  0xf3c8ed6c721774c022c530e813a369dfe78a6e850 Ether0.000063623
0x3756359db6ecfe6db76cc2e68c24b7e5835e0539a26394acb3de916569d77fe15187142354 days 15 hrs ago0xa35641a8b311e14cf5a1e965a5839e1c4cac6daf IN  0xf3c8ed6c721774c022c530e813a369dfe78a6e850.000299950543981 Ether0.000186481
0x26bfbcdca096cb6f4c74e6e7b6ddff318762cac8a7471979240237630aa2bcb05187132354 days 15 hrs ago0xa35641a8b311e14cf5a1e965a5839e1c4cac6daf IN  0xf3c8ed6c721774c022c530e813a369dfe78a6e850.000297475086805 Ether0.000186481
0x03735bf76caaf13a2ecbe807e31be1cbe967d97c498e0a0c74017881c4c54ce95187123354 days 15 hrs ago0xa35641a8b311e14cf5a1e965a5839e1c4cac6daf IN  0xf3c8ed6c721774c022c530e813a369dfe78a6e850.000267059290123 Ether0.000216481
0x2f8a64074246a737580e4ede0329d589ef45beac4ebc0f909169832760a665875187081354 days 15 hrs ago0xa7ab2ea319948818b62e84f0947f33651c25c25c IN  0xf3c8ed6c721774c022c530e813a369dfe78a6e850.000309 Ether0.000372962
0x406ada81ef30cd228f976ba41b18766fbcbd5dcdad3abf7cdea7a8fc2e726db15187074354 days 15 hrs ago0xa7ab2ea319948818b62e84f0947f33651c25c25c IN  0xf3c8ed6c721774c022c530e813a369dfe78a6e850 Ether0.000063623
0xf7fa2ecdb53bdf7490bfd41338677f2aa5215c4eae381166220b4a75b9a2455b5187006354 days 15 hrs ago0xa7ab2ea319948818b62e84f0947f33651c25c25c IN  0xf3c8ed6c721774c022c530e813a369dfe78a6e850.000297780868055 Ether0.000045438
0xfa86093c0c68c72caff4f364139f436bf028d00cf416b46d11a4dc0535fb6f665186995354 days 15 hrs ago0xa7ab2ea319948818b62e84f0947f33651c25c25c IN  0xf3c8ed6c721774c022c530e813a369dfe78a6e850.000297783990299 Ether0.000022719
0xf2b9e4b2bfc6f6000e2b95287a44cc7da9548b864d674a71b2bab39691d9ef115186995354 days 15 hrs ago0xa7ab2ea319948818b62e84f0947f33651c25c25c IN  0xf3c8ed6c721774c022c530e813a369dfe78a6e850.000293636628086 Ether0.000022719
0x378158bc012c96b5b25a4b85161c0e2d75753876f09283f19745fdfbcdb73f375186995354 days 15 hrs ago0xa7ab2ea319948818b62e84f0947f33651c25c25c IN  0xf3c8ed6c721774c022c530e813a369dfe78a6e850.000293313362268 Ether0.000022719
[ Download CSV Export 

Latest 25 Internal Transaction, Click here to view more Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0x3d2d310c347b3e0982f58c6dadf679ab98c6a8d56b230872550c59d8b28a0bf8704896540 days 3 hrs ago0xf3c8ed6c721774c022c530e813a369dfe78a6e850xb367b96bd9af396dc5281cfdcd9e9571f670832f0.000260118015444601 Ether
0x3756359db6ecfe6db76cc2e68c24b7e5835e0539a26394acb3de916569d77fe15187142354 days 15 hrs ago0xf3c8ed6c721774c022c530e813a369dfe78a6e850x4e91446d248fa0470dbd4fded88e2a2c132ab25f0.000290875578703703 Ether
0x26bfbcdca096cb6f4c74e6e7b6ddff318762cac8a7471979240237630aa2bcb05187132354 days 15 hrs ago0xf3c8ed6c721774c022c530e813a369dfe78a6e850x51cf3239746a700c8f535926cdabccd37e17ef230.000288043402777777 Ether
0x03735bf76caaf13a2ecbe807e31be1cbe967d97c498e0a0c74017881c4c54ce95187123354 days 15 hrs ago0xf3c8ed6c721774c022c530e813a369dfe78a6e850x2642b53770a0331014a186c79e0b1a1d40015b320.000258209876543209 Ether
0x2f8a64074246a737580e4ede0329d589ef45beac4ebc0f909169832760a665875187081354 days 15 hrs ago0xf3c8ed6c721774c022c530e813a369dfe78a6e850xae90c7c40dac8dd3ec989094edaad32e9a3088b90.0003 Ether
0xec82479d28fa132411abfc547087cf8342d336b8363ac9d76837e6ae1fb411675186994354 days 15 hrs ago0xf3c8ed6c721774c022c530e813a369dfe78a6e850x2642b53770a0331014a186c79e0b1a1d40015b320.000287904320987654 Ether
0x408d010ed6b6f2c8cb3279083e92e3988e544882024a007d8925ae8a87b6bee05186994354 days 15 hrs ago0xf3c8ed6c721774c022c530e813a369dfe78a6e850x4ea5ca0eb9552b00e130f51a7564f1b3d748df740.000288767361111111 Ether
0xaba9ae9fc663d94dcc75f58b84bf4d71f1077c95cfc6a0183a51993e2cd9557a5186994354 days 15 hrs ago0xf3c8ed6c721774c022c530e813a369dfe78a6e850xcc353334487696ebc3e15411e0b106186eba3c0c0.0002889651675485 Ether
0x0e4606af610cde22068b96068a646b2b896d80a3332d91433f6110544b3780e25186994354 days 15 hrs ago0xf3c8ed6c721774c022c530e813a369dfe78a6e850x671d3c4398b9730ea9ad7f061bc87fd00da850090.000284638503086419 Ether
0x5153aa73f11b035d0fe96aefeb8809920b3a86ade13ac190ab642cd9f9cc931d5186994354 days 15 hrs ago0xf3c8ed6c721774c022c530e813a369dfe78a6e850x4e91446d248fa0470dbd4fded88e2a2c132ab25f0.000284579282407407 Ether
0xd3c0e715ffc9d9290e4a835b3500401fe074e088612362403c283f921215cc345186992354 days 15 hrs ago0xf3c8ed6c721774c022c530e813a369dfe78a6e850x0f6a9868b21d6b0c46cfffdb1527c866ac24b4a10.000278066633597883 Ether
0xf0eed2a4c03c51fe5b94a77d52a479565163712c03f52ca56d55d8ef66a7bb765186985354 days 15 hrs ago0xf3c8ed6c721774c022c530e813a369dfe78a6e850x5f4ef87ef15b0df30d13e5273050738db35699510.000267932291666666 Ether
0x147f7748e6e97e682108b82911fd1ba1d2ea8cf987731d09fd39f7f61aed76365186977354 days 15 hrs ago0xf3c8ed6c721774c022c530e813a369dfe78a6e850x2642b53770a0331014a186c79e0b1a1d40015b320.000265839506172839 Ether
0x2aee6727110fa4374f994634b9339de89b8236065b5dc16cb1cd4a903040da3d5186976354 days 15 hrs ago0xf3c8ed6c721774c022c530e813a369dfe78a6e850x2642b53770a0331014a186c79e0b1a1d40015b320.000255734567901234 Ether
0xf9a8e90174a08f380df3d88718e5897a796754f28efb5594aae910671994a86e5186968354 days 15 hrs ago0xf3c8ed6c721774c022c530e813a369dfe78a6e850x2642b53770a0331014a186c79e0b1a1d40015b320.000257817901234568 Ether
0x1211222253a9afa24f6aa61e2d47c8a45feee10d38e02334c50ff162050653ec5186962354 days 15 hrs ago0xf3c8ed6c721774c022c530e813a369dfe78a6e850x2642b53770a0331014a186c79e0b1a1d40015b320.000264283950617284 Ether
0x8b5c7db19e6ca67c2b37a7327eeaf03a5dfdeada80c506ac3273f4820afb841f5186950354 days 15 hrs ago0xf3c8ed6c721774c022c530e813a369dfe78a6e850x76b7be5e35b0c6573c0122617683ab86372b80360.000266049768518518 Ether
0x6c73c66a727b67a6b6dbb251f76908f0382ff090cef6a428e7ca064f5336bffc5186935354 days 15 hrs ago0xf3c8ed6c721774c022c530e813a369dfe78a6e850xbae25a69a6eb7341ee834be7635e247e22a1e57a0.00025905324074074 Ether
0x4db06a416db9cab087762c89f10461278b5c40afc8e15838f390992074d8340a5186929354 days 15 hrs ago0xf3c8ed6c721774c022c530e813a369dfe78a6e850x5bc745ad2629d3ec1399d3ed455264c37064a1070.000259241666666666 Ether
0x0ba313aeefd25765ae3882f837e43f550b11aa95bceea7cf60551f84ba748c945186882354 days 16 hrs ago0xf3c8ed6c721774c022c530e813a369dfe78a6e850x2642b53770a0331014a186c79e0b1a1d40015b320.000257296296296296 Ether
0x57db8a6dee024b80992dcb9ce8574648366749df7c94dea1a77375ab6e588ce15186849354 days 16 hrs ago0xf3c8ed6c721774c022c530e813a369dfe78a6e850x2642b53770a0331014a186c79e0b1a1d40015b320.000258246913580247 Ether
0x130b0bbf1209431ba836cd0698c497db50bad24ba18a58996d5f97e6934f5add5186849354 days 16 hrs ago0xf3c8ed6c721774c022c530e813a369dfe78a6e850x2642b53770a0331014a186c79e0b1a1d40015b320.000237895061728395 Ether
0x6dd87c05d6c7f418f8a8dbb1ec36084c7a2c14ca51cce4d42313db0f206bd1155186844354 days 16 hrs ago0xf3c8ed6c721774c022c530e813a369dfe78a6e850x2642b53770a0331014a186c79e0b1a1d40015b320.000231706790123456 Ether
0x10a6aca61d56827040df1efc0438201ffbd125435304cae1b120766d956721c65186771354 days 16 hrs ago0xf3c8ed6c721774c022c530e813a369dfe78a6e850x8ef740190bf0572ff1714036ad5d07ac247f4b410.001798630208333333 Ether
0xf3d3013629c6f6d55458d21517cb29cd272d27a71a013e7d22f2de6021462e475176691356 days 9 hrs ago0xf3c8ed6c721774c022c530e813a369dfe78a6e850x3ba74c579e12b9e25b8c55dbf63c22b0e8d86d1e0.000199998367361111 Ether
[ Download CSV Export 
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity), ZeroFunctionSelector (very low-severity) Solidity Compiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: CryptoSprites
Compiler Version: v0.4.17+commit.bdeb9e52
Optimization Enabled: No
Runs (Optimizer):  200


Contract Source Code
pragma solidity ^0.4.2;

// The below two interfaces (KittyCore and SaleClockAuction) are from Crypto Kitties. This contract will have to call the Crypto Kitties contracts to find the owner of a Kitty, the properties of a Kitty and a Kitties price.
interface KittyCore {

    function ownerOf (uint256 _tokenId) external view returns (address owner);
    
    function getKitty (uint256 _id) external view returns (bool isGestating, bool isReady, uint256 cooldownIndex, uint256 nextActionAt, uint256 siringWithId, uint256 birthTime, uint256 matronId, uint256 sireId, uint256 generation, uint256 genes);
    
}

interface SaleClockAuction {
    
    function getCurrentPrice (uint256 _tokenId) external view returns (uint256);
    
    function getAuction (uint256 _tokenId) external view returns (address seller, uint256 startingPrice, uint256 endingPrice, uint256 duration, uint256 startedAt);
    
}

// ERC721 token standard is used for non-fungible assets, like Sprites (non-fungible because they can't be split into pieces and don't have equal value). Technically this contract will also be ERC20 compliant.
contract ERC721 {
    // Required methods
    function totalSupply() public view returns (uint256 total);
    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) external;
    function transferFrom(address _from, address _to, uint256 _tokenId) external;
    
    function allowance(address _owner, address _spender) view returns (uint remaining);
    
    function takeOwnership(uint256 _tokenId) external;

    // Events
    event Transfer(address indexed from, address indexed to, uint256 tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 tokenId);

    function name() public view returns (string);
    function symbol() public view returns (string);
    
    // function tokensOfOwner(address _owner) external view returns (uint256[] tokenIds);
    // function tokenMetadata(uint256 _tokenId, string _preferredTransport) public view returns (string infoUrl);

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

contract CryptoSprites is ERC721 {
    
    address public owner;
    
    address KittyCoreAddress = 0x06012c8cf97BEaD5deAe237070F9587f8E7A266d;

    address SaleClockAuctionAddress = 0xb1690C08E213a35Ed9bAb7B318DE14420FB57d8C;

    // 1.5% of Sprite sales to go to Heifer International: https://www.heifer.org/what-you-can-do/give/digital-currency.html (not affiliated with this game)
    address charityAddress = 0xb30cb3b3E03A508Db2A0a3e07BA1297b47bb0fb1;
    
    uint public etherForOwner;
    uint public etherForCharity;
    
    uint public ownerCut = 15; // 1.5% (15/1000 - see the buySprite() function) of Sprite sales go to owner of this contract
    uint public charityCut = 15; // 1.5% of Sprite sales also go to an established charity (Heifer International)
    
    uint public featurePrice = 10**16; // 0.01 Ether to feature a sprite
    
    // With the below the default price of a Sprite of a kitty would be only 10% of the kitties price. If for example priceMultiplier = 15 and priceDivider = 10, then the default price of a sprite would be 1.5 times the price of its kitty. Since Solidity doesn't allow decimals, two numbers are needed for  flexibility in setting the default price a sprite would be in relation to the price of its kitten, in case that's needed later (owner of this contract can change the default price of Sprites anytime). 
    // The default price of a Sprite may easily increase later to be more than 10%
    uint public priceMultiplier = 1;
    uint public priceDivider = 10;
    
    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }
    
    function CryptoSprites() {
        owner = msg.sender;
    }
    
    uint[] public featuredSprites;
    
    uint[] public allPurchasedSprites;
    
    uint public totalFeatures;
    uint public totalBuys;
    
    struct BroughtSprites {
        address owner;
        uint spriteImageID;
        bool forSale;
        uint price;
        uint timesTraded;
        bool featured;
    }
    
    mapping (uint => BroughtSprites) public broughtSprites;
    
    // This may include Sprites the user previously owned but doesn't anymore
    mapping (address => uint[]) public spriteOwningHistory;
    
    mapping (address => uint) public numberOfSpritesOwnedByUser;
    
    mapping (address => mapping(address => mapping(uint256 => bool))) public addressToReceiverToAllowedSprite;
    
    mapping (address => mapping(address => uint256)) public addressToReceiverToAmountAllowed;
    
    bytes4 constant InterfaceSignature_ERC165 = bytes4(keccak256('supportsInterface(bytes4)'));
    
    bytes4 constant InterfaceSignature_ERC721 =
        bytes4(keccak256('totalSupply()')) ^
        bytes4(keccak256('balanceOf(address)')) ^
        bytes4(keccak256('ownerOf(uint256)')) ^
        bytes4(keccak256('approve(address,uint256)')) ^
        bytes4(keccak256('transfer(address,uint256)')) ^
        bytes4(keccak256('transferFrom(address,address,uint256)'));

    function() payable {
        etherForOwner += msg.value;
    }
    
    function adjustDefaultSpritePrice (uint _priceMultiplier, uint _priceDivider) onlyOwner {
        require (_priceMultiplier > 0);
        require (_priceDivider > 0);
        priceMultiplier = _priceMultiplier;
        priceDivider = _priceDivider;
    }
    
    function adjustCut (uint _ownerCut, uint _charityCut) onlyOwner {
        require (_ownerCut + _charityCut < 51); // Keep this contract honest by allowing the maximum combined cut to be no more than 5% (50/1000) of sales
        ownerCut = _ownerCut;
        charityCut = _charityCut;
    }
    
    function adjustFeaturePrice (uint _featurePrice) onlyOwner {
        require (_featurePrice > 0);
        featurePrice = _featurePrice;
    }
    
    function withdraw() onlyOwner {
        owner.transfer(etherForOwner);
        charityAddress.transfer(etherForCharity);
        etherForOwner = 0;
        etherForCharity = 0;
    }
    
    function changeOwner (address _owner) onlyOwner {
        owner = _owner;
    }
    
    function featureSprite (uint spriteId) payable {
        // Do not need to require user to be the owner of a Sprite to feature it
        // require (msg.sender == broughtSprites[spriteId].owner);
        require (msg.value == featurePrice);
        broughtSprites[spriteId].featured = true;

        if (broughtSprites[spriteId].timesTraded == 0) {
            var (kittyOwner,,,,) = SaleClockAuction(SaleClockAuctionAddress).getAuction(spriteId);
            uint priceIfAny = SaleClockAuction(SaleClockAuctionAddress).getCurrentPrice(spriteId);
            address kittyOwnerNotForSale = KittyCore(KittyCoreAddress).ownerOf(spriteId);
            
            // When featuring a Sprite that hasn't been traded before, if the original Kitty is for sale, update this Sprite with a price and set forSale = true - as long as msg.sender is the owner of the Kitty. Otherwise it could be that the owner of the Kitty removed the Sprite for sale and a different user could feature the Sprite and have it listed for sale
            if (priceIfAny > 0 && msg.sender == kittyOwner) {
                broughtSprites[spriteId].price = priceIfAny * priceMultiplier / priceDivider;
                broughtSprites[spriteId].forSale = true;
                broughtSprites[spriteId].owner = kittyOwner;
                numberOfSpritesOwnedByUser[msg.sender]++;
            } else if (kittyOwnerNotForSale == msg.sender) {
                // User featuring the sprite owns its kitty, but hasn't listed the kitty for sale
                broughtSprites[spriteId].owner = kittyOwnerNotForSale;
                numberOfSpritesOwnedByUser[msg.sender]++;
            }
            
            broughtSprites[spriteId].spriteImageID = uint(block.blockhash(block.number-1))%360 + 1;
            
        }
        
        totalFeatures++;
        etherForOwner += msg.value;
        featuredSprites.push(spriteId);
    }
    
    function calculatePrice (uint kittyId) view returns (uint) {
        
        uint priceIfAny = SaleClockAuction(SaleClockAuctionAddress).getCurrentPrice(kittyId);
        
        var _ownerCut = ((priceIfAny / 1000) * ownerCut) * priceMultiplier / priceDivider;
        var _charityCut = ((priceIfAny / 1000) * charityCut) * priceMultiplier / priceDivider;
        
        return (priceIfAny * priceMultiplier / priceDivider) + _ownerCut + _charityCut;
        
    }
    
    function buySprite (uint spriteId) payable {
        
        uint _ownerCut;
        uint _charityCut;
        
        if (broughtSprites[spriteId].forSale == true) {
            
            // Buying a sprite that has been purchased or featured before, from a player of this game who has listed it for sale
            
            _ownerCut = ((broughtSprites[spriteId].price / 1000) * ownerCut);
            _charityCut = ((broughtSprites[spriteId].price / 1000) * charityCut);
            
            require (msg.value == broughtSprites[spriteId].price + _ownerCut + _charityCut);
            
            broughtSprites[spriteId].owner.transfer(broughtSprites[spriteId].price);
            
            numberOfSpritesOwnedByUser[broughtSprites[spriteId].owner]--;
            
            if (broughtSprites[spriteId].timesTraded == 0) {
                // Featured sprite that is being purchased for the first time
                allPurchasedSprites.push(spriteId);
            }
            
            Transfer (broughtSprites[spriteId].owner, msg.sender, spriteId);
            
        } else {
            
            // Buying a sprite that has never been brought before, from a kitten currently listed for sale in the CryptoKitties contract. The sale price will go to the owner of the kitten in the CryptoKitties contract (who very possibly would have never even heard of this game)
            
            require (broughtSprites[spriteId].timesTraded == 0);
            require (broughtSprites[spriteId].price == 0);
            
            // Here we are looking up the price of the Sprite's corresponding Kitty
            
            uint priceIfAny = SaleClockAuction(SaleClockAuctionAddress).getCurrentPrice(spriteId);
            require (priceIfAny > 0); // If the kitten in the CryptoKitties contract isn't for sale, a Sprite for it won't be for sale either
            
            _ownerCut = ((priceIfAny / 1000) * ownerCut) * priceMultiplier / priceDivider;
            _charityCut = ((priceIfAny / 1000) * charityCut) * priceMultiplier / priceDivider;
            
            // Crypto Kitty prices decrease every few seconds by a fractional amount, so use >=
            
            require (msg.value >= (priceIfAny * priceMultiplier / priceDivider) + _ownerCut + _charityCut);
            
            // Get the owner of the Kitty for sale
            
            var (kittyOwner,,,,) = SaleClockAuction(SaleClockAuctionAddress).getAuction(spriteId);
            
            kittyOwner.transfer(priceIfAny * priceMultiplier / priceDivider);
            
            allPurchasedSprites.push(spriteId);
            
            broughtSprites[spriteId].spriteImageID = uint(block.blockhash(block.number-1))%360 + 1; // Random number to determine what image/character the sprite will be
            
            Transfer (kittyOwner, msg.sender, spriteId);
            
        }
        
        totalBuys++;
        
        spriteOwningHistory[msg.sender].push(spriteId);
        numberOfSpritesOwnedByUser[msg.sender]++;
        
        broughtSprites[spriteId].owner = msg.sender;
        broughtSprites[spriteId].forSale = false;
        broughtSprites[spriteId].timesTraded++;
        broughtSprites[spriteId].featured = false;
            
        etherForOwner += _ownerCut;
        etherForCharity += _charityCut;
        
    }
    
    // Also used to adjust price if already for sale
    function listSpriteForSale (uint spriteId, uint price) {
        require (price > 0);
        if (broughtSprites[spriteId].owner != msg.sender) {
            require (broughtSprites[spriteId].timesTraded == 0);
            
            // This will be the owner of a Crypto Kitty, who can control the price of their unbrought Sprite
            var (kittyOwner,,,,) = SaleClockAuction(SaleClockAuctionAddress).getAuction(spriteId);
            
            if (kittyOwner != msg.sender) {
                // May be that the kitty owner hasn't listed it for sale, in which case the owner of the kitty has to be retrieved from the KittyCore contract
                address kittyOwnerNotForSale = KittyCore(KittyCoreAddress).ownerOf(spriteId);
                require (kittyOwnerNotForSale == msg.sender);
            }

            broughtSprites[spriteId].owner = msg.sender;
            broughtSprites[spriteId].spriteImageID = uint(block.blockhash(block.number-1))%360 + 1; 
        }
        broughtSprites[spriteId].forSale = true;
        broughtSprites[spriteId].price = price;
    }
    
    function removeSpriteFromSale (uint spriteId) {
        if (broughtSprites[spriteId].owner != msg.sender) {
            require (broughtSprites[spriteId].timesTraded == 0);
            var (kittyOwner,,,,) = SaleClockAuction(SaleClockAuctionAddress).getAuction(spriteId);
            
            if (kittyOwner != msg.sender) {
                address kittyOwnerNotForSale = KittyCore(KittyCoreAddress).ownerOf(spriteId);
                require (kittyOwnerNotForSale == msg.sender);
            }
            
            broughtSprites[spriteId].price = 1; // When a user buys a Sprite Id that isn't for sale in the buySprite() function (ie. would be a Sprite that's never been brought before, for a Crypto Kitty that's for sale), one of the requirements is broughtSprites[spriteId].price == 0, which will be the case by default. By making the price = 1 this will throw and the Sprite won't be able to be brought
        } 
        broughtSprites[spriteId].forSale = false;
    }
    
    // The following functions are in case a different contract wants to pull this data, which requires a function returning it (even if the variables are public) since solidity contracts can't directly pull storage of another contract
    
    function featuredSpritesLength() view external returns (uint) {
        return featuredSprites.length;
    }
    
    function usersSpriteOwningHistory (address user) view external returns (uint[]) {
        return spriteOwningHistory[user];
    }
    
    function lookupSprite (uint spriteId) view external returns (address, uint, bool, uint, uint, bool) {
        return (broughtSprites[spriteId].owner, broughtSprites[spriteId].spriteImageID, broughtSprites[spriteId].forSale, broughtSprites[spriteId].price, broughtSprites[spriteId].timesTraded, broughtSprites[spriteId].featured);
    }
    
    function lookupFeaturedSprites (uint _index) view external returns (uint) {
        return featuredSprites[_index];
    }
    
    function lookupAllSprites (uint _index) view external returns (uint) {
        return allPurchasedSprites[_index];
    }
    
    // Will call SaleClockAuction to get the owner of a kitten and check its price (if it's for sale). We're calling the getAuction() function in the SaleClockAuction to get the kitty owner (that function returns 5 variables, we only want the owner). ownerOf() in the KittyCore contract won't return the kitty owner if the kitty is for sale, and this probably won't be used (including it in case it's needed to lookup an owner of a kitty not for sale later for any reason)
    
    function lookupKitty (uint kittyId) view returns (address, uint, address) {
        
        var (kittyOwner,,,,) = SaleClockAuction(SaleClockAuctionAddress).getAuction(kittyId);

        uint priceIfAny = SaleClockAuction(SaleClockAuctionAddress).getCurrentPrice(kittyId);
        
        address kittyOwnerNotForSale = KittyCore(KittyCoreAddress).ownerOf(kittyId);

        return (kittyOwner, priceIfAny, kittyOwnerNotForSale);

    }
    
    // The below two functions will pull all info of a kitten. Split into two functions otherwise stack too deep errors. These may not even be needed, may just be used so the website can display all info of a kitten when someone looks it up.
    
    function lookupKittyDetails1 (uint kittyId) view returns (bool, bool, uint, uint, uint) {
        
        var (isGestating, isReady, cooldownIndex, nextActionAt, siringWithId,,,,,) = KittyCore(KittyCoreAddress).getKitty(kittyId);
        
        return (isGestating, isReady, cooldownIndex, nextActionAt, siringWithId);
        
    }
    
    function lookupKittyDetails2 (uint kittyId) view returns (uint, uint, uint, uint, uint) {
        
        var(,,,,,birthTime, matronId, sireId, generation, genes) = KittyCore(KittyCoreAddress).getKitty(kittyId);
        
        return (birthTime, matronId, sireId, generation, genes);
        
    }
    
    // ERC-721 required functions below
    
    string public name = 'Crypto Sprites';
    string public symbol = 'CRS';
    uint8 public decimals = 0; // Sprites are non-fungible, ie. can't be divided into pieces
    
    function name() public view returns (string) {
        return name;
    }
    
    function symbol() public view returns (string) {
        return symbol;
    }
    
    function totalSupply() public view returns (uint) {
        return allPurchasedSprites.length;
    }
    
    function balanceOf (address _owner) public view returns (uint) {
        return numberOfSpritesOwnedByUser[_owner];
    }
    
    function ownerOf (uint _tokenId) external view returns (address){
        return broughtSprites[_tokenId].owner;
    }
    
    function approve (address _to, uint256 _tokenId) external {
        require (broughtSprites[_tokenId].owner == msg.sender);
        require (addressToReceiverToAllowedSprite[msg.sender][_to][_tokenId] == false);
        addressToReceiverToAllowedSprite[msg.sender][_to][_tokenId] = true;
        addressToReceiverToAmountAllowed[msg.sender][_to]++;
        Approval (msg.sender, _to, _tokenId);
    }
    
    function disapprove (address _to, uint256 _tokenId) external {
        require (broughtSprites[_tokenId].owner == msg.sender);
        require (addressToReceiverToAllowedSprite[msg.sender][_to][_tokenId] == true); // Else the next line may be 0 - 1 and underflow
        addressToReceiverToAmountAllowed[msg.sender][_to]--;
        addressToReceiverToAllowedSprite[msg.sender][_to][_tokenId] = false;
    }
    
    // Not strictly necessary - this can be done with transferFrom() as well
    function takeOwnership (uint256 _tokenId) external {
        require (addressToReceiverToAllowedSprite[broughtSprites[_tokenId].owner][msg.sender][_tokenId] == true);
        addressToReceiverToAllowedSprite[broughtSprites[_tokenId].owner][msg.sender][_tokenId] = false;
        addressToReceiverToAmountAllowed[broughtSprites[_tokenId].owner][msg.sender]--;
        numberOfSpritesOwnedByUser[broughtSprites[_tokenId].owner]--;
        numberOfSpritesOwnedByUser[msg.sender]++;
        spriteOwningHistory[msg.sender].push(_tokenId);
        Transfer (broughtSprites[_tokenId].owner, msg.sender, _tokenId);
        broughtSprites[_tokenId].owner = msg.sender;
    }
    
    function transfer (address _to, uint _tokenId) external {
        require (broughtSprites[_tokenId].owner == msg.sender);
        broughtSprites[_tokenId].owner = _to;
        numberOfSpritesOwnedByUser[msg.sender]--;
        numberOfSpritesOwnedByUser[_to]++;
        spriteOwningHistory[_to].push(_tokenId);
        Transfer (msg.sender, _to, _tokenId);
    }

    function transferFrom (address _from, address _to, uint256 _tokenId) external {
        require (addressToReceiverToAllowedSprite[_from][msg.sender][_tokenId] == true);
        require (broughtSprites[_tokenId].owner == _from);
        addressToReceiverToAllowedSprite[_from][msg.sender][_tokenId] = false;
        addressToReceiverToAmountAllowed[_from][msg.sender]--;
        numberOfSpritesOwnedByUser[_from]--;
        numberOfSpritesOwnedByUser[_to]++;
        spriteOwningHistory[_to].push(_tokenId);
        broughtSprites[_tokenId].owner = _to;
        Transfer (_from, _to, _tokenId);
    }
    
    function allowance (address _owner, address _spender) view returns (uint) {
        return addressToReceiverToAmountAllowed[_owner][_spender];
    }
    
    function supportsInterface (bytes4 _interfaceID) external view returns (bool) {
        return ((_interfaceID == InterfaceSignature_ERC165) || (_interfaceID == InterfaceSignature_ERC721));
    }
    
}

Contract ABI
[{"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":false,"inputs":[{"name":"_featurePrice","type":"uint256"}],"name":"adjustFeaturePrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"charityCut","outputs":[{"name":"","type":"uint256"}],"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":"","type":"address"}],"name":"numberOfSpritesOwnedByUser","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"spriteId","type":"uint256"}],"name":"lookupSprite","outputs":[{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"bool"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"priceDivider","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"addressToReceiverToAmountAllowed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"featuredSprites","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spriteId","type":"uint256"}],"name":"buySprite","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"allPurchasedSprites","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"broughtSprites","outputs":[{"name":"owner","type":"address"},{"name":"spriteImageID","type":"uint256"},{"name":"forSale","type":"bool"},{"name":"price","type":"uint256"},{"name":"timesTraded","type":"uint256"},{"name":"featured","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"etherForOwner","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spriteId","type":"uint256"}],"name":"removeSpriteFromSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalBuys","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spriteId","type":"uint256"},{"name":"price","type":"uint256"}],"name":"listSpriteForSale","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":"spriteId","type":"uint256"}],"name":"featureSprite","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_ownerCut","type":"uint256"},{"name":"_charityCut","type":"uint256"}],"name":"adjustCut","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"spriteOwningHistory","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"usersSpriteOwningHistory","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_index","type":"uint256"}],"name":"lookupAllSprites","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_priceMultiplier","type":"uint256"},{"name":"_priceDivider","type":"uint256"}],"name":"adjustDefaultSpritePrice","outputs":[],"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":"kittyId","type":"uint256"}],"name":"calculatePrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"takeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"etherForCharity","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"priceMultiplier","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"kittyId","type":"uint256"}],"name":"lookupKittyDetails1","outputs":[{"name":"","type":"bool"},{"name":"","type":"bool"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalFeatures","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_index","type":"uint256"}],"name":"lookupFeaturedSprites","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"featuredSpritesLength","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"kittyId","type":"uint256"}],"name":"lookupKittyDetails2","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"kittyId","type":"uint256"}],"name":"lookupKitty","outputs":[{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"addressToReceiverToAllowedSprite","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"featurePrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"disapprove","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"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"}]

Contract Creation Code
60606040527306012c8cf97bead5deae237070f9587f8e7a266d600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b1690c08e213a35ed9bab7b318de14420fb57d8c600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b30cb3b3e03a508db2a0a3e07ba1297b47bb0fb1600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f600655600f600755662386f26fc100006008556001600955600a80556040805190810160405280600e81526020017f43727970746f2053707269746573000000000000000000000000000000000000815250601490805190602001906200016e9291906200022b565b506040805190810160405280600381526020017f435253000000000000000000000000000000000000000000000000000000000081525060159080519060200190620001bc9291906200022b565b506000601660006101000a81548160ff021916908360ff1602179055503415620001e557600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002da565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200026e57805160ff19168380011785556200029f565b828001600101855582156200029f579182015b828111156200029e57825182559160200191906001019062000281565b5b509050620002ae9190620002b2565b5090565b620002d791905b80821115620002d3576000816000905550600101620002b9565b5090565b90565b6144cb80620002ea6000396000f30060606040523615610244576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a71461025657806306fdde03146102b0578063095ea7b31461033e5780630a71d0201461038057806318160ddd146103a3578063186e4297146103cc57806323b872dd146103f5578063253e3447146104565780632759ea4a146104a3578063313ce56714610531578063365044a8146105605780633ccfd60b146105895780633e7e730d1461059e578063408512101461060a57806351c54c681461064157806353eeb4301461065957806358d38231146106905780635a5e00741461071e5780635e7037d0146107475780636352211e1461076a5780636c7f3f17146107cd57806370a08231146107f657806378d46c3f1461084357806383b5ff8b1461086f57806388d18ea4146108985780638bc6a72b146108b05780638da5cb5b146108dc57806395d89b41146109315780639b6a2b2f146109bf5780639e0cbb6414610a15578063a542a02f14610aa3578063a6f9dae114610ada578063a774f16314610b13578063a9059cbb14610b3f578063ae10426514610b81578063b2e6ceeb14610bb8578063d36f0e9c14610bdb578063d50cb88b14610c04578063d7b4c9b114610c2d578063d94288de14610c88578063d95431cd14610cb1578063dd62ed3e14610ce8578063e118eda414610d54578063ea7c211514610d7d578063f0d504eb14610dd0578063f15886db14610e6d578063f63841e414610ee6578063fbabdb0614610f0f575b34600460008282540192505081905550005b341561026157600080fd5b61029660048080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019091905050610f51565b604051808215151515815260200191505060405180910390f35b34156102bb57600080fd5b6102c3611186565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103035780820151818401526020810190506102e8565b50505050905090810190601f1680156103305780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561034957600080fd5b61037e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061122e565b005b341561038b57600080fd5b6103a160048080359060200190919050506114e6565b005b34156103ae57600080fd5b6103b661155a565b6040518082815260200191505060405180910390f35b34156103d757600080fd5b6103df611567565b6040518082815260200191505060405180910390f35b341561040057600080fd5b610454600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061156d565b005b341561046157600080fd5b61048d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611981565b6040518082815260200191505060405180910390f35b34156104ae57600080fd5b6104c46004808035906020019091905050611999565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018515151515815260200184815260200183815260200182151515158152602001965050505050505060405180910390f35b341561053c57600080fd5b610544611a7b565b604051808260ff1660ff16815260200191505060405180910390f35b341561056b57600080fd5b610573611a8e565b6040518082815260200191505060405180910390f35b341561059457600080fd5b61059c611a94565b005b34156105a957600080fd5b6105f4600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611bc8565b6040518082815260200191505060405180910390f35b341561061557600080fd5b61062b6004808035906020019091905050611bed565b6040518082815260200191505060405180910390f35b6106576004808035906020019091905050611c11565b005b341561066457600080fd5b61067a60048080359060200190919050506123e7565b6040518082815260200191505060405180910390f35b341561069b57600080fd5b6106b1600480803590602001909190505061240b565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018515151515815260200184815260200183815260200182151515158152602001965050505050505060405180910390f35b341561072957600080fd5b610731612481565b6040518082815260200191505060405180910390f35b341561075257600080fd5b6107686004808035906020019091905050612487565b005b341561077557600080fd5b61078b6004808035906020019091905050612763565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156107d857600080fd5b6107e06127a3565b6040518082815260200191505060405180910390f35b341561080157600080fd5b61082d600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506127a9565b6040518082815260200191505060405180910390f35b341561084e57600080fd5b61086d60048080359060200190919080359060200190919050506127f2565b005b341561087a57600080fd5b610882612b65565b6040518082815260200191505060405180910390f35b6108ae6004808035906020019091905050612b6b565b005b34156108bb57600080fd5b6108da60048080359060200190919080359060200190919050506130af565b005b34156108e757600080fd5b6108ef61312d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561093c57600080fd5b610944613152565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610984578082015181840152602081019050610969565b50505050905090810190601f1680156109b15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156109ca57600080fd5b6109ff600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506131fa565b6040518082815260200191505060405180910390f35b3415610a2057600080fd5b610a4c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061322b565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610a8f578082015181840152602081019050610a74565b505050509050019250505060405180910390f35b3415610aae57600080fd5b610ac460048080359060200190919050506132c8565b6040518082815260200191505060405180910390f35b3415610ae557600080fd5b610b11600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506132ec565b005b3415610b1e57600080fd5b610b3d600480803590602001909190803590602001909190505061338a565b005b3415610b4a57600080fd5b610b7f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050613415565b005b3415610b8c57600080fd5b610ba26004808035906020019091905050613648565b6040518082815260200191505060405180910390f35b3415610bc357600080fd5b610bd9600480803590602001909190505061376e565b005b3415610be657600080fd5b610bee613c1e565b6040518082815260200191505060405180910390f35b3415610c0f57600080fd5b610c17613c24565b6040518082815260200191505060405180910390f35b3415610c3857600080fd5b610c4e6004808035906020019091905050613c2a565b6040518086151515158152602001851515151581526020018481526020018381526020018281526020019550505050505060405180910390f35b3415610c9357600080fd5b610c9b613d51565b6040518082815260200191505060405180910390f35b3415610cbc57600080fd5b610cd26004808035906020019091905050613d57565b6040518082815260200191505060405180910390f35b3415610cf357600080fd5b610d3e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613d7b565b6040518082815260200191505060405180910390f35b3415610d5f57600080fd5b610d67613e02565b6040518082815260200191505060405180910390f35b3415610d8857600080fd5b610d9e6004808035906020019091905050613e0f565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b3415610ddb57600080fd5b610df16004808035906020019091905050613f36565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390f35b3415610e7857600080fd5b610ecc600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050614190565b604051808215151515815260200191505060405180910390f35b3415610ef157600080fd5b610ef96141cc565b6040518082815260200191505060405180910390f35b3415610f1a57600080fd5b610f4f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506141d2565b005b600060405180807f737570706f727473496e74657266616365286279746573342900000000000000815250601901905060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061117f575060405180807f7472616e7366657246726f6d28616464726573732c616464726573732c75696e81526020017f74323536290000000000000000000000000000000000000000000000000000008152506025019050604051809103902060405180807f7472616e7366657228616464726573732c75696e7432353629000000000000008152506019019050604051809103902060405180807f617070726f766528616464726573732c75696e743235362900000000000000008152506018019050604051809103902060405180807f6f776e65724f662875696e7432353629000000000000000000000000000000008152506010019050604051809103902060405180807f62616c616e63654f6628616464726573732900000000000000000000000000008152506012019050604051809103902060405180807f746f74616c537570706c79282900000000000000000000000000000000000000815250600d019050604051809103902018181818187bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b61118e614426565b60148054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112245780601f106111f957610100808354040283529160200191611224565b820191906000526020600020905b81548152906001019060200180831161120757829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff16600f600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561129e57600080fd5b60001515601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060009054906101000a900460ff16151514151561134b57600080fd5b6001601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff021916908315150217905550601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561154157600080fd5b60008111151561155057600080fd5b8060088190555050565b6000600c80549050905090565b60075481565b60011515601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060009054906101000a900460ff16151514151561161a57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff16600f600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561168a57600080fd5b6000601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff021916908315150217905550601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060010182816118ad919061443a565b91600052602060002090016000839091909150555081600f600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60116020528060005260406000206000915090505481565b600080600080600080600f600088815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f600089815260200190815260200160002060010154600f60008a815260200190815260200160002060020160009054906101000a900460ff16600f60008b815260200190815260200160002060030154600f60008c815260200190815260200160002060040154600f60008d815260200190815260200160002060050160009054906101000a900460ff1695509550955095509550955091939550919395565b601660009054906101000a900460ff1681565b600a5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611aef57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6004549081150290604051600060405180830381858888f193505050501515611b5257600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6005549081150290604051600060405180830381858888f193505050501515611bb657600080fd5b60006004819055506000600581905550565b6013602052816000526040600020602052806000526040600020600091509150505481565b600b81815481101515611bfc57fe5b90600052602060002090016000915090505481565b60008060008060011515600f600087815260200190815260200160002060020160009054906101000a900460ff1615151415611ebe576006546103e8600f600088815260200190815260200160002060030154811515611c6d57fe5b040293506007546103e8600f600088815260200190815260200160002060030154811515611c9757fe5b040292508284600f600088815260200190815260200160002060030154010134141515611cc357600080fd5b600f600086815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600f6000888152602001908152602001600020600301549081150290604051600060405180830381858888f193505050501515611d4f57600080fd5b60116000600f600088815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055506000600f6000878152602001908152602001600020600401541415611e1e57600c8054806001018281611e08919061443a565b9160005260206000209001600087909190915055505b3373ffffffffffffffffffffffffffffffffffffffff16600f600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3612220565b6000600f600087815260200190815260200160002060040154141515611ee357600080fd5b6000600f600087815260200190815260200160002060030154141515611f0857600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c55d0f56866000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1515611fa157600080fd5b6102c65a03f11515611fb257600080fd5b505050604051805190509150600082111515611fcd57600080fd5b600a546009546006546103e885811515611fe357fe5b040202811515611fef57fe5b049350600a546009546007546103e88581151561200857fe5b04020281151561201457fe5b0492508284600a54600954850281151561202a57fe5b040101341015151561203b57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166378bd793586600060405160a001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060a060405180830381600087803b15156120d457600080fd5b6102c65a03f115156120e557600080fd5b505050604051805190602001805190602001805190602001805190602001805190505050505090508073ffffffffffffffffffffffffffffffffffffffff166108fc600a54600954850281151561213857fe5b049081150290604051600060405180830381858888f19350505050151561215e57600080fd5b600c8054806001018281612172919061443a565b916000526020600020900160008790919091505550600161016860014303406001900481151561219e57fe5b0601600f6000878152602001908152602001600020600101819055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a35b600e60008154809291906001019190505550601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806001018281612283919061443a565b916000526020600020900160008790919091505550601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050555033600f600087815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600f600087815260200190815260200160002060020160006101000a81548160ff021916908315150217905550600f6000868152602001908152602001600020600401600081548092919060010191905055506000600f600087815260200190815260200160002060050160006101000a81548160ff02191690831515021790555083600460008282540192505081905550826005600082825401925050819055505050505050565b600c818154811015156123f657fe5b90600052602060002090016000915090505481565b600f6020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff16908060030154908060040154908060050160009054906101000a900460ff16905086565b60045481565b6000803373ffffffffffffffffffffffffffffffffffffffff16600f600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561272f576000600f60008581526020019081526020016000206004015414151561251a57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166378bd793584600060405160a001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060a060405180830381600087803b15156125b357600080fd5b6102c65a03f115156125c457600080fd5b505050604051805190602001805190602001805190602001805190602001805190505050505091503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561271257600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e846000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15156126ba57600080fd5b6102c65a03f115156126cb57600080fd5b5050506040518051905090503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561271157600080fd5b5b6001600f6000858152602001908152602001600020600301819055505b6000600f600085815260200190815260200160002060020160006101000a81548160ff021916908315150217905550505050565b6000600f600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600e5481565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060008311151561280457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16600f600086815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612b15576000600f60008681526020019081526020016000206004015414151561289457600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166378bd793585600060405160a001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060a060405180830381600087803b151561292d57600080fd5b6102c65a03f1151561293e57600080fd5b505050604051805190602001805190602001805190602001805190602001805190505050505091503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515612a8c57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e856000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1515612a3457600080fd5b6102c65a03f11515612a4557600080fd5b5050506040518051905090503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515612a8b57600080fd5b5b33600f600086815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001610168600143034060019004811515612af857fe5b0601600f6000868152602001908152602001600020600101819055505b6001600f600086815260200190815260200160002060020160006101000a81548160ff02191690831515021790555082600f60008681526020019081526020016000206003018190555050505050565b60065481565b600080600060085434141515612b8057600080fd5b6001600f600086815260200190815260200160002060050160006101000a81548160ff0219169083151502179055506000600f600086815260200190815260200160002060040154141561305e57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166378bd793585600060405160a001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060a060405180830381600087803b1515612c6757600080fd5b6102c65a03f11515612c7857600080fd5b50505060405180519060200180519060200180519060200180519060200180519050505050509250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c55d0f56856000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1515612d3957600080fd5b6102c65a03f11515612d4a57600080fd5b505050604051805190509150600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e856000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1515612def57600080fd5b6102c65a03f11515612e0057600080fd5b505050604051805190509050600082118015612e4757508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15612f5057600a546009548302811515612e5d57fe5b04600f6000868152602001908152602001600020600301819055506001600f600086815260200190815260200160002060020160006101000a81548160ff02191690831515021790555082600f600086815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050555061302a565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156130295780600f600086815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055505b5b600161016860014303406001900481151561304157fe5b0601600f6000868152602001908152602001600020600101819055505b600d6000815480929190600101919050555034600460008282540192505081905550600b8054806001018281613094919061443a565b91600052602060002090016000869091909150555050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561310a57600080fd5b603381830110151561311b57600080fd5b81600681905550806007819055505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61315a614426565b60158054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156131f05780601f106131c5576101008083540402835291602001916131f0565b820191906000526020600020905b8154815290600101906020018083116131d357829003601f168201915b5050505050905090565b60106020528160005260406000208181548110151561321557fe5b9060005260206000209001600091509150505481565b613233614466565b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156132bc57602002820191906000526020600020905b8154815260200190600101908083116132a8575b50505050509050919050565b6000600c828154811015156132d957fe5b9060005260206000209001549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561334757600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156133e557600080fd5b6000821115156133f457600080fd5b60008111151561340357600080fd5b8160098190555080600a819055505050565b3373ffffffffffffffffffffffffffffffffffffffff16600f600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561348557600080fd5b81600f600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060010182816135ca919061443a565b9160005260206000209001600083909190915055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c55d0f56866000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15156136e757600080fd5b6102c65a03f115156136f857600080fd5b505050604051805190509250600a546009546006546103e88681151561371a57fe5b04020281151561372657fe5b049150600a546009546007546103e88681151561373f57fe5b04020281151561374b57fe5b0490508082600a54600954860281151561376157fe5b0401019350505050919050565b6001151560126000600f600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060009054906101000a900460ff16151514151561385157600080fd5b600060126000600f600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff02191690831515021790555060136000600f600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060019003919050555060116000600f600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806001018281613b16919061443a565b9160005260206000209001600083909190915055503373ffffffffffffffffffffffffffffffffffffffff16600f600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a333600f600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60055481565b60095481565b600080600080600080600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e98b7f4d8c600060405161014001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505061014060405180830381600087803b1515613cd457600080fd5b6102c65a03f11515613ce557600080fd5b50505060405180519060200180519060200180519060200180519060200180519060200180519060200180519060200180519060200180519060200180519050505050505094509450945094509450848484848499509950995099509950505050505091939590929450565b600d5481565b6000600b82815481101515613d6857fe5b9060005260206000209001549050919050565b6000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600b80549050905090565b600080600080600080600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e98b7f4d8c600060405161014001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505061014060405180830381600087803b1515613eb957600080fd5b6102c65a03f11515613eca57600080fd5b50505060405180519060200180519060200180519060200180519060200180519060200180519060200180519060200180519060200180519060200180519050995099509950995099505050505050848484848499509950995099509950505050505091939590929450565b600080600080600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166378bd793588600060405160a001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060a060405180830381600087803b1515613fd857600080fd5b6102c65a03f11515613fe957600080fd5b50505060405180519060200180519060200180519060200180519060200180519050505050509250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c55d0f56886000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15156140aa57600080fd5b6102c65a03f115156140bb57600080fd5b505050604051805190509150600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e886000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b151561416057600080fd5b6102c65a03f1151561417157600080fd5b5050506040518051905090508282829550955095505050509193909250565b6012602052826000526040600020602052816000526040600020602052806000526040600020600092509250509054906101000a900460ff1681565b60085481565b3373ffffffffffffffffffffffffffffffffffffffff16600f600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561424257600080fd5b60011515601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060009054906101000a900460ff1615151415156142ef57600080fd5b601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602060405190810160405280600081525090565b81548183558181151161446157818360005260206000209182019101614460919061447a565b5b505050565b602060405190810160405280600081525090565b61449c91905b80821115614498576000816000905550600101614480565b5090565b905600a165627a7a72305820d440243c53c7f8b994f5aa02413b9167b73623459094a8b406855362ae91e6ac0029


   Swarm Source:
bzzr://d440243c53c7f8b994f5aa02413b9167b73623459094a8b406855362ae91e6ac
Block Age transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.