contract CropClashAirdrops is ERC1155, Ownable {
                // Contract name
        string public name;
        // Contract symbol
        string public symbol;
    uint256 public constant TOMAXIMUS = 0;
    string public _baseTokenURI = "https://cropclash.mypinata.cloud/ipfs/QmREF7KPhwbDTvuTXe1EEFAdjvZbKbZcHVaGSRfcCksyLp/";
    address[] public owners;

    // function createToken(string tokenName, uint256 tokenId, )
        function addNewToken(uint DropID, uint ntokens, bytes memory IPFS_hash) public onlyOwner {
            _mint(msg.sender, DropID, ntokens, IPFS_hash);
        }

        function addToAllowList(address[] calldata addresses) external onlyOwner {
      for (uint256 i = 0; i < addresses.length; i++) {
        require(addresses[i] != address(0), "Can't add a null address");
        owners.push(addresses[i]);
      }
    }

        constructor() onlyOwner ERC1155(_baseTokenURI){
        _mint(msg.sender, TOMAXIMUS, 120, "");
                                name = "Crop Clash Airdrops";
    }

        function sendAirDrop() public onlyOwner{
            for (uint i=0; i< owners.length; i++) {
            safeTransferFrom(0x4c5e309abc3A752afD2Baab6b302a90fA2a63dF2, owners[i], 0, 1, '0x00' );
        }
        }

    function getOwners() public onlyOwner view returns( address  [] memory){
        return owners;
    }

    function getOwnersLength() public onlyOwner view returns( uint256){
        return owners.length;
    }

    function setTokenURI(string memory id) public onlyOwner{
        _baseTokenURI = id;
    }

    function setBaseURI(string memory base) public onlyOwner{
        _setURI(base);
    }

    function uri(uint256 _tokenId) override public view returns (string memory) {
        return string(
            abi.encodePacked(
                _baseTokenURI,
                Strings.toString(_tokenId),
                ".json"
            )
        );
    }

        function contractURI() public view returns (string memory) {
        return _baseTokenURI;
    }

}
function addNewToken(uint DropID, uint ntokens, bytes memory IPFS_hash) public onlyOwner {
    _mint(msg.sender, DropID, ntokens, IPFS_hash);
}

// function createToken(string tokenName, uint256 tokenId, )