class ServerThis class represents a server that manages the encryption keys, and maintains a list of currently connected clients It is also responsible for handling message transmission between the clients.attributesclientSet: ClientSetoperation specifications Server () - constructorpre:. nonepost: A ClientSet object has been created and assigned to clientSet addClient (client: Client) -. adds a new client to the clientSet.pre: client not nullpost: client is added to the clientSet For all clients in clientSet, the updateConnectedUsers message has been sent.. disconnectClient (id: Integer) - deletes the client with matching id from the clientSet and sends a message to each client informing them of the update to the list of connected users.pre: nonepost: The client object with matching id is deleted from The ClientSet. for all clients in the clientset, The UpdateConnectedusers Message Has Been Sent. EstablishSession (Namec1: string, Namec2: string): SESSIONDATA - A fter generating a random session key for C1 and C2 to communicate to each other, it encrypts two copies of it:. one in C1's key and the other in C2's key Then, it sends the session data for C2 to C2 It returns the session. data for C1.pre: nameC1 and nameC2 are validpost: The random session key has been generated and encrypted for both clients sessionData for C2 has been created and sent to C2 by sending the message acceptSessionData (sessionData) sessionData for C1 has been returned..