Contract 0xb59a226a2b8a2f2b0512baa35cc348b6b213b671

 

TxHash Block Age From To Value [TxFee]
0x8651f0cc6cf106caa251cf62fe95621f1a546b110da0ce0297aa6428aac59a2272115507 days 8 hrs ago0xa826813d0eb5d629e959c02b8f7a3d0f53066ce4 IN  0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710 Ether0.00029383
0x18ce155aadd21165e79ae17788b3a5ea38980c4143cc42314f084ab8d551c071704319740 days 8 hrs ago0xfa88f9b1f60b05419b034345d6b5b601a3c5df3b IN  0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710 Ether0.001189
0x2b6e225fb570375029e6687e228e1dc8c477e01c37d4fe96b26dda43f74b0a8f677830985 days 3 hrs ago0x08384e143e22eddba539a17fb83440f27ef2ffbc IN  0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710 Ether0.000297368
0xa488d8c25d99648e74d2a1c3ea65e6707885c55343320ef69af119aad46e0871670420497 days 6 hrs ago0x0058770fed3f5b7ac438dbdfaedc2d566baa62af IN  0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710 Ether0.001202079
0x79ce08836778d0da95da456625ceb6124c10338ac0c58979f2633ca8a2e080985894165232 days 4 hrs ago0xa2728f9d3cdff72383f49e59e084464cfbf78666 IN  0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710 Ether0.001641864
0x641c214b84ae6dcf347762455dceed911f756a043ae4c4db906cc290727724bf5506083299 days 23 hrs ago0xf7633e970d9954367d23dc28695d9fbabdfa7f16 IN  0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710 Ether0.001199455
0x189e80ddb03a88325c69847ecdb4e93e762fb4611e35220ed538e01a6ed9e7035284070337 days 8 hrs ago0xa79babfb8c58b113d80a72cf8c9cc90f5ef52424 IN  0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710 Ether0.001199455
0x76127964a701ce0d6ea13ea75ecc575df7f11f84fa0c38ac3e332b6a4a446fab5261570341 days 3 hrs ago0xd58e8d91c5880bed2faa1db8e6dbd7058860f667 IN  0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710 Ether0.00011702
0x04220e8b7bab38f0474179421a48bda7825e184d0932abf115a90f1f133a630a5183379354 days 10 hrs ago0xd6fd665c720bb8d7276f2c0549d68f183f121687 IN  0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710 Ether0.0011702
0x1b5648c8f5d4db8630f95008fe2be6b4b46c1b547aa206df7931205d8d832e4c4964270391 days 10 hrs ago0x01537015a6e780df582a7a0743389eab02c6272b IN  0xb59a226a2b8a2f2b0512baa35cc348b6b213b6711.2 Ether0.000454734
0xb149cfa8b10071d33ee073f994f1713432f95e541b821495fbd1c0a6a96a8d9d4958396392 days 10 hrs ago0x01537015a6e780df582a7a0743389eab02c6272b IN  0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710 Ether0.000780591
0x7825c2d662c6c06ac4f8dd22e7f888fbecb926248a894867ed3561f43a0cfefa4940075395 days 13 hrs ago0xcbfeeaa8303e6d1944dc9a4f1262aa698eef1bb5 IN  0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710 Ether0.001524011
0x442d2ccabab5ec8f15cbc71513772aae3ada7d71fe709f9ee830aa10ed5417ef4930731397 days 4 hrs ago0x01537015a6e780df582a7a0743389eab02c6272b IN  0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710 Ether0.000614355
0x3f0f19af9501bc3ebca57e53f733b16d17b853a166e2c7ba645c2f37d2eff0004848747412 days 5 hrs ago0x2b0199bce5c368b0b5282294f60cffb4f432a1d2 IN  0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710 Ether0.000515982
0x46b191bc9112dd1b035fec16d0cf10cdb64defe3f62ace7ea92d8bf29a7dc6f94848743412 days 5 hrs ago0x2b0199bce5c368b0b5282294f60cffb4f432a1d2 IN  0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710 Ether0.0006289825
0x6a45f7ef01ed5224b9aaf14697121fc74a722eb607df565edbafeda0e2f293a84825796416 days 4 hrs ago0xa59b5e1718d9c06a2fcca8f7cdecfa81373e2fca IN  0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710 Ether0.000011217
0x0505bc9fd8e37d946e85e733167d0f0a715ab38fe61281a8309c4cdf27c6bd444819812417 days 4 hrs ago0x0ceb78d848c432b18c35293c7295627b8a9c9031 IN  0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710 Ether0.00046808
0xcbd11594783e3dba0fc61e02a929355b3c8ab1d5bc17cf006cbdb80b76f8a14f4818648417 days 9 hrs ago0x6e848c30d4af000b2d511d411c452935f888b71a IN  0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710 Ether0.001316475
0x247bba78bee16a2863a9985a51113bdee47dace3ab4ecab5e63d33ff47b6e9244772432425 days 5 hrs ago0x6e848c30d4af000b2d511d411c452935f888b71a IN  0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710 Ether0.00044868
0xbe5f513173da601e7e65df8aaf86f044f7ea6aa273b9dd359c889f911551b50c4771977425 days 7 hrs ago0x6e848c30d4af000b2d511d411c452935f888b71a IN  0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710 Ether0.00044868
0x9d844c8b296eebd401b8b9f7a6ee0c776c1644b745f91759635960661f40598f4645347447 days 5 hrs ago0x5eb8ced9b8366d40a54d54250e31403a39652634 IN  0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710 Ether0.000155125
0x8da65f61de9346f1b14417d4c4c73a4bbf40cba3f07efb6b627d87396962b5a44545041463 days 10 hrs ago0x00bed976679bb6ae701f1632821c346d40aed96c IN  0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710 Ether0.000087088
0x653da07a49f409aee2402e28a7e7c682dbcd74083a44e74f24416348b34fbd644545036463 days 10 hrs ago0x00bed976679bb6ae701f1632821c346d40aed96c IN  0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710 Ether0.000087088
0x6ad248c7e0ce88c26e8d5541ae6f701f1407a6190e9ba9ab1f008094865439a24514620468 days 7 hrs ago0x005705952ea259375b88f13467d5abdd82f9ad90 IN  Contract Creation0 Ether0.04379406
[ 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
0xf6ca965d3c2eb0abd0f5534b2e51446520babe760c2fcedc0e3cb7d5f64d107272379761 day 37 mins ago0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710xea4df6f41e90dd7b6c482bda228925de159c03f54.5 Ether
0xe2ce512d019aa0c24b75a0d34a5530d22069c2cb4cd66a8698f42fcac0216cab72377561 day 1 hr ago0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710xea4df6f41e90dd7b6c482bda228925de159c03f51.1 Ether
0x48bd699b5400a6bd2b1d6922c06382dd6989284a30ab5a69434aa01160e4870a72376361 day 2 hrs ago0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710xea4df6f41e90dd7b6c482bda228925de159c03f51.00312141 Ether
0x841e9c2767127d3b3eaa519947d6dc97f2cd490fe6a7d9397305f4b9f221ece472376201 day 2 hrs ago0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710xea4df6f41e90dd7b6c482bda228925de159c03f53.83 Ether
0x1972d0cf42a68d07a567e53de3bd5137455ba43e8f4cbc753f5a2c8ac1bdf6a272355291 day 14 hrs ago0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710xea4df6f41e90dd7b6c482bda228925de159c03f52.5 Ether
0xd79544e84933d43a02d9065e692028976686a30ad589a3f19357a227f1db7e8c72318282 days 11 hrs ago0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710xea4df6f41e90dd7b6c482bda228925de159c03f55 Ether
0x8e1291c47a23acd05ec0a600ff4197e65846ef18f0a31322a6c410dac0dd4ab772317352 days 12 hrs ago0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710xea4df6f41e90dd7b6c482bda228925de159c03f55 Ether
0xd0493a332cb3b42d8d31741ec2b36295c73e71a3d13fca08742a54a6a10c9df972316872 days 12 hrs ago0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710xea4df6f41e90dd7b6c482bda228925de159c03f55.20353 Ether
0x82af64f8e94fec3a36542bc2cd7bd1d861f11b9eef00cf50f7a67849b884ef2f72241344 days 7 hrs ago0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710xea4df6f41e90dd7b6c482bda228925de159c03f51.1 Ether
0x31340a592d0d146d6311d834731177af5de1136bc232a3e2992272ff9563cde172204205 days 5 hrs ago0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710xea4df6f41e90dd7b6c482bda228925de159c03f52 Ether
0xdf2bf351b8ff5702d336147da677e9f239fb1af0716bcddc042d45c4e5acb35b72203915 days 5 hrs ago0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710xea4df6f41e90dd7b6c482bda228925de159c03f56.080157623 Ether
0xe2cd46e7ed0ce642b13f46f0a106e903f628fc6692bfd3e6c63ca2a171b7000372201975 days 6 hrs ago0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710xea4df6f41e90dd7b6c482bda228925de159c03f510 Ether
0xfc7a97d0d15ebd0e77be30999f01e8e72984faa0167968dcdcbdbf0f6e4ede2c72166996 days 2 hrs ago0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710xea4df6f41e90dd7b6c482bda228925de159c03f51.0881727 Ether
0x80da2893663459bc555d48378f3ec69771015051be2c5dd538f8caebe195e03f72163326 days 4 hrs ago0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710xea4df6f41e90dd7b6c482bda228925de159c03f56.53 Ether
0x0f6ba83bfd6d00ce2ac25e96d89a03e83e2cce693054dd6981b7f3f73e564fa572155716 days 9 hrs ago0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710xea4df6f41e90dd7b6c482bda228925de159c03f51.05 Ether
0xd55040cd43d7c6df10ba3cd04aaa7545953fd0022c8805b708fe9056f183f77c72154576 days 9 hrs ago0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710xea4df6f41e90dd7b6c482bda228925de159c03f52.97 Ether
0xb743364a0c41368b3dfe4aeebbf93e07cc990b34dbb9146c6198d59a2c699c4372151376 days 11 hrs ago0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710xea4df6f41e90dd7b6c482bda228925de159c03f515 Ether
0xd394516f8dc92a35c1c9cfa745f79b15f54748ea6e262b7a5ae5fa3f4c660a7d72149256 days 13 hrs ago0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710xea4df6f41e90dd7b6c482bda228925de159c03f55 Ether
0x9e04435bbe24a6a123b240a0defddae859e3157ecbbe7984c72bc864be25696672146916 days 14 hrs ago0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710xea4df6f41e90dd7b6c482bda228925de159c03f5100 Ether
0x20b837c80aefacf56a676b64b8de94a2a9dc869e95489639b8ec5aec5a189faa72146566 days 14 hrs ago0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710xea4df6f41e90dd7b6c482bda228925de159c03f53.36592192 Ether
0x99b1897628bba0b7fab6f32a2769b7811127774cc99032a18ea5c9c60bd589ca72142156 days 16 hrs ago0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710xea4df6f41e90dd7b6c482bda228925de159c03f510 Ether
0x616d878ba7d6a2eed27b2ad20346110cf60b1788416db48c3bff7a0afd5e82ac72141126 days 17 hrs ago0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710xea4df6f41e90dd7b6c482bda228925de159c03f51.0025 Ether
0x4b3c871a6324a2b076dcd96af1139d53c8cbfb51ad212ccdd525fb5c40d9d1a172140546 days 17 hrs ago0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710xea4df6f41e90dd7b6c482bda228925de159c03f52.45 Ether
0xe8e37415db815c5b1d12d2333e6b06446773a8bf047d9ea6e67b4745ecf70ec772136026 days 20 hrs ago0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710xea4df6f41e90dd7b6c482bda228925de159c03f51.5 Ether
0xfe1c3a6392ef35d29ecaa2182ee4d8be03b65c8d49fcf34589820cdb972d2aa872126037 days 2 hrs ago0xb59a226a2b8a2f2b0512baa35cc348b6b213b6710xea4df6f41e90dd7b6c482bda228925de159c03f59.996953380110647758 Ether
[ Download CSV Export 
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), NestedArrayFunctionCallDecoder (medium-severity), ZeroFunctionSelector (very low-severity) Solidity Compiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: EtherToken
Compiler Version: v0.4.15+commit.bbb8e64f
Optimization Enabled: Yes
Runs (Optimizer):  200


Contract Source Code
pragma solidity 0.4.15;

/// @title provides subject to role checking logic
contract IAccessPolicy {

    ////////////////////////
    // Public functions
    ////////////////////////

    /// @notice We don't make this function constant to allow for state-updating access controls such as rate limiting.
    /// @dev checks if subject belongs to requested role for particular object
    /// @param subject address to be checked against role, typically msg.sender
    /// @param role identifier of required role
    /// @param object contract instance context for role checking, typically contract requesting the check
    /// @param verb additional data, in current AccessControll implementation msg.sig
    /// @return if subject belongs to a role
    function allowed(
        address subject,
        bytes32 role,
        address object,
        bytes4 verb
    )
        public
        returns (bool);
}

/// @title enables access control in implementing contract
/// @dev see AccessControlled for implementation
contract IAccessControlled {

    ////////////////////////
    // Events
    ////////////////////////

    /// @dev must log on access policy change
    event LogAccessPolicyChanged(
        address controller,
        IAccessPolicy oldPolicy,
        IAccessPolicy newPolicy
    );

    ////////////////////////
    // Public functions
    ////////////////////////

    /// @dev allows to change access control mechanism for this contract
    ///     this method must be itself access controlled, see AccessControlled implementation and notice below
    /// @notice it is a huge issue for Solidity that modifiers are not part of function signature
    ///     then interfaces could be used for example to control access semantics
    /// @param newPolicy new access policy to controll this contract
    /// @param newAccessController address of ROLE_ACCESS_CONTROLLER of new policy that can set access to this contract
    function setAccessPolicy(IAccessPolicy newPolicy, address newAccessController)
        public;

    function accessPolicy()
        public
        constant
        returns (IAccessPolicy);

}

contract StandardRoles {

    ////////////////////////
    // Constants
    ////////////////////////

    // @notice Soldity somehow doesn't evaluate this compile time
    // @dev role which has rights to change permissions and set new policy in contract, keccak256("AccessController")
    bytes32 internal constant ROLE_ACCESS_CONTROLLER = 0xac42f8beb17975ed062dcb80c63e6d203ef1c2c335ced149dc5664cc671cb7da;
}

/// @title Granular code execution permissions
/// @notice Intended to replace existing Ownable pattern with more granular permissions set to execute smart contract functions
///     for each function where 'only' modifier is applied, IAccessPolicy implementation is called to evaluate if msg.sender belongs to required role for contract being called.
///     Access evaluation specific belong to IAccessPolicy implementation, see RoleBasedAccessPolicy for details.
/// @dev Should be inherited by a contract requiring such permissions controll. IAccessPolicy must be provided in constructor. Access policy may be replaced to a different one
///     by msg.sender with ROLE_ACCESS_CONTROLLER role
contract AccessControlled is IAccessControlled, StandardRoles {

    ////////////////////////
    // Mutable state
    ////////////////////////

    IAccessPolicy private _accessPolicy;

    ////////////////////////
    // Modifiers
    ////////////////////////

    /// @dev limits function execution only to senders assigned to required 'role'
    modifier only(bytes32 role) {
        require(_accessPolicy.allowed(msg.sender, role, this, msg.sig));
        _;
    }

    ////////////////////////
    // Constructor
    ////////////////////////

    function AccessControlled(IAccessPolicy policy) internal {
        require(address(policy) != 0x0);
        _accessPolicy = policy;
    }

    ////////////////////////
    // Public functions
    ////////////////////////

    //
    // Implements IAccessControlled
    //

    function setAccessPolicy(IAccessPolicy newPolicy, address newAccessController)
        public
        only(ROLE_ACCESS_CONTROLLER)
    {
        // ROLE_ACCESS_CONTROLLER must be present
        // under the new policy. This provides some
        // protection against locking yourself out.
        require(newPolicy.allowed(newAccessController, ROLE_ACCESS_CONTROLLER, this, msg.sig));

        // We can now safely set the new policy without foot shooting.
        IAccessPolicy oldPolicy = _accessPolicy;
        _accessPolicy = newPolicy;

        // Log event
        LogAccessPolicyChanged(msg.sender, oldPolicy, newPolicy);
    }

    function accessPolicy()
        public
        constant
        returns (IAccessPolicy)
    {
        return _accessPolicy;
    }
}

contract IsContract {

    ////////////////////////
    // Internal functions
    ////////////////////////

    function isContract(address addr)
        internal
        constant
        returns (bool)
    {
        uint256 size;
        // takes 700 gas
        assembly { size := extcodesize(addr) }
        return size > 0;
    }
}

contract AccessRoles {

    ////////////////////////
    // Constants
    ////////////////////////

    // NOTE: All roles are set to the keccak256 hash of the
    // CamelCased role name, i.e.
    // ROLE_LOCKED_ACCOUNT_ADMIN = keccak256("LockedAccountAdmin")

    // may setup LockedAccount, change disbursal mechanism and set migration
    bytes32 internal constant ROLE_LOCKED_ACCOUNT_ADMIN = 0x4675da546d2d92c5b86c4f726a9e61010dce91cccc2491ce6019e78b09d2572e;

    // may setup whitelists and abort whitelisting contract with curve rollback
    bytes32 internal constant ROLE_WHITELIST_ADMIN = 0xaef456e7c864418e1d2a40d996ca4febf3a7e317fe3af5a7ea4dda59033bbe5c;

    // May issue (generate) Neumarks
    bytes32 internal constant ROLE_NEUMARK_ISSUER = 0x921c3afa1f1fff707a785f953a1e197bd28c9c50e300424e015953cbf120c06c;

    // May burn Neumarks it owns
    bytes32 internal constant ROLE_NEUMARK_BURNER = 0x19ce331285f41739cd3362a3ec176edffe014311c0f8075834fdd19d6718e69f;

    // May create new snapshots on Neumark
    bytes32 internal constant ROLE_SNAPSHOT_CREATOR = 0x08c1785afc57f933523bc52583a72ce9e19b2241354e04dd86f41f887e3d8174;

    // May enable/disable transfers on Neumark
    bytes32 internal constant ROLE_TRANSFER_ADMIN = 0xb6527e944caca3d151b1f94e49ac5e223142694860743e66164720e034ec9b19;

    // may reclaim tokens/ether from contracts supporting IReclaimable interface
    bytes32 internal constant ROLE_RECLAIMER = 0x0542bbd0c672578966dcc525b30aa16723bb042675554ac5b0362f86b6e97dc5;

    // represents legally platform operator in case of forks and contracts with legal agreement attached. keccak256("PlatformOperatorRepresentative")
    bytes32 internal constant ROLE_PLATFORM_OPERATOR_REPRESENTATIVE = 0xb2b321377653f655206f71514ff9f150d0822d062a5abcf220d549e1da7999f0;

    // allows to deposit EUR-T and allow addresses to send and receive EUR-T. keccak256("EurtDepositManager")
    bytes32 internal constant ROLE_EURT_DEPOSIT_MANAGER = 0x7c8ecdcba80ce87848d16ad77ef57cc196c208fc95c5638e4a48c681a34d4fe7;
}

contract IBasicToken {

    ////////////////////////
    // Events
    ////////////////////////

    event Transfer(
        address indexed from,
        address indexed to,
        uint256 amount);

    ////////////////////////
    // Public functions
    ////////////////////////

    /// @dev This function makes it easy to get the total number of tokens
    /// @return The total number of tokens
    function totalSupply()
        public
        constant
        returns (uint256);

    /// @param owner The address that's balance is being requested
    /// @return The balance of `owner` at the current block
    function balanceOf(address owner)
        public
        constant
        returns (uint256 balance);

    /// @notice Send `amount` tokens to `to` from `msg.sender`
    /// @param to The address of the recipient
    /// @param amount The amount of tokens to be transferred
    /// @return Whether the transfer was successful or not
    function transfer(address to, uint256 amount)
        public
        returns (bool success);

}

/// @title allows deriving contract to recover any token or ether that it has balance of
/// @notice note that this opens your contracts to claims from various people saying they lost tokens and they want them back
///     be ready to handle such claims
/// @dev use with care!
///     1. ROLE_RECLAIMER is allowed to claim tokens, it's not returning tokens to original owner
///     2. in derived contract that holds any token by design you must override `reclaim` and block such possibility.
///         see LockedAccount as an example
contract Reclaimable is AccessControlled, AccessRoles {

    ////////////////////////
    // Constants
    ////////////////////////

    IBasicToken constant internal RECLAIM_ETHER = IBasicToken(0x0);

    ////////////////////////
    // Public functions
    ////////////////////////

    function reclaim(IBasicToken token)
        public
        only(ROLE_RECLAIMER)
    {
        address reclaimer = msg.sender;
        if(token == RECLAIM_ETHER) {
            reclaimer.transfer(this.balance);
        } else {
            uint256 balance = token.balanceOf(this);
            require(token.transfer(reclaimer, balance));
        }
    }
}

contract ITokenMetadata {

    ////////////////////////
    // Public functions
    ////////////////////////

    function symbol()
        public
        constant
        returns (string);

    function name()
        public
        constant
        returns (string);

    function decimals()
        public
        constant
        returns (uint8);
}

/// @title adds token metadata to token contract
/// @dev see Neumark for example implementation
contract TokenMetadata is ITokenMetadata {

    ////////////////////////
    // Immutable state
    ////////////////////////

    // The Token's name: e.g. DigixDAO Tokens
    string private NAME;

    // An identifier: e.g. REP
    string private SYMBOL;

    // Number of decimals of the smallest unit
    uint8 private DECIMALS;

    // An arbitrary versioning scheme
    string private VERSION;

    ////////////////////////
    // Constructor
    ////////////////////////

    /// @notice Constructor to set metadata
    /// @param tokenName Name of the new token
    /// @param decimalUnits Number of decimals of the new token
    /// @param tokenSymbol Token Symbol for the new token
    /// @param version Token version ie. when cloning is used
    function TokenMetadata(
        string tokenName,
        uint8 decimalUnits,
        string tokenSymbol,
        string version
    )
        public
    {
        NAME = tokenName;                                 // Set the name
        SYMBOL = tokenSymbol;                             // Set the symbol
        DECIMALS = decimalUnits;                          // Set the decimals
        VERSION = version;
    }

    ////////////////////////
    // Public functions
    ////////////////////////

    function name()
        public
        constant
        returns (string)
    {
        return NAME;
    }

    function symbol()
        public
        constant
        returns (string)
    {
        return SYMBOL;
    }

    function decimals()
        public
        constant
        returns (uint8)
    {
        return DECIMALS;
    }

    function version()
        public
        constant
        returns (string)
    {
        return VERSION;
    }
}

contract IERC223Callback {

    ////////////////////////
    // Public functions
    ////////////////////////

    function onTokenTransfer(
        address from,
        uint256 amount,
        bytes data
    )
        public;

}

contract IERC223Token is IBasicToken {

    /// @dev Departure: We do not log data, it has no advantage over a standard
    ///     log event. By sticking to the standard log event we
    ///     stay compatible with constracts that expect and ERC20 token.

    // event Transfer(
    //    address indexed from,
    //    address indexed to,
    //    uint256 amount,
    //    bytes data);


    /// @dev Departure: We do not use the callback on regular transfer calls to
    ///     stay compatible with constracts that expect and ERC20 token.

    // function transfer(address to, uint256 amount)
    //     public
    //     returns (bool);

    ////////////////////////
    // Public functions
    ////////////////////////

    function transfer(address to, uint256 amount, bytes data)
        public
        returns (bool);
}

contract IERC20Allowance {

    ////////////////////////
    // Events
    ////////////////////////

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 amount);

    ////////////////////////
    // Public functions
    ////////////////////////

    /// @dev This function makes it easy to read the `allowed[]` map
    /// @param owner The address of the account that owns the token
    /// @param spender The address of the account able to transfer the tokens
    /// @return Amount of remaining tokens of owner that spender is allowed
    ///  to spend
    function allowance(address owner, address spender)
        public
        constant
        returns (uint256 remaining);

    /// @notice `msg.sender` approves `spender` to spend `amount` tokens on
    ///  its behalf. This is a modified version of the ERC20 approve function
    ///  to be a little bit safer
    /// @param spender The address of the account able to transfer the tokens
    /// @param amount The amount of tokens to be approved for transfer
    /// @return True if the approval was successful
    function approve(address spender, uint256 amount)
        public
        returns (bool success);

    /// @notice Send `amount` tokens to `to` from `from` on the condition it
    ///  is approved by `from`
    /// @param from The address holding the tokens being transferred
    /// @param to The address of the recipient
    /// @param amount The amount of tokens to be transferred
    /// @return True if the transfer was successful
    function transferFrom(address from, address to, uint256 amount)
        public
        returns (bool success);

}

