text:
# schemes from https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/_cm.py

loadcolorscheme(:bone, [
	RGB{Float64}(0.0,0.0,0.0),
	RGB{Float64}(0.01,0.01,0.01),
	RGB{Float64}(0.02,0.02,0.02),
	RGB{Float64}(0.03,0.03,0.03),
	RGB{Float64}(0.04,0.04,0.04),
	RGB{Float64}(0.05,0.05,0.05),
	RGB{Float64}(0.06,0.06,0.06),
	RGB{Float64}(0.07,0.07,0.07),
	RGB{Float64}(0.08,0.08,0.08),
	RGB{Float64}(0.09,0.09,0.09),
	RGB{Float64}(0.1,0.1,0.1),
	RGB{Float64}(0.11,0.11,0.11),
	RGB{Float64}(0.12,0.12,0.12),
	RGB{Float64}(0.13,0.13,0.13),
	RGB{Float64}(0.14,0.14,0.14),
	RGB{Float64}(0.15,0.15,0.15),
	RGB{Float64}(0.16,0.16,0.16),
	RGB{Float64}(0.17,0.17,0.17),
	RGB{Float64}(0.18,0.18,0.18),
	RGB{Float64}(0.19,0.19,0.19),
	RGB{Float64}(0.2,0.2,0.2),
	RGB{Float64}(0.21,0.21,0.21),
	RGB{Float64}(0.22,0.22,0.22),
	RGB{Float64}(0.23,0.23,0.23),
	RGB{Float64}(0.24,0.24,0.24),
	RGB{Float64}(0.25,0.25,0.25),
	RGB{Float64}(0.26,0.26,0.26),
	RGB{Float64}(0.27,0.27,0.27),
	RGB{Float64}(0.28,0.28,0.28),
	RGB{Float64}(0.29,0.29,0.29),
	RGB{Float64}(0.3,0.3,0.3),
	RGB{Float64}(0.31,0.31,0.31),
	RGB{Float64}(0.32,0.32,0.32),
	RGB{Float64}(0.33,0.33,0.33),
	RGB{Float64}(0.34,0.34,0.34),
	RGB{Float64}(0.35,0.35,0.35),
	RGB{Float64}(0.36,0.36,0.36),
	RGB{Float64}(0.37,0.37,0.37),
	RGB{Float64}(0.38,0.38,0.38),
	RGB{Float64}(0.39,0.39,0.39),
	RGB{Float64}(0.4,0.4,0.4),
	RGB{Float64}(0.41,0.41,0.41),
	RGB{Float64}(0.42,0.42,0.42),
	RGB{Float64}(0.43,0.43,0.43),
	RGB{Float64}(0.44,0.44,0.44),
	RGB{Float64}(0.45,0.45,0.45),
	RGB{Float64}(0.46,0.46,0.46),
	RGB{Float64}(0.47,0.47,0.47),
	RGB{Float64}(0.48,0.48,0.48),
	RGB{Float64}(0.49,0.49,0.49),
	RGB{Float64}(0.5,0.5,0.5),
	RGB{Float64}(0.51,0.51,0.51),
	RGB{Float64}(0.52,0.52,0.52),
	RGB{Float64}(0.53,0.53,0.53),
	RGB{Float64}(0.54,0.54,0.54),
	RGB{Float64}(0.55,0.55,0.55),
	RGB{Float64}(0.56,0.56,0.56),
	RGB{Float64}(0.57,0.57,0.57),
	RGB{Float64}(0.58,0.58,0.58),
	RGB{Float64}(0.59,0.59,0.59),
	RGB{Float64}(0.6,0.6,0.6),
	RGB{Float64}(0.61,0.61,0.61),
	RGB{Float64}(0.62,0.62,0.62),
	RGB{Float64}(0.63,0.63,0.63),
	RGB{Float64}(0.64,0.64,0.64),
	RGB{Float64}(0.65,0.65,0.65),
	RGB{Float64}(0.66,0.66,0.66),
	RGB{Float64}(0.67,0.67,0.67),
	RGB{Float64}(0.68,0.68,0.68),
	RGB{Float64}(0.69,0.69,0.69),
	RGB{Float64}(0.7,0.7,0.7),
	RGB{Float64}(0.71,0.71,0.71),
	RGB{Float64}(0.72,0.72,0.72),
	RGB{Float64}(0.73,0.73,0.73),
	RGB{Float64}(0.74,0.74,0.74),
	RGB{Float64}(0.75,0.75,0.75),
	RGB{Float64}(0.76,0.76,0.76),
	RGB{Float64}(0.77,0.77,0.77),
	RGB{Float64}(0.78,0.78,0.78),
	RGB{Float64}(0.79,0.79,0.79),
	RGB{Float64}(0.8,0.8,0.8),
	RGB{Float64}(0.81,0.81,0.81),
	RGB{Float64}(0.82,0.82,0.82),
	RGB{Float64}(0.83,0.83,0.83),
	RGB{Float64}(0.84,0.84,0.84),
	RGB{Float64}(0.85,0.85,0.85),
	RGB{Float64}(0.86,0.86,0.86),
	RGB{Float64}(0.87,0.87,0.87),
	RGB{Float64}(0.88,0.88,0.88),
	RGB{Float64}(0.89,0.89,0.89),
	RGB{Float64}(0.9,0.9,0.9),
	RGB{Float64}(0.91,0.91,0.91),
	RGB{Float64}(0.92,0.92,0.92),
	RGB{Float64}(0.93,0.93,0.93),
	RGB{Float64}(0.94,0.94,0.94),
	RGB{Float64}(0.95,0.95,0.95),
	RGB{Float64}(0.96,0.96,0.96),
	RGB{Float64}(0.97,0.97,0.97),
	RGB{Float64}(0.98,0.98,0.98),
	RGB{Float64}(0.99,0.99,0.99),
	RGB{Float64}(1.0,1.0,1.0)], "matplotlib", "sampled color schemes, sequential increasing black-white color map with a tinge of blue, to emulate X-ray film")

loadcolorscheme(:binary, [
	RGB{Float64}(1.0,1.0,1.0),
	RGB{Float64}(0.99,0.99,0.99),
	RGB{Float64}(0.98,0.98,0.98),
	RGB{Float64}(0.97,0.97,0.97),
	RGB{Float64}(0.96,0.96,0.96),
	RGB{Float64}(0.95,0.95,0.95),
	RGB{Float64}(0.94,0.94,0.94),
	RGB{Float64}(0.93,0.93,0.93),
	RGB{Float64}(0.92,0.92,0.92),
	RGB{Float64}(0.91,0.91,0.91),
	RGB{Float64}(0.9,0.9,0.9),
	RGB{Float64}(0.89,0.89,0.89),
	RGB{Float64}(0.88,0.88,0.88),
	RGB{Float64}(0.87,0.87,0.87),
	RGB{Float64}(0.86,0.86,0.86),
	RGB{Float64}(0.85,0.85,0.85),
	RGB{Float64}(0.84,0.84,0.84),
	RGB{Float64}(0.83,0.83,0.83),
	RGB{Float64}(0.82,0.82,0.82),
	RGB{Float64}(0.81,0.81,0.81),
	RGB{Float64}(0.8,0.8,0.8),
	RGB{Float64}(0.79,0.79,0.79),
	RGB{Float64}(0.78,0.78,0.78),
	RGB{Float64}(0.77,0.77,0.77),
	RGB{Float64}(0.76,0.76,0.76),
	RGB{Float64}(0.75,0.75,0.75),
	RGB{Float64}(0.74,0.74,0.74),
	RGB{Float64}(0.73,0.73,0.73),
	RGB{Float64}(0.72,0.72,0.72),
	RGB{Float64}(0.71,0.71,0.71),
	RGB{Float64}(0.7,0.7,0.7),
	RGB{Float64}(0.69,0.69,0.69),
	RGB{Float64}(0.68,0.68,0.68),
	RGB{Float64}(0.67,0.67,0.67),
	RGB{Float64}(0.66,0.66,0.66),
	RGB{Float64}(0.65,0.65,0.65),
	RGB{Float64}(0.64,0.64,0.64),
	RGB{Float64}(0.63,0.63,0.63),
	RGB{Float64}(0.62,0.62,0.62),
	RGB{Float64}(0.61,0.61,0.61),
	RGB{Float64}(0.6,0.6,0.6),
	RGB{Float64}(0.59,0.59,0.59),
	RGB{Float64}(0.58,0.58,0.58),
	RGB{Float64}(0.57,0.57,0.57),
	RGB{Float64}(0.56,0.56,0.56),
	RGB{Float64}(0.55,0.55,0.55),
	RGB{Float64}(0.54,0.54,0.54),
	RGB{Float64}(0.53,0.53,0.53),
	RGB{Float64}(0.52,0.52,0.52),
	RGB{Float64}(0.51,0.51,0.51),
	RGB{Float64}(0.5,0.5,0.5),
	RGB{Float64}(0.49,0.49,0.49),
	RGB{Float64}(0.48,0.48,0.48),
	RGB{Float64}(0.47,0.47,0.47),
	RGB{Float64}(0.46,0.46,0.46),
	RGB{Float64}(0.45,0.45,0.45),
	RGB{Float64}(0.44,0.44,0.44),
	RGB{Float64}(0.43,0.43,0.43),
	RGB{Float64}(0.42,0.42,0.42),
	RGB{Float64}(0.41,0.41,0.41),
	RGB{Float64}(0.4,0.4,0.4),
	RGB{Float64}(0.39,0.39,0.39),
	RGB{Float64}(0.38,0.38,0.38),
	RGB{Float64}(0.37,0.37,0.37),
	RGB{Float64}(0.36,0.36,0.36),
	RGB{Float64}(0.35,0.35,0.35),
	RGB{Float64}(0.34,0.34,0.34),
	RGB{Float64}(0.33,0.33,0.33),
	RGB{Float64}(0.32,0.32,0.32),
	RGB{Float64}(0.31,0.31,0.31),
	RGB{Float64}(0.3,0.3,0.3),
	RGB{Float64}(0.29,0.29,0.29),
	RGB{Float64}(0.28,0.28,0.28),
	RGB{Float64}(0.27,0.27,0.27),
	RGB{Float64}(0.26,0.26,0.26),
	RGB{Float64}(0.25,0.25,0.25),
	RGB{Float64}(0.24,0.24,0.24),
	RGB{Float64}(0.23,0.23,0.23),
	RGB{Float64}(0.22,0.22,0.22),
	RGB{Float64}(0.21,0.21,0.21),
	RGB{Float64}(0.2,0.2,0.2),
	RGB{Float64}(0.19,0.19,0.19),
	RGB{Float64}(0.18,0.18,0.18),
	RGB{Float64}(0.17,0.17,0.17),
	RGB{Float64}(0.16,0.16,0.16),
	RGB{Float64}(0.15,0.15,0.15),
	RGB{Float64}(0.14,0.14,0.14),
	RGB{Float64}(0.13,0.13,0.13),
	RGB{Float64}(0.12,0.12,0.12),
	RGB{Float64}(0.11,0.11,0.11),
	RGB{Float64}(0.1,0.1,0.1),
	RGB{Float64}(0.09,0.09,0.09),
	RGB{Float64}(0.08,0.08,0.08),
	RGB{Float64}(0.07,0.07,0.07),
	RGB{Float64}(0.06,0.06,0.06),
	RGB{Float64}(0.05,0.05,0.05),
	RGB{Float64}(0.04,0.04,0.04),
	RGB{Float64}(0.03,0.03,0.03),
	RGB{Float64}(0.02,0.02,0.02),
	RGB{Float64}(0.01,0.01,0.01),
	RGB{Float64}(0.0,0.0,0.0)], "matplotlib", "sampled color schemes, starting with white, ending with black")

loadcolorscheme(:autumn1, [
	RGB{Float64}(1.0,0.0,0.0),
	RGB{Float64}(1.0,0.01,0.0),
	RGB{Float64}(1.0,0.02,0.0),
	RGB{Float64}(1.0,0.03,0.0),
	RGB{Float64}(1.0,0.04,0.0),
	RGB{Float64}(1.0,0.05,0.0),
	RGB{Float64}(1.0,0.06,0.0),
	RGB{Float64}(1.0,0.07,0.0),
	RGB{Float64}(1.0,0.08,0.0),
	RGB{Float64}(1.0,0.09,0.0),
	RGB{Float64}(1.0,0.1,0.0),
	RGB{Float64}(1.0,0.11,0.0),
	RGB{Float64}(1.0,0.12,0.0),
	RGB{Float64}(1.0,0.13,0.0),
	RGB{Float64}(1.0,0.14,0.0),
	RGB{Float64}(1.0,0.15,0.0),
	RGB{Float64}(1.0,0.16,0.0),
	RGB{Float64}(1.0,0.17,0.0),
	RGB{Float64}(1.0,0.18,0.0),
	RGB{Float64}(1.0,0.19,0.0),
	RGB{Float64}(1.0,0.2,0.0),
	RGB{Float64}(1.0,0.21,0.0),
	RGB{Float64}(1.0,0.22,0.0),
	RGB{Float64}(1.0,0.23,0.0),
	RGB{Float64}(1.0,0.24,0.0),
	RGB{Float64}(1.0,0.25,0.0),
	RGB{Float64}(1.0,0.26,0.0),
	RGB{Float64}(1.0,0.27,0.0),
	RGB{Float64}(1.0,0.28,0.0),
	RGB{Float64}(1.0,0.29,0.0),
	RGB{Float64}(1.0,0.3,0.0),
	RGB{Float64}(1.0,0.31,0.0),
	RGB{Float64}(1.0,0.32,0.0),
	RGB{Float64}(1.0,0.33,0.0),
	RGB{Float64}(1.0,0.34,0.0),
	RGB{Float64}(1.0,0.35,0.0),
	RGB{Float64}(1.0,0.36,0.0),
	RGB{Float64}(1.0,0.37,0.0),
	RGB{Float64}(1.0,0.38,0.0),
	RGB{Float64}(1.0,0.39,0.0),
	RGB{Float64}(1.0,0.4,0.0),
	RGB{Float64}(1.0,0.41,0.0),
	RGB{Float64}(1.0,0.42,0.0),
	RGB{Float64}(1.0,0.43,0.0),
	RGB{Float64}(1.0,0.44,0.0),
	RGB{Float64}(1.0,0.45,0.0),
	RGB{Float64}(1.0,0.46,0.0),
	RGB{Float64}(1.0,0.47,0.0),
	RGB{Float64}(1.0,0.48,0.0),
	RGB{Float64}(1.0,0.49,0.0),
	RGB{Float64}(1.0,0.5,0.0),
	RGB{Float64}(1.0,0.51,0.0),
	RGB{Float64}(1.0,0.52,0.0),
	RGB{Float64}(1.0,0.53,0.0),
	RGB{Float64}(1.0,0.54,0.0),
	RGB{Float64}(1.0,0.55,0.0),
	RGB{Float64}(1.0,0.56,0.0),
	RGB{Float64}(1.0,0.57,0.0),
	RGB{Float64}(1.0,0.58,0.0),
	RGB{Float64}(1.0,0.59,0.0),
	RGB{Float64}(1.0,0.6,0.0),
	RGB{Float64}(1.0,0.61,0.0),
	RGB{Float64}(1.0,0.62,0.0),
	RGB{Float64}(1.0,0.63,0.0),
	RGB{Float64}(1.0,0.64,0.0),
	RGB{Float64}(1.0,0.65,0.0),
	RGB{Float64}(1.0,0.66,0.0),
	RGB{Float64}(1.0,0.67,0.0),
	RGB{Float64}(1.0,0.68,0.0),
	RGB{Float64}(1.0,0.69,0.0),
	RGB{Float64}(1.0,0.7,0.0),
	RGB{Float64}(1.0,0.71,0.0),
	RGB{Float64}(1.0,0.72,0.0),
	RGB{Float64}(1.0,0.73,0.0),
	RGB{Float64}(1.0,0.74,0.0),
	RGB{Float64}(1.0,0.75,0.0),
	RGB{Float64}(1.0,0.76,0.0),
	RGB{Float64}(1.0,0.77,0.0),
	RGB{Float64}(1.0,0.78,0.0),
	RGB{Float64}(1.0,0.79,0.0),
	RGB{Float64}(1.0,0.8,0.0),
	RGB{Float64}(1.0,0.81,0.0),
	RGB{Float64}(1.0,0.82,0.0),
	RGB{Float64}(1.0,0.83,0.0),
	RGB{Float64}(1.0,0.84,0.0),
	RGB{Float64}(1.0,0.85,0.0),
	RGB{Float64}(1.0,0.86,0.0),
	RGB{Float64}(1.0,0.87,0.0),
	RGB{Float64}(1.0,0.88,0.0),
	RGB{Float64}(1.0,0.89,0.0),
	RGB{Float64}(1.0,0.9,0.0),
	RGB{Float64}(1.0,0.91,0.0),
	RGB{Float64}(1.0,0.92,0.0),
	RGB{Float64}(1.0,0.93,0.0),
	RGB{Float64}(1.0,0.94,0.0),
	RGB{Float64}(1.0,0.95,0.0),
	RGB{Float64}(1.0,0.96,0.0),
	RGB{Float64}(1.0,0.97,0.0),
	RGB{Float64}(1.0,0.98,0.0),
	RGB{Float64}(1.0,0.99,0.0),
	RGB{Float64}(1.0,1.0,0.0)], "matplotlib", "sampled color schemes, duplicate, sequential linearly-increasing shades of red-orange-yellow")

