color 1.7.1 → 2.0.0.pre.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. checksums.yaml +5 -13
  2. data/CHANGELOG.md +298 -0
  3. data/CODE_OF_CONDUCT.md +128 -0
  4. data/CONTRIBUTING.md +70 -0
  5. data/CONTRIBUTORS.md +10 -0
  6. data/LICENCE.md +27 -0
  7. data/Manifest.txt +11 -21
  8. data/README.md +54 -0
  9. data/Rakefile +74 -53
  10. data/SECURITY.md +34 -0
  11. data/lib/color/cielab.rb +348 -0
  12. data/lib/color/cmyk.rb +279 -213
  13. data/lib/color/grayscale.rb +128 -160
  14. data/lib/color/hsl.rb +205 -173
  15. data/lib/color/rgb/colors.rb +177 -163
  16. data/lib/color/rgb.rb +534 -537
  17. data/lib/color/version.rb +5 -0
  18. data/lib/color/xyz.rb +214 -0
  19. data/lib/color/yiq.rb +91 -46
  20. data/lib/color.rb +208 -141
  21. data/test/fixtures/cielab.json +444 -0
  22. data/test/minitest_helper.rb +20 -4
  23. data/test/test_cmyk.rb +49 -71
  24. data/test/test_color.rb +58 -106
  25. data/test/test_grayscale.rb +35 -56
  26. data/test/test_hsl.rb +72 -76
  27. data/test/test_rgb.rb +195 -267
  28. data/test/test_yiq.rb +12 -30
  29. metadata +165 -150
  30. checksums.yaml.gz.sig +0 -0
  31. data/.autotest +0 -5
  32. data/.gemtest +0 -0
  33. data/.hoerc +0 -2
  34. data/.minitest.rb +0 -2
  35. data/.travis.yml +0 -35
  36. data/Contributing.rdoc +0 -60
  37. data/Gemfile +0 -9
  38. data/History.rdoc +0 -172
  39. data/Licence.rdoc +0 -27
  40. data/README.rdoc +0 -50
  41. data/lib/color/css.rb +0 -7
  42. data/lib/color/palette/adobecolor.rb +0 -260
  43. data/lib/color/palette/gimp.rb +0 -104
  44. data/lib/color/palette/monocontrast.rb +0 -164
  45. data/lib/color/palette.rb +0 -4
  46. data/lib/color/rgb/contrast.rb +0 -57
  47. data/lib/color/rgb/metallic.rb +0 -28
  48. data/test/test_adobecolor.rb +0 -405
  49. data/test/test_css.rb +0 -19
  50. data/test/test_gimp.rb +0 -87
  51. data/test/test_monocontrast.rb +0 -130
  52. data.tar.gz.sig +0 -0
  53. metadata.gz.sig +0 -0