contract IERC20Token is IBasicToken, IERC20Allowance {

}

contract IERC677Callback {

    ////////////////////////
    // Public functions
    ////////////////////////

    // NOTE: This call can be initiated by anyone. You need to make sure that
    // it is send by the token (`require(msg.sender == token)`) or make sure
    // amount is valid (`require(token.allowance(this) >= amount)`).
    function receiveApproval(
        address from,
        uint256 amount,
        address token, // IERC667Token
        bytes data
    )
        public
        returns (bool success);

}

contract IERC677Allowance is IERC20Allowance {

    ////////////////////////
    // Public functions
    ////////////////////////

    /// @notice `msg.sender` approves `spender` to send `amount` tokens on
    ///  its behalf, and then a function is triggered in the contract that is
    ///  being approved, `spender`. This allows users to use their tokens to
    ///  interact with contracts in one function call instead of two
    /// @param spender The address of the contract able to transfer the tokens
    /// @param amount The amount of tokens to be approved for transfer
    /// @return True if the function call was successful
    function approveAndCall(address spender, uint256 amount, bytes extraData)
        public
        returns (bool success);

}

contract IERC677Token is IERC20Token, IERC677Allowance {
}

contract Math {

    ////////////////////////
    // Internal functions
    ////////////////////////

    // absolute difference: |v1 - v2|
    function absDiff(uint256 v1, uint256 v2)
        internal
        constant
        returns(uint256)
    {
        return v1 > v2 ? v1 - v2 : v2 - v1;
    }

    // divide v by d, round up if remainder is 0.5 or more
    function divRound(uint256 v, uint256 d)
        internal
        constant
        returns(uint256)
    {
        return add(v, d/2) / d;
    }

    // computes decimal decimalFraction 'frac' of 'amount' with maximum precision (multiplication first)
    // both amount and decimalFraction must have 18 decimals precision, frac 10**18 represents a whole (100% of) amount
    // mind loss of precision as decimal fractions do not have finite binary expansion
    // do not use instead of division
    function decimalFraction(uint256 amount, uint256 frac)
        internal
        constant
        returns(uint256)
    {
        // it's like 1 ether is 100% proportion
        return proportion(amount, frac, 10**18);
    }

    // computes part/total of amount with maximum precision (multiplication first)
    // part and total must have the same units
    function proportion(uint256 amount, uint256 part, uint256 total)
        internal
        constant
        returns(uint256)
    {
        return divRound(mul(amount, part), total);
    }

    //
    // Open Zeppelin Math library below
    //

    function mul(uint256 a, uint256 b)
        internal
        constant
        returns (uint256)
    {
        uint256 c = a * b;
        assert(a == 0 || c / a == b);
        return c;
    }

    function sub(uint256 a, uint256 b)
        internal
        constant
        returns (uint256)
    {
        assert(b <= a);
        return a - b;
    }

    function add(uint256 a, uint256 b)
        internal
        constant
        returns (uint256)
    {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }

    function min(uint256 a, uint256 b)
        internal
        constant
        returns (uint256)
    {
        return a < b ? a : b;
    }

    function max(uint256 a, uint256 b)
        internal
        constant
        returns (uint256)
    {
        return a > b ? a : b;
    }
}

