material-components / material-components-web

Modular and customizable Material Design UI components for the web
https://material.io/develop/web
MIT License
17.14k stars 2.15k forks source link

[mdc-theme] Incorrect ink color for particular background #5416

Open Yavanosta opened 4 years ago

Yavanosta commented 4 years ago

Bug report

For some backgrounds mdc-theme calculate incorrect ink color.

Ink color for background color is usually chooses using this algorithm: https://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-contrast.html https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef

But here there is a condition that give priority to white ink color if both white and black are suitable according minimal contrast criteria.

That's why for background #018786 (secondary variant color from base theme) white ink color is white, but contrast for black ink is higher (black has 4.8111258691 white has 4.3648826847). Moreover contrast for white is lower that required contrast for small texts.

Color selection tool offer black ink for this background.

Steps to reproduce

  1. Set secondary color to #018786
  2. run npm start (or open demo page)
  3. Go to fab button demo
  4. Buttons will have white ink color

Actual behavior

Buttons have white ink color.

Expected behavior

Buttons have black ink color.

Possible solution

Remove this condition ($lightContrast < $minimumContrast) from theme component or at least update 3.1 -> 4.5 (4.5 is minimum required contrast for small texts).

Yavanosta commented 4 years ago

Problem

To determine ink color for each given background color the mdc-theme-tone function used. I has following algorithm:

  1. Determine contrast between background color / black and background color / white.
  2. If background color / white contrast > 3.1 -> ink color white
  3. Else use ink color with the maximum contrast.

This algorithm is not compatible with our default theme because for secondary varian color (#018786) it return white ink.

Possible solutions

  1. Hardcode black ink for secondary variant color. It can be done because automatically defined color can be overrider with manually set if they does not satisfy requirements.
  2. Tune color definition algorithm:
    1. Tune force white cut off for example to 4.5 (minimum contrast for small captions)
    2. Use contrast only to determine ink color (always choose ink with maximum contrast). Same as currently but without 3.1 cut-of.
    3. Use YIQ color palette and check if Y >= 128 (or vice versa).
    4. Use HSL color palette and check if L >= 0.5
    5. Use Color difference and choose color with maximum difference

All this algorithms re not silver bullet because there are a lot edge cases where changing algorithm change ink color from white to black or from black to white. Additional research should be done to find out the best algorithm for tone detection.

Here is very brief overview of affected cases: | Current | [i] Current (4.5) | [ii] Max contrast | [iii] YIQ | [iv] HSL | [v] Color Diff | | ------------- | ------------- | ------------- | ------------- | ------------- | ------------- | |![](https://via.placeholder.com/90x30/018786/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/018786/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/018786/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/018786/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/018786/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/018786/FFFFFF?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/00A800/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00A800/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00A800/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00A800/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00A800/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00A800/FFFFFF?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/00A838/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00A838/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00A838/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00A838/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00A838/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00A838/FFFFFF?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/00A870/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00A870/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00A870/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00A870/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00A870/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00A870/FFFFFF?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/00A8A8/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00A8A8/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00A8A8/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00A8A8/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00A8A8/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00A8A8/FFFFFF?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/00A8E0/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00A8E0/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00A8E0/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00A8E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00A8E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00A8E0/000000?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/00E000/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00E000/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00E000/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00E000/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00E000/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00E000/FFFFFF?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/00E038/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00E038/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00E038/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00E038/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00E038/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00E038/FFFFFF?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/00E070/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00E070/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00E070/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00E070/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00E070/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00E070/FFFFFF?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/00E0A8/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00E0A8/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00E0A8/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00E0A8/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00E0A8/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00E0A8/000000?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/00E0E0/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00E0E0/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00E0E0/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00E0E0/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00E0E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/00E0E0/000000?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/3838E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/3838E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/3838E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/3838E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/3838E0/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/3838E0/FFFFFF?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/3870E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/3870E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/3870E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/3870E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/3870E0/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/3870E0/000000?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/38A800/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38A800/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38A800/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38A800/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38A800/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38A800/FFFFFF?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/38A838/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38A838/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38A838/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38A838/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38A838/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38A838/FFFFFF?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/38A870/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38A870/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38A870/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38A870/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38A870/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38A870/FFFFFF?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/38A8A8/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38A8A8/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38A8A8/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38A8A8/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38A8A8/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38A8A8/000000?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/38E000/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38E000/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38E000/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38E000/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38E000/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38E000/FFFFFF?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/38E038/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38E038/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38E038/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38E038/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38E038/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/38E038/FFFFFF?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/7038E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/7038E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/7038E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/7038E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/7038E0/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/7038E0/000000?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/7070A8/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/7070A8/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/7070A8/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/7070A8/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/7070A8/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/7070A8/000000?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/7070E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/7070E0/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/7070E0/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/7070E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/7070E0/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/7070E0/000000?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/70A800/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/70A800/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/70A800/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/70A800/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/70A800/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/70A800/FFFFFF?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/70A838/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/70A838/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/70A838/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/70A838/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/70A838/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/70A838/FFFFFF?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/70E000/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/70E000/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/70E000/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/70E000/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/70E000/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/70E000/FFFFFF?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/A800E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A800E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A800E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A800E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A800E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A800E0/000000?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/A838A8/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A838A8/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A838A8/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A838A8/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A838A8/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A838A8/000000?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/A838E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A838E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A838E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A838E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A838E0/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A838E0/000000?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/A87000/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A87000/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A87000/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A87000/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A87000/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A87000/FFFFFF?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/A87038/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A87038/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A87038/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A87038/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A87038/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A87038/FFFFFF?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/A87070/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A87070/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A87070/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A87070/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A87070/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A87070/000000?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/A870A8/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A870A8/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A870A8/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A870A8/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A870A8/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A870A8/000000?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/A870E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A870E0/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A870E0/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A870E0/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A870E0/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A870E0/000000?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/A8A800/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A8A800/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A8A800/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A8A800/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A8A800/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A8A800/FFFFFF?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/A8A838/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A8A838/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A8A838/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A8A838/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A8A838/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A8A838/000000?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/A8E000/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A8E000/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A8E000/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A8E000/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A8E000/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/A8E000/000000?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/E000A8/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E000A8/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E000A8/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E000A8/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E000A8/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E000A8/000000?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/E000E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E000E0/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E000E0/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E000E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E000E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E000E0/000000?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/E03800/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E03800/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E03800/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E03800/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E03800/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E03800/FFFFFF?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/E03838/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E03838/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E03838/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E03838/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E03838/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E03838/FFFFFF?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/E03870/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E03870/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E03870/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E03870/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E03870/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E03870/000000?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/E038A8/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E038A8/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E038A8/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E038A8/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E038A8/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E038A8/000000?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/E038E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E038E0/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E038E0/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E038E0/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E038E0/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E038E0/000000?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/E07000/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E07000/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E07000/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E07000/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E07000/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E07000/FFFFFF?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/E07038/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E07038/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E07038/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E07038/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E07038/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E07038/000000?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/E07070/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E07070/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E07070/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E07070/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E07070/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E07070/000000?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/E0A800/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E0A800/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E0A800/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E0A800/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E0A800/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E0A800/000000?text=Demo%20Text)| |![](https://via.placeholder.com/90x30/E0E000/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E0E000/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E0E000/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E0E000/000000?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E0E000/FFFFFF?text=Demo%20Text) | ![](https://via.placeholder.com/90x30/E0E000/000000?text=Demo%20Text)|

Since for now Secondary Variant is not used algorithm will not be changed as not to make breaking changes.