public void run() {
			boolean skipout = false;
			for (;;) {
				int b;
				try {
					b = in.read();
				} catch (IOException e) {
					if (!Thread.interrupted()) {
						e.printStackTrace();
					}
					break;
				}
				if (b == -1) {
					break;
				}
				if (!skipout) {
					try {
						out.write(b);
					} catch (IOException e) {
						if (!Thread.interrupted()) {
							e.printStackTrace();
						}
						skipout = true;
					}
				}
			}
			try {
				out.close();
			} catch (Throwable t) {
				;
			}
			try {
				in.close();
			} catch (Throwable t) {
				;
			}
			synchronized (traced) {
				traced.remove(myself);
			}
		}