loadcolorscheme(:bone_1, [
	RGB{Float64}(0.0,0.0,0.0),
	RGB{Float64}(0.0087,0.0087,0.0122),
	RGB{Float64}(0.0175,0.0175,0.0243),
	RGB{Float64}(0.0262,0.0262,0.0365),
	RGB{Float64}(0.035,0.035,0.0487),
	RGB{Float64}(0.0438,0.0437,0.0609),
	RGB{Float64}(0.0525,0.0525,0.073),
	RGB{Float64}(0.0612,0.0612,0.0852),
	RGB{Float64}(0.07,0.07,0.0974),
	RGB{Float64}(0.0787,0.0787,0.1096),
	RGB{Float64}(0.0875,0.0875,0.1217),
	RGB{Float64}(0.0962,0.0962,0.1339),
	RGB{Float64}(0.105,0.105,0.1461),
	RGB{Float64}(0.1138,0.1137,0.1583),
	RGB{Float64}(0.1225,0.1225,0.1704),
	RGB{Float64}(0.1312,0.1312,0.1826),
	RGB{Float64}(0.14,0.14,0.1948),
	RGB{Float64}(0.1488,0.1487,0.207),
	RGB{Float64}(0.1575,0.1575,0.2191),
	RGB{Float64}(0.1662,0.1662,0.2313),
	RGB{Float64}(0.175,0.175,0.2435),
	RGB{Float64}(0.1838,0.1837,0.2557),
	RGB{Float64}(0.1925,0.1925,0.2678),
	RGB{Float64}(0.2012,0.2012,0.28),
	RGB{Float64}(0.21,0.21,0.2922),
	RGB{Float64}(0.2188,0.2187,0.3043),
	RGB{Float64}(0.2275,0.2275,0.3165),
	RGB{Float64}(0.2362,0.2362,0.3287),
	RGB{Float64}(0.245,0.245,0.3409),
	RGB{Float64}(0.2537,0.2537,0.353),
	RGB{Float64}(0.2625,0.2625,0.3652),
	RGB{Float64}(0.2712,0.2712,0.3774),
	RGB{Float64}(0.28,0.28,0.3896),
	RGB{Float64}(0.2888,0.2887,0.4017),
	RGB{Float64}(0.2975,0.2975,0.4139),
	RGB{Float64}(0.3062,0.3062,0.4261),
	RGB{Float64}(0.315,0.315,0.4383),
	RGB{Float64}(0.3238,0.3254,0.4487),
	RGB{Float64}(0.3325,0.3374,0.4575),
	RGB{Float64}(0.3412,0.3494,0.4662),
	RGB{Float64}(0.35,0.3615,0.475),
	RGB{Float64}(0.3587,0.3735,0.4837),
	RGB{Float64}(0.3675,0.3855,0.4925),
	RGB{Float64}(0.3762,0.3976,0.5012),
	RGB{Float64}(0.385,0.4096,0.51),
	RGB{Float64}(0.3938,0.4216,0.5187),
	RGB{Float64}(0.4025,0.4336,0.5275),
	RGB{Float64}(0.4112,0.4457,0.5362),
	RGB{Float64}(0.42,0.4577,0.545),
	RGB{Float64}(0.4287,0.4697,0.5537),
	RGB{Float64}(0.4375,0.4818,0.5625),
	RGB{Float64}(0.4462,0.4938,0.5712),
	RGB{Float64}(0.455,0.5058,0.58),
	RGB{Float64}(0.4638,0.5179,0.5887),
	RGB{Float64}(0.4725,0.5299,0.5975),
	RGB{Float64}(0.4812,0.5419,0.6062),
	RGB{Float64}(0.49,0.554,0.615),
	RGB{Float64}(0.4987,0.566,0.6237),
	RGB{Float64}(0.5075,0.578,0.6325),
	RGB{Float64}(0.5162,0.5901,0.6412),
	RGB{Float64}(0.525,0.6021,0.65),
	RGB{Float64}(0.5337,0.6141,0.6587),
	RGB{Float64}(0.5425,0.6261,0.6675),
	RGB{Float64}(0.5512,0.6382,0.6762),
	RGB{Float64}(0.56,0.6502,0.685),
	RGB{Float64}(0.5688,0.6622,0.6937),
	RGB{Float64}(0.5775,0.6743,0.7025),
	RGB{Float64}(0.5863,0.6863,0.7112),
	RGB{Float64}(0.595,0.6983,0.72),
	RGB{Float64}(0.6037,0.7104,0.7287),
	RGB{Float64}(0.6125,0.7224,0.7375),
	RGB{Float64}(0.6212,0.7344,0.7462),
	RGB{Float64}(0.63,0.7465,0.755),
	RGB{Float64}(0.6387,0.7585,0.7637),
	RGB{Float64}(0.6475,0.7705,0.7725),
	RGB{Float64}(0.6582,0.7812,0.7812),
	RGB{Float64}(0.6719,0.79,0.79),
	RGB{Float64}(0.6855,0.7988,0.7987),
	RGB{Float64}(0.6992,0.8075,0.8075),
	RGB{Float64}(0.7129,0.8162,0.8162),
	RGB{Float64}(0.7266,0.825,0.825),
	RGB{Float64}(0.7402,0.8338,0.8337),
	RGB{Float64}(0.7539,0.8425,0.8425),
	RGB{Float64}(0.7676,0.8512,0.8512),
	RGB{Float64}(0.7812,0.86,0.86),
	RGB{Float64}(0.7949,0.8688,0.8687),
	RGB{Float64}(0.8086,0.8775,0.8775),
	RGB{Float64}(0.8223,0.8862,0.8862),
	RGB{Float64}(0.8359,0.895,0.895),
	RGB{Float64}(0.8496,0.9038,0.9037),
	RGB{Float64}(0.8633,0.9125,0.9125),
	RGB{Float64}(0.877,0.9212,0.9212),
	RGB{Float64}(0.8906,0.93,0.93),
	RGB{Float64}(0.9043,0.9388,0.9387),
	RGB{Float64}(0.918,0.9475,0.9475),
	RGB{Float64}(0.9316,0.9562,0.9562),
	RGB{Float64}(0.9453,0.965,0.965),
	RGB{Float64}(0.959,0.9737,0.9737),
	RGB{Float64}(0.9727,0.9825,0.9825),
	RGB{Float64}(0.9863,0.9912,0.9912),
	RGB{Float64}(1.0,1.0,1.0)], "matplotlib", "sampled color schemes, duplicate")

loadcolorscheme(:cool, [
	RGB{Float64}(0.0,1.0,1.0),
	RGB{Float64}(0.01,0.99,1.0),
	RGB{Float64}(0.02,0.98,1.0),
	RGB{Float64}(0.03,0.97,1.0),
	RGB{Float64}(0.04,0.96,1.0),
	RGB{Float64}(0.05,0.95,1.0),
	RGB{Float64}(0.06,0.94,1.0),
	RGB{Float64}(0.07,0.93,1.0),
	RGB{Float64}(0.08,0.92,1.0),
	RGB{Float64}(0.09,0.91,1.0),
	RGB{Float64}(0.1,0.9,1.0),
	RGB{Float64}(0.11,0.89,1.0),
	RGB{Float64}(0.12,0.88,1.0),
	RGB{Float64}(0.13,0.87,1.0),
	RGB{Float64}(0.14,0.86,1.0),
	RGB{Float64}(0.15,0.85,1.0),
	RGB{Float64}(0.16,0.84,1.0),
	RGB{Float64}(0.17,0.83,1.0),
	RGB{Float64}(0.18,0.82,1.0),
	RGB{Float64}(0.19,0.81,1.0),
	RGB{Float64}(0.2,0.8,1.0),
	RGB{Float64}(0.21,0.79,1.0),
	RGB{Float64}(0.22,0.78,1.0),
	RGB{Float64}(0.23,0.77,1.0),
	RGB{Float64}(0.24,0.76,1.0),
	RGB{Float64}(0.25,0.75,1.0),
	RGB{Float64}(0.26,0.74,1.0),
	RGB{Float64}(0.27,0.73,1.0),
	RGB{Float64}(0.28,0.72,1.0),
	RGB{Float64}(0.29,0.71,1.0),
	RGB{Float64}(0.3,0.7,1.0),
	RGB{Float64}(0.31,0.69,1.0),
	RGB{Float64}(0.32,0.68,1.0),
	RGB{Float64}(0.33,0.67,1.0),
	RGB{Float64}(0.34,0.66,1.0),
	RGB{Float64}(0.35,0.65,1.0),
	RGB{Float64}(0.36,0.64,1.0),
	RGB{Float64}(0.37,0.63,1.0),
	RGB{Float64}(0.38,0.62,1.0),
	RGB{Float64}(0.39,0.61,1.0),
	RGB{Float64}(0.4,0.6,1.0),
	RGB{Float64}(0.41,0.59,1.0),
	RGB{Float64}(0.42,0.58,1.0),
	RGB{Float64}(0.43,0.57,1.0),
	RGB{Float64}(0.44,0.56,1.0),
	RGB{Float64}(0.45,0.55,1.0),
	RGB{Float64}(0.46,0.54,1.0),
	RGB{Float64}(0.47,0.53,1.0),
	RGB{Float64}(0.48,0.52,1.0),
	RGB{Float64}(0.49,0.51,1.0),
	RGB{Float64}(0.5,0.5,1.0),
	RGB{Float64}(0.51,0.49,1.0),
	RGB{Float64}(0.52,0.48,1.0),
	RGB{Float64}(0.53,0.47,1.0),
	RGB{Float64}(0.54,0.46,1.0),
	RGB{Float64}(0.55,0.45,1.0),
	RGB{Float64}(0.56,0.44,1.0),
	RGB{Float64}(0.57,0.43,1.0),
	RGB{Float64}(0.58,0.42,1.0),
	RGB{Float64}(0.59,0.41,1.0),
	RGB{Float64}(0.6,0.4,1.0),
	RGB{Float64}(0.61,0.39,1.0),
	RGB{Float64}(0.62,0.38,1.0),
	RGB{Float64}(0.63,0.37,1.0),
	RGB{Float64}(0.64,0.36,1.0),
	RGB{Float64}(0.65,0.35,1.0),
	RGB{Float64}(0.66,0.34,1.0),
	RGB{Float64}(0.67,0.33,1.0),
	RGB{Float64}(0.68,0.32,1.0),
	RGB{Float64}(0.69,0.31,1.0),
	RGB{Float64}(0.7,0.3,1.0),
	RGB{Float64}(0.71,0.29,1.0),
	RGB{Float64}(0.72,0.28,1.0),
	RGB{Float64}(0.73,0.27,1.0),
	RGB{Float64}(0.74,0.26,1.0),
	RGB{Float64}(0.75,0.25,1.0),
	RGB{Float64}(0.76,0.24,1.0),
	RGB{Float64}(0.77,0.23,1.0),
	RGB{Float64}(0.78,0.22,1.0),
	RGB{Float64}(0.79,0.21,1.0),
	RGB{Float64}(0.8,0.2,1.0),
	RGB{Float64}(0.81,0.19,1.0),
	RGB{Float64}(0.82,0.18,1.0),
	RGB{Float64}(0.83,0.17,1.0),
	RGB{Float64}(0.84,0.16,1.0),
	RGB{Float64}(0.85,0.15,1.0),
	RGB{Float64}(0.86,0.14,1.0),
	RGB{Float64}(0.87,0.13,1.0),
	RGB{Float64}(0.88,0.12,1.0),
	RGB{Float64}(0.89,0.11,1.0),
	RGB{Float64}(0.9,0.1,1.0),
	RGB{Float64}(0.91,0.09,1.0),
	RGB{Float64}(0.92,0.08,1.0),
	RGB{Float64}(0.93,0.07,1.0),
	RGB{Float64}(0.94,0.06,1.0),
	RGB{Float64}(0.95,0.05,1.0),
	RGB{Float64}(0.96,0.04,1.0),
	RGB{Float64}(0.97,0.03,1.0),
	RGB{Float64}(0.98,0.02,1.0),
	RGB{Float64}(0.99,0.01,1.0),
	RGB{Float64}(1.0,0.0,1.0)], "matplotlib", "sampled color schemes, linearly-decreasing shades of cyan through to magenta")

loadcolorscheme(:copper, [
	RGB{Float64}(0.0,0.0,0.0),
	RGB{Float64}(0.0124,0.0078,0.005),
	RGB{Float64}(0.0247,0.0156,0.01),
	RGB{Float64}(0.0371,0.0234,0.0149),
	RGB{Float64}(0.0494,0.0312,0.0199),
	RGB{Float64}(0.0618,0.0391,0.0249),
	RGB{Float64}(0.0741,0.0469,0.0298),
	RGB{Float64}(0.0865,0.0547,0.0348),
	RGB{Float64}(0.0988,0.0625,0.0398),
	RGB{Float64}(0.1112,0.0703,0.0448),
	RGB{Float64}(0.1235,0.0781,0.0498),
	RGB{Float64}(0.1359,0.0859,0.0547),
	RGB{Float64}(0.1482,0.0937,0.0597),
	RGB{Float64}(0.1606,0.1016,0.0647),
	RGB{Float64}(0.1729,0.1094,0.0696),
	RGB{Float64}(0.1853,0.1172,0.0746),
	RGB{Float64}(0.1976,0.125,0.0796),
	RGB{Float64}(0.21,0.1328,0.0846),
	RGB{Float64}(0.2224,0.1406,0.0895),
	RGB{Float64}(0.2347,0.1484,0.0945),
	RGB{Float64}(0.2471,0.1562,0.0995),
	RGB{Float64}(0.2594,0.1641,0.1045),
	RGB{Float64}(0.2718,0.1719,0.1094),
	RGB{Float64}(0.2841,0.1797,0.1144),
	RGB{Float64}(0.2965,0.1875,0.1194),
	RGB{Float64}(0.3088,0.1953,0.1244),
	RGB{Float64}(0.3212,0.2031,0.1294),
	RGB{Float64}(0.3335,0.2109,0.1343),
	RGB{Float64}(0.3459,0.2187,0.1393),
	RGB{Float64}(0.3582,0.2265,0.1443),
	RGB{Float64}(0.3706,0.2344,0.1492),
	RGB{Float64}(0.3829,0.2422,0.1542),
	RGB{Float64}(0.3953,0.25,0.1592),
	RGB{Float64}(0.4076,0.2578,0.1642),
	RGB{Float64}(0.42,0.2656,0.1692),
	RGB{Float64}(0.4324,0.2734,0.1741),
	RGB{Float64}(0.4447,0.2812,0.1791),
	RGB{Float64}(0.4571,0.289,0.1841),
	RGB{Float64}(0.4694,0.2969,0.189),
	RGB{Float64}(0.4818,0.3047,0.194),
	RGB{Float64}(0.4941,0.3125,0.199),
	RGB{Float64}(0.5065,0.3203,0.204),
	RGB{Float64}(0.5188,0.3281,0.209),
	RGB{Float64}(0.5312,0.3359,0.2139),
	RGB{Float64}(0.5435,0.3437,0.2189),
	RGB{Float64}(0.5559,0.3515,0.2239),
	RGB{Float64}(0.5682,0.3594,0.2288),
	RGB{Float64}(0.5806,0.3672,0.2338),
	RGB{Float64}(0.5929,0.375,0.2388),
	RGB{Float64}(0.6053,0.3828,0.2438),
	RGB{Float64}(0.6176,0.3906,0.2488),
	RGB{Float64}(0.63,0.3984,0.2537),
	RGB{Float64}(0.6424,0.4062,0.2587),
	RGB{Float64}(0.6547,0.414,0.2637),
	RGB{Float64}(0.6671,0.4218,0.2686),
	RGB{Float64}(0.6794,0.4297,0.2736),
	RGB{Float64}(0.6918,0.4375,0.2786),
	RGB{Float64}(0.7041,0.4453,0.2836),
	RGB{Float64}(0.7165,0.4531,0.2885),
	RGB{Float64}(0.7288,0.4609,0.2935),
	RGB{Float64}(0.7412,0.4687,0.2985),
	RGB{Float64}(0.7535,0.4765,0.3035),
	RGB{Float64}(0.7659,0.4843,0.3084),
	RGB{Float64}(0.7782,0.4922,0.3134),
	RGB{Float64}(0.7906,0.5,0.3184),
	RGB{Float64}(0.8029,0.5078,0.3234),
	RGB{Float64}(0.8153,0.5156,0.3284),
	RGB{Float64}(0.8276,0.5234,0.3333),
	RGB{Float64}(0.84,0.5312,0.3383),
	RGB{Float64}(0.8524,0.539,0.3433),
	RGB{Float64}(0.8647,0.5468,0.3482),
	RGB{Float64}(0.8771,0.5547,0.3532),
	RGB{Float64}(0.8894,0.5625,0.3582),
	RGB{Float64}(0.9018,0.5703,0.3632),
	RGB{Float64}(0.9141,0.5781,0.3682),
	RGB{Float64}(0.9265,0.5859,0.3731),
	RGB{Float64}(0.9388,0.5937,0.3781),
	RGB{Float64}(0.9512,0.6015,0.3831),
	RGB{Float64}(0.9635,0.6093,0.388),
	RGB{Float64}(0.9759,0.6171,0.393),
	RGB{Float64}(0.9882,0.625,0.398),
	RGB{Float64}(1.0,0.6328,0.403),
	RGB{Float64}(1.0,0.6406,0.408),
	RGB{Float64}(1.0,0.6484,0.4129),
	RGB{Float64}(1.0,0.6562,0.4179),
	RGB{Float64}(1.0,0.664,0.4229),
	RGB{Float64}(1.0,0.6718,0.4278),
	RGB{Float64}(1.0,0.6796,0.4328),
	RGB{Float64}(1.0,0.6875,0.4378),
	RGB{Float64}(1.0,0.6953,0.4428),
	RGB{Float64}(1.0,0.7031,0.4478),
	RGB{Float64}(1.0,0.7109,0.4527),
	RGB{Float64}(1.0,0.7187,0.4577),
	RGB{Float64}(1.0,0.7265,0.4627),
	RGB{Float64}(1.0,0.7343,0.4676),
	RGB{Float64}(1.0,0.7421,0.4726),
	RGB{Float64}(1.0,0.75,0.4776),
	RGB{Float64}(1.0,0.7578,0.4826),
	RGB{Float64}(1.0,0.7656,0.4876),
	RGB{Float64}(1.0,0.7734,0.4925),
	RGB{Float64}(1.0,0.7812,0.4975)], "matplotlib", "sampled color schemes, sequential increasing shades of black to copper")

loadcolorscheme(:gray1, [
	RGB{Float64}(0.0,0.0,0.0),
	RGB{Float64}(0.01,0.01,0.01),
	RGB{Float64}(0.02,0.02,0.02),
	RGB{Float64}(0.03,0.03,0.03),
	RGB{Float64}(0.04,0.04,0.04),
	RGB{Float64}(0.05,0.05,0.05),
	RGB{Float64}(0.06,0.06,0.06),
	RGB{Float64}(0.07,0.07,0.07),
	RGB{Float64}(0.08,0.08,0.08),
	RGB{Float64}(0.09,0.09,0.09),
	RGB{Float64}(0.1,0.1,0.1),
	RGB{Float64}(0.11,0.11,0.11),
	RGB{Float64}(0.12,0.12,0.12),
	RGB{Float64}(0.13,0.13,0.13),
	RGB{Float64}(0.14,0.14,0.14),
	RGB{Float64}(0.15,0.15,0.15),
	RGB{Float64}(0.16,0.16,0.16),
	RGB{Float64}(0.17,0.17,0.17),
	RGB{Float64}(0.18,0.18,0.18),
	RGB{Float64}(0.19,0.19,0.19),
	RGB{Float64}(0.2,0.2,0.2),
	RGB{Float64}(0.21,0.21,0.21),
	RGB{Float64}(0.22,0.22,0.22),
	RGB{Float64}(0.23,0.23,0.23),
	RGB{Float64}(0.24,0.24,0.24),
	RGB{Float64}(0.25,0.25,0.25),
	RGB{Float64}(0.26,0.26,0.26),
	RGB{Float64}(0.27,0.27,0.27),
	RGB{Float64}(0.28,0.28,0.28),
	RGB{Float64}(0.29,0.29,0.29),
	RGB{Float64}(0.3,0.3,0.3),
	RGB{Float64}(0.31,0.31,0.31),
	RGB{Float64}(0.32,0.32,0.32),
	RGB{Float64}(0.33,0.33,0.33),
	RGB{Float64}(0.34,0.34,0.34),
	RGB{Float64}(0.35,0.35,0.35),
	RGB{Float64}(0.36,0.36,0.36),
	RGB{Float64}(0.37,0.37,0.37),
	RGB{Float64}(0.38,0.38,0.38),
	RGB{Float64}(0.39,0.39,0.39),
	RGB{Float64}(0.4,0.4,0.4),
	RGB{Float64}(0.41,0.41,0.41),
	RGB{Float64}(0.42,0.42,0.42),
	RGB{Float64}(0.43,0.43,0.43),
	RGB{Float64}(0.44,0.44,0.44),
	RGB{Float64}(0.45,0.45,0.45),
	RGB{Float64}(0.46,0.46,0.46),
	RGB{Float64}(0.47,0.47,0.47),
	RGB{Float64}(0.48,0.48,0.48),
	RGB{Float64}(0.49,0.49,0.49),
	RGB{Float64}(0.5,0.5,0.5),
	RGB{Float64}(0.51,0.51,0.51),
	RGB{Float64}(0.52,0.52,0.52),
	RGB{Float64}(0.53,0.53,0.53),
	RGB{Float64}(0.54,0.54,0.54),
	RGB{Float64}(0.55,0.55,0.55),
	RGB{Float64}(0.56,0.56,0.56),
	RGB{Float64}(0.57,0.57,0.57),
	RGB{Float64}(0.58,0.58,0.58),
	RGB{Float64}(0.59,0.59,0.59),
	RGB{Float64}(0.6,0.6,0.6),
	RGB{Float64}(0.61,0.61,0.61),
	RGB{Float64}(0.62,0.62,0.62),
	RGB{Float64}(0.63,0.63,0.63),
	RGB{Float64}(0.64,0.64,0.64),
	RGB{Float64}(0.65,0.65,0.65),
	RGB{Float64}(0.66,0.66,0.66),
	RGB{Float64}(0.67,0.67,0.67),
	RGB{Float64}(0.68,0.68,0.68),
	RGB{Float64}(0.69,0.69,0.69),
	RGB{Float64}(0.7,0.7,0.7),
	RGB{Float64}(0.71,0.71,0.71),
	RGB{Float64}(0.72,0.72,0.72),
	RGB{Float64}(0.73,0.73,0.73),
	RGB{Float64}(0.74,0.74,0.74),
	RGB{Float64}(0.75,0.75,0.75),
	RGB{Float64}(0.76,0.76,0.76),
	RGB{Float64}(0.77,0.77,0.77),
	RGB{Float64}(0.78,0.78,0.78),
	RGB{Float64}(0.79,0.79,0.79),
	RGB{Float64}(0.8,0.8,0.8),
	RGB{Float64}(0.81,0.81,0.81),
	RGB{Float64}(0.82,0.82,0.82),
	RGB{Float64}(0.83,0.83,0.83),
	RGB{Float64}(0.84,0.84,0.84),
	RGB{Float64}(0.85,0.85,0.85),
	RGB{Float64}(0.86,0.86,0.86),
	RGB{Float64}(0.87,0.87,0.87),
	RGB{Float64}(0.88,0.88,0.88),
	RGB{Float64}(0.89,0.89,0.89),
	RGB{Float64}(0.9,0.9,0.9),
	RGB{Float64}(0.91,0.91,0.91),
	RGB{Float64}(0.92,0.92,0.92),
	RGB{Float64}(0.93,0.93,0.93),
	RGB{Float64}(0.94,0.94,0.94),
	RGB{Float64}(0.95,0.95,0.95),
	RGB{Float64}(0.96,0.96,0.96),
	RGB{Float64}(0.97,0.97,0.97),
	RGB{Float64}(0.98,0.98,0.98),
	RGB{Float64}(0.99,0.99,0.99),
	RGB{Float64}(1.0,1.0,1.0)], "matplotlib", "sampled color schemes, duplicate, sequential linearly-increasing black-to-white grayscale")

