/*
 * Copyright 2024 Palantir Technologies, Inc. All rights reserved.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import * as React from "react";
import type { SVGIconProps } from "../../svgIconProps";
import { IconSize } from "../../iconTypes";
import { SVGIconContainer } from "../../svgIconContainer";

export const Virus: React.FC<SVGIconProps> = React.forwardRef<any, SVGIconProps>((props, ref) => {
    const isLarge = (props.size ?? IconSize.STANDARD) >= IconSize.LARGE;
    const pixelGridSize = isLarge ? IconSize.LARGE : IconSize.STANDARD;
    const translation = `${-1 * pixelGridSize / 0.05 / 2}`;
    const style = { transformOrigin: "center" };
    return (
        <SVGIconContainer iconName="virus" ref={ref} {...props}>
            <path
                d={isLarge ? "M304.98 123.3L330 98.28L337.08 105.36L338.82 106.9A20 20 0 0 0 365.36 77.08L322.92 34.64L321.18 33.1A20 20 0 0 0 294.6400000000001 62.92L301.7200000000001 69.9999999999999L276.7000000000001 95.0199999999999A130 130 0 0 0 220 71.52L219.98 40H230A20 20 0 0 0 232.3400000000001 0.14L230 0H170A20 20 0 0 0 167.66 39.86L170 40H179.98V71.54A130 130 0 0 0 129.22 90.94L108.28 70L115.36 62.92A20 20 0 0 0 88.82 33.1L87.08 34.64L44.64 77.08A20 20 0 0 0 71.18 106.9L72.92 105.3600000000001L80 98.2800000000001L99.4 117.6800000000001A130 130 0 0 0 71.72 178.8200000000001L71.22 178.7800000000001L40 178.8V170A20 20 0 0 0 0.14 167.66L0 170V230A20 20 0 0 0 39.86 232.3400000000001L40 230V218.8H71.34A129.4 129.4 0 0 0 99.4 282.3400000000001L79.98 301.7200000000001L72.92 294.64L71.18 293.1A20 20 0 0 0 44.64 322.92L87.08 365.36L88.82 366.9A20 20 0 0 0 115.36 337.08L108.28 330.02L129.22 309.06A130 130 0 0 0 180 328.4600000000001V360H170A20 20 0 0 0 167.66 399.86L170 400H230A20 20 0 0 0 232.3400000000001 360.14L230 360H220V328.4600000000001A130 130 0 0 0 276.76 304.94L277.56 305.86L301.7200000000001 330L294.6600000000001 337.06A20 20 0 0 0 321.2000000000001 366.88L322.9400000000001 365.34L365.3800000000001 322.9A20 20 0 0 0 338.8400000000001 293.08L337.1 294.62L330.0200000000001 301.7L305.88 277.56L304.9600000000001 276.74A130 130 0 0 0 328.1600000000001 222.08H360V230A20 20 0 0 0 399.86 232.3400000000001L400 230V170A20 20 0 0 0 360.1400000000001 167.66L360 170V182.1H328.78A130 130 0 0 0 304.98 123.3M250 180A30 30 0 1 1 250 120A30 30 0 0 1 250 180M160 280A40 40 0 1 1 160 200A40 40 0 0 1 160 280" : "M238.36 97.86L253.1 83.12L254.14 84.14A20 20 0 0 0 284 57.6L282.44 55.86L254.16 27.58A20 20 0 0 0 224.32 54.12L224.9 54.78L207.6400000000001 72.04C199.12 67.42 189.84 64 180.0400000000001 62L180 40L182.34 39.86A20 20 0 0 0 180 0H140L137.66 0.14A20 20 0 0 0 140 40V62A100 100 0 0 0 111.06 72.78L94.14 55.86L95.7 54.12A20 20 0 0 0 65.86 27.58L37.58 55.86L36.02 57.6A20 20 0 0 0 65.86 84.14L80.74 99.02A100 100 0 0 0 64.6 130H40A20 20 0 0 0 0.14 127.66L0 130V170A20 20 0 0 0 39.86 172.34L40 170H60.5A100 100 0 0 0 78.6 218.1L68.36 228.36L65.86 225.86A20 20 0 0 0 36 252.4L37.56 254.14L65.84 282.42A20 20 0 0 0 96.42 256.88L107.88 245.38A100 100 0 0 0 139.96 257.98V280L137.64 280.14A20 20 0 0 0 137.64 319.86L140 320H180A20 20 0 0 0 182.34 280.14L180 280L180.02 258C192.8 255.4 204.68 250.38 215.16 243.4L225.86 254.14L224.3 255.88A20 20 0 0 0 254.14 282.42L282.42 254.14L283.98 252.4A20 20 0 0 0 254.14 225.86L243.44 215.14A100 100 0 0 0 259.5 170H280L280.14 172.34A20 20 0 0 0 320 170V130L319.86 127.66A20 20 0 0 0 280 130H255.42A100 100 0 0 0 238.36 97.86M200 140A20 20 0 1 1 200 100A20 20 0 0 1 200 140M130 220A30 30 0 1 1 130 160A30 30 0 0 1 130 220"}
                fillRule="evenodd"
                transform={`scale(0.05, -0.05) translate(${translation}, ${translation})`}
                style={style}
            />
        </SVGIconContainer>
   );
});
Virus.displayName = `Blueprint6.Icon.Virus`;
export default Virus;