/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances.
 */
contract BasicToken is IBasicToken, Math {

    ////////////////////////
    // Mutable state
    ////////////////////////

    mapping(address => uint256) internal _balances;

    uint256 internal _totalSupply;

    ////////////////////////
    // Public functions
    ////////////////////////

    /**
    * @dev transfer token for a specified address
    * @param to The address to transfer to.
    * @param amount The amount to be transferred.
    */
    function transfer(address to, uint256 amount)
        public
        returns (bool)
    {
        transferInternal(msg.sender, to, amount);
        return true;
    }

    /// @dev This function makes it easy to get the total number of tokens
    /// @return The total number of tokens
    function totalSupply()
        public
        constant
        returns (uint256)
    {
        return _totalSupply;
    }

    /**
    * @dev Gets the balance of the specified address.
    * @param owner The address to query the the balance of.
    * @return An uint256 representing the amount owned by the passed address.
    */
    function balanceOf(address owner)
        public
        constant
        returns (uint256 balance)
    {
        return _balances[owner];
    }

    ////////////////////////
    // Internal functions
    ////////////////////////

    // actual transfer function called by all public variants
    function transferInternal(address from, address to, uint256 amount)
        internal
    {
        require(to != address(0));

        _balances[from] = sub(_balances[from], amount);
        _balances[to] = add(_balances[to], amount);
        Transfer(from, to, amount);
    }
}