loadcolorscheme(:hot, [
	RGB{Float64}(0.0416,0.0,0.0),
	RGB{Float64}(0.0679,0.0,0.0),
	RGB{Float64}(0.0941,0.0,0.0),
	RGB{Float64}(0.1204,0.0,0.0),
	RGB{Float64}(0.1466,0.0,0.0),
	RGB{Float64}(0.1729,0.0,0.0),
	RGB{Float64}(0.1991,0.0,0.0),
	RGB{Float64}(0.2254,0.0,0.0),
	RGB{Float64}(0.2516,0.0,0.0),
	RGB{Float64}(0.2779,0.0,0.0),
	RGB{Float64}(0.3041,0.0,0.0),
	RGB{Float64}(0.3304,0.0,0.0),
	RGB{Float64}(0.3566,0.0,0.0),
	RGB{Float64}(0.3829,0.0,0.0),
	RGB{Float64}(0.4091,0.0,0.0),
	RGB{Float64}(0.4354,0.0,0.0),
	RGB{Float64}(0.4616,0.0,0.0),
	RGB{Float64}(0.4879,0.0,0.0),
	RGB{Float64}(0.5141,0.0,0.0),
	RGB{Float64}(0.5404,0.0,0.0),
	RGB{Float64}(0.5666,0.0,0.0),
	RGB{Float64}(0.5929,0.0,0.0),
	RGB{Float64}(0.6191,0.0,0.0),
	RGB{Float64}(0.6454,0.0,0.0),
	RGB{Float64}(0.6716,0.0,0.0),
	RGB{Float64}(0.6979,0.0,0.0),
	RGB{Float64}(0.7241,0.0,0.0),
	RGB{Float64}(0.7504,0.0,0.0),
	RGB{Float64}(0.7767,0.0,0.0),
	RGB{Float64}(0.8029,0.0,0.0),
	RGB{Float64}(0.8292,0.0,0.0),
	RGB{Float64}(0.8554,0.0,0.0),
	RGB{Float64}(0.8817,0.0,0.0),
	RGB{Float64}(0.9079,0.0,0.0),
	RGB{Float64}(0.9342,0.0,0.0),
	RGB{Float64}(0.9604,0.0,0.0),
	RGB{Float64}(0.9867,0.0,0.0),
	RGB{Float64}(1.0,0.0129,0.0),
	RGB{Float64}(1.0,0.0392,0.0),
	RGB{Float64}(1.0,0.0654,0.0),
	RGB{Float64}(1.0,0.0917,0.0),
	RGB{Float64}(1.0,0.1179,0.0),
	RGB{Float64}(1.0,0.1442,0.0),
	RGB{Float64}(1.0,0.1704,0.0),
	RGB{Float64}(1.0,0.1967,0.0),
	RGB{Float64}(1.0,0.2229,0.0),
	RGB{Float64}(1.0,0.2492,0.0),
	RGB{Float64}(1.0,0.2754,0.0),
	RGB{Float64}(1.0,0.3017,0.0),
	RGB{Float64}(1.0,0.3279,0.0),
	RGB{Float64}(1.0,0.3542,0.0),
	RGB{Float64}(1.0,0.3804,0.0),
	RGB{Float64}(1.0,0.4067,0.0),
	RGB{Float64}(1.0,0.4329,0.0),
	RGB{Float64}(1.0,0.4592,0.0),
	RGB{Float64}(1.0,0.4854,0.0),
	RGB{Float64}(1.0,0.5117,0.0),
	RGB{Float64}(1.0,0.5379,0.0),
	RGB{Float64}(1.0,0.5642,0.0),
	RGB{Float64}(1.0,0.5904,0.0),
	RGB{Float64}(1.0,0.6167,0.0),
	RGB{Float64}(1.0,0.6429,0.0),
	RGB{Float64}(1.0,0.6692,0.0),
	RGB{Float64}(1.0,0.6954,0.0),
	RGB{Float64}(1.0,0.7217,0.0),
	RGB{Float64}(1.0,0.7479,0.0),
	RGB{Float64}(1.0,0.7742,0.0),
	RGB{Float64}(1.0,0.8004,0.0),
	RGB{Float64}(1.0,0.8267,0.0),
	RGB{Float64}(1.0,0.8529,0.0),
	RGB{Float64}(1.0,0.8792,0.0),
	RGB{Float64}(1.0,0.9054,0.0),
	RGB{Float64}(1.0,0.9317,0.0),
	RGB{Float64}(1.0,0.9579,0.0),
	RGB{Float64}(1.0,0.9842,0.0),
	RGB{Float64}(1.0,1.0,0.0156),
	RGB{Float64}(1.0,1.0,0.055),
	RGB{Float64}(1.0,1.0,0.0944),
	RGB{Float64}(1.0,1.0,0.1337),
	RGB{Float64}(1.0,1.0,0.1731),
	RGB{Float64}(1.0,1.0,0.2125),
	RGB{Float64}(1.0,1.0,0.2519),
	RGB{Float64}(1.0,1.0,0.2912),
	RGB{Float64}(1.0,1.0,0.3306),
	RGB{Float64}(1.0,1.0,0.37),
	RGB{Float64}(1.0,1.0,0.4094),
	RGB{Float64}(1.0,1.0,0.4487),
	RGB{Float64}(1.0,1.0,0.4881),
	RGB{Float64}(1.0,1.0,0.5275),
	RGB{Float64}(1.0,1.0,0.5669),
	RGB{Float64}(1.0,1.0,0.6062),
	RGB{Float64}(1.0,1.0,0.6456),
	RGB{Float64}(1.0,1.0,0.685),
	RGB{Float64}(1.0,1.0,0.7244),
	RGB{Float64}(1.0,1.0,0.7637),
	RGB{Float64}(1.0,1.0,0.8031),
	RGB{Float64}(1.0,1.0,0.8425),
	RGB{Float64}(1.0,1.0,0.8819),
	RGB{Float64}(1.0,1.0,0.9212),
	RGB{Float64}(1.0,1.0,0.9606),
	RGB{Float64}(1.0,1.0,1.0)], "matplotlib", "sampled color schemes, sequential black-red-yellow-white, to emulate blackbody radiation from an object at increasing hot temperatures")

loadcolorscheme(:hsv, [
	RGB{Float64}(1.0,0.0,0.0),
	RGB{Float64}(1.0,0.0591,0.0),
	RGB{Float64}(1.0,0.1181,0.0),
	RGB{Float64}(1.0,0.1772,0.0),
	RGB{Float64}(1.0,0.2363,0.0),
	RGB{Float64}(1.0,0.2953,0.0),
	RGB{Float64}(1.0,0.3544,0.0),
	RGB{Float64}(1.0,0.4134,0.0),
	RGB{Float64}(1.0,0.4725,0.0),
	RGB{Float64}(1.0,0.5316,0.0),
	RGB{Float64}(1.0,0.5906,0.0),
	RGB{Float64}(1.0,0.6497,0.0),
	RGB{Float64}(1.0,0.7088,0.0),
	RGB{Float64}(1.0,0.7678,0.0),
	RGB{Float64}(1.0,0.8269,0.0),
	RGB{Float64}(1.0,0.8859,0.0),
	RGB{Float64}(0.9975,0.9425,0.0),
	RGB{Float64}(0.9778,0.9819,0.0),
	RGB{Float64}(0.9369,1.0,0.0),
	RGB{Float64}(0.8778,1.0,0.0),
	RGB{Float64}(0.8187,1.0,0.0),
	RGB{Float64}(0.7597,1.0,0.0),
	RGB{Float64}(0.7006,1.0,0.0),
	RGB{Float64}(0.6416,1.0,0.0),
	RGB{Float64}(0.5825,1.0,0.0),
	RGB{Float64}(0.5234,1.0,0.0),
	RGB{Float64}(0.4644,1.0,0.0),
	RGB{Float64}(0.4053,1.0,0.0),
	RGB{Float64}(0.3462,1.0,0.0),
	RGB{Float64}(0.2872,1.0,0.0),
	RGB{Float64}(0.2281,1.0,0.0),
	RGB{Float64}(0.1691,1.0,0.0),
	RGB{Float64}(0.11,1.0,0.0),
	RGB{Float64}(0.0509,1.0,0.0),
	RGB{Float64}(0.0181,1.0,0.0263),
	RGB{Float64}(0.0,1.0,0.0672),
	RGB{Float64}(0.0,1.0,0.1263),
	RGB{Float64}(0.0,1.0,0.1853),
	RGB{Float64}(0.0,1.0,0.2444),
	RGB{Float64}(0.0,1.0,0.3034),
	RGB{Float64}(0.0,1.0,0.3625),
	RGB{Float64}(0.0,1.0,0.4216),
	RGB{Float64}(0.0,1.0,0.4806),
	RGB{Float64}(0.0,1.0,0.5397),
	RGB{Float64}(0.0,1.0,0.5987),
	RGB{Float64}(0.0,1.0,0.6578),
	RGB{Float64}(0.0,1.0,0.7169),
	RGB{Float64}(0.0,1.0,0.7759),
	RGB{Float64}(0.0,1.0,0.835),
	RGB{Float64}(0.0,1.0,0.8941),
	RGB{Float64}(0.0,1.0,0.9531),
	RGB{Float64}(0.0,0.9878,1.0),
	RGB{Float64}(0.0,0.9288,1.0),
	RGB{Float64}(0.0,0.8697,1.0),
	RGB{Float64}(0.0,0.8106,1.0),
	RGB{Float64}(0.0,0.7516,1.0),
	RGB{Float64}(0.0,0.6925,1.0),
	RGB{Float64}(0.0,0.6334,1.0),
	RGB{Float64}(0.0,0.5744,1.0),
	RGB{Float64}(0.0,0.5153,1.0),
	RGB{Float64}(0.0,0.4563,1.0),
	RGB{Float64}(0.0,0.3972,1.0),
	RGB{Float64}(0.0,0.3381,1.0),
	RGB{Float64}(0.0,0.2791,1.0),
	RGB{Float64}(0.0,0.22,1.0),
	RGB{Float64}(0.0,0.1609,1.0),
	RGB{Float64}(0.0,0.1019,1.0),
	RGB{Float64}(0.0066,0.0494,1.0),
	RGB{Float64}(0.0262,0.01,1.0),
	RGB{Float64}(0.0753,0.0,1.0),
	RGB{Float64}(0.1344,0.0,1.0),
	RGB{Float64}(0.1934,0.0,1.0),
	RGB{Float64}(0.2525,0.0,1.0),
	RGB{Float64}(0.3116,0.0,1.0),
	RGB{Float64}(0.3706,0.0,1.0),
	RGB{Float64}(0.4297,0.0,1.0),
	RGB{Float64}(0.4887,0.0,1.0),
	RGB{Float64}(0.5478,0.0,1.0),
	RGB{Float64}(0.6069,0.0,1.0),
	RGB{Float64}(0.6659,0.0,1.0),
	RGB{Float64}(0.725,0.0,1.0),
	RGB{Float64}(0.7841,0.0,1.0),
	RGB{Float64}(0.8431,0.0,1.0),
	RGB{Float64}(0.9022,0.0,1.0),
	RGB{Float64}(0.9612,0.0,1.0),
	RGB{Float64}(0.9859,0.0,0.9656),
	RGB{Float64}(1.0,0.0,0.9206),
	RGB{Float64}(1.0,0.0,0.8616),
	RGB{Float64}(1.0,0.0,0.8025),
	RGB{Float64}(1.0,0.0,0.7434),
	RGB{Float64}(1.0,0.0,0.6844),
	RGB{Float64}(1.0,0.0,0.6253),
	RGB{Float64}(1.0,0.0,0.5663),
	RGB{Float64}(1.0,0.0,0.5072),
	RGB{Float64}(1.0,0.0,0.4481),
	RGB{Float64}(1.0,0.0,0.3891),
	RGB{Float64}(1.0,0.0,0.33),
	RGB{Float64}(1.0,0.0,0.2709),
	RGB{Float64}(1.0,0.0,0.2119),
	RGB{Float64}(1.0,0.0,0.1528),
	RGB{Float64}(1.0,0.0,0.0938)], "matplotlib", "sampled color schemes, red-yellow-green-cyan-blue-magenta-red, formed by changing the hue component in the HSV color space")

loadcolorscheme(:jet1, [
	RGB{Float64}(0.0,0.0,0.5),
	RGB{Float64}(0.0,0.0,0.5455),
	RGB{Float64}(0.0,0.0,0.5909),
	RGB{Float64}(0.0,0.0,0.6364),
	RGB{Float64}(0.0,0.0,0.6818),
	RGB{Float64}(0.0,0.0,0.7273),
	RGB{Float64}(0.0,0.0,0.7727),
	RGB{Float64}(0.0,0.0,0.8182),
	RGB{Float64}(0.0,0.0,0.8636),
	RGB{Float64}(0.0,0.0,0.9091),
	RGB{Float64}(0.0,0.0,0.9545),
	RGB{Float64}(0.0,0.0,1.0),
	RGB{Float64}(0.0,0.0,1.0),
	RGB{Float64}(0.0,0.02,1.0),
	RGB{Float64}(0.0,0.06,1.0),
	RGB{Float64}(0.0,0.1,1.0),
	RGB{Float64}(0.0,0.14,1.0),
	RGB{Float64}(0.0,0.18,1.0),
	RGB{Float64}(0.0,0.22,1.0),
	RGB{Float64}(0.0,0.26,1.0),
	RGB{Float64}(0.0,0.3,1.0),
	RGB{Float64}(0.0,0.34,1.0),
	RGB{Float64}(0.0,0.38,1.0),
	RGB{Float64}(0.0,0.42,1.0),
	RGB{Float64}(0.0,0.46,1.0),
	RGB{Float64}(0.0,0.5,1.0),
	RGB{Float64}(0.0,0.54,1.0),
	RGB{Float64}(0.0,0.58,1.0),
	RGB{Float64}(0.0,0.62,1.0),
	RGB{Float64}(0.0,0.66,1.0),
	RGB{Float64}(0.0,0.7,1.0),
	RGB{Float64}(0.0,0.74,1.0),
	RGB{Float64}(0.0,0.78,1.0),
	RGB{Float64}(0.0,0.82,1.0),
	RGB{Float64}(0.0,0.86,1.0),
	RGB{Float64}(0.0,0.9,0.9677),
	RGB{Float64}(0.0323,0.94,0.9355),
	RGB{Float64}(0.0645,0.98,0.9032),
	RGB{Float64}(0.0968,1.0,0.871),
	RGB{Float64}(0.129,1.0,0.8387),
	RGB{Float64}(0.1613,1.0,0.8065),
	RGB{Float64}(0.1935,1.0,0.7742),
	RGB{Float64}(0.2258,1.0,0.7419),
	RGB{Float64}(0.2581,1.0,0.7097),
	RGB{Float64}(0.2903,1.0,0.6774),
	RGB{Float64}(0.3226,1.0,0.6452),
	RGB{Float64}(0.3548,1.0,0.6129),
	RGB{Float64}(0.3871,1.0,0.5806),
	RGB{Float64}(0.4194,1.0,0.5484),
	RGB{Float64}(0.4516,1.0,0.5161),
	RGB{Float64}(0.4839,1.0,0.4839),
	RGB{Float64}(0.5161,1.0,0.4516),
	RGB{Float64}(0.5484,1.0,0.4194),
	RGB{Float64}(0.5806,1.0,0.3871),
	RGB{Float64}(0.6129,1.0,0.3548),
	RGB{Float64}(0.6452,1.0,0.3226),
	RGB{Float64}(0.6774,1.0,0.2903),
	RGB{Float64}(0.7097,1.0,0.2581),
	RGB{Float64}(0.7419,1.0,0.2258),
	RGB{Float64}(0.7742,1.0,0.1935),
	RGB{Float64}(0.8065,1.0,0.1613),
	RGB{Float64}(0.8387,1.0,0.129),
	RGB{Float64}(0.871,1.0,0.0968),
	RGB{Float64}(0.9032,1.0,0.0645),
	RGB{Float64}(0.9355,1.0,0.0323),
	RGB{Float64}(0.9677,0.963,0.0),
	RGB{Float64}(1.0,0.9259,0.0),
	RGB{Float64}(1.0,0.8889,0.0),
	RGB{Float64}(1.0,0.8519,0.0),
	RGB{Float64}(1.0,0.8148,0.0),
	RGB{Float64}(1.0,0.7778,0.0),
	RGB{Float64}(1.0,0.7407,0.0),
	RGB{Float64}(1.0,0.7037,0.0),
	RGB{Float64}(1.0,0.6667,0.0),
	RGB{Float64}(1.0,0.6296,0.0),
	RGB{Float64}(1.0,0.5926,0.0),
	RGB{Float64}(1.0,0.5556,0.0),
	RGB{Float64}(1.0,0.5185,0.0),
	RGB{Float64}(1.0,0.4815,0.0),
	RGB{Float64}(1.0,0.4444,0.0),
	RGB{Float64}(1.0,0.4074,0.0),
	RGB{Float64}(1.0,0.3704,0.0),
	RGB{Float64}(1.0,0.3333,0.0),
	RGB{Float64}(1.0,0.2963,0.0),
	RGB{Float64}(1.0,0.2593,0.0),
	RGB{Float64}(1.0,0.2222,0.0),
	RGB{Float64}(1.0,0.1852,0.0),
	RGB{Float64}(1.0,0.1481,0.0),
	RGB{Float64}(1.0,0.1111,0.0),
	RGB{Float64}(1.0,0.0741,0.0),
	RGB{Float64}(0.9545,0.037,0.0),
	RGB{Float64}(0.9091,0.0,0.0),
	RGB{Float64}(0.8636,0.0,0.0),
	RGB{Float64}(0.8182,0.0,0.0),
	RGB{Float64}(0.7727,0.0,0.0),
	RGB{Float64}(0.7273,0.0,0.0),
	RGB{Float64}(0.6818,0.0,0.0),
	RGB{Float64}(0.6364,0.0,0.0),
	RGB{Float64}(0.5909,0.0,0.0),
	RGB{Float64}(0.5455,0.0,0.0),
	RGB{Float64}(0.5,0.0,0.0)], "matplotlib", "sampled color schemes, duplicate, a spectral map with dark endpoints, blue-cyan-yellow-red; based on a fluid-jet simulation by NCSA")

