// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'dart:io';

void main() {
  print(FileMode.APPEND);
  print(FileMode.READ);
  print(FileMode.WRITE);
  print(FileMode.WRITE_ONLY);
  print(FileMode.WRITE_ONLY_APPEND);
  print(HttpStatus.CONTINUE);
  print(HttpStatus.SWITCHING_PROTOCOLS);
  print(HttpStatus.OK);
  print(HttpStatus.CREATED);
  print(HttpStatus.ACCEPTED);
  print(HttpStatus.NON_AUTHORITATIVE_INFORMATION);
  print(HttpStatus.NO_CONTENT);
  print(HttpStatus.RESET_CONTENT);
  print(HttpStatus.PARTIAL_CONTENT);
  print(HttpStatus.MULTIPLE_CHOICES);
  print(HttpStatus.MOVED_PERMANENTLY);
  print(HttpStatus.FOUND);
  print(HttpStatus.MOVED_TEMPORARILY);
  print(HttpStatus.SEE_OTHER);
  print(HttpStatus.NOT_MODIFIED);
  print(HttpStatus.USE_PROXY);
  print(HttpStatus.TEMPORARY_REDIRECT);
  print(HttpStatus.BAD_REQUEST);
  print(HttpStatus.UNAUTHORIZED);
  print(HttpStatus.PAYMENT_REQUIRED);
  print(HttpStatus.FORBIDDEN);
  print(HttpStatus.NOT_FOUND);
  print(HttpStatus.METHOD_NOT_ALLOWED);
  print(HttpStatus.NOT_ACCEPTABLE);
  print(HttpStatus.PROXY_AUTHENTICATION_REQUIRED);
  print(HttpStatus.REQUEST_TIMEOUT);
  print(HttpStatus.CONFLICT);
  print(HttpStatus.GONE);
  print(HttpStatus.LENGTH_REQUIRED);
  print(HttpStatus.PRECONDITION_FAILED);
  print(HttpStatus.REQUEST_ENTITY_TOO_LARGE);
  print(HttpStatus.REQUEST_URI_TOO_LONG);
  print(HttpStatus.UNSUPPORTED_MEDIA_TYPE);
  print(HttpStatus.REQUESTED_RANGE_NOT_SATISFIABLE);
  print(HttpStatus.EXPECTATION_FAILED);
  print(HttpStatus.UPGRADE_REQUIRED);
  print(HttpStatus.INTERNAL_SERVER_ERROR);
  print(HttpStatus.NOT_IMPLEMENTED);
  print(HttpStatus.BAD_GATEWAY);
  print(HttpStatus.SERVICE_UNAVAILABLE);
  print(HttpStatus.GATEWAY_TIMEOUT);
  print(HttpStatus.HTTP_VERSION_NOT_SUPPORTED);
  print(HttpStatus.NETWORK_CONNECT_TIMEOUT_ERROR);
  print(SYSTEM_ENCODING);
  print(StdioType.TERMINAL);
  print(StdioType.PIPE);
  print(StdioType.FILE);
  print(StdioType.OTHER);
  print(ProcessStartMode.NORMAL);
  print(ProcessStartMode.INHERIT_STDIO);
  print(ProcessStartMode.DETACHED);
  print(ProcessStartMode.DETACHED_WITH_STDIO);
  print(ProcessSignal.SIGHUP);
  print(ProcessSignal.SIGINT);
  print(ProcessSignal.SIGQUIT);
  print(ProcessSignal.SIGILL);
  print(ProcessSignal.SIGTRAP);
  print(ProcessSignal.SIGABRT);
  print(ProcessSignal.SIGBUS);
  print(ProcessSignal.SIGFPE);
  print(ProcessSignal.SIGKILL);
  print(ProcessSignal.SIGUSR1);
  print(ProcessSignal.SIGSEGV);
  print(ProcessSignal.SIGUSR2);
  print(ProcessSignal.SIGPIPE);
  print(ProcessSignal.SIGALRM);
  print(ProcessSignal.SIGTERM);
  print(ProcessSignal.SIGCHLD);
  print(ProcessSignal.SIGCONT);
  print(ProcessSignal.SIGSTOP);
  print(ProcessSignal.SIGTSTP);
  print(ProcessSignal.SIGTTIN);
  print(ProcessSignal.SIGTTOU);
  print(ProcessSignal.SIGURG);
  print(ProcessSignal.SIGXCPU);
  print(ProcessSignal.SIGXFSZ);
  print(ProcessSignal.SIGVTALRM);
  print(ProcessSignal.SIGPROF);
  print(ProcessSignal.SIGWINCH);
  print(ProcessSignal.SIGPOLL);
  print(ProcessSignal.SIGSYS);
  print(InternetAddressType.IP_V4);
  print(InternetAddressType.IP_V6);
  print(InternetAddressType.ANY);
  print(InternetAddress.LOOPBACK_IP_V4);
  print(InternetAddress.LOOPBACK_IP_V6);
  print(InternetAddress.ANY_IP_V4);
  print(InternetAddress.ANY_IP_V6);
  print(SocketDirection.RECEIVE);
  print(SocketDirection.SEND);
  print(SocketDirection.BOTH);
  print(SocketOption.TCP_NODELAY);
  print(RawSocketEvent.READ);
  print(RawSocketEvent.WRITE);
  print(RawSocketEvent.READ_CLOSED);
  print(RawSocketEvent.CLOSED);
  print(FileSystemEntityType.FILE);
  print(FileSystemEntityType.DIRECTORY);
  print(FileSystemEntityType.LINK);
  print(FileSystemEntityType.NOT_FOUND);
  print(FileSystemEvent.CREATE);
  print(FileSystemEvent.MODIFY);
  print(FileSystemEvent.DELETE);
  print(FileSystemEvent.MOVE);
  print(FileSystemEvent.ALL);
  print(ZLibOption.MIN_WINDOW_BITS);
  print(ZLibOption.MAX_WINDOW_BITS);
  print(ZLibOption.DEFAULT_WINDOW_BITS);
  print(ZLibOption.MIN_LEVEL);
  print(ZLibOption.MAX_LEVEL);
  print(ZLibOption.DEFAULT_LEVEL);
  print(ZLibOption.MIN_MEM_LEVEL);
  print(ZLibOption.MAX_MEM_LEVEL);
  print(ZLibOption.DEFAULT_MEM_LEVEL);
  print(ZLibOption.STRATEGY_FILTERED);
  print(ZLibOption.STRATEGY_HUFFMAN_ONLY);
  print(ZLibOption.STRATEGY_RLE);
  print(ZLibOption.STRATEGY_FIXED);
  print(ZLibOption.STRATEGY_DEFAULT);
  print(ZLIB);
  print(GZIP);
  print(FileLock.SHARED);
  print(FileLock.EXCLUSIVE);
  print(FileLock.BLOCKING_SHARED);
  print(FileLock.BLOCKING_EXCLUSIVE);
  print(WebSocketStatus.NORMAL_CLOSURE);
  print(WebSocketStatus.GOING_AWAY);
  print(WebSocketStatus.PROTOCOL_ERROR);
  print(WebSocketStatus.UNSUPPORTED_DATA);
  print(WebSocketStatus.RESERVED_1004);
  print(WebSocketStatus.NO_STATUS_RECEIVED);
  print(WebSocketStatus.ABNORMAL_CLOSURE);
  print(WebSocketStatus.INVALID_FRAME_PAYLOAD_DATA);
  print(WebSocketStatus.POLICY_VIOLATION);
  print(WebSocketStatus.MESSAGE_TOO_BIG);
  print(WebSocketStatus.MISSING_MANDATORY_EXTENSION);
  print(WebSocketStatus.INTERNAL_SERVER_ERROR);
  print(WebSocketStatus.RESERVED_1015);
  print(CompressionOptions.DEFAULT);
  print(CompressionOptions.OFF);
  print(WebSocket.CONNECTING);
  print(WebSocket.OPEN);
  print(WebSocket.CLOSING);
  print(WebSocket.CLOSED);
  print(HttpHeaders.ACCEPT);
  print(HttpHeaders.ACCEPT_CHARSET);
  print(HttpHeaders.ACCEPT_ENCODING);
  print(HttpHeaders.ACCEPT_LANGUAGE);
  print(HttpHeaders.ACCEPT_RANGES);
  print(HttpHeaders.AGE);
  print(HttpHeaders.ALLOW);
  print(HttpHeaders.AUTHORIZATION);
  print(HttpHeaders.CACHE_CONTROL);
  print(HttpHeaders.CONNECTION);
  print(HttpHeaders.CONTENT_ENCODING);
  print(HttpHeaders.CONTENT_LANGUAGE);
  print(HttpHeaders.CONTENT_LENGTH);
  print(HttpHeaders.CONTENT_LOCATION);
  print(HttpHeaders.CONTENT_MD5);
  print(HttpHeaders.CONTENT_RANGE);
  print(HttpHeaders.CONTENT_TYPE);
  print(HttpHeaders.DATE);
  print(HttpHeaders.ETAG);
  print(HttpHeaders.EXPECT);
  print(HttpHeaders.EXPIRES);
  print(HttpHeaders.FROM);
  print(HttpHeaders.HOST);
  print(HttpHeaders.IF_MATCH);
  print(HttpHeaders.IF_MODIFIED_SINCE);
  print(HttpHeaders.IF_NONE_MATCH);
  print(HttpHeaders.IF_RANGE);
  print(HttpHeaders.IF_UNMODIFIED_SINCE);
  print(HttpHeaders.LAST_MODIFIED);
  print(HttpHeaders.LOCATION);
  print(HttpHeaders.MAX_FORWARDS);
  print(HttpHeaders.PRAGMA);
  print(HttpHeaders.PROXY_AUTHENTICATE);
  print(HttpHeaders.PROXY_AUTHORIZATION);
  print(HttpHeaders.RANGE);
  print(HttpHeaders.REFERER);
  print(HttpHeaders.RETRY_AFTER);
  print(HttpHeaders.SERVER);
  print(HttpHeaders.TE);
  print(HttpHeaders.TRAILER);
  print(HttpHeaders.TRANSFER_ENCODING);
  print(HttpHeaders.UPGRADE);
  print(HttpHeaders.USER_AGENT);
  print(HttpHeaders.VARY);
  print(HttpHeaders.VIA);
  print(HttpHeaders.WARNING);
  print(HttpHeaders.WWW_AUTHENTICATE);
  print(HttpHeaders.COOKIE);
  print(HttpHeaders.SET_COOKIE);
  print(HttpHeaders.GENERAL_HEADERS);
  print(HttpHeaders.ENTITY_HEADERS);
  print(HttpHeaders.RESPONSE_HEADERS);
  print(HttpHeaders.REQUEST_HEADERS);
  print(ContentType.TEXT);
  print(ContentType.HTML);
  print(ContentType.JSON);
  print(ContentType.BINARY);
  print(HttpClient.DEFAULT_HTTP_PORT);
  print(HttpClient.DEFAULT_HTTPS_PORT);
}
