docs: public void service(ServletRequest pRequest, ServletResponse pResponse) throws IOException, ServletException {
          int red = 0;
          int green = 0;
          int blue = 0;
  
          // Get color parameter and parse color
          String rgb = pRequest.getParameter(RGB_PARAME);
          if (rgb != null && rgb.length() >= 6 && rgb.length() <= 7) {
              int index = 0;
  
              // If the hash ('#') character is included, skip it.
              if (rgb.length() == 7) {
                  index++;
              }
  
              try {
                  // Two digit hex for each color
                  String r = rgb.substring(index, index += 2);
                  red = Integer.parseInt(r, 0x10);
  
                  String g = rgb.substring(index, index += 2);
                  green = Integer.parseInt(g, 0x10);
  
                  String b = rgb.substring(index, index += 2);
                  blue = Integer.parseInt(b, 0x10);
              }
              catch (NumberFormatException nfe) {
                  log("Wrong color format for ColorDroplet: " + rgb + ". Must be RRGGBB.");
              }
          }
  
          // Set MIME type for PNG
          pResponse.setContentType("image/png");
          ServletOutputStream out = pResponse.getOutputStream();
  
          try {
              // Write header (and palette chunk length)
              out.write(PNG_IMG, 0, PLTE_CHUNK_START);
  
              // Create palette chunk, excl lenght, and write
              byte[] palette = makePalette(red, green, blue);
              out.write(palette);
  
              // Write image data until end
              int pos = PLTE_CHUNK_START + PLTE_CHUNK_LENGTH + 4;
              out.write(PNG_IMG, pos, PNG_IMG.length - pos);
          }
          finally {
              out.flush();
          }
      }