/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the standard token.
 * @dev https://github.com/ethereum/EIPs/issues/20
 * @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 */
contract StandardToken is
    IERC20Token,
    BasicToken,
    IERC677Token
{

    ////////////////////////
    // Mutable state
    ////////////////////////

    mapping (address => mapping (address => uint256)) private _allowed;

    ////////////////////////
    // Public functions
    ////////////////////////

    //
    // Implements ERC20
    //

    /**
    * @dev Transfer tokens from one address to another
    * @param from address The address which you want to send tokens from
    * @param to address The address which you want to transfer to
    * @param amount uint256 the amount of tokens to be transferred
    */
    function transferFrom(address from, address to, uint256 amount)
        public
        returns (bool)
    {
        // check and reset allowance
        var allowance = _allowed[from][msg.sender];
        _allowed[from][msg.sender] = sub(allowance, amount);
        // do the transfer
        transferInternal(from, to, amount);
        return true;
    }

    /**
    * @dev Aprove the passed address to spend the specified amount of tokens on behalf of msg.sender.
    * @param spender The address which will spend the funds.
    * @param amount The amount of tokens to be spent.
    */
    function approve(address spender, uint256 amount)
        public
        returns (bool)
    {

        // To change the approve amount you first have to reduce the addresses`
        //  allowance to zero by calling `approve(_spender, 0)` if it is not
        //  already 0 to mitigate the race condition described here:
        //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
        require((amount == 0) || (_allowed[msg.sender][spender] == 0));

        _allowed[msg.sender][spender] = amount;
        Approval(msg.sender, spender, amount);
        return true;
    }

    /**
    * @dev Function to check the amount of tokens that an owner allowed to a spender.
    * @param owner address The address which owns the funds.
    * @param spender address The address which will spend the funds.
    * @return A uint256 specifing the amount of tokens still avaible for the spender.
    */
    function allowance(address owner, address spender)
        public
        constant
        returns (uint256 remaining)
    {
        return _allowed[owner][spender];
    }

    //
    // Implements IERC677Token
    //

    function approveAndCall(
        address spender,
        uint256 amount,
        bytes extraData
    )
        public
        returns (bool)
    {
        require(approve(spender, amount));

        // in case of re-entry 1. approval is done 2. msg.sender is different
        bool success = IERC677Callback(spender).receiveApproval(
            msg.sender,
            amount,
            this,
            extraData
        );
        require(success);

        return true;
    }
}

