// Path: prngine/src/main/java/io/jenetics/prngine/Bytes.java
// static long readLong(final byte[] bytes, final int index) {
// 	final int offset = index*Long.BYTES;
// 	if (offset + Long.BYTES > bytes.length) {
// 		throw new IndexOutOfBoundsException(format(
// 			"Not enough data to read long value (index=%d, bytes=%d).",
// 			index, bytes.length
// 		));
// 	}
// 
// 	return
// 		((long)(bytes[offset    ] & 255) << 56) +
// 		((long)(bytes[offset + 1] & 255) << 48) +
// 		((long)(bytes[offset + 2] & 255) << 40) +
// 		((long)(bytes[offset + 3] & 255) << 32) +
// 		((long)(bytes[offset + 4] & 255) << 24) +
// 		((bytes[offset + 5] & 255) << 16) +
// 		((bytes[offset + 6] & 255) <<  8) +
// 		(bytes[offset + 7] & 255);
// }
// 
// Path: prngine/src/main/java/io/jenetics/prngine/IntMath.java
// static long log2Floor(final long x) {
// 	return Long.SIZE - 1 - Long.numberOfLeadingZeros(x);
// }


import static java.lang.String.format;
import static java.util.Objects.requireNonNull;
import static io.jenetics.prngine.Bytes.readLong;
import static io.jenetics.prngine.IntMath.log2Floor;
import java.util.random.RandomGenerator;
	public static byte[] seedBytes() {
		return Seeds.seedBytes(SEED_BYTES);
	}


	/* *************************************************************************
	 * Some static helper methods
	 ***************************************************************************/

	/**
	 * Compute prod(1+a^(2^i), i=0..l-1).
	 */
	private static long g(final int l, final long a) {
		long p = a;
		long res = 1;
		for (int i = 0; i < l; ++i) {
			res *= 1 + p;
			p *= p;
		}

		return res;
	}

	/**
	 * Compute sum(a^i, i=0..s-1).
	 */
	private static long f(final long s, final long a) {
		long y = 0;

		if (s != 0) {
// Path: prngine/src/main/java/io/jenetics/prngine/Bytes.java
// static long readLong(final byte[] bytes, final int index) {
// 	final int offset = index*Long.BYTES;
// 	if (offset + Long.BYTES > bytes.length) {
// 		throw new IndexOutOfBoundsException(format(
// 			"Not enough data to read long value (index=%d, bytes=%d).",
// 			index, bytes.length
// 		));
// 	}
// 
// 	return
// 		((long)(bytes[offset    ] & 255) << 56) +
// 		((long)(bytes[offset + 1] & 255) << 48) +
// 		((long)(bytes[offset + 2] & 255) << 40) +
// 		((long)(bytes[offset + 3] & 255) << 32) +
// 		((long)(bytes[offset + 4] & 255) << 24) +
// 		((bytes[offset + 5] & 255) << 16) +
// 		((bytes[offset + 6] & 255) <<  8) +
// 		(bytes[offset + 7] & 255);
// }
// 
// Path: prngine/src/main/java/io/jenetics/prngine/IntMath.java
// static long log2Floor(final long x) {
// 	return Long.SIZE - 1 - Long.numberOfLeadingZeros(x);
// }


// Path: prngine/src/main/java/io/jenetics/prngine/LCG64ShiftRandom.java
import static java.lang.String.format;
import static java.util.Objects.requireNonNull;
import static io.jenetics.prngine.Bytes.readLong;
import static io.jenetics.prngine.IntMath.log2Floor;
import java.util.random.RandomGenerator;

	public static byte[] seedBytes() {
		return Seeds.seedBytes(SEED_BYTES);
	}


	/* *************************************************************************
	 * Some static helper methods
	 ***************************************************************************/

	/**
	 * Compute prod(1+a^(2^i), i=0..l-1).
	 */
	private static long g(final int l, final long a) {
		long p = a;
		long res = 1;
		for (int i = 0; i < l; ++i) {
			res *= 1 + p;
			p *= p;
		}

		return res;
	}

	/**
	 * Compute sum(a^i, i=0..s-1).
	 */
	private static long f(final long s, final long a) {
		long y = 0;

		if (s != 0) {
			long e = log2Floor(s);