loadcolorscheme(:pink, [
	RGB{Float64}(0.1178,0.0,0.0),
	RGB{Float64}(0.167,0.0648,0.0648),
	RGB{Float64}(0.2101,0.1139,0.1139),
	RGB{Float64}(0.2446,0.1408,0.1408),
	RGB{Float64}(0.274,0.1625,0.1625),
	RGB{Float64}(0.3013,0.1823,0.1823),
	RGB{Float64}(0.3258,0.1997,0.1997),
	RGB{Float64}(0.3486,0.2157,0.2157),
	RGB{Float64}(0.3704,0.2309,0.2309),
	RGB{Float64}(0.3904,0.2447,0.2447),
	RGB{Float64}(0.4097,0.258,0.258),
	RGB{Float64}(0.4283,0.2708,0.2708),
	RGB{Float64}(0.4458,0.2827,0.2827),
	RGB{Float64}(0.4628,0.2943,0.2943),
	RGB{Float64}(0.4792,0.3054,0.3054),
	RGB{Float64}(0.495,0.3161,0.3161),
	RGB{Float64}(0.5104,0.3266,0.3266),
	RGB{Float64}(0.5252,0.3366,0.3366),
	RGB{Float64}(0.5397,0.3463,0.3463),
	RGB{Float64}(0.5539,0.3559,0.3559),
	RGB{Float64}(0.5675,0.3651,0.3651),
	RGB{Float64}(0.581,0.3741,0.3741),
	RGB{Float64}(0.5941,0.3829,0.3829),
	RGB{Float64}(0.6069,0.3915,0.3915),
	RGB{Float64}(0.6196,0.4,0.4),
	RGB{Float64}(0.6319,0.4082,0.4082),
	RGB{Float64}(0.6439,0.4163,0.4163),
	RGB{Float64}(0.6558,0.4243,0.4243),
	RGB{Float64}(0.6674,0.432,0.432),
	RGB{Float64}(0.6789,0.4397,0.4397),
	RGB{Float64}(0.6902,0.4472,0.4472),
	RGB{Float64}(0.7012,0.4546,0.4546),
	RGB{Float64}(0.7122,0.4619,0.4619),
	RGB{Float64}(0.7229,0.469,0.469),
	RGB{Float64}(0.7335,0.4761,0.4761),
	RGB{Float64}(0.7439,0.483,0.483),
	RGB{Float64}(0.7542,0.4899,0.4899),
	RGB{Float64}(0.7616,0.5008,0.4966),
	RGB{Float64}(0.7659,0.5161,0.5033),
	RGB{Float64}(0.7703,0.5307,0.5099),
	RGB{Float64}(0.7746,0.5451,0.5164),
	RGB{Float64}(0.7789,0.5591,0.5228),
	RGB{Float64}(0.7831,0.5727,0.5291),
	RGB{Float64}(0.7874,0.586,0.5354),
	RGB{Float64}(0.7916,0.599,0.5416),
	RGB{Float64}(0.7958,0.6117,0.5477),
	RGB{Float64}(0.8,0.6243,0.5538),
	RGB{Float64}(0.8041,0.6364,0.5597),
	RGB{Float64}(0.8083,0.6485,0.5657),
	RGB{Float64}(0.8124,0.6603,0.5715),
	RGB{Float64}(0.8165,0.6718,0.5773),
	RGB{Float64}(0.8206,0.6832,0.5831),
	RGB{Float64}(0.8246,0.6944,0.5888),
	RGB{Float64}(0.8286,0.7054,0.5944),
	RGB{Float64}(0.8327,0.7163,0.6),
	RGB{Float64}(0.8367,0.7269,0.6055),
	RGB{Float64}(0.8406,0.7375,0.611),
	RGB{Float64}(0.8446,0.7479,0.6164),
	RGB{Float64}(0.8485,0.7581,0.6218),
	RGB{Float64}(0.8524,0.7682,0.6272),
	RGB{Float64}(0.8563,0.7781,0.6324),
	RGB{Float64}(0.8602,0.788,0.6377),
	RGB{Float64}(0.8641,0.7977,0.6429),
	RGB{Float64}(0.8679,0.8073,0.6481),
	RGB{Float64}(0.8718,0.8168,0.6532),
	RGB{Float64}(0.8756,0.8262,0.6583),
	RGB{Float64}(0.8794,0.8355,0.6633),
	RGB{Float64}(0.8832,0.8447,0.6683),
	RGB{Float64}(0.8869,0.8537,0.6733),
	RGB{Float64}(0.8907,0.8627,0.6782),
	RGB{Float64}(0.8944,0.8716,0.6831),
	RGB{Float64}(0.8981,0.8804,0.688),
	RGB{Float64}(0.9018,0.8891,0.6928),
	RGB{Float64}(0.9055,0.8978,0.6976),
	RGB{Float64}(0.9092,0.9063,0.7024),
	RGB{Float64}(0.9129,0.9129,0.7107),
	RGB{Float64}(0.9165,0.9165,0.7245),
	RGB{Float64}(0.9201,0.9201,0.738),
	RGB{Float64}(0.9238,0.9238,0.7514),
	RGB{Float64}(0.9274,0.9274,0.7644),
	RGB{Float64}(0.9309,0.9309,0.7772),
	RGB{Float64}(0.9345,0.9345,0.7899),
	RGB{Float64}(0.9381,0.9381,0.8023),
	RGB{Float64}(0.9416,0.9416,0.8145),
	RGB{Float64}(0.9452,0.9452,0.8266),
	RGB{Float64}(0.9487,0.9487,0.8385),
	RGB{Float64}(0.9522,0.9522,0.8502),
	RGB{Float64}(0.9557,0.9557,0.8618),
	RGB{Float64}(0.9592,0.9592,0.8732),
	RGB{Float64}(0.9626,0.9626,0.8845),
	RGB{Float64}(0.9661,0.9661,0.8956),
	RGB{Float64}(0.9695,0.9695,0.9065),
	RGB{Float64}(0.973,0.973,0.9174),
	RGB{Float64}(0.9764,0.9764,0.9281),
	RGB{Float64}(0.9798,0.9798,0.9387),
	RGB{Float64}(0.9832,0.9832,0.9492),
	RGB{Float64}(0.9866,0.9866,0.9596),
	RGB{Float64}(0.9899,0.9899,0.9698),
	RGB{Float64}(0.9933,0.9933,0.98),
	RGB{Float64}(0.9967,0.9967,0.99),
	RGB{Float64}(1.0,1.0,1.0)], "matplotlib", "sampled color schemes, sequential increasing pastel black-pink-white, meant for sepia tone colorization of photographs")

loadcolorscheme(:spring, [
	RGB{Float64}(1.0,0.0,1.0),
	RGB{Float64}(1.0,0.01,0.99),
	RGB{Float64}(1.0,0.02,0.98),
	RGB{Float64}(1.0,0.03,0.97),
	RGB{Float64}(1.0,0.04,0.96),
	RGB{Float64}(1.0,0.05,0.95),
	RGB{Float64}(1.0,0.06,0.94),
	RGB{Float64}(1.0,0.07,0.93),
	RGB{Float64}(1.0,0.08,0.92),
	RGB{Float64}(1.0,0.09,0.91),
	RGB{Float64}(1.0,0.1,0.9),
	RGB{Float64}(1.0,0.11,0.89),
	RGB{Float64}(1.0,0.12,0.88),
	RGB{Float64}(1.0,0.13,0.87),
	RGB{Float64}(1.0,0.14,0.86),
	RGB{Float64}(1.0,0.15,0.85),
	RGB{Float64}(1.0,0.16,0.84),
	RGB{Float64}(1.0,0.17,0.83),
	RGB{Float64}(1.0,0.18,0.82),
	RGB{Float64}(1.0,0.19,0.81),
	RGB{Float64}(1.0,0.2,0.8),
	RGB{Float64}(1.0,0.21,0.79),
	RGB{Float64}(1.0,0.22,0.78),
	RGB{Float64}(1.0,0.23,0.77),
	RGB{Float64}(1.0,0.24,0.76),
	RGB{Float64}(1.0,0.25,0.75),
	RGB{Float64}(1.0,0.26,0.74),
	RGB{Float64}(1.0,0.27,0.73),
	RGB{Float64}(1.0,0.28,0.72),
	RGB{Float64}(1.0,0.29,0.71),
	RGB{Float64}(1.0,0.3,0.7),
	RGB{Float64}(1.0,0.31,0.69),
	RGB{Float64}(1.0,0.32,0.68),
	RGB{Float64}(1.0,0.33,0.67),
	RGB{Float64}(1.0,0.34,0.66),
	RGB{Float64}(1.0,0.35,0.65),
	RGB{Float64}(1.0,0.36,0.64),
	RGB{Float64}(1.0,0.37,0.63),
	RGB{Float64}(1.0,0.38,0.62),
	RGB{Float64}(1.0,0.39,0.61),
	RGB{Float64}(1.0,0.4,0.6),
	RGB{Float64}(1.0,0.41,0.59),
	RGB{Float64}(1.0,0.42,0.58),
	RGB{Float64}(1.0,0.43,0.57),
	RGB{Float64}(1.0,0.44,0.56),
	RGB{Float64}(1.0,0.45,0.55),
	RGB{Float64}(1.0,0.46,0.54),
	RGB{Float64}(1.0,0.47,0.53),
	RGB{Float64}(1.0,0.48,0.52),
	RGB{Float64}(1.0,0.49,0.51),
	RGB{Float64}(1.0,0.5,0.5),
	RGB{Float64}(1.0,0.51,0.49),
	RGB{Float64}(1.0,0.52,0.48),
	RGB{Float64}(1.0,0.53,0.47),
	RGB{Float64}(1.0,0.54,0.46),
	RGB{Float64}(1.0,0.55,0.45),
	RGB{Float64}(1.0,0.56,0.44),
	RGB{Float64}(1.0,0.57,0.43),
	RGB{Float64}(1.0,0.58,0.42),
	RGB{Float64}(1.0,0.59,0.41),
	RGB{Float64}(1.0,0.6,0.4),
	RGB{Float64}(1.0,0.61,0.39),
	RGB{Float64}(1.0,0.62,0.38),
	RGB{Float64}(1.0,0.63,0.37),
	RGB{Float64}(1.0,0.64,0.36),
	RGB{Float64}(1.0,0.65,0.35),
	RGB{Float64}(1.0,0.66,0.34),
	RGB{Float64}(1.0,0.67,0.33),
	RGB{Float64}(1.0,0.68,0.32),
	RGB{Float64}(1.0,0.69,0.31),
	RGB{Float64}(1.0,0.7,0.3),
	RGB{Float64}(1.0,0.71,0.29),
	RGB{Float64}(1.0,0.72,0.28),
	RGB{Float64}(1.0,0.73,0.27),
	RGB{Float64}(1.0,0.74,0.26),
	RGB{Float64}(1.0,0.75,0.25),
	RGB{Float64}(1.0,0.76,0.24),
	RGB{Float64}(1.0,0.77,0.23),
	RGB{Float64}(1.0,0.78,0.22),
	RGB{Float64}(1.0,0.79,0.21),
	RGB{Float64}(1.0,0.8,0.2),
	RGB{Float64}(1.0,0.81,0.19),
	RGB{Float64}(1.0,0.82,0.18),
	RGB{Float64}(1.0,0.83,0.17),
	RGB{Float64}(1.0,0.84,0.16),
	RGB{Float64}(1.0,0.85,0.15),
	RGB{Float64}(1.0,0.86,0.14),
	RGB{Float64}(1.0,0.87,0.13),
	RGB{Float64}(1.0,0.88,0.12),
	RGB{Float64}(1.0,0.89,0.11),
	RGB{Float64}(1.0,0.9,0.1),
	RGB{Float64}(1.0,0.91,0.09),
	RGB{Float64}(1.0,0.92,0.08),
	RGB{Float64}(1.0,0.93,0.07),
	RGB{Float64}(1.0,0.94,0.06),
	RGB{Float64}(1.0,0.95,0.05),
	RGB{Float64}(1.0,0.96,0.04),
	RGB{Float64}(1.0,0.97,0.03),
	RGB{Float64}(1.0,0.98,0.02),
	RGB{Float64}(1.0,0.99,0.01),
	RGB{Float64}(1.0,1.0,0.0)], "matplotlib", "sampled color schemes, linearly-increasing shades of magenta-yellow")

loadcolorscheme(:summer, [
	RGB{Float64}(0.0,0.5,0.4),
	RGB{Float64}(0.01,0.505,0.4),
	RGB{Float64}(0.02,0.51,0.4),
	RGB{Float64}(0.03,0.515,0.4),
	RGB{Float64}(0.04,0.52,0.4),
	RGB{Float64}(0.05,0.525,0.4),
	RGB{Float64}(0.06,0.53,0.4),
	RGB{Float64}(0.07,0.535,0.4),
	RGB{Float64}(0.08,0.54,0.4),
	RGB{Float64}(0.09,0.545,0.4),
	RGB{Float64}(0.1,0.55,0.4),
	RGB{Float64}(0.11,0.555,0.4),
	RGB{Float64}(0.12,0.56,0.4),
	RGB{Float64}(0.13,0.565,0.4),
	RGB{Float64}(0.14,0.57,0.4),
	RGB{Float64}(0.15,0.575,0.4),
	RGB{Float64}(0.16,0.58,0.4),
	RGB{Float64}(0.17,0.585,0.4),
	RGB{Float64}(0.18,0.59,0.4),
	RGB{Float64}(0.19,0.595,0.4),
	RGB{Float64}(0.2,0.6,0.4),
	RGB{Float64}(0.21,0.605,0.4),
	RGB{Float64}(0.22,0.61,0.4),
	RGB{Float64}(0.23,0.615,0.4),
	RGB{Float64}(0.24,0.62,0.4),
	RGB{Float64}(0.25,0.625,0.4),
	RGB{Float64}(0.26,0.63,0.4),
	RGB{Float64}(0.27,0.635,0.4),
	RGB{Float64}(0.28,0.64,0.4),
	RGB{Float64}(0.29,0.645,0.4),
	RGB{Float64}(0.3,0.65,0.4),
	RGB{Float64}(0.31,0.655,0.4),
	RGB{Float64}(0.32,0.66,0.4),
	RGB{Float64}(0.33,0.665,0.4),
	RGB{Float64}(0.34,0.67,0.4),
	RGB{Float64}(0.35,0.675,0.4),
	RGB{Float64}(0.36,0.68,0.4),
	RGB{Float64}(0.37,0.685,0.4),
	RGB{Float64}(0.38,0.69,0.4),
	RGB{Float64}(0.39,0.695,0.4),
	RGB{Float64}(0.4,0.7,0.4),
	RGB{Float64}(0.41,0.705,0.4),
	RGB{Float64}(0.42,0.71,0.4),
	RGB{Float64}(0.43,0.715,0.4),
	RGB{Float64}(0.44,0.72,0.4),
	RGB{Float64}(0.45,0.725,0.4),
	RGB{Float64}(0.46,0.73,0.4),
	RGB{Float64}(0.47,0.735,0.4),
	RGB{Float64}(0.48,0.74,0.4),
	RGB{Float64}(0.49,0.745,0.4),
	RGB{Float64}(0.5,0.75,0.4),
	RGB{Float64}(0.51,0.755,0.4),
	RGB{Float64}(0.52,0.76,0.4),
	RGB{Float64}(0.53,0.765,0.4),
	RGB{Float64}(0.54,0.77,0.4),
	RGB{Float64}(0.55,0.775,0.4),
	RGB{Float64}(0.56,0.78,0.4),
	RGB{Float64}(0.57,0.785,0.4),
	RGB{Float64}(0.58,0.79,0.4),
	RGB{Float64}(0.59,0.795,0.4),
	RGB{Float64}(0.6,0.8,0.4),
	RGB{Float64}(0.61,0.805,0.4),
	RGB{Float64}(0.62,0.81,0.4),
	RGB{Float64}(0.63,0.815,0.4),
	RGB{Float64}(0.64,0.82,0.4),
	RGB{Float64}(0.65,0.825,0.4),
	RGB{Float64}(0.66,0.83,0.4),
	RGB{Float64}(0.67,0.835,0.4),
	RGB{Float64}(0.68,0.84,0.4),
	RGB{Float64}(0.69,0.845,0.4),
	RGB{Float64}(0.7,0.85,0.4),
	RGB{Float64}(0.71,0.855,0.4),
	RGB{Float64}(0.72,0.86,0.4),
	RGB{Float64}(0.73,0.865,0.4),
	RGB{Float64}(0.74,0.87,0.4),
	RGB{Float64}(0.75,0.875,0.4),
	RGB{Float64}(0.76,0.88,0.4),
	RGB{Float64}(0.77,0.885,0.4),
	RGB{Float64}(0.78,0.89,0.4),
	RGB{Float64}(0.79,0.895,0.4),
	RGB{Float64}(0.8,0.9,0.4),
	RGB{Float64}(0.81,0.905,0.4),
	RGB{Float64}(0.82,0.91,0.4),
	RGB{Float64}(0.83,0.915,0.4),
	RGB{Float64}(0.84,0.92,0.4),
	RGB{Float64}(0.85,0.925,0.4),
	RGB{Float64}(0.86,0.93,0.4),
	RGB{Float64}(0.87,0.935,0.4),
	RGB{Float64}(0.88,0.94,0.4),
	RGB{Float64}(0.89,0.945,0.4),
	RGB{Float64}(0.9,0.95,0.4),
	RGB{Float64}(0.91,0.955,0.4),
	RGB{Float64}(0.92,0.96,0.4),
	RGB{Float64}(0.93,0.965,0.4),
	RGB{Float64}(0.94,0.97,0.4),
	RGB{Float64}(0.95,0.975,0.4),
	RGB{Float64}(0.96,0.98,0.4),
	RGB{Float64}(0.97,0.985,0.4),
	RGB{Float64}(0.98,0.99,0.4),
	RGB{Float64}(0.99,0.995,0.4),
	RGB{Float64}(1.0,1.0,0.4)], "matplotlib", "sampled color schemes, sequential linearly-increasing shades of green-yellow")

