<commit_before>package com.keepa.api.backend.structs;


import com.keepa.api.backend.helper.KeepaTime;

import static com.keepa.api.backend.helper.Utility.gson;

public final class Product {

	/**
	 * The ASIN of the product
	 */
	public String asin = null;

	/**
	 * The domainId of the products Amazon locale <br>
	 * {@link AmazonLocale}
	 */
	public byte domainId = 0;

	/**
	 * The ASIN of the parent product (if asin has variations, otherwise null)
	 */
	public String parentAsin = null;

	/**
	 * Comma separated list of variation ASINs of the product (if asin is parentAsin, otherwise null)
	 */
	public String variationCSV = null;

	/**
	 * The UPC of the product. Caution: leading zeros are truncated.
	 * @deprecated use first upcList entry instead.
	 */
	public long upc = 0;

	/**
	 * The EAN of the product. Caution: leading zeros are truncated.
	 * @deprecated use first eanList entry instead.
	 */
	public long ean = 0;

	/**
	 * A list of UPC assigned to this product. The first index is the primary UPC. null if not available.
	 */
	public String[] upcList = null;

	/**
	 * A list of EAN assigned to this product. The first index is the primary EAN. null if not available.
	 */
	public String[] eanList = null;

	/**
	 * The manufacturer’s part number.
	 */
	public String mpn = null;

	/**
	 * Comma separated list of image names of the product. Full Amazon image path:<br>
	 * https://images-na.ssl-images-amazon.com/images/I/_image name_
	 */
	public String imagesCSV = null;

	/**
	 * Array of category node ids
	 */
	public long[] categories = null;

	/**
	 * Category node id of the products' root category. 0 if no root category known
	 */
	public long rootCategory = 0L;

	/**
	 * Name of the manufacturer
	 */
	public String manufacturer = null;

	/**
	 * Title of the product. Caution: may contain HTML markup in rare cases.
	 */
	public String title = null;

	/**
	 * States the time we have started tracking this product, in Keepa Time minutes.<br>
	 * Use {@link KeepaTime#keepaMinuteToUnixInMillis(int)} (long)} to get an uncompressed timestamp (Unix epoch time).
	 */
	public int trackingSince = 0;

	/**
	 * States the time the item was first listed on Amazon, in Keepa Time minutes.<br>
	 * It is updated in conjunction with the offers request, but always accessible.<br>
	 * This timestamp is only available for some products. If not available the field has the value 0.
	 * Use {@link KeepaTime#keepaMinuteToUnixInMillis(int)} (long)} to get an uncompressed timestamp (Unix epoch time).
	 */
	public int listedSince = 0;

	/**
	 * An item's brand. null if not available.
	 */
	public String brand = null;

	/**
	 * The item's label. null if not available.
	 */
	public String label = null;

	/**
	 * The item's department. null if not available.
	 */
	public String department = null;

	/**
	 * The item's publisher. null if not available.
	 */
	public String publisher = null;

	/**
	 * The item's productGroup. null if not available.
	 */
	public String productGroup = null;

	/**
	 * The item's partNumber. null if not available.
	 */
	public String partNumber = null;

	/**
	 * The item's studio. null if not available.
	 */
	public String studio = null;

	/**
	 * The item's genre. null if not available.
	 */
	public String genre = null;

	/**
	 * The item's model. null if not available.
	 */
	public String model = null;

	/**
	 * The item's color. null if not available.
	 */
	public String color = null;

	/**
	 * The item's size. null if not available.
	 */
	public String size = null;

	/**
	 * The item's edition. null if not available.
	 */
	public String edition = null;

	/**
	 * The item's platform. null if not available.
	 */
	public String platform = null;

	/**
	 * The item's format. null if not available.
	 */
	public String format = null;

	/**
	 * The item’s author. null if not available.
	 */
	public String author = null;

	/**
	 * The item’s binding. null if not available. If the item is not a book it is usually the product category instead.
	 */
	public String binding = null;

	/**
	 * The item’s binding. null if not available. If the item is not a book it is usually the product category instead.
	 */
	public CategoryTreeEntry[] categoryTree = null;

	/**
	 * The number of items of this product. -1 if not available.
	 */
	public int numberOfItems = -1;

	/**
	 * The number of pages of this product. -1 if not available.
	 */
	public int numberOfPages = -1;

	/**
	 * The item’s publication date in one of the following three formats:<br>
	 * YYYY or YYYYMM or YYYYMMDD (Y= year, M = month, D = day)<br><commit_msg>fixed categoryTree doc<commit_after>package com.keepa.api.backend.structs;


import com.keepa.api.backend.helper.KeepaTime;

import static com.keepa.api.backend.helper.Utility.gson;

public final class Product {

	/**
	 * The ASIN of the product
	 */
	public String asin = null;

