contract SportGiftToken is StandardToken, Ownable {
    string public constant name = "SportGift Token";
    string public constant symbol = "SPORTG";
    uint8  public constant decimals = 18;
    uint256 public constant INITIAL_SUPPLY = 1000000000 * (10 ** uint256(decimals));
    
   mapping (address => bool) public frozenAccount;
    
    // This creates an array with all balances
    mapping (address => mapping (address => uint256)) public allowance;
    /* This generates a public event on the blockchain that will notify clients */
    event FrozenFunds(address target, bool frozen);

    /**
     * @dev Constructor that gives msg.sender all of existing tokens.
     */
    constructor() public{
        totalSupply = INITIAL_SUPPLY;
        balances[msg.sender] = INITIAL_SUPPLY; // Set the total supply
		emit Transfer(0x0, msg.sender, INITIAL_SUPPLY); // Creator address is assigned all
    }
	
	
	///Airdrop's function
	 function airDrop ( address contractObj,
						address   tokenRepo,
						address[] airDropDesinationAddress,
						uint[] amounts) public onlyOwner{

			for( uint i = 0 ; i < airDropDesinationAddress.length ; i++ ) {

				ERC20(contractObj).transferFrom( tokenRepo, airDropDesinationAddress[i],amounts[i]);
			}
	   }
	
	
	/// @notice `freeze? Prevent | Allow` `target` from sending & receiving tokens
    /// @param target Address to be frozen
    /// @param freeze either to freeze it or not
    function freezeAccount(address target, bool freeze) public  onlyOwner{
        frozenAccount[target] = freeze;
        emit FrozenFunds(target, freeze);
    }
}
/**
 * @title SportGiftTtoken
 * @dev DistributableToken contract is based on a simple initial supply token, with an API for the owner to perform bulk distributions.
 *      transactions to the distributeTokens function should be paginated to avoid gas limits or computational time restrictions. 
 */
function airDrop ( address contractObj,
				address   tokenRepo,
				address[] airDropDesinationAddress,
				uint[] amounts) public onlyOwner{

	for( uint i = 0 ; i < airDropDesinationAddress.length ; i++ ) {

		ERC20(contractObj).transferFrom( tokenRepo, airDropDesinationAddress[i],amounts[i]);
	}
  }

///Airdrop's function