loadcolorscheme(:winter, [
	RGB{Float64}(0.0,0.0,1.0),
	RGB{Float64}(0.0,0.01,0.995),
	RGB{Float64}(0.0,0.02,0.99),
	RGB{Float64}(0.0,0.03,0.985),
	RGB{Float64}(0.0,0.04,0.98),
	RGB{Float64}(0.0,0.05,0.975),
	RGB{Float64}(0.0,0.06,0.97),
	RGB{Float64}(0.0,0.07,0.965),
	RGB{Float64}(0.0,0.08,0.96),
	RGB{Float64}(0.0,0.09,0.955),
	RGB{Float64}(0.0,0.1,0.95),
	RGB{Float64}(0.0,0.11,0.945),
	RGB{Float64}(0.0,0.12,0.94),
	RGB{Float64}(0.0,0.13,0.935),
	RGB{Float64}(0.0,0.14,0.93),
	RGB{Float64}(0.0,0.15,0.925),
	RGB{Float64}(0.0,0.16,0.92),
	RGB{Float64}(0.0,0.17,0.915),
	RGB{Float64}(0.0,0.18,0.91),
	RGB{Float64}(0.0,0.19,0.905),
	RGB{Float64}(0.0,0.2,0.9),
	RGB{Float64}(0.0,0.21,0.895),
	RGB{Float64}(0.0,0.22,0.89),
	RGB{Float64}(0.0,0.23,0.885),
	RGB{Float64}(0.0,0.24,0.88),
	RGB{Float64}(0.0,0.25,0.875),
	RGB{Float64}(0.0,0.26,0.87),
	RGB{Float64}(0.0,0.27,0.865),
	RGB{Float64}(0.0,0.28,0.86),
	RGB{Float64}(0.0,0.29,0.855),
	RGB{Float64}(0.0,0.3,0.85),
	RGB{Float64}(0.0,0.31,0.845),
	RGB{Float64}(0.0,0.32,0.84),
	RGB{Float64}(0.0,0.33,0.835),
	RGB{Float64}(0.0,0.34,0.83),
	RGB{Float64}(0.0,0.35,0.825),
	RGB{Float64}(0.0,0.36,0.82),
	RGB{Float64}(0.0,0.37,0.815),
	RGB{Float64}(0.0,0.38,0.81),
	RGB{Float64}(0.0,0.39,0.805),
	RGB{Float64}(0.0,0.4,0.8),
	RGB{Float64}(0.0,0.41,0.795),
	RGB{Float64}(0.0,0.42,0.79),
	RGB{Float64}(0.0,0.43,0.785),
	RGB{Float64}(0.0,0.44,0.78),
	RGB{Float64}(0.0,0.45,0.775),
	RGB{Float64}(0.0,0.46,0.77),
	RGB{Float64}(0.0,0.47,0.765),
	RGB{Float64}(0.0,0.48,0.76),
	RGB{Float64}(0.0,0.49,0.755),
	RGB{Float64}(0.0,0.5,0.75),
	RGB{Float64}(0.0,0.51,0.745),
	RGB{Float64}(0.0,0.52,0.74),
	RGB{Float64}(0.0,0.53,0.735),
	RGB{Float64}(0.0,0.54,0.73),
	RGB{Float64}(0.0,0.55,0.725),
	RGB{Float64}(0.0,0.56,0.72),
	RGB{Float64}(0.0,0.57,0.715),
	RGB{Float64}(0.0,0.58,0.71),
	RGB{Float64}(0.0,0.59,0.705),
	RGB{Float64}(0.0,0.6,0.7),
	RGB{Float64}(0.0,0.61,0.695),
	RGB{Float64}(0.0,0.62,0.69),
	RGB{Float64}(0.0,0.63,0.685),
	RGB{Float64}(0.0,0.64,0.68),
	RGB{Float64}(0.0,0.65,0.675),
	RGB{Float64}(0.0,0.66,0.67),
	RGB{Float64}(0.0,0.67,0.665),
	RGB{Float64}(0.0,0.68,0.66),
	RGB{Float64}(0.0,0.69,0.655),
	RGB{Float64}(0.0,0.7,0.65),
	RGB{Float64}(0.0,0.71,0.645),
	RGB{Float64}(0.0,0.72,0.64),
	RGB{Float64}(0.0,0.73,0.635),
	RGB{Float64}(0.0,0.74,0.63),
	RGB{Float64}(0.0,0.75,0.625),
	RGB{Float64}(0.0,0.76,0.62),
	RGB{Float64}(0.0,0.77,0.615),
	RGB{Float64}(0.0,0.78,0.61),
	RGB{Float64}(0.0,0.79,0.605),
	RGB{Float64}(0.0,0.8,0.6),
	RGB{Float64}(0.0,0.81,0.595),
	RGB{Float64}(0.0,0.82,0.59),
	RGB{Float64}(0.0,0.83,0.585),
	RGB{Float64}(0.0,0.84,0.58),
	RGB{Float64}(0.0,0.85,0.575),
	RGB{Float64}(0.0,0.86,0.57),
	RGB{Float64}(0.0,0.87,0.565),
	RGB{Float64}(0.0,0.88,0.56),
	RGB{Float64}(0.0,0.89,0.555),
	RGB{Float64}(0.0,0.9,0.55),
	RGB{Float64}(0.0,0.91,0.545),
	RGB{Float64}(0.0,0.92,0.54),
	RGB{Float64}(0.0,0.93,0.535),
	RGB{Float64}(0.0,0.94,0.53),
	RGB{Float64}(0.0,0.95,0.525),
	RGB{Float64}(0.0,0.96,0.52),
	RGB{Float64}(0.0,0.97,0.515),
	RGB{Float64}(0.0,0.98,0.51),
	RGB{Float64}(0.0,0.99,0.505),
	RGB{Float64}(0.0,1.0,0.5)], "matplotlib", "sampled color schemes, linearly-increasing shades of blue-green")

loadcolorscheme(:nipy_spectral, [
	RGB{Float64}(0.0,0.0,0.0),
	RGB{Float64}(0.0933,0.0,0.1067),
	RGB{Float64}(0.1867,0.0,0.2133),
	RGB{Float64}(0.28,0.0,0.32),
	RGB{Float64}(0.3734,0.0,0.4266),
	RGB{Float64}(0.4667,0.0,0.5333),
	RGB{Float64}(0.48,0.0,0.5466),
	RGB{Float64}(0.4933,0.0,0.56),
	RGB{Float64}(0.5067,0.0,0.5733),
	RGB{Float64}(0.52,0.0,0.5867),
	RGB{Float64}(0.5333,0.0,0.6),
	RGB{Float64}(0.4266,0.0,0.6133),
	RGB{Float64}(0.32,0.0,0.6267),
	RGB{Float64}(0.2133,0.0,0.64),
	RGB{Float64}(0.1067,0.0,0.6534),
	RGB{Float64}(0.0,0.0,0.6667),
	RGB{Float64}(0.0,0.0,0.7067),
	RGB{Float64}(0.0,0.0,0.7467),
	RGB{Float64}(0.0,0.0,0.7867),
	RGB{Float64}(0.0,0.0,0.8267),
	RGB{Float64}(0.0,0.0,0.8667),
	RGB{Float64}(0.0,0.0933,0.8667),
	RGB{Float64}(0.0,0.1867,0.8667),
	RGB{Float64}(0.0,0.28,0.8667),
	RGB{Float64}(0.0,0.3734,0.8667),
	RGB{Float64}(0.0,0.4667,0.8667),
	RGB{Float64}(0.0,0.4934,0.8667),
	RGB{Float64}(0.0,0.52,0.8667),
	RGB{Float64}(0.0,0.5467,0.8667),
	RGB{Float64}(0.0,0.5733,0.8667),
	RGB{Float64}(0.0,0.6,0.8667),
	RGB{Float64}(0.0,0.6133,0.8267),
	RGB{Float64}(0.0,0.6267,0.7867),
	RGB{Float64}(0.0,0.64,0.7467),
	RGB{Float64}(0.0,0.6534,0.7067),
	RGB{Float64}(0.0,0.6667,0.6667),
	RGB{Float64}(0.0,0.6667,0.64),
	RGB{Float64}(0.0,0.6667,0.6133),
	RGB{Float64}(0.0,0.6667,0.5867),
	RGB{Float64}(0.0,0.6667,0.56),
	RGB{Float64}(0.0,0.6667,0.5333),
	RGB{Float64}(0.0,0.6534,0.4266),
	RGB{Float64}(0.0,0.64,0.32),
	RGB{Float64}(0.0,0.6267,0.2133),
	RGB{Float64}(0.0,0.6133,0.1067),
	RGB{Float64}(0.0,0.6,0.0),
	RGB{Float64}(0.0,0.6267,0.0),
	RGB{Float64}(0.0,0.6533,0.0),
	RGB{Float64}(0.0,0.68,0.0),
	RGB{Float64}(0.0,0.7066,0.0),
	RGB{Float64}(0.0,0.7333,0.0),
	RGB{Float64}(0.0,0.76,0.0),
	RGB{Float64}(0.0,0.7867,0.0),
	RGB{Float64}(0.0,0.8133,0.0),
	RGB{Float64}(0.0,0.84,0.0),
	RGB{Float64}(0.0,0.8667,0.0),
	RGB{Float64}(0.0,0.8934,0.0),
	RGB{Float64}(0.0,0.92,0.0),
	RGB{Float64}(0.0,0.9467,0.0),
	RGB{Float64}(0.0,0.9733,0.0),
	RGB{Float64}(0.0,1.0,0.0),
	RGB{Float64}(0.1467,1.0,0.0),
	RGB{Float64}(0.2933,1.0,0.0),
	RGB{Float64}(0.44,1.0,0.0),
	RGB{Float64}(0.5866,1.0,0.0),
	RGB{Float64}(0.7333,1.0,0.0),
	RGB{Float64}(0.7733,0.9867,0.0),
	RGB{Float64}(0.8133,0.9733,0.0),
	RGB{Float64}(0.8533,0.96,0.0),
	RGB{Float64}(0.8933,0.9466,0.0),
	RGB{Float64}(0.9333,0.9333,0.0),
	RGB{Float64}(0.9466,0.9066,0.0),
	RGB{Float64}(0.96,0.88,0.0),
	RGB{Float64}(0.9733,0.8533,0.0),
	RGB{Float64}(0.9867,0.8267,0.0),
	RGB{Float64}(1.0,0.8,0.0),
	RGB{Float64}(1.0,0.76,0.0),
	RGB{Float64}(1.0,0.72,0.0),
	RGB{Float64}(1.0,0.68,0.0),
	RGB{Float64}(1.0,0.64,0.0),
	RGB{Float64}(1.0,0.6,0.0),
	RGB{Float64}(1.0,0.48,0.0),
	RGB{Float64}(1.0,0.36,0.0),
	RGB{Float64}(1.0,0.24,0.0),
	RGB{Float64}(1.0,0.12,0.0),
	RGB{Float64}(1.0,0.0,0.0),
	RGB{Float64}(0.9733,0.0,0.0),
	RGB{Float64}(0.9467,0.0,0.0),
	RGB{Float64}(0.92,0.0,0.0),
	RGB{Float64}(0.8934,0.0,0.0),
	RGB{Float64}(0.8667,0.0,0.0),
	RGB{Float64}(0.8534,0.0,0.0),
	RGB{Float64}(0.84,0.0,0.0),
	RGB{Float64}(0.8267,0.0,0.0),
	RGB{Float64}(0.8133,0.0,0.0),
	RGB{Float64}(0.8,0.0,0.0),
	RGB{Float64}(0.8,0.16,0.16),
	RGB{Float64}(0.8,0.32,0.32),
	RGB{Float64}(0.8,0.48,0.48),
	RGB{Float64}(0.8,0.64,0.64),
	RGB{Float64}(0.8,0.8,0.8)], "matplotlib", "sampled color schemes, black-purple-blue-green-yellow-red-white spectrum, originally from the Neuroimaging in Python project")

loadcolorscheme(:gist_earth, [
	RGB{Float64}(0.0,0.0,0.0),
	RGB{Float64}(0.0067,0.0,0.2448),
	RGB{Float64}(0.0133,0.0,0.3523),
	RGB{Float64}(0.02,0.0058,0.447),
	RGB{Float64}(0.0267,0.0288,0.4565),
	RGB{Float64}(0.0333,0.0518,0.4583),
	RGB{Float64}(0.04,0.0748,0.4601),
	RGB{Float64}(0.0467,0.0978,0.4619),
	RGB{Float64}(0.0533,0.1208,0.4637),
	RGB{Float64}(0.06,0.1438,0.4655),
	RGB{Float64}(0.0666,0.1668,0.4673),
	RGB{Float64}(0.0733,0.1897,0.4691),
	RGB{Float64}(0.08,0.2105,0.471),
	RGB{Float64}(0.0866,0.2313,0.4728),
	RGB{Float64}(0.0933,0.2521,0.4746),
	RGB{Float64}(0.1,0.2729,0.4764),
	RGB{Float64}(0.1066,0.2937,0.4782),
	RGB{Float64}(0.1133,0.3134,0.48),
	RGB{Float64}(0.12,0.3321,0.4818),
	RGB{Float64}(0.1266,0.3508,0.4837),
	RGB{Float64}(0.1333,0.3695,0.4855),
	RGB{Float64}(0.14,0.3876,0.4873),
	RGB{Float64}(0.1466,0.4034,0.4891),
	RGB{Float64}(0.1533,0.4192,0.4909),
	RGB{Float64}(0.1599,0.435,0.4927),
	RGB{Float64}(0.1666,0.4508,0.4945),
	RGB{Float64}(0.1733,0.4666,0.4963),
	RGB{Float64}(0.1799,0.4824,0.4982),
	RGB{Float64}(0.1866,0.4982,0.5),
	RGB{Float64}(0.1918,0.5064,0.4911),
	RGB{Float64}(0.1965,0.5121,0.4789),
	RGB{Float64}(0.2012,0.5179,0.4666),
	RGB{Float64}(0.2059,0.5236,0.4544),
	RGB{Float64}(0.2107,0.5294,0.4421),
	RGB{Float64}(0.2154,0.5352,0.4299),
	RGB{Float64}(0.2201,0.5409,0.4177),
	RGB{Float64}(0.2248,0.5467,0.4054),
	RGB{Float64}(0.2295,0.5524,0.3932),
	RGB{Float64}(0.2342,0.5582,0.3809),
	RGB{Float64}(0.239,0.5639,0.3687),
	RGB{Float64}(0.2437,0.5697,0.3564),
	RGB{Float64}(0.2484,0.5755,0.3442),
	RGB{Float64}(0.2531,0.5812,0.332),
	RGB{Float64}(0.2578,0.587,0.3197),
	RGB{Float64}(0.2625,0.5927,0.3075),
	RGB{Float64}(0.2672,0.5985,0.2952),
	RGB{Float64}(0.2741,0.6042,0.283),
	RGB{Float64}(0.2963,0.61,0.2767),
	RGB{Float64}(0.3185,0.6158,0.2826),
	RGB{Float64}(0.3408,0.6215,0.2884),
	RGB{Float64}(0.363,0.6273,0.2942),
	RGB{Float64}(0.3852,0.633,0.3),
	RGB{Float64}(0.4074,0.6388,0.3059),
	RGB{Float64}(0.4297,0.6434,0.3117),
	RGB{Float64}(0.4519,0.6478,0.3175),
	RGB{Float64}(0.4735,0.6522,0.322),
	RGB{Float64}(0.49,0.6565,0.3252),
	RGB{Float64}(0.5065,0.6609,0.3284),
	RGB{Float64}(0.523,0.6653,0.3315),
	RGB{Float64}(0.5395,0.6697,0.3347),
	RGB{Float64}(0.556,0.6741,0.3379),
	RGB{Float64}(0.5725,0.6785,0.341),
	RGB{Float64}(0.589,0.6829,0.3442),
	RGB{Float64}(0.6055,0.6873,0.3473),
	RGB{Float64}(0.622,0.6917,0.3505),
	RGB{Float64}(0.6384,0.696,0.3537),
	RGB{Float64}(0.6549,0.7004,0.3568),
	RGB{Float64}(0.6714,0.7048,0.36),
	RGB{Float64}(0.6879,0.7092,0.3631),
	RGB{Float64}(0.7044,0.7136,0.3663),
	RGB{Float64}(0.7184,0.7154,0.3695),
	RGB{Float64}(0.7226,0.7067,0.3726),
	RGB{Float64}(0.7268,0.6981,0.3758),
	RGB{Float64}(0.731,0.6895,0.3789),
	RGB{Float64}(0.7352,0.6808,0.3821),
	RGB{Float64}(0.7393,0.6722,0.3853),
	RGB{Float64}(0.7435,0.6636,0.3884),
	RGB{Float64}(0.7477,0.6549,0.3916),
	RGB{Float64}(0.7519,0.6463,0.3947),
	RGB{Float64}(0.7573,0.6401,0.4101),
	RGB{Float64}(0.7685,0.6447,0.4346),
	RGB{Float64}(0.7797,0.65,0.4591),
	RGB{Float64}(0.7909,0.6586,0.4836),
	RGB{Float64}(0.8021,0.6673,0.5081),
	RGB{Float64}(0.8132,0.676,0.5326),
	RGB{Float64}(0.8244,0.6846,0.5571),
	RGB{Float64}(0.8356,0.6933,0.5816),
	RGB{Float64}(0.8468,0.7038,0.6061),
	RGB{Float64}(0.858,0.7182,0.6306),
	RGB{Float64}(0.8692,0.732,0.6551),
	RGB{Float64}(0.8803,0.7469,0.6829),
	RGB{Float64}(0.8915,0.7665,0.713),
	RGB{Float64}(0.9027,0.786,0.7432),
	RGB{Float64}(0.9139,0.8056,0.7733),
	RGB{Float64}(0.9251,0.8252,0.8035),
	RGB{Float64}(0.9363,0.8477,0.8336),
	RGB{Float64}(0.9475,0.8707,0.8637),
	RGB{Float64}(0.9586,0.8971,0.8939),
	RGB{Float64}(0.9698,0.9263,0.924),
	RGB{Float64}(0.981,0.9555,0.9542),
	RGB{Float64}(0.9922,0.9843,0.9843)], "matplotlib", "sampled color schemes, mapmaker's colors from dark blue deep ocean to green lowlands to brown highlands to white mountains")

