Contract Overview | ESZCoin
Balance: 0 Ether
Ether Value: $0
Transactions: 2061 txns
Token Tracker: ESZCoin (ESZ)
 Latest 25 txns From a total of 2061 Transactions

TxHash Age From To Value [TxFee]
0x745d99bc6cd550bd5fb111ef75c9d32a9395bb9b00f632ee9417018bb254cc102 hrs 30 mins ago0x58c7bb3e2acccad31be527ea8e111b5b92bc66f6  IN   ESZCoin0 Ether0.00045761
0xd401379a80c6cf33cb1568a740d9168feaff2e5766dc235b1e06bdbd01f4e41011 hrs 18 mins ago0xb543f4458666919812fca7d9cd90ad12e0fc4757  IN   ESZCoin0 Ether0.000274182
0xe337737cda421ba757444bc2c2b49e5efc4fff158744fe7be6678e6de68180632 days 7 hrs ago0x77a52678cd942bd39aa8e0293bc617deaee81321  IN   ESZCoin0 Ether0.000777937
0xe82203dbe9330e9537484261723348551dbc46660c9c90d7b38eab445a4e7c3d3 days 10 hrs ago0x5ab9d116a53ef41063e3eae26a7ebe736720e9ba  IN   ESZCoin0 Ether0.00091522
0x5a95242c90f7a1690790cc9d03da6b0875141bc39724afb27af62a25794c17c24 days 4 hrs ago0x88462feb775e3c52cc2defb796aff25bcc2aa705  IN   ESZCoin0 Ether0.001144025
0x169bca48f5dc7ba85f592ffe8644d029187e3f33c1b6c6b09cbb8f8f24bc1a1f8 days 21 mins ago0xb36f8628284638dfa103a8c2f426fdde289a4251  IN   ESZCoin0 Ether0.000116355
0xb8a9af96b1c24563ebf972151d856281ca8f74a74ca99afda2b6a1b94c4932618 days 56 mins ago0xb36f8628284638dfa103a8c2f426fdde289a4251  IN   ESZCoin0 Ether0.000161547
0xaf5826692ba44f97bb23819dd8941cf00340276bff0152776d033fd33af90e718 days 23 hrs ago0x1358ee43090593bb9f76685e63f98a3cff8fe165  IN   ESZCoin0 Ether0.002330547
0x0b76267c4b476d97074dfbd83e93bd09a2f2c5a9c59cde9a48cab432eded5c3e9 days 1 hr ago0x00ddc77e818c1c011baf7333f2bed2f0ca85088d  IN   ESZCoin0 Ether0.0007757
0xff15144de92074ec4f5762f0d2673b1acc30b3a1a201a04def830cfdd18a73269 days 8 hrs ago0x8899af1aa48cdfdedbf394221ab5fb9b69f4ae7b  IN   ESZCoin0 Ether0.0003666
0xfbd71479182b405c50e49cd1b940e1a6f9cd55df6b9211a3e55c907660d779539 days 8 hrs ago0x8899af1aa48cdfdedbf394221ab5fb9b69f4ae7b  IN   ESZCoin0 Ether0.000320775
0x4bccbc13d35af9c47c7b3beaa4c461fee5ab26512acdff1aa069a8b7d97dc0f19 days 8 hrs ago0x6f724817dc73bf14b7077f8c3a73d5624313a6db  IN   ESZCoin0 Ether0.000320775
0x06d088c1b3878f5c7760f128b13d464d7bb22b0422416175b17cbf602dc7c42a9 days 9 hrs ago0xdfb42d8b03c4a8b37813f27a6d7cafb915cc694f  IN   ESZCoin0 Ether0.00027495
0x88de5271675be416117293fdb14400af18584afd639bfad2020d13a55d29995c9 days 9 hrs ago0xdfb42d8b03c4a8b37813f27a6d7cafb915cc694f  IN   ESZCoin0 Ether0.000274182
0xef8aa556aa3915d3d761cc5006b589c4798138817c84c33291c8e4bfc5bee9a69 days 9 hrs ago0x3a64fc333eb3e4373159ac6d36f499c46909d1da  IN   ESZCoin0 Ether0.001595433
0xbd0c20d04ff160573bad459a1261c59428bc63e8f2e4921c5fb7aea89bc4e9ac9 days 17 hrs ago0xf66ff44896b67429fd073d0a76601761014f6e79  IN   ESZCoin0 Ether0.000320327
0x754408078cdf50d67ffebcfdd6316db40dc6f422f1091e2427ad43eba49cdaf49 days 17 hrs ago0xf66ff44896b67429fd073d0a76601761014f6e79  IN   ESZCoin0 Ether0.000320327
0x0d1f28584775fc511063f1cf08a63c34952f61d68ed3e352634ca73eb753b4399 days 22 hrs ago0xf56b771b35d33f678fb81780651f109372449fc0  IN   ESZCoin0 Ether0.0002292091
0xa75fa33aa27dbb29766c91c929de97be178a05196de03627b992e9ac7dd78e9a11 days 1 hr ago0xc198f44fc81ad026cb5f7142ded86a56df88329a  IN   ESZCoin0 Ether0.000155396
0x2e7ca327bcb8ac214dd383745b14ee17846ae3b81c66d8c65fa0d4fcf7d4d82512 days 20 hrs ago0xa8b2f6541155d6820f15a4ebbf4acc44e689dae2  IN   ESZCoin0 Ether0.000155652
0xf6cf8247f0fe2b37addb63ff78cd9cebea6ba09fa9adce1cfbb96fc943360b9813 days 6 hrs ago0xf1c98e19d380de45721eb7d4efd563b722fcc834  IN   ESZCoin0 Ether0.000228805
0x04f110a93b5e01fcba89f83bf88ce512b7a2b9da6fad28a13f65ee3de48f117e14 days 5 hrs ago0x633d0ace46763fe0c418c0cfa3bd0dfcc5b883d4  IN   ESZCoin0 Ether0.000096
0xcf60a7a8ba117b0306ecc4ddbcdb045a3164332d607b74ba6f65b7d494b4a87916 days 13 hrs ago0xe942060d775e3a536b2a835981db44c736d16c4f  IN   ESZCoin0 Ether0.000190792
0x480da36d374bacc01094ffa6b3fa4f919b531219a9cb8235428429919108d8f116 days 13 hrs ago0xe942060d775e3a536b2a835981db44c736d16c4f  IN   ESZCoin0 Ether0.000429768
0xa75ca36a2d8674e3acda10c6d48c70d710b974c2f022d698cbaf9c39661745c316 days 14 hrs ago0xa4d94c5cfa340abe882619a59f970d3a9b711040  IN   ESZCoin0 Ether0.000204991224
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
View All
ParentTxHash Block Age From To Value
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: ESZCoin
Compiler Text: v0.4.19+commit.c4cbbb05
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity 0.4.19;

