// This file is autogenerated by build-prefixes.js. DO NOT EDIT!

use crate::targets::Browsers;
use crate::vendor_prefix::VendorPrefix;

#[allow(dead_code)]
pub enum Feature {
  AlignContent,
  AlignItems,
  AlignSelf,
  Animation,
  AnimationDelay,
  AnimationDirection,
  AnimationDuration,
  AnimationFillMode,
  AnimationIterationCount,
  AnimationName,
  AnimationPlayState,
  AnimationTimingFunction,
  AnyPseudo,
  Appearance,
  AtKeyframes,
  AtResolution,
  AtViewport,
  BackdropFilter,
  BackfaceVisibility,
  BackgroundClip,
  BackgroundOrigin,
  BackgroundSize,
  BorderBlockEnd,
  BorderBlockStart,
  BorderBottomLeftRadius,
  BorderBottomRightRadius,
  BorderImage,
  BorderInlineEnd,
  BorderInlineStart,
  BorderRadius,
  BorderTopLeftRadius,
  BorderTopRightRadius,
  BoxDecorationBreak,
  BoxShadow,
  BoxSizing,
  BreakAfter,
  BreakBefore,
  BreakInside,
  Calc,
  ClipPath,
  ColorAdjust,
  ColumnCount,
  ColumnFill,
  ColumnGap,
  ColumnRule,
  ColumnRuleColor,
  ColumnRuleStyle,
  ColumnRuleWidth,
  ColumnSpan,
  ColumnWidth,
  Columns,
  CrossFade,
  DisplayFlex,
  DisplayGrid,
  Element,
  Fill,
  FillAvailable,
  Filter,
  FilterFunction,
  FitContent,
  Flex,
  FlexBasis,
  FlexDirection,
  FlexFlow,
  FlexGrow,
  FlexShrink,
  FlexWrap,
  FlowFrom,
  FlowInto,
  FontFeatureSettings,
  FontKerning,
  FontLanguageOverride,
  FontVariantLigatures,
  Grab,
  Grabbing,
  GridArea,
  GridColumn,
  GridColumnAlign,
  GridColumnEnd,
  GridColumnStart,
  GridRow,
  GridRowAlign,
  GridRowEnd,
  GridRowStart,
  GridTemplate,
  GridTemplateAreas,
  GridTemplateColumns,
  GridTemplateRows,
  Hyphens,
  ImageRendering,
  ImageSet,
  InlineFlex,
  InlineGrid,
  Isolate,
  IsolateOverride,
  JustifyContent,
  LinearGradient,
  MarginBlockEnd,
  MarginBlockStart,
  MarginInlineEnd,
  MarginInlineStart,
  Mask,
  MaskBorder,
  MaskBorderOutset,
  MaskBorderRepeat,
  MaskBorderSlice,
  MaskBorderSource,
  MaskBorderWidth,
  MaskClip,
  MaskComposite,
  MaskImage,
  MaskOrigin,
  MaskPosition,
  MaskPositionX,
  MaskPositionY,
  MaskRepeat,
  MaskSize,
  MaxContent,
  MinContent,
  ObjectFit,
  ObjectPosition,
  Order,
  OverscrollBehavior,
  PaddingBlockEnd,
  PaddingBlockStart,
  PaddingInlineEnd,
  PaddingInlineStart,
  Perspective,
  PerspectiveOrigin,
  Pixelated,
  PlaceSelf,
  Plaintext,
  PrintColorAdjust,
  PseudoClassAnyLink,
  PseudoClassAutofill,
  PseudoClassFullscreen,
  PseudoClassPlaceholderShown,
  PseudoClassReadOnly,
  PseudoClassReadWrite,
  PseudoElementBackdrop,
  PseudoElementFileSelectorButton,
  PseudoElementPlaceholder,
  PseudoElementSelection,
  RadialGradient,
  RegionFragment,
  RepeatingLinearGradient,
  RepeatingRadialGradient,
  ScrollSnapCoordinate,
  ScrollSnapDestination,
  ScrollSnapPointsX,
  ScrollSnapPointsY,
  ScrollSnapType,
  ShapeImageThreshold,
  ShapeMargin,
  ShapeOutside,
  Sticky,
  Stretch,
  TabSize,
  TextAlignLast,
  TextDecoration,
  TextDecorationColor,
  TextDecorationLine,
  TextDecorationSkip,
  TextDecorationSkipInk,
  TextDecorationStyle,
  TextEmphasis,
  TextEmphasisColor,
  TextEmphasisPosition,
  TextEmphasisStyle,
  TextOrientation,
  TextOverflow,
  TextSizeAdjust,
  TextSpacing,
  TouchAction,
  Transform,
  TransformOrigin,
  TransformStyle,
  Transition,
  TransitionDelay,
  TransitionDuration,
  TransitionProperty,
  TransitionTimingFunction,
  UserSelect,
  WritingMode,
  ZoomIn,
  ZoomOut,
}