contract EtherToken is
    IsContract,
    AccessControlled,
    StandardToken,
    TokenMetadata,
    Reclaimable
{
    ////////////////////////
    // Constants
    ////////////////////////

    string private constant NAME = "Ether Token";

    string private constant SYMBOL = "ETH-T";

    uint8 private constant DECIMALS = 18;

    ////////////////////////
    // Events
    ////////////////////////

    event LogDeposit(
        address indexed to,
        uint256 amount
    );

    event LogWithdrawal(
        address indexed from,
        uint256 amount
    );

    ////////////////////////
    // Constructor
    ////////////////////////

    function EtherToken(IAccessPolicy accessPolicy)
        AccessControlled(accessPolicy)
        StandardToken()
        TokenMetadata(NAME, DECIMALS, SYMBOL, "")
        Reclaimable()
        public
    {
    }

    ////////////////////////
    // Public functions
    ////////////////////////

    /// deposit msg.value of Ether to msg.sender balance
    function deposit()
        payable
        public
    {
        _balances[msg.sender] = add(_balances[msg.sender], msg.value);
        _totalSupply = add(_totalSupply, msg.value);
        LogDeposit(msg.sender, msg.value);
        Transfer(address(0), msg.sender, msg.value);
    }

    /// withdraws and sends 'amount' of ether to msg.sender
    function withdraw(uint256 amount)
        public
    {
        require(_balances[msg.sender] >= amount);
        _balances[msg.sender] = sub(_balances[msg.sender], amount);
        _totalSupply = sub(_totalSupply, amount);
        msg.sender.transfer(amount);
        LogWithdrawal(msg.sender, amount);
        Transfer(msg.sender, address(0), amount);
    }

    //
    // Implements IERC223Token
    //

    function transfer(address to, uint256 amount, bytes data)
        public
        returns (bool)
    {
        transferInternal(msg.sender, to, amount);

        // Notify the receiving contract.
        if (isContract(to)) {
            // in case of re-entry (1) transfer is done (2) msg.sender is different
            IERC223Callback(to).onTokenTransfer(msg.sender, amount, data);
        }
        return true;
    }

    //
    // Overrides Reclaimable
    //

    /// @notice allows EtherToken to reclaim tokens wrongly sent to its address
    /// @dev as EtherToken by design has balance of Ether (native Ethereum token)
    ///     such reclamation is not allowed
    function reclaim(IBasicToken token)
        public
    {
        // forbid reclaiming ETH hold in this contract.
        require(token != RECLAIM_ETHER);
        Reclaimable.reclaim(token);
    }
}