// implement safemath as a library
library SafeMath {

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

  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a / b;
    return c;
  }

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

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

contract ESZCoin {

    using SafeMath for uint256;

    address     public      owner;
    string      public      name;
    string      public      symbol;
    uint256     public      totalSupply;
    uint8       public      decimals;
    bool        public      globalTransferLock;

    mapping (address => bool)                           public      accountLock;
    mapping (address => uint256)                        public      balances;
    mapping (address => mapping(address => uint256))    public      allowed;

    event Transfer(address indexed _sender, address indexed _recipient, uint256 _amount);
    event Approval(address indexed _owner, address indexed _spender, uint256 _amount);
    event GlobalTransfersLocked(bool indexed _transfersFrozenGlobally);
    event GlobalTransfersUnlocked(bool indexed _transfersThawedGlobally);
    event AccountTransfersFrozen(address indexed _eszHolder, bool indexed _accountTransfersFrozen);
    event AccountTransfersThawed(address indexed _eszHolder, bool indexed _accountTransfersThawed);

    /**
        @dev Checks to ensure that msg.sender is the owner
    */
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    /**
        @dev Checks to ensure that global transfers are not locked
    */
    modifier transfersUnlocked() {
        require(!globalTransferLock);
        _;
    }

    /**CONSTRUCTOR*/
    function ESZCoin() {
        owner = msg.sender;
        totalSupply = 10000000000000000000000000;
        balances[msg.sender] = totalSupply;
        name = "ESZCoin";
        symbol = "ESZ";
        decimals = 18;
        globalTransferLock = false;
    } 

    /**
        @dev Freezes transfers globally
    */
    function freezeGlobalTansfers()
        public
        onlyOwner
        returns (bool)
    {
        globalTransferLock = true;
        GlobalTransfersLocked(true);
        return true;
    }

    /**
        @dev Thaws transfers globally
    */
    function thawGlobalTransfers()
        public
        onlyOwner
        returns (bool)
    {
        globalTransferLock = false;
        GlobalTransfersUnlocked(true);
    }

    /**
        @dev Freezes a particular account, preventing them from making transfers
    */
    function freezeAccountTransfers(
        address _eszHolder
    )
        public
        onlyOwner
        returns (bool)
    {
        accountLock[_eszHolder] = true;
        AccountTransfersFrozen(_eszHolder, true);
        return true;
    }

    /**
        @dev Thaws a particular account, allowing them to make transfers again
    */
    function thawAccountTransfers(
        address _eszHolder
    )
        public
        onlyOwner
        returns (bool)
    {
        accountLock[_eszHolder] = false;
        AccountTransfersThawed(_eszHolder, true);
        return true;
    }

    /**
        @dev Used to transfers tokens
    */
    function transfer(
        address _recipient,
        uint256 _amount
    )
        public
        returns (bool)
    {
        require(accountLock[msg.sender] == false);
        require(transferCheck(msg.sender, _recipient, _amount));
        balances[msg.sender] = balances[msg.sender].sub(_amount);
        balances[_recipient] = balances[_recipient].add(_amount);
        Transfer(msg.sender, _recipient, _amount);
        return true;
    }

    /**
        @dev Used to transfers tokens to someone on behalf of the owner account. Must be approved
    */
    function transferFrom(
        address _owner,
        address _recipient,
        uint256 _amount
    )
        public
        returns (bool)
    {
        require(accountLock[_owner] == false);
        require(allowed[_owner][msg.sender] >= _amount);
        require(transferCheck(_owner, _recipient, _amount));
        allowed[_owner][msg.sender] = allowed[_owner][msg.sender].sub(_amount);
        balances[_owner] = balances[_owner].sub(_amount);
        balances[_recipient] = balances[_recipient].add(_amount);
        Transfer(_owner, _recipient, _amount);
        return true;
    }

    /**
        @dev Used to approve another account to spend on your behalf
    */
    function approve(
        address _spender,
        uint256 _amount
    )
        public
        returns (bool)
    {
        allowed[msg.sender][_spender] = _amount;
        Approval(msg.sender, _spender, _amount);
        return true;
    }

    /** INTERNALS */

    /**
        @dev Does a sanity check of the parameters in a transfer, makes sure transfers are allowed
    */
    function transferCheck(
        address _sender,
        address _recipient,
        uint256 _amount
    )
        internal
        view
        transfersUnlocked
        returns (bool)
    {
        require(_amount > 0);
        require(balances[_sender] >= _amount);
        require(balances[_sender].sub(_amount) >= 0);
        require(balances[_recipient].add(_amount) > balances[_recipient]);
        return true;
    }

    /** GETTERS */
    
    /**
        @dev Retrieves total supply
    */
    function totalSupply()
        public
        view
        returns (uint256)
    {
        return totalSupply;
    }

    /**
        @dev Retrieves the balance of an ESZ holder
    */
    function balanceOf(
        address _eszHolder
    )
        public
        view
        returns (uint256)
    {
        return balances[_eszHolder];
    }

    /**
        @dev Retrieves the balance of spender for owner
    */
    function allowance(
        address _owner,
        address _spender
    )
        public
        view
        returns (uint256)
    {
        return allowed[_owner][_spender];
    }

}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"globalTransferLock","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"accountLock","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_recipient","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"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":"","type":"address"},{"name":"","type":"address"}],"name":"allowed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_eszHolder","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"thawGlobalTransfers","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_eszHolder","type":"address"}],"name":"freezeAccountTransfers","outputs":[{"name":"","type":"bool"}],"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":false,"inputs":[{"name":"_recipient","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_eszHolder","type":"address"}],"name":"thawAccountTransfers","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","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":false,"inputs":[],"name":"freezeGlobalTansfers","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_sender","type":"address"},{"indexed":true,"name":"_recipient","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"Transfer","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":"_transfersFrozenGlobally","type":"bool"}],"name":"GlobalTransfersLocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_transfersThawedGlobally","type":"bool"}],"name":"GlobalTransfersUnlocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_eszHolder","type":"address"},{"indexed":true,"name":"_accountTransfersFrozen","type":"bool"}],"name":"AccountTransfersFrozen","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_eszHolder","type":"address"},{"indexed":true,"name":"_accountTransfersThawed","type":"bool"}],"name":"AccountTransfersThawed","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6060604052341561000f57600080fd5b60008054600160a060020a03191633600160a060020a031690811782556a084595161401484a00000060038190559082526006602052604091829020558051908101604052600781527f45535a436f696e00000000000000000000000000000000000000000000000000602082015260019080516100919291602001906100f3565b5060408051908101604052600381527f45535a0000000000000000000000000000000000000000000000000000000000602082015260029080516100d99291602001906100f3565b506004805461ff001960ff1990911660121716905561018e565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061013457805160ff1916838001178555610161565b82800160010185558215610161579182015b82811115610161578251825591602001919060010190610146565b5061016d929150610171565b5090565b61018b91905b8082111561016d5760008155600101610177565b90565b610b1d8061019d6000396000f3006060604052600436106100fb5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461010057806308bbd9471461018a578063095ea7b3146101b1578063129ed395146101d357806318160ddd146101f257806323b872dd1461021757806327e235e31461023f578063313ce5671461025e5780635c6581651461028757806370a08231146102ac5780637725686f146102cb57806389286abd146102de5780638da5cb5b146102fd57806395d89b411461032c578063a9059cbb1461033f578063c46d4cf114610361578063dd62ed3e14610380578063e63227b0146103a5575b600080fd5b341561010b57600080fd5b6101136103b8565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561014f578082015183820152602001610137565b50505050905090810190601f16801561017c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561019557600080fd5b61019d610456565b604051901515815260200160405180910390f35b34156101bc57600080fd5b61019d600160a060020a0360043516602435610464565b34156101de57600080fd5b61019d600160a060020a03600435166104d0565b34156101fd57600080fd5b6102056104e5565b60405190815260200160405180910390f35b341561022257600080fd5b61019d600160a060020a03600435811690602435166044356104eb565b341561024a57600080fd5b610205600160a060020a036004351661066f565b341561026957600080fd5b610271610681565b60405160ff909116815260200160405180910390f35b341561029257600080fd5b610205600160a060020a036004358116906024351661068a565b34156102b757600080fd5b610205600160a060020a03600435166106a7565b34156102d657600080fd5b61019d6106c2565b34156102e957600080fd5b61019d600160a060020a036004351661071a565b341561030857600080fd5b610310610793565b604051600160a060020a03909116815260200160405180910390f35b341561033757600080fd5b6101136107a2565b341561034a57600080fd5b61019d600160a060020a036004351660243561080d565b341561036c57600080fd5b61019d600160a060020a0360043516610908565b341561038b57600080fd5b610205600160a060020a036004358116906024351661097d565b34156103b057600080fd5b61019d6109a8565b60018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561044e5780601f106104235761010080835404028352916020019161044e565b820191906000526020600020905b81548152906001019060200180831161043157829003601f168201915b505050505081565b600454610100900460ff1681565b600160a060020a03338116600081815260076020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b60056020526000908152604090205460ff1681565b60035490565b600160a060020a03831660009081526005602052604081205460ff161561051157600080fd5b600160a060020a03808516600090815260076020908152604080832033909416835292905220548290101561054557600080fd5b610550848484610a07565b151561055b57600080fd5b600160a060020a0380851660009081526007602090815260408083203390941683529290522054610592908363ffffffff610ac316565b600160a060020a0380861660008181526007602090815260408083203390951683529381528382209490945590815260069092529020546105d9908363ffffffff610ac316565b600160a060020a03808616600090815260066020526040808220939093559085168152205461060e908363ffffffff610ad816565b600160a060020a03808516600081815260066020526040908190209390935591908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b60066020526000908152604090205481565b60045460ff1681565b600760209081526000928352604080842090915290825290205481565b600160a060020a031660009081526006602052604090205490565b6000805433600160a060020a039081169116146106de57600080fd5b6004805461ff001916905560017fddb8f090143b2e1457b4dd4fe0fc57127b8b3a9661ce9c19430e4204ab2c015b60405160405180910390a290565b6000805433600160a060020a0390811691161461073657600080fd5b600160a060020a03821660008181526005602052604090819020805460ff1916600190811790915591907f8a5cca14f62095a79fcb6b44a9ba18dd5c3105c0d0c3e2c7cf6b07da247eb3c8905160405180910390a3506001919050565b600054600160a060020a031681565b60028054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561044e5780601f106104235761010080835404028352916020019161044e565b600160a060020a03331660009081526005602052604081205460ff161561083357600080fd5b61083e338484610a07565b151561084957600080fd5b600160a060020a033316600090815260066020526040902054610872908363ffffffff610ac316565b600160a060020a0333811660009081526006602052604080822093909355908516815220546108a7908363ffffffff610ad816565b600160a060020a0380851660008181526006602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350600192915050565b6000805433600160a060020a0390811691161461092457600080fd5b600160a060020a03821660008181526005602052604090819020805460ff19169055600191907fbdcbda5c4edd2728d95c3037713bb99a5a4fb3db18217561eed3cca05c22ca88905160405180910390a3506001919050565b600160a060020a03918216600090815260076020908152604080832093909416825291909152205490565b6000805433600160a060020a039081169116146109c457600080fd5b6004805461ff00191661010017905560017f3528a0c8bc9e293110ccdce7281543bad267d38c7395dc4771d4a00b04bc997560405160405180910390a250600190565b600454600090610100900460ff1615610a1f57600080fd5b60008211610a2c57600080fd5b600160a060020a03841660009081526006602052604090205482901015610a5257600080fd5b600160a060020a038416600090815260066020526040812054610a7b908463ffffffff610ac316565b1015610a8657600080fd5b600160a060020a038316600090815260066020526040902054610aaf818463ffffffff610ad816565b11610ab957600080fd5b5060019392505050565b600082821115610ad257600080fd5b50900390565b600082820183811015610aea57600080fd5b93925050505600a165627a7a723058209554af9bd86495d40874b042b953591d8f74d917e8639ed2cdf745f0c7bb930e0029

   Swarm Source:
bzzr://9554af9bd86495d40874b042b953591d8f74d917e8639ed2cdf745f0c7bb930e

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.