diff options
Diffstat (limited to 'bot')
-rw-r--r-- | bot/exts/utilities/color.py | 471 | ||||
-rw-r--r-- | bot/resources/utilities/ryanzec_colours.json | 1568 |
2 files changed, 2039 insertions, 0 deletions
diff --git a/bot/exts/utilities/color.py b/bot/exts/utilities/color.py new file mode 100644 index 00000000..c1523281 --- /dev/null +++ b/bot/exts/utilities/color.py @@ -0,0 +1,471 @@ +import colorsys +import json +import logging +import re +from io import BytesIO + +from discord import Embed, File +from discord.ext import commands +from PIL import Image, ImageColor +from rapidfuzz import process + +from bot.bot import Bot +from bot.constants import Colours + +# from bot.exts.core.extension import invoke_help_command + + +logger = logging.getLogger(__name__) + + +ERROR_MSG = """The color code {user_color} is not a possible color combination. +The range of possible values are: +RGB & HSV: 0-255 +CMYK: 0-100% +HSL: 0-360 degrees +Hex: #000000-#FFFFFF +""" + +with open("bot/resources/utilities/ryanzec_colours.json") as f: + COLOR_MAPPING = json.load(f) + + +THUMBNAIL_SIZE = 80 + +""" +class Colour(commands.Cog): + + def __init__(self, bot: Bot) -> None: + self.bot = bot + + @commands.group(aliases=["color"]) + async def colour(self, ctx: commands.Context) -> None: + if ctx.invoked_subcommand is None: + await invoke_help_command(ctx) + + @colour.command() + async def rgb(self, ctx: commands.Context, red: int, green: int, blue: int) -> None: + rgb_tuple = ImageColor.getrgb(f"rgb({red}, {green}, {blue})") + await Colour.send_colour_response(ctx, list(rgb_tuple)) + + @colour.command() + async def hsv(self, ctx: commands.Context, hue: int, saturation: int, value: int) -> None: + hsv_tuple = ImageColor.getrgb(f"hsv({hue}, {saturation}%, {value}%)") + await Colour.send_colour_response(ctx, list(hsv_tuple)) + + @colour.command() + async def hsl(self, ctx: commands.Context, hue: int, saturation: int, lightness: int) -> None: + hsl_tuple = ImageColor.getrgb(f"hsl({hue}, {saturation}%, {lightness}%)") + await Colour.send_colour_response(ctx, list(hsl_tuple)) + + @colour.command() + async def cmyk(self, ctx: commands.Context, cyan: int, yellow: int, magenta: int, key: int) -> None: + ... + + @colour.command() + async def hex(self, ctx: commands.Context, hex_code: str) -> None: + hex_tuple = ImageColor.getrgb(hex_code) + await Colour.send_colour_response(ctx, list(hex_tuple)) + + @colour.command() + async def yiq( + self, + ctx: commands.Context, + perceived_luminesence: int, + in_phase: int, + quadrature: int + ) -> None: + yiq_list = list(colorsys.yiq_to_rgb(perceived_luminesence, in_phase, quadrature)) + yiq_tuple = [int(val * 255.0) for val in yiq_list] + await Colour.send_colour_response(ctx, list(yiq_tuple)) + + @staticmethod + async def send_colour_response(ctx: commands.Context, rgb: list[int]) -> Message: + r, g, b = rgb[0], rgb[1], rgb[2] + colour_embed = Embed( + title="Colour", + description="Here lies thy colour", + colour=int(f"{r:02x}{g:02x}{b:02x}", 16) + ) + colour_conversions = Colour.get_colour_conversions(rgb) + for colour_space, value in colour_conversions.items(): + colour_embed.add_field( + name=colour_space.upper(), + value=f"`{value}`", + inline=True + ) + + thumbnail = Image.new("RGB", (THUMBNAIL_SIZE, THUMBNAIL_SIZE), color=tuple(rgb)) + buffer = BytesIO() + thumbnail.save(buffer, "PNG") + buffer.seek(0) + thumbnail_file = File(buffer, filename="colour.png") + + colour_embed.set_thumbnail(url="attachment://colour.png") + + await ctx.send(file=thumbnail_file, embed=colour_embed) + + @staticmethod + def get_colour_conversions(rgb: list[int]) -> dict[str, str]: + return { + "rgb": tuple(rgb), + "hsv": Colour._rgb_to_hsv(rgb), + "hsl": Colour._rgb_to_hsl(rgb), + "cmyk": Colour._rgb_to_cmyk(rgb), + "hex": Colour._rgb_to_hex(rgb), + "yiq": Colour._rgb_to_yiq(rgb) + } + + @staticmethod + def _rgb_to_hsv(rgb: list[int]) -> tuple[int, int, int]: + rgb = [val / 255.0 for val in rgb] + h, v, s = colorsys.rgb_to_hsv(*rgb) + hsv = (round(h * 360), round(s * 100), round(v * 100)) + return hsv + + @staticmethod + def _rgb_to_hsl(rgb: list[int]) -> tuple[int, int, int]: + rgb = [val / 255.0 for val in rgb] + h, l, s = colorsys.rgb_to_hls(*rgb) + hsl = (round(h * 360), round(s * 100), round(l * 100)) + return hsl + + @staticmethod + def _rgb_to_cmyk(rgb: list[int]) -> tuple[int, int, int, int]: + rgb = [val / 255.0 for val in rgb] + + if all(val == 0 for val in rgb): + return 0, 0, 0, 100 + + cmy = [1 - val / 255 for val in rgb] + min_cmy = min(cmy) + + cmyk = [(val - min_cmy) / (1 - min_cmy) for val in cmy] + [min_cmy] + cmyk = [round(val * 100) for val in cmyk] + + return tuple(cmyk) + + @staticmethod + def _rgb_to_hex(rgb: list[int]) -> str: + hex_ = ''.join([hex(val)[2:].zfill(2) for val in rgb]) + hex_code = f"#{hex_}".upper() + return hex_code + + @staticmethod + def _rgb_to_yiq(rgb: list[int]) -> tuple[int, int, int, int]: + rgb = [val / 255.0 for val in rgb] + y, i, q = colorsys.rgb_to_yiq(*rgb) + yiq = (round(y), round(i), round(q)) + return yiq + +def setup(bot: commands.Bot) -> None: + bot.add_cog(Colour(bot)) +""" + + +class Color(commands.Cog): + """User initiated commands to receive color information.""" + + def __init__(self, bot: Bot): + self.bot = bot + + @commands.command(aliases=["colour"]) + async def color(self, ctx: commands.Context, mode: str, *, user_color: str) -> None: + """ + Send information on input color code or color name. + + Possible modes are: "hex", "rgb", "hsv", "hsl", "cmyk" or "name". + """ + logger.debug(f"{mode = }") + logger.debug(f"{user_color = }") + if mode.lower() == "hex": + await self.hex_to_rgb(ctx, user_color) + elif mode.lower() == "rgb": + rgb_color = self.tuple_create(user_color) + await self.color_embed(ctx, rgb_color) + elif mode.lower() == "hsv": + await self.hsv_to_rgb(ctx, user_color) + elif mode.lower() == "hsl": + await self.hsl_to_rgb(ctx, user_color) + elif mode.lower() == "cmyk": + await self.cmyk_to_rgb(ctx, user_color) + elif mode.lower() == "name": + color_name, hex_color = self.match_color_name(user_color) + if "#" in hex_color: + rgb_color = ImageColor.getcolor(hex_color, "RGB") + else: + rgb_color = ImageColor.getcolor("#" + hex_color, "RGB") + await self.color_embed(ctx, rgb_color, color_name) + else: + # mode is either None or an invalid code + if mode is None: + no_mode_embed = Embed( + title="No mode was passed, please define a color code.", + description="Possible modes are: Name, Hex, RGB, HSV, HSL and CMYK.", + color=Colours.soft_red, + ) + await ctx.send(embed=no_mode_embed) + return + wrong_mode_embed = Embed( + title=f"The color code {mode} is not a valid option", + description="Possible modes are: Name, Hex, RGB, HSV, HSL and CMYK.", + color=Colours.soft_red, + ) + await ctx.send(embed=wrong_mode_embed) + return + + @staticmethod + def tuple_create(input_color: str) -> tuple[int, int, int]: + """ + Create a tuple of integers based on user's input. + + Can handle inputs of the types: + (100, 100, 100) + 100, 100, 100 + 100 100 100 + """ + if "(" in input_color: + remove = "[() ]" + color_tuple = re.sub(remove, "", input_color) + color_tuple = tuple(map(int, color_tuple.split(","))) + elif "," in input_color: + color_tuple = tuple(map(int, input_color.split(","))) + else: + color_tuple = tuple(map(int, input_color.split(" "))) + return color_tuple + + async def hex_to_rgb(self, ctx: commands.Context, hex_string: str) -> None: + """Function to convert hex color to rgb color and send main embed.""" + hex_match = re.fullmatch(r"(#?[0x]?)((?:[0-9a-fA-F]{3}){1,2})", hex_string) + if hex_match: + if "#" in hex_string: + rgb_color = ImageColor.getcolor(hex_string, "RGB") + elif "0x" in hex_string: + hex_ = hex_string.replace("0x", "#") + rgb_color = ImageColor.getcolor(hex_, "RGB") + else: + hex_ = "#" + hex_string + rgb_color = ImageColor.getcolor(hex_, "RGB") + await self.color_embed(ctx, rgb_color) + else: + await ctx.send( + embed=Embed( + title="There was an issue converting the hex color code.", + description=ERROR_MSG.format(user_color=hex_string), + ) + ) + + async def hsv_to_rgb(self, ctx: commands.Context, input_color: tuple[int, int, int]) -> tuple[int, int, int]: + """Function to convert hsv color to rgb color and send main embed.""" + input_color = self.tuple_create(input_color) + (h, v, s) = input_color # the function hsv_to_rgb expects v and s to be swapped + h = h / 360 + s = s / 100 + v = v / 100 + rgb_color = colorsys.hsv_to_rgb(h, s, v) + (r, g, b) = rgb_color + r = int(r * 255) + g = int(g * 255) + b = int(b * 255) + await self.color_embed(ctx, (r, g, b)) + + async def hsl_to_rgb(self, ctx: commands.Context, input_color: tuple[int, int, int]) -> tuple[int, int, int]: + """Function to convert hsl color to rgb color and send main embed.""" + input_color = self.tuple_create(input_color) + (h, s, l) = input_color + h = h / 360 + s = s / 100 + l = l / 100 # noqa: E741 It's little `L`, Reason: To maintain consistency. + rgb_color = colorsys.hls_to_rgb(h, l, s) + (r, g, b) = rgb_color + r = int(r * 255) + g = int(g * 255) + b = int(b * 255) + await self.color_embed(ctx, (r, g, b)) + + async def cmyk_to_rgb( + self, + ctx: commands.Context, + input_color: tuple[int, int, int, int] + ) -> tuple[int, int, int]: + """Function to convert cmyk color to rgb color and send main embed.""" + input_color = self.tuple_create(input_color) + c = input_color[0] + m = input_color[1] + y = input_color[2] + k = input_color[3] + r = int(255 * (1.0 - c / float(100)) * (1.0 - k / float(100))) + g = int(255 * (1.0 - m / float(100)) * (1.0 - k / float(100))) + b = int(255 * (1.0 - y / float(100)) * (1.0 - k / float(100))) + await self.color_embed(ctx, (r, g, b)) + + @staticmethod + async def create_thumbnail_attachment(color: tuple[int, int, int]) -> File: + """ + Generate a thumbnail from `color`. + + Assumes that color is an rgb tuple. + """ + thumbnail = Image.new("RGB", (80, 80), color=color) + bufferedio = BytesIO() + thumbnail.save(bufferedio, format="PNG") + bufferedio.seek(0) + + file = File(bufferedio, filename="color.png") + + return file + + @staticmethod + def get_color_fields(rgb_color: tuple[int, int, int]) -> list[dict]: + """Converts from `RGB` to `CMYK`, `HSV`, `HSL` and returns a list of fields.""" + + def _rgb_to_hex(rgb_color: tuple[int, int, int]) -> str: + """To convert from `RGB` to `Hex` notation.""" + return '#' + ''.join(hex(int(color))[2:].zfill(2) for color in rgb_color).upper() + + def _rgb_to_cmyk(rgb_color: tuple[int, int, int]) -> tuple[int, int, int, int]: + """To convert from `RGB` to `CMYK` color space.""" + r, g, b = rgb_color + + # RGB_SCALE -> 255 + # CMYK_SCALE -> 100 + + if (r == g == b == 0): + return 0, 0, 0, 100 # Representing Black + + # rgb [0,RGB_SCALE] -> cmy [0,1] + c = 1 - r / 255 + m = 1 - g / 255 + y = 1 - b / 255 + + # extract out k [0, 1] + min_cmy = min(c, m, y) + c = (c - min_cmy) / (1 - min_cmy) + m = (m - min_cmy) / (1 - min_cmy) + y = (y - min_cmy) / (1 - min_cmy) + k = min_cmy + + # rescale to the range [0,CMYK_SCALE] and round off + c = round(c * 100) + m = round(m * 100) + y = round(y * 100) + k = round(k * 100) + + return c, m, y, k + + def _rgb_to_hsv(rgb_color: tuple[int, int, int]) -> tuple[int, int, int]: + """To convert from `RGB` to `HSV` color space.""" + r, g, b = rgb_color + h, v, s = colorsys.rgb_to_hsv(r / float(255), g / float(255), b / float(255)) + h = round(h * 360) + s = round(s * 100) + v = round(v * 100) + return h, s, v + + def _rgb_to_hsl(rgb_color: tuple[int, int, int]) -> tuple[int, int, int]: + """To convert from `RGB` to `HSL` color space.""" + r, g, b = rgb_color + h, l, s = colorsys.rgb_to_hls(r / float(255), g / float(255), b / float(255)) + h = round(h * 360) + s = round(s * 100) + l = round(l * 100) # noqa: E741 It's little `L`, Reason: To maintain consistency. + return h, s, l + + all_fields = [ + { + "name": "RGB", + "value": f"» rgb {rgb_color}" + }, + { + "name": "HEX", + "value": f"» hex {_rgb_to_hex(rgb_color)}" + }, + { + "name": "CMYK", + "value": f"» cmyk {_rgb_to_cmyk(rgb_color)}" + }, + { + "name": "HSV", + "value": f"» hsv {_rgb_to_hsv(rgb_color)}" + }, + { + "name": "HSL", + "value": f"» hsl {_rgb_to_hsl(rgb_color)}" + }, + ] + + return all_fields + + @staticmethod + def match_color_name(input_color_name: str) -> str: + """Use fuzzy matching to return a hex color code based on the user's input.""" + try: + match, certainty, _ = process.extractOne( + query=input_color_name, + choices=COLOR_MAPPING.keys(), + score_cutoff=50 + ) + logger.debug(f"{match = }, {certainty = }") + hex_match = COLOR_MAPPING[match] + logger.debug(f"{hex_match = }") + except TypeError: + match = "No color name match found." + hex_match = input_color_name + + return match, hex_match + + @staticmethod + def match_color_hex(input_hex_color: str) -> str: + """Use fuzzy matching to return a hex color code based on the user's input.""" + try: + match, certainty, _ = process.extractOne( + query=input_hex_color, + choices=COLOR_MAPPING.values(), + score_cutoff=80 + ) + logger.debug(f"{match = }, {certainty = }") + color_name = [name for name, _ in COLOR_MAPPING.items() if _ == match][0] + logger.debug(f"{color_name = }") + except TypeError: + color_name = "No color name match found." + + return color_name + + async def color_embed( + self, + ctx: commands.Context, + rgb_color: tuple[int, int, int], + color_name: str = None + ) -> None: + """Take a RGB color tuple, create embed, and send.""" + (r, g, b) = rgb_color + discord_rgb_int = int(f"{r:02x}{g:02x}{b:02x}", 16) + all_colors = self.get_color_fields(rgb_color) + hex_color = all_colors[1]["value"].replace("» hex ", "") + if color_name is None: + logger.debug(f"Find color name from hex color: {hex_color}") + color_name = self.match_color_hex(hex_color) + + async with ctx.typing(): + main_embed = Embed( + title=color_name, + description='(Approx..)', + color=discord_rgb_int, + ) + + file = await self.create_thumbnail_attachment(rgb_color) + main_embed.set_thumbnail(url="attachment://color.png") + + for field in all_colors: + main_embed.add_field( + name=field['name'], + value=field['value'], + inline=False, + ) + + await ctx.send(file=file, embed=main_embed) + + +def setup(bot: Bot) -> None: + """Load the Color Cog.""" + bot.add_cog(Color(bot)) diff --git a/bot/resources/utilities/ryanzec_colours.json b/bot/resources/utilities/ryanzec_colours.json new file mode 100644 index 00000000..7b89f052 --- /dev/null +++ b/bot/resources/utilities/ryanzec_colours.json @@ -0,0 +1,1568 @@ +{ + "Abbey": "4C4F56", + "Acadia": "1B1404", + "Acapulco": "7CB0A1", + "Aero Blue": "C9FFE5", + "Affair": "714693", + "Akaroa": "D4C4A8", + "Alabaster": "FAFAFA", + "Albescent White": "F5E9D3", + "Algae Green": "93DFB8", + "Alice Blue": "F0F8FF", + "Alizarin Crimson": "E32636", + "Allports": "0076A3", + "Almond": "EED9C4", + "Almond Frost": "907B71", + "Alpine": "AF8F2C", + "Alto": "DBDBDB", + "Aluminium": "A9ACB6", + "Amaranth": "E52B50", + "Amazon": "3B7A57", + "Amber": "FFBF00", + "Americano": "87756E", + "Amethyst": "9966CC", + "Amethyst Smoke": "A397B4", + "Amour": "F9EAF3", + "Amulet": "7B9F80", + "Anakiwa": "9DE5FF", + "Antique Brass": "C88A65", + "Antique Bronze": "704A07", + "Anzac": "E0B646", + "Apache": "DFBE6F", + "Apple": "4FA83D", + "Apple Blossom": "AF4D43", + "Apple Green": "E2F3EC", + "Apricot": "EB9373", + "Apricot Peach": "FBCEB1", + "Apricot White": "FFFEEC", + "Aqua Deep": "014B43", + "Aqua Forest": "5FA777", + "Aqua Haze": "EDF5F5", + "Aqua Island": "A1DAD7", + "Aqua Spring": "EAF9F5", + "Aqua Squeeze": "E8F5F2", + "Aquamarine": "7FFFD4", + "Aquamarine Blue": "71D9E2", + "Arapawa": "110C6C", + "Armadillo": "433E37", + "Arrowtown": "948771", + "Ash": "C6C3B5", + "Asparagus": "7BA05B", + "Asphalt": "130A06", + "Astra": "FAEAB9", + "Astral": "327DA0", + "Astronaut": "283A77", + "Astronaut Blue": "013E62", + "Athens Gray": "EEF0F3", + "Aths Special": "ECEBCE", + "Atlantis": "97CD2D", + "Atoll": "0A6F75", + "Atomic Tangerine": "FF9966", + "Au Chico": "97605D", + "Aubergine": "3B0910", + "Australian Mint": "F5FFBE", + "Avocado": "888D65", + "Axolotl": "4E6649", + "Azalea": "F7C8DA", + "Aztec": "0D1C19", + "Azure": "315BA1", + "Azure Radiance": "007FFF", + "Baby Blue": "E0FFFF", + "Bahama Blue": "026395", + "Bahia": "A5CB0C", + "Baja White": "FFF8D1", + "Bali Hai": "859FAF", + "Baltic Sea": "2A2630", + "Bamboo": "DA6304", + "Banana Mania": "FBE7B2", + "Bandicoot": "858470", + "Barberry": "DED717", + "Barley Corn": "A68B5B", + "Barley White": "FFF4CE", + "Barossa": "44012D", + "Bastille": "292130", + "Battleship Gray": "828F72", + "Bay Leaf": "7DA98D", + "Bay of Many": "273A81", + "Bazaar": "98777B", + "Bean ": "3D0C02", + "Beauty Bush": "EEC1BE", + "Beaver": "926F5B", + "Beeswax": "FEF2C7", + "Beige": "F5F5DC", + "Bermuda": "7DD8C6", + "Bermuda Gray": "6B8BA2", + "Beryl Green": "DEE5C0", + "Bianca": "FCFBF3", + "Big Stone": "162A40", + "Bilbao": "327C14", + "Biloba Flower": "B2A1EA", + "Birch": "373021", + "Bird Flower": "D4CD16", + "Biscay": "1B3162", + "Bismark": "497183", + "Bison Hide": "C1B7A4", + "Bistre": "3D2B1F", + "Bitter": "868974", + "Bitter Lemon": "CAE00D", + "Bittersweet": "FE6F5E", + "Bizarre": "EEDEDA", + "Black": "000000", + "Black Bean": "081910", + "Black Forest": "0B1304", + "Black Haze": "F6F7F7", + "Black Marlin": "3E2C1C", + "Black Olive": "242E16", + "Black Pearl": "041322", + "Black Rock": "0D0332", + "Black Rose": "67032D", + "Black Russian": "0A001C", + "Black Squeeze": "F2FAFA", + "Black White": "FFFEF6", + "Blackberry": "4D0135", + "Blackcurrant": "32293A", + "Blaze Orange": "FF6600", + "Bleach White": "FEF3D8", + "Bleached Cedar": "2C2133", + "Blizzard Blue": "A3E3ED", + "Blossom": "DCB4BC", + "Blue": "0000FF", + "Blue Bayoux": "496679", + "Blue Bell": "9999CC", + "Blue Chalk": "F1E9FF", + "Blue Charcoal": "010D1A", + "Blue Chill": "0C8990", + "Blue Diamond": "380474", + "Blue Dianne": "204852", + "Blue Gem": "2C0E8C", + "Blue Haze": "BFBED8", + "Blue Lagoon": "017987", + "Blue Marguerite": "7666C6", + "Blue Ribbon": "0066FF", + "Blue Romance": "D2F6DE", + "Blue Smoke": "748881", + "Blue Stone": "016162", + "Blue Violet": "6456B7", + "Blue Whale": "042E4C", + "Blue Zodiac": "13264D", + "Blumine": "18587A", + "Blush": "B44668", + "Blush Pink": "FF6FFF", + "Bombay": "AFB1B8", + "Bon Jour": "E5E0E1", + "Bondi Blue": "0095B6", + "Bone": "E4D1C0", + "Bordeaux": "5C0120", + "Bossanova": "4E2A5A", + "Boston Blue": "3B91B4", + "Botticelli": "C7DDE5", + "Bottle Green": "093624", + "Boulder": "7A7A7A", + "Bouquet": "AE809E", + "Bourbon": "BA6F1E", + "Bracken": "4A2A04", + "Brandy": "DEC196", + "Brandy Punch": "CD8429", + "Brandy Rose": "BB8983", + "Breaker Bay": "5DA19F", + "Brick Red": "C62D42", + "Bridal Heath": "FFFAF4", + "Bridesmaid": "FEF0EC", + "Bright Gray": "3C4151", + "Bright Green": "66FF00", + "Bright Red": "B10000", + "Bright Sun": "FED33C", + "Bright Turquoise": "08E8DE", + "Brilliant Rose": "F653A6", + "Brink Pink": "FB607F", + "Bronco": "ABA196", + "Bronze": "3F2109", + "Bronze Olive": "4E420C", + "Bronzetone": "4D400F", + "Broom": "FFEC13", + "Brown": "964B00", + "Brown Bramble": "592804", + "Brown Derby": "492615", + "Brown Pod": "401801", + "Brown Rust": "AF593E", + "Brown Tumbleweed": "37290E", + "Bubbles": "E7FEFF", + "Buccaneer": "622F30", + "Bud": "A8AE9C", + "Buddha Gold": "C1A004", + "Buff": "F0DC82", + "Bulgarian Rose": "480607", + "Bull Shot": "864D1E", + "Bunker": "0D1117", + "Bunting": "151F4C", + "Burgundy": "900020", + "Burnham": "002E20", + "Burning Orange": "FF7034", + "Burning Sand": "D99376", + "Burnt Maroon": "420303", + "Burnt Orange": "CC5500", + "Burnt Sienna": "E97451", + "Burnt Umber": "8A3324", + "Bush": "0D2E1C", + "Buttercup": "F3AD16", + "Buttered Rum": "A1750D", + "Butterfly Bush": "624E9A", + "Buttermilk": "FFF1B5", + "Buttery White": "FFFCEA", + "Cab Sav": "4D0A18", + "Cabaret": "D94972", + "Cabbage Pont": "3F4C3A", + "Cactus": "587156", + "Cadet Blue": "A9B2C3", + "Cadillac": "B04C6A", + "Cafe Royale": "6F440C", + "Calico": "E0C095", + "California": "FE9D04", + "Calypso": "31728D", + "Camarone": "00581A", + "Camelot": "893456", + "Cameo": "D9B99B", + "Camouflage": "3C3910", + "Camouflage Green": "78866B", + "Can Can": "D591A4", + "Canary": "F3FB62", + "Candlelight": "FCD917", + "Candy Corn": "FBEC5D", + "Cannon Black": "251706", + "Cannon Pink": "894367", + "Cape Cod": "3C4443", + "Cape Honey": "FEE5AC", + "Cape Palliser": "A26645", + "Caper": "DCEDB4", + "Caramel": "FFDDAF", + "Cararra": "EEEEE8", + "Cardin Green": "01361C", + "Cardinal": "C41E3A", + "Cardinal Pink": "8C055E", + "Careys Pink": "D29EAA", + "Caribbean Green": "00CC99", + "Carissma": "EA88A8", + "Carla": "F3FFD8", + "Carmine": "960018", + "Carnaby Tan": "5C2E01", + "Carnation": "F95A61", + "Carnation Pink": "FFA6C9", + "Carousel Pink": "F9E0ED", + "Carrot Orange": "ED9121", + "Casablanca": "F8B853", + "Casal": "2F6168", + "Cascade": "8BA9A5", + "Cashmere": "E6BEA5", + "Casper": "ADBED1", + "Castro": "52001F", + "Catalina Blue": "062A78", + "Catskill White": "EEF6F7", + "Cavern Pink": "E3BEBE", + "Cedar": "3E1C14", + "Cedar Wood Finish": "711A00", + "Celadon": "ACE1AF", + "Celery": "B8C25D", + "Celeste": "D1D2CA", + "Cello": "1E385B", + "Celtic": "163222", + "Cement": "8D7662", + "Ceramic": "FCFFF9", + "Cerise": "DA3287", + "Cerise Red": "DE3163", + "Cerulean": "02A4D3", + "Cerulean Blue": "2A52BE", + "Chablis": "FFF4F3", + "Chalet Green": "516E3D", + "Chalky": "EED794", + "Chambray": "354E8C", + "Chamois": "EDDCB1", + "Champagne": "FAECCC", + "Chantilly": "F8C3DF", + "Charade": "292937", + "Chardon": "FFF3F1", + "Chardonnay": "FFCD8C", + "Charlotte": "BAEEF9", + "Charm": "D47494", + "Chartreuse": "7FFF00", + "Chartreuse Yellow": "DFFF00", + "Chateau Green": "40A860", + "Chatelle": "BDB3C7", + "Chathams Blue": "175579", + "Chelsea Cucumber": "83AA5D", + "Chelsea Gem": "9E5302", + "Chenin": "DFCD6F", + "Cherokee": "FCDA98", + "Cherry Pie": "2A0359", + "Cherrywood": "651A14", + "Cherub": "F8D9E9", + "Chestnut": "B94E48", + "Chestnut Rose": "CD5C5C", + "Chetwode Blue": "8581D9", + "Chicago": "5D5C58", + "Chiffon": "F1FFC8", + "Chilean Fire": "F77703", + "Chilean Heath": "FFFDE6", + "China Ivory": "FCFFE7", + "Chino": "CEC7A7", + "Chinook": "A8E3BD", + "Chocolate": "370202", + "Christalle": "33036B", + "Christi": "67A712", + "Christine": "E7730A", + "Chrome White": "E8F1D4", + "Cinder": "0E0E18", + "Cinderella": "FDE1DC", + "Cinnabar": "E34234", + "Cinnamon": "7B3F00", + "Cioccolato": "55280C", + "Citrine White": "FAF7D6", + "Citron": "9EA91F", + "Citrus": "A1C50A", + "Clairvoyant": "480656", + "Clam Shell": "D4B6AF", + "Claret": "7F1734", + "Classic Rose": "FBCCE7", + "Clay Ash": "BDC8B3", + "Clay Creek": "8A8360", + "Clear Day": "E9FFFD", + "Clementine": "E96E00", + "Clinker": "371D09", + "Cloud": "C7C4BF", + "Cloud Burst": "202E54", + "Cloudy": "ACA59F", + "Clover": "384910", + "Cobalt": "0047AB", + "Cocoa Bean": "481C1C", + "Cocoa Brown": "301F1E", + "Coconut Cream": "F8F7DC", + "Cod Gray": "0B0B0B", + "Coffee": "706555", + "Coffee Bean": "2A140E", + "Cognac": "9F381D", + "Cola": "3F2500", + "Cold Purple": "ABA0D9", + "Cold Turkey": "CEBABA", + "Colonial White": "FFEDBC", + "Comet": "5C5D75", + "Como": "517C66", + "Conch": "C9D9D2", + "Concord": "7C7B7A", + "Concrete": "F2F2F2", + "Confetti": "E9D75A", + "Congo Brown": "593737", + "Congress Blue": "02478E", + "Conifer": "ACDD4D", + "Contessa": "C6726B", + "Copper": "B87333", + "Copper Canyon": "7E3A15", + "Copper Rose": "996666", + "Copper Rust": "944747", + "Copperfield": "DA8A67", + "Coral": "FF7F50", + "Coral Red": "FF4040", + "Coral Reef": "C7BCA2", + "Coral Tree": "A86B6B", + "Corduroy": "606E68", + "Coriander": "C4D0B0", + "Cork": "40291D", + "Corn": "E7BF05", + "Corn Field": "F8FACD", + "Corn Harvest": "8B6B0B", + "Cornflower": "93CCEA", + "Cornflower Blue": "6495ED", + "Cornflower Lilac": "FFB0AC", + "Corvette": "FAD3A2", + "Cosmic": "76395D", + "Cosmos": "FFD8D9", + "Costa Del Sol": "615D30", + "Cotton Candy": "FFB7D5", + "Cotton Seed": "C2BDB6", + "County Green": "01371A", + "Cowboy": "4D282D", + "Crail": "B95140", + "Cranberry": "DB5079", + "Crater Brown": "462425", + "Cream": "FFFDD0", + "Cream Brulee": "FFE5A0", + "Cream Can": "F5C85C", + "Creole": "1E0F04", + "Crete": "737829", + "Crimson": "DC143C", + "Crocodile": "736D58", + "Crown of Thorns": "771F1F", + "Crowshead": "1C1208", + "Cruise": "B5ECDF", + "Crusoe": "004816", + "Crusta": "FD7B33", + "Cumin": "924321", + "Cumulus": "FDFFD5", + "Cupid": "FBBEDA", + "Curious Blue": "2596D1", + "Cutty Sark": "507672", + "Cyan / Aqua": "00FFFF", + "Cyprus": "003E40", + "Daintree": "012731", + "Dairy Cream": "F9E4BC", + "Daisy Bush": "4F2398", + "Dallas": "6E4B26", + "Dandelion": "FED85D", + "Danube": "6093D1", + "Dark Blue": "0000C8", + "Dark Burgundy": "770F05", + "Dark Ebony": "3C2005", + "Dark Fern": "0A480D", + "Dark Tan": "661010", + "Dawn": "A6A29A", + "Dawn Pink": "F3E9E5", + "De York": "7AC488", + "Deco": "D2DA97", + "Deep Blue": "220878", + "Deep Blush": "E47698", + "Deep Bronze": "4A3004", + "Deep Cerulean": "007BA7", + "Deep Cove": "051040", + "Deep Fir": "002900", + "Deep Forest Green": "182D09", + "Deep Koamaru": "1B127B", + "Deep Oak": "412010", + "Deep Sapphire": "082567", + "Deep Sea": "01826B", + "Deep Sea Green": "095859", + "Deep Teal": "003532", + "Del Rio": "B09A95", + "Dell": "396413", + "Delta": "A4A49D", + "Deluge": "7563A8", + "Denim": "1560BD", + "Derby": "FFEED8", + "Desert": "AE6020", + "Desert Sand": "EDC9AF", + "Desert Storm": "F8F8F7", + "Dew": "EAFFFE", + "Di Serria": "DB995E", + "Diesel": "130000", + "Dingley": "5D7747", + "Disco": "871550", + "Dixie": "E29418", + "Dodger Blue": "1E90FF", + "Dolly": "F9FF8B", + "Dolphin": "646077", + "Domino": "8E775E", + "Don Juan": "5D4C51", + "Donkey Brown": "A69279", + "Dorado": "6B5755", + "Double Colonial White": "EEE3AD", + "Double Pearl Lusta": "FCF4D0", + "Double Spanish White": "E6D7B9", + "Dove Gray": "6D6C6C", + "Downriver": "092256", + "Downy": "6FD0C5", + "Driftwood": "AF8751", + "Drover": "FDF7AD", + "Dull Lavender": "A899E6", + "Dune": "383533", + "Dust Storm": "E5CCC9", + "Dusty Gray": "A8989B", + "Eagle": "B6BAA4", + "Earls Green": "C9B93B", + "Early Dawn": "FFF9E6", + "East Bay": "414C7D", + "East Side": "AC91CE", + "Eastern Blue": "1E9AB0", + "Ebb": "E9E3E3", + "Ebony": "0C0B1D", + "Ebony Clay": "26283B", + "Eclipse": "311C17", + "Ecru White": "F5F3E5", + "Ecstasy": "FA7814", + "Eden": "105852", + "Edgewater": "C8E3D7", + "Edward": "A2AEAB", + "Egg Sour": "FFF4DD", + "Egg White": "FFEFC1", + "Eggplant": "614051", + "El Paso": "1E1708", + "El Salva": "8F3E33", + "Electric Lime": "CCFF00", + "Electric Violet": "8B00FF", + "Elephant": "123447", + "Elf Green": "088370", + "Elm": "1C7C7D", + "Emerald": "50C878", + "Eminence": "6C3082", + "Emperor": "514649", + "Empress": "817377", + "Endeavour": "0056A7", + "Energy Yellow": "F8DD5C", + "English Holly": "022D15", + "English Walnut": "3E2B23", + "Envy": "8BA690", + "Equator": "E1BC64", + "Espresso": "612718", + "Eternity": "211A0E", + "Eucalyptus": "278A5B", + "Eunry": "CFA39D", + "Evening Sea": "024E46", + "Everglade": "1C402E", + "Faded Jade": "427977", + "Fair Pink": "FFEFEC", + "Falcon": "7F626D", + "Fall Green": "ECEBBD", + "Falu Red": "801818", + "Fantasy": "FAF3F0", + "Fedora": "796A78", + "Feijoa": "9FDD8C", + "Fern": "63B76C", + "Fern Frond": "657220", + "Fern Green": "4F7942", + "Ferra": "704F50", + "Festival": "FBE96C", + "Feta": "F0FCEA", + "Fiery Orange": "B35213", + "Finch": "626649", + "Finlandia": "556D56", + "Finn": "692D54", + "Fiord": "405169", + "Fire": "AA4203", + "Fire Bush": "E89928", + "Firefly": "0E2A30", + "Flame Pea": "DA5B38", + "Flamenco": "FF7D07", + "Flamingo": "F2552A", + "Flax": "EEDC82", + "Flax Smoke": "7B8265", + "Flesh": "FFCBA4", + "Flint": "6F6A61", + "Flirt": "A2006D", + "Flush Mahogany": "CA3435", + "Flush Orange": "FF7F00", + "Foam": "D8FCFA", + "Fog": "D7D0FF", + "Foggy Gray": "CBCAB6", + "Forest Green": "228B22", + "Forget Me Not": "FFF1EE", + "Fountain Blue": "56B4BE", + "Frangipani": "FFDEB3", + "French Gray": "BDBDC6", + "French Lilac": "ECC7EE", + "French Pass": "BDEDFD", + "French Rose": "F64A8A", + "Fresh Eggplant": "990066", + "Friar Gray": "807E79", + "Fringy Flower": "B1E2C1", + "Froly": "F57584", + "Frost": "EDF5DD", + "Frosted Mint": "DBFFF8", + "Frostee": "E4F6E7", + "Fruit Salad": "4F9D5D", + "Fuchsia Blue": "7A58C1", + "Fuchsia Pink": "C154C1", + "Fuego": "BEDE0D", + "Fuel Yellow": "ECA927", + "Fun Blue": "1959A8", + "Fun Green": "016D39", + "Fuscous Gray": "54534D", + "Fuzzy Wuzzy Brown": "C45655", + "Gable Green": "163531", + "Gallery": "EFEFEF", + "Galliano": "DCB20C", + "Gamboge": "E49B0F", + "Geebung": "D18F1B", + "Genoa": "15736B", + "Geraldine": "FB8989", + "Geyser": "D4DFE2", + "Ghost": "C7C9D5", + "Gigas": "523C94", + "Gimblet": "B8B56A", + "Gin": "E8F2EB", + "Gin Fizz": "FFF9E2", + "Givry": "F8E4BF", + "Glacier": "80B3C4", + "Glade Green": "61845F", + "Go Ben": "726D4E", + "Goblin": "3D7D52", + "Gold": "FFD700", + "Gold Drop": "F18200", + "Gold Sand": "E6BE8A", + "Gold Tips": "DEBA13", + "Golden Bell": "E28913", + "Golden Dream": "F0D52D", + "Golden Fizz": "F5FB3D", + "Golden Glow": "FDE295", + "Golden Grass": "DAA520", + "Golden Sand": "F0DB7D", + "Golden Tainoi": "FFCC5C", + "Goldenrod": "FCD667", + "Gondola": "261414", + "Gordons Green": "0B1107", + "Gorse": "FFF14F", + "Gossamer": "069B81", + "Gossip": "D2F8B0", + "Gothic": "6D92A1", + "Governor Bay": "2F3CB3", + "Grain Brown": "E4D5B7", + "Grandis": "FFD38C", + "Granite Green": "8D8974", + "Granny Apple": "D5F6E3", + "Granny Smith": "84A0A0", + "Granny Smith Apple": "9DE093", + "Grape": "381A51", + "Graphite": "251607", + "Gravel": "4A444B", + "Gray": "808080", + "Gray Asparagus": "465945", + "Gray Chateau": "A2AAB3", + "Gray Nickel": "C3C3BD", + "Gray Nurse": "E7ECE6", + "Gray Olive": "A9A491", + "Gray Suit": "C1BECD", + "Green": "00FF00", + "Green Haze": "01A368", + "Green House": "24500F", + "Green Kelp": "25311C", + "Green Leaf": "436A0D", + "Green Mist": "CBD3B0", + "Green Pea": "1D6142", + "Green Smoke": "A4AF6E", + "Green Spring": "B8C1B1", + "Green Vogue": "032B52", + "Green Waterloo": "101405", + "Green White": "E8EBE0", + "Green Yellow": "ADFF2F", + "Grenadier": "D54600", + "Guardsman Red": "BA0101", + "Gulf Blue": "051657", + "Gulf Stream": "80B3AE", + "Gull Gray": "9DACB7", + "Gum Leaf": "B6D3BF", + "Gumbo": "7CA1A6", + "Gun Powder": "414257", + "Gunsmoke": "828685", + "Gurkha": "9A9577", + "Hacienda": "98811B", + "Hairy Heath": "6B2A14", + "Haiti": "1B1035", + "Half Baked": "85C4CC", + "Half Colonial White": "FDF6D3", + "Half Dutch White": "FEF7DE", + "Half Spanish White": "FEF4DB", + "Half and Half": "FFFEE1", + "Hampton": "E5D8AF", + "Harlequin": "3FFF00", + "Harp": "E6F2EA", + "Harvest Gold": "E0B974", + "Havelock Blue": "5590D9", + "Hawaiian Tan": "9D5616", + "Hawkes Blue": "D4E2FC", + "Heath": "541012", + "Heather": "B7C3D0", + "Heathered Gray": "B6B095", + "Heavy Metal": "2B3228", + "Heliotrope": "DF73FF", + "Hemlock": "5E5D3B", + "Hemp": "907874", + "Hibiscus": "B6316C", + "Highland": "6F8E63", + "Hillary": "ACA586", + "Himalaya": "6A5D1B", + "Hint of Green": "E6FFE9", + "Hint of Red": "FBF9F9", + "Hint of Yellow": "FAFDE4", + "Hippie Blue": "589AAF", + "Hippie Green": "53824B", + "Hippie Pink": "AE4560", + "Hit Gray": "A1ADB5", + "Hit Pink": "FFAB81", + "Hokey Pokey": "C8A528", + "Hoki": "65869F", + "Holly": "011D13", + "Hollywood Cerise": "F400A1", + "Honey Flower": "4F1C70", + "Honeysuckle": "EDFC84", + "Hopbush": "D06DA1", + "Horizon": "5A87A0", + "Horses Neck": "604913", + "Hot Cinnamon": "D2691E", + "Hot Pink": "FF69B4", + "Hot Toddy": "B38007", + "Humming Bird": "CFF9F3", + "Hunter Green": "161D10", + "Hurricane": "877C7B", + "Husk": "B7A458", + "Ice Cold": "B1F4E7", + "Iceberg": "DAF4F0", + "Illusion": "F6A4C9", + "Inch Worm": "B0E313", + "Indian Khaki": "C3B091", + "Indian Tan": "4D1E01", + "Indigo": "4F69C6", + "Indochine": "C26B03", + "International Klein Blue": "002FA7", + "International Orange": "FF4F00", + "Irish Coffee": "5F3D26", + "Iroko": "433120", + "Iron": "D4D7D9", + "Ironside Gray": "676662", + "Ironstone": "86483C", + "Island Spice": "FFFCEE", + "Ivory": "FFFFF0", + "Jacaranda": "2E0329", + "Jacarta": "3A2A6A", + "Jacko Bean": "2E1905", + "Jacksons Purple": "20208D", + "Jade": "00A86B", + "Jaffa": "EF863F", + "Jagged Ice": "C2E8E5", + "Jagger": "350E57", + "Jaguar": "080110", + "Jambalaya": "5B3013", + "Janna": "F4EBD3", + "Japanese Laurel": "0A6906", + "Japanese Maple": "780109", + "Japonica": "D87C63", + "Java": "1FC2C2", + "Jazzberry Jam": "A50B5E", + "Jelly Bean": "297B9A", + "Jet Stream": "B5D2CE", + "Jewel": "126B40", + "Jon": "3B1F1F", + "Jonquil": "EEFF9A", + "Jordy Blue": "8AB9F1", + "Judge Gray": "544333", + "Jumbo": "7C7B82", + "Jungle Green": "29AB87", + "Jungle Mist": "B4CFD3", + "Juniper": "6D9292", + "Just Right": "ECCDB9", + "Kabul": "5E483E", + "Kaitoke Green": "004620", + "Kangaroo": "C6C8BD", + "Karaka": "1E1609", + "Karry": "FFEAD4", + "Kashmir Blue": "507096", + "Kelp": "454936", + "Kenyan Copper": "7C1C05", + "Keppel": "3AB09E", + "Key Lime Pie": "BFC921", + "Khaki": "F0E68C", + "Kidnapper": "E1EAD4", + "Kilamanjaro": "240C02", + "Killarney": "3A6A47", + "Kimberly": "736C9F", + "Kingfisher Daisy": "3E0480", + "Kobi": "E79FC4", + "Kokoda": "6E6D57", + "Korma": "8F4B0E", + "Koromiko": "FFBD5F", + "Kournikova": "FFE772", + "Kumera": "886221", + "La Palma": "368716", + "La Rioja": "B3C110", + "Las Palmas": "C6E610", + "Laser": "C8B568", + "Laser Lemon": "FFFF66", + "Laurel": "749378", + "Lavender": "B57EDC", + "Lavender Gray": "BDBBD7", + "Lavender Magenta": "EE82EE", + "Lavender Pink": "FBAED2", + "Lavender Purple": "967BB6", + "Lavender Rose": "FBA0E3", + "Lavender blush": "FFF0F5", + "Leather": "967059", + "Lemon": "FDE910", + "Lemon Chiffon": "FFFACD", + "Lemon Ginger": "AC9E22", + "Lemon Grass": "9B9E8F", + "Light Apricot": "FDD5B1", + "Light Orchid": "E29CD2", + "Light Wisteria": "C9A0DC", + "Lightning Yellow": "FCC01E", + "Lilac": "C8A2C8", + "Lilac Bush": "9874D3", + "Lily": "C8AABF", + "Lily White": "E7F8FF", + "Lima": "76BD17", + "Lime": "BFFF00", + "Limeade": "6F9D02", + "Limed Ash": "747D63", + "Limed Oak": "AC8A56", + "Limed Spruce": "394851", + "Linen": "FAF0E6", + "Link Water": "D9E4F5", + "Lipstick": "AB0563", + "Lisbon Brown": "423921", + "Livid Brown": "4D282E", + "Loafer": "EEF4DE", + "Loblolly": "BDC9CE", + "Lochinvar": "2C8C84", + "Lochmara": "007EC7", + "Locust": "A8AF8E", + "Log Cabin": "242A1D", + "Logan": "AAA9CD", + "Lola": "DFCFDB", + "London Hue": "BEA6C3", + "Lonestar": "6D0101", + "Lotus": "863C3C", + "Loulou": "460B41", + "Lucky": "AF9F1C", + "Lucky Point": "1A1A68", + "Lunar Green": "3C493A", + "Luxor Gold": "A7882C", + "Lynch": "697E9A", + "Mabel": "D9F7FF", + "Macaroni and Cheese": "FFB97B", + "Madang": "B7F0BE", + "Madison": "09255D", + "Madras": "3F3002", + "Magenta / Fuchsia": "FF00FF", + "Magic Mint": "AAF0D1", + "Magnolia": "F8F4FF", + "Mahogany": "4E0606", + "Mai Tai": "B06608", + "Maize": "F5D5A0", + "Makara": "897D6D", + "Mako": "444954", + "Malachite": "0BDA51", + "Malibu": "7DC8F7", + "Mallard": "233418", + "Malta": "BDB2A1", + "Mamba": "8E8190", + "Manatee": "8D90A1", + "Mandalay": "AD781B", + "Mandy": "E25465", + "Mandys Pink": "F2C3B2", + "Mango Tango": "E77200", + "Manhattan": "F5C999", + "Mantis": "74C365", + "Mantle": "8B9C90", + "Manz": "EEEF78", + "Mardi Gras": "350036", + "Marigold": "B98D28", + "Marigold Yellow": "FBE870", + "Mariner": "286ACD", + "Maroon": "800000", + "Maroon Flush": "C32148", + "Maroon Oak": "520C17", + "Marshland": "0B0F08", + "Martini": "AFA09E", + "Martinique": "363050", + "Marzipan": "F8DB9D", + "Masala": "403B38", + "Matisse": "1B659D", + "Matrix": "B05D54", + "Matterhorn": "4E3B41", + "Mauve": "E0B0FF", + "Mauvelous": "F091A9", + "Maverick": "D8C2D5", + "Medium Carmine": "AF4035", + "Medium Purple": "9370DB", + "Medium Red Violet": "BB3385", + "Melanie": "E4C2D5", + "Melanzane": "300529", + "Melon": "FEBAAD", + "Melrose": "C7C1FF", + "Mercury": "E5E5E5", + "Merino": "F6F0E6", + "Merlin": "413C37", + "Merlot": "831923", + "Metallic Bronze": "49371B", + "Metallic Copper": "71291D", + "Meteor": "D07D12", + "Meteorite": "3C1F76", + "Mexican Red": "A72525", + "Mid Gray": "5F5F6E", + "Midnight": "011635", + "Midnight Blue": "003366", + "Midnight Moss": "041004", + "Mikado": "2D2510", + "Milan": "FAFFA4", + "Milano Red": "B81104", + "Milk Punch": "FFF6D4", + "Millbrook": "594433", + "Mimosa": "F8FDD3", + "Mindaro": "E3F988", + "Mine Shaft": "323232", + "Mineral Green": "3F5D53", + "Ming": "36747D", + "Minsk": "3F307F", + "Mint Green": "98FF98", + "Mint Julep": "F1EEC1", + "Mint Tulip": "C4F4EB", + "Mirage": "161928", + "Mischka": "D1D2DD", + "Mist Gray": "C4C4BC", + "Mobster": "7F7589", + "Moccaccino": "6E1D14", + "Mocha": "782D19", + "Mojo": "C04737", + "Mona Lisa": "FFA194", + "Monarch": "8B0723", + "Mondo": "4A3C30", + "Mongoose": "B5A27F", + "Monsoon": "8A8389", + "Monte Carlo": "83D0C6", + "Monza": "C7031E", + "Moody Blue": "7F76D3", + "Moon Glow": "FCFEDA", + "Moon Mist": "DCDDCC", + "Moon Raker": "D6CEF6", + "Morning Glory": "9EDEE0", + "Morocco Brown": "441D00", + "Mortar": "504351", + "Mosque": "036A6E", + "Moss Green": "ADDFAD", + "Mountain Meadow": "1AB385", + "Mountain Mist": "959396", + "Mountbatten Pink": "997A8D", + "Muddy Waters": "B78E5C", + "Muesli": "AA8B5B", + "Mulberry": "C54B8C", + "Mulberry Wood": "5C0536", + "Mule Fawn": "8C472F", + "Mulled Wine": "4E4562", + "Mustard": "FFDB58", + "My Pink": "D69188", + "My Sin": "FFB31F", + "Mystic": "E2EBED", + "Nandor": "4B5D52", + "Napa": "ACA494", + "Narvik": "EDF9F1", + "Natural Gray": "8B8680", + "Navajo White": "FFDEAD", + "Navy Blue": "000080", + "Nebula": "CBDBD6", + "Negroni": "FFE2C5", + "Neon Carrot": "FF9933", + "Nepal": "8EABC1", + "Neptune": "7CB7BB", + "Nero": "140600", + "Nevada": "646E75", + "New Orleans": "F3D69D", + "New York Pink": "D7837F", + "Niagara": "06A189", + "Night Rider": "1F120F", + "Night Shadz": "AA375A", + "Nile Blue": "193751", + "Nobel": "B7B1B1", + "Nomad": "BAB1A2", + "Norway": "A8BD9F", + "Nugget": "C59922", + "Nutmeg": "81422C", + "Nutmeg Wood Finish": "683600", + "Oasis": "FEEFCE", + "Observatory": "02866F", + "Ocean Green": "41AA78", + "Ochre": "CC7722", + "Off Green": "E6F8F3", + "Off Yellow": "FEF9E3", + "Oil": "281E15", + "Old Brick": "901E1E", + "Old Copper": "724A2F", + "Old Gold": "CFB53B", + "Old Lace": "FDF5E6", + "Old Lavender": "796878", + "Old Rose": "C08081", + "Olive": "808000", + "Olive Drab": "6B8E23", + "Olive Green": "B5B35C", + "Olive Haze": "8B8470", + "Olivetone": "716E10", + "Olivine": "9AB973", + "Onahau": "CDF4FF", + "Onion": "2F270E", + "Opal": "A9C6C2", + "Opium": "8E6F70", + "Oracle": "377475", + "Orange": "FF681F", + "Orange Peel": "FFA000", + "Orange Roughy": "C45719", + "Orange White": "FEFCED", + "Orchid": "DA70D6", + "Orchid White": "FFFDF3", + "Oregon": "9B4703", + "Orient": "015E85", + "Oriental Pink": "C69191", + "Orinoco": "F3FBD4", + "Oslo Gray": "878D91", + "Ottoman": "E9F8ED", + "Outer Space": "2D383A", + "Outrageous Orange": "FF6037", + "Oxford Blue": "384555", + "Oxley": "779E86", + "Oyster Bay": "DAFAFF", + "Oyster Pink": "E9CECD", + "Paarl": "A65529", + "Pablo": "776F61", + "Pacific Blue": "009DC4", + "Pacifika": "778120", + "Paco": "411F10", + "Padua": "ADE6C4", + "Pale Canary": "FFFF99", + "Pale Leaf": "C0D3B9", + "Pale Oyster": "988D77", + "Pale Prim": "FDFEB8", + "Pale Rose": "FFE1F2", + "Pale Sky": "6E7783", + "Pale Slate": "C3BFC1", + "Palm Green": "09230F", + "Palm Leaf": "19330E", + "Pampas": "F4F2EE", + "Panache": "EAF6EE", + "Pancho": "EDCDAB", + "Papaya Whip": "FFEFD5", + "Paprika": "8D0226", + "Paradiso": "317D82", + "Parchment": "F1E9D2", + "Paris Daisy": "FFF46E", + "Paris M": "26056A", + "Paris White": "CADCD4", + "Parsley": "134F19", + "Pastel Green": "77DD77", + "Pastel Pink": "FFD1DC", + "Patina": "639A8F", + "Pattens Blue": "DEF5FF", + "Paua": "260368", + "Pavlova": "D7C498", + "Peach": "FFE5B4", + "Peach Cream": "FFF0DB", + "Peach Orange": "FFCC99", + "Peach Schnapps": "FFDCD6", + "Peach Yellow": "FADFAD", + "Peanut": "782F16", + "Pear": "D1E231", + "Pearl Bush": "E8E0D5", + "Pearl Lusta": "FCF4DC", + "Peat": "716B56", + "Pelorous": "3EABBF", + "Peppermint": "E3F5E1", + "Perano": "A9BEF2", + "Perfume": "D0BEF8", + "Periglacial Blue": "E1E6D6", + "Periwinkle": "CCCCFF", + "Periwinkle Gray": "C3CDE6", + "Persian Blue": "1C39BB", + "Persian Green": "00A693", + "Persian Indigo": "32127A", + "Persian Pink": "F77FBE", + "Persian Plum": "701C1C", + "Persian Red": "CC3333", + "Persian Rose": "FE28A2", + "Persimmon": "FF6B53", + "Peru Tan": "7F3A02", + "Pesto": "7C7631", + "Petite Orchid": "DB9690", + "Pewter": "96A8A1", + "Pharlap": "A3807B", + "Picasso": "FFF39D", + "Pickled Bean": "6E4826", + "Pickled Bluewood": "314459", + "Picton Blue": "45B1E8", + "Pig Pink": "FDD7E4", + "Pigeon Post": "AFBDD9", + "Pigment Indigo": "4B0082", + "Pine Cone": "6D5E54", + "Pine Glade": "C7CD90", + "Pine Green": "01796F", + "Pine Tree": "171F04", + "Pink": "FFC0CB", + "Pink Flamingo": "FF66FF", + "Pink Flare": "E1C0C8", + "Pink Lace": "FFDDF4", + "Pink Lady": "FFF1D8", + "Pink Salmon": "FF91A4", + "Pink Swan": "BEB5B7", + "Piper": "C96323", + "Pipi": "FEF4CC", + "Pippin": "FFE1DF", + "Pirate Gold": "BA7F03", + "Pistachio": "9DC209", + "Pixie Green": "C0D8B6", + "Pizazz": "FF9000", + "Pizza": "C99415", + "Plantation": "27504B", + "Plum": "843179", + "Pohutukawa": "8F021C", + "Polar": "E5F9F6", + "Polo Blue": "8DA8CC", + "Pomegranate": "F34723", + "Pompadour": "660045", + "Porcelain": "EFF2F3", + "Porsche": "EAAE69", + "Port Gore": "251F4F", + "Portafino": "FFFFB4", + "Portage": "8B9FEE", + "Portica": "F9E663", + "Pot Pourri": "F5E7E2", + "Potters Clay": "8C5738", + "Powder Ash": "BCC9C2", + "Powder Blue": "B0E0E6", + "Prairie Sand": "9A3820", + "Prelude": "D0C0E5", + "Prim": "F0E2EC", + "Primrose": "EDEA99", + "Provincial Pink": "FEF5F1", + "Prussian Blue": "003153", + "Puce": "CC8899", + "Pueblo": "7D2C14", + "Puerto Rico": "3FC1AA", + "Pumice": "C2CAC4", + "Pumpkin": "FF7518", + "Pumpkin Skin": "B1610B", + "Punch": "DC4333", + "Punga": "4D3D14", + "Purple": "660099", + "Purple Heart": "652DC1", + "Purple Mountain's Majesty": "9678B6", + "Purple Pizzazz": "FF00CC", + "Putty": "E7CD8C", + "Quarter Pearl Lusta": "FFFDF4", + "Quarter Spanish White": "F7F2E1", + "Quicksand": "BD978E", + "Quill Gray": "D6D6D1", + "Quincy": "623F2D", + "Racing Green": "0C1911", + "Radical Red": "FF355E", + "Raffia": "EADAB8", + "Rainee": "B9C8AC", + "Rajah": "F7B668", + "Rangitoto": "2E3222", + "Rangoon Green": "1C1E13", + "Raven": "727B89", + "Raw Sienna": "D27D46", + "Raw Umber": "734A12", + "Razzle Dazzle Rose": "FF33CC", + "Razzmatazz": "E30B5C", + "Rebel": "3C1206", + "Red": "FF0000", + "Red Beech": "7B3801", + "Red Berry": "8E0000", + "Red Damask": "DA6A41", + "Red Devil": "860111", + "Red Orange": "FF3F34", + "Red Oxide": "6E0902", + "Red Ribbon": "ED0A3F", + "Red Robin": "80341F", + "Red Stage": "D05F04", + "Red Violet": "C71585", + "Redwood": "5D1E0F", + "Reef": "C9FFA2", + "Reef Gold": "9F821C", + "Regal Blue": "013F6A", + "Regent Gray": "86949F", + "Regent St Blue": "AAD6E6", + "Remy": "FEEBF3", + "Reno Sand": "A86515", + "Resolution Blue": "002387", + "Revolver": "2C1632", + "Rhino": "2E3F62", + "Rice Cake": "FFFEF0", + "Rice Flower": "EEFFE2", + "Rich Gold": "A85307", + "Rio Grande": "BBD009", + "Ripe Lemon": "F4D81C", + "Ripe Plum": "410056", + "Riptide": "8BE6D8", + "River Bed": "434C59", + "Rob Roy": "EAC674", + "Robin's Egg Blue": "00CCCC", + "Rock": "4D3833", + "Rock Blue": "9EB1CD", + "Rock Spray": "BA450C", + "Rodeo Dust": "C9B29B", + "Rolling Stone": "747D83", + "Roman": "DE6360", + "Roman Coffee": "795D4C", + "Romance": "FFFEFD", + "Romantic": "FFD2B7", + "Ronchi": "ECC54E", + "Roof Terracotta": "A62F20", + "Rope": "8E4D1E", + "Rose": "FF007F", + "Rose Bud": "FBB2A3", + "Rose Bud Cherry": "800B47", + "Rose Fog": "E7BCB4", + "Rose White": "FFF6F5", + "Rose of Sharon": "BF5500", + "Rosewood": "65000B", + "Roti": "C6A84B", + "Rouge": "A23B6C", + "Royal Blue": "4169E1", + "Royal Heath": "AB3472", + "Royal Purple": "6B3FA0", + "Rum": "796989", + "Rum Swizzle": "F9F8E4", + "Russet": "80461B", + "Russett": "755A57", + "Rust": "B7410E", + "Rustic Red": "480404", + "Rusty Nail": "86560A", + "Saddle": "4C3024", + "Saddle Brown": "583401", + "Saffron": "F4C430", + "Saffron Mango": "F9BF58", + "Sage": "9EA587", + "Sahara": "B7A214", + "Sahara Sand": "F1E788", + "Sail": "B8E0F9", + "Salem": "097F4B", + "Salmon": "FF8C69", + "Salomie": "FEDB8D", + "Salt Box": "685E6E", + "Saltpan": "F1F7F2", + "Sambuca": "3A2010", + "San Felix": "0B6207", + "San Juan": "304B6A", + "San Marino": "456CAC", + "Sand Dune": "826F65", + "Sandal": "AA8D6F", + "Sandrift": "AB917A", + "Sandstone": "796D62", + "Sandwisp": "F5E7A2", + "Sandy Beach": "FFEAC8", + "Sandy brown": "F4A460", + "Sangria": "92000A", + "Sanguine Brown": "8D3D38", + "Santa Fe": "B16D52", + "Santas Gray": "9FA0B1", + "Sapling": "DED4A4", + "Sapphire": "2F519E", + "Saratoga": "555B10", + "Satin Linen": "E6E4D4", + "Sauvignon": "FFF5F3", + "Sazerac": "FFF4E0", + "Scampi": "675FA6", + "Scandal": "CFFAF4", + "Scarlet": "FF2400", + "Scarlet Gum": "431560", + "Scarlett": "950015", + "Scarpa Flow": "585562", + "Schist": "A9B497", + "School bus Yellow": "FFD800", + "Schooner": "8B847E", + "Science Blue": "0066CC", + "Scooter": "2EBFD4", + "Scorpion": "695F62", + "Scotch Mist": "FFFBDC", + "Screamin' Green": "66FF66", + "Sea Buckthorn": "FBA129", + "Sea Green": "2E8B57", + "Sea Mist": "C5DBCA", + "Sea Nymph": "78A39C", + "Sea Pink": "ED989E", + "Seagull": "80CCEA", + "Seance": "731E8F", + "Seashell": "F1F1F1", + "Seashell Peach": "FFF5EE", + "Seaweed": "1B2F11", + "Selago": "F0EEFD", + "Selective Yellow": "FFBA00", + "Sepia": "704214", + "Sepia Black": "2B0202", + "Sepia Skin": "9E5B40", + "Serenade": "FFF4E8", + "Shadow": "837050", + "Shadow Green": "9AC2B8", + "Shady Lady": "AAA5A9", + "Shakespeare": "4EABD1", + "Shalimar": "FBFFBA", + "Shamrock": "33CC99", + "Shark": "25272C", + "Sherpa Blue": "004950", + "Sherwood Green": "02402C", + "Shilo": "E8B9B3", + "Shingle Fawn": "6B4E31", + "Ship Cove": "788BBA", + "Ship Gray": "3E3A44", + "Shiraz": "B20931", + "Shocking": "E292C0", + "Shocking Pink": "FC0FC0", + "Shuttle Gray": "5F6672", + "Siam": "646A54", + "Sidecar": "F3E7BB", + "Silk": "BDB1A8", + "Silver": "C0C0C0", + "Silver Chalice": "ACACAC", + "Silver Rust": "C9C0BB", + "Silver Sand": "BFC1C2", + "Silver Tree": "66B58F", + "Sinbad": "9FD7D3", + "Siren": "7A013A", + "Sirocco": "718080", + "Sisal": "D3CBBA", + "Skeptic": "CAE6DA", + "Sky Blue": "76D7EA", + "Slate Gray": "708090", + "Smalt": "003399", + "Smalt Blue": "51808F", + "Smoky": "605B73", + "Snow Drift": "F7FAF7", + "Snow Flurry": "E4FFD1", + "Snowy Mint": "D6FFDB", + "Snuff": "E2D8ED", + "Soapstone": "FFFBF9", + "Soft Amber": "D1C6B4", + "Soft Peach": "F5EDEF", + "Solid Pink": "893843", + "Solitaire": "FEF8E2", + "Solitude": "EAF6FF", + "Sorbus": "FD7C07", + "Sorrell Brown": "CEB98F", + "Soya Bean": "6A6051", + "Spanish Green": "819885", + "Spectra": "2F5A57", + "Spice": "6A442E", + "Spicy Mix": "885342", + "Spicy Mustard": "74640D", + "Spicy Pink": "816E71", + "Spindle": "B6D1EA", + "Spray": "79DEEC", + "Spring Green": "00FF7F", + "Spring Leaves": "578363", + "Spring Rain": "ACCBB1", + "Spring Sun": "F6FFDC", + "Spring Wood": "F8F6F1", + "Sprout": "C1D7B0", + "Spun Pearl": "AAABB7", + "Squirrel": "8F8176", + "St Tropaz": "2D569B", + "Stack": "8A8F8A", + "Star Dust": "9F9F9C", + "Stark White": "E5D7BD", + "Starship": "ECF245", + "Steel Blue": "4682B4", + "Steel Gray": "262335", + "Stiletto": "9C3336", + "Stonewall": "928573", + "Storm Dust": "646463", + "Storm Gray": "717486", + "Stratos": "000741", + "Straw": "D4BF8D", + "Strikemaster": "956387", + "Stromboli": "325D52", + "Studio": "714AB2", + "Submarine": "BAC7C9", + "Sugar Cane": "F9FFF6", + "Sulu": "C1F07C", + "Summer Green": "96BBAB", + "Sun": "FBAC13", + "Sundance": "C9B35B", + "Sundown": "FFB1B3", + "Sunflower": "E4D422", + "Sunglo": "E16865", + "Sunglow": "FFCC33", + "Sunset Orange": "FE4C40", + "Sunshade": "FF9E2C", + "Supernova": "FFC901", + "Surf": "BBD7C1", + "Surf Crest": "CFE5D2", + "Surfie Green": "0C7A79", + "Sushi": "87AB39", + "Suva Gray": "888387", + "Swamp": "001B1C", + "Swamp Green": "ACB78E", + "Swans Down": "DCF0EA", + "Sweet Corn": "FBEA8C", + "Sweet Pink": "FD9FA2", + "Swirl": "D3CDC5", + "Swiss Coffee": "DDD6D5", + "Sycamore": "908D39", + "Tabasco": "A02712", + "Tacao": "EDB381", + "Tacha": "D6C562", + "Tahiti Gold": "E97C07", + "Tahuna Sands": "EEF0C8", + "Tall Poppy": "B32D29", + "Tallow": "A8A589", + "Tamarillo": "991613", + "Tamarind": "341515", + "Tan": "D2B48C", + "Tan Hide": "FA9D5A", + "Tana": "D9DCC1", + "Tangaroa": "03163C", + "Tangerine": "F28500", + "Tango": "ED7A1C", + "Tapa": "7B7874", + "Tapestry": "B05E81", + "Tara": "E1F6E8", + "Tarawera": "073A50", + "Tasman": "CFDCCF", + "Taupe": "483C32", + "Taupe Gray": "B3AF95", + "Tawny Port": "692545", + "Te Papa Green": "1E433C", + "Tea": "C1BAB0", + "Tea Green": "D0F0C0", + "Teak": "B19461", + "Teal": "008080", + "Teal Blue": "044259", + "Temptress": "3B000B", + "Tenn": "CD5700", + "Tequila": "FFE6C7", + "Terracotta": "E2725B", + "Texas": "F8F99C", + "Texas Rose": "FFB555", + "Thatch": "B69D98", + "Thatch Green": "403D19", + "Thistle": "D8BFD8", + "Thistle Green": "CCCAA8", + "Thunder": "33292F", + "Thunderbird": "C02B18", + "Tia Maria": "C1440E", + "Tiara": "C3D1D1", + "Tiber": "063537", + "Tickle Me Pink": "FC80A5", + "Tidal": "F1FFAD", + "Tide": "BFB8B0", + "Timber Green": "16322C", + "Timberwolf": "D9D6CF", + "Titan White": "F0EEFF", + "Toast": "9A6E61", + "Tobacco Brown": "715D47", + "Toledo": "3A0020", + "Tolopea": "1B0245", + "Tom Thumb": "3F583B", + "Tonys Pink": "E79F8C", + "Topaz": "7C778A", + "Torch Red": "FD0E35", + "Torea Bay": "0F2D9E", + "Tory Blue": "1450AA", + "Tosca": "8D3F3F", + "Totem Pole": "991B07", + "Tower Gray": "A9BDBF", + "Tradewind": "5FB3AC", + "Tranquil": "E6FFFF", + "Travertine": "FFFDE8", + "Tree Poppy": "FC9C1D", + "Treehouse": "3B2820", + "Trendy Green": "7C881A", + "Trendy Pink": "8C6495", + "Trinidad": "E64E03", + "Tropical Blue": "C3DDF9", + "Tropical Rain Forest": "00755E", + "Trout": "4A4E5A", + "True V": "8A73D6", + "Tuatara": "363534", + "Tuft Bush": "FFDDCD", + "Tulip Tree": "EAB33B", + "Tumbleweed": "DEA681", + "Tuna": "353542", + "Tundora": "4A4244", + "Turbo": "FAE600", + "Turkish Rose": "B57281", + "Turmeric": "CABB48", + "Turquoise": "30D5C8", + "Turquoise Blue": "6CDAE7", + "Turtle Green": "2A380B", + "Tuscany": "BD5E2E", + "Tusk": "EEF3C3", + "Tussock": "C5994B", + "Tutu": "FFF1F9", + "Twilight": "E4CFDE", + "Twilight Blue": "EEFDFF", + "Twine": "C2955D", + "Tyrian Purple": "66023C", + "Ultramarine": "120A8F", + "Valencia": "D84437", + "Valentino": "350E42", + "Valhalla": "2B194F", + "Van Cleef": "49170C", + "Vanilla": "D1BEA8", + "Vanilla Ice": "F3D9DF", + "Varden": "FFF6DF", + "Venetian Red": "72010F", + "Venice Blue": "055989", + "Venus": "928590", + "Verdigris": "5D5E37", + "Verdun Green": "495400", + "Vermilion": "FF4D00", + "Vesuvius": "B14A0B", + "Victoria": "534491", + "Vida Loca": "549019", + "Viking": "64CCDB", + "Vin Rouge": "983D61", + "Viola": "CB8FA9", + "Violent Violet": "290C5E", + "Violet": "240A40", + "Violet Eggplant": "991199", + "Violet Red": "F7468A", + "Viridian": "40826D", + "Viridian Green": "678975", + "Vis Vis": "FFEFA1", + "Vista Blue": "8FD6B4", + "Vista White": "FCF8F7", + "Vivid Tangerine": "FF9980", + "Vivid Violet": "803790", + "Voodoo": "533455", + "Vulcan": "10121D", + "Wafer": "DECBC6", + "Waikawa Gray": "5A6E9C", + "Waiouru": "363C0D", + "Walnut": "773F1A", + "Wasabi": "788A25", + "Water Leaf": "A1E9DE", + "Watercourse": "056F57", + "Waterloo ": "7B7C94", + "Wattle": "DCD747", + "Watusi": "FFDDCF", + "Wax Flower": "FFC0A8", + "We Peep": "F7DBE6", + "Web Orange": "FFA500", + "Wedgewood": "4E7F9E", + "Well Read": "B43332", + "West Coast": "625119", + "West Side": "FF910F", + "Westar": "DCD9D2", + "Wewak": "F19BAB", + "Wheat": "F5DEB3", + "Wheatfield": "F3EDCF", + "Whiskey": "D59A6F", + "Whisper": "F7F5FA", + "White": "FFFFFF", + "White Ice": "DDF9F1", + "White Lilac": "F8F7FC", + "White Linen": "F8F0E8", + "White Pointer": "FEF8FF", + "White Rock": "EAE8D4", + "Wild Blue Yonder": "7A89B8", + "Wild Rice": "ECE090", + "Wild Sand": "F4F4F4", + "Wild Strawberry": "FF3399", + "Wild Watermelon": "FD5B78", + "Wild Willow": "B9C46A", + "William": "3A686C", + "Willow Brook": "DFECDA", + "Willow Grove": "65745D", + "Windsor": "3C0878", + "Wine Berry": "591D35", + "Winter Hazel": "D5D195", + "Wisp Pink": "FEF4F8", + "Wisteria": "9771B5", + "Wistful": "A4A6D3", + "Witch Haze": "FFFC99", + "Wood Bark": "261105", + "Woodland": "4D5328", + "Woodrush": "302A0F", + "Woodsmoke": "0C0D0F", + "Woody Brown": "483131", + "Xanadu": "738678", + "Yellow": "FFFF00", + "Yellow Green": "C5E17A", + "Yellow Metal": "716338", + "Yellow Orange": "FFAE42", + "Yellow Sea": "FEA904", + "Your Pink": "FFC3C0", + "Yukon Gold": "7B6608", + "Yuma": "CEC291", + "Zambezi": "685558", + "Zanah": "DAECD6", + "Zest": "E5841B", + "Zeus": "292319", + "Ziggurat": "BFDBE2", + "Zinnwaldite": "EBC2AF", + "Zircon": "F4F8FF", + "Zombie": "E4D69B", + "Zorba": "A59B91", + "Zuccini": "044022", + "Zumthor": "EDF6FF" +} |