Contract ABI
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"amount","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newPolicy","type":"address"},{"name":"newAccessController","type":"address"}],"name":"setAccessPolicy","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"amount","type":"uint256"},{"name":"data","type":"bytes"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"amount","type":"uint256"},{"name":"extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"accessPolicy","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"reclaim","outputs":[],"payable":false,"type":"function"},{"inputs":[{"name":"accessPolicy","type":"address"}],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogDeposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogWithdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"controller","type":"address"},{"indexed":false,"name":"oldPolicy","type":"address"},{"indexed":false,"name":"newPolicy","type":"address"}],"name":"LogAccessPolicyChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Transfer","type":"event"}]

Contract Creation Code
606060405234156200001057600080fd5b604051602080620014d7833981016040528080519150505b6040805190810160405280600b81526020017f457468657220546f6b656e00000000000000000000000000000000000000000081525060126040805190810160405280600581526020017f4554482d540000000000000000000000000000000000000000000000000000008152506020604051908101604052600081525b845b600160a060020a0381161515620000be57600080fd5b60028054600160a060020a031916600160a060020a0383161790555b506004848051620000f092916020019062000139565b5060058280516200010692916020019062000139565b506006805460ff191660ff851617905560078180516200012b92916020019062000139565b505b505050505b50620001e3565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200017c57805160ff1916838001178555620001ac565b82800160010185558215620001ac579182015b82811115620001ac5782518255916020019190600101906200018f565b5b50620001bb929150620001bf565b5090565b620001e091905b80821115620001bb5760008155600101620001c6565b5090565b90565b6112e480620001f36000396000f300606060405236156100d55763ffffffff60e060020a60003504166306fdde0381146100da578063095ea7b31461016557806318160ddd1461019b57806323b872dd146101c05780632e1a7d4d146101fc578063313ce5671461021457806354fd4d501461023d57806357875631146102c857806370a08231146102ef57806395d89b4114610320578063a9059cbb146103ab578063be45fd62146103e1578063cae9ca511461045a578063d0e30db0146104d3578063dd62ed3e146104dd578063f5d60a5114610514578063fc772c8b14610543575b600080fd5b34156100e557600080fd5b6100ed610564565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561012a5780820151818401525b602001610111565b50505050905090810190601f1680156101575780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561017057600080fd5b610187600160a060020a036004351660243561060d565b604051901515815260200160405180910390f35b34156101a657600080fd5b6101ae6106b4565b60405190815260200160405180910390f35b34156101cb57600080fd5b610187600160a060020a03600435811690602435166044356106bb565b604051901515815260200160405180910390f35b341561020757600080fd5b61021260043561072d565b005b341561021f57600080fd5b610227610850565b60405160ff909116815260200160405180910390f35b341561024857600080fd5b6100ed61085a565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561012a5780820151818401525b602001610111565b50505050905090810190601f1680156101575780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102d357600080fd5b610212600160a060020a0360043581169060243516610903565b005b34156102fa57600080fd5b6101ae600160a060020a0360043516610b2d565b60405190815260200160405180910390f35b341561032b57600080fd5b6100ed610b4c565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561012a5780820151818401525b602001610111565b50505050905090810190601f1680156101575780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103b657600080fd5b610187600160a060020a0360043516602435610bf5565b604051901515815260200160405180910390f35b34156103ec57600080fd5b61018760048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610c0c95505050505050565b604051901515815260200160405180910390f35b341561046557600080fd5b61018760048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610d1495505050505050565b604051901515815260200160405180910390f35b610212610e51565b005b34156104e857600080fd5b6101ae600160a060020a0360043581169060243516610f1c565b60405190815260200160405180910390f35b341561051f57600080fd5b610527610f49565b604051600160a060020a03909116815260200160405180910390f35b341561054e57600080fd5b610212600160a060020a0360043516610f59565b005b61056c6112a6565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106025780601f106105d757610100808354040283529160200191610602565b820191906000526020600020905b8154815290600101906020018083116105e557829003601f168201915b505050505090505b90565b600081158061063f5750600160a060020a03338116600090815260036020908152604080832093871683529290522054155b151561064a57600080fd5b600160a060020a03338116600081815260036020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b6001545b90565b600160a060020a038084166000908152600360209081526040808320339094168352929052908120546106ee8184610f7b565b600160a060020a0380871660009081526003602090815260408083203390941683529290522055610720858585610f92565b600191505b509392505050565b600160a060020a0333166000908152602081905260409020548190101561075357600080fd5b600160a060020a0333166000908152602081905260409020546107769082610f7b565b600160a060020a03331660009081526020819052604090205560015461079c9082610f7b565b600155600160a060020a03331681156108fc0282604051600060405180830381858888f1935050505015156107d057600080fd5b33600160a060020a03167fb4214c8c54fc7442f36d3682f59aebaf09358a4431835b30efb29d52cf9e1e918260405190815260200160405180910390a2600033600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a35b50565b60065460ff165b90565b6108626112a6565b60078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106025780601f106105d757610100808354040283529160200191610602565b820191906000526020600020905b8154815290600101906020018083116105e557829003601f168201915b505050505090505b90565b6002546000907fac42f8beb17975ed062dcb80c63e6d203ef1c2c335ced149dc5664cc671cb7da90600160a060020a0316639085b77f338330600160e060020a0319873516876040516020015260405160e060020a63ffffffff8716028152600160a060020a039485166004820152602481019390935292166044820152600160e060020a03199091166064820152608401602060405180830381600087803b15156109ae57600080fd5b6102c65a03f115156109bf57600080fd5b5050506040518051905015156109d457600080fd5b83600160a060020a0316639085b77f847fac42f8beb17975ed062dcb80c63e6d203ef1c2c335ced149dc5664cc671cb7da60010230600035600160e060020a03191660006040516020015260405160e060020a63ffffffff8716028152600160a060020a039485166004820152602481019390935292166044820152600160e060020a03199091166064820152608401602060405180830381600087803b1515610a7d57600080fd5b6102c65a03f11515610a8e57600080fd5b505050604051805190501515610aa357600080fd5b60028054600160a060020a0386811673ffffffffffffffffffffffffffffffffffffffff198316179092551691507f7d475c32583df95fccc34a6e12df24c1fc9943092cc129b6512013aecba0f136338386604051600160a060020a03938416815291831660208301529091166040808301919091526060909101905180910390a15b5b50505050565b600160a060020a0381166000908152602081905260409020545b919050565b610b546112a6565b60058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106025780601f106105d757610100808354040283529160200191610602565b820191906000526020600020905b8154815290600101906020018083116105e557829003601f168201915b505050505090505b90565b6000610c02338484610f92565b5060015b92915050565b6000610c19338585610f92565b610c2284611056565b15610d095783600160a060020a031663a4c0ed363385856040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610ca75780820151818401525b602001610c8e565b50505050905090810190601f168015610cd45780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1515610cf457600080fd5b6102c65a03f11515610d0557600080fd5b5050505b5060015b9392505050565b600080610d21858561060d565b1515610d2c57600080fd5b84600160a060020a0316638f4ffcb1338630876000604051602001526040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610dce5780820151818401525b602001610db5565b50505050905090810190601f168015610dfb5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1515610e1c57600080fd5b6102c65a03f11515610e2d57600080fd5b505050604051805191505080151561072057600080fd5b600191505b509392505050565b600160a060020a033316600090815260208190526040902054610e749034611065565b600160a060020a033316600090815260208190526040902055600154610e9a9034611065565b600155600160a060020a0333167f1b851e1031ef35a238e6c67d0c7991162390df915f70eaf9098dbf0b175a61983460405190815260200160405180910390a2600160a060020a03331660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef3460405190815260200160405180910390a35b565b600160a060020a038083166000908152600360209081526040808320938516835292905220545b92915050565b600254600160a060020a03165b90565b600160a060020a0381161515610f6e57600080fd5b61084d8161107f565b5b50565b600082821115610f8757fe5b508082035b92915050565b600160a060020a0382161515610fa757600080fd5b600160a060020a038316600090815260208190526040902054610fca9082610f7b565b600160a060020a038085166000908152602081905260408082209390935590841681522054610ff99082611065565b600160a060020a03808416600081815260208190526040908190209390935591908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9084905190815260200160405180910390a35b505050565b6000813b908111905b50919050565b60008282018381101561107457fe5b8091505b5092915050565b60025460009081907f0542bbd0c672578966dcc525b30aa16723bb042675554ac5b0362f86b6e97dc590600160a060020a0316639085b77f338330600160e060020a0319873516876040516020015260405160e060020a63ffffffff8716028152600160a060020a039485166004820152602481019390935292166044820152600160e060020a03199091166064820152608401602060405180830381600087803b151561112c57600080fd5b6102c65a03f1151561113d57600080fd5b50505060405180519050151561115257600080fd5b339250600160a060020a03841615156111a75782600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f1935050505015156111a257600080fd5b610b26565b83600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156111fe57600080fd5b6102c65a03f1151561120f57600080fd5b5050506040518051925050600160a060020a03841663a9059cbb848460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561127757600080fd5b6102c65a03f1151561128857600080fd5b505050604051805190501515610b2657600080fd5b5b5b5b50505050565b602060405190810160405260008152905600a165627a7a7230582080791d1f9dc3b49e0568657b190fb23268e5977ad0754e8763006599b244326f0029000000000000000000000000ae38c27e646959735ec70d77ed4ecc03a3eff490


    Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ae38c27e646959735ec70d77ed4ecc03a3eff490

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000ae38c27e646959735ec70d77ed4ecc03a3eff490


   Swarm Source:
bzzr://80791d1f9dc3b49e0568657b190fb23268e5977ad0754e8763006599b244326f
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.