impl Feature {
  pub fn prefixes_for(&self, browsers: Browsers) -> VendorPrefix {
    let mut prefixes = VendorPrefix::None;
    match self {
      Feature::BorderRadius
      | Feature::BorderTopLeftRadius
      | Feature::BorderTopRightRadius
      | Feature::BorderBottomRightRadius
      | Feature::BorderBottomLeftRadius => {
        if let Some(version) = browsers.android {
          if version <= 131328 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version <= 262144 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 131072 && version <= 198144 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version <= 197120 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 196864 && version <= 262144 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::BoxShadow => {
        if let Some(version) = browsers.android {
          if version >= 131328 && version <= 196608 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 262144 && version <= 589824 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 197888 && version <= 198144 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 197120 && version <= 262656 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 196864 && version <= 327680 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::Animation
      | Feature::AnimationName
      | Feature::AnimationDuration
      | Feature::AnimationDelay
      | Feature::AnimationDirection
      | Feature::AnimationFillMode
      | Feature::AnimationIterationCount
      | Feature::AnimationPlayState
      | Feature::AnimationTimingFunction
      | Feature::AtKeyframes => {
        if let Some(version) = browsers.android {
          if version >= 131328 && version <= 263171 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 262144 && version <= 2752512 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 327680 && version <= 983040 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 197120 && version <= 524544 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version == 786432 {
            prefixes |= VendorPrefix::O;
          }
          if version >= 983040 && version <= 1900544 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 262144 && version <= 524288 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::Transition
      | Feature::TransitionProperty
      | Feature::TransitionDuration
      | Feature::TransitionDelay
      | Feature::TransitionTimingFunction => {
        if let Some(version) = browsers.android {
          if version >= 131328 && version <= 262656 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 262144 && version <= 1638400 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 262144 && version <= 983040 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 197120 && version <= 393216 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 655360 && version <= 786432 {
            prefixes |= VendorPrefix::O;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 196864 && version <= 393216 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::Transform | Feature::TransformOrigin => {
        if let Some(version) = browsers.android {
          if version >= 131328 && version <= 263171 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 262144 && version <= 2293760 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 197888 && version <= 983040 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ie {
          if version <= 589824 {
            prefixes |= VendorPrefix::Ms;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 197120 && version <= 524544 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 656640 && version <= 786432 {
            prefixes |= VendorPrefix::O;
          }
          if version >= 983040 && version <= 1441792 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 196864 && version <= 524288 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::Perspective | Feature::PerspectiveOrigin | Feature::TransformStyle => {
        if let Some(version) = browsers.android {
          if version >= 196608 && version <= 263171 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 786432 && version <= 2293760 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 655360 && version <= 983040 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 197120 && version <= 524544 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 && version <= 1441792 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 262144 && version <= 524288 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::BackfaceVisibility => {
        if let Some(version) = browsers.android {
          if version >= 196608 && version <= 263171 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 786432 && version <= 2293760 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 655360 && version <= 983040 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 197120 && version <= 983552 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 && version <= 1441792 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 262144 && version <= 983552 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::LinearGradient
      | Feature::RepeatingLinearGradient
      | Feature::RadialGradient
      | Feature::RepeatingRadialGradient => {
        if let Some(version) = browsers.android {
          if version >= 131328 && version <= 262656 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 262144 && version <= 1638400 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 198144 && version <= 983040 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 197120 && version <= 393216 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 721152 && version <= 786432 {
            prefixes |= VendorPrefix::O;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 262144 && version <= 393216 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::BoxSizing => {
        if let Some(version) = browsers.android {
          if version >= 131328 && version <= 196608 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 262144 && version <= 589824 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 131072 && version <= 1835008 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 197120 && version <= 262656 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 196864 && version <= 327680 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::Filter => {
        if let Some(version) = browsers.android {
          if version >= 263168 && version <= 263171 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 1179648 && version <= 3407872 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 393216 && version <= 589824 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 && version <= 2555904 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 393216 && version <= 589824 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.samsung {
          if version >= 262144 && version <= 393728 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::FilterFunction => {
        if let Some(version) = browsers.ios_saf {
          if version >= 589824 && version <= 590592 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version <= 589824 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::BackdropFilter => {
        if let Some(version) = browsers.edge {
          if version >= 1114112 && version <= 1179648 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 589824 && version <= 1115648 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 589824 && version <= 1115648 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::Element => {
        if let Some(version) = browsers.firefox {
          if version >= 131072 {
            prefixes |= VendorPrefix::Moz;
          }
        }
      }
      Feature::Columns
      | Feature::ColumnWidth
      | Feature::ColumnGap
      | Feature::ColumnRule
      | Feature::ColumnRuleColor
      | Feature::ColumnRuleWidth
      | Feature::ColumnCount
      | Feature::ColumnRuleStyle
      | Feature::ColumnSpan
      | Feature::ColumnFill => {
        if let Some(version) = browsers.android {
          if version >= 131328 && version <= 263171 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 262144 && version <= 3211264 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 131072 && version <= 3342336 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 197120 && version <= 524544 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 && version <= 2359296 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 196864 && version <= 524288 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.samsung {
          if version <= 262144 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::BreakBefore | Feature::BreakAfter | Feature::BreakInside => {
        if let Some(version) = browsers.android {
          if version >= 131328 && version <= 263171 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 262144 && version <= 3211264 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 197120 && version <= 524544 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 && version <= 2359296 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 196864 && version <= 524288 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.samsung {
          if version <= 262144 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::UserSelect => {
        if let Some(version) = browsers.android {
          if version >= 131328 && version <= 263171 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 262144 && version <= 3473408 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.edge {
          if version >= 786432 && version <= 1179648 {
            prefixes |= VendorPrefix::Ms;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 131072 && version <= 4456448 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ie {
          if version >= 655360 {
            prefixes |= VendorPrefix::Ms;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 197120 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 && version <= 2621440 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 196864 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.samsung {
          if version >= 262144 && version <= 327680 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::DisplayFlex
      | Feature::InlineFlex
      | Feature::Flex
      | Feature::FlexGrow
      | Feature::FlexShrink
      | Feature::FlexBasis
      | Feature::FlexDirection
      | Feature::FlexWrap
      | Feature::FlexFlow
      | Feature::JustifyContent
      | Feature::Order
      | Feature::AlignItems
      | Feature::AlignSelf
      | Feature::AlignContent => {
        if let Some(version) = browsers.android {
          if version >= 131328 && version <= 262656 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 262144 && version <= 1835008 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 131072 && version <= 1376256 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ie {
          if version == 655360 {
            prefixes |= VendorPrefix::Ms;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 197120 && version <= 524544 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 && version <= 1048576 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 196864 && version <= 524288 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::Calc => {
        if let Some(version) = browsers.chrome {
          if version >= 1245184 && version <= 1638400 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 262144 && version <= 983040 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version <= 393216 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version <= 393216 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::BackgroundOrigin | Feature::BackgroundSize => {
        if let Some(version) = browsers.android {
          if version >= 131328 && version <= 131840 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.firefox {
          if version <= 198144 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.opera {
          if version <= 655360 {
            prefixes |= VendorPrefix::O;
          }
        }
      }
      Feature::BackgroundClip => {
        if let Some(version) = browsers.android {
          if version >= 262144 && version <= 263171 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 262144 && version <= 7798784 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.edge {
          if version >= 786432 && version <= 917504 {
            prefixes |= VendorPrefix::Ms;
          }
          if version >= 5177344 && version <= 7798784 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 && version <= 6881280 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 197120 && version <= 851968 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.samsung {
          if version >= 262144 && version <= 1572864 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 262144 && version <= 851968 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::FontFeatureSettings | Feature::FontVariantLigatures | Feature::FontLanguageOverride => {
        if let Some(version) = browsers.android {
          if version >= 263168 && version <= 263171 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 1048576 && version <= 3080192 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 262144 && version <= 2162688 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 && version <= 2228224 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.samsung {
          if version <= 262144 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::FontKerning => {
        if let Some(version) = browsers.android {
          if version <= 263168 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 1900544 && version <= 2097152 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 524288 && version <= 721664 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 1048576 && version <= 1245184 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 458752 && version <= 589824 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::BorderImage => {
        if let Some(version) = browsers.android {
          if version >= 131328 && version <= 262656 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 262144 && version <= 917504 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 197888 && version <= 917504 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 197120 && version <= 327680 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 720896 && version <= 786688 {
            prefixes |= VendorPrefix::O;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 196864 && version <= 327936 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::PseudoElementSelection => {
        if let Some(version) = browsers.firefox {
          if version >= 131072 && version <= 3997696 {
            prefixes |= VendorPrefix::Moz;
          }
        }
      }
      Feature::PseudoElementPlaceholder => {
        if let Some(version) = browsers.android {
          if version >= 131328 && version <= 263171 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 262144 && version <= 3670016 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.edge {
          if version >= 786432 && version <= 1179648 {
            prefixes |= VendorPrefix::Ms;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 1179648 && version <= 3276800 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ie {
          if version >= 655360 {
            prefixes |= VendorPrefix::Ms;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 262656 && version <= 655360 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 && version <= 2818048 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 327680 && version <= 655360 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.samsung {
          if version >= 262144 && version <= 393728 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::PseudoClassPlaceholderShown => {
        if let Some(version) = browsers.firefox {
          if version >= 262144 && version <= 3276800 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ie {
          if version >= 655360 {
            prefixes |= VendorPrefix::Ms;
          }
        }
      }
      Feature::Hyphens => {
        if let Some(version) = browsers.edge {
          if version >= 786432 && version <= 1179648 {
            prefixes |= VendorPrefix::Ms;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 393216 && version <= 2752512 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ie {
          if version >= 655360 {
            prefixes |= VendorPrefix::Ms;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 262656 && version <= 1050112 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 327936 && version <= 1050112 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::PseudoClassFullscreen => {
        if let Some(version) = browsers.chrome {
          if version >= 983040 && version <= 4587520 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 655360 && version <= 4128768 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ie {
          if version >= 720896 {
            prefixes |= VendorPrefix::Ms;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 && version <= 4128768 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 327936 && version <= 1049344 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.samsung {
          if version >= 262144 && version <= 590336 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::PseudoElementBackdrop => {
        if let Some(version) = browsers.android {
          if version >= 263168 && version <= 263171 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 2097152 && version <= 2359296 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.edge {
          if version >= 786432 && version <= 1179648 {
            prefixes |= VendorPrefix::Ms;
          }
        }
        if browsers.ie.is_some() {
          prefixes |= VendorPrefix::Ms;
        }
        if let Some(version) = browsers.opera {
          if version >= 1245184 && version <= 1507328 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::PseudoElementFileSelectorButton => {
        if let Some(version) = browsers.android {
          if version >= 263168 && version <= 263171 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 262144 && version <= 5767168 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.edge {
          if version >= 786432 && version <= 1179648 {
            prefixes |= VendorPrefix::Ms;
          }
          if version >= 5177344 && version <= 5767168 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.ie {
          if version >= 655360 {
            prefixes |= VendorPrefix::Ms;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 197120 && version <= 917504 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 && version <= 4849664 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 196864 && version <= 917504 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.samsung {
          if version >= 262144 && version <= 917504 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::PseudoClassAutofill => {
        if let Some(version) = browsers.android {
          if version >= 263168 && version <= 263171 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 262144 && version <= 7143424 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.edge {
          if version >= 5177344 && version <= 7143424 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 197120 && version <= 918784 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 && version <= 6225920 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 196864 && version <= 917760 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.samsung {
          if version >= 262144 && version <= 1310720 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::TabSize => {
        if let Some(version) = browsers.firefox {
          if version >= 262144 && version <= 5898240 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 656896 && version <= 786688 {
            prefixes |= VendorPrefix::O;
          }
        }
      }
      Feature::MaxContent | Feature::MinContent => {
        if let Some(version) = browsers.android {
          if version >= 263168 && version <= 263171 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 1441792 && version <= 2949120 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 196608 && version <= 4259840 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 458752 && version <= 852992 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 && version <= 2097152 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 393472 && version <= 655616 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.samsung {
          if version <= 262144 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::Fill | Feature::FillAvailable => {
        if let Some(version) = browsers.chrome {
          if version >= 1441792 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.android {
          if version >= 263168 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.edge {
          if version >= 5177344 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 196608 && version <= 4259840 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 458752 && version <= 852992 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 393472 && version <= 655616 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.samsung {
          if version >= 262144 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::FitContent => {
        if let Some(version) = browsers.android {
          if version >= 263168 && version <= 263171 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 1441792 && version <= 2949120 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 196608 && version <= 6094848 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 458752 && version <= 852992 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 && version <= 2097152 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 393472 && version <= 655616 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.samsung {
          if version <= 262144 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::Stretch => {
        if let Some(version) = browsers.firefox {
          if version >= 196608 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.android {
          if version >= 263168 && version <= 263171 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 1441792 && version <= 8978432 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.edge {
          if version >= 5177344 && version <= 8978432 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 458752 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 393472 && version <= 1705216 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.samsung {
          if version >= 262144 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::ZoomIn | Feature::ZoomOut => {
        if let Some(version) = browsers.chrome {
          if version >= 262144 && version <= 2359296 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 131072 && version <= 1507328 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 && version <= 1507328 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 196864 && version <= 524288 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::Grab | Feature::Grabbing => {
        if let Some(version) = browsers.chrome {
          if version >= 262144 && version <= 4390912 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 131072 && version <= 1703936 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 && version <= 3538944 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 196864 && version <= 655616 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::Sticky => {
        if let Some(version) = browsers.ios_saf {
          if version >= 393216 && version <= 786944 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 393472 && version <= 786688 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::TouchAction => {
        if let Some(version) = browsers.ie {
          if version == 655360 {
            prefixes |= VendorPrefix::Ms;
          }
        }
      }
      Feature::TextDecorationSkip | Feature::TextDecorationSkipInk => {
        if let Some(version) = browsers.ios_saf {
          if version >= 524288 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 459008 && version <= 786432 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::TextDecoration => {
        if let Some(version) = browsers.ios_saf {
          if version >= 524288 && version <= 1704192 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 524288 && version <= 1704192 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::TextDecorationColor | Feature::TextDecorationLine | Feature::TextDecorationStyle => {
        if let Some(version) = browsers.firefox {
          if version >= 393216 && version <= 2293760 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 524288 && version <= 786432 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 524288 && version <= 786432 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::TextSizeAdjust => {
        if browsers.firefox.is_some() {
          prefixes |= VendorPrefix::Moz;
        }
        if let Some(version) = browsers.edge {
          if version >= 786432 && version <= 1179648 {
            prefixes |= VendorPrefix::Ms;
          }
        }
        if let Some(version) = browsers.ie {
          if version >= 655360 {
            prefixes |= VendorPrefix::Ms;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 327680 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::MaskClip
      | Feature::MaskComposite
      | Feature::MaskImage
      | Feature::MaskOrigin
      | Feature::MaskRepeat
      | Feature::MaskBorderRepeat
      | Feature::MaskBorderSource
      | Feature::Mask
      | Feature::MaskPosition
      | Feature::MaskPositionX
      | Feature::MaskPositionY
      | Feature::MaskSize
      | Feature::MaskBorder
      | Feature::MaskBorderOutset
      | Feature::MaskBorderWidth
      | Feature::MaskBorderSlice => {
        if let Some(version) = browsers.android {
          if version >= 131328 && version <= 263171 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 262144 && version <= 7798784 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.edge {
          if version >= 5177344 && version <= 7798784 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 197120 && version <= 983552 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 && version <= 6881280 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 262144 && version <= 983552 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.samsung {
          if version >= 262144 && version <= 1572864 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::ClipPath => {
        if let Some(version) = browsers.android {
          if version >= 263168 && version <= 263171 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 1572864 && version <= 3538944 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 458752 && version <= 589824 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 && version <= 2686976 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 458752 && version <= 589824 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.samsung {
          if version >= 262144 && version <= 327680 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::BoxDecorationBreak => {
        if let Some(version) = browsers.android {
          if version >= 263168 && version <= 263171 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 1441792 && version <= 8454144 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.edge {
          if version >= 5177344 && version <= 8454144 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 458752 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 393472 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.samsung {
          if version >= 262144 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::ObjectFit | Feature::ObjectPosition => {
        if let Some(version) = browsers.opera {
          if version >= 656896 && version <= 786688 {
            prefixes |= VendorPrefix::O;
          }
        }
      }
      Feature::ShapeMargin | Feature::ShapeOutside | Feature::ShapeImageThreshold => {
        if let Some(version) = browsers.ios_saf {
          if version >= 524288 && version <= 655360 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 459008 && version <= 655360 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::TextOverflow => {
        if let Some(version) = browsers.opera {
          if version >= 589824 && version <= 786432 {
            prefixes |= VendorPrefix::O;
          }
        }
      }
      Feature::AtViewport => {
        if let Some(version) = browsers.edge {
          if version >= 786432 && version <= 1179648 {
            prefixes |= VendorPrefix::Ms;
          }
        }
        if let Some(version) = browsers.ie {
          if version >= 655360 {
            prefixes |= VendorPrefix::Ms;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 720896 && version <= 786688 {
            prefixes |= VendorPrefix::O;
          }
        }
      }
      Feature::AtResolution => {
        if let Some(version) = browsers.android {
          if version >= 131840 && version <= 262656 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 262144 && version <= 1835008 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 197888 && version <= 983040 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 262144 && version <= 984576 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 591104 && version <= 786432 {
            prefixes |= VendorPrefix::O;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 262144 && version <= 984576 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::TextAlignLast => {
        if let Some(version) = browsers.firefox {
          if version >= 786432 && version <= 3145728 {
            prefixes |= VendorPrefix::Moz;
          }
        }
      }
      Feature::Pixelated => {
        if let Some(version) = browsers.firefox {
          if version >= 198144 && version <= 4194304 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 327680 && version <= 393216 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 722432 && version <= 786688 {
            prefixes |= VendorPrefix::O;
          }
        }
        if let Some(version) = browsers.safari {
          if version <= 393216 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::ImageRendering => {
        if let Some(version) = browsers.ie {
          if version >= 458752 {
            prefixes |= VendorPrefix::Ms;
          }
        }
      }
      Feature::BorderInlineStart
      | Feature::BorderInlineEnd
      | Feature::MarginInlineStart
      | Feature::MarginInlineEnd
      | Feature::PaddingInlineStart
      | Feature::PaddingInlineEnd => {
        if let Some(version) = browsers.android {
          if version >= 131328 && version <= 263171 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 262144 && version <= 4456448 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 196608 && version <= 2621440 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 197120 && version <= 786432 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 && version <= 3604480 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 196864 && version <= 786432 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.samsung {
          if version >= 262144 && version <= 590336 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::BorderBlockStart
      | Feature::BorderBlockEnd
      | Feature::MarginBlockStart
      | Feature::MarginBlockEnd
      | Feature::PaddingBlockStart
      | Feature::PaddingBlockEnd => {
        if let Some(version) = browsers.android {
          if version >= 131328 && version <= 263171 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 262144 && version <= 4456448 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 197120 && version <= 786432 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 && version <= 3604480 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 196864 && version <= 786432 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.samsung {
          if version >= 262144 && version <= 590336 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::Appearance => {
        if let Some(version) = browsers.android {
          if version >= 131328 && version <= 263171 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 262144 && version <= 5439488 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.edge {
          if version >= 786432 && version <= 1179648 {
            prefixes |= VendorPrefix::Ms;
          }
          if version >= 5177344 && version <= 5439488 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 131072 && version <= 5177344 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if browsers.ie.is_some() {
          prefixes |= VendorPrefix::Ms;
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 197120 && version <= 983552 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 && version <= 4718592 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 196864 && version <= 983552 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.samsung {
          if version >= 262144 && version <= 851968 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::ScrollSnapType
      | Feature::ScrollSnapCoordinate
      | Feature::ScrollSnapDestination
      | Feature::ScrollSnapPointsX
      | Feature::ScrollSnapPointsY => {
        if let Some(version) = browsers.edge {
          if version >= 786432 && version <= 1179648 {
            prefixes |= VendorPrefix::Ms;
          }
        }
        if let Some(version) = browsers.ie {
          if version >= 655360 {
            prefixes |= VendorPrefix::Ms;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 589824 && version <= 656128 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 589824 && version <= 655616 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::FlowInto | Feature::FlowFrom | Feature::RegionFragment => {
        if let Some(version) = browsers.chrome {
          if version >= 983040 && version <= 1179648 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.edge {
          if version >= 786432 && version <= 1179648 {
            prefixes |= VendorPrefix::Ms;
          }
        }
        if let Some(version) = browsers.ie {
          if version >= 655360 {
            prefixes |= VendorPrefix::Ms;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 458752 && version <= 720896 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 393472 && version <= 720896 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::ImageSet => {
        if let Some(version) = browsers.android {
          if version >= 263168 && version <= 263171 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 1376256 && version <= 7340032 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.edge {
          if version >= 5177344 && version <= 7340032 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 393216 && version <= 590592 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 && version <= 6422528 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 393216 && version <= 590080 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.samsung {
          if version >= 262144 && version <= 1441792 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::WritingMode => {
        if let Some(version) = browsers.android {
          if version >= 196608 && version <= 263171 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 524288 && version <= 3080192 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.ie {
          if version >= 328960 {
            prefixes |= VendorPrefix::Ms;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 327680 && version <= 656128 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 && version <= 2228224 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 327936 && version <= 655616 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.samsung {
          if version <= 262144 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::CrossFade => {
        if let Some(version) = browsers.chrome {
          if version >= 1114112 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.android {
          if version >= 263168 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.edge {
          if version >= 5177344 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 327680 && version <= 590592 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 327936 && version <= 590080 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.samsung {
          if version >= 262144 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::PseudoClassReadOnly | Feature::PseudoClassReadWrite => {
        if let Some(version) = browsers.firefox {
          if version >= 196608 && version <= 5046272 {
            prefixes |= VendorPrefix::Moz;
          }
        }
      }
      Feature::TextEmphasis
      | Feature::TextEmphasisPosition
      | Feature::TextEmphasisStyle
      | Feature::TextEmphasisColor => {
        if let Some(version) = browsers.android {
          if version >= 263168 && version <= 263171 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 1638400 && version <= 6422528 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.edge {
          if version >= 5177344 && version <= 6422528 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 && version <= 5570560 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 393472 && version <= 458752 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.samsung {
          if version >= 262144 && version <= 1114112 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::DisplayGrid
      | Feature::InlineGrid
      | Feature::GridTemplateColumns
      | Feature::GridTemplateRows
      | Feature::GridRowStart
      | Feature::GridColumnStart
      | Feature::GridRowEnd
      | Feature::GridColumnEnd
      | Feature::GridRow
      | Feature::GridColumn
      | Feature::GridArea
      | Feature::GridTemplate
      | Feature::GridTemplateAreas
      | Feature::PlaceSelf
      | Feature::GridColumnAlign
      | Feature::GridRowAlign => {
        if let Some(version) = browsers.edge {
          if version >= 786432 && version <= 983040 {
            prefixes |= VendorPrefix::Ms;
          }
        }
        if let Some(version) = browsers.ie {
          if version >= 655360 {
            prefixes |= VendorPrefix::Ms;
          }
        }
      }
      Feature::TextSpacing => {
        if let Some(version) = browsers.edge {
          if version >= 786432 && version <= 1179648 {
            prefixes |= VendorPrefix::Ms;
          }
        }
        if let Some(version) = browsers.ie {
          if version >= 524288 {
            prefixes |= VendorPrefix::Ms;
          }
        }
      }
      Feature::PseudoClassAnyLink => {
        if let Some(version) = browsers.android {
          if version >= 263168 && version <= 263171 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 983040 && version <= 4194304 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 196608 && version <= 3211264 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 393216 && version <= 524544 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 && version <= 3342336 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 393472 && version <= 524288 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.samsung {
          if version >= 327680 && version <= 524800 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::Isolate => {
        if let Some(version) = browsers.chrome {
          if version >= 1048576 && version <= 3080192 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 655360 && version <= 3211264 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 393216 && version <= 656128 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 && version <= 2228224 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 393216 && version <= 655616 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::Plaintext => {
        if let Some(version) = browsers.firefox {
          if version >= 655360 && version <= 3211264 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 393216 && version <= 656128 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 393216 && version <= 655616 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::IsolateOverride => {
        if let Some(version) = browsers.firefox {
          if version >= 1114112 && version <= 3211264 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 458752 && version <= 656128 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 458752 && version <= 655616 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::OverscrollBehavior => {
        if let Some(version) = browsers.edge {
          if version >= 786432 && version <= 1114112 {
            prefixes |= VendorPrefix::Ms;
          }
        }
        if let Some(version) = browsers.ie {
          if version >= 655360 {
            prefixes |= VendorPrefix::Ms;
          }
        }
      }
      Feature::TextOrientation => {
        if let Some(version) = browsers.safari {
          if version >= 655616 && version <= 852224 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::PrintColorAdjust | Feature::ColorAdjust => {
        if let Some(version) = browsers.android {
          if version >= 263168 && version <= 263171 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.chrome {
          if version >= 1114112 && version <= 8847360 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.edge {
          if version >= 5177344 && version <= 8847360 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 3145728 && version <= 6291456 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 393216 && version <= 983552 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 983040 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 393216 && version <= 983552 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.samsung {
          if version >= 262144 && version <= 1835008 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
      Feature::AnyPseudo => {
        if let Some(version) = browsers.chrome {
          if version >= 786432 && version <= 5701632 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.edge {
          if version >= 5177344 && version <= 5701632 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.firefox {
          if version >= 262144 && version <= 5111808 {
            prefixes |= VendorPrefix::Moz;
          }
        }
        if let Some(version) = browsers.opera {
          if version >= 917504 && version <= 4784128 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.safari {
          if version >= 327680 && version <= 851968 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.ios_saf {
          if version >= 327680 && version <= 851968 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.samsung {
          if version >= 65536 && version <= 917504 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
        if let Some(version) = browsers.android {
          if version >= 263168 && version <= 5701632 {
            prefixes |= VendorPrefix::WebKit;
          }
        }
      }
    }
    prefixes
  }
}

pub fn is_flex_2009(browsers: Browsers) -> bool {
  if let Some(version) = browsers.android {
    if version >= 131328 && version <= 262656 {
      return true;
    }
  }
  if let Some(version) = browsers.chrome {
    if version >= 262144 && version <= 1310720 {
      return true;
    }
  }
  if let Some(version) = browsers.ios_saf {
    if version >= 197120 && version <= 393216 {
      return true;
    }
  }
  if let Some(version) = browsers.safari {
    if version >= 196864 && version <= 393216 {
      return true;
    }
  }
  false
}

pub fn is_webkit_gradient(browsers: Browsers) -> bool {
  if let Some(version) = browsers.android {
    if version >= 131328 && version <= 196608 {
      return true;
    }
  }
  if let Some(version) = browsers.chrome {
    if version >= 262144 && version <= 589824 {
      return true;
    }
  }
  if let Some(version) = browsers.ios_saf {
    if version >= 197120 && version <= 393216 {
      return true;
    }
  }
  if let Some(version) = browsers.safari {
    if version >= 262144 && version <= 393216 {
      return true;
    }
  }
  false
}