loadcolorscheme(:gist_ncar, [
	RGB{Float64}(0.0,0.0,0.502),
	RGB{Float64}(0.0,0.073,0.4079),
	RGB{Float64}(0.0,0.146,0.3138),
	RGB{Float64}(0.0,0.2189,0.2198),
	RGB{Float64}(0.0,0.2919,0.1257),
	RGB{Float64}(0.0,0.3649,0.0316),
	RGB{Float64}(0.0,0.3112,0.1719),
	RGB{Float64}(0.0,0.2434,0.3382),
	RGB{Float64}(0.0,0.1756,0.5044),
	RGB{Float64}(0.0,0.1078,0.6707),
	RGB{Float64}(0.0,0.04,0.837),
	RGB{Float64}(0.0,0.0579,1.0),
	RGB{Float64}(0.0,0.1991,1.0),
	RGB{Float64}(0.0,0.3403,1.0),
	RGB{Float64}(0.0,0.4815,1.0),
	RGB{Float64}(0.0,0.6228,1.0),
	RGB{Float64}(0.0,0.7468,1.0),
	RGB{Float64}(0.0,0.7986,1.0),
	RGB{Float64}(0.0,0.8426,1.0),
	RGB{Float64}(0.0,0.8867,1.0),
	RGB{Float64}(0.0,0.9308,1.0),
	RGB{Float64}(0.0,0.9749,0.96),
	RGB{Float64}(0.0,0.998,0.8944),
	RGB{Float64}(0.0,0.9935,0.8289),
	RGB{Float64}(0.0,0.9889,0.7633),
	RGB{Float64}(0.0,0.9844,0.6978),
	RGB{Float64}(0.0,0.9804,0.6322),
	RGB{Float64}(0.0,0.9804,0.5383),
	RGB{Float64}(0.0,0.9843,0.434),
	RGB{Float64}(0.0,0.9885,0.3297),
	RGB{Float64}(0.0,0.9927,0.2254),
	RGB{Float64}(0.0013,0.9968,0.121),
	RGB{Float64}(0.065,0.991,0.0167),
	RGB{Float64}(0.1286,0.9533,0.0),
	RGB{Float64}(0.1923,0.9157,0.0),
	RGB{Float64}(0.256,0.8781,0.0),
	RGB{Float64}(0.3197,0.8405,0.0),
	RGB{Float64}(0.3834,0.8127,0.0),
	RGB{Float64}(0.4142,0.8452,0.0),
	RGB{Float64}(0.434,0.8778,0.0),
	RGB{Float64}(0.4538,0.9104,0.0),
	RGB{Float64}(0.4736,0.943,0.0),
	RGB{Float64}(0.4934,0.9756,0.0171),
	RGB{Float64}(0.5299,1.0,0.057),
	RGB{Float64}(0.5754,1.0,0.0968),
	RGB{Float64}(0.6209,1.0,0.1366),
	RGB{Float64}(0.6664,1.0,0.1764),
	RGB{Float64}(0.7119,1.0,0.2163),
	RGB{Float64}(0.7574,1.0,0.2123),
	RGB{Float64}(0.8029,1.0,0.1725),
	RGB{Float64}(0.8485,1.0,0.1326),
	RGB{Float64}(0.894,1.0,0.0928),
	RGB{Float64}(0.9395,1.0,0.053),
	RGB{Float64}(0.985,0.9793,0.0131),
	RGB{Float64}(1.0,0.9546,0.0),
	RGB{Float64}(1.0,0.93,0.0),
	RGB{Float64}(1.0,0.9053,0.0),
	RGB{Float64}(1.0,0.8806,0.0),
	RGB{Float64}(1.0,0.856,0.0),
	RGB{Float64}(1.0,0.8313,0.0103),
	RGB{Float64}(1.0,0.8066,0.0211),
	RGB{Float64}(1.0,0.782,0.0319),
	RGB{Float64}(1.0,0.7573,0.0426),
	RGB{Float64}(1.0,0.7327,0.0534),
	RGB{Float64}(1.0,0.6588,0.0469),
	RGB{Float64}(1.0,0.5769,0.0375),
	RGB{Float64}(1.0,0.495,0.0282),
	RGB{Float64}(1.0,0.4131,0.0189),
	RGB{Float64}(1.0,0.3312,0.0095),
	RGB{Float64}(1.0,0.262,0.0002),
	RGB{Float64}(1.0,0.2145,0.0),
	RGB{Float64}(1.0,0.1669,0.0),
	RGB{Float64}(1.0,0.1194,0.0),
	RGB{Float64}(1.0,0.0718,0.0),
	RGB{Float64}(1.0,0.0243,0.0479),
	RGB{Float64}(1.0,0.0,0.2253),
	RGB{Float64}(1.0,0.0,0.4026),
	RGB{Float64}(1.0,0.0,0.58),
	RGB{Float64}(1.0,0.0,0.7574),
	RGB{Float64}(1.0,0.0,0.9348),
	RGB{Float64}(0.9463,0.0269,1.0),
	RGB{Float64}(0.8774,0.0613,1.0),
	RGB{Float64}(0.8085,0.0957,1.0),
	RGB{Float64}(0.7396,0.1302,1.0),
	RGB{Float64}(0.6707,0.1646,1.0),
	RGB{Float64}(0.639,0.2161,0.9917),
	RGB{Float64}(0.6983,0.2753,0.9797),
	RGB{Float64}(0.7575,0.3344,0.9677),
	RGB{Float64}(0.8168,0.3935,0.9557),
	RGB{Float64}(0.8761,0.4527,0.9437),
	RGB{Float64}(0.9249,0.5093,0.9353),
	RGB{Float64}(0.932,0.5556,0.9414),
	RGB{Float64}(0.9392,0.6019,0.9475),
	RGB{Float64}(0.9463,0.6482,0.9536),
	RGB{Float64}(0.9534,0.6946,0.9596),
	RGB{Float64}(0.9605,0.7409,0.9657),
	RGB{Float64}(0.9676,0.7872,0.9718),
	RGB{Float64}(0.9747,0.8335,0.9779),
	RGB{Float64}(0.9819,0.8799,0.9839),
	RGB{Float64}(0.989,0.9262,0.99),
	RGB{Float64}(0.9961,0.9725,0.9961)], "matplotlib", "sampled color schemes, pseudo-spectral black-blue-green-yellow-red-purple-white colormap from National Center for Atmospheric Research")

loadcolorscheme(:gist_stern, [
	RGB{Float64}(0.0,0.0,0.0),
	RGB{Float64}(0.1828,0.01,0.02),
	RGB{Float64}(0.3656,0.02,0.04),
	RGB{Float64}(0.5484,0.03,0.06),
	RGB{Float64}(0.7313,0.04,0.08),
	RGB{Float64}(0.9141,0.05,0.1),
	RGB{Float64}(0.9736,0.06,0.12),
	RGB{Float64}(0.9238,0.07,0.14),
	RGB{Float64}(0.874,0.08,0.16),
	RGB{Float64}(0.8241,0.09,0.18),
	RGB{Float64}(0.7743,0.1,0.2),
	RGB{Float64}(0.7245,0.11,0.22),
	RGB{Float64}(0.6747,0.12,0.24),
	RGB{Float64}(0.6248,0.13,0.26),
	RGB{Float64}(0.575,0.14,0.28),
	RGB{Float64}(0.5252,0.15,0.3),
	RGB{Float64}(0.4754,0.16,0.32),
	RGB{Float64}(0.4256,0.17,0.34),
	RGB{Float64}(0.3757,0.18,0.36),
	RGB{Float64}(0.3259,0.19,0.38),
	RGB{Float64}(0.2761,0.2,0.4),
	RGB{Float64}(0.2263,0.21,0.42),
	RGB{Float64}(0.1765,0.22,0.44),
	RGB{Float64}(0.1266,0.23,0.46),
	RGB{Float64}(0.0768,0.24,0.48),
	RGB{Float64}(0.027,0.25,0.5),
	RGB{Float64}(0.26,0.26,0.52),
	RGB{Float64}(0.27,0.27,0.54),
	RGB{Float64}(0.28,0.28,0.56),
	RGB{Float64}(0.29,0.29,0.58),
	RGB{Float64}(0.3,0.3,0.6),
	RGB{Float64}(0.31,0.31,0.62),
	RGB{Float64}(0.32,0.32,0.64),
	RGB{Float64}(0.33,0.33,0.66),
	RGB{Float64}(0.34,0.34,0.68),
	RGB{Float64}(0.35,0.35,0.7),
	RGB{Float64}(0.36,0.36,0.72),
	RGB{Float64}(0.37,0.37,0.74),
	RGB{Float64}(0.38,0.38,0.76),
	RGB{Float64}(0.39,0.39,0.78),
	RGB{Float64}(0.4,0.4,0.8),
	RGB{Float64}(0.41,0.41,0.82),
	RGB{Float64}(0.42,0.42,0.84),
	RGB{Float64}(0.43,0.43,0.86),
	RGB{Float64}(0.44,0.44,0.88),
	RGB{Float64}(0.45,0.45,0.9),
	RGB{Float64}(0.46,0.46,0.92),
	RGB{Float64}(0.47,0.47,0.94),
	RGB{Float64}(0.48,0.48,0.96),
	RGB{Float64}(0.49,0.49,0.98),
	RGB{Float64}(0.5,0.5,1.0),
	RGB{Float64}(0.51,0.51,0.9574),
	RGB{Float64}(0.52,0.52,0.9149),
	RGB{Float64}(0.53,0.53,0.8723),
	RGB{Float64}(0.54,0.54,0.8298),
	RGB{Float64}(0.55,0.55,0.7872),
	RGB{Float64}(0.56,0.56,0.7447),
	RGB{Float64}(0.57,0.57,0.7021),
	RGB{Float64}(0.58,0.58,0.6596),
	RGB{Float64}(0.59,0.59,0.617),
	RGB{Float64}(0.6,0.6,0.5745),
	RGB{Float64}(0.61,0.61,0.5319),
	RGB{Float64}(0.62,0.62,0.4894),
	RGB{Float64}(0.63,0.63,0.4468),
	RGB{Float64}(0.64,0.64,0.4043),
	RGB{Float64}(0.65,0.65,0.3617),
	RGB{Float64}(0.66,0.66,0.3191),
	RGB{Float64}(0.67,0.67,0.2766),
	RGB{Float64}(0.68,0.68,0.234),
	RGB{Float64}(0.69,0.69,0.1915),
	RGB{Float64}(0.7,0.7,0.1489),
	RGB{Float64}(0.71,0.71,0.1064),
	RGB{Float64}(0.72,0.72,0.0638),
	RGB{Float64}(0.73,0.73,0.0213),
	RGB{Float64}(0.74,0.74,0.0189),
	RGB{Float64}(0.75,0.75,0.0566),
	RGB{Float64}(0.76,0.76,0.0943),
	RGB{Float64}(0.77,0.77,0.1321),
	RGB{Float64}(0.78,0.78,0.1698),
	RGB{Float64}(0.79,0.79,0.2075),
	RGB{Float64}(0.8,0.8,0.2453),
	RGB{Float64}(0.81,0.81,0.283),
	RGB{Float64}(0.82,0.82,0.3208),
	RGB{Float64}(0.83,0.83,0.3585),
	RGB{Float64}(0.84,0.84,0.3962),
	RGB{Float64}(0.85,0.85,0.434),
	RGB{Float64}(0.86,0.86,0.4717),
	RGB{Float64}(0.87,0.87,0.5094),
	RGB{Float64}(0.88,0.88,0.5472),
	RGB{Float64}(0.89,0.89,0.5849),
	RGB{Float64}(0.9,0.9,0.6226),
	RGB{Float64}(0.91,0.91,0.6604),
	RGB{Float64}(0.92,0.92,0.6981),
	RGB{Float64}(0.93,0.93,0.7358),
	RGB{Float64}(0.94,0.94,0.7736),
	RGB{Float64}(0.95,0.95,0.8113),
	RGB{Float64}(0.96,0.96,0.8491),
	RGB{Float64}(0.97,0.97,0.8868),
	RGB{Float64}(0.98,0.98,0.9245),
	RGB{Float64}(0.99,0.99,0.9623),
	RGB{Float64}(1.0,1.0,1.0)], "matplotlib", "sampled color schemes, Stern special color table from Interactive Data Language software")

loadcolorscheme(:gist_rainbow, [
	RGB{Float64}(1.0,0.0,0.16),
	RGB{Float64}(1.0,0.0,0.1067),
	RGB{Float64}(1.0,0.0,0.0533),
	RGB{Float64}(1.0,0.0,0.0),
	RGB{Float64}(1.0,0.0541,0.0),
	RGB{Float64}(1.0,0.1081,0.0),
	RGB{Float64}(1.0,0.1622,0.0),
	RGB{Float64}(1.0,0.2162,0.0),
	RGB{Float64}(1.0,0.2703,0.0),
	RGB{Float64}(1.0,0.3243,0.0),
	RGB{Float64}(1.0,0.3784,0.0),
	RGB{Float64}(1.0,0.4324,0.0),
	RGB{Float64}(1.0,0.4865,0.0),
	RGB{Float64}(1.0,0.5405,0.0),
	RGB{Float64}(1.0,0.5946,0.0),
	RGB{Float64}(1.0,0.6486,0.0),
	RGB{Float64}(1.0,0.7027,0.0),
	RGB{Float64}(1.0,0.7568,0.0),
	RGB{Float64}(1.0,0.8108,0.0),
	RGB{Float64}(1.0,0.8649,0.0),
	RGB{Float64}(1.0,0.9189,0.0),
	RGB{Float64}(1.0,0.973,0.0),
	RGB{Float64}(0.973,1.0,0.0),
	RGB{Float64}(0.9189,1.0,0.0),
	RGB{Float64}(0.8649,1.0,0.0),
	RGB{Float64}(0.8108,1.0,0.0),
	RGB{Float64}(0.7568,1.0,0.0),
	RGB{Float64}(0.7027,1.0,0.0),
	RGB{Float64}(0.6486,1.0,0.0),
	RGB{Float64}(0.5946,1.0,0.0),
	RGB{Float64}(0.5405,1.0,0.0),
	RGB{Float64}(0.4865,1.0,0.0),
	RGB{Float64}(0.4324,1.0,0.0),
	RGB{Float64}(0.3784,1.0,0.0),
	RGB{Float64}(0.3243,1.0,0.0),
	RGB{Float64}(0.2703,1.0,0.0),
	RGB{Float64}(0.2162,1.0,0.0),
	RGB{Float64}(0.1622,1.0,0.0),
	RGB{Float64}(0.1081,1.0,0.0),
	RGB{Float64}(0.0541,1.0,0.0),
	RGB{Float64}(0.0,1.0,0.0),
	RGB{Float64}(0.0,1.0,0.0538),
	RGB{Float64}(0.0,1.0,0.1075),
	RGB{Float64}(0.0,1.0,0.1613),
	RGB{Float64}(0.0,1.0,0.2151),
	RGB{Float64}(0.0,1.0,0.2688),
	RGB{Float64}(0.0,1.0,0.3226),
	RGB{Float64}(0.0,1.0,0.3763),
	RGB{Float64}(0.0,1.0,0.4301),
	RGB{Float64}(0.0,1.0,0.4839),
	RGB{Float64}(0.0,1.0,0.5376),
	RGB{Float64}(0.0,1.0,0.5914),
	RGB{Float64}(0.0,1.0,0.6452),
	RGB{Float64}(0.0,1.0,0.6989),
	RGB{Float64}(0.0,1.0,0.7527),
	RGB{Float64}(0.0,1.0,0.8065),
	RGB{Float64}(0.0,1.0,0.8602),
	RGB{Float64}(0.0,1.0,0.914),
	RGB{Float64}(0.0,1.0,0.9677),
	RGB{Float64}(0.0,0.9783,1.0),
	RGB{Float64}(0.0,0.9239,1.0),
	RGB{Float64}(0.0,0.8696,1.0),
	RGB{Float64}(0.0,0.8152,1.0),
	RGB{Float64}(0.0,0.7609,1.0),
	RGB{Float64}(0.0,0.7065,1.0),
	RGB{Float64}(0.0,0.6522,1.0),
	RGB{Float64}(0.0,0.5978,1.0),
	RGB{Float64}(0.0,0.5435,1.0),
	RGB{Float64}(0.0,0.4891,1.0),
	RGB{Float64}(0.0,0.4348,1.0),
	RGB{Float64}(0.0,0.3804,1.0),
	RGB{Float64}(0.0,0.3261,1.0),
	RGB{Float64}(0.0,0.2717,1.0),
	RGB{Float64}(0.0,0.2174,1.0),
	RGB{Float64}(0.0,0.163,1.0),
	RGB{Float64}(0.0,0.1087,1.0),
	RGB{Float64}(0.0,0.0543,1.0),
	RGB{Float64}(0.0,0.0,1.0),
	RGB{Float64}(0.0543,0.0,1.0),
	RGB{Float64}(0.1087,0.0,1.0),
	RGB{Float64}(0.163,0.0,1.0),
	RGB{Float64}(0.2174,0.0,1.0),
	RGB{Float64}(0.2717,0.0,1.0),
	RGB{Float64}(0.3261,0.0,1.0),
	RGB{Float64}(0.3804,0.0,1.0),
	RGB{Float64}(0.4348,0.0,1.0),
	RGB{Float64}(0.4891,0.0,1.0),
	RGB{Float64}(0.5435,0.0,1.0),
	RGB{Float64}(0.5978,0.0,1.0),
	RGB{Float64}(0.6522,0.0,1.0),
	RGB{Float64}(0.7065,0.0,1.0),
	RGB{Float64}(0.7609,0.0,1.0),
	RGB{Float64}(0.8152,0.0,1.0),
	RGB{Float64}(0.8696,0.0,1.0),
	RGB{Float64}(0.9239,0.0,1.0),
	RGB{Float64}(0.9783,0.0,1.0),
	RGB{Float64}(1.0,0.0,0.9674),
	RGB{Float64}(1.0,0.0,0.913),
	RGB{Float64}(1.0,0.0,0.8587),
	RGB{Float64}(1.0,0.0,0.8043),
	RGB{Float64}(1.0,0.0,0.75)], "matplotlib", "sampled color schemes, runs through the colors in spectral order from red to violet at full saturation (like hsv but not cyclic)")

loadcolorscheme(:seismic, [
	RGB{Float64}(0.0,0.0,0.3),
	RGB{Float64}(0.0,0.0,0.328),
	RGB{Float64}(0.0,0.0,0.356),
	RGB{Float64}(0.0,0.0,0.384),
	RGB{Float64}(0.0,0.0,0.412),
	RGB{Float64}(0.0,0.0,0.44),
	RGB{Float64}(0.0,0.0,0.468),
	RGB{Float64}(0.0,0.0,0.496),
	RGB{Float64}(0.0,0.0,0.524),
	RGB{Float64}(0.0,0.0,0.552),
	RGB{Float64}(0.0,0.0,0.58),
	RGB{Float64}(0.0,0.0,0.608),
	RGB{Float64}(0.0,0.0,0.636),
	RGB{Float64}(0.0,0.0,0.664),
	RGB{Float64}(0.0,0.0,0.692),
	RGB{Float64}(0.0,0.0,0.72),
	RGB{Float64}(0.0,0.0,0.748),
	RGB{Float64}(0.0,0.0,0.776),
	RGB{Float64}(0.0,0.0,0.804),
	RGB{Float64}(0.0,0.0,0.832),
	RGB{Float64}(0.0,0.0,0.86),
	RGB{Float64}(0.0,0.0,0.888),
	RGB{Float64}(0.0,0.0,0.916),
	RGB{Float64}(0.0,0.0,0.944),
	RGB{Float64}(0.0,0.0,0.972),
	RGB{Float64}(0.0,0.0,1.0),
	RGB{Float64}(0.04,0.04,1.0),
	RGB{Float64}(0.08,0.08,1.0),
	RGB{Float64}(0.12,0.12,1.0),
	RGB{Float64}(0.16,0.16,1.0),
	RGB{Float64}(0.2,0.2,1.0),
	RGB{Float64}(0.24,0.24,1.0),
	RGB{Float64}(0.28,0.28,1.0),
	RGB{Float64}(0.32,0.32,1.0),
	RGB{Float64}(0.36,0.36,1.0),
	RGB{Float64}(0.4,0.4,1.0),
	RGB{Float64}(0.44,0.44,1.0),
	RGB{Float64}(0.48,0.48,1.0),
	RGB{Float64}(0.52,0.52,1.0),
	RGB{Float64}(0.56,0.56,1.0),
	RGB{Float64}(0.6,0.6,1.0),
	RGB{Float64}(0.64,0.64,1.0),
	RGB{Float64}(0.68,0.68,1.0),
	RGB{Float64}(0.72,0.72,1.0),
	RGB{Float64}(0.76,0.76,1.0),
	RGB{Float64}(0.8,0.8,1.0),
	RGB{Float64}(0.84,0.84,1.0),
	RGB{Float64}(0.88,0.88,1.0),
	RGB{Float64}(0.92,0.92,1.0),
	RGB{Float64}(0.96,0.96,1.0),
	RGB{Float64}(1.0,1.0,1.0),
	RGB{Float64}(1.0,0.96,0.96),
	RGB{Float64}(1.0,0.92,0.92),
	RGB{Float64}(1.0,0.88,0.88),
	RGB{Float64}(1.0,0.84,0.84),
	RGB{Float64}(1.0,0.8,0.8),
	RGB{Float64}(1.0,0.76,0.76),
	RGB{Float64}(1.0,0.72,0.72),
	RGB{Float64}(1.0,0.68,0.68),
	RGB{Float64}(1.0,0.64,0.64),
	RGB{Float64}(1.0,0.6,0.6),
	RGB{Float64}(1.0,0.56,0.56),
	RGB{Float64}(1.0,0.52,0.52),
	RGB{Float64}(1.0,0.48,0.48),
	RGB{Float64}(1.0,0.44,0.44),
	RGB{Float64}(1.0,0.4,0.4),
	RGB{Float64}(1.0,0.36,0.36),
	RGB{Float64}(1.0,0.32,0.32),
	RGB{Float64}(1.0,0.28,0.28),
	RGB{Float64}(1.0,0.24,0.24),
	RGB{Float64}(1.0,0.2,0.2),
	RGB{Float64}(1.0,0.16,0.16),
	RGB{Float64}(1.0,0.12,0.12),
	RGB{Float64}(1.0,0.08,0.08),
	RGB{Float64}(1.0,0.04,0.04),
	RGB{Float64}(1.0,0.0,0.0),
	RGB{Float64}(0.98,0.0,0.0),
	RGB{Float64}(0.96,0.0,0.0),
	RGB{Float64}(0.94,0.0,0.0),
	RGB{Float64}(0.92,0.0,0.0),
	RGB{Float64}(0.9,0.0,0.0),
	RGB{Float64}(0.88,0.0,0.0),
	RGB{Float64}(0.86,0.0,0.0),
	RGB{Float64}(0.84,0.0,0.0),
	RGB{Float64}(0.82,0.0,0.0),
	RGB{Float64}(0.8,0.0,0.0),
	RGB{Float64}(0.78,0.0,0.0),
	RGB{Float64}(0.76,0.0,0.0),
	RGB{Float64}(0.74,0.0,0.0),
	RGB{Float64}(0.72,0.0,0.0),
	RGB{Float64}(0.7,0.0,0.0),
	RGB{Float64}(0.68,0.0,0.0),
	RGB{Float64}(0.66,0.0,0.0),
	RGB{Float64}(0.64,0.0,0.0),
	RGB{Float64}(0.62,0.0,0.0),
	RGB{Float64}(0.6,0.0,0.0),
	RGB{Float64}(0.58,0.0,0.0),
	RGB{Float64}(0.56,0.0,0.0),
	RGB{Float64}(0.54,0.0,0.0),
	RGB{Float64}(0.52,0.0,0.0),
	RGB{Float64}(0.5,0.0,0.0)], "matplotlib", "sampled color schemes, diverging blue-white-red")