	/**
	 * The domainId of the products Amazon locale <br>
	 * {@link AmazonLocale}
	 */
	public byte domainId = 0;

	/**
	 * The ASIN of the parent product (if asin has variations, otherwise null)
	 */
	public String parentAsin = null;

	/**
	 * Comma separated list of variation ASINs of the product (if asin is parentAsin, otherwise null)
	 */
	public String variationCSV = null;

	/**
	 * The UPC of the product. Caution: leading zeros are truncated.
	 * @deprecated use first upcList entry instead.
	 */
	public long upc = 0;

	/**
	 * The EAN of the product. Caution: leading zeros are truncated.
	 * @deprecated use first eanList entry instead.
	 */
	public long ean = 0;

	/**
	 * A list of UPC assigned to this product. The first index is the primary UPC. null if not available.
	 */
	public String[] upcList = null;

	/**
	 * A list of EAN assigned to this product. The first index is the primary EAN. null if not available.
	 */
	public String[] eanList = null;

	/**
	 * The manufacturer’s part number.
	 */
	public String mpn = null;

	/**
	 * Comma separated list of image names of the product. Full Amazon image path:<br>
	 * https://images-na.ssl-images-amazon.com/images/I/_image name_
	 */
	public String imagesCSV = null;

	/**
	 * Array of category node ids
	 */
	public long[] categories = null;

	/**
	 * Category node id of the products' root category. 0 if no root category known
	 */
	public long rootCategory = 0L;

	/**
	 * Name of the manufacturer
	 */
	public String manufacturer = null;

	/**
	 * Title of the product. Caution: may contain HTML markup in rare cases.
	 */
	public String title = null;

	/**
	 * States the time we have started tracking this product, in Keepa Time minutes.<br>
	 * Use {@link KeepaTime#keepaMinuteToUnixInMillis(int)} (long)} to get an uncompressed timestamp (Unix epoch time).
	 */
	public int trackingSince = 0;

	/**
	 * States the time the item was first listed on Amazon, in Keepa Time minutes.<br>
	 * It is updated in conjunction with the offers request, but always accessible.<br>
	 * This timestamp is only available for some products. If not available the field has the value 0.
	 * Use {@link KeepaTime#keepaMinuteToUnixInMillis(int)} (long)} to get an uncompressed timestamp (Unix epoch time).
	 */
	public int listedSince = 0;

	/**
	 * An item's brand. null if not available.
	 */
	public String brand = null;

	/**
	 * The item's label. null if not available.
	 */
	public String label = null;

	/**
	 * The item's department. null if not available.
	 */
	public String department = null;

	/**
	 * The item's publisher. null if not available.
	 */
	public String publisher = null;

	/**
	 * The item's productGroup. null if not available.
	 */
	public String productGroup = null;

	/**
	 * The item's partNumber. null if not available.
	 */
	public String partNumber = null;

	/**
	 * The item's studio. null if not available.
	 */
	public String studio = null;

	/**
	 * The item's genre. null if not available.
	 */
	public String genre = null;

	/**
	 * The item's model. null if not available.
	 */
	public String model = null;

	/**
	 * The item's color. null if not available.
	 */
	public String color = null;

	/**
	 * The item's size. null if not available.
	 */
	public String size = null;

	/**
	 * The item's edition. null if not available.
	 */
	public String edition = null;

	/**
	 * The item's platform. null if not available.
	 */
	public String platform = null;

	/**
	 * The item's format. null if not available.
	 */
	public String format = null;

	/**
	 * The item’s author. null if not available.
	 */
	public String author = null;

	/**
	 * The item’s binding. null if not available. If the item is not a book it is usually the product category instead.
	 */
	public String binding = null;

	/**
	 * Represents the category tree as an ordered array of CategoryTreeEntry objects.
	 */
	public CategoryTreeEntry[] categoryTree = null;

	/**
	 * The number of items of this product. -1 if not available.
	 */
	public int numberOfItems = -1;

	/**
	 * The number of pages of this product. -1 if not available.
	 */
	public int numberOfPages = -1;

	/**
	 * The item’s publication date in one of the following three formats:<br>
	 * YYYY or YYYYMM or YYYYMMDD (Y= year, M = month, D = day)<br>
{'fraction_non_alphanumeric': 0.10536084725406704, 'fraction_numerical': 0.0026203734032099572, 'mean_word_length': 2.9095177123346136, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 17, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '413492', 'n_tokens_mistral': 2928, 'n_tokens_neox': 2633, 'n_words': 1167}