@@ -1,164 +0,0 @@
1
- require 'color/palette'
2
-
3
- # Generates a monochromatic constrasting colour palette for background and
4
- # foreground. What does this mean?
5
- #
6
- # Monochromatic: A single colour is used to generate the base palette, and
7
- # this colour is lightened five times and darkened five times to provide
8
- # eleven distinct colours.
9
- #
10
- # Contrasting: The foreground is also generated as a monochromatic colour
11
- # palette; however, all generated colours are tested to see that they are
12
- # appropriately contrasting to ensure maximum readability of the foreground
13
- # against the background.
14
- class Color::Palette::MonoContrast
15
- # Hash of CSS background colour values.
16
- #
17
- # This is always 11 values:
18
- #
19
- # 0:: The starting colour.
20
- # +1..+5:: Lighter colours.
21
- # -1..-5:: Darker colours.
22
- attr_reader :background
23
- # Hash of CSS foreground colour values.
24
- #
25
- # This is always 11 values:
26
- #
27
- # 0:: The starting colour.
28
- # +1..+5:: Lighter colours.
29
- # -1..-5:: Darker colours.
30
- attr_reader :foreground
31
-
32
- DEFAULT_MINIMUM_BRIGHTNESS_DIFF = (125.0 / 255.0)
33
-
34
- # The minimum brightness difference between the background and the
35
- # foreground, and must be between 0..1. Setting this value will regenerate
36
- # the palette based on the base colours. The default value for this is 125
37
- # / 255.0. If this value is set to +nil+, it will be restored to the
38
- # default.
39
- attr_reader :minimum_brightness_diff
40
- def minimum_brightness_diff=(bd) #:nodoc:
41
- @minimum_brightness_diff = if bd.nil?
42
- DEFAULT_MINIMUM_BRIGHTNESS_DIFF
43
- elsif bd > 1.0
44
- 1.0
45
- elsif bd < 0.0
46
- 0.0
47
- else
48
- bd
49
- end
50
- regenerate(@background[0], @foreground[0])
51
- end
52
-
53
- DEFAULT_MINIMUM_COLOR_DIFF = (500.0 / 255.0)
54
-
55
- # The minimum colour difference between the background and the foreground,
56
- # and must be between 0..3. Setting this value will regenerate the palette
57
- # based on the base colours. The default value for this is 500 / 255.0.
58
- attr_reader :minimum_color_diff
59
- def minimum_color_diff=(cd) #:nodoc:
60
- @minimum_color_diff = if cd.nil?
61
- DEFAULT_MINIMUM_COLOR_DIFF
62
- elsif cd > 3.0
63
- 3.0
64
- elsif cd < 0.0
65
- 0.0
66
- else
67
- cd
68
- end
69
- regenerate(@background[0], @foreground[0])
70
- end
71
-
72
- # Generate the initial palette.
73
- def initialize(background, foreground = nil)
74
- @minimum_brightness_diff = DEFAULT_MINIMUM_BRIGHTNESS_DIFF
75
- @minimum_color_diff = DEFAULT_MINIMUM_COLOR_DIFF
76
- regenerate(background, foreground)
77
- end
78
-
79
- # Generate the colour palettes.
80
- def regenerate(background, foreground = nil)
81
- foreground ||= background
82
- background = background.to_rgb
83
- foreground = foreground.to_rgb
84
-
85
- @background = {}
86
- @foreground = {}
87
-
88
- @background[-5] = background.darken_by(10)
89
- @background[-4] = background.darken_by(25)
90
- @background[-3] = background.darken_by(50)
91
- @background[-2] = background.darken_by(75)
92
- @background[-1] = background.darken_by(85)
93
- @background[ 0] = background
94
- @background[+1] = background.lighten_by(85)
95
- @background[+2] = background.lighten_by(75)
96
- @background[+3] = background.lighten_by(50)
97
- @background[+4] = background.lighten_by(25)
98
- @background[+5] = background.lighten_by(10)
99
-
100
- @foreground[-5] = calculate_foreground(@background[-5], foreground)
101
- @foreground[-4] = calculate_foreground(@background[-4], foreground)
102
- @foreground[-3] = calculate_foreground(@background[-3], foreground)
103
- @foreground[-2] = calculate_foreground(@background[-2], foreground)
104
- @foreground[-1] = calculate_foreground(@background[-1], foreground)
105
- @foreground[ 0] = calculate_foreground(@background[ 0], foreground)
106
- @foreground[+1] = calculate_foreground(@background[+1], foreground)
107
- @foreground[+2] = calculate_foreground(@background[+2], foreground)
108
- @foreground[+3] = calculate_foreground(@background[+3], foreground)
109
- @foreground[+4] = calculate_foreground(@background[+4], foreground)
110
- @foreground[+5] = calculate_foreground(@background[+5], foreground)
111
- end
112
-
113
- # Given a background colour and a foreground colour, modifies the
114
- # foreground colour so that it will have enough contrast to be seen
115
- # against the background colour.
116
- #
117
- # Uses #mininum_brightness_diff and #minimum_color_diff.
118
- def calculate_foreground(background, foreground)
119
- nfg = nil
120
- # Loop through brighter and darker versions of the foreground color. The
121
- # numbers here represent the amount of foreground color to mix with
122
- # black and white.
123
- [100, 75, 50, 25, 0].each do |percent|
124
- dfg = foreground.darken_by(percent)
125
- lfg = foreground.lighten_by(percent)
126
-
127
- dbd = brightness_diff(background, dfg)
128
- lbd = brightness_diff(background, lfg)
129
-
130
- if lbd > dbd
131
- nfg = lfg
132
- nbd = lbd
133
- else
134
- nfg = dfg
135
- nbd = dbd
136
- end
137
-
138
- ncd = color_diff(background, nfg)
139
-
140
- break if nbd >= @minimum_brightness_diff and ncd >= @minimum_color_diff
141
- end
142
- nfg
143
- end
144
-
145
- # Returns the absolute difference between the brightness levels of two
146
- # colours. This will be a decimal value between 0 and 1. W3C accessibility
147
- # guidelines for {colour contrast}[http://www.w3.org/TR/AERT#color-contrast]
148
- # suggest that this value be at least approximately 0.49 (125 / 255.0) for
149
- # proper contrast.
150
- def brightness_diff(c1, c2)
151
- (c1.brightness - c2.brightness).abs
152
- end
153
-
154
- # Returns the contrast between to colours, a decimal value between 0 and
155
- # 3. W3C accessibility guidelines for {colour
156
- # contrast}[http://www.w3.org/TR/AERT#color-contrast] suggest that this
157
- # value be at least approximately 1.96 (500 / 255.0) for proper contrast.
158
- def color_diff(c1, c2)
159
- r = (c1.r - c2.r).abs
160
- g = (c1.g - c2.g).abs
161
- b = (c1.b - c2.b).abs
162
- r + g + b
163
- end
164
- end
data/lib/color/palette.rb DELETED
@@ -1,4 +0,0 @@
1
- require 'color'
2
-
3
- module Color::Palette
4
- end
@@ -1,57 +0,0 @@
1
- # -*- ruby encoding: utf-8 -*-
2
-
3
- class Color::RGB
4
- # Outputs how much contrast this color has with another RGB color.
5
- # Computes the same regardless of which one is considered foreground. If
6
- # the other color does not have a #to_rgb method, this will throw an
7
- # exception. Anything over about 0.22 should have a high likelihood of
8
- # being legible, but the larger the difference, the more contrast.
9
- # Otherwise, to be safe go with something > 0.3
10
- def contrast(other)
11
- other = coerce(other)
12
-
13
- # The following numbers have been set with some care.
14
- ((diff_brightness(other) * 0.65) +
15
- (diff_hue(other) * 0.20) +
16
- (diff_luminosity(other) * 0.15))
17
- end
18
-
19
- private
20
- # Provides the luminosity difference between two rbg vals
21
- def diff_luminosity(other)
22
- other = coerce(other)
23
- l1 = (0.2126 * (other.r) ** 2.2) +
24
- (0.7152 * (other.b) ** 2.2) +
25
- (0.0722 * (other.g) ** 2.2);
26
-
27
- l2 = (0.2126 * (self.r) ** 2.2) +
28
- (0.7152 * (self.b) ** 2.2) +
29
- (0.0722 * (self.g) ** 2.2);
30
-
31
- ((([l1, l2].max) + 0.05) / ( ([l1, l2].min) + 0.05 ) - 1) / 20.0
32
- end
33
-
34
- # Provides the brightness difference.
35
- def diff_brightness(other)
36
- other = other.to_rgb
37
- br1 = (299 * other.r + 587 * other.g + 114 * other.b)
38
- br2 = (299 * self.r + 587 * self.g + 114 * self.b)
39
- (br1 - br2).abs / 1000.0;
40
- end
41
-
42
- # Provides the euclidean distance between the two color values
43
- def diff_euclidean(other)
44
- other = other.to_rgb
45
- ((((other.r - self.r) ** 2) +
46
- ((other.g - self.g) ** 2) +
47
- ((other.b - self.b) ** 2)) ** 0.5) / 1.7320508075688772
48
- end
49
-
50
- # Difference in the two colors' hue
51
- def diff_hue(other)
52
- other = other.to_rgb
53
- ((self.r - other.r).abs +
54
- (self.g - other.g).abs +
55
- (self.b - other.b).abs) / 3
56
- end
57
- end
@@ -1,28 +0,0 @@
1
- # -*- ruby encoding: utf-8 -*-
2
-
3
- class Color::RGB
4
- # This namespace contains some RGB metallic colours suggested by Jim
5
- # Freeze.
6
- module Metallic; end
7
-
8
- class << self
9
- private
10
- def metallic(rgb, *names)
11
- __named_color(Metallic, new(*rgb), *names)
12
- end
13
- end
14
-
15
- metallic [0x99, 0x99, 0x99], :Aluminum
16
- metallic [0xd9, 0x87, 0x19], :CoolCopper
17
- metallic [0xb8, 0x73, 0x33], :Copper
18
- metallic [0x4c, 0x4c, 0x4c], :Iron
19
- metallic [0x19, 0x19, 0x19], :Lead
20
- metallic [0xb3, 0xb3, 0xb3], :Magnesium
21
- metallic [0xe6, 0xe6, 0xe6], :Mercury
22
- metallic [0x80, 0x80, 0x80], :Nickel
23
- metallic [0x60, 0x00, 0x00], :PolySilicon, :Poly
24
- metallic [0xcc, 0xcc, 0xcc], :Silver
25
- metallic [0x66, 0x66, 0x66], :Steel
26
- metallic [0x7f, 0x7f, 0x7f], :Tin
27
- metallic [0x33, 0x33, 0x33], :Tungsten
28
- end
@@ -1,405 +0,0 @@
1
- # -*- ruby encoding: utf-8 -*-
2
-
3
- require 'color'
4
- require 'color/palette/adobecolor'
5
- require 'minitest_helper'
6
-
7
- module TestColor
8
- module TestPalette
9
- class TestAdobeColor < Minitest::Test
10
- include Color::Palette
11
-
12
- # This is based on the Visibone Anglo-Centric Color Code List; this is
13
- # an Adobe Color swatch version 1 (RGB colours only).
14
- VISIBONE_V1 = <<-EOS
15
- AAEA2AAA/wD/AP8AAAAAAMwAzADMAAAAAACZAJkAmQAAAAAAZgBmAGYAAAAA
16
- ADMAMwAzAAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAP8AMwAzAAAAAADMAAAA
17
- AAAAAAAA/wBmAGYAAAAAAMwAMwAzAAAAAACZAAAAAAAAAAAA/wCZAJkAAAAA
18
- AMwAZgBmAAAAAACZADMAMwAAAAAAZgAAAAAAAAAAAP8AzADMAAAAAADMAJkA
19
- mQAAAAAAmQBmAGYAAAAAAGYAMwAzAAAAAAAzAAAAAAAAAAAA/wAzAAAAAAAA
20
- AP8AZgAzAAAAAADMADMAAAAAAAAA/wCZAGYAAAAAAMwAZgAzAAAAAACZADMA
21
- AAAAAAAA/wBmAAAAAAAAAP8AmQAzAAAAAADMAGYAAAAAAAAA/wDMAJkAAAAA
22
- AMwAmQBmAAAAAACZAGYAMwAAAAAAZgAzAAAAAAAAAP8AmQAAAAAAAAD/AMwA
23
- ZgAAAAAAzACZADMAAAAAAJkAZgAAAAAAAADMAJkAAAAAAAAA/wDMADMAAAAA
24
- AP8AzAAAAAAAAAD/AP8AAAAAAAAA/wD/ADMAAAAAAMwAzAAAAAAAAAD/AP8A
25
- ZgAAAAAAzADMADMAAAAAAJkAmQAAAAAAAAD/AP8AmQAAAAAAzADMAGYAAAAA
26
- AJkAmQAzAAAAAABmAGYAAAAAAAAA/wD/AMwAAAAAAMwAzACZAAAAAACZAJkA
27
- ZgAAAAAAZgBmADMAAAAAADMAMwAAAAAAAADMAP8AAAAAAAAAzAD/ADMAAAAA
28
- AJkAzAAAAAAAAADMAP8AZgAAAAAAmQDMADMAAAAAAGYAmQAAAAAAAACZAP8A
29
- AAAAAAAAmQD/ADMAAAAAAGYAzAAAAAAAAADMAP8AmQAAAAAAmQDMAGYAAAAA
30
- AGYAmQAzAAAAAAAzAGYAAAAAAAAAZgD/AAAAAAAAAJkA/wBmAAAAAABmAMwA
31
- MwAAAAAAMwCZAAAAAAAAAGYA/wAzAAAAAAAzAMwAAAAAAAAAMwD/AAAAAAAA
32
- AAAA/wAAAAAAAAAzAP8AMwAAAAAAAADMAAAAAAAAAGYA/wBmAAAAAAAzAMwA
33
- MwAAAAAAAACZAAAAAAAAAJkA/wCZAAAAAABmAMwAZgAAAAAAMwCZADMAAAAA
34
- AAAAZgAAAAAAAADMAP8AzAAAAAAAmQDMAJkAAAAAAGYAmQBmAAAAAAAzAGYA
35
- MwAAAAAAAAAzAAAAAAAAAAAA/wAzAAAAAAAzAP8AZgAAAAAAAADMADMAAAAA
36
- AGYA/wCZAAAAAAAzAMwAZgAAAAAAAACZADMAAAAAAAAA/wBmAAAAAAAzAP8A
37
- mQAAAAAAAADMAGYAAAAAAJkA/wDMAAAAAABmAMwAmQAAAAAAMwCZAGYAAAAA
38
- AAAAZgAzAAAAAAAAAP8AmQAAAAAAZgD/AMwAAAAAADMAzACZAAAAAAAAAJkA
39
- ZgAAAAAAMwD/AMwAAAAAAAAAzACZAAAAAAAAAP8AzAAAAAAAAAD/AP8AAAAA
40
- ADMA/wD/AAAAAAAAAMwAzAAAAAAAZgD/AP8AAAAAADMAzADMAAAAAAAAAJkA
41
- mQAAAAAAmQD/AP8AAAAAAGYAzADMAAAAAAAzAJkAmQAAAAAAAABmAGYAAAAA
42
- AMwA/wD/AAAAAACZAMwAzAAAAAAAZgCZAJkAAAAAADMAZgBmAAAAAAAAADMA
43
- MwAAAAAAAADMAP8AAAAAADMAzAD/AAAAAAAAAJkAzAAAAAAAZgDMAP8AAAAA
44
- ADMAmQDMAAAAAAAAAGYAmQAAAAAAAACZAP8AAAAAADMAmQD/AAAAAAAAAGYA
45
- zAAAAAAAmQDMAP8AAAAAAGYAmQDMAAAAAAAzAGYAmQAAAAAAAAAzAGYAAAAA
46
- AAAAZgD/AAAAAABmAJkA/wAAAAAAMwBmAMwAAAAAAAAAMwCZAAAAAAAzAGYA
47
- /wAAAAAAAAAzAMwAAAAAAAAAMwD/AAAAAAAAAAAA/wAAAAAAMwAzAP8AAAAA
48
- AAAAAADMAAAAAABmAGYA/wAAAAAAMwAzAMwAAAAAAAAAAACZAAAAAACZAJkA
49
- /wAAAAAAZgBmAMwAAAAAADMAMwCZAAAAAAAAAAAAZgAAAAAAzADMAP8AAAAA
50
- AJkAmQDMAAAAAABmAGYAmQAAAAAAMwAzAGYAAAAAAAAAAAAzAAAAAAAzAAAA
51
- /wAAAAAAZgAzAP8AAAAAADMAAADMAAAAAACZAGYA/wAAAAAAZgAzAMwAAAAA
52
- ADMAAACZAAAAAABmAAAA/wAAAAAAmQAzAP8AAAAAAGYAAADMAAAAAADMAJkA
53
- /wAAAAAAmQBmAMwAAAAAAGYAMwCZAAAAAAAzAAAAZgAAAAAAmQAAAP8AAAAA
54
- AMwAZgD/AAAAAACZADMAzAAAAAAAZgAAAJkAAAAAAMwAMwD/AAAAAACZAAAA
55
- zAAAAAAAzAAAAP8AAAAAAP8AAAD/AAAAAAD/ADMA/wAAAAAAzAAAAMwAAAAA
56
- AP8AZgD/AAAAAADMADMAzAAAAAAAmQAAAJkAAAAAAP8AmQD/AAAAAADMAGYA
57
- zAAAAAAAmQAzAJkAAAAAAGYAAABmAAAAAAD/AMwA/wAAAAAAzACZAMwAAAAA
58
- AJkAZgCZAAAAAABmADMAZgAAAAAAMwAAADMAAAAAAP8AAADMAAAAAAD/ADMA
59
- zAAAAAAAzAAAAJkAAAAAAP8AZgDMAAAAAADMADMAmQAAAAAAmQAAAGYAAAAA
60
- AP8AAACZAAAAAAD/ADMAmQAAAAAAzAAAAGYAAAAAAP8AmQDMAAAAAADMAGYA
61
- mQAAAAAAmQAzAGYAAAAAAGYAAAAzAAAAAAD/AAAAZgAAAAAA/wBmAJkAAAAA
62
- AMwAMwBmAAAAAACZAAAAMwAAAAAA/wAzAGYAAAAAAMwAAAAzAAAAAAD/AAAA
63
- MwAAAA==
64
- EOS
65
-
66
- # This is based on the Visibone Anglo-Centric Color Code List; this is
67
- # an Adobe Color swatch version 2 (with names).
68
- VISIBONE_V2 = <<-EOS
69
- AAIA2AAA/wD/AP8AAAAAAAAGAFcAaABpAHQAZQAAAADMAMwAzAAAAAAAAAoA
70
- UABhAGwAZQAgAEcAcgBhAHkAAAAAmQCZAJkAAAAAAAALAEwAaQBnAGgAdAAg
71
- AEcAcgBhAHkAAAAAZgBmAGYAAAAAAAAKAEQAYQByAGsAIABHAHIAYQB5AAAA
72
- ADMAMwAzAAAAAAAADQBPAGIAcwBjAHUAcgBlACAARwByAGEAeQAAAAAAAAAA
73
- AAAAAAAAAAYAQgBsAGEAYwBrAAAAAP8AAAAAAAAAAAAABABSAGUAZAAAAAD/
74
- ADMAMwAAAAAAAA8ATABpAGcAaAB0ACAASABhAHIAZAAgAFIAZQBkAAAAAMwA
75
- AAAAAAAAAAAADgBEAGEAcgBrACAASABhAHIAZAAgAFIAZQBkAAAAAP8AZgBm
76
- AAAAAAAAEABMAGkAZwBoAHQAIABGAGEAZABlAGQAIABSAGUAZAAAAADMADMA
77
- MwAAAAAAABEATQBlAGQAaQB1AG0AIABGAGEAZABlAGQAIABSAGUAZAAAAACZ
78
- AAAAAAAAAAAAAA8ARABhAHIAawAgAEYAYQBkAGUAZAAgAFIAZQBkAAAAAP8A
79
- mQCZAAAAAAAADgBQAGEAbABlACAARAB1AGwAbAAgAFIAZQBkAAAAAMwAZgBm
80
- AAAAAAAADwBMAGkAZwBoAHQAIABEAHUAbABsACAAUgBlAGQAAAAAmQAzADMA
81
- AAAAAAAOAEQAYQByAGsAIABEAHUAbABsACAAUgBlAGQAAAAAZgAAAAAAAAAA
82
- AAARAE8AYgBzAGMAdQByAGUAIABEAHUAbABsACAAUgBlAGQAAAAA/wDMAMwA
83
- AAAAAAAOAFAAYQBsAGUAIABXAGUAYQBrACAAUgBlAGQAAAAAzACZAJkAAAAA
84
- AAAPAEwAaQBnAGgAdAAgAFcAZQBhAGsAIABSAGUAZAAAAACZAGYAZgAAAAAA
85
- ABAATQBlAGQAaQB1AG0AIABXAGUAYQBrACAAUgBlAGQAAAAAZgAzADMAAAAA
86
- AAAOAEQAYQByAGsAIABXAGUAYQBrACAAUgBlAGQAAAAAMwAAAAAAAAAAAAAR
87
- AE8AYgBzAGMAdQByAGUAIABXAGUAYQBrACAAUgBlAGQAAAAA/wAzAAAAAAAA
88
- AAAPAFIAZQBkAC0AUgBlAGQALQBPAHIAYQBuAGcAZQAAAAD/AGYAMwAAAAAA
89
- ABEATABpAGcAaAB0ACAAUgBlAGQALQBPAHIAYQBuAGcAZQAAAADMADMAAAAA
90
- AAAAABAARABhAHIAawAgAFIAZQBkAC0ATwByAGEAbgBnAGUAAAAA/wCZAGYA
91
- AAAAAAARAEwAaQBnAGgAdAAgAE8AcgBhAG4AZwBlAC0AUgBlAGQAAAAAzABm
92
- ADMAAAAAAAASAE0AZQBkAGkAdQBtACAATwByAGEAbgBnAGUALQBSAGUAZAAA
93
- AACZADMAAAAAAAAAABAARABhAHIAawAgAE8AcgBhAG4AZwBlAC0AUgBlAGQA
94
- AAAA/wBmAAAAAAAAAAASAE8AcgBhAG4AZwBlAC0ATwByAGEAbgBnAGUALQBS
95
- AGUAZAAAAAD/AJkAMwAAAAAAABIATABpAGcAaAB0ACAASABhAHIAZAAgAE8A
96
- cgBhAG4AZwBlAAAAAMwAZgAAAAAAAAAAEQBEAGEAcgBrACAASABhAHIAZAAg
97
- AE8AcgBhAG4AZwBlAAAAAP8AzACZAAAAAAAAEQBQAGEAbABlACAARAB1AGwA
98
- bAAgAE8AcgBhAG4AZwBlAAAAAMwAmQBmAAAAAAAAEgBMAGkAZwBoAHQAIABE
99
- AHUAbABsACAATwByAGEAbgBnAGUAAAAAmQBmADMAAAAAAAARAEQAYQByAGsA
100
- IABEAHUAbABsACAATwByAGEAbgBnAGUAAAAAZgAzAAAAAAAAAAAUAE8AYgBz
101
- AGMAdQByAGUAIABEAHUAbABsACAATwByAGEAbgBnAGUAAAAA/wCZAAAAAAAA
102
- AAAVAE8AcgBhAG4AZwBlAC0ATwByAGEAbgBnAGUALQBZAGUAbABsAG8AdwAA
103
- AAD/AMwAZgAAAAAAABQATABpAGcAaAB0ACAATwByAGEAbgBnAGUALQBZAGUA
104
- bABsAG8AdwAAAADMAJkAMwAAAAAAABUATQBlAGQAaQB1AG0AIABPAHIAYQBu
105
- AGcAZQAtAFkAZQBsAGwAbwB3AAAAAJkAZgAAAAAAAAAAEwBEAGEAcgBrACAA
106
- TwByAGEAbgBnAGUALQBZAGUAbABsAG8AdwAAAADMAJkAAAAAAAAAABMARABh
107
- AHIAawAgAFkAZQBsAGwAbwB3AC0ATwByAGEAbgBnAGUAAAAA/wDMADMAAAAA
108
- AAAUAEwAaQBnAGgAdAAgAFkAZQBsAGwAbwB3AC0ATwByAGEAbgBnAGUAAAAA
109
- /wDMAAAAAAAAAAAVAFkAZQBsAGwAbwB3AC0AWQBlAGwAbABvAHcALQBPAHIA
110
- YQBuAGcAZQAAAAD/AP8AAAAAAAAAAAcAWQBlAGwAbABvAHcAAAAA/wD/ADMA
111
- AAAAAAASAEwAaQBnAGgAdAAgAEgAYQByAGQAIABZAGUAbABsAG8AdwAAAADM
112
- AMwAAAAAAAAAABEARABhAHIAawAgAEgAYQByAGQAIABZAGUAbABsAG8AdwAA
113
- AAD/AP8AZgAAAAAAABMATABpAGcAaAB0ACAARgBhAGQAZQBkACAAWQBlAGwA
114
- bABvAHcAAAAAzADMADMAAAAAAAAUAE0AZQBkAGkAdQBtACAARgBhAGQAZQBk
115
- ACAAWQBlAGwAbABvAHcAAAAAmQCZAAAAAAAAAAASAEQAYQByAGsAIABGAGEA
116
- ZABlAGQAIABZAGUAbABsAG8AdwAAAAD/AP8AmQAAAAAAABEAUABhAGwAZQAg
117
- AEQAdQBsAGwAIABZAGUAbABsAG8AdwAAAADMAMwAZgAAAAAAABIATABpAGcA
118
- aAB0ACAARAB1AGwAbAAgAFkAZQBsAGwAbwB3AAAAAJkAmQAzAAAAAAAAEQBE
119
- AGEAcgBrACAARAB1AGwAbAAgAFkAZQBsAGwAbwB3AAAAAGYAZgAAAAAAAAAA
120
- FABPAGIAcwBjAHUAcgBlACAARAB1AGwAbAAgAFkAZQBsAGwAbwB3AAAAAP8A
121
- /wDMAAAAAAAAEQBQAGEAbABlACAAVwBlAGEAawAgAFkAZQBsAGwAbwB3AAAA
122
- AMwAzACZAAAAAAAAEgBMAGkAZwBoAHQAIABXAGUAYQBrACAAWQBlAGwAbABv
123
- AHcAAAAAmQCZAGYAAAAAAAATAE0AZQBkAGkAdQBtACAAVwBlAGEAawAgAFkA
124
- ZQBsAGwAbwB3AAAAAGYAZgAzAAAAAAAAEQBEAGEAcgBrACAAVwBlAGEAawAg
125
- AFkAZQBsAGwAbwB3AAAAADMAMwAAAAAAAAAAFABPAGIAcwBjAHUAcgBlACAA
126
- VwBlAGEAawAgAFkAZQBsAGwAbwB3AAAAAMwA/wAAAAAAAAAAFQBZAGUAbABs
127
- AG8AdwAtAFkAZQBsAGwAbwB3AC0AUwBwAHIAaQBuAGcAAAAAzAD/ADMAAAAA
128
- AAAUAEwAaQBnAGgAdAAgAFkAZQBsAGwAbwB3AC0AUwBwAHIAaQBuAGcAAAAA
129
- mQDMAAAAAAAAAAATAEQAYQByAGsAIABZAGUAbABsAG8AdwAtAFMAcAByAGkA
130
- bgBnAAAAAMwA/wBmAAAAAAAAFABMAGkAZwBoAHQAIABTAHAAcgBpAG4AZwAt
131
- AFkAZQBsAGwAbwB3AAAAAJkAzAAzAAAAAAAAFQBNAGUAZABpAHUAbQAgAFMA
132
- cAByAGkAbgBnAC0AWQBlAGwAbABvAHcAAAAAZgCZAAAAAAAAAAATAEQAYQBy
133
- AGsAIABTAHAAcgBpAG4AZwAtAFkAZQBsAGwAbwB3AAAAAJkA/wAAAAAAAAAA
134
- FQBTAHAAcgBpAG4AZwAtAFMAcAByAGkAbgBnAC0AWQBlAGwAbABvAHcAAAAA
135
- mQD/ADMAAAAAAAASAEwAaQBnAGgAdAAgAEgAYQByAGQAIABTAHAAcgBpAG4A
136
- ZwAAAABmAMwAAAAAAAAAABEARABhAHIAawAgAEgAYQByAGQAIABTAHAAcgBp
137
- AG4AZwAAAADMAP8AmQAAAAAAABEAUABhAGwAZQAgAEQAdQBsAGwAIABTAHAA
138
- cgBpAG4AZwAAAACZAMwAZgAAAAAAABIATABpAGcAaAB0ACAARAB1AGwAbAAg
139
- AFMAcAByAGkAbgBnAAAAAGYAmQAzAAAAAAAAEQBEAGEAcgBrACAARAB1AGwA
140
- bAAgAFMAcAByAGkAbgBnAAAAADMAZgAAAAAAAAAAFABPAGIAcwBjAHUAcgBl
141
- ACAARAB1AGwAbAAgAFMAcAByAGkAbgBnAAAAAGYA/wAAAAAAAAAAFABTAHAA
142
- cgBpAG4AZwAtAFMAcAByAGkAbgBnAC0ARwByAGUAZQBuAAAAAJkA/wBmAAAA
143
- AAAAEwBMAGkAZwBoAHQAIABTAHAAcgBpAG4AZwAtAEcAcgBlAGUAbgAAAABm
144
- AMwAMwAAAAAAABQATQBlAGQAaQB1AG0AIABTAHAAcgBpAG4AZwAtAEcAcgBl
145
- AGUAbgAAAAAzAJkAAAAAAAAAABIARABhAHIAawAgAFMAcAByAGkAbgBnAC0A
146
- RwByAGUAZQBuAAAAAGYA/wAzAAAAAAAAEwBMAGkAZwBoAHQAIABHAHIAZQBl
147
- AG4ALQBTAHAAcgBpAG4AZwAAAAAzAMwAAAAAAAAAABIARABhAHIAawAgAEcA
148
- cgBlAGUAbgAtAFMAcAByAGkAbgBnAAAAADMA/wAAAAAAAAAAEwBHAHIAZQBl
149
- AG4ALQBHAHIAZQBlAG4ALQBTAHAAcgBpAG4AZwAAAAAAAP8AAAAAAAAAAAYA
150
- RwByAGUAZQBuAAAAADMA/wAzAAAAAAAAEQBMAGkAZwBoAHQAIABIAGEAcgBk
151
- ACAARwByAGUAZQBuAAAAAAAAzAAAAAAAAAAAEABEAGEAcgBrACAASABhAHIA
152
- ZAAgAEcAcgBlAGUAbgAAAABmAP8AZgAAAAAAABIATABpAGcAaAB0ACAARgBh
153
- AGQAZQBkACAARwByAGUAZQBuAAAAADMAzAAzAAAAAAAAEwBNAGUAZABpAHUA
154
- bQAgAEYAYQBkAGUAZAAgAEcAcgBlAGUAbgAAAAAAAJkAAAAAAAAAABEARABh
155
- AHIAawAgAEYAYQBkAGUAZAAgAEcAcgBlAGUAbgAAAACZAP8AmQAAAAAAABAA
156
- UABhAGwAZQAgAEQAdQBsAGwAIABHAHIAZQBlAG4AAAAAZgDMAGYAAAAAAAAR
157
- AEwAaQBnAGgAdAAgAEQAdQBsAGwAIABHAHIAZQBlAG4AAAAAMwCZADMAAAAA
158
- AAAQAEQAYQByAGsAIABEAHUAbABsACAARwByAGUAZQBuAAAAAAAAZgAAAAAA
159
- AAAAEwBPAGIAcwBjAHUAcgBlACAARAB1AGwAbAAgAEcAcgBlAGUAbgAAAADM
160
- AP8AzAAAAAAAABAAUABhAGwAZQAgAFcAZQBhAGsAIABHAHIAZQBlAG4AAAAA
161
- mQDMAJkAAAAAAAARAEwAaQBnAGgAdAAgAFcAZQBhAGsAIABHAHIAZQBlAG4A
162
- AAAAZgCZAGYAAAAAAAASAE0AZQBkAGkAdQBtACAAVwBlAGEAawAgAEcAcgBl
163
- AGUAbgAAAAAzAGYAMwAAAAAAABAARABhAHIAawAgAFcAZQBhAGsAIABHAHIA
164
- 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
- ACAARwByAGUAZQBuAAAAAAAA/wAzAAAAAAAAEQBHAHIAZQBlAG4ALQBHAHIA
166
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- AAAAAAAPAEMAeQBhAG4ALQBDAHkAYQBuAC0AVABlAGEAbAAAAAAAAP8A/wAA
186
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- AGcAaAB0ACAAVwBlAGEAawAgAEMAeQBhAG4AAAAAZgCZAJkAAAAAAAARAE0A
198
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- AHoAdQByAGUAAAAAAABmAMwAAAAAAAAQAEQAYQByAGsAIABIAGEAcgBkACAA
210
- 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
- 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
- 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
- AGwAIABBAHoAdQByAGUAAAAAAAAzAGYAAAAAAAATAE8AYgBzAGMAdQByAGUA
214
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- AP8AAAAAAAAFAEIAbAB1AGUAAAAAMwAzAP8AAAAAAAAQAEwAaQBnAGgAdAAg
223
- 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
- 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
- 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
- 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
- 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
- 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
- AGcAaAB0ACAARAB1AGwAbAAgAEIAbAB1AGUAAAAAMwAzAJkAAAAAAAAPAEQA
230
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
240
- ZQB0AAAAAJkAZgD/AAAAAAAAEgBMAGkAZwBoAHQAIABWAGkAbwBsAGUAdAAt
241
- AEIAbAB1AGUAAAAAZgAzAMwAAAAAAAATAE0AZQBkAGkAdQBtACAAVgBpAG8A
242
- bABlAHQALQBCAGwAdQBlAAAAADMAAACZAAAAAAAAEQBEAGEAcgBrACAAVgBp
243
- AG8AbABlAHQALQBCAGwAdQBlAAAAAGYAAAD/AAAAAAAAEwBWAGkAbwBsAGUA
244
- dAAtAFYAaQBvAGwAZQB0AC0AQgBsAHUAZQAAAACZADMA/wAAAAAAABIATABp
245
- AGcAaAB0ACAASABhAHIAZAAgAFYAaQBvAGwAZQB0AAAAAGYAAADMAAAAAAAA
246
- EQBEAGEAcgBrACAASABhAHIAZAAgAFYAaQBvAGwAZQB0AAAAAMwAmQD/AAAA
247
- AAAAEQBQAGEAbABlACAARAB1AGwAbAAgAFYAaQBvAGwAZQB0AAAAAJkAZgDM
248
- AAAAAAAAEgBMAGkAZwBoAHQAIABEAHUAbABsACAAVgBpAG8AbABlAHQAAAAA
249
- ZgAzAJkAAAAAAAARAEQAYQByAGsAIABEAHUAbABsACAAVgBpAG8AbABlAHQA
250
- AAAAMwAAAGYAAAAAAAAUAE8AYgBzAGMAdQByAGUAIABEAHUAbABsACAAVgBp
251
- AG8AbABlAHQAAAAAmQAAAP8AAAAAAAAWAFYAaQBvAGwAZQB0AC0AVgBpAG8A
252
- bABlAHQALQBNAGEAZwBlAG4AdABhAAAAAMwAZgD/AAAAAAAAFQBMAGkAZwBo
253
- AHQAIABWAGkAbwBsAGUAdAAtAE0AYQBnAGUAbgB0AGEAAAAAmQAzAMwAAAAA
254
- AAAWAE0AZQBkAGkAdQBtACAAVgBpAG8AbABlAHQALQBNAGEAZwBlAG4AdABh
255
- AAAAAGYAAACZAAAAAAAAFABEAGEAcgBrACAAVgBpAG8AbABlAHQALQBNAGEA
256
- ZwBlAG4AdABhAAAAAMwAMwD/AAAAAAAAFQBMAGkAZwBoAHQAIABNAGEAZwBl
257
- AG4AdABhAC0AVgBpAG8AbABlAHQAAAAAmQAAAMwAAAAAAAAUAEQAYQByAGsA
258
- IABNAGEAZwBlAG4AdABhAC0AVgBpAG8AbABlAHQAAAAAzAAAAP8AAAAAAAAX
259
- AE0AYQBnAGUAbgB0AGEALQBNAGEAZwBlAG4AdABhAC0AVgBpAG8AbABlAHQA
260
- AAAA/wAAAP8AAAAAAAAIAE0AYQBnAGUAbgB0AGEAAAAA/wAzAP8AAAAAAAAT
261
- AEwAaQBnAGgAdAAgAEgAYQByAGQAIABNAGEAZwBlAG4AdABhAAAAAMwAAADM
262
- AAAAAAAAEgBEAGEAcgBrACAASABhAHIAZAAgAE0AYQBnAGUAbgB0AGEAAAAA
263
- /wBmAP8AAAAAAAAUAEwAaQBnAGgAdAAgAEYAYQBkAGUAZAAgAE0AYQBnAGUA
264
- bgB0AGEAAAAAzAAzAMwAAAAAAAAVAE0AZQBkAGkAdQBtACAARgBhAGQAZQBk
265
- ACAATQBhAGcAZQBuAHQAYQAAAACZAAAAmQAAAAAAABMARABhAHIAawAgAEYA
266
- YQBkAGUAZAAgAE0AYQBnAGUAbgB0AGEAAAAA/wCZAP8AAAAAAAASAFAAYQBs
267
- AGUAIABEAHUAbABsACAATQBhAGcAZQBuAHQAYQAAAADMAGYAzAAAAAAAABMA
268
- TABpAGcAaAB0ACAARAB1AGwAbAAgAE0AYQBnAGUAbgB0AGEAAAAAmQAzAJkA
269
- AAAAAAASAEQAYQByAGsAIABEAHUAbABsACAATQBhAGcAZQBuAHQAYQAAAABm
270
- AAAAZgAAAAAAABUATwBiAHMAYwB1AHIAZQAgAEQAdQBsAGwAIABNAGEAZwBl
271
- AG4AdABhAAAAAP8AzAD/AAAAAAAAEgBQAGEAbABlACAAVwBlAGEAawAgAE0A
272
- YQBnAGUAbgB0AGEAAAAAzACZAMwAAAAAAAATAEwAaQBnAGgAdAAgAFcAZQBh
273
- AGsAIABNAGEAZwBlAG4AdABhAAAAAJkAZgCZAAAAAAAAFABNAGUAZABpAHUA
274
- bQAgAFcAZQBhAGsAIABNAGEAZwBlAG4AdABhAAAAAGYAMwBmAAAAAAAAEgBE
275
- AGEAcgBrACAAVwBlAGEAawAgAE0AYQBnAGUAbgB0AGEAAAAAMwAAADMAAAAA
276
- AAAVAE8AYgBzAGMAdQByAGUAIABXAGUAYQBrACAATQBhAGcAZQBuAHQAYQAA
277
- AAD/AAAAzAAAAAAAABUATQBhAGcAZQBuAHQAYQAtAE0AYQBnAGUAbgB0AGEA
278
- LQBQAGkAbgBrAAAAAP8AMwDMAAAAAAAAEwBMAGkAZwBoAHQAIABNAGEAZwBl
279
- AG4AdABhAC0AUABpAG4AawAAAADMAAAAmQAAAAAAABIARABhAHIAawAgAE0A
280
- YQBnAGUAbgB0AGEALQBQAGkAbgBrAAAAAP8AZgDMAAAAAAAAEwBMAGkAZwBo
281
- AHQAIABQAGkAbgBrAC0ATQBhAGcAZQBuAHQAYQAAAADMADMAmQAAAAAAABQA
282
- TQBlAGQAaQB1AG0AIABQAGkAbgBrAC0ATQBhAGcAZQBuAHQAYQAAAACZAAAA
283
- ZgAAAAAAABIARABhAHIAawAgAFAAaQBuAGsALQBNAGEAZwBlAG4AdABhAAAA
284
- AP8AAACZAAAAAAAAEgBQAGkAbgBrAC0AUABpAG4AawAtAE0AYQBnAGUAbgB0
285
- AGEAAAAA/wAzAJkAAAAAAAAQAEwAaQBnAGgAdAAgAEgAYQByAGQAIABQAGkA
286
- bgBrAAAAAMwAAABmAAAAAAAADwBEAGEAcgBrACAASABhAHIAZAAgAFAAaQBu
287
- AGsAAAAA/wCZAMwAAAAAAAAPAFAAYQBsAGUAIABEAHUAbABsACAAUABpAG4A
288
- awAAAADMAGYAmQAAAAAAABAATABpAGcAaAB0ACAARAB1AGwAbAAgAFAAaQBu
289
- AGsAAAAAmQAzAGYAAAAAAAAPAEQAYQByAGsAIABEAHUAbABsACAAUABpAG4A
290
- awAAAABmAAAAMwAAAAAAABIATwBiAHMAYwB1AHIAZQAgAEQAdQBsAGwAIABQ
291
- AGkAbgBrAAAAAP8AAABmAAAAAAAADgBQAGkAbgBrAC0AUABpAG4AawAtAFIA
292
- ZQBkAAAAAP8AZgCZAAAAAAAADwBMAGkAZwBoAHQAIABQAGkAbgBrAC0AUgBl
293
- AGQAAAAAzAAzAGYAAAAAAAAQAE0AZQBkAGkAdQBtACAAUABpAG4AawAtAFIA
294
- ZQBkAAAAAJkAAAAzAAAAAAAADgBEAGEAcgBrACAAUABpAG4AawAtAFIAZQBk
295
- AAAAAP8AMwBmAAAAAAAADwBMAGkAZwBoAHQAIABSAGUAZAAtAFAAaQBuAGsA
296
- AAAAzAAAADMAAAAAAAAOAEQAYQByAGsAIABSAGUAZAAtAFAAaQBuAGsAAAAA
297
- /wAAADMAAAAAAAANAFIAZQBkAC0AUgBlAGQALQBQAGkAbgBrAAA=
298
- EOS
299
-
300
- EXERCISE = <<-EOS
301
- AAIABwAAHgA8AFoAAAAAAAAEAFIARwBCAAAAAQKPGZn//wAAAAAABABIAFMA
302
- QgAAAAIMzH//GZn//wAAAAUAQwBNAFkASwAAAAcbWOiQG1gAAAAAAAQATABB
303
- AEIAAAAIFXwAAAAAAAAAAAAFAEcAcgBhAHkAAAAJCcQNrBGUBdwAAAAGAFcA
304
- QwBNAFkASwAAAA0JxA2sEZQF3AAAAAsAVQBOAEsATgBPAFcATgAgADEAMwAA
305
- EOS
306
-
307
- # http://www.visibone.com/swatches/VisiBone.aco
308
- # http://www.visibone.com/swatches/VisiBone2.aco
309
- # http://www.visibone.com/swatches/VisiBone2_km.psppalette
310
- # http://www.visibone.com/swatches/VisiBone2_km.pal
311
- # http://www.visibone.com/swatches/VisiBone2_vaccc.ai
312
- # http://www.visibone.com/swatches/VisiBone.gimp
313
- # http://www.visibone.com/swatches/VisiBone.act
314
-
315
- def setup
316
- @filename = "test#{Process.pid}.aco"
317
- end
318
-
319
- def teardown
320
- require 'fileutils'
321
- FileUtils.rm_f @filename if File.exist? @filename
322
- end
323
-
324
- def test_version1
325
- v1 = VISIBONE_V1.unpack("m*")[0]
326
- @aco = AdobeColor.new(v1)
327
- assert_equal(216, @aco.size)
328
- assert_equal(1, @aco.version)
329
- assert_equal({:rgb => 216}, @aco.statistics)
330
- assert_equal(Color::RGB::White, @aco[0])
331
- assert_equal("#ff0033", @aco[-1].html)
332
- assert_equal(v1, @aco.to_aco)
333
- end
334
-
335
- def test_version2
336
- v2 = VISIBONE_V2.unpack("m*")[0]
337
- @aco = AdobeColor.new(v2)
338
- assert_equal(216, @aco.size)
339
- assert_equal(2, @aco.version)
340
- assert_equal({:rgb => 216}, @aco.statistics)
341
- assert_equal(Color::RGB::White, @aco[0])
342
- assert_equal(Color::RGB::White,
343
- @aco["\000W\000h\000i\000t\000e"][0])
344
- assert_equal("#ff0033", @aco[-1].html)
345
- assert_equal("#ff0033",
346
- @aco["\000R\000e\000d\000-\000R\000e\000d\000-\000P\000i\000n\000k"][0].html)
347
- assert_equal(v2, @aco.to_aco)
348
- end
349
-
350
- def test_bogus
351
- o = VISIBONE_V2.unpack("m*")[0]
352
- v = o.dup
353
- v[0, 2] = [ 322 ].pack("n") # break the version
354
- assert_raises(RuntimeError) { AdobeColor.new(v) }
355
- v = o.dup
356
- v[2, 2] = [ 217 ].pack("n") # break the colour count
357
- assert_raises(IndexError) { @aco = AdobeColor.new(v) }
358
- v = o.dup
359
- v[14, 2] = [ 99 ].pack("n") # break the NULL before the name
360
- assert_raises(IndexError) { @aco = AdobeColor.new(v) }
361
- v = o.dup
362
- v[16, 2] = [ 18 ].pack("n") # break the length of the name
363
- assert_raises(IndexError) { @aco = AdobeColor.new(v) }
364
- v = o.dup
365
- v[28, 2] = [ 99 ].pack("n") # break the trailing null of the name
366
- end
367
-
368
- def test_exercise
369
- File.open(@filename, "wb") do |f|
370
- f.write EXERCISE.unpack("m*")[0]
371
- end
372
- @aco = AdobeColor.from_file(@filename)
373
- assert_equal(5, @aco.size)
374
- assert_equal(7, @aco.instance_variable_get(:@order).size)
375
- end
376
-
377
- def test_each
378
- v1 = VISIBONE_V1.unpack("m*")[0]
379
- @aco = AdobeColor.new(v1)
380
- @aco.each { |c| assert_kind_of(Color::RGB, c) }
381
- end
382
-
383
- def test_each_name
384
- v2 = VISIBONE_V2.unpack("m*")[0]
385
- @aco = AdobeColor.new(v2)
386
- assert_equal(216, @aco.size)
387
- assert_equal(2, @aco.version)
388
- @aco.each_name do |n, s|
389
- assert_equal(0, n[0]) if RUBY_VERSION < "1.9"
390
- assert_equal(1, s.size)
391
- assert_kind_of(Color::RGB, s[0])
392
- end
393
- end
394
-
395
- def test_values_at
396
- v2 = VISIBONE_V2.unpack("m*")[0]
397
- @aco = AdobeColor.new(v2)
398
- assert_equal(216, @aco.size)
399
- assert_equal(2, @aco.version)
400
- assert_equal([Color::RGB::White, Color::RGB.from_html("#ff0033")],
401
- @aco.values_at(0, -1))
402
- end
403
- end
404
- end
405
- end
data/test/test_css.rb DELETED
@@ -1,19 +0,0 @@
1
- require 'color'
2
- require 'color/css'
3
- require 'minitest_helper'
4
-
5
- module TestColor
6
- class TestCSS < Minitest::Test
7
- def test_index_with_known_name
8
- assert_same(Color::RGB::AliceBlue, Color::CSS[:aliceblue])
9
- assert_same(Color::RGB::AliceBlue, Color::CSS["AliceBlue"])
10
- assert_same(Color::RGB::AliceBlue, Color::CSS["aliceBlue"])
11
- assert_same(Color::RGB::AliceBlue, Color::CSS["aliceblue"])
12
- assert_same(Color::RGB::AliceBlue, Color::CSS[:AliceBlue])
13
- end
14
-
15
- def test_index_with_unknown_name
16
- assert_equal(nil, Color::CSS['redx'])
17
- end
18
- end
19
- end