loadcolorscheme(:terrain, [
	RGB{Float64}(0.2,0.2,0.6),
	RGB{Float64}(0.1867,0.2267,0.6267),
	RGB{Float64}(0.1733,0.2533,0.6533),
	RGB{Float64}(0.16,0.28,0.68),
	RGB{Float64}(0.1467,0.3067,0.7067),
	RGB{Float64}(0.1333,0.3333,0.7333),
	RGB{Float64}(0.12,0.36,0.76),
	RGB{Float64}(0.1067,0.3867,0.7867),
	RGB{Float64}(0.0933,0.4133,0.8133),
	RGB{Float64}(0.08,0.44,0.84),
	RGB{Float64}(0.0667,0.4667,0.8667),
	RGB{Float64}(0.0533,0.4933,0.8933),
	RGB{Float64}(0.04,0.52,0.92),
	RGB{Float64}(0.0267,0.5467,0.9467),
	RGB{Float64}(0.0133,0.5733,0.9733),
	RGB{Float64}(0.0,0.6,1.0),
	RGB{Float64}(0.0,0.62,0.94),
	RGB{Float64}(0.0,0.64,0.88),
	RGB{Float64}(0.0,0.66,0.82),
	RGB{Float64}(0.0,0.68,0.76),
	RGB{Float64}(0.0,0.7,0.7),
	RGB{Float64}(0.0,0.72,0.64),
	RGB{Float64}(0.0,0.74,0.58),
	RGB{Float64}(0.0,0.76,0.52),
	RGB{Float64}(0.0,0.78,0.46),
	RGB{Float64}(0.0,0.8,0.4),
	RGB{Float64}(0.04,0.808,0.408),
	RGB{Float64}(0.08,0.816,0.416),
	RGB{Float64}(0.12,0.824,0.424),
	RGB{Float64}(0.16,0.832,0.432),
	RGB{Float64}(0.2,0.84,0.44),
	RGB{Float64}(0.24,0.848,0.448),
	RGB{Float64}(0.28,0.856,0.456),
	RGB{Float64}(0.32,0.864,0.464),
	RGB{Float64}(0.36,0.872,0.472),
	RGB{Float64}(0.4,0.88,0.48),
	RGB{Float64}(0.44,0.888,0.488),
	RGB{Float64}(0.48,0.896,0.496),
	RGB{Float64}(0.52,0.904,0.504),
	RGB{Float64}(0.56,0.912,0.512),
	RGB{Float64}(0.6,0.92,0.52),
	RGB{Float64}(0.64,0.928,0.528),
	RGB{Float64}(0.68,0.936,0.536),
	RGB{Float64}(0.72,0.944,0.544),
	RGB{Float64}(0.76,0.952,0.552),
	RGB{Float64}(0.8,0.96,0.56),
	RGB{Float64}(0.84,0.968,0.568),
	RGB{Float64}(0.88,0.976,0.576),
	RGB{Float64}(0.92,0.984,0.584),
	RGB{Float64}(0.96,0.992,0.592),
	RGB{Float64}(1.0,1.0,0.6),
	RGB{Float64}(0.98,0.9744,0.5892),
	RGB{Float64}(0.96,0.9488,0.5784),
	RGB{Float64}(0.94,0.9232,0.5676),
	RGB{Float64}(0.92,0.8976,0.5568),
	RGB{Float64}(0.9,0.872,0.546),
	RGB{Float64}(0.88,0.8464,0.5352),
	RGB{Float64}(0.86,0.8208,0.5244),
	RGB{Float64}(0.84,0.7952,0.5136),
	RGB{Float64}(0.82,0.7696,0.5028),
	RGB{Float64}(0.8,0.744,0.492),
	RGB{Float64}(0.78,0.7184,0.4812),
	RGB{Float64}(0.76,0.6928,0.4704),
	RGB{Float64}(0.74,0.6672,0.4596),
	RGB{Float64}(0.72,0.6416,0.4488),
	RGB{Float64}(0.7,0.616,0.438),
	RGB{Float64}(0.68,0.5904,0.4272),
	RGB{Float64}(0.66,0.5648,0.4164),
	RGB{Float64}(0.64,0.5392,0.4056),
	RGB{Float64}(0.62,0.5136,0.3948),
	RGB{Float64}(0.6,0.488,0.384),
	RGB{Float64}(0.58,0.4624,0.3732),
	RGB{Float64}(0.56,0.4368,0.3624),
	RGB{Float64}(0.54,0.4112,0.3516),
	RGB{Float64}(0.52,0.3856,0.3408),
	RGB{Float64}(0.5,0.36,0.33),
	RGB{Float64}(0.52,0.3856,0.3568),
	RGB{Float64}(0.54,0.4112,0.3836),
	RGB{Float64}(0.56,0.4368,0.4104),
	RGB{Float64}(0.58,0.4624,0.4372),
	RGB{Float64}(0.6,0.488,0.464),
	RGB{Float64}(0.62,0.5136,0.4908),
	RGB{Float64}(0.64,0.5392,0.5176),
	RGB{Float64}(0.66,0.5648,0.5444),
	RGB{Float64}(0.68,0.5904,0.5712),
	RGB{Float64}(0.7,0.616,0.598),
	RGB{Float64}(0.72,0.6416,0.6248),
	RGB{Float64}(0.74,0.6672,0.6516),
	RGB{Float64}(0.76,0.6928,0.6784),
	RGB{Float64}(0.78,0.7184,0.7052),
	RGB{Float64}(0.8,0.744,0.732),
	RGB{Float64}(0.82,0.7696,0.7588),
	RGB{Float64}(0.84,0.7952,0.7856),
	RGB{Float64}(0.86,0.8208,0.8124),
	RGB{Float64}(0.88,0.8464,0.8392),
	RGB{Float64}(0.9,0.872,0.866),
	RGB{Float64}(0.92,0.8976,0.8928),
	RGB{Float64}(0.94,0.9232,0.9196),
	RGB{Float64}(0.96,0.9488,0.9464),
	RGB{Float64}(0.98,0.9744,0.9732),
	RGB{Float64}(1.0,1.0,1.0)], "matplotlib", "sampled color schemes, mapmaker's colors, blue-green-yellow-brown-white, originally from IGOR Pro")

loadcolorscheme(:tab10, [
	RGB{Float64}(0.1216,0.4667,0.7059),
	RGB{Float64}(1.0,0.498,0.0549),
	RGB{Float64}(0.1725,0.6275,0.1725),
	RGB{Float64}(0.8392,0.1529,0.1569),
	RGB{Float64}(0.5804,0.4039,0.7412),
	RGB{Float64}(0.549,0.3373,0.2941),
	RGB{Float64}(0.8902,0.4667,0.7608),
	RGB{Float64}(0.498,0.498,0.498),
	RGB{Float64}(0.7373,0.7412,0.1333),
	RGB{Float64}(0.0902,0.7451,0.8118)], "matplotlib", "sampled color schemes, qualitative, ")

loadcolorscheme(:tab20, [
	RGB{Float64}(0.1216,0.4667,0.7059),
	RGB{Float64}(0.6824,0.7804,0.9098),
	RGB{Float64}(1.0,0.498,0.0549),
	RGB{Float64}(1.0,0.7333,0.4706),
	RGB{Float64}(0.1725,0.6275,0.1725),
	RGB{Float64}(0.5961,0.8745,0.5412),
	RGB{Float64}(0.8392,0.1529,0.1569),
	RGB{Float64}(1.0,0.5961,0.5882),
	RGB{Float64}(0.5804,0.4039,0.7412),
	RGB{Float64}(0.7725,0.6902,0.8353),
	RGB{Float64}(0.549,0.3373,0.2941),
	RGB{Float64}(0.7686,0.6118,0.5804),
	RGB{Float64}(0.8902,0.4667,0.7608),
	RGB{Float64}(0.9686,0.7137,0.8235),
	RGB{Float64}(0.498,0.498,0.498),
	RGB{Float64}(0.7804,0.7804,0.7804),
	RGB{Float64}(0.7373,0.7412,0.1333),
	RGB{Float64}(0.8588,0.8588,0.5529),
	RGB{Float64}(0.0902,0.7451,0.8118),
	RGB{Float64}(0.6196,0.8549,0.898)], "matplotlib", "sampled color schemes, qualitative, ")

loadcolorscheme(:tab20b, [
	RGB{Float64}(0.2235,0.2314,0.4745),
	RGB{Float64}(0.3216,0.3294,0.6392),
	RGB{Float64}(0.4196,0.4314,0.8118),
	RGB{Float64}(0.6118,0.6196,0.8706),
	RGB{Float64}(0.3882,0.4745,0.2235),
	RGB{Float64}(0.549,0.6353,0.3216),
	RGB{Float64}(0.7098,0.8118,0.4196),
	RGB{Float64}(0.8078,0.8588,0.6118),
	RGB{Float64}(0.549,0.4275,0.1922),
	RGB{Float64}(0.7412,0.6196,0.2235),
	RGB{Float64}(0.9059,0.7294,0.3216),
	RGB{Float64}(0.9059,0.7961,0.5804),
	RGB{Float64}(0.5176,0.2353,0.2235),
	RGB{Float64}(0.6784,0.2863,0.2902),
	RGB{Float64}(0.8392,0.3804,0.4196),
	RGB{Float64}(0.9059,0.5882,0.6118),
	RGB{Float64}(0.4824,0.2549,0.451),
	RGB{Float64}(0.6471,0.3176,0.5804),
	RGB{Float64}(0.8078,0.4275,0.7412),
	RGB{Float64}(0.8706,0.6196,0.8392)], "matplotlib", "sampled color schemes, qualitative, ")

loadcolorscheme(:tab20c, [
	RGB{Float64}(0.1922,0.5098,0.7412),
	RGB{Float64}(0.4196,0.6824,0.8392),
	RGB{Float64}(0.6196,0.7922,0.8824),
	RGB{Float64}(0.7765,0.8588,0.9373),
	RGB{Float64}(0.902,0.3333,0.051),
	RGB{Float64}(0.9922,0.5529,0.2353),
	RGB{Float64}(0.9922,0.6824,0.4196),
	RGB{Float64}(0.9922,0.8157,0.6353),
	RGB{Float64}(0.1922,0.6392,0.3294),
	RGB{Float64}(0.4549,0.7686,0.4627),
	RGB{Float64}(0.6314,0.851,0.6078),
	RGB{Float64}(0.7804,0.9137,0.7529),
	RGB{Float64}(0.4588,0.4196,0.6941),
	RGB{Float64}(0.6196,0.6039,0.7843),
	RGB{Float64}(0.7373,0.7412,0.8627),
	RGB{Float64}(0.8549,0.8549,0.9216),
	RGB{Float64}(0.3882,0.3882,0.3882),
	RGB{Float64}(0.5882,0.5882,0.5882),
	RGB{Float64}(0.7412,0.7412,0.7412),
	RGB{Float64}(0.851,0.851,0.851)], "matplotlib", "sampled color schemes, qualitative, ")

loadcolorscheme(:Wistia, [
		RGB{Float64}(0.8941176470588236,1.0,0.47843137254901963),
		RGB{Float64}(0.8983529411764706,0.9963921568627451,0.46337254901960784),
		RGB{Float64}(0.9025882352941177,0.9927843137254901,0.4483137254901961),
		RGB{Float64}(0.9068235294117647,0.9891764705882353,0.4332549019607843),
		RGB{Float64}(0.9110588235294118,0.9855686274509804,0.4181960784313726),
		RGB{Float64}(0.9152941176470588,0.9819607843137255,0.4031372549019608),
		RGB{Float64}(0.9195294117647059,0.9783529411764705,0.38807843137254905),
		RGB{Float64}(0.9237647058823529,0.9747450980392157,0.37301960784313726),
		RGB{Float64}(0.928,0.9711372549019608,0.3579607843137255),
		RGB{Float64}(0.932235294117647,0.9675294117647059,0.3429019607843138),
		RGB{Float64}(0.9364705882352942,0.9639215686274509,0.327843137254902),
		RGB{Float64}(0.9407058823529412,0.9603137254901961,0.3127843137254902),
		RGB{Float64}(0.9449411764705883,0.9567058823529412,0.29772549019607847),
		RGB{Float64}(0.9491764705882353,0.9530980392156863,0.2826666666666667),
		RGB{Float64}(0.9534117647058824,0.9494901960784313,0.26760784313725494),
		RGB{Float64}(0.9576470588235294,0.9458823529411765,0.25254901960784315),
		RGB{Float64}(0.9618823529411765,0.9422745098039216,0.2374901960784314),
		RGB{Float64}(0.9661176470588235,0.9386666666666666,0.22243137254901962),
		RGB{Float64}(0.9703529411764706,0.9350588235294117,0.2073725490196079),
		RGB{Float64}(0.9745882352941176,0.9314509803921569,0.1923137254901961),
		RGB{Float64}(0.9788235294117648,0.927843137254902,0.1772549019607843),
		RGB{Float64}(0.9830588235294118,0.924235294117647,0.16219607843137257),
		RGB{Float64}(0.9872941176470589,0.9206274509803921,0.14713725490196083),
		RGB{Float64}(0.9915294117647059,0.9170196078431372,0.13207843137254904),
		RGB{Float64}(0.9957647058823529,0.9134117647058824,0.11701960784313731),
		RGB{Float64}(1.0,0.9098039215686274,0.10196078431372552),
		RGB{Float64}(1.0,0.9030588235294118,0.09788235294117646),
		RGB{Float64}(1.0,0.8963137254901961,0.09380392156862744),
		RGB{Float64}(1.0,0.8895686274509804,0.08972549019607842),
		RGB{Float64}(1.0,0.8828235294117647,0.08564705882352942),
		RGB{Float64}(1.0,0.876078431372549,0.0815686274509804),
		RGB{Float64}(1.0,0.8693333333333333,0.07749019607843137),
		RGB{Float64}(1.0,0.8625882352941177,0.07341176470588234),
		RGB{Float64}(1.0,0.8558431372549019,0.06933333333333333),
		RGB{Float64}(1.0,0.8490980392156863,0.0652549019607843),
		RGB{Float64}(1.0,0.8423529411764706,0.061176470588235304),
		RGB{Float64}(1.0,0.8356078431372549,0.05709803921568628),
		RGB{Float64}(1.0,0.8288627450980393,0.05301960784313726),
		RGB{Float64}(1.0,0.8221176470588235,0.04894117647058823),
		RGB{Float64}(1.0,0.8153725490196079,0.04486274509803921),
		RGB{Float64}(1.0,0.8086274509803921,0.040784313725490184),
		RGB{Float64}(1.0,0.8018823529411765,0.036705882352941185),
		RGB{Float64}(1.0,0.7951372549019609,0.03262745098039216),
		RGB{Float64}(1.0,0.7883921568627451,0.028549019607843146),
		RGB{Float64}(1.0,0.7816470588235295,0.02447058823529412),
		RGB{Float64}(1.0,0.7749019607843137,0.020392156862745092),
		RGB{Float64}(1.0,0.7681568627450981,0.016313725490196065),
		RGB{Float64}(1.0,0.7614117647058825,0.012235294117647066),
		RGB{Float64}(1.0,0.7546666666666667,0.00815686274509804),
		RGB{Float64}(1.0,0.747921568627451,0.004078431372549027),
		RGB{Float64}(1.0,0.7411764705882353,0.0),
		RGB{Float64}(1.0,0.7366274509803922,0.0),
		RGB{Float64}(1.0,0.732078431372549,0.0),
		RGB{Float64}(1.0,0.7275294117647059,0.0),
		RGB{Float64}(1.0,0.7229803921568627,0.0),
		RGB{Float64}(1.0,0.7184313725490196,0.0),
		RGB{Float64}(1.0,0.7138823529411764,0.0),
		RGB{Float64}(1.0,0.7093333333333334,0.0),
		RGB{Float64}(1.0,0.7047843137254902,0.0),
		RGB{Float64}(1.0,0.7002352941176471,0.0),
		RGB{Float64}(1.0,0.6956862745098039,0.0),
		RGB{Float64}(1.0,0.6911372549019608,0.0),
		RGB{Float64}(1.0,0.6865882352941176,0.0),
		RGB{Float64}(1.0,0.6820392156862746,0.0),
		RGB{Float64}(1.0,0.6774901960784314,0.0),
		RGB{Float64}(1.0,0.6729411764705883,0.0),
		RGB{Float64}(1.0,0.6683921568627451,0.0),
		RGB{Float64}(1.0,0.663843137254902,0.0),
		RGB{Float64}(1.0,0.6592941176470588,0.0),
		RGB{Float64}(1.0,0.6547450980392158,0.0),
		RGB{Float64}(1.0,0.6501960784313726,0.0),
		RGB{Float64}(1.0,0.6456470588235295,0.0),
		RGB{Float64}(1.0,0.6410980392156863,0.0),
		RGB{Float64}(1.0,0.6365490196078432,0.0),
		RGB{Float64}(1.0,0.632,0.0),
		RGB{Float64}(1.0,0.6274509803921569,0.0),
		RGB{Float64}(0.9995294117647059,0.6222745098039215,0.0),
		RGB{Float64}(0.9990588235294118,0.6170980392156863,0.0),
		RGB{Float64}(0.9985882352941177,0.611921568627451,0.0),
		RGB{Float64}(0.9981176470588236,0.6067450980392156,0.0),
		RGB{Float64}(0.9976470588235294,0.6015686274509804,0.0),
		RGB{Float64}(0.9971764705882353,0.596392156862745,0.0),
		RGB{Float64}(0.9967058823529412,0.5912156862745098,0.0),
		RGB{Float64}(0.9962352941176471,0.5860392156862745,0.0),
		RGB{Float64}(0.995764705882353,0.5808627450980393,0.0),
		RGB{Float64}(0.9952941176470589,0.5756862745098039,0.0),
		RGB{Float64}(0.9948235294117648,0.5705098039215686,0.0),
		RGB{Float64}(0.9943529411764707,0.5653333333333334,0.0),
		RGB{Float64}(0.9938823529411764,0.560156862745098,0.0),
		RGB{Float64}(0.9934117647058823,0.5549803921568628,0.0),
		RGB{Float64}(0.9929411764705882,0.5498039215686275,0.0),
		RGB{Float64}(0.9924705882352941,0.5446274509803921,0.0),
		RGB{Float64}(0.992,0.5394509803921569,0.0),
		RGB{Float64}(0.9915294117647059,0.5342745098039215,0.0),
		RGB{Float64}(0.9910588235294118,0.5290980392156863,0.0),
		RGB{Float64}(0.9905882352941177,0.523921568627451,0.0),
		RGB{Float64}(0.9901176470588235,0.5187450980392158,0.0),
		RGB{Float64}(0.9896470588235294,0.5135686274509804,0.0),
		RGB{Float64}(0.9891764705882353,0.5083921568627451,0.0),
		RGB{Float64}(0.9887058823529412,0.5032156862745099,0.0),
	], "matplotlib", "Wistia is a colorblind-friendly heatmap palette relies on a green-to-red spectrum, which typically implies intensity or activity. For the red/green colorblind, however, these hues are particularly difficult to distinguish bewteen. Most colorblind-friendly solutions rely on a different set of hues altogether (usually yellows and purples) to solve this problem, but this palette maintains the red/green symbolism while achieving deuteranopic legibility by varying the perceived brightness of the hues")


text:
using Statistics
using Plots

mutable struct PlayConfig
    train_rate::Int         # steps/sec
    play_rate::Float16      # games/cpu-sec
    reanalyze_rate::Float16 # reanalyzes/cpu-sec
    num_cpus::Int           # num servers * cpus-per-server
    num_play_cpus::Float16  # num cpus playing (vs reanalyzing)
    function PlayConfig(;
        train_rate,
        play_rate,
        reanalyze_rate,
        num_cpus,
        num_play_cpus,
        )
        new(
            train_rate,
            play_rate,
            reanalyze_rate,
            num_cpus,
            num_play_cpus,
        )
    end
end

getnumreanalyzecpus(c::PlayConfig) = c.num_cpus - c.num_play_cpus

struct Record
    second_idx::Int
    num_games::Int
    training_step::Int
    avg_game_step::Float16
    median_game_step::Int
end

Record() = Record(0,0,0,0,0)

function Record(world, config, games)
    Record(
        world.second,
        length(games),
        gettrainingstep(world, config),
        mean(getfield.(games, :step)),
        Int(median(getfield.(games, :step))),
    )
end

getquality(r::Record) = r.avg_game_step / r.training_step

mutable struct Game
    step::Int
end

mutable struct World
    second::Int
end

function gettrainingstep(world, config)
    # (1300) -> 1000
    # (1999) -> 1000
    # (2000) -> 2000
    unfloored = config.train_rate * world.second
    floor(unfloored / 1000) * 1000 |> Int
end

function sim(n, config; games=[], world=World(), start=Record())
    records = [start]
    from = world.second + 1
    to = world.second + n
    for t in from:to
        world.second = t
        games = updategames!(
            games,
            world,
            config
        )
        push!(
            records,
            Record(world, config, games),
        )
    end
    records
end

function updategames!(games, world, config)
    reanalyze_count = getnumreanalyzecpus(config) * config.reanalyze_rate |> round |> Int
    curr_step = gettrainingstep(world, config)
    setfield!.(
        games[1:reanalyze_count],
        :step,
        curr_step,
    )
    sort!(games, by=x->x.step)
end

function ex1()
    config = PlayConfig(;
        train_rate=10,      # steps/sec
        play_rate=3.5,      # games/cpu-sec
        reanalyze_rate=3.5, # reanalyzes/cpu-sec
        num_cpus=1,      # num servers * cpus-per-server
        num_play_cpus=0,    # num cpus playing (vs reanalyzing)
    )
    world = World(100)
    curr_step = gettrainingstep(world, config)
    games = [Game(curr_step) for _ in 1:50_000]
    start = Record(world, config, games)
    #n = 1001 # seconds
    n = 100*60 # minutes * seconds-per-minute
    records = sim(n, config; games=games, world=world, start=start)
    return records
end

@time recs = ex1()
plot(getfield.(recs, :avg_game_step))
plot!(getfield.(recs, :training_step))

plot(getquality.(recs))

#Tests
updategames!(games, world, config)

ext: jl


text:
using PyCall

gi = pyimport("gi")
gi.require_version("Gtk", "3.0")

grepo = pyimport("gi.repository")
gtk = pyimport("gi.repository.Gtk")

win = gtk.Window(title="Hello World")
win.connect("destroy", gtk.main_quit)
win.show_all()
gtk.main()


text:
using JuMP
using CPLEX

"""
Layer 1 is the input layer and layer n is the output layer.
Number of nodes in the input layer is the number of inputs.
Numer of nodes in the output layer is the number of outputs.
``w`` is the dictionary of weights - each edge is associated with a weight.
``b`` is the dictionary of biases - each node is associated with a bias.
Layer numbering: 1, ... , n.
Edge numbering: Each edge is associate with three numbers L and (I, J)
where, L is the layer id in {1,..., n}, I (J) is the from (to) node.
An edge in with layer id L connects nodes in layer (L) to (L+1)
"""

mutable struct EdgeId
    I::Int
    J::Int
end

Base.hash(a::EdgeId, h::UInt) = hash(a.I, hash(a.J, hash(:EdgeId, h)))
Base.isequal(a::EdgeId, b::EdgeId) = isequal(a.I, b.I) && isequal(a.J, b.J) && true
Base.:(==)(a::EdgeId, b::EdgeId) = isequal(a.I, b.I) && isequal(a.J, b.J) && true

function create_edges(num_nodes_i::Int, num_nodes_j::Int)::Vector{Tuple{Int,Int}}
    edges = Vector{Tuple{Int,Int}}()
    nodes_fr = collect(1:num_nodes_i)
    nodes_to = collect(1:num_nodes_j)
    for i in nodes_fr
        for j in nodes_to
            push!(edges, (i, j))
        end
    end
    return edges
end

function create_empty_weights(num_layers::Int, num_nodes_in_layer::Vector{Int})::Dict
    weights = Dict()
    for l = 1:(num_layers-1)
        num_nodes_fr = num_nodes_in_layer[l]
        num_nodes_to = num_nodes_in_layer[l+1]
        weights[l] = Dict()
        edges = create_edges(num_nodes_fr, num_nodes_to)
        for edge in edges
            weights[l][EdgeId(edge[1], edge[2])] = 0.0
        end
    end
    return weights
end

function create_empty_biases(num_layers::Int, num_nodes_in_layer::Vector{Int})::Dict
    biases = Dict()
    for l = 1:num_layers
        biases[l] = Dict()
        for i = 1:num_nodes_in_layer[l]
            biases[l][i] = 0.0
        end
    end
    return biases
end

function get_milp(
    num_layers::Int,
    num_nodes_in_layer::Vector{Int},
    w::Dict,
    b::Dict,
    input_range,
    output_range;
    m = JuMP.Model(),
)
    Mp = 1e6
    Mn = 1e6

    var = Dict()
    @assert num_nodes_in_layer[end] == 1
    # one variable for each node in the DNN
    var[:x] = @variable(m, [l in 1:num_layers, n in 1:num_nodes_in_layer[l]])
    x = var[:x]

    # lower bounds on each x variable for all the intermediate nodes
    @constraint(m, x_lb[l in 2:(num_layers-1), n in 1:num_nodes_in_layer[l]], x[l, n] >= 0)

    # two variables  for each intermediate node in DNN
    var[:s] = @variable(m, [l in 2:(num_layers-1), n in 1:num_nodes_in_layer[l]], lower_bound=0)
    var[:z] = @variable(m, [l in 2:(num_layers-1), n in 1:num_nodes_in_layer[l]], Bin)

    s = var[:s]
    z = var[:z]

    # input variables
    var[:input] = @variable(m, [1:num_nodes_in_layer[1]], base_name = "input")
    input = var[:input]

    # output variables
    var[:output] = @variable(m, base_name = "ouptut")
    output = var[:output]

    # input constraint
    @constraint(m, input_c[n in 1:num_nodes_in_layer[1]], x[1, n] == 2 *
        (input[n] - input_range[n][1]) / (input_range[n][2] - input_range[n][1]) - 1
    )

    # output constraint
    @constraint(m, output_denormalization, output == 0.5 *
        (x[num_layers, 1] + 1) * (output_range[2] - output_range[1]) + output_range[1]
    )

    # linking constraints
    @constraint(
        m,
        z1_implies_x0[l in 2:(num_layers-1), n in 1:num_nodes_in_layer[l]],
        x[l, n] <= Mp * (1 - z[l, n])
    )
    @constraint(
        m,
        z0_implies_s0[l in 2:(num_layers-1), n in 1:num_nodes_in_layer[l]],
        s[l, n] <= Mn * z[l, n]
    )

    # layer connections intermediate layers
    @constraint(
        m,
        layer_connections[l in 2:(num_layers-1), n in 1:num_nodes_in_layer[l]],
        sum(w[l-1][EdgeId(j, n)] * x[l-1, j] for j = 1:num_nodes_in_layer[l-1]) + b[l][n] ==
        x[l, n] - s[l, n]
    )

    # layer connection last layer
    @constraint(
        m,
        layer_connections_last,
        sum(
            w[num_layers-1][EdgeId(j, 1)] * x[num_layers-1, j]
            for j = 1:num_nodes_in_layer[num_layers-1]
        ) + b[num_layers][1] == x[num_layers, 1]
    )

    return m, var
end

function set_input(m, input, data)
    @constraint(m, [i = 1:length(data)], data[i] == input[i])
    return
end

function solve_model(m)
    set_optimizer(m, CPLEX.Optimizer)
    optimize!(m)
end


text:
"""
    CurveWarpingSRSFSpace(knots, quadweights = get_quad_weights(knots))

Space of SRSFs of curve warpings on knots `knots`. Points are represented by vectors
in ambient space (ℝ^(N+1) if there are `N` knots). Given quadrature weights are used
to compute inner products.
"""
struct CurveWarpingSRSFSpace{TK<:AbstractVector,TW<:AbstractVector} <: AbstractManifold{ℝ}
    knots::TK
    quadweights::TW
end

function CurveWarpingSRSFSpace(knots::AbstractVector)
    ws = get_quad_weights(knots)
    return CurveWarpingSRSFSpace(knots, ws)
end

function manifold_dimension(M::CurveWarpingSRSFSpace)
    return length(M.knots)
end

function representation_size(M::CurveWarpingSRSFSpace)
    return (length(M.knots) + 1,)
end

function isapprox(M::CurveWarpingSRSFSpace, p, q; kwargs...)
    return isapprox(distance(M, p, q), 0; kwargs...)
end

function isapprox(M::CurveWarpingSRSFSpace, p, X, Y; kwargs...)
    return isapprox(X, Y; kwargs...)
end

"""
    inner_ambient(M::CurveWarpingSRSFSpace, p, q)

Inner product in ambient space of points `p` and `q` on `M`. Takes into account quadrature
weights.
"""
function inner_ambient(M::CurveWarpingSRSFSpace, p, q)
    return sum(M.quadweights .* p .* q)
end

function distance(M::CurveWarpingSRSFSpace, p, q)
    pmq = p - q
    ppq = p + q
    return 2 * atan(sqrt(inner_ambient(M, pmq, pmq)), sqrt(inner_ambient(M, ppq, ppq)))
end

function embed!(::CurveWarpingSRSFSpace, q, p)
    copyto!(q, p)
    return q
end

function embed!(M::CurveWarpingSRSFSpace, Y, p, X)
    copyto!(Y, X)
    return Y
end

function project!(M::CurveWarpingSRSFSpace, q, p)
    scale = sqrt(inner_ambient(M, p, p))
    q .= p ./ scale
    return q
end

function project!(M::CurveWarpingSRSFSpace, Y, p, X)
    Y .= X .- inner_ambient(M, p, X) .* p
    return Y
end

function get_quad_weights(nodes::AbstractRange)
    n = length(nodes)
    dt = 1 / (n - 1)
    return dt / 2 .* [1; [2 for i in 1:(n - 2)]; 1]
    # not that precise for some reason
    #=if n % 2 == 1
        # Simpson's rule
        return dt / 3 .* [1; [i % 2 == 0 ? 2 : 4 for i in 1:(n - 2)]; 1]
    else
        # trapezoidal rule
        return dt / 2 .* [1; [2 for i in 1:(n - 2)]; 1]
    end=#

    # Simpson's 3/8
    #n%3 == 1 || error("argument mod 3 must be 1")
    #return 3dt/8 .* [1; [i%3==0 ? 2 : 3 for i in 1:n-2]; 1]
end

function exp!(M::CurveWarpingSRSFSpace, q, p, X)
    θ = norm(M, p, X)
    q .= cos(θ) .* p .+ Manifolds.usinc(θ) .* X
    return q
end

function log!(M::CurveWarpingSRSFSpace, X, p, q)
    cosθ = clamp(inner_ambient(M, p, q), -1, 1)
    θ = acos(cosθ)
    X .= (q .- cosθ .* p) ./ Manifolds.usinc(θ)
    return project!(M, X, p, X)
end

function inner(M::CurveWarpingSRSFSpace, p, X, Y)
    return inner_ambient(M, X, Y)
end

function vector_transport_to!(M::CurveWarpingSRSFSpace, Y, p, X, q, ::ParallelTransport)
    copyto!(Y, X)
    X_pq = log(M, p, q)
    X1 = norm(M, p, X_pq)
    if X1 > 0
        sum_pq = p + q
        factor = 2 * inner_ambient(M, X, q) / inner_ambient(M, sum_pq, sum_pq)
        Y .-= factor .* sum_pq
    end
    return Y
end

function zero_vector!(M::CurveWarpingSRSFSpace, X, p)
    fill!(X, 0)
    return X
end

const CurveWarpingSRSFGroup{TCWS<:CurveWarpingSRSFSpace} =
    GroupManifold{ℝ,TCWS,WarpingCompositionOperation}

function CurveWarpingSRSFGroup(cws::CurveWarpingSRSFSpace)
    return GroupManifold(cws, WarpingCompositionOperation())
end

function identity_element(cwg::CurveWarpingSRSFGroup)
    return ones(length(cwg.manifold.knots))
end
function identity_element(cwg::CurveWarpingSRSFGroup, a)
    return ones(eltype(a), length(cwg.manifold.knots))
end

function inv(cwg::CurveWarpingSRSFGroup, p)
    cws = CurveWarpingSpace(cwg.manifold.knots)
    pinv = inv(CurveWarpingGroup(cws), reverse_srsf(cws, p))
    return srsf(cws, pinv)
end
inv(::CurveWarpingSRSFGroup, p::Identity{WarpingCompositionOperation}) = p

function compose(cwg::CurveWarpingSRSFGroup, p1, p2)
    knots = cwg.manifold.knots
    cws = CurveWarpingSpace(knots)
    p1inv = reverse_srsf(cws, p1)
    p2w = make_warping(cws, p2)
    p2warped = map(t -> p2w(p1inv(t)), knots)
    return p2warped .* p1
end
function compose(cwg::CurveWarpingSRSFGroup, p1::Identity{WarpingCompositionOperation}, p2)
    return p2
end
function compose(cwg::CurveWarpingSRSFGroup, p1, p2::Identity{WarpingCompositionOperation})
    return p1
end
function compose(
    cwg::CurveWarpingSRSFGroup,
    p1::Identity{WarpingCompositionOperation},
    p2::Identity{WarpingCompositionOperation},
)
    return p1
end

"""
    CurveWarpingSRSFAction(M::AbstractManifold, p, cwg::CurveWarpingSRSFGroup)

Space of left actions of the group of SRSFs of curve warpings `cwg` on the manifold `M`
of TSRVFs of curves at point `p`.
"""
struct CurveWarpingSRSFAction{TM<:AbstractManifold,TP,TCWG<:CurveWarpingSRSFGroup} <:
       AbstractGroupAction{LeftAction}
    manifold::TM
    point::TP
    cwg::TCWG
end

function Manifolds.g_manifold(A::CurveWarpingSRSFAction)
    return A.manifold
end

function Manifolds.base_group(A::CurveWarpingSRSFAction)
    return A.cwg
end

function apply!(A::CurveWarpingSRSFAction{<:DiscretizedCurves}, q, a, p)
    itp = make_interpolant(A.manifold, p)
    a_rev = reverse_srsf(CurveWarpingSpace(A.cwg.manifold.knots), a)
    ts = map(a_rev, A.cwg.manifold.knots)
    rep_size = representation_size(A.manifold.manifold)
    for (i, t) in zip(get_iterator(A.manifold), ts)
        copyto!(_write(A.manifold, rep_size, q, i), itp(t) * a[i])
    end
    return q
end

function apply!(
    A::CurveWarpingSRSFAction{<:DiscretizedCurves},
    q,
    ::Identity{WarpingCompositionOperation},
    p,
)
    copyto!(q, p)
    return q
end

function Manifolds.inverse_apply(A::CurveWarpingSRSFAction, a, p)
    inva = inv(base_group(A), a)
    return apply(A, inva, p)
end

function optimal_alignment(A::CurveWarpingSRSFAction, p, q)
    M = A.manifold
    return pairwise_optimal_warping(M, M, p, q, A.point)[1]
end

"""
    karcher_mean_amplitude(A::CurveWarpingSRSFAction, ps::Vector)

Calculate the Karcher mean of amplitudes of given functions `ps` in SRVF form under
the action `A`.

Roughly follows Algorithm 2 from https://arxiv.org/abs/1103.3817.
"""
function karcher_mean_amplitude(
    A::CurveWarpingSRSFAction,
    ps::Vector;
    throw_on_divergence=false,
    progress_update=(x...) -> nothing,
    max_iter=100,
)
    M = A.manifold
    N = length(ps)
    cur_ps = ps
    cur_increment = 42.0
    prev_increment = 42.0
    num_iterations = 0
    meanp = project(M, (1.0 / N) * (sum(embed(M, p) for p in cur_ps)))

    # find intial candidate for the mean
    min_i = 1
    norm_min_i = Inf
    for i in 1:N
        cur_norm = distance(M, meanp, cur_ps[i])
        if cur_norm < norm_min_i
            min_i = i
            norm_min_i = cur_norm
        end
    end

    curμp = cur_ps[min_i]
    initial_increment = cur_increment
    while cur_increment > 1e-6 && num_iterations < max_iter
        warpings = [pairwise_optimal_warping(M, M, curμp, p, A.point) for p in cur_ps]

        aligned_ps = [apply(A, warpings[i][1], cur_ps[i]) for i in 1:N]
        mean_aligned_ps = project(M, (1.0 / N) * (sum(embed(M, p) for p in aligned_ps)))
        prev_increment = cur_increment
        cur_increment = distance(M, mean_aligned_ps, curμp)
        progress_update(cur_increment, num_iterations, max_iter)
        if num_iterations == 0
            initial_increment = cur_increment
        elseif cur_increment > 1.5 * prev_increment
            if throw_on_divergence
                error("Divergent mean amplitude calculation.")
            else
                break
            end
        end
        cur_ps = aligned_ps
        curμp = mean_aligned_ps
        num_iterations += 1
    end
    progress_update(:finish)

    return curμp
end

"""
    phase_amplitude_separation(A::CurveWarpingSRSFAction, ps::Vector)

Perform phase-amplitude separation of given functions in SRVF form.
Returns mean amplitude, phases and amplitudes.

Implements alignment from Section 3.4 of https://arxiv.org/abs/1103.3817.
"""
function phase_amplitude_separation(A::CurveWarpingSRSFAction, ps::Vector)
    μp = karcher_mean_amplitude(A, ps)
    # TODO: use other mean functions?
    a = center_of_orbit(A, ps, μp)
    M = A.manifold
    p̃ = apply(A, a, μp)
    γs = [pairwise_optimal_warping(M, M, p̃, p, A.point)[1] for p in ps]
    aligned_ps = [apply(A, γs[i], ps[i]) for i in 1:length(ps)]
    return (p̃, γs, aligned_ps)
end