From 89575208b1ef07a3d37459d9a512f0191d928a1d Mon Sep 17 00:00:00 2001 From: Bruce Borrett Date: Mon, 9 Oct 2023 14:03:26 +0200 Subject: [PATCH] Updates --- asset-manifest.json | 6 +++--- index.html | 2 +- static/js/main.a0b3251a.js.map | 1 - static/js/{main.a0b3251a.js => main.ad8c10bf.js} | 6 +++--- ...a0b3251a.js.LICENSE.txt => main.ad8c10bf.js.LICENSE.txt} | 0 static/js/main.ad8c10bf.js.map | 1 + 6 files changed, 8 insertions(+), 8 deletions(-) delete mode 100644 static/js/main.a0b3251a.js.map rename static/js/{main.a0b3251a.js => main.ad8c10bf.js} (95%) rename static/js/{main.a0b3251a.js.LICENSE.txt => main.ad8c10bf.js.LICENSE.txt} (100%) create mode 100644 static/js/main.ad8c10bf.js.map diff --git a/asset-manifest.json b/asset-manifest.json index d96aa4e..f2b5ee0 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -1,15 +1,15 @@ { "files": { "main.css": "/easy-enclosure/static/css/main.44a4db81.css", - "main.js": "/easy-enclosure/static/js/main.a0b3251a.js", + "main.js": "/easy-enclosure/static/js/main.ad8c10bf.js", "static/js/787.e5b8f22d.chunk.js": "/easy-enclosure/static/js/787.e5b8f22d.chunk.js", "index.html": "/easy-enclosure/index.html", "main.44a4db81.css.map": "/easy-enclosure/static/css/main.44a4db81.css.map", - "main.a0b3251a.js.map": "/easy-enclosure/static/js/main.a0b3251a.js.map", + "main.ad8c10bf.js.map": "/easy-enclosure/static/js/main.ad8c10bf.js.map", "787.e5b8f22d.chunk.js.map": "/easy-enclosure/static/js/787.e5b8f22d.chunk.js.map" }, "entrypoints": [ "static/css/main.44a4db81.css", - "static/js/main.a0b3251a.js" + "static/js/main.ad8c10bf.js" ] } \ No newline at end of file diff --git a/index.html b/index.html index 8e4a3fe..7c0f254 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -Easy Enclosure
\ No newline at end of file +Easy Enclosure
\ No newline at end of file diff --git a/static/js/main.a0b3251a.js.map b/static/js/main.a0b3251a.js.map deleted file mode 100644 index d567ba4..0000000 --- a/static/js/main.a0b3251a.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/main.a0b3251a.js","mappings":"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","sources":["../OpenJSCAD.org/packages/io/stl-serializer/CSGToStla.js","../OpenJSCAD.org/packages/io/stl-serializer/CSGToStlb.js","../OpenJSCAD.org/packages/io/stl-serializer/index.js","../OpenJSCAD.org/packages/modeling/src/colors/colorNameToRgb.js","../OpenJSCAD.org/packages/modeling/src/colors/colorize.js","../OpenJSCAD.org/packages/modeling/src/colors/cssColors.js","../OpenJSCAD.org/packages/modeling/src/colors/hexToRgb.js","../OpenJSCAD.org/packages/modeling/src/colors/hslToRgb.js","../OpenJSCAD.org/packages/modeling/src/colors/hsvToRgb.js","../OpenJSCAD.org/packages/modeling/src/colors/hueToColorComponent.js","../OpenJSCAD.org/packages/modeling/src/colors/index.js","../OpenJSCAD.org/packages/modeling/src/colors/rgbToHex.js","../OpenJSCAD.org/packages/modeling/src/colors/rgbToHsl.js","../OpenJSCAD.org/packages/modeling/src/colors/rgbToHsv.js","../OpenJSCAD.org/packages/modeling/src/curves/bezier/arcLengthToT.js","../OpenJSCAD.org/packages/modeling/src/curves/bezier/create.js","../OpenJSCAD.org/packages/modeling/src/curves/bezier/index.js","../OpenJSCAD.org/packages/modeling/src/curves/bezier/length.js","../OpenJSCAD.org/packages/modeling/src/curves/bezier/lengths.js","../OpenJSCAD.org/packages/modeling/src/curves/bezier/tangentAt.js","../OpenJSCAD.org/packages/modeling/src/curves/bezier/valueAt.js","../OpenJSCAD.org/packages/modeling/src/curves/index.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom2/applyTransforms.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom2/clone.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom2/create.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom2/fromCompactBinary.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom2/fromPoints.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom2/index.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom2/isA.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom2/reverse.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom2/toCompactBinary.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom2/toOutlines.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom2/toPoints.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom2/toSides.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom2/toString.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom2/transform.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom2/validate.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom3/applyTransforms.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom3/clone.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom3/create.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom3/fromCompactBinary.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom3/fromPoints.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom3/index.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom3/invert.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom3/isA.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom3/toCompactBinary.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom3/toPoints.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom3/toPolygons.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom3/toString.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom3/transform.js","../OpenJSCAD.org/packages/modeling/src/geometries/geom3/validate.js","../OpenJSCAD.org/packages/modeling/src/geometries/index.js","../OpenJSCAD.org/packages/modeling/src/geometries/path2/appendArc.js","../OpenJSCAD.org/packages/modeling/src/geometries/path2/appendBezier.js","../OpenJSCAD.org/packages/modeling/src/geometries/path2/appendPoints.js","../OpenJSCAD.org/packages/modeling/src/geometries/path2/applyTransforms.js","../OpenJSCAD.org/packages/modeling/src/geometries/path2/clone.js","../OpenJSCAD.org/packages/modeling/src/geometries/path2/close.js","../OpenJSCAD.org/packages/modeling/src/geometries/path2/concat.js","../OpenJSCAD.org/packages/modeling/src/geometries/path2/create.js","../OpenJSCAD.org/packages/modeling/src/geometries/path2/equals.js","../OpenJSCAD.org/packages/modeling/src/geometries/path2/fromCompactBinary.js","../OpenJSCAD.org/packages/modeling/src/geometries/path2/fromPoints.js","../OpenJSCAD.org/packages/modeling/src/geometries/path2/index.js","../OpenJSCAD.org/packages/modeling/src/geometries/path2/isA.js","../OpenJSCAD.org/packages/modeling/src/geometries/path2/reverse.js","../OpenJSCAD.org/packages/modeling/src/geometries/path2/toCompactBinary.js","../OpenJSCAD.org/packages/modeling/src/geometries/path2/toPoints.js","../OpenJSCAD.org/packages/modeling/src/geometries/path2/toString.js","../OpenJSCAD.org/packages/modeling/src/geometries/path2/transform.js","../OpenJSCAD.org/packages/modeling/src/geometries/path2/validate.js","../OpenJSCAD.org/packages/modeling/src/geometries/poly2/arePointsInside.js","../OpenJSCAD.org/packages/modeling/src/geometries/poly2/create.js","../OpenJSCAD.org/packages/modeling/src/geometries/poly2/flip.js","../OpenJSCAD.org/packages/modeling/src/geometries/poly2/index.js","../OpenJSCAD.org/packages/modeling/src/geometries/poly2/measureArea.js","../OpenJSCAD.org/packages/modeling/src/geometries/poly3/clone.js","../OpenJSCAD.org/packages/modeling/src/geometries/poly3/create.js","../OpenJSCAD.org/packages/modeling/src/geometries/poly3/fromPoints.js","../OpenJSCAD.org/packages/modeling/src/geometries/poly3/fromPointsAndPlane.js","../OpenJSCAD.org/packages/modeling/src/geometries/poly3/index.js","../OpenJSCAD.org/packages/modeling/src/geometries/poly3/invert.js","../OpenJSCAD.org/packages/modeling/src/geometries/poly3/isA.js","../OpenJSCAD.org/packages/modeling/src/geometries/poly3/isConvex.js","../OpenJSCAD.org/packages/modeling/src/geometries/poly3/measureArea.js","../OpenJSCAD.org/packages/modeling/src/geometries/poly3/measureBoundingBox.js","../OpenJSCAD.org/packages/modeling/src/geometries/poly3/measureBoundingSphere.js","../OpenJSCAD.org/packages/modeling/src/geometries/poly3/measureSignedVolume.js","../OpenJSCAD.org/packages/modeling/src/geometries/poly3/plane.js","../OpenJSCAD.org/packages/modeling/src/geometries/poly3/toPoints.js","../OpenJSCAD.org/packages/modeling/src/geometries/poly3/toString.js","../OpenJSCAD.org/packages/modeling/src/geometries/poly3/transform.js","../OpenJSCAD.org/packages/modeling/src/geometries/poly3/validate.js","../OpenJSCAD.org/packages/modeling/src/index.js","../OpenJSCAD.org/packages/modeling/src/maths/OrthoNormalBasis.js","../OpenJSCAD.org/packages/modeling/src/maths/constants.js","../OpenJSCAD.org/packages/modeling/src/maths/index.js","../OpenJSCAD.org/packages/modeling/src/maths/line2/clone.js","../OpenJSCAD.org/packages/modeling/src/maths/line2/closestPoint.js","../OpenJSCAD.org/packages/modeling/src/maths/line2/copy.js","../OpenJSCAD.org/packages/modeling/src/maths/line2/create.js","../OpenJSCAD.org/packages/modeling/src/maths/line2/direction.js","../OpenJSCAD.org/packages/modeling/src/maths/line2/distanceToPoint.js","../OpenJSCAD.org/packages/modeling/src/maths/line2/equals.js","../OpenJSCAD.org/packages/modeling/src/maths/line2/fromPoints.js","../OpenJSCAD.org/packages/modeling/src/maths/line2/fromValues.js","../OpenJSCAD.org/packages/modeling/src/maths/line2/index.js","../OpenJSCAD.org/packages/modeling/src/maths/line2/intersectPointOfLines.js","../OpenJSCAD.org/packages/modeling/src/maths/line2/origin.js","../OpenJSCAD.org/packages/modeling/src/maths/line2/reverse.js","../OpenJSCAD.org/packages/modeling/src/maths/line2/toString.js","../OpenJSCAD.org/packages/modeling/src/maths/line2/transform.js","../OpenJSCAD.org/packages/modeling/src/maths/line2/xAtY.js","../OpenJSCAD.org/packages/modeling/src/maths/line3/clone.js","../OpenJSCAD.org/packages/modeling/src/maths/line3/closestPoint.js","../OpenJSCAD.org/packages/modeling/src/maths/line3/copy.js","../OpenJSCAD.org/packages/modeling/src/maths/line3/create.js","../OpenJSCAD.org/packages/modeling/src/maths/line3/direction.js","../OpenJSCAD.org/packages/modeling/src/maths/line3/distanceToPoint.js","../OpenJSCAD.org/packages/modeling/src/maths/line3/equals.js","../OpenJSCAD.org/packages/modeling/src/maths/line3/fromPlanes.js","../OpenJSCAD.org/packages/modeling/src/maths/line3/fromPointAndDirection.js","../OpenJSCAD.org/packages/modeling/src/maths/line3/fromPoints.js","../OpenJSCAD.org/packages/modeling/src/maths/line3/index.js","../OpenJSCAD.org/packages/modeling/src/maths/line3/intersectPointOfLineAndPlane.js","../OpenJSCAD.org/packages/modeling/src/maths/line3/origin.js","../OpenJSCAD.org/packages/modeling/src/maths/line3/reverse.js","../OpenJSCAD.org/packages/modeling/src/maths/line3/toString.js","../OpenJSCAD.org/packages/modeling/src/maths/line3/transform.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/add.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/clone.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/copy.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/create.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/equals.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/fromRotation.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/fromScaling.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/fromTaitBryanRotation.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/fromTranslation.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/fromValues.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/fromVectorRotation.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/fromXRotation.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/fromYRotation.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/fromZRotation.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/identity.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/index.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/invert.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/isIdentity.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/isMirroring.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/isOnlyTransformScale.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/mirrorByPlane.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/multiply.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/rotate.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/rotateX.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/rotateY.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/rotateZ.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/scale.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/subtract.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/toString.js","../OpenJSCAD.org/packages/modeling/src/maths/mat4/translate.js","../OpenJSCAD.org/packages/modeling/src/maths/plane/flip.js","../OpenJSCAD.org/packages/modeling/src/maths/plane/fromNormalAndPoint.js","../OpenJSCAD.org/packages/modeling/src/maths/plane/fromPoints.js","../OpenJSCAD.org/packages/modeling/src/maths/plane/fromPointsRandom.js","../OpenJSCAD.org/packages/modeling/src/maths/plane/index.js","../OpenJSCAD.org/packages/modeling/src/maths/plane/projectionOfPoint.js","../OpenJSCAD.org/packages/modeling/src/maths/plane/signedDistanceToPoint.js","../OpenJSCAD.org/packages/modeling/src/maths/plane/transform.js","../OpenJSCAD.org/packages/modeling/src/maths/utils/aboutEqualNormals.js","../OpenJSCAD.org/packages/modeling/src/maths/utils/area.js","../OpenJSCAD.org/packages/modeling/src/maths/utils/index.js","../OpenJSCAD.org/packages/modeling/src/maths/utils/interpolateBetween2DPointsForY.js","../OpenJSCAD.org/packages/modeling/src/maths/utils/intersect.js","../OpenJSCAD.org/packages/modeling/src/maths/utils/solve2Linear.js","../OpenJSCAD.org/packages/modeling/src/maths/utils/trigonometry.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/abs.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/add.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/angle.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/angleDegrees.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/angleRadians.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/clone.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/copy.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/create.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/cross.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/distance.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/divide.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/dot.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/equals.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/fromAngleDegrees.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/fromAngleRadians.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/fromScalar.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/fromValues.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/index.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/length.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/lerp.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/max.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/min.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/multiply.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/negate.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/normal.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/normalize.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/rotate.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/scale.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/snap.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/squaredDistance.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/squaredLength.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/subtract.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/toString.js","../OpenJSCAD.org/packages/modeling/src/maths/vec2/transform.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/abs.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/add.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/angle.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/clone.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/copy.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/create.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/cross.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/distance.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/divide.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/dot.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/equals.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/fromScalar.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/fromValues.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/fromVec2.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/index.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/length.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/lerp.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/max.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/min.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/multiply.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/negate.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/normalize.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/orthogonal.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/rotateX.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/rotateY.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/rotateZ.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/scale.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/snap.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/squaredDistance.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/squaredLength.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/subtract.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/toString.js","../OpenJSCAD.org/packages/modeling/src/maths/vec3/transform.js","../OpenJSCAD.org/packages/modeling/src/maths/vec4/clone.js","../OpenJSCAD.org/packages/modeling/src/maths/vec4/copy.js","../OpenJSCAD.org/packages/modeling/src/maths/vec4/create.js","../OpenJSCAD.org/packages/modeling/src/maths/vec4/dot.js","../OpenJSCAD.org/packages/modeling/src/maths/vec4/equals.js","../OpenJSCAD.org/packages/modeling/src/maths/vec4/fromScalar.js","../OpenJSCAD.org/packages/modeling/src/maths/vec4/fromValues.js","../OpenJSCAD.org/packages/modeling/src/maths/vec4/index.js","../OpenJSCAD.org/packages/modeling/src/maths/vec4/toString.js","../OpenJSCAD.org/packages/modeling/src/maths/vec4/transform.js","../OpenJSCAD.org/packages/modeling/src/measurements/calculateEpsilonFromBounds.js","../OpenJSCAD.org/packages/modeling/src/measurements/index.js","../OpenJSCAD.org/packages/modeling/src/measurements/measureAggregateArea.js","../OpenJSCAD.org/packages/modeling/src/measurements/measureAggregateBoundingBox.js","../OpenJSCAD.org/packages/modeling/src/measurements/measureAggregateEpsilon.js","../OpenJSCAD.org/packages/modeling/src/measurements/measureAggregateVolume.js","../OpenJSCAD.org/packages/modeling/src/measurements/measureArea.js","../OpenJSCAD.org/packages/modeling/src/measurements/measureBoundingBox.js","../OpenJSCAD.org/packages/modeling/src/measurements/measureBoundingSphere.js","../OpenJSCAD.org/packages/modeling/src/measurements/measureCenter.js","../OpenJSCAD.org/packages/modeling/src/measurements/measureCenterOfMass.js","../OpenJSCAD.org/packages/modeling/src/measurements/measureDimensions.js","../OpenJSCAD.org/packages/modeling/src/measurements/measureEpsilon.js","../OpenJSCAD.org/packages/modeling/src/measurements/measureVolume.js","../OpenJSCAD.org/packages/modeling/src/operations/booleans/fromFakePolygons.js","../OpenJSCAD.org/packages/modeling/src/operations/booleans/index.js","../OpenJSCAD.org/packages/modeling/src/operations/booleans/intersect.js","../OpenJSCAD.org/packages/modeling/src/operations/booleans/intersectGeom2.js","../OpenJSCAD.org/packages/modeling/src/operations/booleans/intersectGeom3.js","../OpenJSCAD.org/packages/modeling/src/operations/booleans/intersectGeom3Sub.js","../OpenJSCAD.org/packages/modeling/src/operations/booleans/mayOverlap.js","../OpenJSCAD.org/packages/modeling/src/operations/booleans/scission.js","../OpenJSCAD.org/packages/modeling/src/operations/booleans/scissionGeom3.js","../OpenJSCAD.org/packages/modeling/src/operations/booleans/subtract.js","../OpenJSCAD.org/packages/modeling/src/operations/booleans/subtractGeom2.js","../OpenJSCAD.org/packages/modeling/src/operations/booleans/subtractGeom3.js","../OpenJSCAD.org/packages/modeling/src/operations/booleans/subtractGeom3Sub.js","../OpenJSCAD.org/packages/modeling/src/operations/booleans/to3DWalls.js","../OpenJSCAD.org/packages/modeling/src/operations/booleans/trees/Node.js","../OpenJSCAD.org/packages/modeling/src/operations/booleans/trees/PolygonTreeNode.js","../OpenJSCAD.org/packages/modeling/src/operations/booleans/trees/Tree.js","../OpenJSCAD.org/packages/modeling/src/operations/booleans/trees/index.js","../OpenJSCAD.org/packages/modeling/src/operations/booleans/trees/splitLineSegmentByPlane.js","../OpenJSCAD.org/packages/modeling/src/operations/booleans/trees/splitPolygonByPlane.js","../OpenJSCAD.org/packages/modeling/src/operations/booleans/union.js","../OpenJSCAD.org/packages/modeling/src/operations/booleans/unionGeom2.js","../OpenJSCAD.org/packages/modeling/src/operations/booleans/unionGeom3.js","../OpenJSCAD.org/packages/modeling/src/operations/booleans/unionGeom3Sub.js","../OpenJSCAD.org/packages/modeling/src/operations/expansions/expand.js","../OpenJSCAD.org/packages/modeling/src/operations/expansions/expandGeom2.js","../OpenJSCAD.org/packages/modeling/src/operations/expansions/expandGeom3.js","../OpenJSCAD.org/packages/modeling/src/operations/expansions/expandPath2.js","../OpenJSCAD.org/packages/modeling/src/operations/expansions/expandShell.js","../OpenJSCAD.org/packages/modeling/src/operations/expansions/extrudePolygon.js","../OpenJSCAD.org/packages/modeling/src/operations/expansions/index.js","../OpenJSCAD.org/packages/modeling/src/operations/expansions/offset.js","../OpenJSCAD.org/packages/modeling/src/operations/expansions/offsetFromPoints.js","../OpenJSCAD.org/packages/modeling/src/operations/expansions/offsetGeom2.js","../OpenJSCAD.org/packages/modeling/src/operations/expansions/offsetPath2.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/earcut/assignHoles.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/earcut/eliminateHoles.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/earcut/index.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/earcut/linkedList.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/earcut/linkedListSort.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/earcut/linkedPolygon.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/earcut/polygonHierarchy.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/earcut/triangle.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/extrudeFromSlices.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/extrudeHelical.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/extrudeLinear.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/extrudeLinearGeom2.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/extrudeLinearPath2.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/extrudeRectangular.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/extrudeRectangularGeom2.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/extrudeRectangularPath2.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/extrudeRotate.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/extrudeWalls.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/index.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/project.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/slice/calculatePlane.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/slice/clone.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/slice/create.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/slice/equals.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/slice/fromPoints.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/slice/fromSides.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/slice/index.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/slice/isA.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/slice/repair.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/slice/reverse.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/slice/toEdges.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/slice/toPolygons.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/slice/toString.js","../OpenJSCAD.org/packages/modeling/src/operations/extrusions/slice/transform.js","../OpenJSCAD.org/packages/modeling/src/operations/hulls/hull.js","../OpenJSCAD.org/packages/modeling/src/operations/hulls/hullChain.js","../OpenJSCAD.org/packages/modeling/src/operations/hulls/hullGeom2.js","../OpenJSCAD.org/packages/modeling/src/operations/hulls/hullGeom3.js","../OpenJSCAD.org/packages/modeling/src/operations/hulls/hullPath2.js","../OpenJSCAD.org/packages/modeling/src/operations/hulls/hullPoints2.js","../OpenJSCAD.org/packages/modeling/src/operations/hulls/index.js","../OpenJSCAD.org/packages/modeling/src/operations/hulls/quickhull/Face.js","../OpenJSCAD.org/packages/modeling/src/operations/hulls/quickhull/HalfEdge.js","../OpenJSCAD.org/packages/modeling/src/operations/hulls/quickhull/QuickHull.js","../OpenJSCAD.org/packages/modeling/src/operations/hulls/quickhull/Vertex.js","../OpenJSCAD.org/packages/modeling/src/operations/hulls/quickhull/VertexList.js","../OpenJSCAD.org/packages/modeling/src/operations/hulls/quickhull/get-plane-normal.js","../OpenJSCAD.org/packages/modeling/src/operations/hulls/quickhull/index.js","../OpenJSCAD.org/packages/modeling/src/operations/hulls/quickhull/point-line-distance.js","../OpenJSCAD.org/packages/modeling/src/operations/hulls/toUniquePoints.js","../OpenJSCAD.org/packages/modeling/src/operations/modifiers/generalize.js","../OpenJSCAD.org/packages/modeling/src/operations/modifiers/index.js","../OpenJSCAD.org/packages/modeling/src/operations/modifiers/insertTjunctions.js","../OpenJSCAD.org/packages/modeling/src/operations/modifiers/mergePolygons.js","../OpenJSCAD.org/packages/modeling/src/operations/modifiers/reTesselateCoplanarPolygons.js","../OpenJSCAD.org/packages/modeling/src/operations/modifiers/retessellate.js","../OpenJSCAD.org/packages/modeling/src/operations/modifiers/snap.js","../OpenJSCAD.org/packages/modeling/src/operations/modifiers/snapPolygons.js","../OpenJSCAD.org/packages/modeling/src/operations/modifiers/triangulatePolygons.js","../OpenJSCAD.org/packages/modeling/src/operations/transforms/align.js","../OpenJSCAD.org/packages/modeling/src/operations/transforms/center.js","../OpenJSCAD.org/packages/modeling/src/operations/transforms/index.js","../OpenJSCAD.org/packages/modeling/src/operations/transforms/mirror.js","../OpenJSCAD.org/packages/modeling/src/operations/transforms/rotate.js","../OpenJSCAD.org/packages/modeling/src/operations/transforms/scale.js","../OpenJSCAD.org/packages/modeling/src/operations/transforms/transform.js","../OpenJSCAD.org/packages/modeling/src/operations/transforms/translate.js","../OpenJSCAD.org/packages/modeling/src/primitives/arc.js","../OpenJSCAD.org/packages/modeling/src/primitives/circle.js","../OpenJSCAD.org/packages/modeling/src/primitives/commonChecks.js","../OpenJSCAD.org/packages/modeling/src/primitives/cube.js","../OpenJSCAD.org/packages/modeling/src/primitives/cuboid.js","../OpenJSCAD.org/packages/modeling/src/primitives/cylinder.js","../OpenJSCAD.org/packages/modeling/src/primitives/cylinderElliptic.js","../OpenJSCAD.org/packages/modeling/src/primitives/ellipse.js","../OpenJSCAD.org/packages/modeling/src/primitives/ellipsoid.js","../OpenJSCAD.org/packages/modeling/src/primitives/geodesicSphere.js","../OpenJSCAD.org/packages/modeling/src/primitives/index.js","../OpenJSCAD.org/packages/modeling/src/primitives/line.js","../OpenJSCAD.org/packages/modeling/src/primitives/polygon.js","../OpenJSCAD.org/packages/modeling/src/primitives/polyhedron.js","../OpenJSCAD.org/packages/modeling/src/primitives/rectangle.js","../OpenJSCAD.org/packages/modeling/src/primitives/roundedCuboid.js","../OpenJSCAD.org/packages/modeling/src/primitives/roundedCylinder.js","../OpenJSCAD.org/packages/modeling/src/primitives/roundedRectangle.js","../OpenJSCAD.org/packages/modeling/src/primitives/sphere.js","../OpenJSCAD.org/packages/modeling/src/primitives/square.js","../OpenJSCAD.org/packages/modeling/src/primitives/star.js","../OpenJSCAD.org/packages/modeling/src/primitives/torus.js","../OpenJSCAD.org/packages/modeling/src/primitives/triangle.js","../OpenJSCAD.org/packages/modeling/src/text/fonts/single-line/hershey/simplex.js","../OpenJSCAD.org/packages/modeling/src/text/index.js","../OpenJSCAD.org/packages/modeling/src/text/vectorChar.js","../OpenJSCAD.org/packages/modeling/src/text/vectorParams.js","../OpenJSCAD.org/packages/modeling/src/text/vectorText.js","../OpenJSCAD.org/packages/modeling/src/utils/areAllShapesTheSameType.js","../OpenJSCAD.org/packages/modeling/src/utils/degToRad.js","../OpenJSCAD.org/packages/modeling/src/utils/flatten.js","../OpenJSCAD.org/packages/modeling/src/utils/fnNumberSort.js","../OpenJSCAD.org/packages/modeling/src/utils/index.js","../OpenJSCAD.org/packages/modeling/src/utils/insertSorted.js","../OpenJSCAD.org/packages/modeling/src/utils/padArrayToLength.js","../OpenJSCAD.org/packages/modeling/src/utils/radToDeg.js","../OpenJSCAD.org/packages/modeling/src/utils/radiusToSegments.js","../OpenJSCAD.org/packages/utils/regl-renderer/src/bound-utils/boundingBox.js","../OpenJSCAD.org/packages/utils/regl-renderer/src/bound-utils/computeBounds.js","../OpenJSCAD.org/packages/utils/regl-renderer/src/cameras/camera.js","../OpenJSCAD.org/packages/utils/regl-renderer/src/cameras/orthographicCamera.js","../OpenJSCAD.org/packages/utils/regl-renderer/src/cameras/perspectiveCamera.js","../OpenJSCAD.org/packages/utils/regl-renderer/src/controls/orbitControls.js","../OpenJSCAD.org/packages/utils/regl-renderer/src/geometry-utils-V2/entitiesFromSolids.js","../OpenJSCAD.org/packages/utils/regl-renderer/src/geometry-utils-V2/geom2ToGeometries.js","../OpenJSCAD.org/packages/utils/regl-renderer/src/geometry-utils-V2/geom3ToGeometries.js","../OpenJSCAD.org/packages/utils/regl-renderer/src/geometry-utils-V2/path2ToGeometries.js","../OpenJSCAD.org/packages/utils/regl-renderer/src/index.js","../OpenJSCAD.org/packages/utils/regl-renderer/src/rendering/commands/drawAxis/index.js","../OpenJSCAD.org/packages/utils/regl-renderer/src/rendering/commands/drawGrid/index.js","../OpenJSCAD.org/packages/utils/regl-renderer/src/rendering/commands/drawGrid/multi.js","../OpenJSCAD.org/packages/utils/regl-renderer/src/rendering/commands/drawLines/colorOnlyShaders.js","../OpenJSCAD.org/packages/utils/regl-renderer/src/rendering/commands/drawLines/index.js","../OpenJSCAD.org/packages/utils/regl-renderer/src/rendering/commands/drawLines/meshShaders.js","../OpenJSCAD.org/packages/utils/regl-renderer/src/rendering/commands/drawLines/vColorShaders.js","../OpenJSCAD.org/packages/utils/regl-renderer/src/rendering/commands/drawMesh/index.js","../OpenJSCAD.org/packages/utils/regl-renderer/src/rendering/commands/drawMesh/meshShaders.js","../OpenJSCAD.org/packages/utils/regl-renderer/src/rendering/commands/drawMesh/vColorShaders.js","../OpenJSCAD.org/packages/utils/regl-renderer/src/rendering/render.js","../OpenJSCAD.org/packages/utils/regl-renderer/src/rendering/renderContext.js","../OpenJSCAD.org/packages/utils/regl-renderer/src/rendering/renderDefaults.js","../node_modules/@jscad/array-utils/src/flatten.js","../node_modules/@jscad/array-utils/src/fnNumberSort.js","../node_modules/@jscad/array-utils/src/head.js","../node_modules/@jscad/array-utils/src/index.js","../node_modules/@jscad/array-utils/src/insertSorted.js","../node_modules/@jscad/array-utils/src/nth.js","../node_modules/@jscad/array-utils/src/padToLength.js","../node_modules/@jscad/array-utils/src/toArray.js","../node_modules/camera-unproject/index.js","../node_modules/camera-unproject/lib/projectMat4.js","../node_modules/file-saver/src/FileSaver.js","../node_modules/github-buttons/dist/buttons.esm.js","../node_modules/gl-mat4/adjoint.js","../node_modules/gl-mat4/clone.js","../node_modules/gl-mat4/copy.js","../node_modules/gl-mat4/create.js","../node_modules/gl-mat4/determinant.js","../node_modules/gl-mat4/fromQuat.js","../node_modules/gl-mat4/fromRotation.js","../node_modules/gl-mat4/fromRotationTranslation.js","../node_modules/gl-mat4/fromScaling.js","../node_modules/gl-mat4/fromTranslation.js","../node_modules/gl-mat4/fromXRotation.js","../node_modules/gl-mat4/fromYRotation.js","../node_modules/gl-mat4/fromZRotation.js","../node_modules/gl-mat4/frustum.js","../node_modules/gl-mat4/identity.js","../node_modules/gl-mat4/index.js","../node_modules/gl-mat4/invert.js","../node_modules/gl-mat4/lookAt.js","../node_modules/gl-mat4/multiply.js","../node_modules/gl-mat4/ortho.js","../node_modules/gl-mat4/perspective.js","../node_modules/gl-mat4/perspectiveFromFieldOfView.js","../node_modules/gl-mat4/rotate.js","../node_modules/gl-mat4/rotateX.js","../node_modules/gl-mat4/rotateY.js","../node_modules/gl-mat4/rotateZ.js","../node_modules/gl-mat4/scale.js","../node_modules/gl-mat4/str.js","../node_modules/gl-mat4/translate.js","../node_modules/gl-mat4/transpose.js","../node_modules/gl-vec3/add.js","../node_modules/gl-vec3/angle.js","../node_modules/gl-vec3/ceil.js","../node_modules/gl-vec3/clone.js","../node_modules/gl-vec3/copy.js","../node_modules/gl-vec3/create.js","../node_modules/gl-vec3/cross.js","../node_modules/gl-vec3/dist.js","../node_modules/gl-vec3/distance.js","../node_modules/gl-vec3/div.js","../node_modules/gl-vec3/divide.js","../node_modules/gl-vec3/dot.js","../node_modules/gl-vec3/epsilon.js","../node_modules/gl-vec3/equals.js","../node_modules/gl-vec3/exactEquals.js","../node_modules/gl-vec3/floor.js","../node_modules/gl-vec3/forEach.js","../node_modules/gl-vec3/fromValues.js","../node_modules/gl-vec3/index.js","../node_modules/gl-vec3/inverse.js","../node_modules/gl-vec3/len.js","../node_modules/gl-vec3/length.js","../node_modules/gl-vec3/lerp.js","../node_modules/gl-vec3/max.js","../node_modules/gl-vec3/min.js","../node_modules/gl-vec3/mul.js","../node_modules/gl-vec3/multiply.js","../node_modules/gl-vec3/negate.js","../node_modules/gl-vec3/normalize.js","../node_modules/gl-vec3/random.js","../node_modules/gl-vec3/rotateX.js","../node_modules/gl-vec3/rotateY.js","../node_modules/gl-vec3/rotateZ.js","../node_modules/gl-vec3/round.js","../node_modules/gl-vec3/scale.js","../node_modules/gl-vec3/scaleAndAdd.js","../node_modules/gl-vec3/set.js","../node_modules/gl-vec3/sqrDist.js","../node_modules/gl-vec3/sqrLen.js","../node_modules/gl-vec3/squaredDistance.js","../node_modules/gl-vec3/squaredLength.js","../node_modules/gl-vec3/sub.js","../node_modules/gl-vec3/subtract.js","../node_modules/gl-vec3/transformMat3.js","../node_modules/gl-vec3/transformMat4.js","../node_modules/gl-vec3/transformQuat.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/objectSpread2.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/toConsumableArray.js","../node_modules/@babel/runtime/helpers/toPrimitive.js","../node_modules/@babel/runtime/helpers/toPropertyKey.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../webpack/bootstrap","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@hookstate/node_modules/.pnpm/tslib@2.4.0/node_modules/tslib/tslib.es6.js","../node_modules/@hookstate/core/src/is-shallow-equal.ts","../node_modules/@hookstate/core/src/index.ts","lib/params.ts","lib/enclosure/index.ts","lib/enclosure/holes.ts","lib/enclosure/wallmount.ts","lib/enclosure/utils.ts","lib/enclosure/waterproofseal.ts","lib/enclosure/screws.ts","lib/enclosure/base.ts","lib/enclosure/lid.ts","lib/enclosure/pcbmount.ts","ui/Renderer.tsx","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/react-icons/lib/esm/iconsManifest.js","../node_modules/react-icons/lib/esm/iconContext.js","../node_modules/react-icons/lib/esm/iconBase.js","../node_modules/react-icons/bi/index.esm.js","ui/ParamForm.tsx","ui/Tools.tsx","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/react-github-btn/index.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","ui/Funding.tsx","ui/App.tsx","lib/reportWebVitals.ts","index.tsx"],"sourcesContent":["const { geometries } = require('@jscad/modeling')\n\n// objects must be an array of 3D geomertries (with polygons)\nconst serializeText = (objects, options) => {\n options.statusCallback && options.statusCallback({ progress: 0 })\n\n const result = `solid JSCAD\n${convertToStl(objects, options)}\nendsolid JSCAD\n`\n options.statusCallback && options.statusCallback({ progress: 100 })\n return [result]\n}\n\nconst convertToStl = (objects, options) => {\n const result = []\n objects.forEach((object, i) => {\n result.push(convertToFacets(object, options))\n options.statusCallback && options.statusCallback({ progress: 100 * i / objects.length })\n })\n return result.join('\\n')\n}\n\nconst convertToFacets = (object, options) => {\n const result = []\n const polygons = geometries.geom3.toPolygons(object)\n polygons.forEach((polygon, i) => {\n result.push(convertToFacet(polygon))\n })\n return result.join('\\n')\n}\n\nconst vector3DtoStlString = (v) => `${v[0]} ${v[1]} ${v[2]}`\n\nconst vertextoStlString = (vertex) => `vertex ${vector3DtoStlString(vertex)}`\n\nconst convertToFacet = (polygon) => {\n const result = []\n if (polygon.vertices.length >= 3) {\n // STL requires triangular polygons. If our polygon has more vertices, create multiple triangles:\n const firstVertexStl = vertextoStlString(polygon.vertices[0])\n for (let i = 0; i < polygon.vertices.length - 2; i++) {\n const facet = `facet normal ${vector3DtoStlString(geometries.poly3.plane(polygon))}\nouter loop\n${firstVertexStl}\n${vertextoStlString(polygon.vertices[i + 1])}\n${vertextoStlString(polygon.vertices[i + 2])}\nendloop\nendfacet`\n result.push(facet)\n }\n }\n return result.join('\\n')\n}\n\nmodule.exports = {\n serializeText\n}\n","const { geometries } = require('@jscad/modeling')\n\n// see http://en.wikipedia.org/wiki/STL_%28file_format%29#Binary_STL\n\n// objects must be an array of 3D geometries\nconst serializeBinary = (objects, options) => {\n options.statusCallback && options.statusCallback({ progress: 0 })\n\n // first check if the host is little-endian:\n const buffer = new ArrayBuffer(4)\n const int32buffer = new Int32Array(buffer, 0, 1)\n const int8buffer = new Int8Array(buffer, 0, 4)\n int32buffer[0] = 0x11223344\n if (int8buffer[0] !== 0x44) {\n throw new Error('Binary STL output is currently only supported on little-endian (Intel) processors')\n }\n\n let numtriangles = 0\n let numpolygons = 0\n objects.forEach((object, i) => {\n const polygons = geometries.geom3.toPolygons(object)\n polygons.forEach((polygon) => {\n const numvertices = polygon.vertices.length\n const thisnumtriangles = (numvertices >= 3) ? numvertices - 2 : 0\n numtriangles += thisnumtriangles\n numpolygons += 1\n })\n })\n\n const headerarray = new Uint8Array(80)\n for (let i = 0; i < 80; i++) {\n headerarray[i] = 65\n }\n\n const ar1 = new Uint32Array(1)\n ar1[0] = numtriangles\n\n // write the triangles to allTrianglesBuffer:\n const allTrianglesBuffer = new ArrayBuffer(50 * numtriangles)\n const allTrianglesBufferAsInt8 = new Int8Array(allTrianglesBuffer)\n\n // a tricky problem is that a Float32Array must be aligned at 4-byte boundaries (at least in certain browsers)\n // while each triangle takes 50 bytes. Therefore we write each triangle to a temporary buffer, and copy that\n // into allTrianglesBuffer:\n const triangleBuffer = new ArrayBuffer(50)\n const triangleBufferAsInt8 = new Int8Array(triangleBuffer)\n\n // each triangle consists of 12 floats:\n const triangleFloat32array = new Float32Array(triangleBuffer, 0, 12)\n // and one uint16:\n const triangleUint16array = new Uint16Array(triangleBuffer, 48, 1)\n\n let byteoffset = 0\n\n objects.forEach((object) => {\n const polygons = geometries.geom3.toPolygons(object)\n polygons.forEach((polygon, index) => {\n const vertices = polygon.vertices\n const numvertices = vertices.length\n const plane = geometries.poly3.plane(polygon)\n for (let i = 0; i < numvertices - 2; i++) {\n triangleFloat32array[0] = plane[0]\n triangleFloat32array[1] = plane[1]\n triangleFloat32array[2] = plane[2]\n let arindex = 3\n for (let v = 0; v < 3; v++) {\n const vv = v + ((v > 0) ? i : 0)\n const vertex = vertices[vv]\n triangleFloat32array[arindex++] = vertex[0]\n triangleFloat32array[arindex++] = vertex[1]\n triangleFloat32array[arindex++] = vertex[2]\n }\n triangleUint16array[0] = 0\n // copy the triangle into allTrianglesBuffer:\n allTrianglesBufferAsInt8.set(triangleBufferAsInt8, byteoffset)\n byteoffset += 50\n }\n\n options.statusCallback && options.statusCallback({ progress: 100 * index / numpolygons })\n })\n })\n options.statusCallback && options.statusCallback({ progress: 100 })\n return [headerarray.buffer, ar1.buffer, allTrianglesBuffer] // 'blobable array'\n}\n\nmodule.exports = {\n serializeBinary\n}\n","/*\nJSCAD Geometry to STL Format Serialization\n\n## License\n\nCopyright (c) 2018-2019 JSCAD Organization https://github.com/jscad\n\nAll code released under MIT license\n\nNotes:\n1) geom2 conversion to:\n none\n2) geom3 conversion to:\n STL mesh\n3) path2 conversion to:\n none\n*/\n\n/**\n * Serializer of JSCAD geometries to STL mesh.\n * @module io/stl-serializer\n * @example\n * const { serializer, mimeType } = require('@jscad/stl-serializer')\n */\n\nconst { geometries, modifiers } = require('@jscad/modeling')\n\nconst { flatten, toArray } = require('@jscad/array-utils')\n\nconst { serializeBinary } = require('./CSGToStlb')\nconst { serializeText } = require('./CSGToStla')\n\nconst mimeType = 'application/sla'\n\n/**\n * Serialize the give objects to STL mesh.\n * @param {Object} options - options for serialization\n * @param {String} [options.binary='true'] - target format for data\n * @param {Function} [options.statusCallback] - call back function for progress ({ progress: 0-100 })\n * @param {...Object} objects - objects to serialize as STL\n * @returns {Array} serialized contents with one STL mesh (either string or binary data)\n * @alias module:io/stl-serializer.serialize\n * @example\n * const geometry = primitives.cube()\n * const stlData = serializer({binary: false}, geometry)\n */\nconst serialize = (options, ...objects) => {\n const defaults = {\n binary: true,\n statusCallback: null\n }\n options = Object.assign({}, defaults, options)\n\n objects = flatten(objects)\n\n // convert only 3D geometries\n let objects3d = objects.filter((object) => geometries.geom3.isA(object))\n\n if (objects3d.length === 0) throw new Error('only 3D geometries can be serialized to STL')\n if (objects.length !== objects3d.length) console.warn('some objects could not be serialized to STL')\n\n // convert to triangles\n objects3d = toArray(modifiers.generalize({ snap: true, triangulate: true }, objects3d))\n\n return options.binary ? serializeBinary(objects3d, options) : serializeText(objects3d, options)\n}\n\nmodule.exports = {\n mimeType,\n serialize\n}\n","const cssColors = require('./cssColors')\n\n/**\n * Converts a CSS color name to RGB color.\n *\n * @param {String} s - the CSS color name\n * @return {Array} the RGB color, or undefined if not found\n * @alias module:modeling/colors.colorNameToRgb\n * @example\n * let mysphere = colorize(colorNameToRgb('lightblue'), sphere())\n */\nconst colorNameToRgb = (s) => cssColors[s.toLowerCase()]\n\nmodule.exports = colorNameToRgb\n","const flatten = require('../utils/flatten')\n\nconst geom2 = require('../geometries/geom2')\nconst geom3 = require('../geometries/geom3')\nconst path2 = require('../geometries/path2')\nconst poly3 = require('../geometries/poly3')\n\nconst colorGeom2 = (color, object) => {\n const newgeom2 = geom2.clone(object)\n newgeom2.color = color\n return newgeom2\n}\n\nconst colorGeom3 = (color, object) => {\n const newgeom3 = geom3.clone(object)\n newgeom3.color = color\n return newgeom3\n}\n\nconst colorPath2 = (color, object) => {\n const newpath2 = path2.clone(object)\n newpath2.color = color\n return newpath2\n}\n\nconst colorPoly3 = (color, object) => {\n const newpoly = poly3.clone(object)\n newpoly.color = color\n return newpoly\n}\n\n/**\n * Assign the given color to the given objects.\n * @param {Array} color - RGBA color values, where each value is between 0 and 1.0\n * @param {Object|Array} objects - the objects of which to apply the given color\n * @return {Object|Array} new object, or list of new objects with an additional attribute 'color'\n * @alias module:modeling/colors.colorize\n *\n * @example\n * let redSphere = colorize([1,0,0], sphere()) // red\n * let greenCircle = colorize([0,1,0,0.8], circle()) // green transparent\n * let blueArc = colorize([0,0,1], arc()) // blue\n * let wildcylinder = colorize(colorNameToRgb('fuchsia'), cylinder()) // CSS color\n */\nconst colorize = (color, ...objects) => {\n if (!Array.isArray(color)) throw new Error('color must be an array')\n if (color.length < 3) throw new Error('color must contain R, G and B values')\n if (color.length === 3) color = [color[0], color[1], color[2], 1.0] // add alpha\n\n objects = flatten(objects)\n if (objects.length === 0) throw new Error('wrong number of arguments')\n\n const results = objects.map((object) => {\n if (geom2.isA(object)) return colorGeom2(color, object)\n if (geom3.isA(object)) return colorGeom3(color, object)\n if (path2.isA(object)) return colorPath2(color, object)\n if (poly3.isA(object)) return colorPoly3(color, object)\n\n object.color = color\n return object\n })\n return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = colorize\n","/**\n * @alias module:modeling/colors.cssColors\n * @see CSS color table from http://www.w3.org/TR/css3-color/\n * @enum {Array}\n * @example\n * let newshape = colorize(cssColors.red, oldshape)\n */\nconst cssColors = {\n // basic color keywords\n black: [0 / 255, 0 / 255, 0 / 255],\n silver: [192 / 255, 192 / 255, 192 / 255],\n gray: [128 / 255, 128 / 255, 128 / 255],\n white: [255 / 255, 255 / 255, 255 / 255],\n maroon: [128 / 255, 0 / 255, 0 / 255],\n red: [255 / 255, 0 / 255, 0 / 255],\n purple: [128 / 255, 0 / 255, 128 / 255],\n fuchsia: [255 / 255, 0 / 255, 255 / 255],\n green: [0 / 255, 128 / 255, 0 / 255],\n lime: [0 / 255, 255 / 255, 0 / 255],\n olive: [128 / 255, 128 / 255, 0 / 255],\n yellow: [255 / 255, 255 / 255, 0 / 255],\n navy: [0 / 255, 0 / 255, 128 / 255],\n blue: [0 / 255, 0 / 255, 255 / 255],\n teal: [0 / 255, 128 / 255, 128 / 255],\n aqua: [0 / 255, 255 / 255, 255 / 255],\n // extended color keywords\n aliceblue: [240 / 255, 248 / 255, 255 / 255],\n antiquewhite: [250 / 255, 235 / 255, 215 / 255],\n // 'aqua': [ 0 / 255, 255 / 255, 255 / 255 ],\n aquamarine: [127 / 255, 255 / 255, 212 / 255],\n azure: [240 / 255, 255 / 255, 255 / 255],\n beige: [245 / 255, 245 / 255, 220 / 255],\n bisque: [255 / 255, 228 / 255, 196 / 255],\n // 'black': [ 0 / 255, 0 / 255, 0 / 255 ],\n blanchedalmond: [255 / 255, 235 / 255, 205 / 255],\n // 'blue': [ 0 / 255, 0 / 255, 255 / 255 ],\n blueviolet: [138 / 255, 43 / 255, 226 / 255],\n brown: [165 / 255, 42 / 255, 42 / 255],\n burlywood: [222 / 255, 184 / 255, 135 / 255],\n cadetblue: [95 / 255, 158 / 255, 160 / 255],\n chartreuse: [127 / 255, 255 / 255, 0 / 255],\n chocolate: [210 / 255, 105 / 255, 30 / 255],\n coral: [255 / 255, 127 / 255, 80 / 255],\n cornflowerblue: [100 / 255, 149 / 255, 237 / 255],\n cornsilk: [255 / 255, 248 / 255, 220 / 255],\n crimson: [220 / 255, 20 / 255, 60 / 255],\n cyan: [0 / 255, 255 / 255, 255 / 255],\n darkblue: [0 / 255, 0 / 255, 139 / 255],\n darkcyan: [0 / 255, 139 / 255, 139 / 255],\n darkgoldenrod: [184 / 255, 134 / 255, 11 / 255],\n darkgray: [169 / 255, 169 / 255, 169 / 255],\n darkgreen: [0 / 255, 100 / 255, 0 / 255],\n darkgrey: [169 / 255, 169 / 255, 169 / 255],\n darkkhaki: [189 / 255, 183 / 255, 107 / 255],\n darkmagenta: [139 / 255, 0 / 255, 139 / 255],\n darkolivegreen: [85 / 255, 107 / 255, 47 / 255],\n darkorange: [255 / 255, 140 / 255, 0 / 255],\n darkorchid: [153 / 255, 50 / 255, 204 / 255],\n darkred: [139 / 255, 0 / 255, 0 / 255],\n darksalmon: [233 / 255, 150 / 255, 122 / 255],\n darkseagreen: [143 / 255, 188 / 255, 143 / 255],\n darkslateblue: [72 / 255, 61 / 255, 139 / 255],\n darkslategray: [47 / 255, 79 / 255, 79 / 255],\n darkslategrey: [47 / 255, 79 / 255, 79 / 255],\n darkturquoise: [0 / 255, 206 / 255, 209 / 255],\n darkviolet: [148 / 255, 0 / 255, 211 / 255],\n deeppink: [255 / 255, 20 / 255, 147 / 255],\n deepskyblue: [0 / 255, 191 / 255, 255 / 255],\n dimgray: [105 / 255, 105 / 255, 105 / 255],\n dimgrey: [105 / 255, 105 / 255, 105 / 255],\n dodgerblue: [30 / 255, 144 / 255, 255 / 255],\n firebrick: [178 / 255, 34 / 255, 34 / 255],\n floralwhite: [255 / 255, 250 / 255, 240 / 255],\n forestgreen: [34 / 255, 139 / 255, 34 / 255],\n // 'fuchsia': [ 255 / 255, 0 / 255, 255 / 255 ],\n gainsboro: [220 / 255, 220 / 255, 220 / 255],\n ghostwhite: [248 / 255, 248 / 255, 255 / 255],\n gold: [255 / 255, 215 / 255, 0 / 255],\n goldenrod: [218 / 255, 165 / 255, 32 / 255],\n // 'gray': [ 128 / 255, 128 / 255, 128 / 255 ],\n // 'green': [ 0 / 255, 128 / 255, 0 / 255 ],\n greenyellow: [173 / 255, 255 / 255, 47 / 255],\n grey: [128 / 255, 128 / 255, 128 / 255],\n honeydew: [240 / 255, 255 / 255, 240 / 255],\n hotpink: [255 / 255, 105 / 255, 180 / 255],\n indianred: [205 / 255, 92 / 255, 92 / 255],\n indigo: [75 / 255, 0 / 255, 130 / 255],\n ivory: [255 / 255, 255 / 255, 240 / 255],\n khaki: [240 / 255, 230 / 255, 140 / 255],\n lavender: [230 / 255, 230 / 255, 250 / 255],\n lavenderblush: [255 / 255, 240 / 255, 245 / 255],\n lawngreen: [124 / 255, 252 / 255, 0 / 255],\n lemonchiffon: [255 / 255, 250 / 255, 205 / 255],\n lightblue: [173 / 255, 216 / 255, 230 / 255],\n lightcoral: [240 / 255, 128 / 255, 128 / 255],\n lightcyan: [224 / 255, 255 / 255, 255 / 255],\n lightgoldenrodyellow: [250 / 255, 250 / 255, 210 / 255],\n lightgray: [211 / 255, 211 / 255, 211 / 255],\n lightgreen: [144 / 255, 238 / 255, 144 / 255],\n lightgrey: [211 / 255, 211 / 255, 211 / 255],\n lightpink: [255 / 255, 182 / 255, 193 / 255],\n lightsalmon: [255 / 255, 160 / 255, 122 / 255],\n lightseagreen: [32 / 255, 178 / 255, 170 / 255],\n lightskyblue: [135 / 255, 206 / 255, 250 / 255],\n lightslategray: [119 / 255, 136 / 255, 153 / 255],\n lightslategrey: [119 / 255, 136 / 255, 153 / 255],\n lightsteelblue: [176 / 255, 196 / 255, 222 / 255],\n lightyellow: [255 / 255, 255 / 255, 224 / 255],\n // 'lime': [ 0 / 255, 255 / 255, 0 / 255 ],\n limegreen: [50 / 255, 205 / 255, 50 / 255],\n linen: [250 / 255, 240 / 255, 230 / 255],\n magenta: [255 / 255, 0 / 255, 255 / 255],\n // 'maroon': [ 128 / 255, 0 / 255, 0 / 255 ],\n mediumaquamarine: [102 / 255, 205 / 255, 170 / 255],\n mediumblue: [0 / 255, 0 / 255, 205 / 255],\n mediumorchid: [186 / 255, 85 / 255, 211 / 255],\n mediumpurple: [147 / 255, 112 / 255, 219 / 255],\n mediumseagreen: [60 / 255, 179 / 255, 113 / 255],\n mediumslateblue: [123 / 255, 104 / 255, 238 / 255],\n mediumspringgreen: [0 / 255, 250 / 255, 154 / 255],\n mediumturquoise: [72 / 255, 209 / 255, 204 / 255],\n mediumvioletred: [199 / 255, 21 / 255, 133 / 255],\n midnightblue: [25 / 255, 25 / 255, 112 / 255],\n mintcream: [245 / 255, 255 / 255, 250 / 255],\n mistyrose: [255 / 255, 228 / 255, 225 / 255],\n moccasin: [255 / 255, 228 / 255, 181 / 255],\n navajowhite: [255 / 255, 222 / 255, 173 / 255],\n // 'navy': [ 0 / 255, 0 / 255, 128 / 255 ],\n oldlace: [253 / 255, 245 / 255, 230 / 255],\n // 'olive': [ 128 / 255, 128 / 255, 0 / 255 ],\n olivedrab: [107 / 255, 142 / 255, 35 / 255],\n orange: [255 / 255, 165 / 255, 0 / 255],\n orangered: [255 / 255, 69 / 255, 0 / 255],\n orchid: [218 / 255, 112 / 255, 214 / 255],\n palegoldenrod: [238 / 255, 232 / 255, 170 / 255],\n palegreen: [152 / 255, 251 / 255, 152 / 255],\n paleturquoise: [175 / 255, 238 / 255, 238 / 255],\n palevioletred: [219 / 255, 112 / 255, 147 / 255],\n papayawhip: [255 / 255, 239 / 255, 213 / 255],\n peachpuff: [255 / 255, 218 / 255, 185 / 255],\n peru: [205 / 255, 133 / 255, 63 / 255],\n pink: [255 / 255, 192 / 255, 203 / 255],\n plum: [221 / 255, 160 / 255, 221 / 255],\n powderblue: [176 / 255, 224 / 255, 230 / 255],\n // 'purple': [ 128 / 255, 0 / 255, 128 / 255 ],\n // 'red': [ 255 / 255, 0 / 255, 0 / 255 ],\n rosybrown: [188 / 255, 143 / 255, 143 / 255],\n royalblue: [65 / 255, 105 / 255, 225 / 255],\n saddlebrown: [139 / 255, 69 / 255, 19 / 255],\n salmon: [250 / 255, 128 / 255, 114 / 255],\n sandybrown: [244 / 255, 164 / 255, 96 / 255],\n seagreen: [46 / 255, 139 / 255, 87 / 255],\n seashell: [255 / 255, 245 / 255, 238 / 255],\n sienna: [160 / 255, 82 / 255, 45 / 255],\n // 'silver': [ 192 / 255, 192 / 255, 192 / 255 ],\n skyblue: [135 / 255, 206 / 255, 235 / 255],\n slateblue: [106 / 255, 90 / 255, 205 / 255],\n slategray: [112 / 255, 128 / 255, 144 / 255],\n slategrey: [112 / 255, 128 / 255, 144 / 255],\n snow: [255 / 255, 250 / 255, 250 / 255],\n springgreen: [0 / 255, 255 / 255, 127 / 255],\n steelblue: [70 / 255, 130 / 255, 180 / 255],\n tan: [210 / 255, 180 / 255, 140 / 255],\n // 'teal': [ 0 / 255, 128 / 255, 128 / 255 ],\n thistle: [216 / 255, 191 / 255, 216 / 255],\n tomato: [255 / 255, 99 / 255, 71 / 255],\n turquoise: [64 / 255, 224 / 255, 208 / 255],\n violet: [238 / 255, 130 / 255, 238 / 255],\n wheat: [245 / 255, 222 / 255, 179 / 255],\n // 'white': [ 255 / 255, 255 / 255, 255 / 255 ],\n whitesmoke: [245 / 255, 245 / 255, 245 / 255],\n // 'yellow': [ 255 / 255, 255 / 255, 0 / 255 ],\n yellowgreen: [154 / 255, 205 / 255, 50 / 255]\n}\n\nmodule.exports = cssColors\n","/**\n * Converts CSS color notations (string of hex values) to RGB values.\n *\n * @see https://www.w3.org/TR/css-color-3/\n * @param {String} notation - color notation\n * @return {Array} RGB color values\n * @alias module:modeling/colors.hexToRgb\n *\n * @example\n * let mysphere = colorize(hexToRgb('#000080'), sphere()) // navy blue\n */\nconst hexToRgb = (notation) => {\n notation = notation.replace('#', '')\n if (notation.length < 6) throw new Error('the given notation must contain 3 or more hex values')\n\n const r = parseInt(notation.substring(0, 2), 16) / 255\n const g = parseInt(notation.substring(2, 4), 16) / 255\n const b = parseInt(notation.substring(4, 6), 16) / 255\n if (notation.length >= 8) {\n const a = parseInt(notation.substring(6, 8), 16) / 255\n return [r, g, b, a]\n }\n return [r, g, b]\n}\n\nmodule.exports = hexToRgb\n","const flatten = require('../utils/flatten')\n\nconst hueToColorComponent = require('./hueToColorComponent')\n\n/**\n * Converts HSL color values to RGB color values.\n *\n * @see http://en.wikipedia.org/wiki/HSL_color_space\n * @param {...Number|Array} values - HSL or HSLA color values\n * @return {Array} RGB or RGBA color values\n * @alias module:modeling/colors.hslToRgb\n *\n * @example\n * let mysphere = colorize(hslToRgb([0.9166666666666666, 1, 0.5]), sphere())\n */\nconst hslToRgb = (...values) => {\n values = flatten(values)\n if (values.length < 3) throw new Error('values must contain H, S and L values')\n\n const h = values[0]\n const s = values[1]\n const l = values[2]\n\n let r = l // default is achromatic\n let g = l\n let b = l\n\n if (s !== 0) {\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s\n const p = 2 * l - q\n r = hueToColorComponent(p, q, h + 1 / 3)\n g = hueToColorComponent(p, q, h)\n b = hueToColorComponent(p, q, h - 1 / 3)\n }\n\n if (values.length > 3) {\n // add alpha value if provided\n const a = values[3]\n return [r, g, b, a]\n }\n return [r, g, b]\n}\n\nmodule.exports = hslToRgb\n","const flatten = require('../utils/flatten')\n\n/**\n * Converts HSV color values to RGB color values.\n *\n * @see http://en.wikipedia.org/wiki/HSV_color_space.\n * @param {...Number|Array} values - HSV or HSVA color values\n * @return {Array} RGB or RGBA color values\n * @alias module:modeling/colors.hsvToRgb\n *\n * @example\n * let mysphere = colorize(hsvToRgb([0.9166666666666666, 1, 1]), sphere())\n */\nconst hsvToRgb = (...values) => {\n values = flatten(values)\n if (values.length < 3) throw new Error('values must contain H, S and V values')\n\n const h = values[0]\n const s = values[1]\n const v = values[2]\n\n let r = 0\n let g = 0\n let b = 0\n\n const i = Math.floor(h * 6)\n const f = h * 6 - i\n const p = v * (1 - s)\n const q = v * (1 - f * s)\n const t = v * (1 - (1 - f) * s)\n\n switch (i % 6) {\n case 0:\n r = v\n g = t\n b = p\n break\n case 1:\n r = q\n g = v\n b = p\n break\n case 2:\n r = p\n g = v\n b = t\n break\n case 3:\n r = p\n g = q\n b = v\n break\n case 4:\n r = t\n g = p\n b = v\n break\n case 5:\n r = v\n g = p\n b = q\n break\n }\n\n if (values.length > 3) {\n // add alpha value if provided\n const a = values[3]\n return [r, g, b, a]\n }\n return [r, g, b]\n}\n\nmodule.exports = hsvToRgb\n","/**\n * Convert hue values to a color component (ie one of r, g, b)\n * @param {Number} p\n * @param {Number} q\n * @param {Number} t\n * @return {Number} color component\n * @alias module:modeling/colors.hueToColorComponent\n */\nconst hueToColorComponent = (p, q, t) => {\n if (t < 0) t += 1\n if (t > 1) t -= 1\n if (t < 1 / 6) return p + (q - p) * 6 * t\n if (t < 1 / 2) return q\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6\n return p\n}\n\nmodule.exports = hueToColorComponent\n","/**\n * All shapes (primitives or the results of operations) can be assigned a color (RGBA).\n * In all cases, the function returns the results, and never changes the original shapes.\n * @module modeling/colors\n * @example\n * const { colorize, hexToRgb } = require('@jscad/modeling').colors\n */\nmodule.exports = {\n colorize: require('./colorize'),\n colorNameToRgb: require('./colorNameToRgb'),\n cssColors: require('./cssColors'),\n hexToRgb: require('./hexToRgb'),\n hslToRgb: require('./hslToRgb'),\n hsvToRgb: require('./hsvToRgb'),\n hueToColorComponent: require('./hueToColorComponent'),\n rgbToHex: require('./rgbToHex'),\n rgbToHsl: require('./rgbToHsl'),\n rgbToHsv: require('./rgbToHsv')\n}\n","const flatten = require('../utils/flatten')\n\n/**\n * Convert the given RGB color values to CSS color notation (string)\n * @see https://www.w3.org/TR/css-color-3/\n * @param {...Number|Array} values - RGB or RGBA color values\n * @return {String} CSS color notation\n * @alias module:modeling/colors.rgbToHex\n */\nconst rgbToHex = (...values) => {\n values = flatten(values)\n if (values.length < 3) throw new Error('values must contain R, G and B values')\n\n const r = values[0] * 255\n const g = values[1] * 255\n const b = values[2] * 255\n\n let s = `#${Number(0x1000000 + r * 0x10000 + g * 0x100 + b).toString(16).substring(1, 7)}`\n\n if (values.length > 3) {\n // convert alpha to opacity\n s = s + Number(values[3] * 255).toString(16)\n }\n return s\n}\n\nmodule.exports = rgbToHex\n","const flatten = require('../utils/flatten')\n\n/**\n * Converts an RGB color value to HSL.\n *\n * @see http://en.wikipedia.org/wiki/HSL_color_space.\n * @see http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c\n * @param {...Number|Array} values - RGB or RGBA color values\n * @return {Array} HSL or HSLA color values\n * @alias module:modeling/colors.rgbToHsl\n */\nconst rgbToHsl = (...values) => {\n values = flatten(values)\n if (values.length < 3) throw new Error('values must contain R, G and B values')\n\n const r = values[0]\n const g = values[1]\n const b = values[2]\n\n const max = Math.max(r, g, b)\n const min = Math.min(r, g, b)\n let h\n let s\n const l = (max + min) / 2\n\n if (max === min) {\n h = s = 0 // achromatic\n } else {\n const d = max - min\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min)\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0)\n break\n case g:\n h = (b - r) / d + 2\n break\n case b:\n h = (r - g) / d + 4\n break\n }\n h /= 6\n }\n\n if (values.length > 3) {\n // add alpha value if provided\n const a = values[3]\n return [h, s, l, a]\n }\n return [h, s, l]\n}\n\nmodule.exports = rgbToHsl\n","const flatten = require('../utils/flatten')\n\n/**\n * Converts an RGB color value to HSV.\n *\n * @see http://en.wikipedia.org/wiki/HSV_color_space.\n * @param {...Number|Array} values - RGB or RGBA color values\n * @return {Array} HSV or HSVA color values\n * @alias module:modeling/colors.rgbToHsv\n */\nconst rgbToHsv = (...values) => {\n values = flatten(values)\n if (values.length < 3) throw new Error('values must contain R, G and B values')\n\n const r = values[0]\n const g = values[1]\n const b = values[2]\n\n const max = Math.max(r, g, b)\n const min = Math.min(r, g, b)\n let h\n const v = max\n\n const d = max - min\n const s = max === 0 ? 0 : d / max\n\n if (max === min) {\n h = 0 // achromatic\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0)\n break\n case g:\n h = (b - r) / d + 2\n break\n case b:\n h = (r - g) / d + 4\n break\n }\n h /= 6\n }\n\n if (values.length > 3) {\n // add alpha if provided\n const a = values[3]\n return [h, s, v, a]\n }\n return [h, s, v]\n}\n\nmodule.exports = rgbToHsv\n","const lengths = require('./lengths')\n\n/**\n * Convert a given arc length along a bezier curve to a t value.\n * Useful for generating equally spaced points along a bezier curve.\n *\n * @example\n * const points = [];\n * const segments = 9; // this will generate 10 equally spaced points\n * const increment = bezier.length(100, bezierCurve) / segments;\n * for(let i = 0; i <= segments; i++) {\n * const t = bezier.arcLengthToT({distance: i * increment}, bezierCurve);\n * const point = bezier.valueAt(t, bezierCurve);\n * points.push(point);\n * }\n * return points;\n *\n * @param {Object} [options] options for construction\n * @param {Number} [options.distance=0] the distance along the bezier curve for which we want to find the corresponding t value.\n * @param {Number} [options.segments=100] the number of segments to use when approximating the curve length.\n * @param {Object} bezier a bezier curve.\n * @returns a number in the [0, 1] interval or NaN if the arcLength is negative or greater than the total length of the curve.\n * @alias module:modeling/curves/bezier.arcLengthToT\n */\nconst arcLengthToT = (options, bezier) => {\n const defaults = {\n distance: 0,\n segments: 100\n }\n const { distance, segments } = Object.assign({}, defaults, options)\n\n const arcLengths = lengths(segments, bezier)\n // binary search for the index with largest value smaller than target arcLength\n let startIndex = 0\n let endIndex = segments\n while (startIndex <= endIndex) {\n const middleIndex = Math.floor(startIndex + (endIndex - startIndex) / 2)\n const diff = arcLengths[middleIndex] - distance\n if (diff < 0) {\n startIndex = middleIndex + 1\n } else if (diff > 0) {\n endIndex = middleIndex - 1\n } else {\n endIndex = middleIndex\n break\n }\n }\n // if we have an exact match, return it\n const targetIndex = endIndex\n if (arcLengths[targetIndex] === distance) {\n return targetIndex / segments\n }\n // we could get finer grain at lengths, or use simple interpolation between two points\n const lengthBefore = arcLengths[targetIndex]\n const lengthAfter = arcLengths[targetIndex + 1]\n const segmentLength = lengthAfter - lengthBefore\n // determine where we are between the 'before' and 'after' points\n const segmentFraction = (distance - lengthBefore) / segmentLength\n // add that fractional amount and return\n return (targetIndex + segmentFraction) / segments\n}\n\nmodule.exports = arcLengthToT\n","/**\n * Represents a bezier easing function.\n * @typedef {Object} bezier\n * @property {Array} points - The control points for the bezier curve. The first and last point will also be the start and end of the curve\n * @property {string} pointType - A reference to the type and dimensionality of the points that the curve was created from\n * @property {number} dimensions - The dimensionality of the bezier\n * @property {Array} permutations - A pre-calculation of the bezier algorithm's co-efficients\n * @property {Array} tangentPermutations - A pre-calculation of the bezier algorithm's tangent co-efficients\n *\n */\n\n/**\n * Creates an object representing a bezier easing curve.\n * Curves can have both an arbitrary number of control points, and an arbitrary number of dimensions.\n *\n * @example\n * const b = bezier.create([0,10]) // a linear progression from 0 to 10\n * const b = bezier.create([0, 0, 10, 10]) // a symmetrical cubic easing curve that starts slowly and ends slowly from 0 to 10\n * const b = bezier.create([0,0,0], [0,5,10], [10,0,-5], [10,10,10]]) // a cubic 3 dimensional easing curve that can generate position arrays for modelling\n * // Usage\n * let position = bezier.valueAt(t,b) // where 0 < t < 1\n * let tangent = bezier.tangentAt(t,b) // where 0 < t < 1\n *\n * @param {Array} points An array with at least 2 elements of either all numbers, or all arrays of numbers that are the same size.\n * @returns {bezier} a new bezier data object\n * @alias module:modeling/curves/bezier.create\n */\nconst create = (points) => {\n if (!Array.isArray(points)) throw new Error('Bezier points must be a valid array/')\n if (points.length < 2) throw new Error('Bezier points must contain at least 2 values.')\n const pointType = getPointType(points)\n\n return {\n points: points,\n pointType: pointType,\n dimensions: pointType === 'float_single' ? 0 : points[0].length,\n permutations: getPermutations(points.length - 1),\n tangentPermutations: getPermutations(points.length - 2)\n }\n}\n\nconst getPointType = function (points) {\n let firstPointType = null\n points.forEach((point) => {\n let pType = ''\n if (Number.isFinite(point)) {\n pType = 'float_single'\n } else if (Array.isArray(point)) {\n point.forEach((val) => {\n if (!Number.isFinite(val)) throw new Error('Bezier point values must all be numbers.')\n })\n pType = 'float_' + point.length\n } else throw new Error('Bezier points must all be numbers or arrays of number.')\n if (firstPointType == null) {\n firstPointType = pType\n } else {\n if (firstPointType !== pType) {\n throw new Error('Bezier points must be either all numbers or all arrays of numbers of the same size.')\n }\n }\n })\n return firstPointType\n}\n\nconst getPermutations = function (c) {\n const permutations = []\n for (let i = 0; i <= c; i++) {\n permutations.push(factorial(c) / (factorial(i) * factorial(c - i)))\n }\n return permutations\n}\n\nconst factorial = function (b) {\n let out = 1\n for (let i = 2; i <= b; i++) {\n out *= i\n }\n return out\n}\n\nmodule.exports = create\n","/**\n * Represents a bezier easing function.\n * @see {@link bezier} for data structure information.\n * @module modeling/curves/bezier\n */\nmodule.exports = {\n create: require('./create'),\n valueAt: require('./valueAt'),\n tangentAt: require('./tangentAt'),\n lengths: require('./lengths'),\n length: require('./length'),\n arcLengthToT: require('./arcLengthToT')\n}\n","const lengths = require('./lengths')\n\n/**\n * Approximates the length of the bezier curve by sampling it at a sequence of points, then adding up all the distances.\n * This is equivalent to flattening the curve into lines and adding up all the line lengths.\n *\n * @example\n * const b = bezier.create([[0, 0], [0, 10]]);\n * console.log(length(100, b)) // output 10\n *\n * @param {Number} segments the number of segments to use when approximating the curve length.\n * @param {Object} bezier a bezier curve.\n * @returns an approximation of the curve's length.\n * @alias module:modeling/curves/bezier.length\n */\nconst length = (segments, bezier) => lengths(segments, bezier)[segments]\n\nmodule.exports = length\n","const valueAt = require('./valueAt')\n\n/**\n * Divides the bezier curve into line segments and returns the cumulative length of those segments as an array.\n * Utility function used to calculate the curve's approximate length and determine the equivalence between arc length and time.\n *\n * @example\n * const b = bezier.create([[0, 0], [0, 10]]);\n * const totalLength = lengths(100, b).pop(); // the last element of the array is the curve's approximate length\n *\n * @param {Number} segments the number of segments to use when approximating the curve length.\n * @param {Object} bezier a bezier curve.\n * @returns an array containing the cumulative length of the segments.\n */\nconst lengths = (segments, bezier) => {\n let sum = 0\n const lengths = [0]\n let previous = valueAt(0, bezier)\n for (let index = 1; index <= segments; index++) {\n const current = valueAt(index / segments, bezier)\n sum += distanceBetween(current, previous)\n lengths.push(sum)\n previous = current\n }\n return lengths\n}\n\n/**\n * Calculates the Euclidean distance between two n-dimensional points.\n *\n * @example\n * const distance = distanceBetween([0, 0], [0, 10]); // calculate distance between 2D points\n * console.log(distance); // output 10\n *\n * @param {Array} a - first operand.\n * @param {Array} b - second operand.\n * @returns {Number} - distance.\n */\nconst distanceBetween = (a, b) => {\n if (Number.isFinite(a) && Number.isFinite(b)) {\n return Math.abs(a - b)\n } else if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n throw new Error('The operands must have the same number of dimensions.')\n }\n let sum = 0\n for (let i = 0; i < a.length; i++) {\n sum += (b[i] - a[i]) * (b[i] - a[i])\n }\n return Math.sqrt(sum)\n } else {\n throw new Error('The operands must be of the same type, either number or array.')\n }\n}\n\nmodule.exports = lengths\n","/**\n * Calculates the tangent at a specific position along a bezier easing curve.\n * For multidimensional curves, the tangent is the slope of each dimension at that point.\n * See the example called extrudeAlongPath.js\n *\n * @example\n * const b = bezier.create([[0,0,0], [0,5,10], [10,0,-5], [10,10,10]]) // a cubic 3 dimensional easing curve that can generate position arrays for modelling\n * let tangent = bezier.tangentAt(t, b)\n *\n * @param {number} t : the position of which to calculate the bezier's tangent value; 0 < t < 1\n * @param {Object} bezier : an array with at least 2 elements of either all numbers, or all arrays of numbers that are the same size.\n * @return {array | number} the tangent at the requested position.\n * @alias module:modeling/curves/bezier.tangentAt\n */\nconst tangentAt = (t, bezier) => {\n if (t < 0 || t > 1) {\n throw new Error('Bezier tangentAt() input must be between 0 and 1')\n }\n if (bezier.pointType === 'float_single') {\n return bezierTangent(bezier, bezier.points, t)\n } else {\n const result = []\n for (let i = 0; i < bezier.dimensions; i++) {\n const singleDimensionPoints = []\n for (let j = 0; j < bezier.points.length; j++) {\n singleDimensionPoints.push(bezier.points[j][i])\n }\n result.push(bezierTangent(bezier, singleDimensionPoints, t))\n }\n return result\n }\n}\n\nconst bezierTangent = function (bezier, p, t) {\n // from https://pages.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/Bezier/bezier-der.html\n const n = p.length - 1\n let result = 0\n for (let i = 0; i < n; i++) {\n const q = n * (p[i + 1] - p[i])\n result += bezier.tangentPermutations[i] * Math.pow(1 - t, n - 1 - i) * Math.pow(t, i) * q\n }\n return result\n}\n\nmodule.exports = tangentAt\n","/**\n * Calculates the value at a specific position along a bezier easing curve.\n * For multidimensional curves, the tangent is the slope of each dimension at that point.\n * See the example called extrudeAlongPath.js to see this in use.\n * Math and explanation comes from {@link https://www.freecodecamp.org/news/nerding-out-with-bezier-curves-6e3c0bc48e2f/}\n *\n * @example\n * const b = bezier.create([0,0,0], [0,5,10], [10,0,-5], [10,10,10]]) // a cubic 3 dimensional easing curve that can generate position arrays for modelling\n * let position = bezier.valueAt(t,b) // where 0 < t < 1\n *\n * @param {number} t : the position of which to calculate the value; 0 < t < 1\n * @param {Object} bezier : a bezier curve created with bezier.create().\n * @returns {array | number} the value at the requested position.\n * @alias module:modeling/curves/bezier.valueAt\n */\nconst valueAt = (t, bezier) => {\n if (t < 0 || t > 1) {\n throw new Error('Bezier valueAt() input must be between 0 and 1')\n }\n if (bezier.pointType === 'float_single') {\n return bezierFunction(bezier, bezier.points, t)\n } else {\n const result = []\n for (let i = 0; i < bezier.dimensions; i++) {\n const singleDimensionPoints = []\n for (let j = 0; j < bezier.points.length; j++) {\n singleDimensionPoints.push(bezier.points[j][i])\n }\n result.push(bezierFunction(bezier, singleDimensionPoints, t))\n }\n return result\n }\n}\n\nconst bezierFunction = function (bezier, p, t) {\n const n = p.length - 1\n let result = 0\n for (let i = 0; i <= n; i++) {\n result += bezier.permutations[i] * Math.pow(1 - t, n - i) * Math.pow(t, i) * p[i]\n }\n return result\n}\n\nmodule.exports = valueAt\n","/**\n * Curves are n-dimensional mathematical constructs that define a path from point 0 to point 1.\n * @module modeling/curves\n * @example\n * const { bezier } = require('@jscad/modeling').curves\n\n */\nmodule.exports = {\n bezier: require('./bezier')\n}\n","const mat4 = require('../../maths/mat4')\nconst vec2 = require('../../maths/vec2')\n\n/*\n * Apply the transforms of the given geometry.\n * NOTE: This function must be called BEFORE exposing any data. See toSides().\n * @param {geom2} geometry - the geometry to transform\n * @returns {geom2} the given geometry\n *\n * @example\n * geometry = applyTransforms(geometry)\n */\nconst applyTransforms = (geometry) => {\n if (mat4.isIdentity(geometry.transforms)) return geometry\n\n // apply transforms to each side\n geometry.sides = geometry.sides.map((side) => {\n const p0 = vec2.transform(vec2.create(), side[0], geometry.transforms)\n const p1 = vec2.transform(vec2.create(), side[1], geometry.transforms)\n return [p0, p1]\n })\n geometry.transforms = mat4.create()\n return geometry\n}\n\nmodule.exports = applyTransforms\n","/**\n * Performs a shallow clone of the given geometry.\n * @param {geom2} geometry - the geometry to clone\n * @returns {geom2} new geometry\n * @alias module:modeling/geometries/geom2.clone\n */\nconst clone = (geometry) => Object.assign({}, geometry)\n\nmodule.exports = clone\n","const mat4 = require('../../maths/mat4')\n\n/**\n * Represents a 2D geometry consisting of a list of sides.\n * @typedef {Object} geom2\n * @property {Array} sides - list of sides, each side containing two points\n * @property {mat4} transforms - transforms to apply to the sides, see transform()\n */\n\n/**\n * Create a new 2D geometry composed of unordered sides (two connected points).\n * @param {Array} [sides] - list of sides where each side is an array of two points\n * @returns {geom2} a new geometry\n * @alias module:modeling/geometries/geom2.create\n */\nconst create = (sides) => {\n if (sides === undefined) {\n sides = [] // empty contents\n }\n return {\n sides: sides,\n transforms: mat4.create()\n }\n}\n\nmodule.exports = create\n","const mat4 = require('../../maths/mat4')\nconst vec2 = require('../../maths/vec2')\n\nconst create = require('./create')\n\n/**\n * Create a new 2D geometry from the given compact binary data.\n * @param {Array} data - compact binary data\n * @returns {geom2} a new geometry\n * @alias module:modeling/geometries/geom2.fromCompactBinary\n */\nconst fromCompactBinary = (data) => {\n if (data[0] !== 0) throw new Error('invalid compact binary data')\n\n const created = create()\n\n created.transforms = mat4.clone(data.slice(1, 17))\n\n for (let i = 21; i < data.length; i += 4) {\n const point0 = vec2.fromValues(data[i + 0], data[i + 1])\n const point1 = vec2.fromValues(data[i + 2], data[i + 3])\n created.sides.push([point0, point1])\n }\n // transfer known properties, i.e. color\n if (data[17] >= 0) {\n created.color = [data[17], data[18], data[19], data[20]]\n }\n // TODO: how about custom properties or fields ?\n return created\n}\n\nmodule.exports = fromCompactBinary\n","const vec2 = require('../../maths/vec2')\n\nconst create = require('./create')\n\n/**\n * Create a new 2D geometry from the given points.\n * The direction (rotation) of the points is not relevant,\n * as the points can define a convex or a concave polygon.\n * The geometry must not self intersect, i.e. the sides cannot cross.\n * @param {Array} points - list of points in 2D space\n * @returns {geom2} a new geometry\n * @alias module:modeling/geometries/geom2.fromPoints\n */\nconst fromPoints = (points) => {\n if (!Array.isArray(points)) {\n throw new Error('the given points must be an array')\n }\n let length = points.length\n if (length < 3) {\n throw new Error('the given points must define a closed geometry with three or more points')\n }\n // adjust length if the given points are closed by the same point\n if (vec2.equals(points[0], points[length - 1])) --length\n\n const sides = []\n let prevpoint = points[length - 1]\n for (let i = 0; i < length; i++) {\n const point = points[i]\n sides.push([vec2.clone(prevpoint), vec2.clone(point)])\n prevpoint = point\n }\n return create(sides)\n}\n\nmodule.exports = fromPoints\n","/**\n * Represents a 2D geometry consisting of a list of sides.\n * @see {@link geom2} for data structure information.\n * @module modeling/geometries/geom2\n *\n * @example\n * colorize([0.5,0,1,1], square()) // purple square\n *\n * @example\n * {\n * \"sides\": [[[-1,1],[-1,-1]],[[-1,-1],[1,-1]],[[1,-1],[1,1]],[[1,1],[-1,1]]],\n * \"transforms\": [1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],\n * \"color\": [0.5,0,1,1]\n * }\n */\nmodule.exports = {\n clone: require('./clone'),\n create: require('./create'),\n fromPoints: require('./fromPoints'),\n fromCompactBinary: require('./fromCompactBinary'),\n isA: require('./isA'),\n reverse: require('./reverse'),\n toOutlines: require('./toOutlines'),\n toPoints: require('./toPoints'),\n toSides: require('./toSides'),\n toString: require('./toString'),\n toCompactBinary: require('./toCompactBinary'),\n transform: require('./transform'),\n validate: require('./validate')\n}\n","/**\n * Determine if the given object is a 2D geometry.\n * @param {Object} object - the object to interrogate\n * @returns {Boolean} true, if the object matches a geom2 based object\n * @alias module:modeling/geometries/geom2.isA\n */\nconst isA = (object) => {\n if (object && typeof object === 'object') {\n if ('sides' in object && 'transforms' in object) {\n if (Array.isArray(object.sides) && 'length' in object.transforms) {\n return true\n }\n }\n }\n return false\n}\n\nmodule.exports = isA\n","const create = require('./create')\nconst toSides = require('./toSides')\n\n/**\n * Reverses the given geometry so that the sides are flipped in the opposite order.\n * This swaps the left (interior) and right (exterior) edges.\n * @param {geom2} geometry - the geometry to reverse\n * @returns {geom2} the new reversed geometry\n * @alias module:modeling/geometries/geom2.reverse\n *\n * @example\n * let newgeometry = reverse(geometry)\n */\nconst reverse = (geometry) => {\n const oldsides = toSides(geometry)\n\n const newsides = oldsides.map((side) => [side[1], side[0]])\n newsides.reverse() // is this required?\n return create(newsides)\n}\n\nmodule.exports = reverse\n","/**\n * Produces a compact binary representation from the given geometry.\n * @param {geom2} geometry - the geometry\n * @returns {TypedArray} compact binary representation\n * @alias module:modeling/geometries/geom2.toCompactBinary\n */\nconst toCompactBinary = (geometry) => {\n const sides = geometry.sides\n const transforms = geometry.transforms\n let color = [-1, -1, -1, -1]\n if (geometry.color) color = geometry.color\n\n // FIXME why Float32Array?\n const compacted = new Float32Array(1 + 16 + 4 + (sides.length * 4)) // type + transforms + color + sides data\n\n compacted[0] = 0 // type code: 0 => geom2, 1 => geom3 , 2 => path2\n\n compacted[1] = transforms[0]\n compacted[2] = transforms[1]\n compacted[3] = transforms[2]\n compacted[4] = transforms[3]\n compacted[5] = transforms[4]\n compacted[6] = transforms[5]\n compacted[7] = transforms[6]\n compacted[8] = transforms[7]\n compacted[9] = transforms[8]\n compacted[10] = transforms[9]\n compacted[11] = transforms[10]\n compacted[12] = transforms[11]\n compacted[13] = transforms[12]\n compacted[14] = transforms[13]\n compacted[15] = transforms[14]\n compacted[16] = transforms[15]\n\n compacted[17] = color[0]\n compacted[18] = color[1]\n compacted[19] = color[2]\n compacted[20] = color[3]\n\n for (let i = 0; i < sides.length; i++) {\n const ci = i * 4 + 21\n const point0 = sides[i][0]\n const point1 = sides[i][1]\n compacted[ci + 0] = point0[0]\n compacted[ci + 1] = point0[1]\n compacted[ci + 2] = point1[0]\n compacted[ci + 3] = point1[1]\n }\n // TODO: how about custom properties or fields ?\n return compacted\n}\n\nmodule.exports = toCompactBinary\n","const vec2 = require('../../maths/vec2')\n\nconst toSides = require('./toSides')\n\n/*\n * Create a list of edges which SHARE vertices.\n * This allows the edges to be traversed in order.\n */\nconst toSharedVertices = (sides) => {\n const unique = new Map() // {key: vertex}\n const getUniqueVertex = (vertex) => {\n const key = vertex.toString()\n if (unique.has(key)) {\n return unique.get(key)\n } else {\n unique.set(key, vertex)\n return vertex\n }\n }\n\n return sides.map((side) => side.map(getUniqueVertex))\n}\n\n/*\n * Convert a list of sides into a map from vertex to edges.\n */\nconst toVertexMap = (sides) => {\n const vertexMap = new Map()\n // first map to edges with shared vertices\n const edges = toSharedVertices(sides)\n // construct adjacent edges map\n edges.forEach((edge) => {\n if (vertexMap.has(edge[0])) {\n vertexMap.get(edge[0]).push(edge)\n } else {\n vertexMap.set(edge[0], [edge])\n }\n })\n return vertexMap\n}\n\n/**\n * Create the outline(s) of the given geometry.\n * @param {geom2} geometry - geometry to create outlines from\n * @returns {Array} an array of outlines, where each outline is an array of ordered points\n * @alias module:modeling/geometries/geom2.toOutlines\n *\n * @example\n * let geometry = subtract(rectangle({size: [5, 5]}), rectangle({size: [3, 3]}))\n * let outlines = toOutlines(geometry) // returns two outlines\n */\nconst toOutlines = (geometry) => {\n const vertexMap = toVertexMap(toSides(geometry)) // {vertex: [edges]}\n const outlines = []\n while (true) {\n let startSide\n for (const [vertex, edges] of vertexMap) {\n startSide = edges.shift()\n if (!startSide) {\n vertexMap.delete(vertex)\n continue\n }\n break\n }\n if (startSide === undefined) break // all starting sides have been visited\n\n const connectedVertexPoints = []\n const startVertex = startSide[0]\n while (true) {\n connectedVertexPoints.push(startSide[0])\n const nextVertex = startSide[1]\n if (nextVertex === startVertex) break // the outline has been closed\n const nextPossibleSides = vertexMap.get(nextVertex)\n if (!nextPossibleSides) {\n throw new Error(`geometry is not closed at vertex ${nextVertex}`)\n }\n const nextSide = popNextSide(startSide, nextPossibleSides)\n if (nextPossibleSides.length === 0) {\n vertexMap.delete(nextVertex)\n }\n startSide = nextSide\n } // inner loop\n\n // due to the logic of fromPoints()\n // move the first point to the last\n if (connectedVertexPoints.length > 0) {\n connectedVertexPoints.push(connectedVertexPoints.shift())\n }\n outlines.push(connectedVertexPoints)\n } // outer loop\n vertexMap.clear()\n return outlines\n}\n\n// find the first counter-clockwise edge from startSide and pop from nextSides\nconst popNextSide = (startSide, nextSides) => {\n if (nextSides.length === 1) {\n return nextSides.pop()\n }\n const v0 = vec2.create()\n const startAngle = vec2.angleDegrees(vec2.subtract(v0, startSide[1], startSide[0]))\n let bestAngle\n let bestIndex\n nextSides.forEach((nextSide, index) => {\n const nextAngle = vec2.angleDegrees(vec2.subtract(v0, nextSide[1], nextSide[0]))\n let angle = nextAngle - startAngle\n if (angle < -180) angle += 360\n if (angle >= 180) angle -= 360\n if (bestIndex === undefined || angle > bestAngle) {\n bestIndex = index\n bestAngle = angle\n }\n })\n const nextSide = nextSides[bestIndex]\n nextSides.splice(bestIndex, 1) // remove side from list\n return nextSide\n}\n\nmodule.exports = toOutlines\n","const toSides = require('./toSides')\n\n/**\n * Produces an array of points from the given geometry.\n * The returned array should not be modified as the points are shared with the geometry.\n * NOTE: The points returned do NOT define an order. Use toOutlines() for ordered points.\n * @param {geom2} geometry - the geometry\n * @returns {Array} an array of points\n * @alias module:modeling/geometries/geom2.toPoints\n *\n * @example\n * let sharedpoints = toPoints(geometry)\n */\nconst toPoints = (geometry) => {\n const sides = toSides(geometry)\n const points = sides.map((side) => side[0])\n // due to the logic of fromPoints()\n // move the first point to the last\n if (points.length > 0) {\n points.push(points.shift())\n }\n return points\n}\n\nmodule.exports = toPoints\n","const applyTransforms = require('./applyTransforms')\n\n/**\n * Produces an array of sides from the given geometry.\n * The returned array should not be modified as the data is shared with the geometry.\n * NOTE: The sides returned do NOT define an order. Use toOutlines() for ordered points.\n * @param {geom2} geometry - the geometry\n * @returns {Array} an array of sides\n * @alias module:modeling/geometries/geom2.toSides\n *\n * @example\n * let sharedsides = toSides(geometry)\n */\nconst toSides = (geometry) => applyTransforms(geometry).sides\n\nmodule.exports = toSides\n","const vec2 = require('../../maths/vec2')\n\nconst toSides = require('./toSides')\n\n/**\n * Create a string representing the contents of the given geometry.\n * @param {geom2} geometry - the geometry\n * @returns {String} a representative string\n * @alias module:modeling/geometries/geom2.toString\n *\n * @example\n * console.out(toString(geometry))\n */\nconst toString = (geometry) => {\n const sides = toSides(geometry)\n let result = 'geom2 (' + sides.length + ' sides):\\n[\\n'\n sides.forEach((side) => {\n result += ' [' + vec2.toString(side[0]) + ', ' + vec2.toString(side[1]) + ']\\n'\n })\n result += ']\\n'\n return result\n}\n\nmodule.exports = toString\n","const mat4 = require('../../maths/mat4')\n\n/**\n * Transform the given geometry using the given matrix.\n * This is a lazy transform of the sides, as this function only adjusts the transforms.\n * The transforms are applied when accessing the sides via toSides().\n * @param {mat4} matrix - the matrix to transform with\n * @param {geom2} geometry - the geometry to transform\n * @returns {geom2} a new geometry\n * @alias module:modeling/geometries/geom2.transform\n *\n * @example\n * let newgeometry = transform(fromZRotation(degToRad(90)), geometry)\n */\nconst transform = (matrix, geometry) => {\n const transforms = mat4.multiply(mat4.create(), matrix, geometry.transforms)\n return Object.assign({}, geometry, { transforms })\n}\n\nmodule.exports = transform\n","const vec2 = require('../../maths/vec2')\nconst isA = require('./isA')\nconst toOutlines = require('./toOutlines')\n\n/**\n * Determine if the given object is a valid geom2.\n * Checks for closedness, self-edges, and valid data points.\n *\n * **If the geometry is not valid, an exception will be thrown with details of the geometry error.**\n *\n * @param {Object} object - the object to interrogate\n * @throws {Error} error if the geometry is not valid\n * @alias module:modeling/geometries/geom2.validate\n */\nconst validate = (object) => {\n if (!isA(object)) {\n throw new Error('invalid geom2 structure')\n }\n\n // check for closedness\n toOutlines(object)\n\n // check for self-edges\n object.sides.forEach((side) => {\n if (vec2.equals(side[0], side[1])) {\n throw new Error(`geom2 self-edge ${side[0]}`)\n }\n })\n\n // check transforms\n if (!object.transforms.every(Number.isFinite)) {\n throw new Error(`geom2 invalid transforms ${object.transforms}`)\n }\n}\n\nmodule.exports = validate\n","const mat4 = require('../../maths/mat4')\n\nconst poly3 = require('../poly3')\n\n/*\n * Apply the transforms of the given geometry.\n * NOTE: This function must be called BEFORE exposing any data. See toPolygons.\n * @param {geom3} geometry - the geometry to transform\n * @returns {geom3} the given geometry\n * @example\n * geometry = applyTransforms(geometry)\n */\nconst applyTransforms = (geometry) => {\n if (mat4.isIdentity(geometry.transforms)) return geometry\n\n // apply transforms to each polygon\n geometry.polygons = geometry.polygons.map((polygon) => poly3.transform(geometry.transforms, polygon))\n // reset transforms\n geometry.transforms = mat4.create()\n return geometry\n}\n\nmodule.exports = applyTransforms\n","/**\n * Performs a shallow clone of the given geometry.\n * @param {geom3} geometry - the geometry to clone\n * @returns {geom3} a new geometry\n * @alias module:modeling/geometries/geom3.clone\n */\nconst clone = (geometry) => Object.assign({}, geometry)\n\nmodule.exports = clone\n","const mat4 = require('../../maths/mat4')\n\n/**\n * Represents a 3D geometry consisting of a list of polygons.\n * @typedef {Object} geom3\n * @property {Array} polygons - list of polygons, each polygon containing three or more points\n * @property {mat4} transforms - transforms to apply to the polygons, see transform()\n */\n\n/**\n * Create a new 3D geometry composed of the given polygons.\n * @param {Array} [polygons] - list of polygons, or undefined\n * @returns {geom3} a new geometry\n * @alias module:modeling/geometries/geom3.create\n */\nconst create = (polygons) => {\n if (polygons === undefined) {\n polygons = [] // empty contents\n }\n return {\n polygons,\n transforms: mat4.create()\n }\n}\n\nmodule.exports = create\n","const vec3 = require('../../maths/vec3')\nconst mat4 = require('../../maths/mat4')\n\nconst poly3 = require('../poly3')\n\nconst create = require('./create')\n\n/**\n * Construct a new 3D geometry from the given compact binary data.\n * @param {TypedArray} data - compact binary data\n * @returns {geom3} a new geometry\n * @alias module:modeling/geometries/geom3.fromCompactBinary\n */\nconst fromCompactBinary = (data) => {\n if (data[0] !== 1) throw new Error('invalid compact binary data')\n\n const created = create()\n\n created.transforms = mat4.clone(data.slice(1, 17))\n\n const numberOfVertices = data[21]\n let ci = 22\n let vi = data.length - (numberOfVertices * 3)\n while (vi < data.length) {\n const verticesPerPolygon = data[ci]\n ci++\n\n const vertices = []\n for (let i = 0; i < verticesPerPolygon; i++) {\n vertices.push(vec3.fromValues(data[vi], data[vi + 1], data[vi + 2]))\n vi += 3\n }\n created.polygons.push(poly3.create(vertices))\n }\n\n // transfer known properties, i.e. color\n if (data[17] >= 0) {\n created.color = [data[17], data[18], data[19], data[20]]\n }\n // TODO: how about custom properties or fields ?\n return created\n}\n\nmodule.exports = fromCompactBinary\n","const poly3 = require('../poly3')\n\nconst create = require('./create')\n\n/**\n * Construct a new 3D geometry from a list of points.\n * The list of points should contain sub-arrays, each defining a single polygon of points.\n * In addition, the points should follow the right-hand rule for rotation in order to\n * define an external facing polygon.\n * @param {Array} listofpoints - list of lists, where each list is a set of points to construct a polygon\n * @returns {geom3} a new geometry\n * @alias module:modeling/geometries/geom3.fromPoints\n */\nconst fromPoints = (listofpoints) => {\n if (!Array.isArray(listofpoints)) {\n throw new Error('the given points must be an array')\n }\n\n const polygons = listofpoints.map((points, index) => {\n // TODO catch the error, and rethrow with index\n const polygon = poly3.create(points)\n return polygon\n })\n const result = create(polygons)\n return result\n}\n\nmodule.exports = fromPoints\n","/**\n * Represents a 3D geometry consisting of a list of polygons.\n * @see {@link geom3} for data structure information.\n * @module modeling/geometries/geom3\n *\n * @example\n * colorize([0,0.5,1,0.6], cube()) // transparent ice cube\n *\n * @example\n * {\n * \"polygons\": [\n * {\"vertices\": [[-1,-1,-1], [-1,-1,1], [-1,1,1], [-1,1,-1]]},\n * {\"vertices\": [[1,-1,-1], [1,1,-1], [1,1,1], [1,-1,1]]},\n * {\"vertices\": [[-1,-1,-1], [1,-1,-1], [1,-1,1], [-1,-1,1]]},\n * {\"vertices\": [[-1,1,-1], [-1,1,1], [1,1,1], [1,1,-1]]},\n * {\"vertices\": [[-1,-1,-1], [-1,1,-1], [1,1,-1], [1,-1,-1]]},\n * {\"vertices\": [[-1,-1,1], [1,-1,1], [1,1,1], [-1,1,1]]}\n * ],\n * \"transforms\": [1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],\n * \"color\": [0,0.5,1,0.6]\n * }\n */\nmodule.exports = {\n clone: require('./clone'),\n create: require('./create'),\n fromPoints: require('./fromPoints'),\n fromCompactBinary: require('./fromCompactBinary'),\n invert: require('./invert'),\n isA: require('./isA'),\n toPoints: require('./toPoints'),\n toPolygons: require('./toPolygons'),\n toString: require('./toString'),\n toCompactBinary: require('./toCompactBinary'),\n transform: require('./transform'),\n validate: require('./validate')\n}\n","const poly3 = require('../poly3')\n\nconst create = require('./create')\nconst toPolygons = require('./toPolygons')\n\n/**\n * Invert the given geometry, transposing solid and empty space.\n * @param {geom3} geometry - the geometry to invert\n * @return {geom3} a new geometry\n * @alias module:modeling/geometries/geom3.invert\n */\nconst invert = (geometry) => {\n const polygons = toPolygons(geometry)\n const newpolygons = polygons.map((polygon) => poly3.invert(polygon))\n return create(newpolygons)\n}\n\nmodule.exports = invert\n","/**\n * Determine if the given object is a 3D geometry.\n * @param {Object} object - the object to interrogate\n * @returns {Boolean} true if the object matches a geom3\n * @alias module:modeling/geometries/geom3.isA\n */\nconst isA = (object) => {\n if (object && typeof object === 'object') {\n if ('polygons' in object && 'transforms' in object) {\n if (Array.isArray(object.polygons) && 'length' in object.transforms) {\n return true\n }\n }\n }\n return false\n}\n\nmodule.exports = isA\n","const poly3 = require('../poly3')\n\n/**\n * Return the given geometry in compact binary representation.\n * @param {geom3} geometry - the geometry\n * @return {TypedArray} compact binary representation\n * @alias module:modeling/geometries/geom3.toCompactBinary\n */\nconst toCompactBinary = (geometry) => {\n const polygons = geometry.polygons\n const transforms = geometry.transforms\n\n const numberOfPolygons = polygons.length\n const numberOfVertices = polygons.reduce((count, polygon) => count + polygon.vertices.length, 0)\n let color = [-1, -1, -1, -1]\n if (geometry.color) color = geometry.color\n\n // FIXME why Float32Array?\n const compacted = new Float32Array(1 + 16 + 4 + 1 + numberOfPolygons + (numberOfVertices * 3))\n // type + transforms + color + numberOfPolygons + numberOfVerticesPerPolygon[] + vertices data[]\n\n compacted[0] = 1 // type code: 0 => geom2, 1 => geom3 , 2 => path2\n\n compacted[1] = transforms[0]\n compacted[2] = transforms[1]\n compacted[3] = transforms[2]\n compacted[4] = transforms[3]\n compacted[5] = transforms[4]\n compacted[6] = transforms[5]\n compacted[7] = transforms[6]\n compacted[8] = transforms[7]\n compacted[9] = transforms[8]\n compacted[10] = transforms[9]\n compacted[11] = transforms[10]\n compacted[12] = transforms[11]\n compacted[13] = transforms[12]\n compacted[14] = transforms[13]\n compacted[15] = transforms[14]\n compacted[16] = transforms[15]\n\n compacted[17] = color[0]\n compacted[18] = color[1]\n compacted[19] = color[2]\n compacted[20] = color[3]\n\n compacted[21] = numberOfVertices\n\n let ci = 22\n let vi = ci + numberOfPolygons\n polygons.forEach((polygon) => {\n const points = poly3.toPoints(polygon)\n // record the number of vertices per polygon\n compacted[ci] = points.length\n ci++\n // convert the vertices\n for (let i = 0; i < points.length; i++) {\n const point = points[i]\n compacted[vi + 0] = point[0]\n compacted[vi + 1] = point[1]\n compacted[vi + 2] = point[2]\n vi += 3\n }\n })\n // TODO: how about custom properties or fields ?\n return compacted\n}\n\nmodule.exports = toCompactBinary\n","const poly3 = require('../poly3')\n\nconst toPolygons = require('./toPolygons')\n\n/**\n * Return the given geometry as a list of points, after applying transforms.\n * The returned array should not be modified as the points are shared with the geometry.\n * @param {geom3} geometry - the geometry\n * @return {Array} list of points, where each sub-array represents a polygon\n * @alias module:modeling/geometries/geom3.toPoints\n */\nconst toPoints = (geometry) => {\n const polygons = toPolygons(geometry)\n const listofpoints = polygons.map((polygon) => poly3.toPoints(polygon))\n return listofpoints\n}\n\nmodule.exports = toPoints\n","const applyTransforms = require('./applyTransforms')\n\n/**\n * Produces an array of polygons from the given geometry, after applying transforms.\n * The returned array should not be modified as the polygons are shared with the geometry.\n * @param {geom3} geometry - the geometry\n * @returns {Array} an array of polygons\n * @alias module:modeling/geometries/geom3.toPolygons\n *\n * @example\n * let sharedpolygons = toPolygons(geometry)\n */\nconst toPolygons = (geometry) => applyTransforms(geometry).polygons\n\nmodule.exports = toPolygons\n","const poly3 = require('../poly3')\n\nconst toPolygons = require('./toPolygons')\n\n/**\n * Create a string representing the contents of the given geometry.\n * @param {geom3} geometry - the geometry\n * @returns {String} a representative string\n * @alias module:modeling/geometries/geom3.toString\n *\n * @example\n * console.out(toString(geometry))\n */\nconst toString = (geometry) => {\n const polygons = toPolygons(geometry)\n let result = 'geom3 (' + polygons.length + ' polygons):\\n'\n polygons.forEach((polygon) => {\n result += ' ' + poly3.toString(polygon) + '\\n'\n })\n return result\n}\n\nmodule.exports = toString\n","const mat4 = require('../../maths/mat4')\n\n/**\n * Transform the given geometry using the given matrix.\n * This is a lazy transform of the polygons, as this function only adjusts the transforms.\n * See applyTransforms() for the actual application of the transforms to the polygons.\n * @param {mat4} matrix - the matrix to transform with\n * @param {geom3} geometry - the geometry to transform\n * @returns {geom3} a new geometry\n * @alias module:modeling/geometries/geom3.transform\n *\n * @example\n * let newgeometry = transform(fromXRotation(degToRad(90)), geometry)\n */\nconst transform = (matrix, geometry) => {\n const transforms = mat4.multiply(mat4.create(), matrix, geometry.transforms)\n return Object.assign({}, geometry, { transforms })\n}\n\nmodule.exports = transform\n","const poly3 = require('../poly3')\nconst isA = require('./isA')\n\n/**\n * Determine if the given object is a valid 3D geometry.\n * Checks for valid data structure, convex polygon faces, and manifold edges.\n *\n * **If the geometry is not valid, an exception will be thrown with details of the geometry error.**\n *\n * @param {Object} object - the object to interrogate\n * @throws {Error} error if the geometry is not valid\n * @alias module:modeling/geometries/geom3.validate\n */\nconst validate = (object) => {\n if (!isA(object)) {\n throw new Error('invalid geom3 structure')\n }\n\n // check polygons\n object.polygons.forEach(poly3.validate)\n validateManifold(object)\n\n // check transforms\n if (!object.transforms.every(Number.isFinite)) {\n throw new Error(`geom3 invalid transforms ${object.transforms}`)\n }\n\n // TODO: check for self-intersecting\n}\n\n/*\n * Check manifold edge condition: Every edge is in exactly 2 faces\n */\nconst validateManifold = (object) => {\n // count of each edge\n const edgeCount = new Map()\n object.polygons.forEach(({ vertices }) => {\n vertices.forEach((v, i) => {\n const v1 = `${v}`\n const v2 = `${vertices[(i + 1) % vertices.length]}`\n // sort for undirected edge\n const edge = `${v1}/${v2}`\n const count = edgeCount.has(edge) ? edgeCount.get(edge) : 0\n edgeCount.set(edge, count + 1)\n })\n })\n\n // check that edges are always matched\n const nonManifold = []\n edgeCount.forEach((count, edge) => {\n const complementEdge = edge.split('/').reverse().join('/')\n const complementCount = edgeCount.get(complementEdge)\n if (count !== complementCount) {\n nonManifold.push(edge.replace('/', ' -> '))\n }\n })\n if (nonManifold.length > 0) {\n throw new Error(`non-manifold edges ${nonManifold.length}\\n${nonManifold.join('\\n')}`)\n }\n}\n\nmodule.exports = validate\n","/**\n * Geometries are objects that represent the contents of primitives or the results of operations.\n * Note: Geometries are considered immutable, so never change the contents directly.\n *\n * @see {@link geom2} - 2D geometry consisting of sides\n * @see {@link geom3} - 3D geometry consisting of polygons\n * @see {@link path2} - 2D geometry consisting of ordered points\n * @see {@link poly2} - 2D polygon consisting of ordered vertices\n * @see {@link poly3} - 3D polygon consisting of ordered vertices\n *\n * @module modeling/geometries\n * @example\n * const { geom2, geom3, path2, poly2, poly3 } = require('@jscad/modeling').geometries\n */\nmodule.exports = {\n geom2: require('./geom2'),\n geom3: require('./geom3'),\n path2: require('./path2'),\n poly2: require('./poly2'),\n poly3: require('./poly3')\n}\n","const { TAU } = require('../../maths/constants')\nconst vec2 = require('../../maths/vec2')\n\nconst fromPoints = require('./fromPoints')\nconst toPoints = require('./toPoints')\n\n/**\n * Append a series of points to the given geometry that represent an arc.\n * This implementation follows the SVG specifications.\n * @see http://www.w3.org/TR/SVG/paths.html#PathDataEllipticalArcCommands\n * @param {Object} options - options for construction\n * @param {vec2} options.endpoint - end point of arc (REQUIRED)\n * @param {vec2} [options.radius=[0,0]] - radius of arc (X and Y)\n * @param {Number} [options.xaxisrotation=0] - rotation (RADIANS) of the X axis of the arc with respect to the X axis of the coordinate system\n * @param {Boolean} [options.clockwise=false] - draw an arc clockwise with respect to the center point\n * @param {Boolean} [options.large=false] - draw an arc longer than TAU / 2 radians\n * @param {Number} [options.segments=16] - number of segments per full rotation\n * @param {path2} geometry - the path of which to append the arc\n * @returns {path2} a new path with the appended points\n * @alias module:modeling/geometries/path2.appendArc\n *\n * @example\n * let p1 = path2.fromPoints({}, [[27.5,-22.96875]]);\n * p1 = path2.appendPoints([[27.5,-3.28125]], p1);\n * p1 = path2.appendArc({endpoint: [12.5, -22.96875], radius: [15, -19.6875]}, p1);\n */\nconst appendArc = (options, geometry) => {\n const defaults = {\n radius: [0, 0], // X and Y radius\n xaxisrotation: 0,\n clockwise: false,\n large: false,\n segments: 16\n }\n let { endpoint, radius, xaxisrotation, clockwise, large, segments } = Object.assign({}, defaults, options)\n\n // validate the given options\n if (!Array.isArray(endpoint)) throw new Error('endpoint must be an array of X and Y values')\n if (endpoint.length < 2) throw new Error('endpoint must contain X and Y values')\n endpoint = vec2.clone(endpoint)\n\n if (!Array.isArray(radius)) throw new Error('radius must be an array of X and Y values')\n if (radius.length < 2) throw new Error('radius must contain X and Y values')\n\n if (segments < 4) throw new Error('segments must be four or more')\n\n const decimals = 100000\n\n // validate the given geometry\n if (geometry.isClosed) {\n throw new Error('the given path cannot be closed')\n }\n\n const points = toPoints(geometry)\n if (points.length < 1) {\n throw new Error('the given path must contain one or more points (as the starting point for the arc)')\n }\n\n let xradius = radius[0]\n let yradius = radius[1]\n const startpoint = points[points.length - 1]\n\n // round to precision in order to have determinate calculations\n xradius = Math.round(xradius * decimals) / decimals\n yradius = Math.round(yradius * decimals) / decimals\n endpoint = vec2.fromValues(Math.round(endpoint[0] * decimals) / decimals, Math.round(endpoint[1] * decimals) / decimals)\n\n const sweepFlag = !clockwise\n let newpoints = []\n if ((xradius === 0) || (yradius === 0)) {\n // http://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes:\n // If rx = 0 or ry = 0, then treat this as a straight line from (x1, y1) to (x2, y2) and stop\n newpoints.push(endpoint)\n } else {\n xradius = Math.abs(xradius)\n yradius = Math.abs(yradius)\n\n // see http://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes :\n const phi = xaxisrotation\n const cosphi = Math.cos(phi)\n const sinphi = Math.sin(phi)\n const minushalfdistance = vec2.subtract(vec2.create(), startpoint, endpoint)\n vec2.scale(minushalfdistance, minushalfdistance, 0.5)\n // F.6.5.1:\n // round to precision in order to have determinate calculations\n const x = Math.round((cosphi * minushalfdistance[0] + sinphi * minushalfdistance[1]) * decimals) / decimals\n const y = Math.round((-sinphi * minushalfdistance[0] + cosphi * minushalfdistance[1]) * decimals) / decimals\n const startTranslated = vec2.fromValues(x, y)\n // F.6.6.2:\n const biglambda = (startTranslated[0] * startTranslated[0]) / (xradius * xradius) + (startTranslated[1] * startTranslated[1]) / (yradius * yradius)\n if (biglambda > 1.0) {\n // F.6.6.3:\n const sqrtbiglambda = Math.sqrt(biglambda)\n xradius *= sqrtbiglambda\n yradius *= sqrtbiglambda\n // round to precision in order to have determinate calculations\n xradius = Math.round(xradius * decimals) / decimals\n yradius = Math.round(yradius * decimals) / decimals\n }\n // F.6.5.2:\n let multiplier1 = Math.sqrt((xradius * xradius * yradius * yradius - xradius * xradius * startTranslated[1] * startTranslated[1] - yradius * yradius * startTranslated[0] * startTranslated[0]) / (xradius * xradius * startTranslated[1] * startTranslated[1] + yradius * yradius * startTranslated[0] * startTranslated[0]))\n if (sweepFlag === large) multiplier1 = -multiplier1\n const centerTranslated = vec2.fromValues(xradius * startTranslated[1] / yradius, -yradius * startTranslated[0] / xradius)\n vec2.scale(centerTranslated, centerTranslated, multiplier1)\n // F.6.5.3:\n let center = vec2.fromValues(cosphi * centerTranslated[0] - sinphi * centerTranslated[1], sinphi * centerTranslated[0] + cosphi * centerTranslated[1])\n center = vec2.add(center, center, vec2.scale(vec2.create(), vec2.add(vec2.create(), startpoint, endpoint), 0.5))\n\n // F.6.5.5:\n const vector1 = vec2.fromValues((startTranslated[0] - centerTranslated[0]) / xradius, (startTranslated[1] - centerTranslated[1]) / yradius)\n const vector2 = vec2.fromValues((-startTranslated[0] - centerTranslated[0]) / xradius, (-startTranslated[1] - centerTranslated[1]) / yradius)\n const theta1 = vec2.angleRadians(vector1)\n const theta2 = vec2.angleRadians(vector2)\n let deltatheta = theta2 - theta1\n deltatheta = deltatheta % TAU\n if ((!sweepFlag) && (deltatheta > 0)) {\n deltatheta -= TAU\n } else if ((sweepFlag) && (deltatheta < 0)) {\n deltatheta += TAU\n }\n\n // Ok, we have the center point and angle range (from theta1, deltatheta radians) so we can create the ellipse\n let numsteps = Math.ceil(Math.abs(deltatheta) / TAU * segments) + 1\n if (numsteps < 1) numsteps = 1\n for (let step = 1; step < numsteps; step++) {\n const theta = theta1 + step / numsteps * deltatheta\n const costheta = Math.cos(theta)\n const sintheta = Math.sin(theta)\n // F.6.3.1:\n const point = vec2.fromValues(cosphi * xradius * costheta - sinphi * yradius * sintheta, sinphi * xradius * costheta + cosphi * yradius * sintheta)\n vec2.add(point, point, center)\n newpoints.push(point)\n }\n // ensure end point is precisely what user gave as parameter\n if (numsteps) newpoints.push(options.endpoint)\n }\n newpoints = points.concat(newpoints)\n const result = fromPoints({}, newpoints)\n return result\n}\n\nmodule.exports = appendArc\n","const { TAU } = require('../../maths/constants')\nconst vec2 = require('../../maths/vec2')\nconst vec3 = require('../../maths/vec2')\n\nconst appendPoints = require('./appendPoints')\nconst toPoints = require('./toPoints')\n\n/**\n * Append a series of points to the given geometry that represent a Bezier curve.\n * The Bézier curve starts at the last point in the given geometry, and ends at the last control point.\n * The other control points are intermediate control points to transition the curve from start to end points.\n * The first control point may be null to ensure a smooth transition occurs. In this case,\n * the second to last point of the given geometry is mirrored into the control points of the Bezier curve.\n * In other words, the trailing gradient of the geometry matches the new gradient of the curve.\n * @param {Object} options - options for construction\n * @param {Array} options.controlPoints - list of control points (2D) for the bezier curve\n * @param {Number} [options.segment=16] - number of segments per 360 rotation\n * @param {path2} geometry - the path of which to appended points\n * @returns {path2} a new path with the appended points\n * @alias module:modeling/geometries/path2.appendBezier\n *\n * @example\n * let p5 = path2.create({}, [[10,-20]])\n * p5 = path2.appendBezier({controlPoints: [[10,-10],[25,-10],[25,-20]]}, p5);\n * p5 = path2.appendBezier({controlPoints: [null, [25,-30],[40,-30],[40,-20]]}, p5)\n */\nconst appendBezier = (options, geometry) => {\n const defaults = {\n segments: 16\n }\n let { controlPoints, segments } = Object.assign({}, defaults, options)\n\n // validate the given options\n if (!Array.isArray(controlPoints)) throw new Error('controlPoints must be an array of one or more points')\n if (controlPoints.length < 1) throw new Error('controlPoints must be an array of one or more points')\n\n if (segments < 4) throw new Error('segments must be four or more')\n\n // validate the given geometry\n if (geometry.isClosed) {\n throw new Error('the given geometry cannot be closed')\n }\n\n const points = toPoints(geometry)\n if (points.length < 1) {\n throw new Error('the given path must contain one or more points (as the starting point for the bezier curve)')\n }\n\n // make a copy of the control points\n controlPoints = controlPoints.slice()\n\n // special handling of null control point (only first is allowed)\n const firstControlPoint = controlPoints[0]\n if (firstControlPoint === null) {\n if (controlPoints.length < 2) {\n throw new Error('a null control point must be passed with one more control points')\n }\n // special handling of a previous bezier curve\n let lastBezierControlPoint = points[points.length - 2]\n if ('lastBezierControlPoint' in geometry) {\n lastBezierControlPoint = geometry.lastBezierControlPoint\n }\n if (!Array.isArray(lastBezierControlPoint)) {\n throw new Error('the given path must contain TWO or more points if given a null control point')\n }\n // replace the first control point with the mirror of the last bezier control point\n const controlpoint = vec2.scale(vec2.create(), points[points.length - 1], 2)\n vec2.subtract(controlpoint, controlpoint, lastBezierControlPoint)\n\n controlPoints[0] = controlpoint\n }\n\n // add a control point for the previous end point\n controlPoints.unshift(points[points.length - 1])\n\n const bezierOrder = controlPoints.length - 1\n const factorials = []\n let fact = 1\n for (let i = 0; i <= bezierOrder; ++i) {\n if (i > 0) fact *= i\n factorials.push(fact)\n }\n\n const binomials = []\n for (let i = 0; i <= bezierOrder; ++i) {\n const binomial = factorials[bezierOrder] / (factorials[i] * factorials[bezierOrder - i])\n binomials.push(binomial)\n }\n\n const v0 = vec2.create()\n const v1 = vec2.create()\n const v3 = vec3.create()\n const getPointForT = (t) => {\n let tk = 1 // = pow(t,k)\n let oneMinusTNMinusK = Math.pow(1 - t, bezierOrder) // = pow( 1-t, bezierOrder - k)\n const invOneMinusT = (t !== 1) ? (1 / (1 - t)) : 1\n const point = vec2.create() // 0, 0, 0\n for (let k = 0; k <= bezierOrder; ++k) {\n if (k === bezierOrder) oneMinusTNMinusK = 1\n const bernsteinCoefficient = binomials[k] * tk * oneMinusTNMinusK\n const derivativePoint = vec2.scale(v0, controlPoints[k], bernsteinCoefficient)\n vec2.add(point, point, derivativePoint)\n tk *= t\n oneMinusTNMinusK *= invOneMinusT\n }\n return point\n }\n\n const newpoints = []\n const newpointsT = []\n const numsteps = bezierOrder + 1\n for (let i = 0; i < numsteps; ++i) {\n const t = i / (numsteps - 1)\n const point = getPointForT(t)\n newpoints.push(point)\n newpointsT.push(t)\n }\n\n // subdivide each segment until the angle at each vertex becomes small enough:\n let subdivideBase = 1\n const maxangle = TAU / segments\n const maxsinangle = Math.sin(maxangle)\n while (subdivideBase < newpoints.length - 1) {\n const dir1 = vec2.subtract(v0, newpoints[subdivideBase], newpoints[subdivideBase - 1])\n vec2.normalize(dir1, dir1)\n const dir2 = vec2.subtract(v1, newpoints[subdivideBase + 1], newpoints[subdivideBase])\n vec2.normalize(dir2, dir2)\n const sinangle = vec2.cross(v3, dir1, dir2) // the sine of the angle\n if (Math.abs(sinangle[2]) > maxsinangle) {\n // angle is too big, we need to subdivide\n const t0 = newpointsT[subdivideBase - 1]\n const t1 = newpointsT[subdivideBase + 1]\n const newt0 = t0 + (t1 - t0) * 1 / 3\n const newt1 = t0 + (t1 - t0) * 2 / 3\n const point0 = getPointForT(newt0)\n const point1 = getPointForT(newt1)\n // remove the point at subdivideBase and replace with 2 new points:\n newpoints.splice(subdivideBase, 1, point0, point1)\n newpointsT.splice(subdivideBase, 1, newt0, newt1)\n // re - evaluate the angles, starting at the previous junction since it has changed:\n subdivideBase--\n if (subdivideBase < 1) subdivideBase = 1\n } else {\n ++subdivideBase\n }\n }\n\n // append to the new points to the given path\n // but skip the first new point because it is identical to the last point in the given path\n newpoints.shift()\n const result = appendPoints(newpoints, geometry)\n result.lastBezierControlPoint = controlPoints[controlPoints.length - 2]\n return result\n}\n\nmodule.exports = appendBezier\n","const concat = require('./concat')\nconst create = require('./create')\n\n/**\n * Append the given list of points to the end of the given geometry.\n * @param {Array} points - the points (2D) to append to the given path\n * @param {path2} geometry - the given path\n * @returns {path2} a new path with the appended points\n * @alias module:modeling/geometries/path2.appendPoints\n * @example\n * let newpath = appendPoints([[3, 4], [4, 5]], oldpath)\n */\nconst appendPoints = (points, geometry) => concat(geometry, create(points))\n\nmodule.exports = appendPoints\n","const mat4 = require('../../maths/mat4')\nconst vec2 = require('../../maths/vec2')\n\n/*\n * Apply the transforms of the given geometry.\n * NOTE: This function must be called BEFORE exposing any data. See toPoints.\n * @param {path} geometry - the geometry to transform\n * @returns {path} the given geometry\n * @example\n * geometry = applyTransforms(geometry)\n */\nconst applyTransforms = (geometry) => {\n if (mat4.isIdentity(geometry.transforms)) return geometry\n\n geometry.points = geometry.points.map((point) => vec2.transform(vec2.create(), point, geometry.transforms))\n geometry.transforms = mat4.create()\n return geometry\n}\n\nmodule.exports = applyTransforms\n","/**\n * Performs a shallow clone of the give geometry.\n * @param {path2} geometry - the geometry to clone\n * @returns {path2} a new path\n * @alias module:modeling/geometries/path2.clone\n */\nconst clone = (geometry) => Object.assign({}, geometry)\n\nmodule.exports = clone\n","const { EPS } = require('../../maths/constants')\n\nconst vec2 = require('../../maths/vec2')\n\nconst clone = require('./clone')\n\n/**\n * Close the given geometry.\n * @param {path2} geometry - the path to close\n * @returns {path2} a new path\n * @alias module:modeling/geometries/path2.close\n */\nconst close = (geometry) => {\n if (geometry.isClosed) return geometry\n\n const cloned = clone(geometry)\n cloned.isClosed = true\n\n if (cloned.points.length > 1) {\n // make sure the paths are formed properly\n const points = cloned.points\n const p0 = points[0]\n let pn = points[points.length - 1]\n while (vec2.distance(p0, pn) < (EPS * EPS)) {\n points.pop()\n if (points.length === 1) break\n pn = points[points.length - 1]\n }\n }\n return cloned\n}\n\nmodule.exports = close\n","const fromPoints = require('./fromPoints')\nconst toPoints = require('./toPoints')\n\nconst { equals } = require('../../maths/vec2')\n\n/**\n * Concatenate the given paths.\n *\n * If both contain the same point at the junction, merge it into one.\n * A concatenation of zero paths is an empty, open path.\n * A concatenation of one closed path to a series of open paths produces a closed path.\n * A concatenation of a path to a closed path is an error.\n * @param {...path2} paths - the paths to concatenate\n * @returns {path2} a new path\n * @alias module:modeling/geometries/path2.concat\n *\n * @example\n * let newpath = concat(fromPoints({}, [[1, 2]]), fromPoints({}, [[3, 4]]))\n */\nconst concat = (...paths) => {\n // Only the last path can be closed, producing a closed path.\n let isClosed = false\n let newpoints = []\n paths.forEach((path, i) => {\n const tmp = toPoints(path).slice()\n if (newpoints.length > 0 && tmp.length > 0 && equals(tmp[0], newpoints[newpoints.length - 1])) tmp.shift()\n if (tmp.length > 0 && isClosed) {\n throw new Error(`Cannot concatenate to a closed path; check the ${i}th path`)\n }\n isClosed = path.isClosed\n newpoints = newpoints.concat(tmp)\n })\n return fromPoints({ closed: isClosed }, newpoints)\n}\n\nmodule.exports = concat\n","const mat4 = require('../../maths/mat4')\n\n/**\n * Represents a 2D geometry consisting of a list of ordered points.\n * @typedef {Object} path2\n * @property {Array} points - list of ordered points\n * @property {Boolean} isClosed - true if the path is closed where start and end points are the same\n * @property {mat4} transforms - transforms to apply to the points, see transform()\n */\n\n/**\n * Create an empty, open path.\n * @returns {path2} a new path\n * @alias module:modeling/geometries/path2.create\n *\n * @example\n * let newpath = create()\n */\nconst create = (points) => {\n if (points === undefined) {\n points = []\n }\n return {\n points: points,\n isClosed: false,\n transforms: mat4.create()\n }\n}\n\nmodule.exports = create\n","const vec2 = require('../../maths/vec2')\n\nconst toPoints = require('./toPoints')\n\n/**\n * Determine if the given paths are equal.\n * For closed paths, this includes equality under point order rotation.\n * @param {path2} a - the first path to compare\n * @param {path2} b - the second path to compare\n * @returns {Boolean}\n * @alias module:modeling/geometries/path2.equals\n */\nconst equals = (a, b) => {\n if (a.isClosed !== b.isClosed) {\n return false\n }\n if (a.points.length !== b.points.length) {\n return false\n }\n\n const apoints = toPoints(a)\n const bpoints = toPoints(b)\n\n // closed paths might be equal under graph rotation\n // so try comparison by rotating across all points\n const length = apoints.length\n let offset = 0\n do {\n let unequal = false\n for (let i = 0; i < length; i++) {\n if (!vec2.equals(apoints[i], bpoints[(i + offset) % length])) {\n unequal = true\n break\n }\n }\n if (unequal === false) {\n return true\n }\n // unequal open paths should only be compared once, never rotated\n if (!a.isClosed) {\n return false\n }\n } while (++offset < length)\n return false\n}\n\nmodule.exports = equals\n","const mat4 = require('../../maths/mat4')\nconst vec2 = require('../../maths/vec2')\n\nconst create = require('./create')\n\n/**\n * Create a new path from the given compact binary data.\n * @param {TypedArray} data - compact binary data\n * @returns {path2} a new path\n * @alias module:modeling/geometries/path2.fromCompactBinary\n */\nconst fromCompactBinary = (data) => {\n if (data[0] !== 2) throw new Error('invalid compact binary data')\n\n const created = create()\n\n created.transforms = mat4.clone(data.slice(1, 17))\n\n created.isClosed = !!data[17]\n\n for (let i = 22; i < data.length; i += 2) {\n const point = vec2.fromValues(data[i], data[i + 1])\n created.points.push(point)\n }\n // transfer known properties, i.e. color\n if (data[18] >= 0) {\n created.color = [data[18], data[19], data[20], data[21]]\n }\n // TODO: how about custom properties or fields ?\n return created\n}\n\nmodule.exports = fromCompactBinary\n","const { EPS } = require('../../maths/constants')\n\nconst vec2 = require('../../maths/vec2')\n\nconst close = require('./close')\nconst create = require('./create')\n\n/**\n * Create a new path from the given points.\n * The points must be provided an array of points,\n * where each point is an array of two numbers.\n * @param {Object} options - options for construction\n * @param {Boolean} [options.closed=false] - if the path should be open or closed\n * @param {Array} points - array of points (2D) from which to create the path\n * @returns {path2} a new path\n * @alias module:modeling/geometries/path2.fromPoints\n *\n * @example:\n * my newpath = fromPoints({closed: true}, [[10, 10], [-10, 10]])\n */\nconst fromPoints = (options, points) => {\n const defaults = { closed: false }\n let { closed } = Object.assign({}, defaults, options)\n\n let created = create()\n created.points = points.map((point) => vec2.clone(point))\n\n // check if first and last points are equal\n if (created.points.length > 1) {\n const p0 = created.points[0]\n const pn = created.points[created.points.length - 1]\n if (vec2.distance(p0, pn) < (EPS * EPS)) {\n // and close automatically\n closed = true\n }\n }\n if (closed === true) created = close(created)\n\n return created\n}\n\nmodule.exports = fromPoints\n","/**\n * Represents a 2D geometry consisting of a list of ordered points.\n * @see {@link path2} for data structure information.\n * @module modeling/geometries/path2\n *\n * @example\n * colorize([0,0,0,1], path2.fromPoints({ closed: true }, [[0,0], [4,0], [4,3]]))\n *\n * @example\n * {\n * \"points\": [[0,0], [4,0], [4,3]],\n * \"isClosed\": true,\n * \"transforms\": [1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],\n * \"color\": [0,0,0,1]\n * }\n */\nmodule.exports = {\n appendArc: require('./appendArc'),\n appendBezier: require('./appendBezier'),\n appendPoints: require('./appendPoints'),\n clone: require('./clone'),\n close: require('./close'),\n concat: require('./concat'),\n create: require('./create'),\n equals: require('./equals'),\n fromPoints: require('./fromPoints'),\n fromCompactBinary: require('./fromCompactBinary'),\n isA: require('./isA'),\n reverse: require('./reverse'),\n toPoints: require('./toPoints'),\n toString: require('./toString'),\n toCompactBinary: require('./toCompactBinary'),\n transform: require('./transform'),\n validate: require('./validate')\n}\n","/**\n * Determine if the given object is a path2 geometry.\n * @param {Object} object - the object to interrogate\n * @returns {Boolean} true if the object matches a path2\n * @alias module:modeling/geometries/path2.isA\n */\nconst isA = (object) => {\n if (object && typeof object === 'object') {\n // see create for the required attributes and types\n if ('points' in object && 'transforms' in object && 'isClosed' in object) {\n // NOTE: transforms should be a TypedArray, which has a read-only length\n if (Array.isArray(object.points) && 'length' in object.transforms) {\n return true\n }\n }\n }\n return false\n}\n\nmodule.exports = isA\n","const clone = require('./clone')\n\n/**\n * Reverses the path so that the points are in the opposite order.\n * This swaps the left (interior) and right (exterior) edges.\n * @param {path2} geometry - the path to reverse\n * @returns {path2} a new path\n * @alias module:modeling/geometries/path2.reverse\n *\n * @example\n * let newpath = reverse(mypath)\n */\nconst reverse = (geometry) => {\n // NOTE: this only updates the order of the points\n const cloned = clone(geometry)\n cloned.points = geometry.points.slice().reverse()\n return cloned\n}\n\nmodule.exports = reverse\n","/**\n * Produce a compact binary representation from the given path.\n * @param {path2} geometry - the path geometry\n * @returns {TypedArray} compact binary representation\n * @alias module:modeling/geometries/path2.toCompactBinary\n */\nconst toCompactBinary = (geometry) => {\n const points = geometry.points\n const transforms = geometry.transforms\n let color = [-1, -1, -1, -1]\n if (geometry.color) color = geometry.color\n\n // FIXME why Float32Array?\n const compacted = new Float32Array(1 + 16 + 1 + 4 + (points.length * 2)) // type + transforms + isClosed + color + points data\n\n compacted[0] = 2 // type code: 0 => geom2, 1 => geom3 , 2 => path2\n\n compacted[1] = transforms[0]\n compacted[2] = transforms[1]\n compacted[3] = transforms[2]\n compacted[4] = transforms[3]\n compacted[5] = transforms[4]\n compacted[6] = transforms[5]\n compacted[7] = transforms[6]\n compacted[8] = transforms[7]\n compacted[9] = transforms[8]\n compacted[10] = transforms[9]\n compacted[11] = transforms[10]\n compacted[12] = transforms[11]\n compacted[13] = transforms[12]\n compacted[14] = transforms[13]\n compacted[15] = transforms[14]\n compacted[16] = transforms[15]\n\n compacted[17] = geometry.isClosed ? 1 : 0\n\n compacted[18] = color[0]\n compacted[19] = color[1]\n compacted[20] = color[2]\n compacted[21] = color[3]\n\n for (let j = 0; j < points.length; j++) {\n const ci = j * 2 + 22\n const point = points[j]\n compacted[ci] = point[0]\n compacted[ci + 1] = point[1]\n }\n // TODO: how about custom properties or fields ?\n return compacted\n}\n\nmodule.exports = toCompactBinary\n","const applyTransforms = require('./applyTransforms')\n\n/**\n * Produces an array of points from the given geometry.\n * The returned array should not be modified as the data is shared with the geometry.\n * @param {path2} geometry - the geometry\n * @returns {Array} an array of points\n * @alias module:modeling/geometries/path2.toPoints\n *\n * @example\n * let sharedpoints = toPoints(geometry)\n */\nconst toPoints = (geometry) => applyTransforms(geometry).points\n\nmodule.exports = toPoints\n","const vec2 = require('../../maths/vec2')\n\nconst toPoints = require('./toPoints')\n\n/**\n * Create a string representing the contents of the given path.\n * @param {path2} geometry - the path\n * @returns {String} a representative string\n * @alias module:modeling/geometries/path2.toString\n *\n * @example\n * console.out(toString(path))\n */\nconst toString = (geometry) => {\n const points = toPoints(geometry)\n let result = 'path (' + points.length + ' points, ' + geometry.isClosed + '):\\n[\\n'\n points.forEach((point) => {\n result += ' ' + vec2.toString(point) + ',\\n'\n })\n result += ']\\n'\n return result\n}\n\nmodule.exports = toString\n","const mat4 = require('../../maths/mat4')\n\n/**\n * Transform the given geometry using the given matrix.\n * This is a lazy transform of the points, as this function only adjusts the transforms.\n * The transforms are applied when accessing the points via toPoints().\n * @param {mat4} matrix - the matrix to transform with\n * @param {path2} geometry - the geometry to transform\n * @returns {path2} a new path\n * @alias module:modeling/geometries/path2.transform\n *\n * @example\n * let newpath = transform(fromZRotation(TAU / 8), path)\n */\nconst transform = (matrix, geometry) => {\n const transforms = mat4.multiply(mat4.create(), matrix, geometry.transforms)\n return Object.assign({}, geometry, { transforms })\n}\n\nmodule.exports = transform\n","const vec2 = require('../../maths/vec2')\nconst isA = require('./isA')\n\n/**\n * Determine if the given object is a valid path2.\n * Checks for valid data points, and duplicate points.\n *\n * **If the geometry is not valid, an exception will be thrown with details of the geometry error.**\n *\n * @param {Object} object - the object to interrogate\n * @throws {Error} error if the geometry is not valid\n * @alias module:modeling/geometries/path2.validate\n */\nconst validate = (object) => {\n if (!isA(object)) {\n throw new Error('invalid path2 structure')\n }\n\n // check for duplicate points\n if (object.points.length > 1) {\n for (let i = 0; i < object.points.length; i++) {\n if (vec2.equals(object.points[i], object.points[(i + 1) % object.points.length])) {\n throw new Error(`path2 duplicate points ${object.points[i]}`)\n }\n }\n }\n\n // check for infinity, nan\n object.points.forEach((point) => {\n if (!point.every(Number.isFinite)) {\n throw new Error(`path2 invalid point ${point}`)\n }\n })\n\n // check transforms\n if (!object.transforms.every(Number.isFinite)) {\n throw new Error(`path2 invalid transforms ${object.transforms}`)\n }\n}\n\nmodule.exports = validate\n","const measureArea = require('./measureArea')\nconst flip = require('./flip')\n\n/**\n * Determine if the given points are inside the given polygon.\n *\n * @param {Array} points - a list of points, where each point is an array with X and Y values\n * @param {poly2} polygon - a 2D polygon\n * @return {Integer} 1 if all points are inside, 0 if some or none are inside\n * @alias module:modeling/geometries/poly2.arePointsInside\n */\nconst arePointsInside = (points, polygon) => {\n if (points.length === 0) return 0 // nothing to check\n\n const vertices = polygon.vertices\n if (vertices.length < 3) return 0 // nothing can be inside an empty polygon\n\n if (measureArea(polygon) < 0) {\n polygon = flip(polygon) // CCW is required\n }\n\n const sum = points.reduce((acc, point) => acc + isPointInside(point, vertices), 0)\n return sum === points.length ? 1 : 0\n}\n\n/*\n * Determine if the given point is inside the polygon.\n *\n * @see http://erich.realtimerendering.com/ptinpoly/ (Crossings Test)\n * @param {Array} point - an array with X and Y values\n * @param {Array} polygon - a list of points, where each point is an array with X and Y values\n * @return {Integer} 1 if the point is inside, 0 if outside\n */\nconst isPointInside = (point, polygon) => {\n const numverts = polygon.length\n\n const tx = point[0]\n const ty = point[1]\n\n let vtx0 = polygon[numverts - 1]\n let vtx1 = polygon[0]\n\n let yflag0 = (vtx0[1] > ty)\n\n let insideFlag = 0\n\n let i = 0\n for (let j = (numverts + 1); --j;) {\n /*\n * check if Y endpoints straddle (are on opposite sides) of point's Y\n * if so, +X ray could intersect this edge.\n */\n const yflag1 = (vtx1[1] > ty)\n if (yflag0 !== yflag1) {\n /*\n * check if X endpoints are on same side of the point's X\n * if so, it's easy to test if edge hits or misses.\n */\n const xflag0 = (vtx0[0] > tx)\n const xflag1 = (vtx1[0] > tx)\n if (xflag0 && xflag1) {\n /* if edge's X values are both right of the point, then the point must be inside */\n insideFlag = !insideFlag\n } else {\n /*\n * if X endpoints straddle the point, then\n * the compute intersection of polygon edge with +X ray\n * if intersection >= point's X then the +X ray hits it.\n */\n if ((vtx1[0] - (vtx1[1] - ty) * (vtx0[0] - vtx1[0]) / (vtx0[1] - vtx1[1])) >= tx) {\n insideFlag = !insideFlag\n }\n }\n }\n /* move to next pair of vertices, retaining info as possible */\n yflag0 = yflag1\n vtx0 = vtx1\n vtx1 = polygon[++i]\n }\n return insideFlag\n}\n\nmodule.exports = arePointsInside\n","/**\n * Represents a convex 2D polygon consisting of a list of ordered vertices.\n * @typedef {Object} poly2\n * @property {Array} vertices - list of ordered vertices (2D)\n */\n\n/**\n * Creates a new polygon with initial values.\n *\n * @param {Array} [vertices] - list of vertices (2D)\n * @returns {poly2} a new polygon\n * @alias module:modeling/geometries/poly2.create\n *\n * @example\n * let polygon = create()\n */\nconst create = (vertices) => {\n if (vertices === undefined || vertices.length < 3) {\n vertices = [] // empty contents\n }\n return { vertices: vertices }\n}\n\nmodule.exports = create\n","const create = require('./create')\n\n/**\n * Flip the give polygon, rotating the opposite direction.\n *\n * @param {poly2} polygon - the polygon to flip\n * @returns {poly2} a new polygon\n * @alias module:modeling/geometries/poly2.flip\n */\nconst flip = (polygon) => {\n const vertices = polygon.vertices.slice().reverse()\n return create(vertices)\n}\n\nmodule.exports = flip\n","/**\n * Represents a 2D polygon consisting of a list of ordered vertices.\n * @see {@link poly2} for data structure information.\n * @module modeling/geometries/poly2\n *\n * @example\n * poly2.create([[0,0], [4,0], [4,3]])\n *\n * @example\n * {\"vertices\": [[0,0], [4,0], [4,3]]}\n */\nmodule.exports = {\n arePointsInside: require('./arePointsInside'),\n create: require('./create'),\n flip: require('./flip'),\n measureArea: require('./measureArea')\n}\n","/**\n * Measure the area under the given polygon.\n *\n * @param {poly2} polygon - the polygon to measure\n * @return {Number} the area of the polygon\n * @alias module:modeling/geometries/poly2.measureArea\n */\nconst area = require('../../maths/utils/area')\n\nconst measureArea = (polygon) => area(polygon.vertices)\n\nmodule.exports = measureArea\n","const create = require('./create')\n\nconst vec3 = require('../../maths/vec3')\n\n/**\n * Create a deep clone of the given polygon\n *\n * @param {poly3} [out] - receiving polygon\n * @param {poly3} polygon - polygon to clone\n * @returns {poly3} a new polygon\n * @alias module:modeling/geometries/poly3.clone\n */\nconst clone = (...params) => {\n let out\n let poly3\n if (params.length === 1) {\n out = create()\n poly3 = params[0]\n } else {\n out = params[0]\n poly3 = params[1]\n }\n // deep clone of vertices\n out.vertices = poly3.vertices.map((vec) => vec3.clone(vec))\n return out\n}\n\nmodule.exports = clone\n","\n/**\n * Represents a convex 3D polygon. The vertices used to initialize a polygon must\n * be coplanar and form a convex shape. The vertices do not have to be `vec3`\n * instances but they must behave similarly.\n * @typedef {Object} poly3\n * @property {Array} vertices - list of ordered vertices (3D)\n */\n\n/**\n * Creates a new 3D polygon with initial values.\n *\n * @param {Array} [vertices] - a list of vertices (3D)\n * @returns {poly3} a new polygon\n * @alias module:modeling/geometries/poly3.create\n */\nconst create = (vertices) => {\n if (vertices === undefined || vertices.length < 3) {\n vertices = [] // empty contents\n }\n return { vertices }\n}\n\nmodule.exports = create\n","const vec3 = require('../../maths/vec3')\n\nconst create = require('./create')\n\n/**\n * Create a polygon from the given points.\n *\n * @param {Array} points - list of points (3D)\n * @returns {poly3} a new polygon\n * @alias module:modeling/geometries/poly3.fromPoints\n *\n * @example\n * const points = [\n * [0, 0, 0],\n * [0, 10, 0],\n * [0, 10, 10]\n * ]\n * const polygon = fromPoints(points)\n */\nconst fromPoints = (points) => {\n const vertices = points.map((point) => vec3.clone(point))\n return create(vertices)\n}\n\nmodule.exports = fromPoints\n","const create = require('./create')\n\n/**\n * Create a polygon from the given vertices and plane.\n * NOTE: No checks are performed on the parameters.\n * @param {Array} vertices - list of vertices (3D)\n * @param {plane} plane - plane of the polygon\n * @returns {poly3} a new polygon\n * @alias module:modeling/geometries/poly3.fromPointsAndPlane\n */\nconst fromPointsAndPlane = (vertices, plane) => {\n const poly = create(vertices)\n poly.plane = plane // retain the plane for later use\n return poly\n}\n\nmodule.exports = fromPointsAndPlane\n","/**\n * Represents a convex 3D polygon consisting of a list of ordered vertices.\n * @see {@link poly3} for data structure information.\n * @module modeling/geometries/poly3\n *\n * @example\n * poly3.create([[0,0,0], [4,0,0], [4,3,12]])\n *\n * @example\n * {\"vertices\": [[0,0,0], [4,0,0], [4,3,12]]}\n */\nmodule.exports = {\n clone: require('./clone'),\n create: require('./create'),\n fromPoints: require('./fromPoints'),\n fromPointsAndPlane: require('./fromPointsAndPlane'),\n invert: require('./invert'),\n isA: require('./isA'),\n isConvex: require('./isConvex'),\n measureArea: require('./measureArea'),\n measureBoundingBox: require('./measureBoundingBox'),\n measureBoundingSphere: require('./measureBoundingSphere'),\n measureSignedVolume: require('./measureSignedVolume'),\n plane: require('./plane'),\n toPoints: require('./toPoints'),\n toString: require('./toString'),\n transform: require('./transform'),\n validate: require('./validate')\n}\n","const plane = require('../../maths/plane')\nconst create = require('./create')\n\n/**\n * Invert the give polygon to face the opposite direction.\n *\n * @param {poly3} polygon - the polygon to invert\n * @returns {poly3} a new poly3\n * @alias module:modeling/geometries/poly3.invert\n */\nconst invert = (polygon) => {\n const vertices = polygon.vertices.slice().reverse()\n const inverted = create(vertices)\n if (polygon.plane) {\n // Flip existing plane to save recompute\n inverted.plane = plane.flip(plane.create(), polygon.plane)\n }\n return inverted\n}\n\nmodule.exports = invert\n","/**\n * Determine if the given object is a polygon.\n * @param {Object} object - the object to interrogate\n * @returns {Boolean} true if the object matches a poly3\n * @alias module:modeling/geometries/poly3.isA\n */\nconst isA = (object) => {\n if (object && typeof object === 'object') {\n if ('vertices' in object) {\n if (Array.isArray(object.vertices)) {\n return true\n }\n }\n }\n return false\n}\n\nmodule.exports = isA\n","const plane = require('../../maths/plane')\nconst vec3 = require('../../maths/vec3')\n\n/**\n * Check whether the given polygon is convex.\n * @param {poly3} polygon - the polygon to interrogate\n * @returns {Boolean} true if convex\n * @alias module:modeling/geometries/poly3.isConvex\n */\nconst isConvex = (polygon) => areVerticesConvex(polygon.vertices)\n\nconst areVerticesConvex = (vertices) => {\n const numvertices = vertices.length\n if (numvertices > 2) {\n // note: plane ~= normal point\n const normal = plane.fromPoints(plane.create(), ...vertices)\n let prevprevpos = vertices[numvertices - 2]\n let prevpos = vertices[numvertices - 1]\n for (let i = 0; i < numvertices; i++) {\n const pos = vertices[i]\n if (!isConvexPoint(prevprevpos, prevpos, pos, normal)) {\n return false\n }\n prevprevpos = prevpos\n prevpos = pos\n }\n }\n return true\n}\n\n// calculate whether three points form a convex corner\n// prevpoint, point, nextpoint: the 3 coordinates (Vector3D instances)\n// normal: the normal vector of the plane\nconst isConvexPoint = (prevpoint, point, nextpoint, normal) => {\n const crossproduct = vec3.cross(\n vec3.create(),\n vec3.subtract(vec3.create(), point, prevpoint),\n vec3.subtract(vec3.create(), nextpoint, point)\n )\n const crossdotnormal = vec3.dot(crossproduct, normal)\n return crossdotnormal >= 0\n}\n\nmodule.exports = isConvex\n","const plane = require('./plane')\n\n/**\n * Measure the area of the given polygon.\n * @see 2000 softSurfer http://geomalgorithms.com\n * @param {poly3} polygon - the polygon to measure\n * @return {Number} area of the polygon\n * @alias module:modeling/geometries/poly3.measureArea\n */\nconst measureArea = (polygon) => {\n const n = polygon.vertices.length\n if (n < 3) {\n return 0 // degenerate polygon\n }\n const vertices = polygon.vertices\n\n // calculate a normal vector\n const normal = plane(polygon)\n\n // determine direction of projection\n const ax = Math.abs(normal[0])\n const ay = Math.abs(normal[1])\n const az = Math.abs(normal[2])\n\n if (ax + ay + az === 0) {\n // normal does not exist\n return 0\n }\n\n let coord = 3 // ignore Z coordinates\n if ((ax > ay) && (ax > az)) {\n coord = 1 // ignore X coordinates\n } else\n if (ay > az) {\n coord = 2 // ignore Y coordinates\n }\n\n let area = 0\n let h = 0\n let i = 1\n let j = 2\n switch (coord) {\n case 1: // ignore X coordinates\n // compute area of 2D projection\n for (i = 1; i < n; i++) {\n h = i - 1\n j = (i + 1) % n\n area += (vertices[i][1] * (vertices[j][2] - vertices[h][2]))\n }\n area += (vertices[0][1] * (vertices[1][2] - vertices[n - 1][2]))\n // scale to get area\n area /= (2 * normal[0])\n break\n\n case 2: // ignore Y coordinates\n // compute area of 2D projection\n for (i = 1; i < n; i++) {\n h = i - 1\n j = (i + 1) % n\n area += (vertices[i][2] * (vertices[j][0] - vertices[h][0]))\n }\n area += (vertices[0][2] * (vertices[1][0] - vertices[n - 1][0]))\n // scale to get area\n area /= (2 * normal[1])\n break\n\n case 3: // ignore Z coordinates\n default:\n // compute area of 2D projection\n for (i = 1; i < n; i++) {\n h = i - 1\n j = (i + 1) % n\n area += (vertices[i][0] * (vertices[j][1] - vertices[h][1]))\n }\n area += (vertices[0][0] * (vertices[1][1] - vertices[n - 1][1]))\n // scale to get area\n area /= (2 * normal[2])\n break\n }\n return area\n}\n\nmodule.exports = measureArea\n","const vec3 = require('../../maths/vec3')\n\n/**\n * @param {poly3} polygon - the polygon to measure\n * @returns {Array} an array of two vectors (3D); minimum and maximum coordinates\n * @alias module:modeling/geometries/poly3.measureBoundingBox\n */\nconst measureBoundingBox = (polygon) => {\n const vertices = polygon.vertices\n const numvertices = vertices.length\n const min = numvertices === 0 ? vec3.create() : vec3.clone(vertices[0])\n const max = vec3.clone(min)\n for (let i = 1; i < numvertices; i++) {\n vec3.min(min, min, vertices[i])\n vec3.max(max, max, vertices[i])\n }\n return [min, max]\n}\n\nmodule.exports = measureBoundingBox\n","const vec4 = require('../../maths/vec4')\n\nconst cache = new WeakMap()\n\n/**\n * Measure the bounding sphere of the given polygon.\n * @param {poly3} polygon - the polygon to measure\n * @returns {vec4} the computed bounding sphere; center point (3D) and radius\n * @alias module:modeling/geometries/poly3.measureBoundingSphere\n */\nconst measureBoundingSphere = (polygon) => {\n const boundingSphere = cache.get(polygon)\n if (boundingSphere) return boundingSphere\n\n const vertices = polygon.vertices\n const out = vec4.create()\n\n if (vertices.length === 0) {\n out[0] = 0\n out[1] = 0\n out[2] = 0\n out[3] = 0\n return out\n }\n\n // keep a list of min/max vertices by axis\n let minx = vertices[0]\n let miny = minx\n let minz = minx\n let maxx = minx\n let maxy = minx\n let maxz = minx\n\n vertices.forEach((v) => {\n if (minx[0] > v[0]) minx = v\n if (miny[1] > v[1]) miny = v\n if (minz[2] > v[2]) minz = v\n if (maxx[0] < v[0]) maxx = v\n if (maxy[1] < v[1]) maxy = v\n if (maxz[2] < v[2]) maxz = v\n })\n\n out[0] = (minx[0] + maxx[0]) * 0.5 // center of sphere\n out[1] = (miny[1] + maxy[1]) * 0.5\n out[2] = (minz[2] + maxz[2]) * 0.5\n const x = out[0] - maxx[0]\n const y = out[1] - maxy[1]\n const z = out[2] - maxz[2]\n out[3] = Math.sqrt(x * x + y * y + z * z) // radius of sphere\n\n cache.set(polygon, out)\n\n return out\n}\n\nmodule.exports = measureBoundingSphere\n","const vec3 = require('../../maths/vec3')\n\n/**\n * Measure the signed volume of the given polygon, which must be convex.\n * The volume is that formed by the tetrahedron connected to the axis [0,0,0],\n * and will be positive or negative based on the rotation of the vertices.\n * @see http://chenlab.ece.cornell.edu/Publication/Cha/icip01_Cha.pdf\n * @param {poly3} polygon - the polygon to measure\n * @return {Number} volume of the polygon\n * @alias module:modeling/geometries/poly3.measureSignedVolume\n */\nconst measureSignedVolume = (polygon) => {\n let signedVolume = 0\n const vertices = polygon.vertices\n // calculate based on triangular polygons\n const cross = vec3.create()\n for (let i = 0; i < vertices.length - 2; i++) {\n vec3.cross(cross, vertices[i + 1], vertices[i + 2])\n signedVolume += vec3.dot(vertices[0], cross)\n }\n signedVolume /= 6\n return signedVolume\n}\n\nmodule.exports = measureSignedVolume\n","const mplane = require('../../maths/plane/')\n\nconst plane = (polygon) => {\n if (!polygon.plane) {\n polygon.plane = mplane.fromPoints(mplane.create(), ...polygon.vertices)\n }\n return polygon.plane\n}\n\nmodule.exports = plane\n","/**\n * Return the given polygon as a list of points.\n * NOTE: The returned array should not be modified as the points are shared with the geometry.\n * @param {poly3} polygon - the polygon\n * @return {Array} list of points (3D)\n * @alias module:modeling/geometries/poly3.toPoints\n */\nconst toPoints = (polygon) => polygon.vertices\n\nmodule.exports = toPoints\n","const vec3 = require('../../maths/vec3/')\n\n/**\n * @param {poly3} polygon - the polygon to measure\n * @return {String} the string representation\n * @alias module:modeling/geometries/poly3.toString\n */\nconst toString = (polygon) => {\n let result = 'poly3: vertices: ['\n polygon.vertices.forEach((vertex) => {\n result += `${vec3.toString(vertex)}, `\n })\n result += ']'\n return result\n}\n\nmodule.exports = toString\n","const mat4 = require('../../maths/mat4')\nconst vec3 = require('../../maths/vec3')\n\nconst create = require('./create')\n\n/**\n * Transform the given polygon using the given matrix.\n * @param {mat4} matrix - the matrix to transform with\n * @param {poly3} polygon - the polygon to transform\n * @returns {poly3} a new polygon\n * @alias module:modeling/geometries/poly3.transform\n */\nconst transform = (matrix, polygon) => {\n const vertices = polygon.vertices.map((vertex) => vec3.transform(vec3.create(), vertex, matrix))\n if (mat4.isMirroring(matrix)) {\n // reverse the order to preserve the orientation\n vertices.reverse()\n }\n return create(vertices)\n}\n\nmodule.exports = transform\n","const signedDistanceToPoint = require('../../maths/plane/signedDistanceToPoint')\nconst { NEPS } = require('../../maths/constants')\nconst vec3 = require('../../maths/vec3')\nconst isA = require('./isA')\nconst isConvex = require('./isConvex')\nconst measureArea = require('./measureArea')\nconst plane = require('./plane')\n\n/**\n * Determine if the given object is a valid polygon.\n * Checks for valid data structure, convex polygons, and duplicate points.\n *\n * **If the geometry is not valid, an exception will be thrown with details of the geometry error.**\n *\n * @param {Object} object - the object to interrogate\n * @throws {Error} error if the geometry is not valid\n * @alias module:modeling/geometries/poly3.validate\n */\nconst validate = (object) => {\n if (!isA(object)) {\n throw new Error('invalid poly3 structure')\n }\n\n // check for empty polygon\n if (object.vertices.length < 3) {\n throw new Error(`poly3 not enough vertices ${object.vertices.length}`)\n }\n // check area\n if (measureArea(object) <= 0) {\n throw new Error('poly3 area must be greater than zero')\n }\n\n // check for duplicate points\n for (let i = 0; i < object.vertices.length; i++) {\n if (vec3.equals(object.vertices[i], object.vertices[(i + 1) % object.vertices.length])) {\n throw new Error(`poly3 duplicate vertex ${object.vertices[i]}`)\n }\n }\n\n // check convexity\n if (!isConvex(object)) {\n throw new Error('poly3 must be convex')\n }\n\n // check for infinity, nan\n object.vertices.forEach((vertex) => {\n if (!vertex.every(Number.isFinite)) {\n throw new Error(`poly3 invalid vertex ${vertex}`)\n }\n })\n\n // check that points are co-planar\n if (object.vertices.length > 3) {\n const normal = plane(object)\n object.vertices.forEach((vertex) => {\n const dist = Math.abs(signedDistanceToPoint(normal, vertex))\n if (dist > NEPS) {\n throw new Error(`poly3 must be coplanar: vertex ${vertex} distance ${dist}`)\n }\n })\n }\n}\n\nmodule.exports = validate\n","module.exports = {\n colors: require('./colors'),\n curves: require('./curves'),\n geometries: require('./geometries'),\n maths: require('./maths'),\n measurements: require('./measurements'),\n primitives: require('./primitives'),\n text: require('./text'),\n utils: require('./utils'),\n\n booleans: require('./operations/booleans'),\n expansions: require('./operations/expansions'),\n extrusions: require('./operations/extrusions'),\n hulls: require('./operations/hulls'),\n modifiers: require('./operations/modifiers'),\n transforms: require('./operations/transforms')\n}\n","const mat4 = require('./mat4')\n\nconst vec2 = require('./vec2')\nconst vec3 = require('./vec3')\n\n/*\n * Class OrthoNormalBasis\n * Reprojects points on a 3D plane onto a 2D plane\n * or from a 2D plane back onto the 3D plane\n * @param {plane} plane\n * @param {vec3} rightvector\n */\nconst OrthoNormalBasis = function (plane, rightvector) {\n if (arguments.length < 2) {\n // choose an arbitrary right hand vector, making sure it is somewhat orthogonal to the plane normal:\n rightvector = vec3.orthogonal(vec3.create(), plane)\n }\n this.v = vec3.normalize(vec3.create(), vec3.cross(vec3.create(), plane, rightvector))\n this.u = vec3.cross(vec3.create(), this.v, plane)\n this.plane = plane\n this.planeorigin = vec3.scale(vec3.create(), plane, plane[3])\n}\n\n// Get an orthonormal basis for the standard XYZ planes.\n// Parameters: the names of two 3D axes. The 2d x axis will map to the first given 3D axis, the 2d y\n// axis will map to the second.\n// Prepend the axis with a \"-\" to invert the direction of this axis.\n// For example: OrthoNormalBasis.GetCartesian(\"-Y\",\"Z\")\n// will return an orthonormal basis where the 2d X axis maps to the 3D inverted Y axis, and\n// the 2d Y axis maps to the 3D Z axis.\nOrthoNormalBasis.GetCartesian = function (xaxisid, yaxisid) {\n const axisid = xaxisid + '/' + yaxisid\n let planenormal, rightvector\n if (axisid === 'X/Y') {\n planenormal = [0, 0, 1]\n rightvector = [1, 0, 0]\n } else if (axisid === 'Y/-X') {\n planenormal = [0, 0, 1]\n rightvector = [0, 1, 0]\n } else if (axisid === '-X/-Y') {\n planenormal = [0, 0, 1]\n rightvector = [-1, 0, 0]\n } else if (axisid === '-Y/X') {\n planenormal = [0, 0, 1]\n rightvector = [0, -1, 0]\n } else if (axisid === '-X/Y') {\n planenormal = [0, 0, -1]\n rightvector = [-1, 0, 0]\n } else if (axisid === '-Y/-X') {\n planenormal = [0, 0, -1]\n rightvector = [0, -1, 0]\n } else if (axisid === 'X/-Y') {\n planenormal = [0, 0, -1]\n rightvector = [1, 0, 0]\n } else if (axisid === 'Y/X') {\n planenormal = [0, 0, -1]\n rightvector = [0, 1, 0]\n } else if (axisid === 'X/Z') {\n planenormal = [0, -1, 0]\n rightvector = [1, 0, 0]\n } else if (axisid === 'Z/-X') {\n planenormal = [0, -1, 0]\n rightvector = [0, 0, 1]\n } else if (axisid === '-X/-Z') {\n planenormal = [0, -1, 0]\n rightvector = [-1, 0, 0]\n } else if (axisid === '-Z/X') {\n planenormal = [0, -1, 0]\n rightvector = [0, 0, -1]\n } else if (axisid === '-X/Z') {\n planenormal = [0, 1, 0]\n rightvector = [-1, 0, 0]\n } else if (axisid === '-Z/-X') {\n planenormal = [0, 1, 0]\n rightvector = [0, 0, -1]\n } else if (axisid === 'X/-Z') {\n planenormal = [0, 1, 0]\n rightvector = [1, 0, 0]\n } else if (axisid === 'Z/X') {\n planenormal = [0, 1, 0]\n rightvector = [0, 0, 1]\n } else if (axisid === 'Y/Z') {\n planenormal = [1, 0, 0]\n rightvector = [0, 1, 0]\n } else if (axisid === 'Z/-Y') {\n planenormal = [1, 0, 0]\n rightvector = [0, 0, 1]\n } else if (axisid === '-Y/-Z') {\n planenormal = [1, 0, 0]\n rightvector = [0, -1, 0]\n } else if (axisid === '-Z/Y') {\n planenormal = [1, 0, 0]\n rightvector = [0, 0, -1]\n } else if (axisid === '-Y/Z') {\n planenormal = [-1, 0, 0]\n rightvector = [0, -1, 0]\n } else if (axisid === '-Z/-Y') {\n planenormal = [-1, 0, 0]\n rightvector = [0, 0, -1]\n } else if (axisid === 'Y/-Z') {\n planenormal = [-1, 0, 0]\n rightvector = [0, 1, 0]\n } else if (axisid === 'Z/Y') {\n planenormal = [-1, 0, 0]\n rightvector = [0, 0, 1]\n } else {\n throw new Error('OrthoNormalBasis.GetCartesian: invalid combination of axis identifiers. Should pass two string arguments from [X,Y,Z,-X,-Y,-Z], being two different axes.')\n }\n return new OrthoNormalBasis(new Plane(new Vector3D(planenormal), 0), new Vector3D(rightvector))\n}\n\n/*\n// test code for OrthoNormalBasis.GetCartesian()\nOrthoNormalBasis.GetCartesian_Test=function() {\n let axisnames=[\"X\",\"Y\",\"Z\",\"-X\",\"-Y\",\"-Z\"];\n let axisvectors=[[1,0,0], [0,1,0], [0,0,1], [-1,0,0], [0,-1,0], [0,0,-1]];\n for(let axis1=0; axis1 < 3; axis1++) {\n for(let axis1inverted=0; axis1inverted < 2; axis1inverted++) {\n let axis1name=axisnames[axis1+3*axis1inverted];\n let axis1vector=axisvectors[axis1+3*axis1inverted];\n for(let axis2=0; axis2 < 3; axis2++) {\n if(axis2 != axis1) {\n for(let axis2inverted=0; axis2inverted < 2; axis2inverted++) {\n let axis2name=axisnames[axis2+3*axis2inverted];\n let axis2vector=axisvectors[axis2+3*axis2inverted];\n let orthobasis=OrthoNormalBasis.GetCartesian(axis1name, axis2name);\n let test1=orthobasis.to3D(new Vector2D([1,0]));\n let test2=orthobasis.to3D(new Vector2D([0,1]));\n let expected1=new Vector3D(axis1vector);\n let expected2=new Vector3D(axis2vector);\n let d1=test1.distanceTo(expected1);\n let d2=test2.distanceTo(expected2);\n if( (d1 > 0.01) || (d2 > 0.01) ) {\n throw new Error(\"Wrong!\");\n }}}}}}\n throw new Error(\"OK\");\n};\n*/\n\n// The z=0 plane, with the 3D x and y vectors mapped to the 2D x and y vector\nOrthoNormalBasis.Z0Plane = function () {\n const plane = new Plane(new Vector3D([0, 0, 1]), 0)\n return new OrthoNormalBasis(plane, new Vector3D([1, 0, 0]))\n}\n\nOrthoNormalBasis.prototype = {\n\n getProjectionMatrix: function () {\n return mat4.fromValues(\n this.u[0], this.v[0], this.plane[0], 0,\n this.u[1], this.v[1], this.plane[1], 0,\n this.u[2], this.v[2], this.plane[2], 0,\n 0, 0, -this.plane[3], 1\n )\n },\n\n getInverseProjectionMatrix: function () {\n const p = vec3.scale(vec3.create(), this.plane, this.plane[3])\n return mat4.fromValues(\n this.u[0], this.u[1], this.u[2], 0,\n this.v[0], this.v[1], this.v[2], 0,\n this.plane[0], this.plane[1], this.plane[2], 0,\n p[0], p[1], p[2], 1\n )\n },\n\n to2D: function (point) {\n return vec2.fromValues(vec3.dot(point, this.u), vec3.dot(point, this.v))\n },\n\n to3D: function (point) {\n const v1 = vec3.scale(vec3.create(), this.u, point[0])\n const v2 = vec3.scale(vec3.create(), this.v, point[1])\n\n const v3 = vec3.add(v1, v1, this.planeorigin)\n const v4 = vec3.add(v2, v2, v3)\n return v4\n },\n\n line3Dto2D: function (line3d) {\n const a = line3d.point\n const b = line3d.direction.plus(a)\n const a2d = this.to2D(a)\n const b2d = this.to2D(b)\n return Line2D.fromPoints(a2d, b2d)\n },\n\n line2Dto3D: function (line2d) {\n const a = line2d.origin()\n const b = line2d.direction().plus(a)\n const a3d = this.to3D(a)\n const b3d = this.to3D(b)\n return Line3D.fromPoints(a3d, b3d)\n },\n\n transform: function (matrix4x4) {\n // todo: this may not work properly in case of mirroring\n const newplane = this.plane.transform(matrix4x4)\n const rightpointTransformed = this.u.transform(matrix4x4)\n const originTransformed = new Vector3D(0, 0, 0).transform(matrix4x4)\n const newrighthandvector = rightpointTransformed.minus(originTransformed)\n const newbasis = new OrthoNormalBasis(newplane, newrighthandvector)\n return newbasis\n }\n}\n\nmodule.exports = OrthoNormalBasis\n","/**\n * The resolution of space, currently one hundred nanometers.\n * This should be 1 / EPS.\n * @alias module:modeling/maths.spatialResolution\n * @default\n */\nconst spatialResolution = 1e5\n\n/**\n * Epsilon used during determination of near zero distances.\n * This should be 1 / spacialResolution.\n * @default\n * @alias module:modeling/maths.EPS\n */\nconst EPS = 1e-5\n\n/**\n * Smaller epsilon used for measuring near zero distances.\n * @default\n * @alias module:modeling/maths.NEPS\n */\nconst NEPS = 1e-13\n// NEPS is derived from a series of tests to determine the optimal precision\n// for comparing coplanar polygons, as provided by the sphere primitive at high\n// segmentation. NEPS is for 64 bit Number values.\n\n/**\n * The TAU property represents the ratio of the circumference of a circle to its radius.\n * Approximately 6.28318530717958647692\n * @default\n * @example\n * const { TAU } = require('@jscad/modeling').maths.constants\n */\nconst TAU = Math.PI * 2\n\nmodule.exports = {\n EPS,\n NEPS,\n TAU,\n spatialResolution\n}\n","/**\n * Maths are computational units for fundamental Euclidean geometry. All maths operate upon array data structures.\n * Note: Maths data structures are considered immutable, so never change the contents directly.\n * @see Most computations are based upon the glMatrix library (glmatrix.net)\n * @module modeling/maths\n * @example\n * const { constants, line2, mat4, vec2, vec3 } = require('@jscad/modeling').maths\n\n */\nmodule.exports = {\n constants: require('./constants'),\n line2: require('./line2'),\n line3: require('./line3'),\n mat4: require('./mat4'),\n plane: require('./plane'),\n utils: require('./utils'),\n vec2: require('./vec2'),\n vec3: require('./vec3'),\n vec4: require('./vec4')\n}\n","const create = require('./create')\n\n/**\n * Create a clone of the given line.\n *\n * @param {line2} line - line to clone\n * @returns {line2} a new unbounded line\n * @alias module:modeling/maths/line2.clone\n */\nconst clone = (line) => {\n const out = create()\n out[0] = line[0]\n out[1] = line[1]\n out[2] = line[2]\n return out\n}\n\nmodule.exports = clone\n","const vec2 = require('../vec2')\n\nconst direction = require('./direction')\nconst origin = require('./origin')\n\n/**\n * Determine the closest point on the given line to the given point.\n *\n * @param {line2} line - line of reference\n * @param {vec2} point - point of reference\n * @returns {vec2} closest point\n * @alias module:modeling/maths/line2.closestPoint\n */\nconst closestPoint = (line, point) => {\n const orig = origin(line)\n const dir = direction(line)\n\n const v = vec2.subtract(vec2.create(), point, orig)\n const dist = vec2.dot(v, dir)\n vec2.scale(v, dir, dist)\n vec2.add(v, v, orig)\n return v\n}\n\nmodule.exports = closestPoint\n","/**\n * Copy the given line to the receiving line.\n *\n * @param {line2} out - receiving line\n * @param {line2} line - line to copy\n * @returns {line2} out\n * @alias module:modeling/maths/line2.copy\n */\nconst copy = (out, line) => {\n out[0] = line[0]\n out[1] = line[1]\n out[2] = line[2]\n return out\n}\n\nmodule.exports = copy\n","/**\n * Represents a unbounded line in 2D space, positioned at a point of origin.\n * A line is parametrized by a normal vector (perpendicular to the line, rotated 90 degrees counter clockwise) and\n * distance from the origin.\n *\n * Equation: A Point (P) is on Line (L) if dot(L.normal, P) == L.distance\n *\n * The contents of the array are a normal [0,1] and a distance [2].\n * @typedef {Array} line2\n */\n\n/**\n * Create a line, positioned at 0,0, and running along the X axis.\n *\n * @returns {line2} a new unbounded line\n * @alias module:modeling/maths/line2.create\n */\nconst create = () => [0, 1, 0] // normal and distance\n\nmodule.exports = create\n","const vec2 = require('../vec2')\n\n/**\n * Return the direction of the given line.\n *\n * @param {line2} line - line of reference\n * @return {vec2} a vector in the direction of the line\n * @alias module:modeling/maths/line2.direction\n */\nconst direction = (line) => {\n const vector = vec2.normal(vec2.create(), line)\n vec2.negate(vector, vector)\n return vector\n}\n\nmodule.exports = direction\n","const vec2 = require('../vec2')\n\n/**\n * Calculate the distance (positive) between the given point and line.\n *\n * @param {line2} line - line of reference\n * @param {vec2} point - point of reference\n * @return {Number} distance between line and point\n * @alias module:modeling/maths/line2.distanceToPoint\n */\nconst distanceToPoint = (line, point) => {\n let distance = vec2.dot(point, line)\n distance = Math.abs(distance - line[2])\n return distance\n}\n\nmodule.exports = distanceToPoint\n","/**\n * Compare the given lines for equality.\n *\n * @param {line2} line1 - first line to compare\n * @param {line2} line2 - second line to compare\n * @return {Boolean} true if lines are equal\n * @alias module:modeling/maths/line2.equals\n */\nconst equals = (line1, line2) => (line1[0] === line2[0]) && (line1[1] === line2[1] && (line1[2] === line2[2]))\n\nmodule.exports = equals\n","const vec2 = require('../vec2')\n\n/**\n * Create a new line that passes through the given points.\n *\n * @param {line2} out - receiving line\n * @param {vec2} point1 - start point of the line\n * @param {vec2} point2 - end point of the line\n * @returns {line2} a new unbounded line\n * @alias module:modeling/maths/line2.fromPoints\n */\nconst fromPoints = (out, point1, point2) => {\n const vector = vec2.subtract(vec2.create(), point2, point1) // directional vector\n\n vec2.normal(vector, vector)\n vec2.normalize(vector, vector) // normalized\n\n const distance = vec2.dot(point1, vector)\n\n out[0] = vector[0]\n out[1] = vector[1]\n out[2] = distance\n return out\n}\n\nmodule.exports = fromPoints\n","const create = require('./create')\n\n/**\n * Creates a new line initialized with the given values.\n *\n * @param {Number} x - X coordinate of the unit normal\n * @param {Number} y - Y coordinate of the unit normal\n * @param {Number} d - distance of the line from [0,0]\n * @returns {line2} a new unbounded line\n * @alias module:modeling/maths/line2.fromValues\n */\nconst fromValues = (x, y, d) => {\n const out = create()\n out[0] = x\n out[1] = y\n out[2] = d\n return out\n}\n\nmodule.exports = fromValues\n","/**\n * Represents a unbounded line in 2D space, positioned at a point of origin.\n * @see {@link line2} for data structure information.\n * @module modeling/maths/line2\n */\nmodule.exports = {\n clone: require('./clone'),\n closestPoint: require('./closestPoint'),\n copy: require('./copy'),\n create: require('./create'),\n direction: require('./direction'),\n distanceToPoint: require('./distanceToPoint'),\n equals: require('./equals'),\n fromPoints: require('./fromPoints'),\n fromValues: require('./fromValues'),\n intersectPointOfLines: require('./intersectPointOfLines'),\n origin: require('./origin'),\n reverse: require('./reverse'),\n toString: require('./toString'),\n transform: require('./transform'),\n xAtY: require('./xAtY')\n}\n","const vec2 = require('../vec2')\nconst { solve2Linear } = require('../utils')\n\n/**\n * Return the point of intersection between the given lines.\n *\n * NOTES:\n * The point will have Infinity values if the lines are parallel.\n * The point will have NaN values if the lines are the same.\n *\n * @param {line2} line1 - line of reference\n * @param {line2} line2 - line of reference\n * @return {vec2} the point of intersection\n * @alias module:modeling/maths/line2.intersectPointOfLines\n */\nconst intersectToLine = (line1, line2) => {\n const point = solve2Linear(line1[0], line1[1], line2[0], line2[1], line1[2], line2[2])\n return vec2.clone(point)\n}\n\nmodule.exports = intersectToLine\n","const vec2 = require('../vec2')\n\n/**\n * Return the origin of the given line.\n * The origin is the point on the line which is closest to the origin [0, 0].\n *\n * @param {line2} line - line of reference\n * @return {vec2} the origin of the line\n * @alias module:modeling/maths/line2.origin\n */\nconst origin = (line) => vec2.scale(vec2.create(), line, line[2])\n\nmodule.exports = origin\n","const vec2 = require('../vec2')\n\nconst copy = require('./copy')\nconst fromValues = require('./fromValues')\n\n/**\n * Create a new line in the opposite direction as the given.\n *\n * @param {line2} out - receiving line\n * @param {line2} line - line to reverse\n * @returns {line2} out\n * @alias module:modeling/maths/line2.reverse\n */\nconst reverse = (out, line) => {\n const normal = vec2.negate(vec2.create(), line)\n const distance = -line[2]\n return copy(out, fromValues(normal[0], normal[1], distance))\n}\n\nmodule.exports = reverse\n","/**\n * Return a string representing the given line.\n *\n * @param {line2} line - line of reference\n * @returns {String} string representation\n * @alias module:modeling/maths/line2.toString\n */\nconst toString = (line) => `line2: (${line[0].toFixed(7)}, ${line[1].toFixed(7)}, ${line[2].toFixed(7)})`\n\nmodule.exports = toString\n","const vec2 = require('../vec2')\n\nconst fromPoints = require('./fromPoints')\nconst origin = require('./origin')\nconst direction = require('./direction')\n\n/**\n * Transforms the given line using the given matrix.\n *\n * @param {line2} out - receiving line\n * @param {line2} line - line to transform\n * @param {mat4} matrix - matrix to transform with\n * @returns {line2} out\n * @alias module:modeling/maths/line2.transform\n */\nconst transform = (out, line, matrix) => {\n const org = origin(line)\n const dir = direction(line)\n\n vec2.transform(org, org, matrix)\n vec2.transform(dir, dir, matrix)\n\n return fromPoints(out, org, dir)\n}\n\nmodule.exports = transform\n","const origin = require('./origin')\n\n/**\n * Determine the X coordinate of the given line at the Y coordinate.\n *\n * The X coordinate will be Infinity if the line is parallel to the X axis.\n *\n * @param {line2} line - line of reference\n * @param {Number} y - Y coordinate on the line\n * @return {Number} the X coordinate on the line\n * @alias module:modeling/maths/line2.xAtY\n */\nconst xAtY = (line, y) => {\n let x = (line[2] - (line[1] * y)) / line[0]\n if (Number.isNaN(x)) {\n const org = origin(line)\n x = org[0]\n }\n return x\n}\n\nmodule.exports = xAtY\n","const vec3 = require('../vec3')\n\nconst create = require('./create')\n\n/**\n * Create a clone of the given line.\n *\n * @param {line3} line - line to clone\n * @returns {line3} a new unbounded line\n * @alias module:modeling/maths/line3.clone\n */\nconst clone = (line) => {\n const out = create()\n vec3.copy(out[0], line[0])\n vec3.copy(out[1], line[1])\n return out\n}\n\nmodule.exports = clone\n","const vec3 = require('../vec3')\n\n/**\n * Determine the closest point on the given line to the given point.\n *\n * @param {line3} line - line of reference\n * @param {vec3} point - point of reference\n * @returns {vec3} a point\n * @alias module:modeling/maths/line3.closestPoint\n */\nconst closestPoint = (line, point) => {\n const lpoint = line[0]\n const ldirection = line[1]\n\n const a = vec3.dot(vec3.subtract(vec3.create(), point, lpoint), ldirection)\n const b = vec3.dot(ldirection, ldirection)\n const t = a / b\n\n const closestpoint = vec3.scale(vec3.create(), ldirection, t)\n vec3.add(closestpoint, closestpoint, lpoint)\n return closestpoint\n}\n\nmodule.exports = closestPoint\n","const vec3 = require('../vec3')\n\n/**\n * Copy the given line into the receiving line.\n *\n * @param {line3} out - receiving line\n * @param {line3} line - line to copy\n * @returns {line3} out\n * @alias module:modeling/maths/line3.copy\n */\nconst copy = (out, line) => {\n vec3.copy(out[0], line[0])\n vec3.copy(out[1], line[1])\n return out\n}\n\nmodule.exports = copy\n","const vec3 = require('../vec3')\n\n/**\n * Represents a unbounded line in 3D space, positioned at a point of origin.\n * A line is parametrized by a point of origin and a directional vector.\n *\n * The array contents are two 3D vectors; origin [0,0,0] and directional vector [0,0,1].\n * @see https://en.wikipedia.org/wiki/Hesse_normal_form\n * @typedef {Array} line3\n */\n\n/**\n * Create a line, positioned at 0,0,0 and lying on the X axis.\n *\n * @returns {line3} a new unbounded line\n * @alias module:modeling/maths/line3.create\n */\nconst create = () => [\n vec3.fromValues(0, 0, 0), // origin\n vec3.fromValues(0, 0, 1) // direction\n]\n\nmodule.exports = create\n","/**\n * Return the direction of the given line.\n *\n * @param {line3} line - line for reference\n * @return {vec3} the relative vector in the direction of the line\n * @alias module:modeling/maths/line3.direction\n */\nconst direction = (line) => line[1]\n\nmodule.exports = direction\n","const vec3 = require('../vec3')\n\nconst closestPoint = require('./closestPoint')\n\n/**\n * Calculate the distance (positive) between the given point and line.\n *\n * @param {line3} line - line of reference\n * @param {vec3} point - point of reference\n * @return {Number} distance between line and point\n * @alias module:modeling/maths/line3.distanceToPoint\n */\nconst distanceToPoint = (line, point) => {\n const closest = closestPoint(line, point)\n const distancevector = vec3.subtract(vec3.create(), point, closest)\n return vec3.length(distancevector)\n}\n\nmodule.exports = distanceToPoint\n","const vec3 = require('../vec3')\n\n/**\n * Compare the given lines for equality.\n *\n * @param {line3} line1 - first line to compare\n * @param {line3} line2 - second line to compare\n * @return {Boolean} true if lines are equal\n * @alias module:modeling/maths/line3.equals\n */\nconst equals = (line1, line2) => {\n // compare directions (unit vectors)\n if (!vec3.equals(line1[1], line2[1])) return false\n\n // compare points\n if (!vec3.equals(line1[0], line2[0])) return false\n\n // why would lines with the same slope (direction) and different points be equal?\n // let distance = distanceToPoint(line1, line2[0])\n // if (distance > EPS) return false\n\n return true\n}\n\nmodule.exports = equals\n","const vec3 = require('../vec3')\nconst { solve2Linear } = require('../utils')\n\nconst { EPS } = require('../constants')\n\nconst fromPointAndDirection = require('./fromPointAndDirection')\n\n/**\n * Create a line the intersection of the given planes.\n *\n * @param {line3} out - receiving line\n * @param {plane} plane1 - first plane of reference\n * @param {plane} plane2 - second plane of reference\n * @returns {line3} out\n * @alias module:modeling/maths/line3.fromPlanes\n */\nconst fromPlanes = (out, plane1, plane2) => {\n let direction = vec3.cross(vec3.create(), plane1, plane2)\n let length = vec3.length(direction)\n if (length < EPS) {\n throw new Error('parallel planes do not intersect')\n }\n length = (1.0 / length)\n direction = vec3.scale(direction, direction, length)\n\n const absx = Math.abs(direction[0])\n const absy = Math.abs(direction[1])\n const absz = Math.abs(direction[2])\n let origin\n let r\n if ((absx >= absy) && (absx >= absz)) {\n // find a point p for which x is zero\n r = solve2Linear(plane1[1], plane1[2], plane2[1], plane2[2], plane1[3], plane2[3])\n origin = vec3.fromValues(0, r[0], r[1])\n } else if ((absy >= absx) && (absy >= absz)) {\n // find a point p for which y is zero\n r = solve2Linear(plane1[0], plane1[2], plane2[0], plane2[2], plane1[3], plane2[3])\n origin = vec3.fromValues(r[0], 0, r[1])\n } else {\n // find a point p for which z is zero\n r = solve2Linear(plane1[0], plane1[1], plane2[0], plane2[1], plane1[3], plane2[3])\n origin = vec3.fromValues(r[0], r[1], 0)\n }\n return fromPointAndDirection(out, origin, direction)\n}\n\nmodule.exports = fromPlanes\n","const vec3 = require('../vec3')\n\n/**\n * Create a line from the given point (origin) and direction.\n *\n * The point can be any random point on the line.\n * The direction must be a vector with positive or negative distance from the point.\n *\n * See the logic of fromPoints() for appropriate values.\n *\n * @param {line3} out - receiving line\n * @param {vec3} point - start point of the line segment\n * @param {vec3} direction - direction of the line segment\n * @returns {line3} out\n * @alias module:modeling/maths/line3.fromPointAndDirection\n */\nconst fromPointAndDirection = (out, point, direction) => {\n const unit = vec3.normalize(vec3.create(), direction)\n\n vec3.copy(out[0], point)\n vec3.copy(out[1], unit)\n return out\n}\n\nmodule.exports = fromPointAndDirection\n","const vec3 = require('../vec3')\n\nconst fromPointAndDirection = require('./fromPointAndDirection')\n\n/**\n * Create a line that passes through the given points.\n *\n * @param {line3} out - receiving line\n * @param {vec3} point1 - start point of the line segment\n * @param {vec3} point2 - end point of the line segment\n * @returns {line3} out\n * @alias module:modeling/maths/line3.fromPoints\n */\nconst fromPoints = (out, point1, point2) => {\n const direction = vec3.subtract(vec3.create(), point2, point1)\n return fromPointAndDirection(out, point1, direction)\n}\n\nmodule.exports = fromPoints\n","/**\n * Represents a unbounded line in 3D space, positioned at a point of origin.\n * @see {@link line3} for data structure information.\n * @module modeling/maths/line3\n */\nmodule.exports = {\n clone: require('./clone'),\n closestPoint: require('./closestPoint'),\n copy: require('./copy'),\n create: require('./create'),\n direction: require('./direction'),\n distanceToPoint: require('./distanceToPoint'),\n equals: require('./equals'),\n fromPlanes: require('./fromPlanes'),\n fromPointAndDirection: require('./fromPointAndDirection'),\n fromPoints: require('./fromPoints'),\n intersectPointOfLineAndPlane: require('./intersectPointOfLineAndPlane'),\n origin: require('./origin'),\n reverse: require('./reverse'),\n toString: require('./toString'),\n transform: require('./transform')\n}\n","const vec3 = require('../vec3')\n\n/**\n * Determine the closest point on the given plane to the given line.\n *\n * NOTES:\n * The point of intersection will be invalid if the line is parallel to the plane, e.g. NaN.\n *\n * @param {line3} line - line of reference\n * @param {plane} plane - plane of reference\n * @returns {vec3} a point on the line\n * @alias module:modeling/maths/line3.intersectPointOfLineAndPlane\n */\nconst intersectToPlane = (line, plane) => {\n // plane: plane.normal * p = plane.w\n const pnormal = plane\n const pw = plane[3]\n\n const lpoint = line[0]\n const ldirection = line[1]\n\n // point: p = line.point + labda * line.direction\n const labda = (pw - vec3.dot(pnormal, lpoint)) / vec3.dot(pnormal, ldirection)\n\n const point = vec3.add(vec3.create(), lpoint, vec3.scale(vec3.create(), ldirection, labda))\n return point\n}\n\nmodule.exports = intersectToPlane\n","/**\n * Return the origin of the given line.\n *\n * @param {line3} line - line of reference\n * @return {vec3} the origin of the line\n * @alias module:modeling/maths/line3.origin\n */\nconst origin = (line) => line[0]\n\nmodule.exports = origin\n","const vec3 = require('../vec3')\n\nconst fromPointAndDirection = require('./fromPointAndDirection')\n\n/**\n * Create a line in the opposite direction as the given.\n *\n * @param {line3} out - receiving line\n * @param {line3} line - line to reverse\n * @returns {line3} out\n * @alias module:modeling/maths/line3.reverse\n */\nconst reverse = (out, line) => {\n const point = vec3.clone(line[0])\n const direction = vec3.negate(vec3.create(), line[1])\n return fromPointAndDirection(out, point, direction)\n}\n\nmodule.exports = reverse\n","/**\n * Return a string representing the given line.\n *\n * @param {line3} line - line of reference\n * @returns {String} string representation\n * @alias module:modeling/maths/line3.toString\n */\nconst toString = (line) => {\n const point = line[0]\n const direction = line[1]\n return `line3: point: (${point[0].toFixed(7)}, ${point[1].toFixed(7)}, ${point[2].toFixed(7)}) direction: (${direction[0].toFixed(7)}, ${direction[1].toFixed(7)}, ${direction[2].toFixed(7)})`\n}\n\nmodule.exports = toString\n","const vec3 = require('../vec3')\n\nconst fromPointAndDirection = require('./fromPointAndDirection')\n\n/**\n * Transforms the given line using the given matrix.\n *\n * @param {line3} out - line to update\n * @param {line3} line - line to transform\n * @param {mat4} matrix - matrix to transform with\n * @returns {line3} a new unbounded line\n * @alias module:modeling/maths/line3.transform\n */\nconst transform = (out, line, matrix) => {\n const point = line[0]\n const direction = line[1]\n const pointPlusDirection = vec3.add(vec3.create(), point, direction)\n\n const newpoint = vec3.transform(vec3.create(), point, matrix)\n const newPointPlusDirection = vec3.transform(pointPlusDirection, pointPlusDirection, matrix)\n const newdirection = vec3.subtract(newPointPlusDirection, newPointPlusDirection, newpoint)\n\n return fromPointAndDirection(out, newpoint, newdirection)\n}\n\nmodule.exports = transform\n","/**\n * Adds the two matrices (A+B).\n *\n * @param {mat4} out - receiving matrix\n * @param {mat4} a - first operand\n * @param {mat4} b - second operand\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.add\n */\nconst add = (out, a, b) => {\n out[0] = a[0] + b[0]\n out[1] = a[1] + b[1]\n out[2] = a[2] + b[2]\n out[3] = a[3] + b[3]\n out[4] = a[4] + b[4]\n out[5] = a[5] + b[5]\n out[6] = a[6] + b[6]\n out[7] = a[7] + b[7]\n out[8] = a[8] + b[8]\n out[9] = a[9] + b[9]\n out[10] = a[10] + b[10]\n out[11] = a[11] + b[11]\n out[12] = a[12] + b[12]\n out[13] = a[13] + b[13]\n out[14] = a[14] + b[14]\n out[15] = a[15] + b[15]\n return out\n}\n\nmodule.exports = add\n","const create = require('./create')\n\n/**\n * Creates a clone of the given matrix.\n *\n * @param {mat4} matrix - matrix to clone\n * @returns {mat4} a new matrix\n * @alias module:modeling/maths/mat4.clone\n */\nconst clone = (matrix) => {\n const out = create()\n out[0] = matrix[0]\n out[1] = matrix[1]\n out[2] = matrix[2]\n out[3] = matrix[3]\n out[4] = matrix[4]\n out[5] = matrix[5]\n out[6] = matrix[6]\n out[7] = matrix[7]\n out[8] = matrix[8]\n out[9] = matrix[9]\n out[10] = matrix[10]\n out[11] = matrix[11]\n out[12] = matrix[12]\n out[13] = matrix[13]\n out[14] = matrix[14]\n out[15] = matrix[15]\n return out\n}\n\nmodule.exports = clone\n","/**\n * Creates a copy of the given matrix.\n *\n * @param {mat4} out - receiving matrix\n * @param {mat4} matrix - matrix to copy\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.copy\n */\nconst copy = (out, matrix) => {\n out[0] = matrix[0]\n out[1] = matrix[1]\n out[2] = matrix[2]\n out[3] = matrix[3]\n out[4] = matrix[4]\n out[5] = matrix[5]\n out[6] = matrix[6]\n out[7] = matrix[7]\n out[8] = matrix[8]\n out[9] = matrix[9]\n out[10] = matrix[10]\n out[11] = matrix[11]\n out[12] = matrix[12]\n out[13] = matrix[13]\n out[14] = matrix[14]\n out[15] = matrix[15]\n return out\n}\n\nmodule.exports = copy\n","/**\n * Represents a 4x4 matrix which is column-major (when typed out it looks row-major).\n * See fromValues().\n * @typedef {Array} mat4\n */\n\n/**\n * Creates a new identity matrix.\n *\n * @returns {mat4} a new matrix\n * @alias module:modeling/maths/mat4.create\n */\nconst create = () => [\n 1, 0, 0, 0,\n 0, 1, 0, 0,\n 0, 0, 1, 0,\n 0, 0, 0, 1\n]\n\nmodule.exports = create\n","/**\n * Returns whether or not the matrices have exactly the same elements in the same position.\n *\n * @param {mat4} a - first matrix\n * @param {mat4} b - second matrix\n * @returns {Boolean} true if the matrices are equal\n * @alias module:modeling/maths/mat4.equals\n */\nconst equals = (a, b) => (\n a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] &&\n a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] &&\n a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] &&\n a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15]\n)\n\nmodule.exports = equals\n","const { EPS } = require('../constants')\n\nconst { sin, cos } = require('../utils/trigonometry')\n\nconst identity = require('./identity')\n\n/**\n * Creates a matrix from a given angle around a given axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest)\n * mat4.rotate(dest, dest, rad, axis)\n *\n * @param {mat4} out - receiving matrix\n * @param {Number} rad - angle to rotate the matrix by\n * @param {vec3} axis - axis of which to rotate around\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.fromRotation\n * @example\n * let matrix = fromRotation(create(), TAU / 4, [0, 0, 3])\n */\nconst fromRotation = (out, rad, axis) => {\n let [x, y, z] = axis\n const lengthSquared = x * x + y * y + z * z\n\n if (Math.abs(lengthSquared) < EPS) {\n // axis is 0,0,0 or almost\n return identity(out)\n }\n\n const len = 1 / Math.sqrt(lengthSquared)\n x *= len\n y *= len\n z *= len\n\n const s = sin(rad)\n const c = cos(rad)\n const t = 1 - c\n\n // Perform rotation-specific matrix multiplication\n out[0] = x * x * t + c\n out[1] = y * x * t + z * s\n out[2] = z * x * t - y * s\n out[3] = 0\n out[4] = x * y * t - z * s\n out[5] = y * y * t + c\n out[6] = z * y * t + x * s\n out[7] = 0\n out[8] = x * z * t + y * s\n out[9] = y * z * t - x * s\n out[10] = z * z * t + c\n out[11] = 0\n out[12] = 0\n out[13] = 0\n out[14] = 0\n out[15] = 1\n return out\n}\n\nmodule.exports = fromRotation\n","/**\n * Creates a matrix from a vector scaling.\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest)\n * mat4.scale(dest, dest, vec)\n *\n * @param {mat4} out - receiving matrix\n * @param {vec3} vector - X, Y, Z factors by which to scale\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.fromScaling\n * @example\n * let matrix = fromScaling([1, 2, 0.5])\n */\nconst fromScaling = (out, vector) => {\n out[0] = vector[0]\n out[1] = 0\n out[2] = 0\n out[3] = 0\n out[4] = 0\n out[5] = vector[1]\n out[6] = 0\n out[7] = 0\n out[8] = 0\n out[9] = 0\n out[10] = vector[2]\n out[11] = 0\n out[12] = 0\n out[13] = 0\n out[14] = 0\n out[15] = 1\n return out\n}\n\nmodule.exports = fromScaling\n","const { sin, cos } = require('../utils/trigonometry')\n\n/**\n * Creates a matrix from the given Tait–Bryan angles.\n *\n * Tait-Bryan Euler angle convention using active, intrinsic rotations around the axes in the order z-y-x.\n * @see https://en.wikipedia.org/wiki/Euler_angles\n *\n * @param {mat4} out - receiving matrix\n * @param {Number} yaw - Z rotation in radians\n * @param {Number} pitch - Y rotation in radians\n * @param {Number} roll - X rotation in radians\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.fromTaitBryanRotation\n * @example\n * let matrix = fromTaitBryanRotation(create(), TAU / 4, 0, TAU / 2)\n */\nconst fromTaitBryanRotation = (out, yaw, pitch, roll) => {\n // precompute sines and cosines of Euler angles\n const sy = sin(yaw)\n const cy = cos(yaw)\n const sp = sin(pitch)\n const cp = cos(pitch)\n const sr = sin(roll)\n const cr = cos(roll)\n\n // create and populate rotation matrix\n // left-hand-rule rotation\n // const els = [\n // cp*cy, sr*sp*cy - cr*sy, sr*sy + cr*sp*cy, 0,\n // cp*sy, cr*cy + sr*sp*sy, cr*sp*sy - sr*cy, 0,\n // -sp, sr*cp, cr*cp, 0,\n // 0, 0, 0, 1\n // ]\n // right-hand-rule rotation\n out[0] = cp * cy\n out[1] = cp * sy\n out[2] = -sp\n out[3] = 0\n out[4] = sr * sp * cy - cr * sy\n out[5] = cr * cy + sr * sp * sy\n out[6] = sr * cp\n out[7] = 0\n out[8] = sr * sy + cr * sp * cy\n out[9] = cr * sp * sy - sr * cy\n out[10] = cr * cp\n out[11] = 0\n out[12] = 0\n out[13] = 0\n out[14] = 0\n out[15] = 1\n return out\n}\n\nmodule.exports = fromTaitBryanRotation\n","/**\n * Creates a matrix from a vector translation.\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest)\n * mat4.translate(dest, dest, vec)\n *\n * @param {mat4} out - receiving matrix\n * @param {vec3} vector - offset (vector) of translation\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.fromTranslation\n * @example\n * let matrix = fromTranslation(create(), [1, 2, 3])\n */\nconst fromTranslation = (out, vector) => {\n out[0] = 1\n out[1] = 0\n out[2] = 0\n out[3] = 0\n out[4] = 0\n out[5] = 1\n out[6] = 0\n out[7] = 0\n out[8] = 0\n out[9] = 0\n out[10] = 1\n out[11] = 0\n out[12] = vector[0]\n out[13] = vector[1]\n out[14] = vector[2]\n out[15] = 1\n return out\n}\n\nmodule.exports = fromTranslation\n","const create = require('./create')\n\n/**\n * Create a matrix with the given values.\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} a new matrix\n * @alias module:modeling/maths/mat4.fromValues\n * @example\n * let matrix = fromValues(\n * 1, 0, 0, 1,\n * 0, 1, 0, 0,\n * 0, 0, 1, 0,\n * 0, 0, 0, 1\n * )\n */\nconst fromValues = (m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) => {\n const out = create()\n out[0] = m00\n out[1] = m01\n out[2] = m02\n out[3] = m03\n out[4] = m10\n out[5] = m11\n out[6] = m12\n out[7] = m13\n out[8] = m20\n out[9] = m21\n out[10] = m22\n out[11] = m23\n out[12] = m30\n out[13] = m31\n out[14] = m32\n out[15] = m33\n return out\n}\n\nmodule.exports = fromValues\n","const vec3 = require('../vec3')\n\nconst fromRotation = require('./fromRotation')\n\n/**\n * Create a matrix that rotates the given source to the given target vector.\n *\n * Each vector must be a directional vector with a length greater than zero.\n * @see https://gist.github.com/kevinmoran/b45980723e53edeb8a5a43c49f134724\n * @param {mat4} out - receiving matrix\n * @param {vec3} source - source vector\n * @param {vec3} target - target vector\n * @returns {mat4} a new matrix\n * @alias module:modeling/maths/mat4.fromVectorRotation\n * @example\n * let matrix = fromVectorRotation(mat4.create(), [1, 2, 2], [-3, 3, 12])\n */\nconst fromVectorRotation = (out, source, target) => {\n const sourceNormal = vec3.normalize(vec3.create(), source)\n const targetNormal = vec3.normalize(vec3.create(), target)\n\n const axis = vec3.cross(vec3.create(), targetNormal, sourceNormal)\n const cosA = vec3.dot(targetNormal, sourceNormal)\n if (cosA === -1.0) return fromRotation(out, Math.PI, vec3.orthogonal(axis, sourceNormal))\n\n const k = 1 / (1 + cosA)\n out[0] = (axis[0] * axis[0] * k) + cosA\n out[1] = (axis[1] * axis[0] * k) - axis[2]\n out[2] = (axis[2] * axis[0] * k) + axis[1]\n out[3] = 0\n\n out[4] = (axis[0] * axis[1] * k) + axis[2]\n out[5] = (axis[1] * axis[1] * k) + cosA\n out[6] = (axis[2] * axis[1] * k) - axis[0]\n out[7] = 0\n\n out[8] = (axis[0] * axis[2] * k) - axis[1]\n out[9] = (axis[1] * axis[2] * k) + axis[0]\n out[10] = (axis[2] * axis[2] * k) + cosA\n out[11] = 0\n\n out[12] = 0\n out[13] = 0\n out[14] = 0\n out[15] = 1\n return out\n}\n\nmodule.exports = fromVectorRotation\n","const { sin, cos } = require('../utils/trigonometry')\n\n/**\n * Creates a matrix from the given angle around the X axis.\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest)\n * mat4.rotateX(dest, dest, radians)\n *\n * @param {mat4} out - receiving matrix\n * @param {Number} radians - angle to rotate the matrix by\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.fromXRotation\n * @example\n * let matrix = fromXRotation(create(), TAU / 4)\n */\nconst fromXRotation = (out, radians) => {\n const s = sin(radians)\n const c = cos(radians)\n\n // Perform axis-specific matrix multiplication\n out[0] = 1\n out[1] = 0\n out[2] = 0\n out[3] = 0\n out[4] = 0\n out[5] = c\n out[6] = s\n out[7] = 0\n out[8] = 0\n out[9] = -s\n out[10] = c\n out[11] = 0\n out[12] = 0\n out[13] = 0\n out[14] = 0\n out[15] = 1\n return out\n}\n\nmodule.exports = fromXRotation\n","const { sin, cos } = require('../utils/trigonometry')\n\n/**\n * Creates a matrix from the given angle around the Y axis.\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest)\n * mat4.rotateY(dest, dest, radians)\n *\n * @param {mat4} out - receiving matrix\n * @param {Number} radians - angle to rotate the matrix by\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.fromYRotation\n * @example\n * let matrix = fromYRotation(create(), TAU / 4)\n */\nconst fromYRotation = (out, radians) => {\n const s = sin(radians)\n const c = cos(radians)\n\n // Perform axis-specific matrix multiplication\n out[0] = c\n out[1] = 0\n out[2] = -s\n out[3] = 0\n out[4] = 0\n out[5] = 1\n out[6] = 0\n out[7] = 0\n out[8] = s\n out[9] = 0\n out[10] = c\n out[11] = 0\n out[12] = 0\n out[13] = 0\n out[14] = 0\n out[15] = 1\n return out\n}\n\nmodule.exports = fromYRotation\n","const { sin, cos } = require('../utils/trigonometry')\n\n/**\n * Creates a matrix from the given angle around the Z axis.\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest)\n * mat4.rotateZ(dest, dest, radians)\n *\n * @param {mat4} out - receiving matrix\n * @param {Number} radians - angle to rotate the matrix by\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.fromZRotation\n * @example\n * let matrix = fromZRotation(create(), TAU / 4)\n */\nconst fromZRotation = (out, radians) => {\n const s = sin(radians)\n const c = cos(radians)\n\n // Perform axis-specific matrix multiplication\n out[0] = c\n out[1] = s\n out[2] = 0\n out[3] = 0\n out[4] = -s\n out[5] = c\n out[6] = 0\n out[7] = 0\n out[8] = 0\n out[9] = 0\n out[10] = 1\n out[11] = 0\n out[12] = 0\n out[13] = 0\n out[14] = 0\n out[15] = 1\n return out\n}\n\nmodule.exports = fromZRotation\n","/**\n * Set a matrix to the identity transform.\n *\n * @param {mat4} out - receiving matrix\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.identity\n */\nconst identity = (out) => {\n out[0] = 1\n out[1] = 0\n out[2] = 0\n out[3] = 0\n out[4] = 0\n out[5] = 1\n out[6] = 0\n out[7] = 0\n out[8] = 0\n out[9] = 0\n out[10] = 1\n out[11] = 0\n out[12] = 0\n out[13] = 0\n out[14] = 0\n out[15] = 1\n return out\n}\n\nmodule.exports = identity\n","/**\n * Represents a 4x4 matrix which is column-major (when typed out it looks row-major).\n * @see {@link mat4} for data structure information.\n * @module modeling/maths/mat4\n */\nmodule.exports = {\n add: require('./add'),\n clone: require('./clone'),\n copy: require('./copy'),\n create: require('./create'),\n invert: require('./invert'),\n equals: require('./equals'),\n fromRotation: require('./fromRotation'),\n fromScaling: require('./fromScaling'),\n fromTaitBryanRotation: require('./fromTaitBryanRotation'),\n fromTranslation: require('./fromTranslation'),\n fromValues: require('./fromValues'),\n fromVectorRotation: require('./fromVectorRotation'),\n fromXRotation: require('./fromXRotation'),\n fromYRotation: require('./fromYRotation'),\n fromZRotation: require('./fromZRotation'),\n identity: require('./identity'),\n isIdentity: require('./isIdentity'),\n isOnlyTransformScale: require('./isOnlyTransformScale'),\n isMirroring: require('./isMirroring'),\n mirrorByPlane: require('./mirrorByPlane'),\n multiply: require('./multiply'),\n rotate: require('./rotate'),\n rotateX: require('./rotateX'),\n rotateY: require('./rotateY'),\n rotateZ: require('./rotateZ'),\n scale: require('./scale'),\n subtract: require('./subtract'),\n toString: require('./toString'),\n translate: require('./translate')\n}\n","/**\n * Creates a invert copy of the given matrix.\n * @author Julian Lloyd\n * code from https://github.com/jlmakes/rematrix/blob/master/src/index.js\n *\n * @param {mat4} out - receiving matrix\n * @param {mat4} matrix - matrix to invert\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.invert\n */\nconst invert = (out, matrix) => {\n const a00 = matrix[0]\n const a01 = matrix[1]\n const a02 = matrix[2]\n const a03 = matrix[3]\n const a10 = matrix[4]\n const a11 = matrix[5]\n const a12 = matrix[6]\n const a13 = matrix[7]\n const a20 = matrix[8]\n const a21 = matrix[9]\n const a22 = matrix[10]\n const a23 = matrix[11]\n const a30 = matrix[12]\n const a31 = matrix[13]\n const a32 = matrix[14]\n const a33 = matrix[15]\n\n const b00 = a00 * a11 - a01 * a10\n const b01 = a00 * a12 - a02 * a10\n const b02 = a00 * a13 - a03 * a10\n const b03 = a01 * a12 - a02 * a11\n const b04 = a01 * a13 - a03 * a11\n const b05 = a02 * a13 - a03 * a12\n const b06 = a20 * a31 - a21 * a30\n const b07 = a20 * a32 - a22 * a30\n const b08 = a20 * a33 - a23 * a30\n const b09 = a21 * a32 - a22 * a31\n const b10 = a21 * a33 - a23 * a31\n const b11 = a22 * a33 - a23 * a32\n\n // Calculate the determinant\n let det =\n b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06\n\n if (!det) {\n return null\n }\n det = 1.0 / det\n\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det\n\n return out\n}\n\nmodule.exports = invert\n","/**\n * Determine whether the given matrix is the identity transform.\n * This is equivalent to (but much faster than):\n *\n * mat4.equals(mat4.create(), matrix)\n *\n * @param {mat4} matrix - the matrix\n * @returns {Boolean} true if matrix is the identity transform\n * @alias module:modeling/maths/mat4.isIdentity\n * @example\n * if (mat4.isIdentity(mymatrix)) ...\n */\nconst isIdentity = (matrix) => (\n matrix[0] === 1 && matrix[1] === 0 && matrix[2] === 0 && matrix[3] === 0 &&\n matrix[4] === 0 && matrix[5] === 1 && matrix[6] === 0 && matrix[7] === 0 &&\n matrix[8] === 0 && matrix[9] === 0 && matrix[10] === 1 && matrix[11] === 0 &&\n matrix[12] === 0 && matrix[13] === 0 && matrix[14] === 0 && matrix[15] === 1\n)\n\nmodule.exports = isIdentity\n","/**\n * Determine whether the given matrix is a mirroring transformation.\n *\n * @param {mat4} matrix - matrix of reference\n * @returns {Boolean} true if matrix is a mirroring transformation\n * @alias module:modeling/maths/mat4.isMirroring\n */\nconst isMirroring = (matrix) => {\n // const xVector = [matrix[0], matrix[4], matrix[8]]\n // const yVector = [matrix[1], matrix[5], matrix[9]]\n // const zVector = [matrix[2], matrix[6], matrix[10]]\n\n // for a true orthogonal, non-mirrored base, xVector.cross(yVector) == zVector\n // If they have an opposite direction then we are mirroring\n // calcuate xVector.cross(yVector)\n const x = matrix[4] * matrix[9] - matrix[8] * matrix[5]\n const y = matrix[8] * matrix[1] - matrix[0] * matrix[9]\n const z = matrix[0] * matrix[5] - matrix[4] * matrix[1]\n // calcualte dot(cross, zVector)\n const d = x * matrix[2] + y * matrix[6] + z * matrix[10]\n return (d < 0)\n}\n\nmodule.exports = isMirroring\n","\n/**\n * Determine whether the given matrix is only translate and/or scale.\n * This code returns true for TAU / 2 rotation as it can be interpreted as scale.\n *\n * @param {mat4} matrix - the matrix\n * @returns {Boolean} true if matrix is for translate and/or scale\n * @alias module:modeling/maths/mat4.isOnlyTransformScale\n */\nconst isOnlyTransformScale = (matrix) => (\n\n // TODO check if it is worth the effort to add recognition of 90 deg rotations\n\n isZero(matrix[1]) && isZero(matrix[2]) && isZero(matrix[3]) &&\n isZero(matrix[4]) && isZero(matrix[6]) && isZero(matrix[7]) &&\n isZero(matrix[8]) && isZero(matrix[9]) && isZero(matrix[11]) &&\n matrix[15] === 1\n)\n\nconst isZero = (num) => Math.abs(num) < Number.EPSILON\n\nmodule.exports = isOnlyTransformScale\n","/**\n * Create a matrix for mirroring about the given plane.\n *\n * @param {mat4} out - receiving matrix\n * @param {vec4} plane - plane of which to mirror the matrix\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.mirrorByPlane\n */\nconst mirrorByPlane = (out, plane) => {\n const [nx, ny, nz, w] = plane\n\n out[0] = (1.0 - 2.0 * nx * nx)\n out[1] = (-2.0 * ny * nx)\n out[2] = (-2.0 * nz * nx)\n out[3] = 0\n out[4] = (-2.0 * nx * ny)\n out[5] = (1.0 - 2.0 * ny * ny)\n out[6] = (-2.0 * nz * ny)\n out[7] = 0\n out[8] = (-2.0 * nx * nz)\n out[9] = (-2.0 * ny * nz)\n out[10] = (1.0 - 2.0 * nz * nz)\n out[11] = 0\n out[12] = (2.0 * nx * w)\n out[13] = (2.0 * ny * w)\n out[14] = (2.0 * nz * w)\n out[15] = 1\n\n return out\n}\n\nmodule.exports = mirrorByPlane\n","/**\n * Multiplies the two matrices.\n *\n * @param {mat4} out - receiving matrix\n * @param {mat4} a - first operand\n * @param {mat4} b - second operand\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.multiply\n */\nconst multiply = (out, a, b) => {\n const a00 = a[0]\n const a01 = a[1]\n const a02 = a[2]\n const a03 = a[3]\n const a10 = a[4]\n const a11 = a[5]\n const a12 = a[6]\n const a13 = a[7]\n const a20 = a[8]\n const a21 = a[9]\n const a22 = a[10]\n const a23 = a[11]\n const a30 = a[12]\n const a31 = a[13]\n const a32 = a[14]\n const a33 = a[15]\n\n // Cache only the current line of the second matrix\n let b0 = b[0]\n let b1 = b[1]\n let b2 = b[2]\n let b3 = b[3]\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33\n\n b0 = b[4]\n b1 = b[5]\n b2 = b[6]\n b3 = b[7]\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33\n\n b0 = b[8]\n b1 = b[9]\n b2 = b[10]\n b3 = b[11]\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33\n\n b0 = b[12]\n b1 = b[13]\n b2 = b[14]\n b3 = b[15]\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33\n return out\n}\n\nmodule.exports = multiply\n","const { EPS } = require('../constants')\n\nconst { sin, cos } = require('../utils/trigonometry')\n\nconst copy = require('./copy')\n\n/**\n * Rotates a matrix by the given angle about the given axis.\n *\n * @param {mat4} out - receiving matrix\n * @param {mat4} matrix - matrix to rotate\n * @param {Number} radians - angle to rotate the matrix by\n * @param {vec3} axis - axis to rotate around\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.rotate\n */\nconst rotate = (out, matrix, radians, axis) => {\n let [x, y, z] = axis\n const lengthSquared = x * x + y * y + z * z\n\n if (Math.abs(lengthSquared) < EPS) {\n // axis is 0,0,0 or almost\n return copy(out, matrix)\n }\n\n const len = 1 / Math.sqrt(lengthSquared)\n x *= len\n y *= len\n z *= len\n\n const s = sin(radians)\n const c = cos(radians)\n const t = 1 - c\n\n const a00 = matrix[0]\n const a01 = matrix[1]\n const a02 = matrix[2]\n const a03 = matrix[3]\n const a10 = matrix[4]\n const a11 = matrix[5]\n const a12 = matrix[6]\n const a13 = matrix[7]\n const a20 = matrix[8]\n const a21 = matrix[9]\n const a22 = matrix[10]\n const a23 = matrix[11]\n\n // Construct the elements of the rotation matrix\n const b00 = x * x * t + c\n const b01 = y * x * t + z * s\n const b02 = z * x * t - y * s\n const b10 = x * y * t - z * s\n const b11 = y * y * t + c\n const b12 = z * y * t + x * s\n const b20 = x * z * t + y * s\n const b21 = y * z * t - x * s\n const b22 = z * z * t + c\n\n // Perform rotation-specific matrix multiplication\n out[0] = a00 * b00 + a10 * b01 + a20 * b02\n out[1] = a01 * b00 + a11 * b01 + a21 * b02\n out[2] = a02 * b00 + a12 * b01 + a22 * b02\n out[3] = a03 * b00 + a13 * b01 + a23 * b02\n out[4] = a00 * b10 + a10 * b11 + a20 * b12\n out[5] = a01 * b10 + a11 * b11 + a21 * b12\n out[6] = a02 * b10 + a12 * b11 + a22 * b12\n out[7] = a03 * b10 + a13 * b11 + a23 * b12\n out[8] = a00 * b20 + a10 * b21 + a20 * b22\n out[9] = a01 * b20 + a11 * b21 + a21 * b22\n out[10] = a02 * b20 + a12 * b21 + a22 * b22\n out[11] = a03 * b20 + a13 * b21 + a23 * b22\n\n if (matrix !== out) { // If the source and destination differ, copy the unchanged last row\n out[12] = matrix[12]\n out[13] = matrix[13]\n out[14] = matrix[14]\n out[15] = matrix[15]\n }\n return out\n}\n\nmodule.exports = rotate\n","const { sin, cos } = require('../utils/trigonometry')\n\n/**\n * Rotates a matrix by the given angle around the X axis.\n *\n * @param {mat4} out - receiving matrix\n * @param {mat4} matrix - matrix to rotate\n * @param {Number} radians - angle to rotate the matrix by\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.rotateX\n */\nconst rotateX = (out, matrix, radians) => {\n const s = sin(radians)\n const c = cos(radians)\n const a10 = matrix[4]\n const a11 = matrix[5]\n const a12 = matrix[6]\n const a13 = matrix[7]\n const a20 = matrix[8]\n const a21 = matrix[9]\n const a22 = matrix[10]\n const a23 = matrix[11]\n\n if (matrix !== out) { // If the source and destination differ, copy the unchanged rows\n out[0] = matrix[0]\n out[1] = matrix[1]\n out[2] = matrix[2]\n out[3] = matrix[3]\n out[12] = matrix[12]\n out[13] = matrix[13]\n out[14] = matrix[14]\n out[15] = matrix[15]\n }\n\n // Perform axis-specific matrix multiplication\n out[4] = a10 * c + a20 * s\n out[5] = a11 * c + a21 * s\n out[6] = a12 * c + a22 * s\n out[7] = a13 * c + a23 * s\n out[8] = a20 * c - a10 * s\n out[9] = a21 * c - a11 * s\n out[10] = a22 * c - a12 * s\n out[11] = a23 * c - a13 * s\n return out\n}\n\nmodule.exports = rotateX\n","const { sin, cos } = require('../utils/trigonometry')\n\n/**\n * Rotates a matrix by the given angle around the Y axis.\n *\n * @param {mat4} out - receiving matrix\n * @param {mat4} matrix - matrix to rotate\n * @param {Number} radians - angle to rotate the matrix by\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.rotateY\n */\nconst rotateY = (out, matrix, radians) => {\n const s = sin(radians)\n const c = cos(radians)\n const a00 = matrix[0]\n const a01 = matrix[1]\n const a02 = matrix[2]\n const a03 = matrix[3]\n const a20 = matrix[8]\n const a21 = matrix[9]\n const a22 = matrix[10]\n const a23 = matrix[11]\n\n if (matrix !== out) { // If the source and destination differ, copy the unchanged rows\n out[4] = matrix[4]\n out[5] = matrix[5]\n out[6] = matrix[6]\n out[7] = matrix[7]\n out[12] = matrix[12]\n out[13] = matrix[13]\n out[14] = matrix[14]\n out[15] = matrix[15]\n }\n\n // Perform axis-specific matrix multiplication\n out[0] = a00 * c - a20 * s\n out[1] = a01 * c - a21 * s\n out[2] = a02 * c - a22 * s\n out[3] = a03 * c - a23 * s\n out[8] = a00 * s + a20 * c\n out[9] = a01 * s + a21 * c\n out[10] = a02 * s + a22 * c\n out[11] = a03 * s + a23 * c\n return out\n}\n\nmodule.exports = rotateY\n","const { sin, cos } = require('../utils/trigonometry')\n\n/**\n * Rotates a matrix by the given angle around the Z axis.\n *\n * @param {mat4} out - receiving matrix\n * @param {mat4} matrix - matrix to rotate\n * @param {Number} radians - angle to rotate the matrix by\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.rotateZ\n */\nconst rotateZ = (out, matrix, radians) => {\n const s = sin(radians)\n const c = cos(radians)\n const a00 = matrix[0]\n const a01 = matrix[1]\n const a02 = matrix[2]\n const a03 = matrix[3]\n const a10 = matrix[4]\n const a11 = matrix[5]\n const a12 = matrix[6]\n const a13 = matrix[7]\n\n if (matrix !== out) { // If the source and destination differ, copy the unchanged last row\n out[8] = matrix[8]\n out[9] = matrix[9]\n out[10] = matrix[10]\n out[11] = matrix[11]\n out[12] = matrix[12]\n out[13] = matrix[13]\n out[14] = matrix[14]\n out[15] = matrix[15]\n }\n\n // Perform axis-specific matrix multiplication\n out[0] = a00 * c + a10 * s\n out[1] = a01 * c + a11 * s\n out[2] = a02 * c + a12 * s\n out[3] = a03 * c + a13 * s\n out[4] = a10 * c - a00 * s\n out[5] = a11 * c - a01 * s\n out[6] = a12 * c - a02 * s\n out[7] = a13 * c - a03 * s\n return out\n}\n\nmodule.exports = rotateZ\n","/**\n * Scales the matrix by the given dimensions.\n *\n * @param {mat4} out - receiving matrix\n * @param {mat4} matrix - matrix to scale\n * @param {vec3} dimensions - dimensions to scale the matrix by\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.scale\n */\nconst scale = (out, matrix, dimensions) => {\n const x = dimensions[0]\n const y = dimensions[1]\n const z = dimensions[2]\n\n out[0] = matrix[0] * x\n out[1] = matrix[1] * x\n out[2] = matrix[2] * x\n out[3] = matrix[3] * x\n out[4] = matrix[4] * y\n out[5] = matrix[5] * y\n out[6] = matrix[6] * y\n out[7] = matrix[7] * y\n out[8] = matrix[8] * z\n out[9] = matrix[9] * z\n out[10] = matrix[10] * z\n out[11] = matrix[11] * z\n out[12] = matrix[12]\n out[13] = matrix[13]\n out[14] = matrix[14]\n out[15] = matrix[15]\n return out\n}\n\nmodule.exports = scale\n","/**\n * Subtracts matrix b from matrix a. (A-B)\n *\n * @param {mat4} out - receiving matrix\n * @param {mat4} a - first operand\n * @param {mat4} b - second operand\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.subtract\n */\nconst subtract = (out, a, b) => {\n out[0] = a[0] - b[0]\n out[1] = a[1] - b[1]\n out[2] = a[2] - b[2]\n out[3] = a[3] - b[3]\n out[4] = a[4] - b[4]\n out[5] = a[5] - b[5]\n out[6] = a[6] - b[6]\n out[7] = a[7] - b[7]\n out[8] = a[8] - b[8]\n out[9] = a[9] - b[9]\n out[10] = a[10] - b[10]\n out[11] = a[11] - b[11]\n out[12] = a[12] - b[12]\n out[13] = a[13] - b[13]\n out[14] = a[14] - b[14]\n out[15] = a[15] - b[15]\n return out\n}\n\nmodule.exports = subtract\n","/**\n * Return a string representing the given matrix.\n *\n * @param {mat4} mat - matrix of reference\n * @returns {String} string representation\n * @alias module:modeling/maths/mat4.toString\n */\nconst toString = (mat) => mat.map((n) => n.toFixed(7)).toString()\n\nmodule.exports = toString\n","/**\n * Translate the matrix by the given offset vector.\n *\n * @param {mat4} out - receiving matrix\n * @param {mat4} matrix - matrix to translate\n * @param {vec3} offsets - offset vector to translate by\n * @returns {mat4} out\n * @alias module:modeling/maths/mat4.translate\n */\nconst translate = (out, matrix, offsets) => {\n const x = offsets[0]\n const y = offsets[1]\n const z = offsets[2]\n let a00\n let a01\n let a02\n let a03\n let a10\n let a11\n let a12\n let a13\n let a20\n let a21\n let a22\n let a23\n\n if (matrix === out) {\n // 0-11 assignments are unnecessary\n out[12] = matrix[0] * x + matrix[4] * y + matrix[8] * z + matrix[12]\n out[13] = matrix[1] * x + matrix[5] * y + matrix[9] * z + matrix[13]\n out[14] = matrix[2] * x + matrix[6] * y + matrix[10] * z + matrix[14]\n out[15] = matrix[3] * x + matrix[7] * y + matrix[11] * z + matrix[15]\n } else {\n a00 = matrix[0]; a01 = matrix[1]; a02 = matrix[2]; a03 = matrix[3]\n a10 = matrix[4]; a11 = matrix[5]; a12 = matrix[6]; a13 = matrix[7]\n a20 = matrix[8]; a21 = matrix[9]; a22 = matrix[10]; a23 = matrix[11]\n\n out[0] = a00; out[1] = a01; out[2] = a02; out[3] = a03\n out[4] = a10; out[5] = a11; out[6] = a12; out[7] = a13\n out[8] = a20; out[9] = a21; out[10] = a22; out[11] = a23\n\n out[12] = a00 * x + a10 * y + a20 * z + matrix[12]\n out[13] = a01 * x + a11 * y + a21 * z + matrix[13]\n out[14] = a02 * x + a12 * y + a22 * z + matrix[14]\n out[15] = a03 * x + a13 * y + a23 * z + matrix[15]\n }\n\n return out\n}\n\nmodule.exports = translate\n","/**\n * Flip the given plane.\n *\n * @param {plane} out - receiving plane\n * @param {plane} plane - plane to flip\n * @return {plane} out\n * @alias module:modeling/maths/plane.flip\n */\nconst flip = (out, plane) => {\n out[0] = -plane[0]\n out[1] = -plane[1]\n out[2] = -plane[2]\n out[3] = -plane[3]\n return out\n}\n\nmodule.exports = flip\n","const vec3 = require('../vec3')\n\n/**\n * Represents a plane in 3D coordinate space as determined by a normal (perpendicular to the plane)\n * and distance from 0,0,0.\n *\n * The contents of the array are a normal [0,1,2] and a distance [3].\n * @see https://en.wikipedia.org/wiki/Hesse_normal_form\n * @typedef {Array} plane\n */\n\n/**\n * Create a new plane from the given normal and point values.\n *\n * @param {plane} out - receiving plane\n * @param {vec3} normal - directional vector\n * @param {vec3} point - origin of plane\n * @returns {plane} out\n * @alias module:modeling/maths/plane.fromNormalAndPoint\n */\nconst fromNormalAndPoint = (out, normal, point) => {\n const u = vec3.normalize(vec3.create(), normal)\n const w = vec3.dot(point, u)\n\n out[0] = u[0]\n out[1] = u[1]\n out[2] = u[2]\n out[3] = w\n return out\n}\n\nmodule.exports = fromNormalAndPoint\n","const vec3 = require('../vec3')\n\n/**\n * Create a plane from the given points.\n *\n * @param {plane} out - receiving plane\n * @param {Array} vertices - points on the plane\n * @returns {plane} out\n * @alias module:modeling/maths/plane.fromPoints\n */\nconst fromPoints = (out, ...vertices) => {\n const len = vertices.length\n\n // Calculate normal vector for a single vertex\n // Inline to avoid allocations\n const ba = vec3.create()\n const ca = vec3.create()\n const vertexNormal = (index) => {\n const a = vertices[index]\n const b = vertices[(index + 1) % len]\n const c = vertices[(index + 2) % len]\n vec3.subtract(ba, b, a) // ba = b - a\n vec3.subtract(ca, c, a) // ca = c - a\n vec3.cross(ba, ba, ca) // ba = ba x ca\n vec3.normalize(ba, ba)\n return ba\n }\n\n out[0] = 0\n out[1] = 0\n out[2] = 0\n if (len === 3) {\n // optimization for triangles, which are always coplanar\n vec3.copy(out, vertexNormal(0))\n } else {\n // sum of vertex normals\n vertices.forEach((v, i) => {\n vec3.add(out, out, vertexNormal(i))\n })\n // renormalize normal vector\n vec3.normalize(out, out)\n }\n out[3] = vec3.dot(out, vertices[0])\n return out\n}\n\nmodule.exports = fromPoints\n","const { EPS } = require('../constants')\n\nconst vec3 = require('../vec3')\n\n/**\n * Create a new plane from the given points like fromPoints,\n * but allow the vectors to be on one point or one line.\n * In such a case, a random plane through the given points is constructed.\n *\n * @param {plane} out - receiving plane\n * @param {vec3} a - 3D point\n * @param {vec3} b - 3D point\n * @param {vec3} c - 3D point\n * @returns {plane} out\n * @alias module:modeling/maths/plane.fromPointsRandom\n */\nconst fromPointsRandom = (out, a, b, c) => {\n let ba = vec3.subtract(vec3.create(), b, a)\n let ca = vec3.subtract(vec3.create(), c, a)\n if (vec3.length(ba) < EPS) {\n ba = vec3.orthogonal(ba, ca)\n }\n if (vec3.length(ca) < EPS) {\n ca = vec3.orthogonal(ca, ba)\n }\n let normal = vec3.cross(vec3.create(), ba, ca)\n if (vec3.length(normal) < EPS) {\n // this would mean that ba == ca.negated()\n ca = vec3.orthogonal(ca, ba)\n normal = vec3.cross(normal, ba, ca)\n }\n normal = vec3.normalize(normal, normal)\n const w = vec3.dot(normal, a)\n\n out[0] = normal[0]\n out[1] = normal[1]\n out[2] = normal[2]\n out[3] = w\n return out\n}\n\nmodule.exports = fromPointsRandom\n","/**\n * Represents a plane in 3D coordinate space as determined by a normal (perpendicular to the plane)\n * and distance from 0,0,0.\n * @see {@link plane} for data structure information.\n * @module modeling/maths/plane\n */\nmodule.exports = {\n /**\n * @see [vec4.clone()]{@link module:modeling/maths/vec4.clone}\n * @function clone\n */\n clone: require('../vec4/clone'),\n /**\n * @see [vec4.copy()]{@link module:modeling/maths/vec4.copy}\n * @function copy\n */\n copy: require('../vec4/copy'),\n /**\n * @see [vec4.create()]{@link module:modeling/maths/vec4.create}\n * @function create\n */\n create: require('../vec4/create'),\n /**\n * @see [vec4.equals()]{@link module:modeling/maths/vec4.equals}\n * @function equals\n */\n equals: require('../vec4/equals'),\n flip: require('./flip'),\n fromNormalAndPoint: require('./fromNormalAndPoint'),\n /**\n * @see [vec4.fromValues()]{@link module:modeling/maths/vec4.fromValues}\n * @function fromValues\n */\n fromValues: require('../vec4/fromValues'),\n fromPoints: require('./fromPoints'),\n fromPointsRandom: require('./fromPointsRandom'),\n projectionOfPoint: require('./projectionOfPoint'),\n signedDistanceToPoint: require('./signedDistanceToPoint'),\n /**\n * @see [vec4.toString()]{@link module:modeling/maths/vec4.toString}\n * @function toString\n */\n toString: require('../vec4/toString'),\n transform: require('./transform')\n}\n","const vec3 = require('../vec3')\n\n/**\n * Project the given point on to the given plane.\n *\n * @param {plane} plane - plane of reference\n * @param {vec3} point - point of reference\n * @return {vec3} projected point on plane\n * @alias module:modeling/maths/plane.projectionOfPoint\n */\nconst projectionOfPoint = (plane, point) => {\n const a = point[0] * plane[0] + point[1] * plane[1] + point[2] * plane[2] - plane[3]\n const x = point[0] - a * plane[0]\n const y = point[1] - a * plane[1]\n const z = point[2] - a * plane[2]\n return vec3.fromValues(x, y, z)\n}\n\nmodule.exports = projectionOfPoint\n","const vec3 = require('../vec3')\n\n/**\n * Calculate the distance to the given point.\n *\n * @param {plane} plane - plane of reference\n * @param {vec3} point - point of reference\n * @return {Number} signed distance to point\n * @alias module:modeling/maths/plane.signedDistanceToPoint\n */\nconst signedDistanceToPoint = (plane, point) => vec3.dot(plane, point) - plane[3]\n\nmodule.exports = signedDistanceToPoint\n","const mat4 = require('../mat4')\nconst vec3 = require('../vec3')\n\nconst fromPoints = require('./fromPoints')\nconst flip = require('./flip')\n\n/**\n * Transform the given plane using the given matrix\n *\n * @param {plane} out - receiving plane\n * @param {plane} plane - plane to transform\n * @param {mat4} matrix - matrix to transform with\n * @return {plane} out\n * @alias module:modeling/maths/plane.transform\n */\nconst transform = (out, plane, matrix) => {\n const ismirror = mat4.isMirroring(matrix)\n // get two vectors in the plane:\n const r = vec3.orthogonal(vec3.create(), plane)\n const u = vec3.cross(r, plane, r)\n const v = vec3.cross(vec3.create(), plane, u)\n // get 3 points in the plane:\n let point1 = vec3.fromScalar(vec3.create(), plane[3])\n vec3.multiply(point1, point1, plane)\n let point2 = vec3.add(vec3.create(), point1, u)\n let point3 = vec3.add(vec3.create(), point1, v)\n // transform the points:\n point1 = vec3.transform(point1, point1, matrix)\n point2 = vec3.transform(point2, point2, matrix)\n point3 = vec3.transform(point3, point3, matrix)\n // and create a new plane from the transformed points:\n fromPoints(out, point1, point2, point3)\n if (ismirror) {\n // the transform is mirroring so flip the plane\n flip(out, out)\n }\n return out\n}\n\nmodule.exports = transform\n","const { NEPS } = require('../constants')\n\n/**\n * Compare two normals (unit vectors) for near equality.\n * @param {vec3} a - normal a\n * @param {vec3} b - normal b\n * @returns {Boolean} true if a and b are nearly equal\n * @alias module:modeling/maths/utils.aboutEqualNormals\n */\nconst aboutEqualNormals = (a, b) => (Math.abs(a[0] - b[0]) <= NEPS && Math.abs(a[1] - b[1]) <= NEPS && Math.abs(a[2] - b[2]) <= NEPS)\n\nmodule.exports = aboutEqualNormals\n","/**\n * Calculate the area under the given points.\n * @param {Array} points - list of 2D points\n * @return {Number} area under the given points\n * @alias module:modeling/maths/utils.area\n */\nconst area = (points) => {\n let area = 0\n for (let i = 0; i < points.length; i++) {\n const j = (i + 1) % points.length\n area += points[i][0] * points[j][1]\n area -= points[j][0] * points[i][1]\n }\n return (area / 2.0)\n}\n\nmodule.exports = area\n","/**\n * Utility functions for maths.\n * @module modeling/maths/utils\n * @example\n * const { area, solve2Linear } = require('@jscad/maths').utils\n */\nmodule.exports = {\n aboutEqualNormals: require('./aboutEqualNormals'),\n area: require('./area'),\n cos: require('./trigonometry').cos,\n interpolateBetween2DPointsForY: require('./interpolateBetween2DPointsForY'),\n intersect: require('./intersect'),\n sin: require('./trigonometry').sin,\n solve2Linear: require('./solve2Linear')\n}\n","/**\n * Get the X coordinate of a point with a certain Y coordinate, interpolated between two points.\n * Interpolation is robust even if the points have the same Y coordinate\n * @param {vec2} point1\n * @param {vec2} point2\n * @param {Number} y\n * @return {Array} X and Y of interpolated point\n * @alias module:modeling/maths/utils.interpolateBetween2DPointsForY\n */\nconst interpolateBetween2DPointsForY = (point1, point2, y) => {\n let f1 = y - point1[1]\n let f2 = point2[1] - point1[1]\n if (f2 < 0) {\n f1 = -f1\n f2 = -f2\n }\n let t\n if (f1 <= 0) {\n t = 0.0\n } else if (f1 >= f2) {\n t = 1.0\n } else if (f2 < 1e-10) { // FIXME Should this be EPS?\n t = 0.5\n } else {\n t = f1 / f2\n }\n const result = point1[0] + t * (point2[0] - point1[0])\n return result\n}\n\nmodule.exports = interpolateBetween2DPointsForY\n","/**\n * Calculate the intersect point of the two line segments (p1-p2 and p3-p4), end points included.\n * Note: If the line segments do NOT intersect then undefined is returned.\n * @see http://paulbourke.net/geometry/pointlineplane/\n * @param {vec2} p1 - first point of first line segment\n * @param {vec2} p2 - second point of first line segment\n * @param {vec2} p3 - first point of second line segment\n * @param {vec2} p4 - second point of second line segment\n * @returns {vec2} intersection point of the two line segments, or undefined\n * @alias module:modeling/maths/utils.intersect\n */\nconst intersect = (p1, p2, p3, p4) => {\n // Check if none of the lines are of length 0\n if ((p1[0] === p2[0] && p1[1] === p2[1]) || (p3[0] === p4[0] && p3[1] === p4[1])) {\n return undefined\n }\n\n const denominator = ((p4[1] - p3[1]) * (p2[0] - p1[0]) - (p4[0] - p3[0]) * (p2[1] - p1[1]))\n\n // Lines are parallel\n if (Math.abs(denominator) < Number.MIN_VALUE) {\n return undefined\n }\n\n const ua = ((p4[0] - p3[0]) * (p1[1] - p3[1]) - (p4[1] - p3[1]) * (p1[0] - p3[0])) / denominator\n const ub = ((p2[0] - p1[0]) * (p1[1] - p3[1]) - (p2[1] - p1[1]) * (p1[0] - p3[0])) / denominator\n\n // is the intersection along the segments\n if (ua < 0 || ua > 1 || ub < 0 || ub > 1) {\n return undefined\n }\n\n // Return the x and y coordinates of the intersection\n const x = p1[0] + ua * (p2[0] - p1[0])\n const y = p1[1] + ua * (p2[1] - p1[1])\n\n return [x, y]\n}\n\nmodule.exports = intersect\n","const solve2Linear = (a, b, c, d, u, v) => {\n const det = a * d - b * c\n const invdet = 1.0 / det\n let x = u * d - b * v\n let y = -u * c + a * v\n x *= invdet\n y *= invdet\n return [x, y]\n}\n\nmodule.exports = solve2Linear\n","const { NEPS } = require('../constants')\n\n/*\n * Returns zero if n is within epsilon of zero, otherwise return n\n */\nconst rezero = (n) => Math.abs(n) < NEPS ? 0 : n\n\n/**\n * Return Math.sin but accurate for TAU / 4 rotations.\n * Fixes rounding errors when sin should be 0.\n *\n * @param {Number} radians - angle in radians\n * @returns {Number} sine of the given angle\n * @alias module:modeling/utils.sin\n * @example\n * sin(TAU / 2) == 0\n * sin(TAU) == 0\n */\nconst sin = (radians) => rezero(Math.sin(radians))\n\n/**\n * Return Math.cos but accurate for TAU / 4 rotations.\n * Fixes rounding errors when cos should be 0.\n *\n * @param {Number} radians - angle in radians\n * @returns {Number} cosine of the given angle\n * @alias module:modeling/utils.cos\n * @example\n * cos(TAU * 0.25) == 0\n * cos(TAU * 0.75) == 0\n */\nconst cos = (radians) => rezero(Math.cos(radians))\n\nmodule.exports = { sin, cos }\n","/**\n * Calculates the absolute coordinates of the given vector.\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} vector - vector of reference\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.abs\n */\nconst abs = (out, vector) => {\n out[0] = Math.abs(vector[0])\n out[1] = Math.abs(vector[1])\n return out\n}\n\nmodule.exports = abs\n","/**\n * Adds the coordinates of two vectors (A+B).\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} a - first operand\n * @param {vec2} b - second operand\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.add\n */\nconst add = (out, a, b) => {\n out[0] = a[0] + b[0]\n out[1] = a[1] + b[1]\n return out\n}\n\nmodule.exports = add\n","module.exports = require('./angleRadians')\n","const angleRadians = require('./angleRadians')\n\n/**\n * Calculate the angle of the given vector.\n *\n * @param {vec2} vector - vector of reference\n * @returns {Number} angle in degrees\n * @alias module:modeling/maths/vec2.angleDegrees\n */\nconst angleDegrees = (vector) => angleRadians(vector) * 57.29577951308232\n\nmodule.exports = angleDegrees\n","/**\n * Calculate the angle of the given vector.\n *\n * @param {vec2} vector - vector of reference\n * @returns {Number} angle in radians\n * @alias module:modeling/maths/vec2.angleRadians\n */\nconst angleRadians = (vector) => Math.atan2(vector[1], vector[0]) // y=sin, x=cos\n\nmodule.exports = angleRadians\n","const create = require('./create')\n\n/**\n * Create a clone of the given vector.\n *\n * @param {vec2} vector - vector to clone\n * @returns {vec2} a new vector\n * @alias module:modeling/maths/vec2.clone\n */\nconst clone = (vector) => {\n const out = create()\n out[0] = vector[0]\n out[1] = vector[1]\n return out\n}\n\nmodule.exports = clone\n","/**\n * Create a copy of the given vector.\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} vector - source vector\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.copy\n */\nconst copy = (out, vector) => {\n out[0] = vector[0]\n out[1] = vector[1]\n return out\n}\n\nmodule.exports = copy\n","/**\n * Represents a two dimensional vector.\n * See fromValues().\n * @typedef {Array} vec2\n */\n\n/**\n * Creates a new vector, initialized to [0,0].\n *\n * @returns {vec2} a new vector\n * @alias module:modeling/maths/vec2.create\n */\nconst create = () => [0, 0]\n\nmodule.exports = create\n","/**\n * Computes the cross product (3D) of two vectors.\n *\n * @param {vec3} out - receiving vector (3D)\n * @param {vec2} a - first operand\n * @param {vec2} b - second operand\n * @returns {vec3} out\n * @alias module:modeling/maths/vec2.cross\n */\nconst cross = (out, a, b) => {\n out[0] = 0\n out[1] = 0\n out[2] = a[0] * b[1] - a[1] * b[0]\n return out\n}\n\nmodule.exports = cross\n","/**\n * Calculates the distance between two vectors.\n *\n * @param {vec2} a - first operand\n * @param {vec2} b - second operand\n * @returns {Number} distance\n * @alias module:modeling/maths/vec2.distance\n */\nconst distance = (a, b) => {\n const x = b[0] - a[0]\n const y = b[1] - a[1]\n return Math.sqrt(x * x + y * y)\n}\n\nmodule.exports = distance\n","/**\n * Divides the coordinates of two vectors (A/B).\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} a - first operand\n * @param {vec2} b - second operand\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.divide\n */\nconst divide = (out, a, b) => {\n out[0] = a[0] / b[0]\n out[1] = a[1] / b[1]\n return out\n}\n\nmodule.exports = divide\n","/**\n * Calculates the dot product of two vectors.\n *\n * @param {vec2} a - first operand\n * @param {vec2} b - second operand\n * @returns {Number} dot product\n * @alias module:modeling/maths/vec2.dot\n */\nconst dot = (a, b) => a[0] * b[0] + a[1] * b[1]\n\nmodule.exports = dot\n","/**\n * Compare the given vectors for equality.\n *\n * @param {vec2} a - first operand\n * @param {vec2} b - second operand\n * @returns {Boolean} true if a and b are equal\n * @alias module:modeling/maths/vec2.equals\n */\nconst equals = (a, b) => (a[0] === b[0]) && (a[1] === b[1])\n\nmodule.exports = equals\n","const fromAngleRadians = require('./fromAngleRadians')\n\n/**\n * Create a new vector in the direction of the given angle.\n *\n * @param {vec2} out - receiving vector\n * @param {Number} degrees - angle in degrees\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.fromAngleDegrees\n */\nconst fromAngleDegrees = (out, degrees) => fromAngleRadians(out, degrees * 0.017453292519943295)\n\nmodule.exports = fromAngleDegrees\n","const { sin, cos } = require('../utils/trigonometry')\n\n/**\n * Create a new vector in the direction of the given angle.\n *\n * @param {vec2} out - receiving vector\n * @param {Number} radians - angle in radians\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.fromAngleRadians\n */\nconst fromAngleRadians = (out, radians) => {\n out[0] = cos(radians)\n out[1] = sin(radians)\n return out\n}\n\nmodule.exports = fromAngleRadians\n","/**\n * Create a vector from a single scalar value.\n *\n * @param {vec2} out - receiving vector\n * @param {Number} scalar - the scalar value\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.fromScalar\n */\nconst fromScalar = (out, scalar) => {\n out[0] = scalar\n out[1] = scalar\n return out\n}\n\nmodule.exports = fromScalar\n","const create = require('./create')\n\n/**\n * Creates a new vector initialized with the given values.\n *\n * @param {Number} x - X coordinate\n * @param {Number} y - Y coordinate\n * @returns {vec2} a new vector\n * @alias module:modeling/maths/vec2.fromValues\n */\nconst fromValues = (x, y) => {\n const out = create()\n out[0] = x\n out[1] = y\n return out\n}\n\nmodule.exports = fromValues\n","/**\n * Represents a two dimensional vector.\n * @module modeling/maths/vec2\n */\nmodule.exports = {\n abs: require('./abs'),\n add: require('./add'),\n angle: require('./angle'),\n angleDegrees: require('./angleDegrees'),\n angleRadians: require('./angleRadians'),\n clone: require('./clone'),\n copy: require('./copy'),\n create: require('./create'),\n cross: require('./cross'),\n distance: require('./distance'),\n divide: require('./divide'),\n dot: require('./dot'),\n equals: require('./equals'),\n fromAngleDegrees: require('./fromAngleDegrees'),\n fromAngleRadians: require('./fromAngleRadians'),\n fromScalar: require('./fromScalar'),\n fromValues: require('./fromValues'),\n length: require('./length'),\n lerp: require('./lerp'),\n max: require('./max'),\n min: require('./min'),\n multiply: require('./multiply'),\n negate: require('./negate'),\n normal: require('./normal'),\n normalize: require('./normalize'),\n rotate: require('./rotate'),\n scale: require('./scale'),\n snap: require('./snap'),\n squaredDistance: require('./squaredDistance'),\n squaredLength: require('./squaredLength'),\n subtract: require('./subtract'),\n toString: require('./toString'),\n transform: require('./transform')\n}\n","/**\n * Calculates the length of the given vector.\n *\n * @param {vec2} vector - vector of reference\n * @returns {Number} length\n * @alias module:modeling/maths/vec2.length\n */\nconst length = (vector) => Math.sqrt(vector[0] * vector[0] + vector[1] * vector[1])\n\nmodule.exports = length\n","/**\n * Performs a linear interpolation between two vectors.\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} a - first operand\n * @param {vec2} b - second operand\n * @param {Number} t - interpolation amount between the two vectors\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.lerp\n */\nconst lerp = (out, a, b, t) => {\n const ax = a[0]\n const ay = a[1]\n out[0] = ax + t * (b[0] - ax)\n out[1] = ay + t * (b[1] - ay)\n return out\n}\n\nmodule.exports = lerp\n","/**\n * Returns the maximum coordinates of two vectors.\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} a - first operand\n * @param {vec2} b - second operand\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.max\n */\nconst max = (out, a, b) => {\n out[0] = Math.max(a[0], b[0])\n out[1] = Math.max(a[1], b[1])\n return out\n}\n\nmodule.exports = max\n","/**\n * Returns the minimum coordinates of two vectors.\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} a - first operand\n * @param {vec2} b - second operand\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.min\n */\nconst min = (out, a, b) => {\n out[0] = Math.min(a[0], b[0])\n out[1] = Math.min(a[1], b[1])\n return out\n}\n\nmodule.exports = min\n","/**\n * Multiplies the coordinates of two vectors (A*B).\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} a - first operand\n * @param {vec2} b - second operand\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.multiply\n */\nconst multiply = (out, a, b) => {\n out[0] = a[0] * b[0]\n out[1] = a[1] * b[1]\n return out\n}\n\nmodule.exports = multiply\n","/**\n * Negates the coordinates of the given vector.\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} vector - vector to negate\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.negate\n */\nconst negate = (out, vector) => {\n out[0] = -vector[0]\n out[1] = -vector[1]\n return out\n}\n\nmodule.exports = negate\n","const { TAU } = require('../constants')\n\nconst create = require('./create')\nconst rotate = require('./rotate')\n\n/**\n * Calculates the normal of the given vector.\n * The normal value is the given vector rotated 90 degrees.\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} vector - given value\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.normal\n */\nconst normal = (out, vector) => rotate(out, vector, create(), (TAU / 4))\n\nmodule.exports = normal\n","/**\n * Normalize the given vector.\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} vector - vector to normalize\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.normalize\n */\nconst normalize = (out, vector) => {\n const x = vector[0]\n const y = vector[1]\n let len = x * x + y * y\n if (len > 0) {\n len = 1 / Math.sqrt(len)\n }\n out[0] = x * len\n out[1] = y * len\n return out\n}\n\n// old this.dividedBy(this.length())\n\nmodule.exports = normalize\n","/**\n * Rotates the given vector by the given angle.\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} vector - vector to rotate\n * @param {vec2} origin - origin of the rotation\n * @param {Number} radians - angle of rotation (radians)\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.rotate\n */\nconst rotate = (out, vector, origin, radians) => {\n const x = vector[0] - origin[0]\n const y = vector[1] - origin[1]\n const c = Math.cos(radians)\n const s = Math.sin(radians)\n\n out[0] = x * c - y * s + origin[0]\n out[1] = x * s + y * c + origin[1]\n\n return out\n}\n\nmodule.exports = rotate\n","/**\n * Scales the coordinates of the given vector.\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} vector - vector to scale\n * @param {Number} amount - amount to scale\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.scale\n */\nconst scale = (out, vector, amount) => {\n out[0] = vector[0] * amount\n out[1] = vector[1] * amount\n return out\n}\n\nmodule.exports = scale\n","/**\n * Snaps the coordinates of the given vector to the given epsilon.\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} vector - vector to snap\n * @param {Number} epsilon - epsilon of precision, less than 0\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.snap\n */\nconst snap = (out, vector, epsilon) => {\n out[0] = Math.round(vector[0] / epsilon) * epsilon + 0\n out[1] = Math.round(vector[1] / epsilon) * epsilon + 0\n return out\n}\n\nmodule.exports = snap\n","/**\n * Calculates the squared distance between the given vectors.\n *\n * @param {vec2} a - first operand\n * @param {vec2} b - second operand\n * @returns {Number} squared distance\n * @alias module:modeling/maths/vec2.squaredDistance\n */\nconst squaredDistance = (a, b) => {\n const x = b[0] - a[0]\n const y = b[1] - a[1]\n return x * x + y * y\n}\n\nmodule.exports = squaredDistance\n","/**\n * Calculates the squared length of the given vector.\n *\n * @param {vec2} vector - vector of reference\n * @returns {Number} squared length\n * @alias module:modeling/maths/vec2.squaredLength\n */\nconst squaredLength = (vector) => {\n const x = vector[0]\n const y = vector[1]\n return x * x + y * y\n}\n\nmodule.exports = squaredLength\n","/**\n * Subtracts the coordinates of two vectors (A-B).\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} a - first operand\n * @param {vec2} b - second operand\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.subtract\n */\nconst subtract = (out, a, b) => {\n out[0] = a[0] - b[0]\n out[1] = a[1] - b[1]\n return out\n}\n\nmodule.exports = subtract\n","/**\n * Convert the given vector to a representative string.\n *\n * @param {vec2} vector - vector of reference\n * @returns {String} string representation\n * @alias module:modeling/maths/vec2.toString\n */\nconst toString = (vector) => `[${vector[0].toFixed(7)}, ${vector[1].toFixed(7)}]`\n\nmodule.exports = toString\n","/**\n * Transforms the given vector using the given matrix.\n *\n * @param {vec2} out - receiving vector\n * @param {vec2} vector - vector to transform\n * @param {mat4} matrix - matrix to transform with\n * @returns {vec2} out\n * @alias module:modeling/maths/vec2.transform\n */\nconst transform = (out, vector, matrix) => {\n const x = vector[0]\n const y = vector[1]\n out[0] = matrix[0] * x + matrix[4] * y + matrix[12]\n out[1] = matrix[1] * x + matrix[5] * y + matrix[13]\n return out\n}\n\nmodule.exports = transform\n","/**\n * Calculates the absolute coordinates of the give vector.\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} vector - vector of reference\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.abs\n */\nconst abs = (out, vector) => {\n out[0] = Math.abs(vector[0])\n out[1] = Math.abs(vector[1])\n out[2] = Math.abs(vector[2])\n return out\n}\n\nmodule.exports = abs\n","/**\n * Adds the coordinates of two vectors (A+B).\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} a - first operand\n * @param {vec3} b - second operand\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.add\n */\nconst add = (out, a, b) => {\n out[0] = a[0] + b[0]\n out[1] = a[1] + b[1]\n out[2] = a[2] + b[2]\n return out\n}\n\nmodule.exports = add\n","const dot = require('./dot')\n\n/**\n * Calculate the angle between two vectors.\n *\n * @param {vec3} a - first operand\n * @param {vec3} b - second operand\n * @returns {Number} angle (radians)\n * @alias module:modeling/maths/vec3.angle\n */\nconst angle = (a, b) => {\n const ax = a[0]\n const ay = a[1]\n const az = a[2]\n const bx = b[0]\n const by = b[1]\n const bz = b[2]\n const mag1 = Math.sqrt(ax * ax + ay * ay + az * az)\n const mag2 = Math.sqrt(bx * bx + by * by + bz * bz)\n const mag = mag1 * mag2\n const cosine = mag && dot(a, b) / mag\n return Math.acos(Math.min(Math.max(cosine, -1), 1))\n}\n\nmodule.exports = angle\n","const create = require('./create')\n\n/**\n * Create a clone of the given vector.\n *\n * @param {vec3} vector - vector to clone\n * @returns {vec3} a new vector\n * @alias module:modeling/maths/vec3.clone\n */\nconst clone = (vector) => {\n const out = create()\n out[0] = vector[0]\n out[1] = vector[1]\n out[2] = vector[2]\n return out\n}\n\nmodule.exports = clone\n","/**\n * Create a copy of the given vector.\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} vector - vector to copy\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.copy\n */\nconst copy = (out, vector) => {\n out[0] = vector[0]\n out[1] = vector[1]\n out[2] = vector[2]\n return out\n}\n\nmodule.exports = copy\n","/**\n * Represents a three dimensional vector.\n * See fromValues().\n * @typedef {Array} vec3\n */\n\n/**\n * Creates a new vector initialized to [0,0,0].\n *\n * @returns {vec3} a new vector\n * @alias module:modeling/maths/vec3.create\n */\nconst create = () => [0, 0, 0]\n\nmodule.exports = create\n","/**\n * Computes the cross product of the given vectors (AxB).\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} a - first operand\n * @param {vec3} b - second operand\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.cross\n */\nconst cross = (out, a, b) => {\n const ax = a[0]\n const ay = a[1]\n const az = a[2]\n const bx = b[0]\n const by = b[1]\n const bz = b[2]\n\n out[0] = ay * bz - az * by\n out[1] = az * bx - ax * bz\n out[2] = ax * by - ay * bx\n return out\n}\n\nmodule.exports = cross\n","/**\n * Calculates the Euclidian distance between the given vectors.\n *\n * @param {vec3} a - first operand\n * @param {vec3} b - second operand\n * @returns {Number} distance\n * @alias module:modeling/maths/vec3.distance\n */\nconst distance = (a, b) => {\n const x = b[0] - a[0]\n const y = b[1] - a[1]\n const z = b[2] - a[2]\n return Math.sqrt(x * x + y * y + z * z)\n}\n\nmodule.exports = distance\n","/**\n * Divides the coordinates of two vectors (A/B).\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} a - dividend vector\n * @param {vec3} b - divisor vector\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.divide\n */\nconst divide = (out, a, b) => {\n out[0] = a[0] / b[0]\n out[1] = a[1] / b[1]\n out[2] = a[2] / b[2]\n return out\n}\n\nmodule.exports = divide\n","/**\n * Calculates the dot product of two vectors.\n *\n * @param {vec3} a - first operand\n * @param {vec3} b - second operand\n * @returns {Number} dot product\n * @alias module:modeling/maths/vec3.dot\n */\nconst dot = (a, b) => a[0] * b[0] + a[1] * b[1] + a[2] * b[2]\n\nmodule.exports = dot\n","/**\n * Compare the given vectors for equality.\n *\n * @param {vec3} a - first operand\n * @param {vec3} b - second operand\n * @returns {Boolean} true if a and b are equal\n * @alias module:modeling/maths/vec3.equals\n */\nconst equals = (a, b) => (a[0] === b[0]) && (a[1] === b[1]) && (a[2] === b[2])\n\nmodule.exports = equals\n","/**\n * Creates a vector from a single scalar value.\n * All components of the resulting vector have the given value.\n *\n * @param {vec3} out - receiving vector\n * @param {Number} scalar\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.fromScalar\n */\nconst fromScalar = (out, scalar) => {\n out[0] = scalar\n out[1] = scalar\n out[2] = scalar\n return out\n}\n\nmodule.exports = fromScalar\n","const create = require('./create')\n\n/**\n * Creates a new vector initialized with the given values.\n *\n * @param {Number} x - X component\n * @param {Number} y - Y component\n * @param {Number} z - Z component\n * @returns {vec3} a new vector\n * @alias module:modeling/maths/vec3.fromValues\n */\nconst fromValues = (x, y, z) => {\n const out = create()\n out[0] = x\n out[1] = y\n out[2] = z\n return out\n}\n\nmodule.exports = fromValues\n","/**\n * Create a new vector by extending a 2D vector with a Z value.\n *\n * @param {vec3} out - receiving vector\n * @param {Array} vector - 2D vector of values\n * @param {Number} [z=0] - Z value\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.fromVec2\n */\nconst fromVector2 = (out, vector, z = 0) => {\n out[0] = vector[0]\n out[1] = vector[1]\n out[2] = z\n return out\n}\n\nmodule.exports = fromVector2\n","/**\n * Represents a three dimensional vector.\n * @see {@link vec3} for data structure information.\n * @module modeling/maths/vec3\n */\nmodule.exports = {\n abs: require('./abs'),\n add: require('./add'),\n angle: require('./angle'),\n clone: require('./clone'),\n copy: require('./copy'),\n create: require('./create'),\n cross: require('./cross'),\n distance: require('./distance'),\n divide: require('./divide'),\n dot: require('./dot'),\n equals: require('./equals'),\n fromScalar: require('./fromScalar'),\n fromValues: require('./fromValues'),\n fromVec2: require('./fromVec2'),\n length: require('./length'),\n lerp: require('./lerp'),\n max: require('./max'),\n min: require('./min'),\n multiply: require('./multiply'),\n negate: require('./negate'),\n normalize: require('./normalize'),\n orthogonal: require('./orthogonal'),\n rotateX: require('./rotateX'),\n rotateY: require('./rotateY'),\n rotateZ: require('./rotateZ'),\n scale: require('./scale'),\n snap: require('./snap'),\n squaredDistance: require('./squaredDistance'),\n squaredLength: require('./squaredLength'),\n subtract: require('./subtract'),\n toString: require('./toString'),\n transform: require('./transform')\n}\n","/**\n * Calculates the length of a vector.\n *\n * @param {vec3} vector - vector to calculate length of\n * @returns {Number} length\n * @alias module:modeling/maths/vec3.length\n */\nconst length = (vector) => {\n const x = vector[0]\n const y = vector[1]\n const z = vector[2]\n return Math.sqrt(x * x + y * y + z * z)\n}\n\nmodule.exports = length\n","/**\n * Performs a linear interpolation between two vectors.\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} a - first operand\n * @param {vec3} b - second operand\n * @param {Number} t - interpolant (0.0 to 1.0) applied between the two inputs\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.lerp\n */\nconst lerp = (out, a, b, t) => {\n out[0] = a[0] + t * (b[0] - a[0])\n out[1] = a[1] + t * (b[1] - a[1])\n out[2] = a[2] + t * (b[2] - a[2])\n return out\n}\n\nmodule.exports = lerp\n","/**\n * Returns the maximum coordinates of the given vectors.\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} a - first operand\n * @param {vec3} b - second operand\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.max\n */\nconst max = (out, a, b) => {\n out[0] = Math.max(a[0], b[0])\n out[1] = Math.max(a[1], b[1])\n out[2] = Math.max(a[2], b[2])\n return out\n}\n\nmodule.exports = max\n","/**\n * Returns the minimum coordinates of the given vectors.\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} a - first operand\n * @param {vec3} b - second operand\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.min\n */\nconst min = (out, a, b) => {\n out[0] = Math.min(a[0], b[0])\n out[1] = Math.min(a[1], b[1])\n out[2] = Math.min(a[2], b[2])\n return out\n}\n\nmodule.exports = min\n","/**\n * Multiply the coordinates of the given vectors (A*B).\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} a - first operand\n * @param {vec3} b - second operand\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.multiply\n */\nconst multiply = (out, a, b) => {\n out[0] = a[0] * b[0]\n out[1] = a[1] * b[1]\n out[2] = a[2] * b[2]\n return out\n}\n\nmodule.exports = multiply\n","/**\n * Negates the coordinates of the given vector.\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} vector - vector to negate\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.negate\n */\nconst negate = (out, vector) => {\n out[0] = -vector[0]\n out[1] = -vector[1]\n out[2] = -vector[2]\n return out\n}\n\nmodule.exports = negate\n","/**\n * Normalize the given vector.\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} vector - vector to normalize\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.normalize\n */\nconst normalize = (out, vector) => {\n const x = vector[0]\n const y = vector[1]\n const z = vector[2]\n let len = x * x + y * y + z * z\n if (len > 0) {\n len = 1 / Math.sqrt(len)\n }\n out[0] = x * len\n out[1] = y * len\n out[2] = z * len\n return out\n}\n\nmodule.exports = normalize\n","const abs = require('./abs')\nconst create = require('./create')\nconst cross = require('./cross')\n\n/**\n * Create a new vector that is orthogonal to the given vector.\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} vector - vector of reference\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.orthogonal\n */\nconst orthogonal = (out, vector) => {\n const bV = abs(create(), vector)\n const b0 = 0 + ((bV[0] < bV[1]) && (bV[0] < bV[2]))\n const b1 = 0 + ((bV[1] <= bV[0]) && (bV[1] < bV[2]))\n const b2 = 0 + ((bV[2] <= bV[0]) && (bV[2] <= bV[1]))\n\n return cross(out, vector, [b0, b1, b2])\n}\n\nmodule.exports = orthogonal\n","/**\n * Rotate the given vector around the given origin, X axis only.\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} vector - vector to rotate\n * @param {vec3} origin - origin of the rotation\n * @param {Number} radians - angle of rotation\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.rotateX\n */\nconst rotateX = (out, vector, origin, radians) => {\n const p = []\n const r = []\n\n // translate point to the origin\n p[0] = vector[0] - origin[0]\n p[1] = vector[1] - origin[1]\n p[2] = vector[2] - origin[2]\n\n // perform rotation\n r[0] = p[0]\n r[1] = p[1] * Math.cos(radians) - p[2] * Math.sin(radians)\n r[2] = p[1] * Math.sin(radians) + p[2] * Math.cos(radians)\n\n // translate to correct position\n out[0] = r[0] + origin[0]\n out[1] = r[1] + origin[1]\n out[2] = r[2] + origin[2]\n\n return out\n}\n\nmodule.exports = rotateX\n","/**\n * Rotate the given vector around the given origin, Y axis only.\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} vector - vector to rotate\n * @param {vec3} origin - origin of the rotation\n * @param {Number} radians - angle of rotation\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.rotateY\n */\nconst rotateY = (out, vector, origin, radians) => {\n const p = []\n const r = []\n\n // translate point to the origin\n p[0] = vector[0] - origin[0]\n p[1] = vector[1] - origin[1]\n p[2] = vector[2] - origin[2]\n\n // perform rotation\n r[0] = p[2] * Math.sin(radians) + p[0] * Math.cos(radians)\n r[1] = p[1]\n r[2] = p[2] * Math.cos(radians) - p[0] * Math.sin(radians)\n\n // translate to correct position\n out[0] = r[0] + origin[0]\n out[1] = r[1] + origin[1]\n out[2] = r[2] + origin[2]\n\n return out\n}\n\nmodule.exports = rotateY\n","/**\n * Rotate the given vector around the given origin, Z axis only.\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} vector - vector to rotate\n * @param {vec3} origin - origin of the rotation\n * @param {Number} radians - angle of rotation in radians\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.rotateZ\n */\nconst rotateZ = (out, vector, origin, radians) => {\n const p = []\n const r = []\n // Translate point to the origin\n p[0] = vector[0] - origin[0]\n p[1] = vector[1] - origin[1]\n\n // perform rotation\n r[0] = (p[0] * Math.cos(radians)) - (p[1] * Math.sin(radians))\n r[1] = (p[0] * Math.sin(radians)) + (p[1] * Math.cos(radians))\n\n // translate to correct position\n out[0] = r[0] + origin[0]\n out[1] = r[1] + origin[1]\n out[2] = vector[2]\n\n return out\n}\n\nmodule.exports = rotateZ\n","/**\n * Scales the coordinates of the given vector by a scalar number.\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} vector - vector to scale\n * @param {Number} amount - amount to scale the vector by\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.scale\n */\nconst scale = (out, vector, amount) => {\n out[0] = vector[0] * amount\n out[1] = vector[1] * amount\n out[2] = vector[2] * amount\n return out\n}\n\nmodule.exports = scale\n","/**\n * Snaps the coordinates of the given vector to the given epsilon.\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} vector - vector to snap\n * @param {Number} epsilon - epsilon of precision, less than 0\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.snap\n */\nconst snap = (out, vector, epsilon) => {\n out[0] = Math.round(vector[0] / epsilon) * epsilon + 0\n out[1] = Math.round(vector[1] / epsilon) * epsilon + 0\n out[2] = Math.round(vector[2] / epsilon) * epsilon + 0\n return out\n}\n\nmodule.exports = snap\n","/**\n * Calculates the squared distance between two vectors.\n *\n * @param {vec3} a - first operand\n * @param {vec3} b - second operand\n * @returns {Number} squared distance\n * @alias module:modeling/maths/vec3.squaredDistance\n */\nconst squaredDistance = (a, b) => {\n const x = b[0] - a[0]\n const y = b[1] - a[1]\n const z = b[2] - a[2]\n return x * x + y * y + z * z\n}\n\nmodule.exports = squaredDistance\n","/**\n * Calculates the squared length of the given vector.\n *\n * @param {vec3} vector - vector to calculate squared length of\n * @returns {Number} squared length\n * @alias module:modeling/maths/vec3.squaredLength\n */\nconst squaredLength = (vector) => {\n const x = vector[0]\n const y = vector[1]\n const z = vector[2]\n return x * x + y * y + z * z\n}\n\nmodule.exports = squaredLength\n","/**\n * Subtracts the coordinates of two vectors (A-B).\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} a - minuend vector\n * @param {vec3} b - subtrahend vector\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.subtract\n */\nconst subtract = (out, a, b) => {\n out[0] = a[0] - b[0]\n out[1] = a[1] - b[1]\n out[2] = a[2] - b[2]\n return out\n}\n\nmodule.exports = subtract\n","/**\n * Convert the given vector to a representative string.\n * @param {vec3} vec - vector of reference\n * @returns {String} string representation\n * @alias module:modeling/maths/vec3.toString\n */\nconst toString = (vec) => `[${vec[0].toFixed(7)}, ${vec[1].toFixed(7)}, ${vec[2].toFixed(7)}]`\n\nmodule.exports = toString\n","/**\n * Transforms the given vector using the given matrix.\n *\n * @param {vec3} out - receiving vector\n * @param {vec3} vector - vector to transform\n * @param {mat4} matrix - transform matrix\n * @returns {vec3} out\n * @alias module:modeling/maths/vec3.transform\n */\nconst transform = (out, vector, matrix) => {\n const x = vector[0]\n const y = vector[1]\n const z = vector[2]\n let w = matrix[3] * x + matrix[7] * y + matrix[11] * z + matrix[15]\n w = w || 1.0\n out[0] = (matrix[0] * x + matrix[4] * y + matrix[8] * z + matrix[12]) / w\n out[1] = (matrix[1] * x + matrix[5] * y + matrix[9] * z + matrix[13]) / w\n out[2] = (matrix[2] * x + matrix[6] * y + matrix[10] * z + matrix[14]) / w\n return out\n}\n\nmodule.exports = transform\n","const create = require('./create')\n\n/**\n * Create a clone of the given vector.\n *\n * @param {vec4} vector - source vector\n * @returns {vec4} a new vector\n * @alias module:modeling/maths/vec4.clone\n */\nconst clone = (vector) => {\n const out = create()\n out[0] = vector[0]\n out[1] = vector[1]\n out[2] = vector[2]\n out[3] = vector[3]\n return out\n}\n\nmodule.exports = clone\n","/**\n * Create a copy of the given vector.\n *\n * @param {vec4} out - receiving vector\n * @param {vec4} vector - source vector\n * @returns {vec4} out\n * @alias module:modeling/maths/vec4.copy\n */\nconst copy = (out, vector) => {\n out[0] = vector[0]\n out[1] = vector[1]\n out[2] = vector[2]\n out[3] = vector[3]\n return out\n}\n\nmodule.exports = copy\n","/**\n * Represents a four dimensional vector.\n * See fromValues().\n * @typedef {Array} vec4\n */\n\n/**\n * Creates a new vector initialized to [0,0,0,0].\n *\n * @returns {vec4} a new vector\n * @alias module:modeling/maths/vec4.create\n */\nconst create = () => [0, 0, 0, 0]\n\nmodule.exports = create\n","/**\n * Calculates the dot product of the given vectors.\n *\n * @param {vec4} a - first vector\n * @param {vec4} b - second vector\n * @returns {Number} dot product\n * @alias module:modeling/maths/vec4.dot\n */\nconst dot = (a, b) => a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3]\n\nmodule.exports = dot\n","/**\n * Compare the given vectors for equality.\n *\n * @param {vec4} a - first vector\n * @param {vec4} b - second vector\n * @return {Boolean} true if vectors are equal\n * @alias module:modeling/maths/vec4.equals\n */\nconst equals = (a, b) => ((a[0] === b[0]) && (a[1] === b[1]) && (a[2] === b[2]) && (a[3] === b[3]))\n\nmodule.exports = equals\n","/**\n * Create a new vector from the given scalar value.\n *\n * @param {vec4} out - receiving vector\n * @param {Number} scalar\n * @returns {vec4} out\n * @alias module:modeling/maths/vec4.fromScalar\n */\nconst fromScalar = (out, scalar) => {\n out[0] = scalar\n out[1] = scalar\n out[2] = scalar\n out[3] = scalar\n return out\n}\n\nmodule.exports = fromScalar\n","const create = require('./create')\n\n/**\n * Creates a new vector with the given values.\n *\n * @param {Number} x - X component\n * @param {Number} y - Y component\n * @param {Number} z - Z component\n * @param {Number} w - W component\n * @returns {vec4} a new vector\n * @alias module:modeling/maths/vec4.fromValues\n */\nconst fromValues = (x, y, z, w) => {\n const out = create()\n out[0] = x\n out[1] = y\n out[2] = z\n out[3] = w\n return out\n}\n\nmodule.exports = fromValues\n","/**\n * Represents a four dimensional vector.\n * @see {@link vec4} for data structure information.\n * @module modeling/maths/vec4\n */\nmodule.exports = {\n clone: require('./clone'),\n copy: require('./copy'),\n create: require('./create'),\n dot: require('./dot'),\n equals: require('./equals'),\n fromScalar: require('./fromScalar'),\n fromValues: require('./fromValues'),\n toString: require('./toString'),\n transform: require('./transform')\n}\n","/**\n * Convert the given vector to a representative string.\n *\n * @param {vec4} vec - vector to convert\n * @returns {String} representative string\n * @alias module:modeling/maths/vec4.toString\n */\nconst toString = (vec) => `(${vec[0].toFixed(9)}, ${vec[1].toFixed(9)}, ${vec[2].toFixed(9)}, ${vec[3].toFixed(9)})`\n\nmodule.exports = toString\n","/**\n * Transform the given vector using the given matrix.\n *\n * @param {vec4} out - receiving vector\n * @param {vec4} vector - vector to transform\n * @param {mat4} matrix - matrix to transform with\n * @returns {vec4} out\n * @alias module:modeling/maths/vec4.transform\n */\nconst transform = (out, vector, matrix) => {\n const [x, y, z, w] = vector\n\n out[0] = matrix[0] * x + matrix[4] * y + matrix[8] * z + matrix[12] * w\n out[1] = matrix[1] * x + matrix[5] * y + matrix[9] * z + matrix[13] * w\n out[2] = matrix[2] * x + matrix[6] * y + matrix[10] * z + matrix[14] * w\n out[3] = matrix[3] * x + matrix[7] * y + matrix[11] * z + matrix[15] * w\n return out\n}\n\nmodule.exports = transform\n","const { EPS } = require('../maths/constants')\n\nconst calculateEpsilonFromBounds = (bounds, dimensions) => {\n let total = 0\n for (let i = 0; i < dimensions; i++) {\n total += bounds[1][i] - bounds[0][i]\n }\n return EPS * total / dimensions\n}\n\nmodule.exports = calculateEpsilonFromBounds\n","/**\n * All shapes (primitives or the results of operations) can be measured, e.g. calculate volume, etc.\n * @module modeling/measurements\n * @example\n * const { measureArea, measureBoundingBox, measureVolume } = require('@jscad/modeling').measurements\n */\nmodule.exports = {\n measureAggregateArea: require('./measureAggregateArea'),\n measureAggregateBoundingBox: require('./measureAggregateBoundingBox'),\n measureAggregateEpsilon: require('./measureAggregateEpsilon'),\n measureAggregateVolume: require('./measureAggregateVolume'),\n measureArea: require('./measureArea'),\n measureBoundingBox: require('./measureBoundingBox'),\n measureBoundingSphere: require('./measureBoundingSphere'),\n measureCenter: require('./measureCenter'),\n measureCenterOfMass: require('./measureCenterOfMass'),\n measureDimensions: require('./measureDimensions'),\n measureEpsilon: require('./measureEpsilon'),\n measureVolume: require('./measureVolume')\n}\n","const flatten = require('../utils/flatten')\n\nconst measureArea = require('./measureArea')\n\n/**\n * Measure the total (aggregate) area for the given geometries.\n * Note: This measurement will not account for overlapping geometry\n * @param {...Object} geometries - the geometries to measure.\n * @return {Number} the total surface area for the group of geometry.\n * @alias module:modeling/measurements.measureAggregateArea\n *\n * @example\n * let totalArea = measureAggregateArea(sphere(),cube())\n */\nconst measureAggregateArea = (...geometries) => {\n geometries = flatten(geometries)\n if (geometries.length === 0) throw new Error('measureAggregateArea: no geometries supplied')\n const areas = measureArea(geometries)\n if (geometries.length === 1) {\n return areas\n }\n const result = 0\n return areas.reduce((result, area) => result + area, result)\n}\n\nmodule.exports = measureAggregateArea\n","const flatten = require('../utils/flatten')\nconst vec3min = require('../maths/vec3/min')\nconst vec3max = require('../maths/vec3/max')\n\nconst measureBoundingBox = require('./measureBoundingBox')\n\n/**\n * Measure the aggregated minimum and maximum bounds for the given geometries.\n * @param {...Object} geometries - the geometries to measure\n * @return {Array} the min and max bounds for the group of geometry, i.e. [[x,y,z],[X,Y,Z]]\n * @alias module:modeling/measurements.measureAggregateBoundingBox\n *\n * @example\n * let bounds = measureAggregateBoundingBox(sphere(),cube())\n */\nconst measureAggregateBoundingBox = (...geometries) => {\n geometries = flatten(geometries)\n if (geometries.length === 0) throw new Error('measureAggregateBoundingBox: no geometries supplied')\n const bounds = measureBoundingBox(geometries)\n if (geometries.length === 1) {\n return bounds\n }\n const result = [[Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE], [-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE]]\n return bounds.reduce((result, item) => {\n result = [vec3min(result[0], result[0], item[0]), vec3max(result[1], result[1], item[1])]\n return result\n }, result)\n}\n\nmodule.exports = measureAggregateBoundingBox\n","const flatten = require('../utils/flatten')\nconst measureAggregateBoundingBox = require('./measureAggregateBoundingBox')\nconst calculateEpsilonFromBounds = require('./calculateEpsilonFromBounds')\nconst { geom2, geom3, path2 } = require('../geometries')\n\n/**\n * Measure the aggregated Epsilon for the given geometries.\n * @param {...Object} geometries - the geometries to measure\n * @return {Number} the aggregated Epsilon for the whole group of geometries\n * @alias module:modeling/measurements.measureAggregateEpsilon\n *\n * @example\n * let groupEpsilon = measureAggregateEpsilon(sphere(),cube())\n */\nconst measureAggregateEpsilon = (...geometries) => {\n geometries = flatten(geometries)\n if (geometries.length === 0) throw new Error('measureAggregateEpsilon: no geometries supplied')\n const bounds = measureAggregateBoundingBox(geometries)\n\n let dimensions = 0\n dimensions = geometries.reduce((dimensions, geometry) => {\n if (path2.isA(geometry) || geom2.isA(geometry)) return Math.max(dimensions, 2)\n if (geom3.isA(geometry)) return Math.max(dimensions, 3)\n return 0\n }, dimensions)\n return calculateEpsilonFromBounds(bounds, dimensions)\n}\n\nmodule.exports = measureAggregateEpsilon\n","const flatten = require('../utils/flatten')\n\nconst measureVolume = require('./measureVolume')\n\n/**\n * Measure the total (aggregate) volume for the given geometries.\n * Note: This measurement will not account for overlapping geometry\n * @param {...Object} geometries - the geometries to measure.\n * @return {Number} the volume for the group of geometry.\n * @alias module:modeling/measurements.measureAggregateVolume\n *\n * @example\n * let totalVolume = measureAggregateVolume(sphere(),cube())\n */\nconst measureAggregateVolume = (...geometries) => {\n geometries = flatten(geometries)\n if (geometries.length === 0) throw new Error('measureAggregateVolume: no geometries supplied')\n const volumes = measureVolume(geometries)\n if (geometries.length === 1) {\n return volumes\n }\n const result = 0\n return volumes.reduce((result, volume) => result + volume, result)\n}\n\nmodule.exports = measureAggregateVolume\n","const flatten = require('../utils/flatten')\n\nconst geom2 = require('../geometries/geom2')\nconst geom3 = require('../geometries/geom3')\nconst path2 = require('../geometries/path2')\nconst poly3 = require('../geometries/poly3')\n\nconst cache = new WeakMap()\n\n/*\n * Measure the area of the given geometry.\n * NOTE: paths are infinitely narrow and do not have an area\n *\n * @param {path2} geometry - geometry to measure\n * @returns {Number} area of the geometry\n */\nconst measureAreaOfPath2 = () => 0\n\n/*\n * Measure the area of the given geometry.\n * For a counter clockwise rotating geometry (about Z) the area is positive, otherwise negative.\n *\n * @see http://paulbourke.net/geometry/polygonmesh/\n * @param {geom2} geometry - 2D geometry to measure\n * @returns {Number} area of the geometry\n */\nconst measureAreaOfGeom2 = (geometry) => {\n let area = cache.get(geometry)\n if (area) return area\n\n const sides = geom2.toSides(geometry)\n area = sides.reduce((area, side) => area + (side[0][0] * side[1][1] - side[0][1] * side[1][0]), 0)\n area *= 0.5\n\n cache.set(geometry, area)\n\n return area\n}\n\n/*\n * Measure the area of the given geometry.\n *\n * @param {geom3} geometry - 3D geometry to measure\n * @returns {Number} area of the geometry\n */\nconst measureAreaOfGeom3 = (geometry) => {\n let area = cache.get(geometry)\n if (area) return area\n\n const polygons = geom3.toPolygons(geometry)\n area = polygons.reduce((area, polygon) => area + poly3.measureArea(polygon), 0)\n\n cache.set(geometry, area)\n\n return area\n}\n\n/**\n * Measure the area of the given geometries.\n * @param {...Objects} geometries - the geometries to measure\n * @return {Number|Array} the area, or a list of areas for each geometry\n * @alias module:modeling/measurements.measureArea\n *\n * @example\n * let area = measureArea(sphere())\n */\nconst measureArea = (...geometries) => {\n geometries = flatten(geometries)\n if (geometries.length === 0) throw new Error('wrong number of arguments')\n\n const results = geometries.map((geometry) => {\n if (path2.isA(geometry)) return measureAreaOfPath2(geometry)\n if (geom2.isA(geometry)) return measureAreaOfGeom2(geometry)\n if (geom3.isA(geometry)) return measureAreaOfGeom3(geometry)\n return 0\n })\n return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = measureArea\n","const flatten = require('../utils/flatten')\n\nconst vec2 = require('../maths/vec2')\nconst vec3 = require('../maths/vec3')\n\nconst geom2 = require('../geometries/geom2')\nconst geom3 = require('../geometries/geom3')\nconst path2 = require('../geometries/path2')\nconst poly3 = require('../geometries/poly3')\n\nconst cache = new WeakMap()\n\n/*\n * Measure the min and max bounds of the given (path2) geometry.\n * @return {Array[]} the min and max bounds for the geometry\n */\nconst measureBoundingBoxOfPath2 = (geometry) => {\n let boundingBox = cache.get(geometry)\n if (boundingBox) return boundingBox\n\n const points = path2.toPoints(geometry)\n\n let minpoint\n if (points.length === 0) {\n minpoint = vec2.create()\n } else {\n minpoint = vec2.clone(points[0])\n }\n let maxpoint = vec2.clone(minpoint)\n\n points.forEach((point) => {\n vec2.min(minpoint, minpoint, point)\n vec2.max(maxpoint, maxpoint, point)\n })\n minpoint = [minpoint[0], minpoint[1], 0]\n maxpoint = [maxpoint[0], maxpoint[1], 0]\n\n boundingBox = [minpoint, maxpoint]\n\n cache.set(geometry, boundingBox)\n\n return boundingBox\n}\n\n/*\n * Measure the min and max bounds of the given (geom2) geometry.\n * @return {Array[]} the min and max bounds for the geometry\n */\nconst measureBoundingBoxOfGeom2 = (geometry) => {\n let boundingBox = cache.get(geometry)\n if (boundingBox) return boundingBox\n\n const points = geom2.toPoints(geometry)\n\n let minpoint\n if (points.length === 0) {\n minpoint = vec2.create()\n } else {\n minpoint = vec2.clone(points[0])\n }\n let maxpoint = vec2.clone(minpoint)\n\n points.forEach((point) => {\n vec2.min(minpoint, minpoint, point)\n vec2.max(maxpoint, maxpoint, point)\n })\n\n minpoint = [minpoint[0], minpoint[1], 0]\n maxpoint = [maxpoint[0], maxpoint[1], 0]\n\n boundingBox = [minpoint, maxpoint]\n\n cache.set(geometry, boundingBox)\n\n return boundingBox\n}\n\n/*\n * Measure the min and max bounds of the given (geom3) geometry.\n * @return {Array[]} the min and max bounds for the geometry\n */\nconst measureBoundingBoxOfGeom3 = (geometry) => {\n let boundingBox = cache.get(geometry)\n if (boundingBox) return boundingBox\n\n const polygons = geom3.toPolygons(geometry)\n\n let minpoint = vec3.create()\n if (polygons.length > 0) {\n const points = poly3.toPoints(polygons[0])\n vec3.copy(minpoint, points[0])\n }\n let maxpoint = vec3.clone(minpoint)\n\n polygons.forEach((polygon) => {\n poly3.toPoints(polygon).forEach((point) => {\n vec3.min(minpoint, minpoint, point)\n vec3.max(maxpoint, maxpoint, point)\n })\n })\n\n minpoint = [minpoint[0], minpoint[1], minpoint[2]]\n maxpoint = [maxpoint[0], maxpoint[1], maxpoint[2]]\n\n boundingBox = [minpoint, maxpoint]\n\n cache.set(geometry, boundingBox)\n\n return boundingBox\n}\n\n/**\n * Measure the min and max bounds of the given geometries.\n * @param {...Object} geometries - the geometries to measure\n * @return {Array} the min and max bounds, or a list of bounds for each geometry\n * @alias module:modeling/measurements.measureBoundingBox\n *\n * @example\n * let bounds = measureBoundingBox(sphere())\n */\nconst measureBoundingBox = (...geometries) => {\n geometries = flatten(geometries)\n if (geometries.length === 0) throw new Error('wrong number of arguments')\n\n const results = geometries.map((geometry) => {\n if (path2.isA(geometry)) return measureBoundingBoxOfPath2(geometry)\n if (geom2.isA(geometry)) return measureBoundingBoxOfGeom2(geometry)\n if (geom3.isA(geometry)) return measureBoundingBoxOfGeom3(geometry)\n return [[0, 0, 0], [0, 0, 0]]\n })\n return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = measureBoundingBox\n","const flatten = require('../utils/flatten')\n\nconst vec2 = require('../maths/vec2')\nconst vec3 = require('../maths/vec3')\n\nconst geom2 = require('../geometries/geom2')\nconst geom3 = require('../geometries/geom3')\nconst path2 = require('../geometries/path2')\nconst poly3 = require('../geometries/poly3')\n\nconst cacheOfBoundingSpheres = new WeakMap()\n\n/*\n * Measure the bounding sphere of the given (path2) geometry.\n * @return {[[x, y, z], radius]} the bounding sphere for the geometry\n */\nconst measureBoundingSphereOfPath2 = (geometry) => {\n let boundingSphere = cacheOfBoundingSpheres.get(geometry)\n if (boundingSphere !== undefined) return boundingSphere\n\n const centroid = vec3.create()\n let radius = 0\n\n const points = path2.toPoints(geometry)\n\n if (points.length > 0) {\n // calculate the centroid of the geometry\n let numPoints = 0\n const temp = vec3.create()\n points.forEach((point) => {\n vec3.add(centroid, centroid, vec3.fromVec2(temp, point, 0))\n numPoints++\n })\n vec3.scale(centroid, centroid, 1 / numPoints)\n\n // find the farthest point from the centroid\n points.forEach((point) => {\n radius = Math.max(radius, vec2.squaredDistance(centroid, point))\n })\n radius = Math.sqrt(radius)\n }\n\n boundingSphere = [centroid, radius]\n cacheOfBoundingSpheres.set(geometry, boundingSphere)\n\n return boundingSphere\n}\n\n/*\n * Measure the bounding sphere of the given (geom2) geometry.\n * @return {[[x, y, z], radius]} the bounding sphere for the geometry\n */\nconst measureBoundingSphereOfGeom2 = (geometry) => {\n let boundingSphere = cacheOfBoundingSpheres.get(geometry)\n if (boundingSphere !== undefined) return boundingSphere\n\n const centroid = vec3.create()\n let radius = 0\n\n const sides = geom2.toSides(geometry)\n\n if (sides.length > 0) {\n // calculate the centroid of the geometry\n let numPoints = 0\n const temp = vec3.create()\n sides.forEach((side) => {\n vec3.add(centroid, centroid, vec3.fromVec2(temp, side[0], 0))\n numPoints++\n })\n vec3.scale(centroid, centroid, 1 / numPoints)\n\n // find the farthest point from the centroid\n sides.forEach((side) => {\n radius = Math.max(radius, vec2.squaredDistance(centroid, side[0]))\n })\n radius = Math.sqrt(radius)\n }\n\n boundingSphere = [centroid, radius]\n cacheOfBoundingSpheres.set(geometry, boundingSphere)\n\n return boundingSphere\n}\n\n/*\n * Measure the bounding sphere of the given (geom3) geometry.\n * @return {[[x, y, z], radius]} the bounding sphere for the geometry\n */\nconst measureBoundingSphereOfGeom3 = (geometry) => {\n let boundingSphere = cacheOfBoundingSpheres.get(geometry)\n if (boundingSphere !== undefined) return boundingSphere\n\n const centroid = vec3.create()\n let radius = 0\n\n const polygons = geom3.toPolygons(geometry)\n\n if (polygons.length > 0) {\n // calculate the centroid of the geometry\n let numPoints = 0\n polygons.forEach((polygon) => {\n poly3.toPoints(polygon).forEach((point) => {\n vec3.add(centroid, centroid, point)\n numPoints++\n })\n })\n vec3.scale(centroid, centroid, 1 / numPoints)\n\n // find the farthest point from the centroid\n polygons.forEach((polygon) => {\n poly3.toPoints(polygon).forEach((point) => {\n radius = Math.max(radius, vec3.squaredDistance(centroid, point))\n })\n })\n radius = Math.sqrt(radius)\n }\n\n boundingSphere = [centroid, radius]\n cacheOfBoundingSpheres.set(geometry, boundingSphere)\n\n return boundingSphere\n}\n\n/**\n * Measure the (approximate) bounding sphere of the given geometries.\n * @see https://en.wikipedia.org/wiki/Bounding_sphere\n * @param {...Object} geometries - the geometries to measure\n * @return {Array} the bounding sphere for each geometry, i.e. [centroid, radius]\n * @alias module:modeling/measurements.measureBoundingSphere\n *\n * @example\n * let bounds = measureBoundingSphere(cube())\n */\nconst measureBoundingSphere = (...geometries) => {\n geometries = flatten(geometries)\n\n const results = geometries.map((geometry) => {\n if (path2.isA(geometry)) return measureBoundingSphereOfPath2(geometry)\n if (geom2.isA(geometry)) return measureBoundingSphereOfGeom2(geometry)\n if (geom3.isA(geometry)) return measureBoundingSphereOfGeom3(geometry)\n return [[0, 0, 0], 0]\n })\n return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = measureBoundingSphere\n","const flatten = require('../utils/flatten')\n\nconst measureBoundingBox = require('./measureBoundingBox')\n\n/**\n * Measure the center of the given geometries.\n * @param {...Object} geometries - the geometries to measure\n * @return {Array} the center point for each geometry, i.e. [X, Y, Z]\n * @alias module:modeling/measurements.measureCenter\n *\n * @example\n * let center = measureCenter(sphere())\n */\nconst measureCenter = (...geometries) => {\n geometries = flatten(geometries)\n\n const results = geometries.map((geometry) => {\n const bounds = measureBoundingBox(geometry)\n return [\n (bounds[0][0] + ((bounds[1][0] - bounds[0][0]) / 2)),\n (bounds[0][1] + ((bounds[1][1] - bounds[0][1]) / 2)),\n (bounds[0][2] + ((bounds[1][2] - bounds[0][2]) / 2))\n ]\n })\n return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = measureCenter\n","const flatten = require('../utils/flatten')\n\nconst vec3 = require('../maths/vec3')\n\nconst geom2 = require('../geometries/geom2')\nconst geom3 = require('../geometries/geom3')\n\nconst cacheOfCenterOfMass = new WeakMap()\n\n/*\n * Measure the center of mass for the given geometry.\n *\n * @see http://paulbourke.net/geometry/polygonmesh/\n * @return {Array} the center of mass for the geometry\n */\nconst measureCenterOfMassGeom2 = (geometry) => {\n let centerOfMass = cacheOfCenterOfMass.get(geometry)\n if (centerOfMass !== undefined) return centerOfMass\n\n const sides = geom2.toSides(geometry)\n\n let area = 0\n let x = 0\n let y = 0\n if (sides.length > 0) {\n for (let i = 0; i < sides.length; i++) {\n const p1 = sides[i][0]\n const p2 = sides[i][1]\n\n const a = p1[0] * p2[1] - p1[1] * p2[0]\n area += a\n x += (p1[0] + p2[0]) * a\n y += (p1[1] + p2[1]) * a\n }\n area /= 2\n\n const f = 1 / (area * 6)\n x *= f\n y *= f\n }\n\n centerOfMass = vec3.fromValues(x, y, 0)\n\n cacheOfCenterOfMass.set(geometry, centerOfMass)\n return centerOfMass\n}\n\n/*\n * Measure the center of mass for the given geometry.\n * @return {Array} the center of mass for the geometry\n */\nconst measureCenterOfMassGeom3 = (geometry) => {\n let centerOfMass = cacheOfCenterOfMass.get(geometry)\n if (centerOfMass !== undefined) return centerOfMass\n\n centerOfMass = vec3.create() // 0, 0, 0\n\n const polygons = geom3.toPolygons(geometry)\n if (polygons.length === 0) return centerOfMass\n\n let totalVolume = 0\n const vector = vec3.create() // for speed\n polygons.forEach((polygon) => {\n // calculate volume and center of each tetrahedron\n const vertices = polygon.vertices\n for (let i = 0; i < vertices.length - 2; i++) {\n vec3.cross(vector, vertices[i + 1], vertices[i + 2])\n const volume = vec3.dot(vertices[0], vector) / 6\n\n totalVolume += volume\n\n vec3.add(vector, vertices[0], vertices[i + 1])\n vec3.add(vector, vector, vertices[i + 2])\n const weightedCenter = vec3.scale(vector, vector, 1 / 4 * volume)\n\n vec3.add(centerOfMass, centerOfMass, weightedCenter)\n }\n })\n vec3.scale(centerOfMass, centerOfMass, 1 / totalVolume)\n\n cacheOfCenterOfMass.set(geometry, centerOfMass)\n return centerOfMass\n}\n\n/**\n * Measure the center of mass for the given geometries.\n * @param {...Object} geometries - the geometries to measure\n * @return {Array} the center of mass for each geometry, i.e. [X, Y, Z]\n * @alias module:modeling/measurements.measureCenterOfMass\n *\n * @example\n * let center = measureCenterOfMass(sphere())\n */\nconst measureCenterOfMass = (...geometries) => {\n geometries = flatten(geometries)\n\n const results = geometries.map((geometry) => {\n // NOTE: center of mass for geometry path2 is not possible\n if (geom2.isA(geometry)) return measureCenterOfMassGeom2(geometry)\n if (geom3.isA(geometry)) return measureCenterOfMassGeom3(geometry)\n return [0, 0, 0]\n })\n return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = measureCenterOfMass\n","const flatten = require('../utils/flatten')\n\nconst measureBoundingBox = require('./measureBoundingBox')\n\n/**\n * Measure the dimensions of the given geometries.\n * @param {...Object} geometries - the geometries to measure\n * @return {Array} the dimensions for each geometry, i.e. [width, depth, height]\n * @alias module:modeling/measurements.measureDimensions\n *\n * @example\n * let dimensions = measureDimensions(sphere())\n */\nconst measureDimensions = (...geometries) => {\n geometries = flatten(geometries)\n\n const results = geometries.map((geometry) => {\n const boundingBox = measureBoundingBox(geometry)\n return [\n boundingBox[1][0] - boundingBox[0][0],\n boundingBox[1][1] - boundingBox[0][1],\n boundingBox[1][2] - boundingBox[0][2]\n ]\n })\n return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = measureDimensions\n","const flatten = require('../utils/flatten')\nconst { geom2, geom3, path2 } = require('../geometries')\n\nconst calculateEpsilonFromBounds = require('./calculateEpsilonFromBounds')\nconst measureBoundingBox = require('./measureBoundingBox')\n\n/*\n * Measure the epsilon of the given (path2) geometry.\n * @return {Number} the epsilon (precision) of the geometry\n */\nconst measureEpsilonOfPath2 = (geometry) => calculateEpsilonFromBounds(measureBoundingBox(geometry), 2)\n\n/*\n * Measure the epsilon of the given (geom2) geometry.\n * @return {Number} the epsilon (precision) of the geometry\n */\nconst measureEpsilonOfGeom2 = (geometry) => calculateEpsilonFromBounds(measureBoundingBox(geometry), 2)\n\n/*\n * Measure the epsilon of the given (geom3) geometry.\n * @return {Float} the epsilon (precision) of the geometry\n */\nconst measureEpsilonOfGeom3 = (geometry) => calculateEpsilonFromBounds(measureBoundingBox(geometry), 3)\n\n/**\n * Measure the epsilon of the given geometries.\n * Epsilon values are used in various functions to determine minimum distances between points, planes, etc.\n * @param {...Object} geometries - the geometries to measure\n * @return {Number|Array} the epsilon, or a list of epsilons for each geometry\n * @alias module:modeling/measurements.measureEpsilon\n *\n * @example\n * let epsilon = measureEpsilon(sphere())\n */\nconst measureEpsilon = (...geometries) => {\n geometries = flatten(geometries)\n if (geometries.length === 0) throw new Error('wrong number of arguments')\n\n const results = geometries.map((geometry) => {\n if (path2.isA(geometry)) return measureEpsilonOfPath2(geometry)\n if (geom2.isA(geometry)) return measureEpsilonOfGeom2(geometry)\n if (geom3.isA(geometry)) return measureEpsilonOfGeom3(geometry)\n return 0\n })\n return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = measureEpsilon\n","const flatten = require('../utils/flatten')\n\nconst geom2 = require('../geometries/geom2')\nconst geom3 = require('../geometries/geom3')\nconst path2 = require('../geometries/path2')\nconst poly3 = require('../geometries/poly3')\n\nconst cache = new WeakMap()\n\n/*\n * Measure the volume of the given geometry.\n * NOTE: paths are infinitely narrow and do not have an volume\n *\n * @param {Path2} geometry - geometry to measure\n * @returns {Number} volume of the geometry\n */\nconst measureVolumeOfPath2 = () => 0\n\n/*\n * Measure the volume of the given geometry.\n * NOTE: 2D geometry are infinitely thin and do not have an volume\n *\n * @param {Geom2} geometry - 2D geometry to measure\n * @returns {Number} volume of the geometry\n */\nconst measureVolumeOfGeom2 = () => 0\n\n/*\n * Measure the volume of the given geometry.\n *\n * @param {Geom3} geometry - 3D geometry to measure\n * @returns {Number} volume of the geometry\n */\nconst measureVolumeOfGeom3 = (geometry) => {\n let volume = cache.get(geometry)\n if (volume) return volume\n\n const polygons = geom3.toPolygons(geometry)\n volume = polygons.reduce((volume, polygon) => volume + poly3.measureSignedVolume(polygon), 0)\n\n cache.set(geometry, volume)\n\n return volume\n}\n\n/**\n * Measure the volume of the given geometries.\n * @param {...Object} geometries - the geometries to measure\n * @return {Number|Array} the volume, or a list of volumes for each geometry\n * @alias module:modeling/measurements.measureVolume\n *\n * @example\n * let volume = measureVolume(sphere())\n */\nconst measureVolume = (...geometries) => {\n geometries = flatten(geometries)\n if (geometries.length === 0) throw new Error('wrong number of arguments')\n\n const results = geometries.map((geometry) => {\n if (path2.isA(geometry)) return measureVolumeOfPath2(geometry)\n if (geom2.isA(geometry)) return measureVolumeOfGeom2(geometry)\n if (geom3.isA(geometry)) return measureVolumeOfGeom3(geometry)\n return 0\n })\n return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = measureVolume\n","const vec2 = require('../../maths/vec2')\n\nconst geom2 = require('../../geometries/geom2')\n\nconst fromFakePolygon = (epsilon, polygon) => {\n // this can happen based on union, seems to be residuals -\n // return null and handle in caller\n if (polygon.vertices.length < 4) {\n return null\n }\n const vert1Indices = []\n const points3D = polygon.vertices.filter((vertex, i) => {\n if (vertex[2] > 0) {\n vert1Indices.push(i)\n return true\n }\n return false\n })\n\n if (points3D.length !== 2) {\n throw new Error('Assertion failed: fromFakePolygon: not enough points found') // TBD remove later\n }\n\n const points2D = points3D.map((v3) => {\n const x = Math.round(v3[0] / epsilon) * epsilon + 0 // no more -0\n const y = Math.round(v3[1] / epsilon) * epsilon + 0 // no more -0\n return vec2.fromValues(x, y)\n })\n\n if (vec2.equals(points2D[0], points2D[1])) return null\n\n const d = vert1Indices[1] - vert1Indices[0]\n if (d === 1 || d === 3) {\n if (d === 1) {\n points2D.reverse()\n }\n } else {\n throw new Error('Assertion failed: fromFakePolygon: unknown index ordering')\n }\n return points2D\n}\n\n/*\n * Convert the given polygons to a list of sides.\n * The polygons must have only z coordinates +1 and -1, as constructed by to3DWalls().\n */\nconst fromFakePolygons = (epsilon, polygons) => {\n const sides = polygons.map((polygon) => fromFakePolygon(epsilon, polygon)).filter((polygon) => (polygon !== null))\n return geom2.create(sides)\n}\n\nmodule.exports = fromFakePolygons\n","/**\n * All shapes (primitives or the results of operations) can be passed to boolean functions\n * to perform logical operations, e.g. remove a hole from a board.\n * In all cases, the function returns the results, and never changes the original shapes.\n * @module modeling/booleans\n * @example\n * const { intersect, subtract, union } = require('@jscad/modeling').booleans\n */\nmodule.exports = {\n intersect: require('./intersect'),\n scission: require('./scission'),\n subtract: require('./subtract'),\n union: require('./union')\n}\n","const flatten = require('../../utils/flatten')\nconst areAllShapesTheSameType = require('../../utils/areAllShapesTheSameType')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\n\nconst intersectGeom2 = require('./intersectGeom2')\nconst intersectGeom3 = require('./intersectGeom3')\n\n/**\n * Return a new geometry representing space in both the first geometry and\n * all subsequent geometries.\n * The given geometries should be of the same type, either geom2 or geom3.\n *\n * @param {...Object} geometries - list of geometries\n * @returns {geom2|geom3} a new geometry\n * @alias module:modeling/booleans.intersect\n *\n * @example\n * let myshape = intersect(cube({size: [5,5,5]}), cube({size: [5,5,5], center: [5,5,5]}))\n *\n * @example\n * +-------+\n * | |\n * | A |\n * | +--+----+ = +--+\n * +----+--+ | +--+\n * | B |\n * | |\n * +-------+\n */\nconst intersect = (...geometries) => {\n geometries = flatten(geometries)\n if (geometries.length === 0) throw new Error('wrong number of arguments')\n\n if (!areAllShapesTheSameType(geometries)) {\n throw new Error('only intersect of the types are supported')\n }\n\n const geometry = geometries[0]\n // if (path.isA(geometry)) return pathintersect(matrix, geometries)\n if (geom2.isA(geometry)) return intersectGeom2(geometries)\n if (geom3.isA(geometry)) return intersectGeom3(geometries)\n return geometry\n}\n\nmodule.exports = intersect\n","const flatten = require('../../utils/flatten')\n\nconst geom3 = require('../../geometries/geom3')\n\nconst measureEpsilon = require('../../measurements/measureEpsilon')\n\nconst fromFakePolygons = require('./fromFakePolygons')\nconst to3DWalls = require('./to3DWalls')\nconst intersectGeom3 = require('./intersectGeom3')\n\n/*\n * Return a new 2D geometry representing space in both the first geometry and\n * in the subsequent geometries. None of the given geometries are modified.\n * @param {...geom2} geometries - list of 2D geometries\n * @returns {geom2} new 2D geometry\n */\nconst intersect = (...geometries) => {\n geometries = flatten(geometries)\n const newgeometries = geometries.map((geometry) => to3DWalls({ z0: -1, z1: 1 }, geometry))\n\n const newgeom3 = intersectGeom3(newgeometries)\n const epsilon = measureEpsilon(newgeom3)\n\n return fromFakePolygons(epsilon, geom3.toPolygons(newgeom3))\n}\n\nmodule.exports = intersect\n","const flatten = require('../../utils/flatten')\n\nconst retessellate = require('../modifiers/retessellate')\n\nconst intersectSub = require('./intersectGeom3Sub')\n\n/*\n * Return a new 3D geometry representing space in both the first geometry and\n * in the subsequent geometries. None of the given geometries are modified.\n * @param {...geom3} geometries - list of 3D geometries\n * @returns {geom3} new 3D geometry\n */\nconst intersect = (...geometries) => {\n geometries = flatten(geometries)\n\n let newgeometry = geometries.shift()\n geometries.forEach((geometry) => {\n newgeometry = intersectSub(newgeometry, geometry)\n })\n\n newgeometry = retessellate(newgeometry)\n return newgeometry\n}\n\nmodule.exports = intersect\n","const geom3 = require('../../geometries/geom3')\n\nconst mayOverlap = require('./mayOverlap')\nconst { Tree } = require('./trees')\n\n/*\n * Return a new 3D geometry representing the space in both the first geometry and\n * the second geometry. None of the given geometries are modified.\n * @param {geom3} geometry1 - a geometry\n * @param {geom3} geometry2 - a geometry\n * @returns {geom3} new 3D geometry\n */\nconst intersectGeom3Sub = (geometry1, geometry2) => {\n if (!mayOverlap(geometry1, geometry2)) {\n return geom3.create() // empty geometry\n }\n\n const a = new Tree(geom3.toPolygons(geometry1))\n const b = new Tree(geom3.toPolygons(geometry2))\n\n a.invert()\n b.clipTo(a)\n b.invert()\n a.clipTo(b)\n b.clipTo(a)\n a.addPolygons(b.allPolygons())\n a.invert()\n\n const newpolygons = a.allPolygons()\n return geom3.create(newpolygons)\n}\n\nmodule.exports = intersectGeom3Sub\n","const { EPS } = require('../../maths/constants')\n\nconst measureBoundingBox = require('../../measurements/measureBoundingBox')\n\n/*\n * Determine if the given geometries overlap by comparing min and max bounds.\n * NOTE: This is used in union for performance gains.\n * @param {geom3} geometry1 - geometry for comparison\n * @param {geom3} geometry2 - geometry for comparison\n * @returns {boolean} true if the geometries overlap\n */\nconst mayOverlap = (geometry1, geometry2) => {\n // FIXME accessing the data structure of the geometry should not be allowed\n if ((geometry1.polygons.length === 0) || (geometry2.polygons.length === 0)) {\n return false\n }\n\n const bounds1 = measureBoundingBox(geometry1)\n const min1 = bounds1[0]\n const max1 = bounds1[1]\n\n const bounds2 = measureBoundingBox(geometry2)\n const min2 = bounds2[0]\n const max2 = bounds2[1]\n\n if ((min2[0] - max1[0]) > EPS) return false\n if ((min1[0] - max2[0]) > EPS) return false\n if ((min2[1] - max1[1]) > EPS) return false\n if ((min1[1] - max2[1]) > EPS) return false\n if ((min2[2] - max1[2]) > EPS) return false\n if ((min1[2] - max2[2]) > EPS) return false\n return true\n}\n\nmodule.exports = mayOverlap\n","const flatten = require('../../utils/flatten')\n\n// const geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\n\n// const scissionGeom2 = require('./scissionGeom2')\nconst scissionGeom3 = require('./scissionGeom3')\n\n/**\n * Scission (divide) the given geometry into the component pieces.\n *\n * @param {...Object} objects - list of geometries\n * @returns {Array} list of pieces from each geometry\n * @alias module:modeling/booleans.scission\n *\n * @example\n * let figure = require('./my.stl')\n * let pieces = scission(figure)\n *\n * @example\n * +-------+ +-------+\n * | | | |\n * | +---+ | A +---+\n * | | +---+ = | | +---+\n * +---+ | | +---+ | |\n * +---+ | +---+ |\n * | | | B |\n * +-------+ +-------+\n */\nconst scission = (...objects) => {\n objects = flatten(objects)\n if (objects.length === 0) throw new Error('wrong number of arguments')\n\n const results = objects.map((object) => {\n // if (path2.isA(object)) return path2.transform(matrix, object)\n // if (geom2.isA(object)) return geom2.transform(matrix, object)\n if (geom3.isA(object)) return scissionGeom3(object)\n return object\n })\n return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = scission\n","const vec3 = require('../../maths/vec3')\nconst measureEpsilon = require('../../measurements/measureEpsilon')\n\nconst geom3 = require('../../geometries/geom3')\n\n// returns array numerically sorted and duplicates removed\nconst sortNb = (array) => array.sort((a, b) => a - b).filter((item, pos, ary) => !pos || item !== ary[pos - 1])\n\nconst insertMapping = (map, point, index) => {\n const key = `${point}`\n const mapping = map.get(key)\n if (mapping === undefined) {\n map.set(key, [index])\n } else {\n mapping.push(index)\n }\n}\n\nconst findMapping = (map, point) => {\n const key = `${point}`\n return map.get(key)\n}\n\nconst scissionGeom3 = (geometry) => {\n // construit table de correspondance entre polygones\n // build polygons lookup table\n const eps = measureEpsilon(geometry)\n const polygons = geom3.toPolygons(geometry)\n const pl = polygons.length\n\n const indexesPerPoint = new Map()\n const temp = vec3.create()\n polygons.forEach((polygon, index) => {\n polygon.vertices.forEach((point) => {\n insertMapping(indexesPerPoint, vec3.snap(temp, point, eps), index)\n })\n })\n\n const indexesPerPolygon = polygons.map((polygon) => {\n let indexes = []\n polygon.vertices.forEach((point) => {\n indexes = indexes.concat(findMapping(indexesPerPoint, vec3.snap(temp, point, eps)))\n })\n return { e: 1, d: sortNb(indexes) } // for each polygon, push the list of indexes\n })\n\n indexesPerPoint.clear()\n\n // regroupe les correspondances des polygones se touchant\n // boucle ne s'arrêtant que quand deux passages retournent le même nb de polygones\n // merge lookup data from linked polygons as long as possible\n let merges = 0\n const ippl = indexesPerPolygon.length\n for (let i = 0; i < ippl; i++) {\n const mapi = indexesPerPolygon[i]\n // merge mappings if necessary\n if (mapi.e > 0) {\n const indexes = new Array(pl)\n indexes[i] = true // include ourself\n do {\n merges = 0\n // loop through the known indexes\n indexes.forEach((e, j) => {\n const mapj = indexesPerPolygon[j]\n // merge this mapping if necessary\n if (mapj.e > 0) {\n mapj.e = -1 // merged\n for (let d = 0; d < mapj.d.length; d++) {\n indexes[mapj.d[d]] = true\n }\n merges++\n }\n })\n } while (merges > 0)\n mapi.indexes = indexes\n }\n }\n\n // construit le tableau des geometry à retourner\n // build array of geometry to return\n const newgeometries = []\n for (let i = 0; i < ippl; i++) {\n if (indexesPerPolygon[i].indexes) {\n const newpolygons = []\n indexesPerPolygon[i].indexes.forEach((e, p) => newpolygons.push(polygons[p]))\n newgeometries.push(geom3.create(newpolygons))\n }\n }\n\n return newgeometries\n}\n\nmodule.exports = scissionGeom3\n","const flatten = require('../../utils/flatten')\nconst areAllShapesTheSameType = require('../../utils/areAllShapesTheSameType')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\n\nconst subtractGeom2 = require('./subtractGeom2')\nconst subtractGeom3 = require('./subtractGeom3')\n\n/**\n * Return a new geometry representing space in the first geometry but\n * not in all subsequent geometries.\n * The given geometries should be of the same type, either geom2 or geom3.\n *\n * @param {...Object} geometries - list of geometries\n * @returns {geom2|geom3} a new geometry\n * @alias module:modeling/booleans.subtract\n *\n * @example\n * let myshape = subtract(cuboid({size: [5,5,5]}), cuboid({size: [5,5,5], center: [5,5,5]}))\n *\n * @example\n * +-------+ +-------+\n * | | | |\n * | A | | |\n * | +--+----+ = | +--+\n * +----+--+ | +----+\n * | B |\n * | |\n * +-------+\n */\nconst subtract = (...geometries) => {\n geometries = flatten(geometries)\n if (geometries.length === 0) throw new Error('wrong number of arguments')\n\n if (!areAllShapesTheSameType(geometries)) {\n throw new Error('only subtract of the types are supported')\n }\n\n const geometry = geometries[0]\n // if (path.isA(geometry)) return pathsubtract(matrix, geometries)\n if (geom2.isA(geometry)) return subtractGeom2(geometries)\n if (geom3.isA(geometry)) return subtractGeom3(geometries)\n return geometry\n}\n\nmodule.exports = subtract\n","const flatten = require('../../utils/flatten')\n\nconst geom3 = require('../../geometries/geom3')\n\nconst measureEpsilon = require('../../measurements/measureEpsilon')\n\nconst fromFakePolygons = require('./fromFakePolygons')\nconst to3DWalls = require('./to3DWalls')\nconst subtractGeom3 = require('./subtractGeom3')\n\n/*\n * Return a new 2D geometry representing space in the first geometry but\n * not in the subsequent geometries. None of the given geometries are modified.\n * @param {...geom2} geometries - list of geometries\n * @returns {geom2} new 2D geometry\n */\nconst subtract = (...geometries) => {\n geometries = flatten(geometries)\n const newgeometries = geometries.map((geometry) => to3DWalls({ z0: -1, z1: 1 }, geometry))\n\n const newgeom3 = subtractGeom3(newgeometries)\n const epsilon = measureEpsilon(newgeom3)\n\n return fromFakePolygons(epsilon, geom3.toPolygons(newgeom3))\n}\n\nmodule.exports = subtract\n","const flatten = require('../../utils/flatten')\n\nconst retessellate = require('../modifiers/retessellate')\n\nconst subtractSub = require('./subtractGeom3Sub')\n\n/*\n * Return a new 3D geometry representing space in this geometry but not in the given geometries.\n * Neither this geometry nor the given geometries are modified.\n * @param {...geom3} geometries - list of geometries\n * @returns {geom3} new 3D geometry\n */\nconst subtract = (...geometries) => {\n geometries = flatten(geometries)\n\n let newgeometry = geometries.shift()\n geometries.forEach((geometry) => {\n newgeometry = subtractSub(newgeometry, geometry)\n })\n\n newgeometry = retessellate(newgeometry)\n return newgeometry\n}\n\nmodule.exports = subtract\n","const geom3 = require('../../geometries/geom3')\n\nconst mayOverlap = require('./mayOverlap')\nconst { Tree } = require('./trees')\n\n/*\n * Return a new 3D geometry representing the space in the first geometry but not\n * in the second geometry. None of the given geometries are modified.\n * @param {geom3} geometry1 - a geometry\n * @param {geom3} geometry2 - a geometry\n * @returns {geom3} new 3D geometry\n */\nconst subtractGeom3Sub = (geometry1, geometry2) => {\n if (!mayOverlap(geometry1, geometry2)) {\n return geom3.clone(geometry1)\n }\n\n const a = new Tree(geom3.toPolygons(geometry1))\n const b = new Tree(geom3.toPolygons(geometry2))\n\n a.invert()\n a.clipTo(b)\n b.clipTo(a, true)\n a.addPolygons(b.allPolygons())\n a.invert()\n\n const newpolygons = a.allPolygons()\n return geom3.create(newpolygons)\n}\n\nmodule.exports = subtractGeom3Sub\n","const vec3 = require('../../maths/vec3')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\nconst poly3 = require('../../geometries/poly3')\n\n/*\n * Create a polygon (wall) from the given Z values and side.\n */\nconst to3DWall = (z0, z1, side) => {\n const points = [\n vec3.fromVec2(vec3.create(), side[0], z0),\n vec3.fromVec2(vec3.create(), side[1], z0),\n vec3.fromVec2(vec3.create(), side[1], z1),\n vec3.fromVec2(vec3.create(), side[0], z1)\n ]\n return poly3.create(points)\n}\n\n/*\n * Create a 3D geometry with walls, as constructed from the given options and geometry.\n *\n * @param {Object} options - options with Z offsets\n * @param {geom2} geometry - geometry used as base of walls\n * @return {geom3} the new geometry\n */\nconst to3DWalls = (options, geometry) => {\n const sides = geom2.toSides(geometry)\n\n const polygons = sides.map((side) => to3DWall(options.z0, options.z1, side))\n\n const result = geom3.create(polygons)\n return result\n}\n\nmodule.exports = to3DWalls\n","const plane = require('../../../maths/plane')\nconst poly3 = require('../../../geometries/poly3')\n\n// # class Node\n// Holds a node in a BSP tree.\n// A BSP tree is built from a collection of polygons by picking a polygon to split along.\n// Polygons are not stored directly in the tree, but in PolygonTreeNodes, stored in this.polygontreenodes.\n// Those PolygonTreeNodes are children of the owning Tree.polygonTree.\n// This is not a leafy BSP tree since there is no distinction between internal and leaf nodes.\nclass Node {\n constructor (parent) {\n this.plane = null\n this.front = null\n this.back = null\n this.polygontreenodes = []\n this.parent = parent\n }\n\n // Convert solid space to empty space and empty space to solid space.\n invert () {\n const queue = [this]\n let node\n for (let i = 0; i < queue.length; i++) {\n node = queue[i]\n if (node.plane) node.plane = plane.flip(plane.create(), node.plane)\n if (node.front) queue.push(node.front)\n if (node.back) queue.push(node.back)\n const temp = node.front\n node.front = node.back\n node.back = temp\n }\n }\n\n // clip polygontreenodes to our plane\n // calls remove() for all clipped PolygonTreeNodes\n clipPolygons (polygontreenodes, alsoRemovecoplanarFront) {\n let current = { node: this, polygontreenodes: polygontreenodes }\n let node\n const stack = []\n\n do {\n node = current.node\n polygontreenodes = current.polygontreenodes\n\n if (node.plane) {\n const plane = node.plane\n\n const backnodes = []\n const frontnodes = []\n const coplanarfrontnodes = alsoRemovecoplanarFront ? backnodes : frontnodes\n const numpolygontreenodes = polygontreenodes.length\n for (let i = 0; i < numpolygontreenodes; i++) {\n const treenode = polygontreenodes[i]\n if (!treenode.isRemoved()) {\n // split this polygon tree node using the plane\n // NOTE: children are added to the tree if there are spanning polygons\n treenode.splitByPlane(plane, coplanarfrontnodes, backnodes, frontnodes, backnodes)\n }\n }\n\n if (node.front && (frontnodes.length > 0)) {\n // add front node for further splitting\n stack.push({ node: node.front, polygontreenodes: frontnodes })\n }\n const numbacknodes = backnodes.length\n if (node.back && (numbacknodes > 0)) {\n // add back node for further splitting\n stack.push({ node: node.back, polygontreenodes: backnodes })\n } else {\n // remove all back nodes from processing\n for (let i = 0; i < numbacknodes; i++) {\n backnodes[i].remove()\n }\n }\n }\n current = stack.pop()\n } while (current !== undefined)\n }\n\n // Remove all polygons in this BSP tree that are inside the other BSP tree\n // `tree`.\n clipTo (tree, alsoRemovecoplanarFront) {\n let node = this\n const stack = []\n do {\n if (node.polygontreenodes.length > 0) {\n tree.rootnode.clipPolygons(node.polygontreenodes, alsoRemovecoplanarFront)\n }\n if (node.front) stack.push(node.front)\n if (node.back) stack.push(node.back)\n node = stack.pop()\n } while (node !== undefined)\n }\n\n addPolygonTreeNodes (newpolygontreenodes) {\n let current = { node: this, polygontreenodes: newpolygontreenodes }\n const stack = []\n do {\n const node = current.node\n const polygontreenodes = current.polygontreenodes\n\n if (polygontreenodes.length === 0) {\n current = stack.pop()\n continue\n }\n if (!node.plane) {\n let index = 0 // default\n index = Math.floor(polygontreenodes.length / 2)\n // index = polygontreenodes.length >> 1\n // index = Math.floor(Math.random()*polygontreenodes.length)\n const bestpoly = polygontreenodes[index].getPolygon()\n node.plane = poly3.plane(bestpoly)\n }\n const frontnodes = []\n const backnodes = []\n const n = polygontreenodes.length\n for (let i = 0; i < n; ++i) {\n polygontreenodes[i].splitByPlane(node.plane, node.polygontreenodes, backnodes, frontnodes, backnodes)\n }\n\n if (frontnodes.length > 0) {\n if (!node.front) node.front = new Node(node)\n\n // unable to split by any of the current nodes\n const stopCondition = n === frontnodes.length && backnodes.length === 0\n if (stopCondition) node.front.polygontreenodes = frontnodes\n else stack.push({ node: node.front, polygontreenodes: frontnodes })\n }\n if (backnodes.length > 0) {\n if (!node.back) node.back = new Node(node)\n\n // unable to split by any of the current nodes\n const stopCondition = n === backnodes.length && frontnodes.length === 0\n\n if (stopCondition) node.back.polygontreenodes = backnodes\n else stack.push({ node: node.back, polygontreenodes: backnodes })\n }\n\n current = stack.pop()\n } while (current !== undefined)\n }\n}\n\nmodule.exports = Node\n","const { EPS } = require('../../../maths/constants')\n\nconst vec3 = require('../../../maths/vec3')\n\nconst poly3 = require('../../../geometries/poly3')\n\nconst splitPolygonByPlane = require('./splitPolygonByPlane')\n\n// # class PolygonTreeNode\n// This class manages hierarchical splits of polygons.\n// At the top is a root node which does not hold a polygon, only child PolygonTreeNodes.\n// Below that are zero or more 'top' nodes; each holds a polygon.\n// The polygons can be in different planes.\n// splitByPlane() splits a node by a plane. If the plane intersects the polygon, two new child nodes\n// are created holding the splitted polygon.\n// getPolygons() retrieves the polygons from the tree. If for PolygonTreeNode the polygon is split but\n// the two split parts (child nodes) are still intact, then the unsplit polygon is returned.\n// This ensures that we can safely split a polygon into many fragments. If the fragments are untouched,\n// getPolygons() will return the original unsplit polygon instead of the fragments.\n// remove() removes a polygon from the tree. Once a polygon is removed, the parent polygons are invalidated\n// since they are no longer intact.\nclass PolygonTreeNode {\n // constructor creates the root node\n constructor (parent, polygon) {\n this.parent = parent\n this.children = []\n this.polygon = polygon\n this.removed = false // state of branch or leaf\n }\n\n // fill the tree with polygons. Should be called on the root node only; child nodes must\n // always be a derivate (split) of the parent node.\n addPolygons (polygons) {\n // new polygons can only be added to root node; children can only be splitted polygons\n if (!this.isRootNode()) {\n throw new Error('Assertion failed')\n }\n const _this = this\n polygons.forEach((polygon) => {\n _this.addChild(polygon)\n })\n }\n\n // remove a node\n // - the siblings become toplevel nodes\n // - the parent is removed recursively\n remove () {\n if (!this.removed) {\n this.removed = true\n this.polygon = null\n\n // remove ourselves from the parent's children list:\n const parentschildren = this.parent.children\n const i = parentschildren.indexOf(this)\n if (i < 0) throw new Error('Assertion failed')\n parentschildren.splice(i, 1)\n\n // invalidate the parent's polygon, and of all parents above it:\n this.parent.recursivelyInvalidatePolygon()\n }\n }\n\n isRemoved () {\n return this.removed\n }\n\n isRootNode () {\n return !this.parent\n }\n\n // invert all polygons in the tree. Call on the root node\n invert () {\n if (!this.isRootNode()) throw new Error('Assertion failed') // can only call this on the root node\n this.invertSub()\n }\n\n getPolygon () {\n if (!this.polygon) throw new Error('Assertion failed') // doesn't have a polygon, which means that it has been broken down\n return this.polygon\n }\n\n getPolygons (result) {\n let children = [this]\n const queue = [children]\n let i, j, l, node\n for (i = 0; i < queue.length; ++i) { // queue size can change in loop, don't cache length\n children = queue[i]\n for (j = 0, l = children.length; j < l; j++) { // ok to cache length\n node = children[j]\n if (node.polygon) {\n // the polygon hasn't been broken yet. We can ignore the children and return our polygon:\n result.push(node.polygon)\n } else {\n // our polygon has been split up and broken, so gather all subpolygons from the children\n if (node.children.length > 0) queue.push(node.children)\n }\n }\n }\n }\n\n // split the node by a plane; add the resulting nodes to the frontnodes and backnodes array\n // If the plane doesn't intersect the polygon, the 'this' object is added to one of the arrays\n // If the plane does intersect the polygon, two new child nodes are created for the front and back fragments,\n // and added to both arrays.\n splitByPlane (plane, coplanarfrontnodes, coplanarbacknodes, frontnodes, backnodes) {\n if (this.children.length) {\n const queue = [this.children]\n let i\n let j\n let l\n let node\n let nodes\n for (i = 0; i < queue.length; i++) { // queue.length can increase, do not cache\n nodes = queue[i]\n for (j = 0, l = nodes.length; j < l; j++) { // ok to cache length\n node = nodes[j]\n if (node.children.length > 0) {\n queue.push(node.children)\n } else {\n // no children. Split the polygon:\n node._splitByPlane(plane, coplanarfrontnodes, coplanarbacknodes, frontnodes, backnodes)\n }\n }\n }\n } else {\n this._splitByPlane(plane, coplanarfrontnodes, coplanarbacknodes, frontnodes, backnodes)\n }\n }\n\n // only to be called for nodes with no children\n _splitByPlane (splane, coplanarfrontnodes, coplanarbacknodes, frontnodes, backnodes) {\n const polygon = this.polygon\n if (polygon) {\n const bound = poly3.measureBoundingSphere(polygon)\n const sphereradius = bound[3] + EPS // ensure radius is LARGER then polygon\n const spherecenter = bound\n const d = vec3.dot(splane, spherecenter) - splane[3]\n if (d > sphereradius) {\n frontnodes.push(this)\n } else if (d < -sphereradius) {\n backnodes.push(this)\n } else {\n const splitresult = splitPolygonByPlane(splane, polygon)\n switch (splitresult.type) {\n case 0:\n // coplanar front:\n coplanarfrontnodes.push(this)\n break\n\n case 1:\n // coplanar back:\n coplanarbacknodes.push(this)\n break\n\n case 2:\n // front:\n frontnodes.push(this)\n break\n\n case 3:\n // back:\n backnodes.push(this)\n break\n\n case 4:\n // spanning:\n if (splitresult.front) {\n const frontnode = this.addChild(splitresult.front)\n frontnodes.push(frontnode)\n }\n if (splitresult.back) {\n const backnode = this.addChild(splitresult.back)\n backnodes.push(backnode)\n }\n break\n }\n }\n }\n }\n\n // PRIVATE methods from here:\n // add child to a node\n // this should be called whenever the polygon is split\n // a child should be created for every fragment of the split polygon\n // returns the newly created child\n addChild (polygon) {\n const newchild = new PolygonTreeNode(this, polygon)\n this.children.push(newchild)\n return newchild\n }\n\n invertSub () {\n let children = [this]\n const queue = [children]\n let i, j, l, node\n for (i = 0; i < queue.length; i++) {\n children = queue[i]\n for (j = 0, l = children.length; j < l; j++) {\n node = children[j]\n if (node.polygon) {\n node.polygon = poly3.invert(node.polygon)\n }\n if (node.children.length > 0) queue.push(node.children)\n }\n }\n }\n\n // private method\n // remove the polygon from the node, and all parent nodes above it\n // called to invalidate parents of removed nodes\n recursivelyInvalidatePolygon () {\n this.polygon = null\n if (this.parent) {\n this.parent.recursivelyInvalidatePolygon()\n }\n }\n\n clear () {\n let children = [this]\n const queue = [children]\n for (let i = 0; i < queue.length; ++i) { // queue size can change in loop, don't cache length\n children = queue[i]\n const l = children.length\n for (let j = 0; j < l; j++) {\n const node = children[j]\n if (node.polygon) {\n node.polygon = null\n }\n if (node.parent) {\n node.parent = null\n }\n if (node.children.length > 0) queue.push(node.children)\n node.children = []\n }\n }\n }\n\n toString () {\n let result = ''\n let children = [this]\n const queue = [children]\n let i, j, l, node\n for (i = 0; i < queue.length; ++i) { // queue size can change in loop, don't cache length\n children = queue[i]\n const prefix = ' '.repeat(i)\n for (j = 0, l = children.length; j < l; j++) { // ok to cache length\n node = children[j]\n result += `${prefix}PolygonTreeNode (${node.isRootNode()}): ${node.children.length}`\n if (node.polygon) {\n result += `\\n ${prefix}polygon: ${node.polygon.vertices}\\n`\n } else {\n result += '\\n'\n }\n if (node.children.length > 0) queue.push(node.children)\n }\n }\n return result\n }\n}\n\nmodule.exports = PolygonTreeNode\n","const Node = require('./Node')\nconst PolygonTreeNode = require('./PolygonTreeNode')\n\n// # class Tree\n// This is the root of a BSP tree.\n// This separate class for the root of the tree in order to hold the PolygonTreeNode root.\n// The actual tree is kept in this.rootnode\nclass Tree {\n constructor (polygons) {\n this.polygonTree = new PolygonTreeNode()\n this.rootnode = new Node(null)\n if (polygons) this.addPolygons(polygons)\n }\n\n invert () {\n this.polygonTree.invert()\n this.rootnode.invert()\n }\n\n // Remove all polygons in this BSP tree that are inside the other BSP tree\n // `tree`.\n clipTo (tree, alsoRemovecoplanarFront = false) {\n this.rootnode.clipTo(tree, alsoRemovecoplanarFront)\n }\n\n allPolygons () {\n const result = []\n this.polygonTree.getPolygons(result)\n return result\n }\n\n addPolygons (polygons) {\n const polygontreenodes = new Array(polygons.length)\n for (let i = 0; i < polygons.length; i++) {\n polygontreenodes[i] = this.polygonTree.addChild(polygons[i])\n }\n this.rootnode.addPolygonTreeNodes(polygontreenodes)\n }\n\n clear () {\n this.polygonTree.clear()\n }\n\n toString () {\n const result = 'Tree: ' + this.polygonTree.toString('')\n return result\n }\n}\n\nmodule.exports = Tree\n","module.exports = {\n Tree: require('./Tree')\n}\n","const vec3 = require('../../../maths/vec3')\n\nconst splitLineSegmentByPlane = (plane, p1, p2) => {\n const direction = vec3.subtract(vec3.create(), p2, p1)\n let lambda = (plane[3] - vec3.dot(plane, p1)) / vec3.dot(plane, direction)\n if (Number.isNaN(lambda)) lambda = 0\n if (lambda > 1) lambda = 1\n if (lambda < 0) lambda = 0\n\n vec3.scale(direction, direction, lambda)\n vec3.add(direction, p1, direction)\n return direction\n}\n\nmodule.exports = splitLineSegmentByPlane\n","const { EPS } = require('../../../maths/constants')\n\nconst plane = require('../../../maths/plane')\nconst vec3 = require('../../../maths/vec3')\n\nconst poly3 = require('../../../geometries/poly3')\n\nconst splitLineSegmentByPlane = require('./splitLineSegmentByPlane')\n\n// Returns object:\n// .type:\n// 0: coplanar-front\n// 1: coplanar-back\n// 2: front\n// 3: back\n// 4: spanning\n// In case the polygon is spanning, returns:\n// .front: a Polygon3 of the front part\n// .back: a Polygon3 of the back part\nconst splitPolygonByPlane = (splane, polygon) => {\n const result = {\n type: null,\n front: null,\n back: null\n }\n // cache in local lets (speedup):\n const vertices = polygon.vertices\n const numvertices = vertices.length\n const pplane = poly3.plane(polygon)\n if (plane.equals(pplane, splane)) {\n result.type = 0\n } else {\n let hasfront = false\n let hasback = false\n const vertexIsBack = []\n const MINEPS = -EPS\n for (let i = 0; i < numvertices; i++) {\n const t = vec3.dot(splane, vertices[i]) - splane[3]\n const isback = (t < MINEPS)\n vertexIsBack.push(isback)\n if (t > EPS) hasfront = true\n if (t < MINEPS) hasback = true\n }\n if ((!hasfront) && (!hasback)) {\n // all points coplanar\n const t = vec3.dot(splane, pplane)\n result.type = (t >= 0) ? 0 : 1\n } else if (!hasback) {\n result.type = 2\n } else if (!hasfront) {\n result.type = 3\n } else {\n // spanning\n result.type = 4\n const frontvertices = []\n const backvertices = []\n let isback = vertexIsBack[0]\n for (let vertexindex = 0; vertexindex < numvertices; vertexindex++) {\n const vertex = vertices[vertexindex]\n let nextvertexindex = vertexindex + 1\n if (nextvertexindex >= numvertices) nextvertexindex = 0\n const nextisback = vertexIsBack[nextvertexindex]\n if (isback === nextisback) {\n // line segment is on one side of the plane:\n if (isback) {\n backvertices.push(vertex)\n } else {\n frontvertices.push(vertex)\n }\n } else {\n // line segment intersects plane:\n const nextpoint = vertices[nextvertexindex]\n const intersectionpoint = splitLineSegmentByPlane(splane, vertex, nextpoint)\n if (isback) {\n backvertices.push(vertex)\n backvertices.push(intersectionpoint)\n frontvertices.push(intersectionpoint)\n } else {\n frontvertices.push(vertex)\n frontvertices.push(intersectionpoint)\n backvertices.push(intersectionpoint)\n }\n }\n isback = nextisback\n } // for vertexindex\n // remove duplicate vertices:\n const EPS_SQUARED = EPS * EPS\n if (backvertices.length >= 3) {\n let prevvertex = backvertices[backvertices.length - 1]\n for (let vertexindex = 0; vertexindex < backvertices.length; vertexindex++) {\n const vertex = backvertices[vertexindex]\n if (vec3.squaredDistance(vertex, prevvertex) < EPS_SQUARED) {\n backvertices.splice(vertexindex, 1)\n vertexindex--\n }\n prevvertex = vertex\n }\n }\n if (frontvertices.length >= 3) {\n let prevvertex = frontvertices[frontvertices.length - 1]\n for (let vertexindex = 0; vertexindex < frontvertices.length; vertexindex++) {\n const vertex = frontvertices[vertexindex]\n if (vec3.squaredDistance(vertex, prevvertex) < EPS_SQUARED) {\n frontvertices.splice(vertexindex, 1)\n vertexindex--\n }\n prevvertex = vertex\n }\n }\n if (frontvertices.length >= 3) {\n result.front = poly3.fromPointsAndPlane(frontvertices, pplane)\n }\n if (backvertices.length >= 3) {\n result.back = poly3.fromPointsAndPlane(backvertices, pplane)\n }\n }\n }\n return result\n}\n\nmodule.exports = splitPolygonByPlane\n","const flatten = require('../../utils/flatten')\nconst areAllShapesTheSameType = require('../../utils/areAllShapesTheSameType')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\n\nconst unionGeom2 = require('./unionGeom2')\nconst unionGeom3 = require('./unionGeom3')\n\n/**\n * Return a new geometry representing the total space in the given geometries.\n * The given geometries should be of the same type, either geom2 or geom3.\n *\n * @param {...Object} geometries - list of geometries\n * @returns {geom2|geom3} a new geometry\n * @alias module:modeling/booleans.union\n *\n * @example\n * let myshape = union(cube({size: [5,5,5]}), cube({size: [5,5,5], center: [5,5,5]}))\n *\n * @example\n * +-------+ +-------+\n * | | | |\n * | A | | |\n * | +--+----+ = | +----+\n * +----+--+ | +----+ |\n * | B | | |\n * | | | |\n * +-------+ +-------+\n */\nconst union = (...geometries) => {\n geometries = flatten(geometries)\n if (geometries.length === 0) throw new Error('wrong number of arguments')\n\n if (!areAllShapesTheSameType(geometries)) {\n throw new Error('only unions of the same type are supported')\n }\n\n const geometry = geometries[0]\n // if (path.isA(geometry)) return pathunion(matrix, geometries)\n if (geom2.isA(geometry)) return unionGeom2(geometries)\n if (geom3.isA(geometry)) return unionGeom3(geometries)\n return geometry\n}\n\nmodule.exports = union\n","const flatten = require('../../utils/flatten')\n\nconst geom3 = require('../../geometries/geom3')\n\nconst measureEpsilon = require('../../measurements/measureEpsilon')\n\nconst fromFakePolygons = require('./fromFakePolygons')\nconst to3DWalls = require('./to3DWalls')\nconst unionGeom3 = require('./unionGeom3')\n\n/*\n * Return a new 2D geometry representing the total space in the given 2D geometries.\n * @param {...geom2} geometries - list of 2D geometries to union\n * @returns {geom2} new 2D geometry\n */\nconst union = (...geometries) => {\n geometries = flatten(geometries)\n const newgeometries = geometries.map((geometry) => to3DWalls({ z0: -1, z1: 1 }, geometry))\n\n const newgeom3 = unionGeom3(newgeometries)\n const epsilon = measureEpsilon(newgeom3)\n\n return fromFakePolygons(epsilon, geom3.toPolygons(newgeom3))\n}\n\nmodule.exports = union\n","const flatten = require('../../utils/flatten')\n\nconst retessellate = require('../modifiers/retessellate')\n\nconst unionSub = require('./unionGeom3Sub')\n\n/*\n * Return a new 3D geometry representing the space in the given 3D geometries.\n * @param {...objects} geometries - list of geometries to union\n * @returns {geom3} new 3D geometry\n */\nconst union = (...geometries) => {\n geometries = flatten(geometries)\n\n // combine geometries in a way that forms a balanced binary tree pattern\n let i\n for (i = 1; i < geometries.length; i += 2) {\n geometries.push(unionSub(geometries[i - 1], geometries[i]))\n }\n let newgeometry = geometries[i - 1]\n newgeometry = retessellate(newgeometry)\n return newgeometry\n}\n\nmodule.exports = union\n","const geom3 = require('../../geometries/geom3')\n\nconst mayOverlap = require('./mayOverlap')\nconst { Tree } = require('./trees')\n\n/*\n * Return a new 3D geometry representing the space in the given geometries.\n * @param {geom3} geometry1 - geometry to union\n * @param {geom3} geometry2 - geometry to union\n * @returns {geom3} new 3D geometry\n */\nconst unionSub = (geometry1, geometry2) => {\n if (!mayOverlap(geometry1, geometry2)) {\n return unionForNonIntersecting(geometry1, geometry2)\n }\n\n const a = new Tree(geom3.toPolygons(geometry1))\n const b = new Tree(geom3.toPolygons(geometry2))\n\n a.clipTo(b, false)\n // b.clipTo(a, true); // ERROR: doesn't work\n b.clipTo(a)\n b.invert()\n b.clipTo(a)\n b.invert()\n\n const newpolygons = a.allPolygons().concat(b.allPolygons())\n const result = geom3.create(newpolygons)\n return result\n}\n\n// Like union, but when we know that the two solids are not intersecting\n// Do not use if you are not completely sure that the solids do not intersect!\nconst unionForNonIntersecting = (geometry1, geometry2) => {\n let newpolygons = geom3.toPolygons(geometry1)\n newpolygons = newpolygons.concat(geom3.toPolygons(geometry2))\n return geom3.create(newpolygons)\n}\n\nmodule.exports = unionSub\n","const flatten = require('../../utils/flatten')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\nconst path2 = require('../../geometries/path2')\n\nconst expandGeom2 = require('./expandGeom2')\nconst expandGeom3 = require('./expandGeom3')\nconst expandPath2 = require('./expandPath2')\n\n/**\n * Expand the given geometry using the given options.\n * Both internal and external space is expanded for 2D and 3D shapes.\n *\n * Note: Contract is expand using a negative delta.\n * @param {Object} options - options for expand\n * @param {Number} [options.delta=1] - delta (+/-) of expansion\n * @param {String} [options.corners='edge'] - type of corner to create after expanding; edge, chamfer, round\n * @param {Integer} [options.segments=16] - number of segments when creating round corners\n * @param {...Objects} objects - the geometries to expand\n * @return {Object|Array} new geometry, or list of new geometries\n * @alias module:modeling/expansions.expand\n *\n * @example\n * let newarc = expand({delta: 5, corners: 'edge'}, arc({}))\n * let newsquare = expand({delta: 5, corners: 'chamfer'}, square({size: 30}))\n * let newsphere = expand({delta: 2, corners: 'round'}, cuboid({size: [20, 25, 5]}))\n */\nconst expand = (options, ...objects) => {\n objects = flatten(objects)\n if (objects.length === 0) throw new Error('wrong number of arguments')\n\n const results = objects.map((object) => {\n if (path2.isA(object)) return expandPath2(options, object)\n if (geom2.isA(object)) return expandGeom2(options, object)\n if (geom3.isA(object)) return expandGeom3(options, object)\n return object\n })\n return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = expand\n","const geom2 = require('../../geometries/geom2')\n\nconst offsetFromPoints = require('./offsetFromPoints')\n\n/*\n * Expand the given geometry (geom2) using the given options (if any).\n * @param {Object} options - options for expand\n * @param {Number} [options.delta=1] - delta (+/-) of expansion\n * @param {String} [options.corners='edge'] - type corner to create during of expansion; edge, chamfer, round\n * @param {Integer} [options.segments=16] - number of segments when creating round corners\n * @param {geom2} geometry - the geometry to expand\n * @returns {geom2} expanded geometry\n */\nconst expandGeom2 = (options, geometry) => {\n const defaults = {\n delta: 1,\n corners: 'edge',\n segments: 16\n }\n const { delta, corners, segments } = Object.assign({ }, defaults, options)\n\n if (!(corners === 'edge' || corners === 'chamfer' || corners === 'round')) {\n throw new Error('corners must be \"edge\", \"chamfer\", or \"round\"')\n }\n\n // convert the geometry to outlines, and generate offsets from each\n const outlines = geom2.toOutlines(geometry)\n const newoutlines = outlines.map((outline) => {\n options = {\n delta,\n corners,\n closed: true,\n segments\n }\n return offsetFromPoints(options, outline)\n })\n\n // create a composite geometry from the new outlines\n const allsides = newoutlines.reduce((sides, newoutline) => sides.concat(geom2.toSides(geom2.fromPoints(newoutline))), [])\n return geom2.create(allsides)\n}\n\nmodule.exports = expandGeom2\n","const geom3 = require('../../geometries/geom3')\n\nconst union = require('../booleans/union')\n\nconst expandShell = require('./expandShell')\n\n/*\n * Expand the given geometry (geom3) using the given options (if any).\n * @param {Object} options - options for expand\n * @param {Number} [options.delta=1] - delta (+/-) of expansion\n * @param {String} [options.corners='round'] - type corner to create during of expansion; round\n * @param {Integer} [options.segments=12] - number of segments when creating round corners\n * @param {geom3} geometry - the geometry to expand\n * @returns {geom3} expanded geometry\n */\nconst expandGeom3 = (options, geometry) => {\n const defaults = {\n delta: 1,\n corners: 'round',\n segments: 12\n }\n const { delta, corners, segments } = Object.assign({ }, defaults, options)\n\n if (!(corners === 'round')) {\n throw new Error('corners must be \"round\" for 3D geometries')\n }\n\n const polygons = geom3.toPolygons(geometry)\n if (polygons.length === 0) throw new Error('the given geometry cannot be empty')\n\n options = { delta, corners, segments }\n const expanded = expandShell(options, geometry)\n return union(geometry, expanded)\n}\n\nmodule.exports = expandGeom3\n","const area = require('../../maths/utils/area')\n\nconst vec2 = require('../../maths/vec2')\n\nconst geom2 = require('../../geometries/geom2')\nconst path2 = require('../../geometries/path2')\n\nconst offsetFromPoints = require('./offsetFromPoints')\n\nconst createGeometryFromClosedOffsets = (paths) => {\n let { external, internal } = paths\n if (area(external) < 0) {\n external = external.reverse()\n } else {\n internal = internal.reverse()\n }\n // NOTE: creating path2 from the points ensures proper closure\n const externalPath = path2.fromPoints({ closed: true }, external)\n const internalPath = path2.fromPoints({ closed: true }, internal)\n const externalSides = geom2.toSides(geom2.fromPoints(path2.toPoints(externalPath)))\n const internalSides = geom2.toSides(geom2.fromPoints(path2.toPoints(internalPath)))\n externalSides.push(...internalSides)\n return geom2.create(externalSides)\n}\n\nconst createGeometryFromExpandedOpenPath = (paths, segments, corners, delta) => {\n const { points, external, internal } = paths\n const capSegments = Math.floor(segments / 2) // rotation is 180 degrees\n const e2iCap = []\n const i2eCap = []\n if (corners === 'round' && capSegments > 0) {\n // added round caps to the geometry\n const step = Math.PI / capSegments\n const eCorner = points[points.length - 1]\n const e2iStart = vec2.angle(vec2.subtract(vec2.create(), external[external.length - 1], eCorner))\n const iCorner = points[0]\n const i2eStart = vec2.angle(vec2.subtract(vec2.create(), internal[0], iCorner))\n for (let i = 1; i < capSegments; i++) {\n let radians = e2iStart + (step * i)\n let point = vec2.fromAngleRadians(vec2.create(), radians)\n vec2.scale(point, point, delta)\n vec2.add(point, point, eCorner)\n e2iCap.push(point)\n\n radians = i2eStart + (step * i)\n point = vec2.fromAngleRadians(vec2.create(), radians)\n vec2.scale(point, point, delta)\n vec2.add(point, point, iCorner)\n i2eCap.push(point)\n }\n }\n const allPoints = []\n allPoints.push(...external, ...e2iCap, ...internal.reverse(), ...i2eCap)\n return geom2.fromPoints(allPoints)\n}\n\n/*\n * Expand the given geometry (path2) using the given options (if any).\n * @param {Object} options - options for expand\n * @param {Number} [options.delta=1] - delta (+) of expansion\n * @param {String} [options.corners='edge'] - type corner to create during of expansion; edge, chamfer, round\n * @param {Integer} [options.segments=16] - number of segments when creating round corners\n * @param {path2} geometry - the geometry to expand\n * @returns {geom2} expanded geometry\n */\nconst expandPath2 = (options, geometry) => {\n const defaults = {\n delta: 1,\n corners: 'edge',\n segments: 16\n }\n\n options = Object.assign({ }, defaults, options)\n const { delta, corners, segments } = options\n\n if (delta <= 0) throw new Error('the given delta must be positive for paths')\n\n if (!(corners === 'edge' || corners === 'chamfer' || corners === 'round')) {\n throw new Error('corners must be \"edge\", \"chamfer\", or \"round\"')\n }\n\n const closed = geometry.isClosed\n const points = path2.toPoints(geometry)\n if (points.length === 0) throw new Error('the given geometry cannot be empty')\n\n const paths = {\n points: points,\n external: offsetFromPoints({ delta, corners, segments, closed }, points),\n internal: offsetFromPoints({ delta: -delta, corners, segments, closed }, points)\n }\n\n if (geometry.isClosed) {\n return createGeometryFromClosedOffsets(paths)\n } else {\n return createGeometryFromExpandedOpenPath(paths, segments, corners, delta)\n }\n}\n\nmodule.exports = expandPath2\n","const { EPS, TAU } = require('../../maths/constants')\n\nconst mat4 = require('../../maths/mat4')\nconst vec3 = require('../../maths/vec3')\n\nconst fnNumberSort = require('../../utils/fnNumberSort')\n\nconst geom3 = require('../../geometries/geom3')\nconst poly3 = require('../../geometries/poly3')\n\nconst sphere = require('../../primitives/sphere')\n\nconst retessellate = require('../modifiers/retessellate')\n\nconst unionGeom3Sub = require('../booleans/unionGeom3Sub')\n\nconst extrudePolygon = require('./extrudePolygon')\n\n/*\n * Collect all planes adjacent to each vertex\n */\nconst mapPlaneToVertex = (map, vertex, plane) => {\n const key = vertex.toString()\n if (!map.has(key)) {\n const entry = [vertex, [plane]]\n map.set(key, entry)\n } else {\n const planes = map.get(key)[1]\n planes.push(plane)\n }\n}\n\n/*\n * Collect all planes adjacent to each edge.\n * Combine undirected edges, no need for duplicate cylinders.\n */\nconst mapPlaneToEdge = (map, edge, plane) => {\n const key0 = edge[0].toString()\n const key1 = edge[1].toString()\n // Sort keys to make edges undirected\n const key = key0 < key1 ? `${key0},${key1}` : `${key1},${key0}`\n if (!map.has(key)) {\n const entry = [edge, [plane]]\n map.set(key, entry)\n } else {\n const planes = map.get(key)[1]\n planes.push(plane)\n }\n}\n\nconst addUniqueAngle = (map, angle) => {\n const i = map.findIndex((item) => item === angle)\n if (i < 0) {\n map.push(angle)\n }\n}\n\n/*\n * Create the expanded shell of the solid:\n * All faces are extruded to 2 times delta\n * Cylinders are constructed around every side\n * Spheres are placed on every vertex\n * the result is a true expansion of the solid\n * @param {Number} delta\n * @param {Integer} segments\n */\nconst expandShell = (options, geometry) => {\n const defaults = {\n delta: 1,\n segments: 12\n }\n const { delta, segments } = Object.assign({ }, defaults, options)\n\n let result = geom3.create()\n const vertices2planes = new Map() // {vertex: [vertex, [plane, ...]]}\n const edges2planes = new Map() // {edge: [[vertex, vertex], [plane, ...]]}\n\n const v1 = vec3.create()\n const v2 = vec3.create()\n\n // loop through the polygons\n // - extruded the polygon, and add to the composite result\n // - add the plane to the unique vertice map\n // - add the plane to the unique edge map\n const polygons = geom3.toPolygons(geometry)\n polygons.forEach((polygon, index) => {\n const extrudevector = vec3.scale(vec3.create(), poly3.plane(polygon), 2 * delta)\n const translatedpolygon = poly3.transform(mat4.fromTranslation(mat4.create(), vec3.scale(vec3.create(), extrudevector, -0.5)), polygon)\n const extrudedface = extrudePolygon(extrudevector, translatedpolygon)\n result = unionGeom3Sub(result, extrudedface)\n\n const vertices = polygon.vertices\n for (let i = 0; i < vertices.length; i++) {\n mapPlaneToVertex(vertices2planes, vertices[i], poly3.plane(polygon))\n const j = (i + 1) % vertices.length\n const edge = [vertices[i], vertices[j]]\n mapPlaneToEdge(edges2planes, edge, poly3.plane(polygon))\n }\n })\n\n // now construct a cylinder on every side\n // The cylinder is always an approximation of a true cylinder, having polygons\n // around the sides. We will make sure though that the cylinder will have an edge at every\n // face that touches this side. This ensures that we will get a smooth fill even\n // if two edges are at, say, 10 degrees and the segments is low.\n edges2planes.forEach((item) => {\n const edge = item[0]\n const planes = item[1]\n const startpoint = edge[0]\n const endpoint = edge[1]\n\n // our x,y and z vectors:\n const zbase = vec3.subtract(vec3.create(), endpoint, startpoint)\n vec3.normalize(zbase, zbase)\n const xbase = planes[0]\n const ybase = vec3.cross(vec3.create(), xbase, zbase)\n\n // make a list of angles that the cylinder should traverse:\n let angles = []\n\n // first of all equally spaced around the cylinder:\n for (let i = 0; i < segments; i++) {\n addUniqueAngle(angles, (i * TAU / segments))\n }\n\n // and also at every normal of all touching planes:\n for (let i = 0, iMax = planes.length; i < iMax; i++) {\n const planenormal = planes[i]\n const si = vec3.dot(ybase, planenormal)\n const co = vec3.dot(xbase, planenormal)\n let angle = Math.atan2(si, co)\n\n if (angle < 0) angle += TAU\n addUniqueAngle(angles, angle)\n angle = Math.atan2(-si, -co)\n if (angle < 0) angle += TAU\n addUniqueAngle(angles, angle)\n }\n\n // this will result in some duplicate angles but we will get rid of those later.\n angles = angles.sort(fnNumberSort)\n\n // Now construct the cylinder by traversing all angles:\n const numangles = angles.length\n let prevp1\n let prevp2\n const startfacevertices = []\n const endfacevertices = []\n const polygons = []\n for (let i = -1; i < numangles; i++) {\n const angle = angles[(i < 0) ? (i + numangles) : i]\n const si = Math.sin(angle)\n const co = Math.cos(angle)\n vec3.scale(v1, xbase, co * delta)\n vec3.scale(v2, ybase, si * delta)\n vec3.add(v1, v1, v2)\n const p1 = vec3.add(vec3.create(), startpoint, v1)\n const p2 = vec3.add(vec3.create(), endpoint, v1)\n let skip = false\n if (i >= 0) {\n if (vec3.distance(p1, prevp1) < EPS) {\n skip = true\n }\n }\n if (!skip) {\n if (i >= 0) {\n startfacevertices.push(p1)\n endfacevertices.push(p2)\n const points = [prevp2, p2, p1, prevp1]\n const polygon = poly3.create(points)\n polygons.push(polygon)\n }\n prevp1 = p1\n prevp2 = p2\n }\n }\n endfacevertices.reverse()\n polygons.push(poly3.create(startfacevertices))\n polygons.push(poly3.create(endfacevertices))\n\n const cylinder = geom3.create(polygons)\n result = unionGeom3Sub(result, cylinder)\n })\n\n // build spheres at each unique vertex\n // We will try to set the x and z axis to the normals of 2 planes\n // This will ensure that our sphere tesselation somewhat matches 2 planes\n vertices2planes.forEach((item) => {\n const vertex = item[0]\n const planes = item[1]\n // use the first normal to be the x axis of our sphere:\n const xaxis = planes[0]\n // and find a suitable z axis. We will use the normal which is most perpendicular to the x axis:\n let bestzaxis = null\n let bestzaxisorthogonality = 0\n for (let i = 1; i < planes.length; i++) {\n const normal = planes[i]\n const cross = vec3.cross(v1, xaxis, normal)\n const crosslength = vec3.length(cross)\n if (crosslength > 0.05) { // FIXME why 0.05?\n if (crosslength > bestzaxisorthogonality) {\n bestzaxisorthogonality = crosslength\n bestzaxis = normal\n }\n }\n }\n if (!bestzaxis) {\n bestzaxis = vec3.orthogonal(v1, xaxis)\n }\n const yaxis = vec3.cross(v1, xaxis, bestzaxis)\n vec3.normalize(yaxis, yaxis)\n const zaxis = vec3.cross(v2, yaxis, xaxis)\n const corner = sphere({\n center: [vertex[0], vertex[1], vertex[2]],\n radius: delta,\n segments: segments,\n axes: [xaxis, yaxis, zaxis]\n })\n result = unionGeom3Sub(result, corner)\n })\n return retessellate(result)\n}\n\nmodule.exports = expandShell\n","const mat4 = require('../../maths/mat4')\nconst vec3 = require('../../maths/vec3')\n\nconst geom3 = require('../../geometries/geom3')\nconst poly3 = require('../../geometries/poly3')\n\n// Extrude a polygon in the direction of the offsetvector.\n// Returns (geom3) a new geometry\nconst extrudePolygon = (offsetvector, polygon1) => {\n const direction = vec3.dot(poly3.plane(polygon1), offsetvector)\n if (direction > 0) {\n polygon1 = poly3.invert(polygon1)\n }\n\n const newpolygons = [polygon1]\n\n const polygon2 = poly3.transform(mat4.fromTranslation(mat4.create(), offsetvector), polygon1)\n const numvertices = polygon1.vertices.length\n for (let i = 0; i < numvertices; i++) {\n const nexti = (i < (numvertices - 1)) ? i + 1 : 0\n const sideFacePolygon = poly3.create([\n polygon1.vertices[i],\n polygon2.vertices[i],\n polygon2.vertices[nexti],\n polygon1.vertices[nexti]\n ])\n newpolygons.push(sideFacePolygon)\n }\n newpolygons.push(poly3.invert(polygon2))\n\n return geom3.create(newpolygons)\n}\n\nmodule.exports = extrudePolygon\n","/**\n * All shapes (primitives or the results of operations) can be expanded (or contracted.)\n * In all cases, the function returns the results, and never changes the original shapes.\n * @module modeling/expansions\n * @example\n * const { expand, offset } = require('@jscad/modeling').expansions\n */\nmodule.exports = {\n expand: require('./expand'),\n offset: require('./offset')\n}\n","const flatten = require('../../utils/flatten')\n\nconst geom2 = require('../../geometries/geom2')\nconst path2 = require('../../geometries/path2')\n\nconst offsetGeom2 = require('./offsetGeom2')\nconst offsetPath2 = require('./offsetPath2')\n\n/**\n * Create offset geometry from the given geometry using the given options.\n * Offsets from internal and external space are created.\n * @param {Object} options - options for offset\n * @param {Float} [options.delta=1] - delta of offset (+ to exterior, - from interior)\n * @param {String} [options.corners='edge'] - type of corner to create after offseting; edge, chamfer, round\n * @param {Integer} [options.segments=16] - number of segments when creating round corners\n * @param {...Object} objects - the geometries to offset\n * @return {Object|Array} new geometry, or list of new geometries\n * @alias module:modeling/expansions.offset\n *\n * @example\n * let small = offset({ delta: -4, corners: 'chamfer' }, square({size: 40})) // contract\n */\nconst offset = (options, ...objects) => {\n objects = flatten(objects)\n if (objects.length === 0) throw new Error('wrong number of arguments')\n\n const results = objects.map((object) => {\n if (path2.isA(object)) return offsetPath2(options, object)\n if (geom2.isA(object)) return offsetGeom2(options, object)\n // if (geom3.isA(object)) return geom3.transform(matrix, object)\n return object\n })\n return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = offset\n","const { EPS, TAU } = require('../../maths/constants')\n\nconst intersect = require('../../maths/utils/intersect')\nconst line2 = require('../../maths/line2')\nconst vec2 = require('../../maths/vec2')\nconst area = require('../../maths/utils/area')\n\n/*\n * Create a set of offset points from the given points using the given options (if any).\n * @param {Object} options - options for offset\n * @param {Float} [options.delta=1] - delta of offset (+ to exterior, - from interior)\n * @param {String} [options.corners='edge'] - type corner to create during of expansion; edge, chamfer, round\n * @param {Integer} [options.segments=16] - number of segments when creating round corners\n * @param {Integer} [options.closed=false] - is the last point connected back to the first point?\n * @param {Array} points - array of 2D points\n * @returns {Array} new set of offset points, plus points for each rounded corner\n */\nconst offsetFromPoints = (options, points) => {\n const defaults = {\n delta: 1,\n corners: 'edge',\n closed: false,\n segments: 16\n }\n let { delta, corners, closed, segments } = Object.assign({ }, defaults, options)\n\n if (Math.abs(delta) < EPS) return points\n\n let rotation = options.closed ? area(points) : 1.0 // + counter clockwise, - clockwise\n if (rotation === 0) rotation = 1.0\n\n // use right hand normal?\n const orientation = ((rotation > 0) && (delta >= 0)) || ((rotation < 0) && (delta < 0))\n delta = Math.abs(delta) // sign is no longer required\n\n let previousSegment = null\n let newPoints = []\n const newCorners = []\n const of = vec2.create()\n const n = points.length\n for (let i = 0; i < n; i++) {\n const j = (i + 1) % n\n const p0 = points[i]\n const p1 = points[j]\n // calculate the unit normal\n orientation ? vec2.subtract(of, p0, p1) : vec2.subtract(of, p1, p0)\n vec2.normal(of, of)\n vec2.normalize(of, of)\n // calculate the offset vector\n vec2.scale(of, of, delta)\n // calculate the new points (edge)\n const n0 = vec2.add(vec2.create(), p0, of)\n const n1 = vec2.add(vec2.create(), p1, of)\n\n const currentSegment = [n0, n1]\n if (previousSegment != null) {\n if (closed || (!closed && j !== 0)) {\n // check for intersection of new line segments\n const ip = intersect(previousSegment[0], previousSegment[1], currentSegment[0], currentSegment[1])\n if (ip) {\n // adjust the previous points\n newPoints.pop()\n // adjust current points\n currentSegment[0] = ip\n } else {\n newCorners.push({ c: p0, s0: previousSegment, s1: currentSegment })\n }\n }\n }\n previousSegment = [n0, n1]\n\n if (j === 0 && !closed) continue\n\n newPoints.push(currentSegment[0])\n newPoints.push(currentSegment[1])\n }\n // complete the closure if required\n if (closed && previousSegment != null) {\n // check for intersection of closing line segments\n const n0 = newPoints[0]\n const n1 = newPoints[1]\n const ip = intersect(previousSegment[0], previousSegment[1], n0, n1)\n if (ip) {\n // adjust the previous points\n newPoints[0] = ip\n newPoints.pop()\n } else {\n const p0 = points[0]\n const cursegment = [n0, n1]\n newCorners.push({ c: p0, s0: previousSegment, s1: cursegment })\n }\n }\n\n // generate corners if necessary\n\n if (corners === 'edge') {\n // map for fast point index lookup\n const pointIndex = new Map() // {point: index}\n newPoints.forEach((point, index) => pointIndex.set(point, index))\n\n // create edge corners\n const line0 = line2.create()\n const line1 = line2.create()\n newCorners.forEach((corner) => {\n line2.fromPoints(line0, corner.s0[0], corner.s0[1])\n line2.fromPoints(line1, corner.s1[0], corner.s1[1])\n const ip = line2.intersectPointOfLines(line0, line1)\n if (Number.isFinite(ip[0]) && Number.isFinite(ip[1])) {\n const p0 = corner.s0[1]\n const i = pointIndex.get(p0)\n newPoints[i] = ip\n newPoints[(i + 1) % newPoints.length] = undefined\n } else {\n // paralell segments, drop one\n const p0 = corner.s1[0]\n const i = pointIndex.get(p0)\n newPoints[i] = undefined\n }\n })\n newPoints = newPoints.filter((p) => p !== undefined)\n }\n\n if (corners === 'round') {\n // create rounded corners\n let cornersegments = Math.floor(segments / 4)\n const v0 = vec2.create()\n newCorners.forEach((corner) => {\n // calculate angle of rotation\n let rotation = vec2.angle(vec2.subtract(v0, corner.s1[0], corner.c))\n rotation -= vec2.angle(vec2.subtract(v0, corner.s0[1], corner.c))\n if (orientation && rotation < 0) {\n rotation = rotation + Math.PI\n if (rotation < 0) rotation = rotation + Math.PI\n }\n if ((!orientation) && rotation > 0) {\n rotation = rotation - Math.PI\n if (rotation > 0) rotation = rotation - Math.PI\n }\n\n if (rotation !== 0.0) {\n // generate the segments\n cornersegments = Math.floor(segments * (Math.abs(rotation) / TAU))\n const step = rotation / cornersegments\n const start = vec2.angle(vec2.subtract(v0, corner.s0[1], corner.c))\n const cornerpoints = []\n for (let i = 1; i < cornersegments; i++) {\n const radians = start + (step * i)\n const point = vec2.fromAngleRadians(vec2.create(), radians)\n vec2.scale(point, point, delta)\n vec2.add(point, point, corner.c)\n cornerpoints.push(point)\n }\n if (cornerpoints.length > 0) {\n const p0 = corner.s0[1]\n let i = newPoints.findIndex((point) => vec2.equals(p0, point))\n i = (i + 1) % newPoints.length\n newPoints.splice(i, 0, ...cornerpoints)\n }\n } else {\n // paralell segments, drop one\n const p0 = corner.s1[0]\n const i = newPoints.findIndex((point) => vec2.equals(p0, point))\n newPoints.splice(i, 1)\n }\n })\n }\n return newPoints\n}\n\nmodule.exports = offsetFromPoints\n","const geom2 = require('../../geometries/geom2')\nconst poly2 = require('../../geometries/poly2')\n\nconst offsetFromPoints = require('./offsetFromPoints')\n\n/*\n * Create a offset geometry from the given geom2 using the given options (if any).\n * @param {Object} options - options for offset\n * @param {Float} [options.delta=1] - delta of offset (+ to exterior, - from interior)\n * @param {String} [options.corners='edge'] - type corner to create during of expansion; edge, chamfer, round\n * @param {Integer} [options.segments=16] - number of segments when creating round corners\n * @param {geom2} geometry - geometry from which to create the offset\n * @returns {geom2} offset geometry, plus rounded corners\n */\nconst offsetGeom2 = (options, geometry) => {\n const defaults = {\n delta: 1,\n corners: 'edge',\n segments: 0\n }\n const { delta, corners, segments } = Object.assign({ }, defaults, options)\n\n if (!(corners === 'edge' || corners === 'chamfer' || corners === 'round')) {\n throw new Error('corners must be \"edge\", \"chamfer\", or \"round\"')\n }\n\n // convert the geometry to outlines, and generate offsets from each\n const outlines = geom2.toOutlines(geometry)\n const newoutlines = outlines.map((outline) => {\n const level = outlines.reduce((acc, polygon) => acc + poly2.arePointsInside(outline, poly2.create(polygon)), 0)\n const outside = (level % 2) === 0\n\n options = {\n delta: outside ? delta : -delta,\n corners,\n closed: true,\n segments\n }\n return offsetFromPoints(options, outline)\n })\n\n // create a composite geometry from the new outlines\n const allsides = newoutlines.reduce((sides, newoutline) => sides.concat(geom2.toSides(geom2.fromPoints(newoutline))), [])\n return geom2.create(allsides)\n}\n\nmodule.exports = offsetGeom2\n","const path2 = require('../../geometries/path2')\n\nconst offsetFromPoints = require('./offsetFromPoints')\n\n/*\n * Create a offset geometry from the given path using the given options (if any).\n * @param {Object} options - options for offset\n * @param {Float} [options.delta=1] - delta of offset (+ to exterior, - from interior)\n * @param {String} [options.corners='edge'] - type corner to create during of expansion; edge, chamfer, round\n * @param {Integer} [options.segments=16] - number of segments when creating round corners\n * @param {path2} geometry - geometry from which to create the offset\n * @returns {path2} offset geometry, plus rounded corners\n */\nconst offsetPath2 = (options, geometry) => {\n const defaults = {\n delta: 1,\n corners: 'edge',\n closed: geometry.isClosed,\n segments: 16\n }\n const { delta, corners, closed, segments } = Object.assign({ }, defaults, options)\n\n if (!(corners === 'edge' || corners === 'chamfer' || corners === 'round')) {\n throw new Error('corners must be \"edge\", \"chamfer\", or \"round\"')\n }\n\n options = { delta, corners, closed, segments }\n const newpoints = offsetFromPoints(options, path2.toPoints(geometry))\n return path2.fromPoints({ closed: closed }, newpoints)\n}\n\nmodule.exports = offsetPath2\n","const { area } = require('../../../maths/utils')\nconst { toOutlines } = require('../../../geometries/geom2')\nconst { arePointsInside } = require('../../../geometries/poly2')\n\n/*\n * Constructs a polygon hierarchy of solids and holes.\n * The hierarchy is represented as a forest of trees. All trees shall be depth at most 2.\n * If a solid exists inside the hole of another solid, it will be split out as its own root.\n *\n * @param {geom2} geometry\n * @returns {Array} an array of polygons with associated holes\n * @alias module:modeling/geometries/geom2.toTree\n *\n * @example\n * const geometry = subtract(rectangle({size: [5, 5]}), rectangle({size: [3, 3]}))\n * console.log(assignHoles(geometry))\n * [{\n * \"solid\": [[-2.5,-2.5],[2.5,-2.5],[2.5,2.5],[-2.5,2.5]],\n * \"holes\": [[[-1.5,1.5],[1.5,1.5],[1.5,-1.5],[-1.5,-1.5]]]\n * }]\n */\nconst assignHoles = (geometry) => {\n const outlines = toOutlines(geometry)\n const solids = [] // solid indices\n const holes = [] // hole indices\n outlines.forEach((outline, i) => {\n const a = area(outline)\n if (a < 0) {\n holes.push(i)\n } else if (a > 0) {\n solids.push(i)\n }\n })\n\n // for each hole, determine what solids it is inside of\n const children = [] // child holes of solid[i]\n const parents = [] // parent solids of hole[i]\n solids.forEach((s, i) => {\n const solid = outlines[s]\n children[i] = []\n holes.forEach((h, j) => {\n const hole = outlines[h]\n // check if a point of hole j is inside solid i\n if (arePointsInside([hole[0]], { vertices: solid })) {\n children[i].push(h)\n if (!parents[j]) parents[j] = []\n parents[j].push(i)\n }\n })\n })\n\n // check if holes have multiple parents and choose one with fewest children\n holes.forEach((h, j) => {\n // ensure at least one parent exists\n if (parents[j] && parents[j].length > 1) {\n // the solid directly containing this hole\n const directParent = minIndex(parents[j], (p) => children[p].length)\n parents[j].forEach((p, i) => {\n if (i !== directParent) {\n // Remove hole from skip level parents\n children[p] = children[p].filter((c) => c !== h)\n }\n })\n }\n })\n\n // map indices back to points\n return children.map((holes, i) => ({\n solid: outlines[solids[i]],\n holes: holes.map((h) => outlines[h])\n }))\n}\n\n/*\n * Find the item in the list with smallest score(item).\n * If the list is empty, return undefined.\n */\nconst minIndex = (list, score) => {\n let bestIndex\n let best\n list.forEach((item, index) => {\n const value = score(item)\n if (best === undefined || value < best) {\n bestIndex = index\n best = value\n }\n })\n return bestIndex\n}\n\nmodule.exports = assignHoles\n","const { filterPoints, linkedPolygon, locallyInside, splitPolygon } = require('./linkedPolygon')\nconst { area, pointInTriangle } = require('./triangle')\n\n/*\n * link every hole into the outer loop, producing a single-ring polygon without holes\n *\n * Original source from https://github.com/mapbox/earcut\n * Copyright (c) 2016 Mapbox\n */\nconst eliminateHoles = (data, holeIndices, outerNode, dim) => {\n const queue = []\n\n for (let i = 0, len = holeIndices.length; i < len; i++) {\n const start = holeIndices[i] * dim\n const end = i < len - 1 ? holeIndices[i + 1] * dim : data.length\n const list = linkedPolygon(data, start, end, dim, false)\n if (list === list.next) list.steiner = true\n queue.push(getLeftmost(list))\n }\n\n queue.sort((a, b) => a.x - b.x) // compare X\n\n // process holes from left to right\n for (let i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode)\n outerNode = filterPoints(outerNode, outerNode.next)\n }\n\n return outerNode\n}\n\n/*\n * find a bridge between vertices that connects hole with an outer ring and link it\n */\nconst eliminateHole = (hole, outerNode) => {\n const bridge = findHoleBridge(hole, outerNode)\n if (!bridge) {\n return outerNode\n }\n\n const bridgeReverse = splitPolygon(bridge, hole)\n\n // filter colinear points around the cuts\n const filteredBridge = filterPoints(bridge, bridge.next)\n filterPoints(bridgeReverse, bridgeReverse.next)\n\n // Check if input node was removed by the filtering\n return outerNode === bridge ? filteredBridge : outerNode\n}\n\n/*\n * David Eberly's algorithm for finding a bridge between hole and outer polygon\n */\nconst findHoleBridge = (hole, outerNode) => {\n let p = outerNode\n const hx = hole.x\n const hy = hole.y\n let qx = -Infinity\n let m\n\n // find a segment intersected by a ray from the hole's leftmost point to the left\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n const x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y)\n if (x <= hx && x > qx) {\n qx = x\n if (x === hx) {\n if (hy === p.y) return p\n if (hy === p.next.y) return p.next\n }\n\n m = p.x < p.next.x ? p : p.next\n }\n }\n\n p = p.next\n } while (p !== outerNode)\n\n if (!m) return null\n\n if (hx === qx) return m // hole touches outer segment; pick leftmost endpoint\n\n // look for points inside the triangle of hole point, segment intersection and endpoint\n // if there are no points found, we have a valid connection\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n const stop = m\n const mx = m.x\n const my = m.y\n let tanMin = Infinity\n\n p = m\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n const tan = Math.abs(hy - p.y) / (hx - p.x) // tangential\n\n if (locallyInside(p, hole) && (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p\n tanMin = tan\n }\n }\n\n p = p.next\n } while (p !== stop)\n\n return m\n}\n\n/*\n * whether sector in vertex m contains sector in vertex p in the same coordinates\n */\nconst sectorContainsSector = (m, p) => area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0\n\n/*\n * find the leftmost node of a polygon ring\n */\nconst getLeftmost = (start) => {\n let p = start\n let leftmost = start\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p\n p = p.next\n } while (p !== start)\n\n return leftmost\n}\n\nmodule.exports = eliminateHoles\n","const eliminateHoles = require('./eliminateHoles')\nconst { removeNode, sortLinked } = require('./linkedList')\nconst { cureLocalIntersections, filterPoints, isValidDiagonal, linkedPolygon, splitPolygon } = require('./linkedPolygon')\nconst { area, pointInTriangle } = require('./triangle')\n\n/*\n * An implementation of the earcut polygon triangulation algorithm.\n *\n * Original source from https://github.com/mapbox/earcut\n * Copyright (c) 2016 Mapbox\n *\n * @param {data} A flat array of vertex coordinates.\n * @param {holeIndices} An array of hole indices if any.\n * @param {dim} The number of coordinates per vertex in the input array.\n */\nconst triangulate = (data, holeIndices, dim = 2) => {\n const hasHoles = holeIndices && holeIndices.length\n const outerLen = hasHoles ? holeIndices[0] * dim : data.length\n let outerNode = linkedPolygon(data, 0, outerLen, dim, true)\n const triangles = []\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles\n\n let minX, minY, maxX, maxY, invSize\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim)\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = maxX = data[0]\n minY = maxY = data[1]\n\n for (let i = dim; i < outerLen; i += dim) {\n const x = data[i]\n const y = data[i + 1]\n if (x < minX) minX = x\n if (y < minY) minY = y\n if (x > maxX) maxX = x\n if (y > maxY) maxY = y\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY)\n invSize = invSize !== 0 ? 1 / invSize : 0\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize)\n\n return triangles\n}\n\n/*\n * main ear slicing loop which triangulates a polygon (given as a linked list)\n */\nconst earcutLinked = (ear, triangles, dim, minX, minY, invSize, pass) => {\n if (!ear) return\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize)\n\n let stop = ear\n let prev\n let next\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev\n next = ear.next\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim)\n triangles.push(ear.i / dim)\n triangles.push(next.i / dim)\n\n removeNode(ear)\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next\n stop = next.next\n\n continue\n }\n\n ear = next\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1)\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim)\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2)\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize)\n }\n\n break\n }\n }\n}\n\n/*\n * check whether a polygon node forms a valid ear with adjacent nodes\n */\nconst isEar = (ear) => {\n const a = ear.prev\n const b = ear\n const c = ear.next\n\n if (area(a, b, c) >= 0) return false // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n let p = ear.next.next\n\n while (p !== ear.prev) {\n if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) {\n return false\n }\n p = p.next\n }\n\n return true\n}\n\nconst isEarHashed = (ear, minX, minY, invSize) => {\n const a = ear.prev\n const b = ear\n const c = ear.next\n\n if (area(a, b, c) >= 0) return false // reflex, can't be an ear\n\n // triangle bbox; min & max are calculated like this for speed\n const minTX = a.x < b.x ? (a.x < c.x ? a.x : c.x) : (b.x < c.x ? b.x : c.x)\n const minTY = a.y < b.y ? (a.y < c.y ? a.y : c.y) : (b.y < c.y ? b.y : c.y)\n const maxTX = a.x > b.x ? (a.x > c.x ? a.x : c.x) : (b.x > c.x ? b.x : c.x)\n const maxTY = a.y > b.y ? (a.y > c.y ? a.y : c.y) : (b.y > c.y ? b.y : c.y)\n\n // z-order range for the current triangle bbox\n const minZ = zOrder(minTX, minTY, minX, minY, invSize)\n const maxZ = zOrder(maxTX, maxTY, minX, minY, invSize)\n\n let p = ear.prevZ\n let n = ear.nextZ\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p !== ear.prev && p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false\n p = p.prevZ\n\n if (n !== ear.prev && n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0) return false\n n = n.nextZ\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p !== ear.prev && p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false\n p = p.prevZ\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n !== ear.prev && n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0) return false\n n = n.nextZ\n }\n\n return true\n}\n\n/*\n * try splitting polygon into two and triangulate them independently\n */\nconst splitEarcut = (start, triangles, dim, minX, minY, invSize) => {\n // look for a valid diagonal that divides the polygon into two\n let a = start\n do {\n let b = a.next.next\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n let c = splitPolygon(a, b)\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next)\n c = filterPoints(c, c.next)\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize)\n earcutLinked(c, triangles, dim, minX, minY, invSize)\n return\n }\n\n b = b.next\n }\n\n a = a.next\n } while (a !== start)\n}\n\n/*\n * interlink polygon nodes in z-order\n */\nconst indexCurve = (start, minX, minY, invSize) => {\n let p = start\n do {\n if (p.z === null) p.z = zOrder(p.x, p.y, minX, minY, invSize)\n p.prevZ = p.prev\n p.nextZ = p.next\n p = p.next\n } while (p !== start)\n\n p.prevZ.nextZ = null\n p.prevZ = null\n\n sortLinked(p, (p) => p.z)\n}\n\n/*\n * z-order of a point given coords and inverse of the longer side of data bbox\n */\nconst zOrder = (x, y, minX, minY, invSize) => {\n // coords are transformed into non-negative 15-bit integer range\n x = 32767 * (x - minX) * invSize\n y = 32767 * (y - minY) * invSize\n\n x = (x | (x << 8)) & 0x00FF00FF\n x = (x | (x << 4)) & 0x0F0F0F0F\n x = (x | (x << 2)) & 0x33333333\n x = (x | (x << 1)) & 0x55555555\n\n y = (y | (y << 8)) & 0x00FF00FF\n y = (y | (y << 4)) & 0x0F0F0F0F\n y = (y | (y << 2)) & 0x33333333\n y = (y | (y << 1)) & 0x55555555\n\n return x | (y << 1)\n}\n\nmodule.exports = triangulate\n","const sortLinked = require('./linkedListSort')\n\nclass Node {\n constructor (i, x, y) {\n // vertex index in coordinates array\n this.i = i\n\n // vertex coordinates\n this.x = x\n this.y = y\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null\n this.next = null\n\n // z-order curve value\n this.z = null\n\n // previous and next nodes in z-order\n this.prevZ = null\n this.nextZ = null\n\n // indicates whether this is a steiner point\n this.steiner = false\n }\n}\n\n/*\n * create a node and optionally link it with previous one (in a circular doubly linked list)\n */\nconst insertNode = (i, x, y, last) => {\n const p = new Node(i, x, y)\n\n if (!last) {\n p.prev = p\n p.next = p\n } else {\n p.next = last.next\n p.prev = last\n last.next.prev = p\n last.next = p\n }\n\n return p\n}\n\n/*\n * remove a node and join prev with next nodes\n */\nconst removeNode = (p) => {\n p.next.prev = p.prev\n p.prev.next = p.next\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ\n if (p.nextZ) p.nextZ.prevZ = p.prevZ\n}\n\nmodule.exports = { Node, insertNode, removeNode, sortLinked }\n","\n// Simon Tatham's linked list merge sort algorithm\n// https://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nconst sortLinked = (list, fn) => {\n let i, p, q, e, numMerges\n let inSize = 1\n\n do {\n p = list\n list = null\n let tail = null\n numMerges = 0\n\n while (p) {\n numMerges++\n q = p\n let pSize = 0\n for (i = 0; i < inSize; i++) {\n pSize++\n q = q.nextZ\n if (!q) break\n }\n\n let qSize = inSize\n\n while (pSize > 0 || (qSize > 0 && q)) {\n if (pSize !== 0 && (qSize === 0 || !q || fn(p) <= fn(q))) {\n e = p\n p = p.nextZ\n pSize--\n } else {\n e = q\n q = q.nextZ\n qSize--\n }\n\n if (tail) tail.nextZ = e\n else list = e\n\n e.prevZ = tail\n tail = e\n }\n\n p = q\n }\n\n tail.nextZ = null\n inSize *= 2\n } while (numMerges > 1)\n\n return list\n}\n\nmodule.exports = sortLinked\n","const { Node, insertNode, removeNode } = require('./linkedList')\nconst { area } = require('./triangle')\n\n/*\n * create a circular doubly linked list from polygon points in the specified winding order\n */\nconst linkedPolygon = (data, start, end, dim, clockwise) => {\n let last\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (let i = start; i < end; i += dim) {\n last = insertNode(i, data[i], data[i + 1], last)\n }\n } else {\n for (let i = end - dim; i >= start; i -= dim) {\n last = insertNode(i, data[i], data[i + 1], last)\n }\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last)\n last = last.next\n }\n\n return last\n}\n\n/*\n * eliminate colinear or duplicate points\n */\nconst filterPoints = (start, end) => {\n if (!start) return start\n if (!end) end = start\n\n let p = start\n let again\n do {\n again = false\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p)\n p = end = p.prev\n if (p === p.next) break\n again = true\n } else {\n p = p.next\n }\n } while (again || p !== end)\n\n return end\n}\n\n/*\n * go through all polygon nodes and cure small local self-intersections\n */\nconst cureLocalIntersections = (start, triangles, dim) => {\n let p = start\n do {\n const a = p.prev\n const b = p.next.next\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n triangles.push(a.i / dim)\n triangles.push(p.i / dim)\n triangles.push(b.i / dim)\n\n // remove two nodes involved\n removeNode(p)\n removeNode(p.next)\n\n p = start = b\n }\n\n p = p.next\n } while (p !== start)\n\n return filterPoints(p)\n}\n\n/*\n * check if a polygon diagonal intersects any polygon segments\n */\nconst intersectsPolygon = (a, b) => {\n let p = a\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true\n p = p.next\n } while (p !== a)\n\n return false\n}\n\n/*\n * check if a polygon diagonal is locally inside the polygon\n */\nconst locallyInside = (a, b) => area(a.prev, a, a.next) < 0\n ? area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0\n : area(a, b, a.prev) < 0 || area(a, a.next, b) < 0\n\n/*\n * check if the middle point of a polygon diagonal is inside the polygon\n */\nconst middleInside = (a, b) => {\n let p = a\n let inside = false\n const px = (a.x + b.x) / 2\n const py = (a.y + b.y) / 2\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x)) { inside = !inside }\n p = p.next\n } while (p !== a)\n\n return inside\n}\n\n/*\n * link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two\n * if one belongs to the outer ring and another to a hole, it merges it into a single ring\n */\nconst splitPolygon = (a, b) => {\n const a2 = new Node(a.i, a.x, a.y)\n const b2 = new Node(b.i, b.x, b.y)\n const an = a.next\n const bp = b.prev\n\n a.next = b\n b.prev = a\n\n a2.next = an\n an.prev = a2\n\n b2.next = a2\n a2.prev = b2\n\n bp.next = b2\n b2.prev = bp\n\n return b2\n}\n\n/*\n * check if a diagonal between two polygon nodes is valid (lies in polygon interior)\n */\nconst isValidDiagonal = (a, b) => a.next.i !== b.i &&\n a.prev.i !== b.i &&\n !intersectsPolygon(a, b) && // doesn't intersect other edges\n (\n locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0\n )\n\n/*\n * check if two segments intersect\n */\nconst intersects = (p1, q1, p2, q2) => {\n const o1 = Math.sign(area(p1, q1, p2))\n const o2 = Math.sign(area(p1, q1, q2))\n const o3 = Math.sign(area(p2, q2, p1))\n const o4 = Math.sign(area(p2, q2, q1))\n\n if (o1 !== o2 && o3 !== o4) return true // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true // p1, q1 and p2 are colinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true // p1, q1 and q2 are colinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true // p2, q2 and p1 are colinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true // p2, q2 and q1 are colinear and q1 lies on p2q2\n\n return false\n}\n\n/*\n * for colinear points p, q, r, check if point q lies on segment pr\n */\nconst onSegment = (p, q, r) => q.x <= Math.max(p.x, r.x) &&\n q.x >= Math.min(p.x, r.x) &&\n q.y <= Math.max(p.y, r.y) &&\n q.y >= Math.min(p.y, r.y)\n\nconst signedArea = (data, start, end, dim) => {\n let sum = 0\n for (let i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1])\n j = i\n }\n\n return sum\n}\n\n/*\n * check if two points are equal\n */\nconst equals = (p1, p2) => p1.x === p2.x && p1.y === p2.y\n\nmodule.exports = { cureLocalIntersections, filterPoints, isValidDiagonal, linkedPolygon, locallyInside, splitPolygon }\n","const geom2 = require('../../../geometries/geom2')\nconst plane = require('../../../maths/plane')\nconst vec2 = require('../../../maths/vec2')\nconst vec3 = require('../../../maths/vec3')\nconst calculatePlane = require('../slice/calculatePlane')\nconst assignHoles = require('./assignHoles')\n\n/*\n * Constructs a polygon hierarchy which associates holes with their outer solids.\n * This class maps a 3D polygon onto a 2D space using an orthonormal basis.\n * It tracks the mapping so that points can be reversed back to 3D losslessly.\n */\nclass PolygonHierarchy {\n constructor (slice) {\n this.plane = calculatePlane(slice)\n\n // create an orthonormal basis\n // choose an arbitrary right hand vector, making sure it is somewhat orthogonal to the plane normal\n const rightvector = vec3.orthogonal(vec3.create(), this.plane)\n const perp = vec3.cross(vec3.create(), this.plane, rightvector)\n this.v = vec3.normalize(perp, perp)\n this.u = vec3.cross(vec3.create(), this.v, this.plane)\n\n // map from 2D to original 3D points\n this.basisMap = new Map()\n\n // project slice onto 2D plane\n const projected = slice.edges.map((e) => e.map((v) => this.to2D(v)))\n\n // compute polygon hierarchies, assign holes to solids\n const geometry = geom2.create(projected)\n this.roots = assignHoles(geometry)\n }\n\n /*\n * project a 3D point onto the 2D plane\n */\n to2D (vector3) {\n const vector2 = vec2.fromValues(vec3.dot(vector3, this.u), vec3.dot(vector3, this.v))\n this.basisMap.set(vector2, vector3)\n return vector2\n }\n\n /*\n * un-project a 2D point back into 3D\n */\n to3D (vector2) {\n // use a map to get the original 3D, no floating point error\n const original = this.basisMap.get(vector2)\n if (original) {\n return original\n } else {\n console.log('Warning: point not in original slice')\n const v1 = vec3.scale(vec3.create(), this.u, vector2[0])\n const v2 = vec3.scale(vec3.create(), this.v, vector2[1])\n\n const planeOrigin = vec3.scale(vec3.create(), plane, plane[3])\n const v3 = vec3.add(v1, v1, planeOrigin)\n return vec3.add(v2, v2, v3)\n }\n }\n}\n\nmodule.exports = PolygonHierarchy\n","\n/*\n * check if a point lies within a convex triangle\n */\nconst pointInTriangle = (ax, ay, bx, by, cx, cy, px, py) => (\n (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 &&\n (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 &&\n (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0\n)\n\n/*\n * signed area of a triangle\n */\nconst area = (p, q, r) => (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y)\n\nmodule.exports = { area, pointInTriangle }\n","const mat4 = require('../../maths/mat4')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\nconst poly3 = require('../../geometries/poly3')\n\nconst slice = require('./slice')\nconst repairSlice = require('./slice/repair')\n\nconst extrudeWalls = require('./extrudeWalls')\n\nconst defaultCallback = (progress, index, base) => {\n let baseSlice = null\n if (geom2.isA(base)) baseSlice = slice.fromSides(geom2.toSides(base))\n if (poly3.isA(base)) baseSlice = slice.fromPoints(poly3.toPoints(base))\n\n return progress === 0 || progress === 1 ? slice.transform(mat4.fromTranslation(mat4.create(), [0, 0, progress]), baseSlice) : null\n}\n\n/**\n * Extrude a solid from the slices as returned by the callback function.\n * @see slice\n *\n * @param {Object} options - options for extrude\n * @param {Integer} [options.numberOfSlices=2] the number of slices to be generated by the callback\n * @param {Boolean} [options.capStart=true] the solid should have a cap at the start\n * @param {Boolean} [options.capEnd=true] the solid should have a cap at the end\n * @param {Boolean} [options.close=false] the solid should have a closing section between start and end\n * @param {Boolean} [options.repair=true] - repair gaps in the geometry\n * @param {Function} [options.callback] the callback function that generates each slice\n * @param {Object} base - the base object which is used to create slices (see the example for callback information)\n * @return {geom3} the extruded shape\n * @alias module:modeling/extrusions.extrudeFromSlices\n *\n * @example\n * // Parameters:\n * // progress : the percent complete [0..1]\n * // index : the index of the current slice [0..numberOfSlices - 1]\n * // base : the base object as given\n * // Return Value:\n * // slice or null (to skip)\n * const callback = (progress, index, base) => {\n * ...\n * return slice\n * }\n */\nconst extrudeFromSlices = (options, base) => {\n const defaults = {\n numberOfSlices: 2,\n capStart: true,\n capEnd: true,\n close: false,\n repair: true,\n callback: defaultCallback\n }\n const { numberOfSlices, capStart, capEnd, close, repair, callback: generate } = Object.assign({ }, defaults, options)\n\n if (numberOfSlices < 2) throw new Error('numberOfSlices must be 2 or more')\n\n // Repair gaps in the base slice\n if (repair) {\n // note: base must be a slice, if base is geom2 this doesn't repair\n base = repairSlice(base)\n }\n\n const sMax = numberOfSlices - 1\n\n let startSlice = null\n let endSlice = null\n let prevSlice = null\n let polygons = []\n for (let s = 0; s < numberOfSlices; s++) {\n // invoke the callback function to get the next slice\n // NOTE: callback can return null to skip the slice\n const currentSlice = generate(s / sMax, s, base)\n\n if (currentSlice) {\n if (!slice.isA(currentSlice)) throw new Error('the callback function must return slice objects')\n\n const edges = slice.toEdges(currentSlice)\n if (edges.length === 0) throw new Error('the callback function must return slices with one or more edges')\n\n if (prevSlice) {\n polygons = polygons.concat(extrudeWalls(prevSlice, currentSlice))\n }\n\n // save start and end slices for caps if necessary\n if (s === 0) startSlice = currentSlice\n if (s === (numberOfSlices - 1)) endSlice = currentSlice\n\n prevSlice = currentSlice\n }\n }\n\n if (capEnd) {\n // create a cap at the end\n const endPolygons = slice.toPolygons(endSlice)\n polygons = polygons.concat(endPolygons)\n }\n if (capStart) {\n // create a cap at the start\n const startPolygons = slice.toPolygons(startSlice).map(poly3.invert)\n polygons = polygons.concat(startPolygons)\n }\n if (!capStart && !capEnd) {\n // create walls between end and start slices\n if (close && !slice.equals(endSlice, startSlice)) {\n polygons = polygons.concat(extrudeWalls(endSlice, startSlice))\n }\n }\n return geom3.create(polygons)\n}\n\nmodule.exports = extrudeFromSlices\n","const { TAU } = require('../../maths/constants')\nconst slice = require('./slice')\nconst mat4 = require('../../maths/mat4')\nconst extrudeFromSlices = require('./extrudeFromSlices')\nconst geom2 = require('../../geometries/geom2')\n\n/**\n * Perform a helical extrude of the geometry, using the given options.\n *\n * @param {Object} options - options for extrusion\n * @param {Number} [options.angle=TAU] - angle of the extrusion (RADIANS) positive for right-hand rotation, negative for left-hand\n * @param {Number} [options.startAngle=0] - start angle of the extrusion (RADIANS)\n * @param {Number} [options.pitch=10] - elevation gain for each turn\n * @param {Number} [options.height] - total height of the helix path. Ignored if pitch is set.\n * @param {Number} [options.endOffset=0] - offset the final radius of the extrusion, allowing for tapered helix, and or spiral\n * @param {Number} [options.segmentsPerRotation=32] - number of segments per full rotation of the extrusion\n * @param {geom2} geometry - the geometry to extrude\n * @returns {geom3} the extruded geometry\n * @alias module:modeling/extrusions.extrudeHelical\n *\n * @example\n * const myshape = extrudeHelical(\n * {\n * angle: Math.PI * 4,\n * pitch: 10,\n * segmentsPerRotation: 64\n * },\n * circle({size: 3, center: [10, 0]})\n * )\n */\nconst extrudeHelical = (options, geometry) => {\n const defaults = {\n angle: TAU,\n startAngle: 0,\n pitch: 10,\n endOffset: 0,\n segmentsPerRotation: 32\n }\n const { angle, endOffset, segmentsPerRotation, startAngle } = Object.assign({}, defaults, options)\n\n let pitch\n // ignore height if pitch is set\n if (!options.pitch && options.height) {\n pitch = options.height / (angle / TAU)\n } else {\n pitch = options.pitch ? options.pitch : defaults.pitch\n }\n\n // needs at least 3 segments for each revolution\n const minNumberOfSegments = 3\n\n if (segmentsPerRotation < minNumberOfSegments) { throw new Error('The number of segments per rotation needs to be at least 3.') }\n\n const shapeSides = geom2.toSides(geometry)\n if (shapeSides.length === 0) throw new Error('the given geometry cannot be empty')\n\n // const pointsWithNegativeX = shapeSides.filter((s) => (s[0][0] < 0))\n const pointsWithPositiveX = shapeSides.filter((s) => (s[0][0] >= 0))\n\n let baseSlice = slice.fromSides(shapeSides)\n\n if (pointsWithPositiveX.length === 0) {\n // only points in negative x plane, reverse\n baseSlice = slice.reverse(baseSlice)\n }\n\n const calculatedSegments = Math.round(segmentsPerRotation / TAU * Math.abs(angle))\n const segments = calculatedSegments >= 2 ? calculatedSegments : 2\n // define transform matrix variables for performance increase\n const step1 = mat4.create()\n let matrix\n const sliceCallback = (progress, index, base) => {\n const zRotation = startAngle + angle / segments * index\n const xOffset = endOffset / segments * index\n const zOffset = (zRotation - startAngle) / TAU * pitch\n\n // TODO: check for valid geometry after translations\n // ie all the points have to be either x > -xOffset or x < -xOffset\n // this would have to be checked for every transform, and handled\n //\n // not implementing, as this currently doesn't break anything,\n // only creates inside-out polygons\n\n // create transformation matrix\n mat4.multiply(\n step1,\n // then apply offsets\n mat4.fromTranslation(mat4.create(), [xOffset, 0, zOffset * Math.sign(angle)]),\n // first rotate \"flat\" 2D shape from XY to XZ plane\n mat4.fromXRotation(mat4.create(), -TAU / 4 * Math.sign(angle)) // rotate the slice correctly to not create inside-out polygon\n )\n\n matrix = mat4.create()\n mat4.multiply(\n matrix,\n // finally rotate around Z axis\n mat4.fromZRotation(mat4.create(), zRotation),\n step1\n )\n return slice.transform(matrix, base)\n }\n\n return extrudeFromSlices(\n {\n // \"base\" slice is counted as segment, so add one for complete final rotation\n numberOfSlices: segments + 1,\n callback: sliceCallback\n },\n baseSlice\n )\n}\n\nmodule.exports = extrudeHelical\n","const flatten = require('../../utils/flatten')\n\nconst geom2 = require('../../geometries/geom2')\nconst path2 = require('../../geometries/path2')\n\nconst extrudeLinearGeom2 = require('./extrudeLinearGeom2')\nconst extrudeLinearPath2 = require('./extrudeLinearPath2')\n\n/**\n * Extrude the given geometry in an upward linear direction using the given options.\n * Accepts path2 or geom2 objects as input. Paths must be closed.\n *\n * @param {Object} options - options for extrude\n * @param {Number} [options.height=1] the height of the extrusion\n * @param {Number} [options.twistAngle=0] the final rotation (RADIANS) about the origin of the shape (if any)\n * @param {Integer} [options.twistSteps=1] the resolution of the twist about the axis (if any)\n * @param {...Object} objects - the geometries to extrude\n * @return {Object|Array} the extruded geometry, or a list of extruded geometry\n * @alias module:modeling/extrusions.extrudeLinear\n *\n * @example\n * let myshape = extrudeLinear({height: 10}, rectangle({size: [20, 25]}))\n */\nconst extrudeLinear = (options, ...objects) => {\n const defaults = {\n height: 1,\n twistAngle: 0,\n twistSteps: 1,\n repair: true\n }\n const { height, twistAngle, twistSteps, repair } = Object.assign({ }, defaults, options)\n\n objects = flatten(objects)\n if (objects.length === 0) throw new Error('wrong number of arguments')\n\n options = { offset: [0, 0, height], twistAngle, twistSteps, repair }\n\n const results = objects.map((object) => {\n if (path2.isA(object)) return extrudeLinearPath2(options, object)\n if (geom2.isA(object)) return extrudeLinearGeom2(options, object)\n // if (geom3.isA(object)) return geom3.extrude(options, object)\n return object\n })\n return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = extrudeLinear\n","const mat4 = require('../../maths/mat4')\nconst vec3 = require('../../maths/vec3')\n\nconst geom2 = require('../../geometries/geom2')\n\nconst slice = require('./slice')\n\nconst extrudeFromSlices = require('./extrudeFromSlices')\n\n/*\n * Extrude the given geometry using the given options.\n *\n * @param {Object} [options] - options for extrude\n * @param {Array} [options.offset] - the direction of the extrusion as a 3D vector\n * @param {Number} [options.twistAngle] - the final rotation (RADIANS) about the origin\n * @param {Integer} [options.twistSteps] - the number of steps created to produce the twist (if any)\n * @param {Boolean} [options.repair] - repair gaps in the geometry\n * @param {geom2} geometry - the geometry to extrude\n * @returns {geom3} the extruded 3D geometry\n*/\nconst extrudeGeom2 = (options, geometry) => {\n const defaults = {\n offset: [0, 0, 1],\n twistAngle: 0,\n twistSteps: 12,\n repair: true\n }\n let { offset, twistAngle, twistSteps, repair } = Object.assign({ }, defaults, options)\n\n if (twistSteps < 1) throw new Error('twistSteps must be 1 or more')\n\n if (twistAngle === 0) {\n twistSteps = 1\n }\n\n // convert to vector in order to perform transforms\n const offsetv = vec3.clone(offset)\n\n const baseSides = geom2.toSides(geometry)\n if (baseSides.length === 0) throw new Error('the given geometry cannot be empty')\n\n const baseSlice = slice.fromSides(baseSides)\n if (offsetv[2] < 0) slice.reverse(baseSlice, baseSlice)\n\n const matrix = mat4.create()\n const createTwist = (progress, index, base) => {\n const Zrotation = index / twistSteps * twistAngle\n const Zoffset = vec3.scale(vec3.create(), offsetv, index / twistSteps)\n mat4.multiply(matrix, mat4.fromZRotation(matrix, Zrotation), mat4.fromTranslation(mat4.create(), Zoffset))\n\n return slice.transform(matrix, base)\n }\n\n options = {\n numberOfSlices: twistSteps + 1,\n capStart: true,\n capEnd: true,\n repair,\n callback: createTwist\n }\n return extrudeFromSlices(options, baseSlice)\n}\n\nmodule.exports = extrudeGeom2\n","const geom2 = require('../../geometries/geom2')\nconst path2 = require('../../geometries/path2')\n\nconst extrudeLinearGeom2 = require('./extrudeLinearGeom2')\n\n/*\n * Extrude the given geometry using the given options.\n *\n * @param {Object} [options] - options for extrude\n * @param {Array} [options.offset] - the direction of the extrusion as a 3D vector\n * @param {Number} [options.twistAngle] - the final rotation (RADIANS) about the origin\n * @param {Integer} [options.twistSteps] - the number of steps created to produce the twist (if any)\n * @param {path2} geometry - the geometry to extrude\n * @returns {geom3} the extruded 3D geometry\n*/\nconst extrudePath2 = (options, geometry) => {\n if (!geometry.isClosed) throw new Error('extruded path must be closed')\n // Convert path2 to geom2\n const points = path2.toPoints(geometry)\n const geometry2 = geom2.fromPoints(points)\n return extrudeLinearGeom2(options, geometry2)\n}\n\nmodule.exports = extrudePath2\n","const flatten = require('../../utils/flatten')\n\nconst geom2 = require('../../geometries/geom2')\nconst path2 = require('../../geometries/path2')\n\nconst extrudeRectangularPath2 = require('./extrudeRectangularPath2')\nconst extrudeRectangularGeom2 = require('./extrudeRectangularGeom2')\n\n/**\n * Extrude the given geometry by following the outline(s) with a rectangle.\n * @See expand for addition options\n * @param {Object} options - options for extrusion, if any\n * @param {Number} [options.size=1] - size of the rectangle\n * @param {Number} [options.height=1] - height of the extrusion\n * @param {...Object} objects - the geometries to extrude\n * @return {Object|Array} the extruded object, or a list of extruded objects\n * @alias module:modeling/extrusions.extrudeRectangular\n *\n * @example\n * let mywalls = extrudeRectangular({size: 1, height: 3}, square({size: 20}))\n * let mywalls = extrudeRectangular({size: 1, height: 300, twistAngle: TAU / 2}, square({size: 20}))\n */\nconst extrudeRectangular = (options, ...objects) => {\n const defaults = {\n size: 1,\n height: 1\n }\n const { size, height } = Object.assign({}, defaults, options)\n\n objects = flatten(objects)\n if (objects.length === 0) throw new Error('wrong number of arguments')\n\n if (size <= 0) throw new Error('size must be positive')\n if (height <= 0) throw new Error('height must be positive')\n\n const results = objects.map((object) => {\n if (path2.isA(object)) return extrudeRectangularPath2(options, object)\n if (geom2.isA(object)) return extrudeRectangularGeom2(options, object)\n // if (geom3.isA(object)) return geom3.transform(matrix, object)\n return object\n })\n return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = extrudeRectangular\n","const { area } = require('../../maths/utils')\n\nconst geom2 = require('../../geometries/geom2')\nconst path2 = require('../../geometries/path2')\n\nconst expand = require('../expansions/expand')\n\nconst extrudeLinearGeom2 = require('./extrudeLinearGeom2')\n\n/*\n * Expand and extrude the given geometry (geom2).\n * @see expand for additional options\n * @param {Object} options - options for extrusion, if any\n * @param {Number} [options.size=1] - size of the rectangle\n * @param {Number} [options.height=1] - height of the extrusion\n * @param {geom2} geometry - the geometry to extrude\n * @return {geom3} the extruded geometry\n */\nconst extrudeRectangularGeom2 = (options, geometry) => {\n const defaults = {\n size: 1,\n height: 1\n }\n const { size, height } = Object.assign({ }, defaults, options)\n\n options.delta = size\n options.offset = [0, 0, height]\n\n // convert the geometry to outlines\n const outlines = geom2.toOutlines(geometry)\n if (outlines.length === 0) throw new Error('the given geometry cannot be empty')\n\n // expand the outlines\n const newparts = outlines.map((outline) => {\n if (area(outline) < 0) outline.reverse() // all outlines must wind counter clockwise\n return expand(options, path2.fromPoints({ closed: true }, outline))\n })\n\n // create a composite geometry\n const allsides = newparts.reduce((sides, part) => sides.concat(geom2.toSides(part)), [])\n const newgeometry = geom2.create(allsides)\n\n return extrudeLinearGeom2(options, newgeometry)\n}\n\nmodule.exports = extrudeRectangularGeom2\n","const path2 = require('../../geometries/path2')\n\nconst expand = require('../expansions/expand')\n\nconst extrudeLinearGeom2 = require('./extrudeLinearGeom2')\n\n/*\n * Expand and extrude the given geometry (path2).\n * @See expand for addition options\n * @param {Object} options - options for extrusion, if any\n * @param {Number} [options.size=1] - size of the rectangle\n * @param {Number} [options.height=1] - height of the extrusion\n * @param {path2} geometry - the geometry to extrude\n * @return {geom3} the extruded geometry\n */\nconst extrudeRectangularPath2 = (options, geometry) => {\n const defaults = {\n size: 1,\n height: 1\n }\n const { size, height } = Object.assign({ }, defaults, options)\n\n options.delta = size\n options.offset = [0, 0, height]\n\n const points = path2.toPoints(geometry)\n if (points.length === 0) throw new Error('the given geometry cannot be empty')\n\n const newgeometry = expand(options, geometry)\n return extrudeLinearGeom2(options, newgeometry)\n}\n\nmodule.exports = extrudeRectangularPath2\n","const { TAU } = require('../../maths/constants')\nconst mat4 = require('../../maths/mat4')\n\nconst { mirrorX } = require('../transforms/mirror')\n\nconst geom2 = require('../../geometries/geom2')\n\nconst slice = require('./slice')\n\nconst extrudeFromSlices = require('./extrudeFromSlices')\n\n/**\n * Rotate extrude the given geometry using the given options.\n *\n * @param {Object} options - options for extrusion\n * @param {Number} [options.angle=TAU] - angle of the extrusion (RADIANS)\n * @param {Number} [options.startAngle=0] - start angle of the extrusion (RADIANS)\n * @param {String} [options.overflow='cap'] - what to do with points outside of bounds (+ / - x) :\n * defaults to capping those points to 0 (only supported behaviour for now)\n * @param {Number} [options.segments=12] - number of segments of the extrusion\n * @param {geom2} geometry - the geometry to extrude\n * @returns {geom3} the extruded geometry\n * @alias module:modeling/extrusions.extrudeRotate\n *\n * @example\n * const myshape = extrudeRotate({segments: 8, angle: TAU / 2}, circle({size: 3, center: [4, 0]}))\n */\nconst extrudeRotate = (options, geometry) => {\n const defaults = {\n segments: 12,\n startAngle: 0,\n angle: TAU,\n overflow: 'cap'\n }\n let { segments, startAngle, angle, overflow } = Object.assign({}, defaults, options)\n\n if (segments < 3) throw new Error('segments must be greater then 3')\n\n startAngle = Math.abs(startAngle) > TAU ? startAngle % TAU : startAngle\n angle = Math.abs(angle) > TAU ? angle % TAU : angle\n\n let endAngle = startAngle + angle\n endAngle = Math.abs(endAngle) > TAU ? endAngle % TAU : endAngle\n\n if (endAngle < startAngle) {\n const x = startAngle\n startAngle = endAngle\n endAngle = x\n }\n let totalRotation = endAngle - startAngle\n if (totalRotation <= 0.0) totalRotation = TAU\n\n if (Math.abs(totalRotation) < TAU) {\n // adjust the segments to achieve the total rotation requested\n const anglePerSegment = TAU / segments\n segments = Math.floor(Math.abs(totalRotation) / anglePerSegment)\n if (Math.abs(totalRotation) > (segments * anglePerSegment)) segments++\n }\n\n // console.log('startAngle: '+startAngle)\n // console.log('endAngle: '+endAngle)\n // console.log(totalRotation)\n // console.log(segments)\n\n // convert geometry to an array of sides, easier to deal with\n let shapeSides = geom2.toSides(geometry)\n if (shapeSides.length === 0) throw new Error('the given geometry cannot be empty')\n\n // determine if the rotate extrude can be computed in the first place\n // ie all the points have to be either x > 0 or x < 0\n\n // generic solution to always have a valid solid, even if points go beyond x/ -x\n // 1. split points up between all those on the 'left' side of the axis (x<0) & those on the 'righ' (x>0)\n // 2. for each set of points do the extrusion operation IN OPOSITE DIRECTIONS\n // 3. union the two resulting solids\n\n // 1. alt : OR : just cap of points at the axis ?\n\n const pointsWithNegativeX = shapeSides.filter((s) => (s[0][0] < 0))\n const pointsWithPositiveX = shapeSides.filter((s) => (s[0][0] >= 0))\n const arePointsWithNegAndPosX = pointsWithNegativeX.length > 0 && pointsWithPositiveX.length > 0\n\n // FIXME actually there are cases where setting X=0 will change the basic shape\n // - Alternative #1 : don't allow shapes with both negative and positive X values\n // - Alternative #2 : remove one half of the shape (costly)\n if (arePointsWithNegAndPosX && overflow === 'cap') {\n if (pointsWithNegativeX.length > pointsWithPositiveX.length) {\n shapeSides = shapeSides.map((side) => {\n let point0 = side[0]\n let point1 = side[1]\n point0 = [Math.min(point0[0], 0), point0[1]]\n point1 = [Math.min(point1[0], 0), point1[1]]\n return [point0, point1]\n })\n // recreate the geometry from the (-) capped points\n geometry = geom2.reverse(geom2.create(shapeSides))\n geometry = mirrorX(geometry)\n } else if (pointsWithPositiveX.length >= pointsWithNegativeX.length) {\n shapeSides = shapeSides.map((side) => {\n let point0 = side[0]\n let point1 = side[1]\n point0 = [Math.max(point0[0], 0), point0[1]]\n point1 = [Math.max(point1[0], 0), point1[1]]\n return [point0, point1]\n })\n // recreate the geometry from the (+) capped points\n geometry = geom2.create(shapeSides)\n }\n }\n\n const rotationPerSlice = totalRotation / segments\n const isCapped = Math.abs(totalRotation) < TAU\n const baseSlice = slice.fromSides(geom2.toSides(geometry))\n slice.reverse(baseSlice, baseSlice)\n\n const matrix = mat4.create()\n const createSlice = (progress, index, base) => {\n let Zrotation = rotationPerSlice * index + startAngle\n // fix rounding error when rotating TAU radians\n if (totalRotation === TAU && index === segments) {\n Zrotation = startAngle\n }\n mat4.multiply(matrix, mat4.fromZRotation(matrix, Zrotation), mat4.fromXRotation(mat4.create(), TAU / 4))\n\n return slice.transform(matrix, base)\n }\n\n options = {\n numberOfSlices: segments + 1,\n capStart: isCapped,\n capEnd: isCapped,\n close: !isCapped,\n callback: createSlice\n }\n return extrudeFromSlices(options, baseSlice)\n}\n\nmodule.exports = extrudeRotate\n","const { EPS } = require('../../maths/constants')\nconst vec3 = require('../../maths/vec3')\n\nconst poly3 = require('../../geometries/poly3')\n\nconst slice = require('./slice')\n\n// https://en.wikipedia.org/wiki/Greatest_common_divisor#Using_Euclid's_algorithm\nconst gcd = (a, b) => {\n if (a === b) { return a }\n if (a < b) { return gcd(b, a) }\n if (b === 1) { return 1 }\n if (b === 0) { return a }\n return gcd(b, a % b)\n}\n\nconst lcm = (a, b) => (a * b) / gcd(a, b)\n\n// Return a set of edges that encloses the same area by splitting\n// the given edges to have newlength total edges.\nconst repartitionEdges = (newlength, edges) => {\n // NOTE: This implementation splits each edge evenly.\n const multiple = newlength / edges.length\n if (multiple === 1) {\n return edges\n }\n\n const divisor = vec3.fromValues(multiple, multiple, multiple)\n\n const newEdges = []\n edges.forEach((edge) => {\n const increment = vec3.subtract(vec3.create(), edge[1], edge[0])\n vec3.divide(increment, increment, divisor)\n\n // repartition the edge\n let prev = edge[0]\n for (let i = 1; i <= multiple; ++i) {\n const next = vec3.add(vec3.create(), prev, increment)\n newEdges.push([prev, next])\n prev = next\n }\n })\n return newEdges\n}\n\nconst EPSAREA = (EPS * EPS / 2) * Math.sin(Math.PI / 3)\n\n/*\n * Extrude (build) walls between the given slices.\n * Each wall consists of two triangles, which may be invalid if slices are overlapping.\n */\nconst extrudeWalls = (slice0, slice1) => {\n let edges0 = slice.toEdges(slice0)\n let edges1 = slice.toEdges(slice1)\n\n if (edges0.length !== edges1.length) {\n // different shapes, so adjust one or both to the same number of edges\n const newlength = lcm(edges0.length, edges1.length)\n if (newlength !== edges0.length) edges0 = repartitionEdges(newlength, edges0)\n if (newlength !== edges1.length) edges1 = repartitionEdges(newlength, edges1)\n }\n\n const walls = []\n edges0.forEach((edge0, i) => {\n const edge1 = edges1[i]\n\n const poly0 = poly3.create([edge0[0], edge0[1], edge1[1]])\n const poly0area = poly3.measureArea(poly0)\n if (Number.isFinite(poly0area) && poly0area > EPSAREA) walls.push(poly0)\n\n const poly1 = poly3.create([edge0[0], edge1[1], edge1[0]])\n const poly1area = poly3.measureArea(poly1)\n if (Number.isFinite(poly1area) && poly1area > EPSAREA) walls.push(poly1)\n })\n return walls\n}\n\nmodule.exports = extrudeWalls\n","/**\n * All 2D shapes (primitives or the results of operations) can be extruded in various ways.\n * In all cases, the function returns the results, and never changes the original shapes.\n * @module modeling/extrusions\n * @example\n * const { extrudeLinear, extrudeRectangular, extrudeRotate } = require('@jscad/modeling').extrusions\n */\nmodule.exports = {\n extrudeFromSlices: require('./extrudeFromSlices'),\n extrudeLinear: require('./extrudeLinear'),\n extrudeRectangular: require('./extrudeRectangular'),\n extrudeRotate: require('./extrudeRotate'),\n extrudeHelical: require('./extrudeHelical'),\n project: require('./project'),\n slice: require('./slice')\n}\n","const flatten = require('../../utils/flatten')\n\nconst aboutEqualNormals = require('../../maths/utils/aboutEqualNormals')\nconst plane = require('../../maths/plane')\nconst mat4 = require('../../maths/mat4')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\nconst poly3 = require('../../geometries/poly3')\n\nconst measureEpsilon = require('../../measurements/measureEpsilon')\n\nconst unionGeom2 = require('../booleans/unionGeom2')\n\nconst projectGeom3 = (options, geometry) => {\n // create a plane from the options, and verify\n const projplane = plane.fromNormalAndPoint(plane.create(), options.axis, options.origin)\n if (Number.isNaN(projplane[0]) || Number.isNaN(projplane[1]) || Number.isNaN(projplane[2]) || Number.isNaN(projplane[3])) {\n throw new Error('project: invalid axis or origin')\n }\n\n const epsilon = measureEpsilon(geometry)\n const epsilonArea = (epsilon * epsilon * Math.sqrt(3) / 4)\n\n if (epsilon === 0) return geom2.create()\n\n // project the polygons to the plane\n const polygons = geom3.toPolygons(geometry)\n let projpolys = []\n for (let i = 0; i < polygons.length; i++) {\n const newpoints = polygons[i].vertices.map((v) => plane.projectionOfPoint(projplane, v))\n const newpoly = poly3.create(newpoints)\n // only keep projections that face the same direction as the plane\n const newplane = poly3.plane(newpoly)\n if (!aboutEqualNormals(projplane, newplane)) continue\n // only keep projections that have a measurable area\n if (poly3.measureArea(newpoly) < epsilonArea) continue\n projpolys.push(newpoly)\n }\n\n // rotate the polygons to lay on X/Y axes if necessary\n if (!aboutEqualNormals(projplane, [0, 0, 1])) {\n const rotation = mat4.fromVectorRotation(mat4.create(), projplane, [0, 0, 1])\n projpolys = projpolys.map((p) => poly3.transform(rotation, p))\n }\n\n // sort the polygons to allow the union to ignore small pieces efficiently\n projpolys = projpolys.sort((a, b) => poly3.measureArea(b) - poly3.measureArea(a))\n\n // convert polygons to geometry, and union all pieces into a single geometry\n const projgeoms = projpolys.map((p) => geom2.fromPoints(p.vertices))\n return unionGeom2(projgeoms)\n}\n\n/**\n * Project the given 3D geometry on to the given plane.\n * @param {Object} options - options for project\n * @param {Array} [options.axis=[0,0,1]] the axis of the plane (default is Z axis)\n * @param {Array} [options.origin=[0,0,0]] the origin of the plane\n * @param {...Object} objects - the list of 3D geometry to project\n * @return {geom2|Array} the projected 2D geometry, or a list of 2D projected geometry\n * @alias module:modeling/extrusions.project\n *\n * @example\n * let myshape = project({}, sphere({radius: 20, segments: 5}))\n */\nconst project = (options, ...objects) => {\n const defaults = {\n axis: [0, 0, 1], // Z axis\n origin: [0, 0, 0]\n }\n const { axis, origin } = Object.assign({ }, defaults, options)\n\n objects = flatten(objects)\n if (objects.length === 0) throw new Error('wrong number of arguments')\n\n options = { axis, origin }\n\n const results = objects.map((object) => {\n // if (path.isA(object)) return project(options, object)\n // if (geom2.isA(object)) return project(options, object)\n if (geom3.isA(object)) return projectGeom3(options, object)\n return object\n })\n return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = project\n","const plane = require('../../../maths/plane')\nconst vec3 = require('../../../maths/vec3')\n\n/**\n * Calculate the plane of the given slice.\n * NOTE: The slice (and all points) are assumed to be planar from the beginning.\n * @param {slice} slice - the slice\n * @returns {plane} the plane of the slice\n * @alias module:modeling/extrusions/slice.calculatePlane\n *\n * @example\n * let myplane = calculatePlane(slice)\n */\nconst calculatePlane = (slice) => {\n const edges = slice.edges\n if (edges.length < 3) throw new Error('slices must have 3 or more edges to calculate a plane')\n\n // find the midpoint of the slice, which will lie on the plane by definition\n const midpoint = edges.reduce((point, edge) => vec3.add(vec3.create(), point, edge[0]), vec3.create())\n vec3.scale(midpoint, midpoint, 1 / edges.length)\n\n // find the farthest edge from the midpoint, which will be on an outside edge\n let farthestEdge\n let distance = 0\n edges.forEach((edge) => {\n // Make sure that the farthest edge is not a self-edge\n if (!vec3.equals(edge[0], edge[1])) {\n const d = vec3.squaredDistance(midpoint, edge[0])\n if (d > distance) {\n farthestEdge = edge\n distance = d\n }\n }\n })\n // find the before edge\n const beforeEdge = edges.find((edge) => vec3.equals(edge[1], farthestEdge[0]))\n\n return plane.fromPoints(plane.create(), beforeEdge[0], farthestEdge[0], farthestEdge[1])\n}\n\nmodule.exports = calculatePlane\n","const create = require('./create')\n\nconst vec3 = require('../../../maths/vec3')\n\n/**\n * Create a deep clone of the given slice.\n *\n * @param {slice} [out] - receiving slice\n * @param {slice} slice - slice to clone\n * @returns {slice} a new slice\n * @alias module:modeling/extrusions/slice.clone\n */\nconst clone = (...params) => {\n let out\n let slice\n if (params.length === 1) {\n out = create()\n slice = params[0]\n } else {\n out = params[0]\n slice = params[1]\n }\n // deep clone of edges\n out.edges = slice.edges.map((edge) => [vec3.clone(edge[0]), vec3.clone(edge[1])])\n return out\n}\n\nmodule.exports = clone\n","/**\n * Represents a 3D geometry consisting of a list of edges.\n * @typedef {Object} slice\n * @property {Array} edges - list of edges, each edge containing two points (3D)\n */\n\n/**\n * Creates a new empty slice.\n *\n * @returns {slice} a new slice\n * @alias module:modeling/extrusions/slice.create\n */\nconst create = (edges) => {\n if (!edges) {\n edges = []\n }\n return { edges }\n}\n\nmodule.exports = create\n","const vec3 = require('../../../maths/vec3')\n\n/**\n * Determine if the given slices have the same edges.\n * @param {slice} a - the first slice to compare\n * @param {slice} b - the second slice to compare\n * @returns {Boolean} true if the slices are equal\n * @alias module:modeling/extrusions/slice.equals\n */\nconst equals = (a, b) => {\n const aedges = a.edges\n const bedges = b.edges\n\n if (aedges.length !== bedges.length) {\n return false\n }\n\n const isEqual = aedges.reduce((acc, aedge, i) => {\n const bedge = bedges[i]\n const d = vec3.squaredDistance(aedge[0], bedge[0])\n return acc && (d < Number.EPSILON)\n }, true)\n\n return isEqual\n}\n\nmodule.exports = equals\n","const vec3 = require('../../../maths/vec3')\n\nconst create = require('./create')\n\n/**\n * Create a slice from the given points.\n *\n * @param {Array} points - list of points, where each point is either 2D or 3D\n * @returns {slice} a new slice\n * @alias module:modeling/extrusions/slice.fromPoints\n *\n * @example\n * const points = [\n * [0, 0],\n * [0, 10],\n * [0, 10]\n * ]\n * const slice = fromPoints(points)\n */\nconst fromPoints = (points) => {\n if (!Array.isArray(points)) throw new Error('the given points must be an array')\n if (points.length < 3) throw new Error('the given points must contain THREE or more points')\n\n // create a list of edges from the points\n const edges = []\n let prevpoint = points[points.length - 1]\n points.forEach((point) => {\n if (point.length === 2) edges.push([vec3.fromVec2(vec3.create(), prevpoint), vec3.fromVec2(vec3.create(), point)])\n if (point.length === 3) edges.push([prevpoint, point])\n prevpoint = point\n })\n return create(edges)\n}\n\nmodule.exports = fromPoints\n","const vec3 = require('../../../maths/vec3')\n\nconst create = require('./create')\n\n/**\n * Create a slice from the given sides (see geom2).\n *\n * @param {Array} sides - list of sides from geom2\n * @returns {slice} a new slice\n * @alias module:modeling/extrusions/slice.fromSides\n *\n * @example\n * const myshape = circle({radius: 10})\n * const slice = fromSides(geom2.toSides(myshape))\n */\nconst fromSides = (sides) => {\n if (!Array.isArray(sides)) throw new Error('the given sides must be an array')\n\n // create a list of edges from the sides\n const edges = []\n sides.forEach((side) => {\n edges.push([vec3.fromVec2(vec3.create(), side[0]), vec3.fromVec2(vec3.create(), side[1])])\n })\n return create(edges)\n}\n\nmodule.exports = fromSides\n","/**\n * Represents a 3D geometry consisting of a list of edges.\n * @see {@link slice} for data structure information.\n * @module modeling/extrusions/slice\n */\nmodule.exports = {\n calculatePlane: require('./calculatePlane'),\n clone: require('./clone'),\n create: require('./create'),\n equals: require('./equals'),\n fromPoints: require('./fromPoints'),\n fromSides: require('./fromSides'),\n isA: require('./isA'),\n reverse: require('./reverse'),\n toEdges: require('./toEdges'),\n toPolygons: require('./toPolygons'),\n toString: require('./toString'),\n transform: require('./transform')\n}\n","/**\n * Determine if the given object is a slice.\n * @param {slice} object - the object to interrogate\n * @returns {Boolean} true if the object matches a slice\n * @alias module:modeling/extrusions/slice.isA\n */\nconst isA = (object) => {\n if (object && typeof object === 'object') {\n if ('edges' in object) {\n if (Array.isArray(object.edges)) {\n return true\n }\n }\n }\n return false\n}\n\nmodule.exports = isA\n","const vec3 = require('../../../maths/vec3')\nconst create = require('./create')\n\n/*\n * Mend gaps in a 2D slice to make it a closed polygon\n */\nconst repair = (slice) => {\n if (!slice.edges) return slice\n let edges = slice.edges\n const vertexMap = new Map() // string key to vertex map\n const edgeCount = new Map() // count of (in - out) edges\n\n // Remove self-edges\n edges = edges.filter((e) => !vec3.equals(e[0], e[1]))\n\n // build vertex and edge count maps\n edges.forEach((edge) => {\n const inKey = edge[0].toString()\n const outKey = edge[1].toString()\n vertexMap.set(inKey, edge[0])\n vertexMap.set(outKey, edge[1])\n edgeCount.set(inKey, (edgeCount.get(inKey) || 0) + 1) // in\n edgeCount.set(outKey, (edgeCount.get(outKey) || 0) - 1) // out\n })\n\n // find vertices which are missing in or out edges\n const missingIn = []\n const missingOut = []\n edgeCount.forEach((count, vertex) => {\n if (count < 0) missingIn.push(vertex)\n if (count > 0) missingOut.push(vertex)\n })\n\n // pairwise distance of bad vertices\n missingIn.forEach((key1) => {\n const v1 = vertexMap.get(key1)\n\n // find the closest vertex that is missing an out edge\n let bestDistance = Infinity\n let bestReplacement\n missingOut.forEach((key2) => {\n const v2 = vertexMap.get(key2)\n const distance = vec3.distance(v1, v2)\n if (distance < bestDistance) {\n bestDistance = distance\n bestReplacement = v2\n }\n })\n console.warn(`slice.repair: repairing vertex gap ${v1} to ${bestReplacement} distance ${bestDistance}`)\n\n // merge broken vertices\n edges = edges.map((edge) => {\n if (edge[0].toString() === key1) return [bestReplacement, edge[1]]\n if (edge[1].toString() === key1) return [edge[0], bestReplacement]\n return edge\n })\n })\n\n return create(edges)\n}\n\nmodule.exports = repair\n","const create = require('./create')\n\n/**\n * Reverse the edges of the given slice.\n *\n * @param {slice} [out] - receiving slice\n * @param {slice} slice - slice to reverse\n * @returns {slice} reverse of the slice\n * @alias module:modeling/extrusions/slice.reverse\n */\nconst reverse = (...params) => {\n let out\n let slice\n if (params.length === 1) {\n out = create()\n slice = params[0]\n } else {\n out = params[0]\n slice = params[1]\n }\n // reverse the edges\n out.edges = slice.edges.map((edge) => [edge[1], edge[0]])\n return out\n}\n\nmodule.exports = reverse\n","/**\n * Produces an array of edges from the given slice.\n * The returned array should not be modified as the data is shared with the slice.\n * @param {slice} slice - the slice\n * @returns {Array} an array of edges, each edge contains an array of two points (3D)\n * @alias module:modeling/extrusions/slice.toEdges\n *\n * @example\n * let sharededges = toEdges(slice)\n */\nconst toEdges = (slice) => slice.edges\n\nmodule.exports = toEdges\n","const poly3 = require('../../../geometries/poly3')\nconst earcut = require('../earcut')\nconst PolygonHierarchy = require('../earcut/polygonHierarchy')\n\n/**\n * Return a list of polygons which are enclosed by the slice.\n * @param {slice} slice - the slice\n * @return {Array} a list of polygons (3D)\n * @alias module:modeling/extrusions/slice.toPolygons\n */\nconst toPolygons = (slice) => {\n const hierarchy = new PolygonHierarchy(slice)\n\n const polygons = []\n hierarchy.roots.forEach(({ solid, holes }) => {\n // hole indices\n let index = solid.length\n const holesIndex = []\n holes.forEach((hole, i) => {\n holesIndex.push(index)\n index += hole.length\n })\n\n // compute earcut triangulation for each solid\n const vertices = [solid, ...holes].flat()\n const data = vertices.flat()\n // Get original 3D vertex by index\n const getVertex = (i) => hierarchy.to3D(vertices[i])\n const indices = earcut(data, holesIndex)\n for (let i = 0; i < indices.length; i += 3) {\n // Map back to original vertices\n const tri = indices.slice(i, i + 3).map(getVertex)\n polygons.push(poly3.fromPointsAndPlane(tri, hierarchy.plane))\n }\n })\n\n return polygons\n}\n\nmodule.exports = toPolygons\n","const vec3 = require('../../../maths/vec3')\n\nconst edgesToString = (edges) =>\n edges.reduce((result, edge) => (\n result += `[${vec3.toString(edge[0])}, ${vec3.toString(edge[1])}], `\n ), '')\n\n/**\n * @param {slice} slice - the slice\n * @return {String} the string representation\n * @alias module:modeling/extrusions/slice.toString\n */\nconst toString = (slice) => `[${edgesToString(slice.edges)}]`\n\nmodule.exports = toString\n","const vec3 = require('../../../maths/vec3')\n\nconst create = require('./create')\n\n/**\n * Transform the given slice using the given matrix.\n * @param {mat4} matrix - transform matrix\n * @param {slice} slice - slice to transform\n * @returns {slice} the transformed slice\n * @alias module:modeling/extrusions/slice.transform\n *\n * @example\n * let matrix = mat4.fromTranslation([1, 2, 3])\n * let newslice = transform(matrix, oldslice)\n */\nconst transform = (matrix, slice) => {\n const edges = slice.edges.map((edge) => [vec3.transform(vec3.create(), edge[0], matrix), vec3.transform(vec3.create(), edge[1], matrix)])\n return create(edges)\n}\n\nmodule.exports = transform\n","const flatten = require('../../utils/flatten')\nconst areAllShapesTheSameType = require('../../utils/areAllShapesTheSameType')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\nconst path2 = require('../../geometries/path2')\n\nconst hullPath2 = require('./hullPath2')\nconst hullGeom2 = require('./hullGeom2')\nconst hullGeom3 = require('./hullGeom3')\n\n/**\n * Create a convex hull of the given geometries.\n * The given geometries should be of the same type, either geom2 or geom3 or path2.\n * @param {...Objects} geometries - list of geometries from which to create a hull\n * @returns {geom2|geom3} new geometry\n * @alias module:modeling/hulls.hull\n *\n * @example\n * let myshape = hull(rectangle({center: [-5,-5]}), ellipse({center: [5,5]}))\n *\n * @example\n * +-------+ +-------+\n * | | | \\\n * | A | | \\\n * | | | \\\n * +-------+ + \\\n * = \\ \\\n * +-------+ \\ +\n * | | \\ |\n * | B | \\ |\n * | | \\ |\n * +-------+ +-------+\n */\nconst hull = (...geometries) => {\n geometries = flatten(geometries)\n if (geometries.length === 0) throw new Error('wrong number of arguments')\n\n if (!areAllShapesTheSameType(geometries)) {\n throw new Error('only hulls of the same type are supported')\n }\n\n const geometry = geometries[0]\n if (path2.isA(geometry)) return hullPath2(geometries)\n if (geom2.isA(geometry)) return hullGeom2(geometries)\n if (geom3.isA(geometry)) return hullGeom3(geometries)\n\n // FIXME should this throw an error for unknown geometries?\n return geometry\n}\n\nmodule.exports = hull\n","const flatten = require('../../utils/flatten')\n\nconst union = require('../booleans/union')\n\nconst hull = require('./hull')\n\n/**\n * Create a chain of hulled geometries from the given geometries.\n * Essentially hull A+B, B+C, C+D, etc., then union the results.\n * The given geometries should be of the same type, either geom2 or geom3 or path2.\n *\n * @param {...Objects} geometries - list of geometries from which to create a hull\n * @returns {geom2|geom3} new geometry\n * @alias module:modeling/hulls.hullChain\n *\n * @example\n * let newshape = hullChain(rectangle({center: [-5,-5]}), circle({center: [0,0]}), rectangle({center: [5,5]}))\n *\n * @example\n * +-------+ +-------+ +-------+ +------+\n * | | | | | \\ / |\n * | A | | C | | | |\n * | | | | | |\n * +-------+ +-------+ + +\n * = \\ /\n * +-------+ \\ /\n * | | \\ /\n * | B | \\ /\n * | | \\ /\n * +-------+ +-------+\n */\nconst hullChain = (...geometries) => {\n geometries = flatten(geometries)\n if (geometries.length < 2) throw new Error('wrong number of arguments')\n\n const hulls = []\n for (let i = 1; i < geometries.length; i++) {\n hulls.push(hull(geometries[i - 1], geometries[i]))\n }\n return union(hulls)\n}\n\nmodule.exports = hullChain\n","const flatten = require('../../utils/flatten')\n\nconst geom2 = require('../../geometries/geom2')\n\nconst hullPoints2 = require('./hullPoints2')\nconst toUniquePoints = require('./toUniquePoints')\n\n/*\n * Create a convex hull of the given geom2 geometries.\n * @param {...geometries} geometries - list of geom2 geometries\n * @returns {geom2} new geometry\n */\nconst hullGeom2 = (...geometries) => {\n geometries = flatten(geometries)\n\n // extract the unique points from the geometries\n const unique = toUniquePoints(geometries)\n\n const hullPoints = hullPoints2(unique)\n\n // NOTE: more than three points are required to create a new geometry\n if (hullPoints.length < 3) return geom2.create()\n\n // assemble a new geometry from the list of points\n return geom2.fromPoints(hullPoints)\n}\n\nmodule.exports = hullGeom2\n","const flatten = require('../../utils/flatten')\n\nconst geom3 = require('../../geometries/geom3')\nconst poly3 = require('../../geometries/poly3')\n\nconst quickhull = require('./quickhull')\nconst toUniquePoints = require('./toUniquePoints')\n\n/*\n * Create a convex hull of the given geometries (geom3).\n * @param {...geometries} geometries - list of geom3 geometries\n * @returns {geom3} new geometry\n */\nconst hullGeom3 = (...geometries) => {\n geometries = flatten(geometries)\n\n if (geometries.length === 1) return geometries[0]\n\n // extract the unique vertices from the geometries\n const unique = toUniquePoints(geometries)\n\n const faces = quickhull(unique, { skipTriangulation: true })\n\n const polygons = faces.map((face) => {\n const vertices = face.map((index) => unique[index])\n return poly3.create(vertices)\n })\n\n return geom3.create(polygons)\n}\n\nmodule.exports = hullGeom3\n","const flatten = require('../../utils/flatten')\n\nconst path2 = require('../../geometries/path2')\n\nconst hullPoints2 = require('./hullPoints2')\nconst toUniquePoints = require('./toUniquePoints')\n\n/*\n * Create a convex hull of the given geometries (path2).\n * @param {...geometries} geometries - list of path2 geometries\n * @returns {path2} new geometry\n */\nconst hullPath2 = (...geometries) => {\n geometries = flatten(geometries)\n\n // extract the unique points from the geometries\n const unique = toUniquePoints(geometries)\n\n const hullPoints = hullPoints2(unique)\n\n // assemble a new geometry from the list of points\n return path2.fromPoints({ closed: true }, hullPoints)\n}\n\nmodule.exports = hullPath2\n","const vec2 = require('../../maths/vec2')\n\n/*\n * Create a convex hull of the given set of points, where each point is an array of [x,y].\n * Uses https://en.wikipedia.org/wiki/Graham_scan\n * @param {Array} uniquePoints - list of UNIQUE points from which to create a hull\n * @returns {Array} a list of points that form the hull\n */\nconst hullPoints2 = (uniquePoints) => {\n // find min point\n let min = vec2.fromValues(Infinity, Infinity)\n uniquePoints.forEach((point) => {\n if (point[1] < min[1] || (point[1] === min[1] && point[0] < min[0])) {\n min = point\n }\n })\n\n // gather information for sorting by polar coordinates (point, angle, distSq)\n const points = []\n uniquePoints.forEach((point) => {\n // use faster fakeAtan2 instead of Math.atan2\n const angle = fakeAtan2(point[1] - min[1], point[0] - min[0])\n const distSq = vec2.squaredDistance(point, min)\n points.push({ point, angle, distSq })\n })\n\n // sort by polar coordinates\n points.sort((pt1, pt2) => pt1.angle !== pt2.angle\n ? pt1.angle - pt2.angle\n : pt1.distSq - pt2.distSq)\n\n const stack = [] // start with empty stack\n points.forEach((point) => {\n let cnt = stack.length\n while (cnt > 1 && ccw(stack[cnt - 2], stack[cnt - 1], point.point) <= Number.EPSILON) {\n stack.pop() // get rid of colinear and interior (clockwise) points\n cnt = stack.length\n }\n stack.push(point.point)\n })\n\n return stack\n}\n\n// returns: < 0 clockwise, 0 colinear, > 0 counter-clockwise\nconst ccw = (v1, v2, v3) => (v2[0] - v1[0]) * (v3[1] - v1[1]) - (v2[1] - v1[1]) * (v3[0] - v1[0])\n\n// Returned \"angle\" is really 1/tan (inverse of slope) made negative to increase with angle.\n// This function is strictly for sorting in this algorithm.\nconst fakeAtan2 = (y, x) => {\n // The \"if\" is a special case for when the minimum vector found in loop above is present.\n // We need to ensure that it sorts as the minimum point. Otherwise, this becomes NaN.\n if (y === 0 && x === 0) {\n return -Infinity\n } else {\n return -x / y\n }\n}\n\nmodule.exports = hullPoints2\n","/**\n * All shapes (primitives or the results of operations) can be passed to hull functions\n * to determine the convex hull of all points.\n * In all cases, the function returns the results, and never changes the original shapes.\n * @module modeling/hulls\n * @example\n * const { hull, hullChain } = require('@jscad/modeling').hulls\n */\nmodule.exports = {\n hull: require('./hull'),\n hullChain: require('./hullChain')\n}\n","const add = require('../../../maths/vec3/add')\nconst copy = require('../../../maths/vec3/copy')\nconst cross = require('../../../maths/vec3/cross')\nconst dot = require('../../../maths/vec3/dot')\nconst length = require('../../../maths/vec3/length')\nconst normalize = require('../../../maths/vec3/normalize')\nconst scale = require('../../../maths/vec3/scale')\nconst subtract = require('../../../maths/vec3/subtract')\n\n/*\n * Original source from quickhull3d (https://github.com/mauriciopoppe/quickhull3d)\n * Copyright (c) 2015 Mauricio Poppe\n *\n * Adapted to JSCAD by Jeff Gay\n */\n\nconst HalfEdge = require('./HalfEdge')\n\nconst VISIBLE = 0\nconst NON_CONVEX = 1\nconst DELETED = 2\n\nclass Face {\n constructor () {\n this.normal = []\n this.centroid = []\n // signed distance from face to the origin\n this.offset = 0\n // pointer to the a vertex in a double linked list this face can see\n this.outside = null\n this.mark = VISIBLE\n this.edge = null\n this.nVertices = 0\n }\n\n getEdge (i) {\n if (typeof i !== 'number') {\n throw Error('requires a number')\n }\n let it = this.edge\n while (i > 0) {\n it = it.next\n i -= 1\n }\n while (i < 0) {\n it = it.prev\n i += 1\n }\n return it\n }\n\n computeNormal () {\n const e0 = this.edge\n const e1 = e0.next\n let e2 = e1.next\n const v2 = subtract([], e1.head().point, e0.head().point)\n const t = []\n const v1 = []\n\n this.nVertices = 2\n this.normal = [0, 0, 0]\n while (e2 !== e0) {\n copy(v1, v2)\n subtract(v2, e2.head().point, e0.head().point)\n add(this.normal, this.normal, cross(t, v1, v2))\n e2 = e2.next\n this.nVertices += 1\n }\n this.area = length(this.normal)\n // normalize the vector, since we've already calculated the area\n // it's cheaper to scale the vector using this quantity instead of\n // doing the same operation again\n this.normal = scale(this.normal, this.normal, 1 / this.area)\n }\n\n computeNormalMinArea (minArea) {\n this.computeNormal()\n if (this.area < minArea) {\n // compute the normal without the longest edge\n let maxEdge\n let maxSquaredLength = 0\n let edge = this.edge\n\n // find the longest edge (in length) in the chain of edges\n do {\n const lengthSquared = edge.lengthSquared()\n if (lengthSquared > maxSquaredLength) {\n maxEdge = edge\n maxSquaredLength = lengthSquared\n }\n edge = edge.next\n } while (edge !== this.edge)\n\n const p1 = maxEdge.tail().point\n const p2 = maxEdge.head().point\n const maxVector = subtract([], p2, p1)\n const maxLength = Math.sqrt(maxSquaredLength)\n // maxVector is normalized after this operation\n scale(maxVector, maxVector, 1 / maxLength)\n // compute the projection of maxVector over this face normal\n const maxProjection = dot(this.normal, maxVector)\n // subtract the quantity maxEdge adds on the normal\n scale(maxVector, maxVector, -maxProjection)\n add(this.normal, this.normal, maxVector)\n // renormalize `this.normal`\n normalize(this.normal, this.normal)\n }\n }\n\n computeCentroid () {\n this.centroid = [0, 0, 0]\n let edge = this.edge\n do {\n add(this.centroid, this.centroid, edge.head().point)\n edge = edge.next\n } while (edge !== this.edge)\n scale(this.centroid, this.centroid, 1 / this.nVertices)\n }\n\n computeNormalAndCentroid (minArea) {\n if (typeof minArea !== 'undefined') {\n this.computeNormalMinArea(minArea)\n } else {\n this.computeNormal()\n }\n this.computeCentroid()\n this.offset = dot(this.normal, this.centroid)\n }\n\n distanceToPlane (point) {\n return dot(this.normal, point) - this.offset\n }\n\n /**\n * @private\n *\n * Connects two edges assuming that prev.head().point === next.tail().point\n *\n * @param {HalfEdge} prev\n * @param {HalfEdge} next\n */\n connectHalfEdges (prev, next) {\n let discardedFace\n if (prev.opposite.face === next.opposite.face) {\n // `prev` is remove a redundant edge\n const oppositeFace = next.opposite.face\n let oppositeEdge\n if (prev === this.edge) {\n this.edge = next\n }\n if (oppositeFace.nVertices === 3) {\n // case:\n // remove the face on the right\n //\n // /|\\\n // / | \\ the face on the right\n // / | \\ --> opposite edge\n // / a | \\\n // *----*----*\n // / b | \\\n // ▾\n // redundant edge\n //\n // Note: the opposite edge is actually in the face to the right\n // of the face to be destroyed\n oppositeEdge = next.opposite.prev.opposite\n oppositeFace.mark = DELETED\n discardedFace = oppositeFace\n } else {\n // case:\n // t\n // *----\n // /| <- right face's redundant edge\n // / | opposite edge\n // / | ▴ /\n // / a | | /\n // *----*----*\n // / b | \\\n // ▾\n // redundant edge\n oppositeEdge = next.opposite.next\n // make sure that the link `oppositeFace.edge` points correctly even\n // after the right face redundant edge is removed\n if (oppositeFace.edge === oppositeEdge.prev) {\n oppositeFace.edge = oppositeEdge\n }\n\n // /| /\n // / | t/opposite edge\n // / | / ▴ /\n // / a |/ | /\n // *----*----*\n // / b \\\n oppositeEdge.prev = oppositeEdge.prev.prev\n oppositeEdge.prev.next = oppositeEdge\n }\n // /|\n // / |\n // / |\n // / a |\n // *----*----*\n // / b ▴ \\\n // |\n // redundant edge\n next.prev = prev.prev\n next.prev.next = next\n\n // / \\ \\\n // / \\->\\\n // / \\<-\\ opposite edge\n // / a \\ \\\n // *----*----*\n // / b ^ \\\n next.setOpposite(oppositeEdge)\n\n oppositeFace.computeNormalAndCentroid()\n } else {\n // trivial case\n // *\n // /|\\\n // / | \\\n // / |--> next\n // / a | \\\n // *----*----*\n // \\ b | /\n // \\ |--> prev\n // \\ | /\n // \\|/\n // *\n prev.next = next\n next.prev = prev\n }\n return discardedFace\n }\n\n mergeAdjacentFaces (adjacentEdge, discardedFaces) {\n const oppositeEdge = adjacentEdge.opposite\n const oppositeFace = oppositeEdge.face\n\n discardedFaces.push(oppositeFace)\n oppositeFace.mark = DELETED\n\n // find the chain of edges whose opposite face is `oppositeFace`\n //\n // ===>\n // \\ face /\n // * ---- * ---- * ---- *\n // / opposite face \\\n // <===\n //\n let adjacentEdgePrev = adjacentEdge.prev\n let adjacentEdgeNext = adjacentEdge.next\n let oppositeEdgePrev = oppositeEdge.prev\n let oppositeEdgeNext = oppositeEdge.next\n\n // left edge\n while (adjacentEdgePrev.opposite.face === oppositeFace) {\n adjacentEdgePrev = adjacentEdgePrev.prev\n oppositeEdgeNext = oppositeEdgeNext.next\n }\n // right edge\n while (adjacentEdgeNext.opposite.face === oppositeFace) {\n adjacentEdgeNext = adjacentEdgeNext.next\n oppositeEdgePrev = oppositeEdgePrev.prev\n }\n // adjacentEdgePrev \\ face / adjacentEdgeNext\n // * ---- * ---- * ---- *\n // oppositeEdgeNext / opposite face \\ oppositeEdgePrev\n\n // fix the face reference of all the opposite edges that are not part of\n // the edges whose opposite face is not `face` i.e. all the edges that\n // `face` and `oppositeFace` do not have in common\n let edge\n for (edge = oppositeEdgeNext; edge !== oppositeEdgePrev.next; edge = edge.next) {\n edge.face = this\n }\n\n // make sure that `face.edge` is not one of the edges to be destroyed\n // Note: it's important for it to be a `next` edge since `prev` edges\n // might be destroyed on `connectHalfEdges`\n this.edge = adjacentEdgeNext\n\n // connect the extremes\n // Note: it might be possible that after connecting the edges a triangular\n // face might be redundant\n let discardedFace\n discardedFace = this.connectHalfEdges(oppositeEdgePrev, adjacentEdgeNext)\n if (discardedFace) {\n discardedFaces.push(discardedFace)\n }\n discardedFace = this.connectHalfEdges(adjacentEdgePrev, oppositeEdgeNext)\n if (discardedFace) {\n discardedFaces.push(discardedFace)\n }\n\n this.computeNormalAndCentroid()\n // TODO: additional consistency checks\n return discardedFaces\n }\n\n collectIndices () {\n const indices = []\n let edge = this.edge\n do {\n indices.push(edge.head().index)\n edge = edge.next\n } while (edge !== this.edge)\n return indices\n }\n\n static createTriangle (v0, v1, v2, minArea = 0) {\n const face = new Face()\n const e0 = new HalfEdge(v0, face)\n const e1 = new HalfEdge(v1, face)\n const e2 = new HalfEdge(v2, face)\n\n // join edges\n e0.next = e2.prev = e1\n e1.next = e0.prev = e2\n e2.next = e1.prev = e0\n\n // main half edge reference\n face.edge = e0\n face.computeNormalAndCentroid(minArea)\n return face\n }\n}\n\nmodule.exports = {\n VISIBLE,\n NON_CONVEX,\n DELETED,\n Face\n}\n","const distance = require('../../../maths/vec3/distance')\nconst squaredDistance = require('../../../maths/vec3/squaredDistance')\n\n/*\n * Original source from quickhull3d (https://github.com/mauriciopoppe/quickhull3d)\n * Copyright (c) 2015 Mauricio Poppe\n *\n * Adapted to JSCAD by Jeff Gay\n */\n\nclass HalfEdge {\n constructor (vertex, face) {\n this.vertex = vertex\n this.face = face\n this.next = null\n this.prev = null\n this.opposite = null\n }\n\n head () {\n return this.vertex\n }\n\n tail () {\n return this.prev\n ? this.prev.vertex\n : null\n }\n\n length () {\n if (this.tail()) {\n return distance(\n this.tail().point,\n this.head().point\n )\n }\n return -1\n }\n\n lengthSquared () {\n if (this.tail()) {\n return squaredDistance(\n this.tail().point,\n this.head().point\n )\n }\n return -1\n }\n\n setOpposite (edge) {\n this.opposite = edge\n edge.opposite = this\n }\n}\n\nmodule.exports = HalfEdge\n","const dot = require('../../../maths/vec3/dot')\n\nconst pointLineDistance = require('./point-line-distance')\nconst getPlaneNormal = require('./get-plane-normal')\n\nconst VertexList = require('./VertexList')\nconst Vertex = require('./Vertex')\nconst { Face, VISIBLE, NON_CONVEX, DELETED } = require('./Face')\n\n/*\n * Original source from quickhull3d (https://github.com/mauriciopoppe/quickhull3d)\n * Copyright (c) 2015 Mauricio Poppe\n *\n * Adapted to JSCAD by Jeff Gay\n */\n\n// merge types\n// non convex with respect to the large face\nconst MERGE_NON_CONVEX_WRT_LARGER_FACE = 1\nconst MERGE_NON_CONVEX = 2\n\nclass QuickHull {\n constructor (points) {\n if (!Array.isArray(points)) {\n throw TypeError('input is not a valid array')\n }\n if (points.length < 4) {\n throw Error('cannot build a simplex out of <4 points')\n }\n\n this.tolerance = -1\n\n // buffers\n this.nFaces = 0\n this.nPoints = points.length\n\n this.faces = []\n this.newFaces = []\n // helpers\n //\n // let `a`, `b` be `Face` instances\n // let `v` be points wrapped as instance of `Vertex`\n //\n // [v, v, ..., v, v, v, ...]\n // ^ ^\n // | |\n // a.outside b.outside\n //\n this.claimed = new VertexList()\n this.unclaimed = new VertexList()\n\n // vertices of the hull(internal representation of points)\n this.vertices = []\n for (let i = 0; i < points.length; i += 1) {\n this.vertices.push(new Vertex(points[i], i))\n }\n this.discardedFaces = []\n this.vertexPointIndices = []\n }\n\n addVertexToFace (vertex, face) {\n vertex.face = face\n if (!face.outside) {\n this.claimed.add(vertex)\n } else {\n this.claimed.insertBefore(face.outside, vertex)\n }\n face.outside = vertex\n }\n\n /**\n * Removes `vertex` for the `claimed` list of vertices, it also makes sure\n * that the link from `face` to the first vertex it sees in `claimed` is\n * linked correctly after the removal\n *\n * @param {Vertex} vertex\n * @param {Face} face\n */\n removeVertexFromFace (vertex, face) {\n if (vertex === face.outside) {\n // fix face.outside link\n if (vertex.next && vertex.next.face === face) {\n // face has at least 2 outside vertices, move the `outside` reference\n face.outside = vertex.next\n } else {\n // vertex was the only outside vertex that face had\n face.outside = null\n }\n }\n this.claimed.remove(vertex)\n }\n\n /**\n * Removes all the visible vertices that `face` is able to see which are\n * stored in the `claimed` vertext list\n *\n * @param {Face} face\n * @return {Vertex|undefined} If face had visible vertices returns\n * `face.outside`, otherwise undefined\n */\n removeAllVerticesFromFace (face) {\n if (face.outside) {\n // pointer to the last vertex of this face\n // [..., outside, ..., end, outside, ...]\n // | | |\n // a a b\n let end = face.outside\n while (end.next && end.next.face === face) {\n end = end.next\n }\n this.claimed.removeChain(face.outside, end)\n // b\n // [ outside, ...]\n // | removes this link\n // [ outside, ..., end ] -┘\n // | |\n // a a\n end.next = null\n return face.outside\n }\n }\n\n /**\n * Removes all the visible vertices that `face` is able to see, additionally\n * checking the following:\n *\n * If `absorbingFace` doesn't exist then all the removed vertices will be\n * added to the `unclaimed` vertex list\n *\n * If `absorbingFace` exists then this method will assign all the vertices of\n * `face` that can see `absorbingFace`, if a vertex cannot see `absorbingFace`\n * it's added to the `unclaimed` vertex list\n *\n * @param {Face} face\n * @param {Face} [absorbingFace]\n */\n deleteFaceVertices (face, absorbingFace) {\n const faceVertices = this.removeAllVerticesFromFace(face)\n if (faceVertices) {\n if (!absorbingFace) {\n // mark the vertices to be reassigned to some other face\n this.unclaimed.addAll(faceVertices)\n } else {\n // if there's an absorbing face try to assign as many vertices\n // as possible to it\n\n // the reference `vertex.next` might be destroyed on\n // `this.addVertexToFace` (see VertexList#add), nextVertex is a\n // reference to it\n let nextVertex\n for (let vertex = faceVertices; vertex; vertex = nextVertex) {\n nextVertex = vertex.next\n const distance = absorbingFace.distanceToPlane(vertex.point)\n\n // check if `vertex` is able to see `absorbingFace`\n if (distance > this.tolerance) {\n this.addVertexToFace(vertex, absorbingFace)\n } else {\n this.unclaimed.add(vertex)\n }\n }\n }\n }\n }\n\n /**\n * Reassigns as many vertices as possible from the unclaimed list to the new\n * faces\n *\n * @param {Faces[]} newFaces\n */\n resolveUnclaimedPoints (newFaces) {\n // cache next vertex so that if `vertex.next` is destroyed it's still\n // recoverable\n let vertexNext = this.unclaimed.first()\n for (let vertex = vertexNext; vertex; vertex = vertexNext) {\n vertexNext = vertex.next\n let maxDistance = this.tolerance\n let maxFace\n for (let i = 0; i < newFaces.length; i += 1) {\n const face = newFaces[i]\n if (face.mark === VISIBLE) {\n const dist = face.distanceToPlane(vertex.point)\n if (dist > maxDistance) {\n maxDistance = dist\n maxFace = face\n }\n if (maxDistance > 1000 * this.tolerance) {\n break\n }\n }\n }\n\n if (maxFace) {\n this.addVertexToFace(vertex, maxFace)\n }\n }\n }\n\n /**\n * Computes the extremes of a tetrahedron which will be the initial hull\n *\n * @return {number[]} The min/max vertices in the x,y,z directions\n */\n computeExtremes () {\n const min = []\n const max = []\n\n // min vertex on the x,y,z directions\n const minVertices = []\n // max vertex on the x,y,z directions\n const maxVertices = []\n\n let i, j\n\n // initially assume that the first vertex is the min/max\n for (i = 0; i < 3; i += 1) {\n minVertices[i] = maxVertices[i] = this.vertices[0]\n }\n // copy the coordinates of the first vertex to min/max\n for (i = 0; i < 3; i += 1) {\n min[i] = max[i] = this.vertices[0].point[i]\n }\n\n // compute the min/max vertex on all 6 directions\n for (i = 1; i < this.vertices.length; i += 1) {\n const vertex = this.vertices[i]\n const point = vertex.point\n // update the min coordinates\n for (j = 0; j < 3; j += 1) {\n if (point[j] < min[j]) {\n min[j] = point[j]\n minVertices[j] = vertex\n }\n }\n // update the max coordinates\n for (j = 0; j < 3; j += 1) {\n if (point[j] > max[j]) {\n max[j] = point[j]\n maxVertices[j] = vertex\n }\n }\n }\n\n // compute epsilon\n this.tolerance = 3 * Number.EPSILON * (\n Math.max(Math.abs(min[0]), Math.abs(max[0])) +\n Math.max(Math.abs(min[1]), Math.abs(max[1])) +\n Math.max(Math.abs(min[2]), Math.abs(max[2]))\n )\n return [minVertices, maxVertices]\n }\n\n /**\n * Compues the initial tetrahedron assigning to its faces all the points that\n * are candidates to form part of the hull\n */\n createInitialSimplex () {\n const vertices = this.vertices\n const [min, max] = this.computeExtremes()\n let v2, v3\n let i, j\n\n // Find the two vertices with the greatest 1d separation\n // (max.x - min.x)\n // (max.y - min.y)\n // (max.z - min.z)\n let maxDistance = 0\n let indexMax = 0\n for (i = 0; i < 3; i += 1) {\n const distance = max[i].point[i] - min[i].point[i]\n if (distance > maxDistance) {\n maxDistance = distance\n indexMax = i\n }\n }\n const v0 = min[indexMax]\n const v1 = max[indexMax]\n\n // the next vertex is the one farthest to the line formed by `v0` and `v1`\n maxDistance = 0\n for (i = 0; i < this.vertices.length; i += 1) {\n const vertex = this.vertices[i]\n if (vertex !== v0 && vertex !== v1) {\n const distance = pointLineDistance(\n vertex.point, v0.point, v1.point\n )\n if (distance > maxDistance) {\n maxDistance = distance\n v2 = vertex\n }\n }\n }\n\n // the next vertes is the one farthest to the plane `v0`, `v1`, `v2`\n // normalize((v2 - v1) x (v0 - v1))\n const normal = getPlaneNormal([], v0.point, v1.point, v2.point)\n // distance from the origin to the plane\n const distPO = dot(v0.point, normal)\n maxDistance = -1\n for (i = 0; i < this.vertices.length; i += 1) {\n const vertex = this.vertices[i]\n if (vertex !== v0 && vertex !== v1 && vertex !== v2) {\n const distance = Math.abs(dot(normal, vertex.point) - distPO)\n if (distance > maxDistance) {\n maxDistance = distance\n v3 = vertex\n }\n }\n }\n\n // initial simplex\n // Taken from http://everything2.com/title/How+to+paint+a+tetrahedron\n //\n // v2\n // ,|,\n // ,7``\\'VA,\n // ,7` |, `'VA,\n // ,7` `\\ `'VA,\n // ,7` |, `'VA,\n // ,7` `\\ `'VA,\n // ,7` |, `'VA,\n // ,7` `\\ ,..ooOOTK` v3\n // ,7` |,.ooOOT''` AV\n // ,7` ,..ooOOT`\\` /7\n // ,7` ,..ooOOT''` |, AV\n // ,T,..ooOOT''` `\\ /7\n // v0 `'TTs., |, AV\n // `'TTs., `\\ /7\n // `'TTs., |, AV\n // `'TTs., `\\ /7\n // `'TTs., |, AV\n // `'TTs.,\\/7\n // `'T`\n // v1\n //\n const faces = []\n if (dot(v3.point, normal) - distPO < 0) {\n // the face is not able to see the point so `planeNormal`\n // is pointing outside the tetrahedron\n faces.push(\n Face.createTriangle(v0, v1, v2),\n Face.createTriangle(v3, v1, v0),\n Face.createTriangle(v3, v2, v1),\n Face.createTriangle(v3, v0, v2)\n )\n\n // set the opposite edge\n for (i = 0; i < 3; i += 1) {\n const j = (i + 1) % 3\n // join face[i] i > 0, with the first face\n faces[i + 1].getEdge(2).setOpposite(faces[0].getEdge(j))\n // join face[i] with face[i + 1], 1 <= i <= 3\n faces[i + 1].getEdge(1).setOpposite(faces[j + 1].getEdge(0))\n }\n } else {\n // the face is able to see the point so `planeNormal`\n // is pointing inside the tetrahedron\n faces.push(\n Face.createTriangle(v0, v2, v1),\n Face.createTriangle(v3, v0, v1),\n Face.createTriangle(v3, v1, v2),\n Face.createTriangle(v3, v2, v0)\n )\n\n // set the opposite edge\n for (i = 0; i < 3; i += 1) {\n const j = (i + 1) % 3\n // join face[i] i > 0, with the first face\n faces[i + 1].getEdge(2).setOpposite(faces[0].getEdge((3 - i) % 3))\n // join face[i] with face[i + 1]\n faces[i + 1].getEdge(0).setOpposite(faces[j + 1].getEdge(1))\n }\n }\n\n // the initial hull is the tetrahedron\n for (i = 0; i < 4; i += 1) {\n this.faces.push(faces[i])\n }\n\n // initial assignment of vertices to the faces of the tetrahedron\n for (i = 0; i < vertices.length; i += 1) {\n const vertex = vertices[i]\n if (vertex !== v0 && vertex !== v1 && vertex !== v2 && vertex !== v3) {\n maxDistance = this.tolerance\n let maxFace\n for (j = 0; j < 4; j += 1) {\n const distance = faces[j].distanceToPlane(vertex.point)\n if (distance > maxDistance) {\n maxDistance = distance\n maxFace = faces[j]\n }\n }\n\n if (maxFace) {\n this.addVertexToFace(vertex, maxFace)\n }\n }\n }\n }\n\n reindexFaceAndVertices () {\n // remove inactive faces\n const activeFaces = []\n for (let i = 0; i < this.faces.length; i += 1) {\n const face = this.faces[i]\n if (face.mark === VISIBLE) {\n activeFaces.push(face)\n }\n }\n this.faces = activeFaces\n }\n\n collectFaces (skipTriangulation) {\n const faceIndices = []\n for (let i = 0; i < this.faces.length; i += 1) {\n if (this.faces[i].mark !== VISIBLE) {\n throw Error('attempt to include a destroyed face in the hull')\n }\n const indices = this.faces[i].collectIndices()\n if (skipTriangulation) {\n faceIndices.push(indices)\n } else {\n for (let j = 0; j < indices.length - 2; j += 1) {\n faceIndices.push(\n [indices[0], indices[j + 1], indices[j + 2]]\n )\n }\n }\n }\n return faceIndices\n }\n\n /**\n * Finds the next vertex to make faces with the current hull\n *\n * - let `face` be the first face existing in the `claimed` vertex list\n * - if `face` doesn't exist then return since there're no vertices left\n * - otherwise for each `vertex` that face sees find the one furthest away\n * from `face`\n *\n * @return {Vertex|undefined} Returns undefined when there're no more\n * visible vertices\n */\n nextVertexToAdd () {\n if (!this.claimed.isEmpty()) {\n let eyeVertex, vertex\n let maxDistance = 0\n const eyeFace = this.claimed.first().face\n for (vertex = eyeFace.outside; vertex && vertex.face === eyeFace; vertex = vertex.next) {\n const distance = eyeFace.distanceToPlane(vertex.point)\n if (distance > maxDistance) {\n maxDistance = distance\n eyeVertex = vertex\n }\n }\n return eyeVertex\n }\n }\n\n /**\n * Computes a chain of half edges in ccw order called the `horizon`, for an\n * edge to be part of the horizon it must join a face that can see\n * `eyePoint` and a face that cannot see `eyePoint`\n *\n * @param {number[]} eyePoint - The coordinates of a point\n * @param {HalfEdge} crossEdge - The edge used to jump to the current `face`\n * @param {Face} face - The current face being tested\n * @param {HalfEdge[]} horizon - The edges that form part of the horizon in\n * ccw order\n */\n computeHorizon (eyePoint, crossEdge, face, horizon) {\n // moves face's vertices to the `unclaimed` vertex list\n this.deleteFaceVertices(face)\n\n face.mark = DELETED\n\n let edge\n if (!crossEdge) {\n edge = crossEdge = face.getEdge(0)\n } else {\n // start from the next edge since `crossEdge` was already analyzed\n // (actually `crossEdge.opposite` was the face who called this method\n // recursively)\n edge = crossEdge.next\n }\n\n // All the faces that are able to see `eyeVertex` are defined as follows\n //\n // v /\n // / <== visible face\n // /\n // |\n // | <== not visible face\n //\n // dot(v, visible face normal) - visible face offset > this.tolerance\n //\n do {\n const oppositeEdge = edge.opposite\n const oppositeFace = oppositeEdge.face\n if (oppositeFace.mark === VISIBLE) {\n if (oppositeFace.distanceToPlane(eyePoint) > this.tolerance) {\n this.computeHorizon(eyePoint, oppositeEdge, oppositeFace, horizon)\n } else {\n horizon.push(edge)\n }\n }\n edge = edge.next\n } while (edge !== crossEdge)\n }\n\n /**\n * Creates a face with the points `eyeVertex.point`, `horizonEdge.tail` and\n * `horizonEdge.tail` in ccw order\n *\n * @param {Vertex} eyeVertex\n * @param {HalfEdge} horizonEdge\n * @return {HalfEdge} The half edge whose vertex is the eyeVertex\n */\n addAdjoiningFace (eyeVertex, horizonEdge) {\n // all the half edges are created in ccw order thus the face is always\n // pointing outside the hull\n // edges:\n //\n // eyeVertex.point\n // / \\\n // / \\\n // 1 / \\ 0\n // / \\\n // / \\\n // / \\\n // horizon.tail --- horizon.head\n // 2\n //\n const face = Face.createTriangle(\n eyeVertex,\n horizonEdge.tail(),\n horizonEdge.head()\n )\n this.faces.push(face)\n // join face.getEdge(-1) with the horizon's opposite edge\n // face.getEdge(-1) = face.getEdge(2)\n face.getEdge(-1).setOpposite(horizonEdge.opposite)\n return face.getEdge(0)\n }\n\n /**\n * Adds horizon.length faces to the hull, each face will be 'linked' with the\n * horizon opposite face and the face on the left/right\n *\n * @param {Vertex} eyeVertex\n * @param {HalfEdge[]} horizon - A chain of half edges in ccw order\n */\n addNewFaces (eyeVertex, horizon) {\n this.newFaces = []\n let firstSideEdge, previousSideEdge\n for (let i = 0; i < horizon.length; i += 1) {\n const horizonEdge = horizon[i]\n // returns the right side edge\n const sideEdge = this.addAdjoiningFace(eyeVertex, horizonEdge)\n if (!firstSideEdge) {\n firstSideEdge = sideEdge\n } else {\n // joins face.getEdge(1) with previousFace.getEdge(0)\n sideEdge.next.setOpposite(previousSideEdge)\n }\n this.newFaces.push(sideEdge.face)\n previousSideEdge = sideEdge\n }\n firstSideEdge.next.setOpposite(previousSideEdge)\n }\n\n /**\n * Computes the distance from `edge` opposite face's centroid to\n * `edge.face`\n *\n * @param {HalfEdge} edge\n * @return {number}\n * - A positive number when the centroid of the opposite face is above the\n * face i.e. when the faces are concave\n * - A negative number when the centroid of the opposite face is below the\n * face i.e. when the faces are convex\n */\n oppositeFaceDistance (edge) {\n return edge.face.distanceToPlane(edge.opposite.face.centroid)\n }\n\n /**\n * Merges a face with none/any/all its neighbors according to the strategy\n * used\n *\n * if `mergeType` is MERGE_NON_CONVEX_WRT_LARGER_FACE then the merge will be\n * decided based on the face with the larger area, the centroid of the face\n * with the smaller area will be checked against the one with the larger area\n * to see if it's in the merge range [tolerance, -tolerance] i.e.\n *\n * dot(centroid smaller face, larger face normal) - larger face offset > -tolerance\n *\n * Note that the first check (with +tolerance) was done on `computeHorizon`\n *\n * If the above is not true then the check is done with respect to the smaller\n * face i.e.\n *\n * dot(centroid larger face, smaller face normal) - smaller face offset > -tolerance\n *\n * If true then it means that two faces are non convex (concave), even if the\n * dot(...) - offset value is > 0 (that's the point of doing the merge in the\n * first place)\n *\n * If two faces are concave then the check must also be done on the other face\n * but this is done in another merge pass, for this to happen the face is\n * marked in a temporal NON_CONVEX state\n *\n * if `mergeType` is MERGE_NON_CONVEX then two faces will be merged only if\n * they pass the following conditions\n *\n * dot(centroid smaller face, larger face normal) - larger face offset > -tolerance\n * dot(centroid larger face, smaller face normal) - smaller face offset > -tolerance\n *\n * @param {Face} face\n * @param {number} mergeType - Either MERGE_NON_CONVEX_WRT_LARGER_FACE or\n * MERGE_NON_CONVEX\n */\n doAdjacentMerge (face, mergeType) {\n let edge = face.edge\n let convex = true\n let it = 0\n do {\n if (it >= face.nVertices) {\n throw Error('merge recursion limit exceeded')\n }\n const oppositeFace = edge.opposite.face\n let merge = false\n\n // Important notes about the algorithm to merge faces\n //\n // - Given a vertex `eyeVertex` that will be added to the hull\n // all the faces that cannot see `eyeVertex` are defined as follows\n //\n // dot(v, not visible face normal) - not visible offset < tolerance\n //\n // - Two faces can be merged when the centroid of one of these faces\n // projected to the normal of the other face minus the other face offset\n // is in the range [tolerance, -tolerance]\n // - Since `face` (given in the input for this method) has passed the\n // check above we only have to check the lower bound e.g.\n //\n // dot(v, not visible face normal) - not visible offset > -tolerance\n //\n if (mergeType === MERGE_NON_CONVEX) {\n if (this.oppositeFaceDistance(edge) > -this.tolerance ||\n this.oppositeFaceDistance(edge.opposite) > -this.tolerance) {\n merge = true\n }\n } else {\n if (face.area > oppositeFace.area) {\n if (this.oppositeFaceDistance(edge) > -this.tolerance) {\n merge = true\n } else if (this.oppositeFaceDistance(edge.opposite) > -this.tolerance) {\n convex = false\n }\n } else {\n if (this.oppositeFaceDistance(edge.opposite) > -this.tolerance) {\n merge = true\n } else if (this.oppositeFaceDistance(edge) > -this.tolerance) {\n convex = false\n }\n }\n }\n\n if (merge) {\n // when two faces are merged it might be possible that redundant faces\n // are destroyed, in that case move all the visible vertices from the\n // destroyed faces to the `unclaimed` vertex list\n const discardedFaces = face.mergeAdjacentFaces(edge, [])\n for (let i = 0; i < discardedFaces.length; i += 1) {\n this.deleteFaceVertices(discardedFaces[i], face)\n }\n return true\n }\n\n edge = edge.next\n it += 1\n } while (edge !== face.edge)\n if (!convex) {\n face.mark = NON_CONVEX\n }\n return false\n }\n\n /**\n * Adds a vertex to the hull with the following algorithm\n *\n * - Compute the `horizon` which is a chain of half edges, for an edge to\n * belong to this group it must be the edge connecting a face that can\n * see `eyeVertex` and a face which cannot see `eyeVertex`\n * - All the faces that can see `eyeVertex` have its visible vertices removed\n * from the claimed VertexList\n * - A new set of faces is created with each edge of the `horizon` and\n * `eyeVertex`, each face is connected with the opposite horizon face and\n * the face on the left/right\n * - The new faces are merged if possible with the opposite horizon face first\n * and then the faces on the right/left\n * - The vertices removed from all the visible faces are assigned to the new\n * faces if possible\n *\n * @param {Vertex} eyeVertex\n */\n addVertexToHull (eyeVertex) {\n const horizon = []\n\n this.unclaimed.clear()\n\n // remove `eyeVertex` from `eyeVertex.face` so that it can't be added to the\n // `unclaimed` vertex list\n this.removeVertexFromFace(eyeVertex, eyeVertex.face)\n this.computeHorizon(eyeVertex.point, null, eyeVertex.face, horizon)\n this.addNewFaces(eyeVertex, horizon)\n\n // first merge pass\n // Do the merge with respect to the larger face\n for (let i = 0; i < this.newFaces.length; i += 1) {\n const face = this.newFaces[i]\n if (face.mark === VISIBLE) {\n while (this.doAdjacentMerge(face, MERGE_NON_CONVEX_WRT_LARGER_FACE)) {} // eslint-disable-line no-empty\n }\n }\n\n // second merge pass\n // Do the merge on non convex faces (a face is marked as non convex in the\n // first pass)\n for (let i = 0; i < this.newFaces.length; i += 1) {\n const face = this.newFaces[i]\n if (face.mark === NON_CONVEX) {\n face.mark = VISIBLE\n while (this.doAdjacentMerge(face, MERGE_NON_CONVEX)) {} // eslint-disable-line no-empty\n }\n }\n\n // reassign `unclaimed` vertices to the new faces\n this.resolveUnclaimedPoints(this.newFaces)\n }\n\n build () {\n let eyeVertex\n this.createInitialSimplex()\n while ((eyeVertex = this.nextVertexToAdd())) {\n this.addVertexToHull(eyeVertex)\n }\n this.reindexFaceAndVertices()\n }\n}\n\nmodule.exports = QuickHull\n","/*\n * Original source from quickhull3d (https://github.com/mauriciopoppe/quickhull3d)\n * Copyright (c) 2015 Mauricio Poppe\n *\n * Adapted to JSCAD by Jeff Gay\n */\n\nclass Vertex {\n constructor (point, index) {\n this.point = point\n // index in the input array\n this.index = index\n // vertex is a double linked list node\n this.next = null\n this.prev = null\n // the face that is able to see this point\n this.face = null\n }\n}\n\nmodule.exports = Vertex\n","/*\n * Original source from quickhull3d (https://github.com/mauriciopoppe/quickhull3d)\n * Copyright (c) 2015 Mauricio Poppe\n *\n * Adapted to JSCAD by Jeff Gay\n */\n\nclass VertexList {\n constructor () {\n this.head = null\n this.tail = null\n }\n\n clear () {\n this.head = this.tail = null\n }\n\n /**\n * Inserts a `node` before `target`, it's assumed that\n * `target` belongs to this doubly linked list\n *\n * @param {*} target\n * @param {*} node\n */\n insertBefore (target, node) {\n node.prev = target.prev\n node.next = target\n if (!node.prev) {\n this.head = node\n } else {\n node.prev.next = node\n }\n target.prev = node\n }\n\n /**\n * Inserts a `node` after `target`, it's assumed that\n * `target` belongs to this doubly linked list\n *\n * @param {Vertex} target\n * @param {Vertex} node\n */\n insertAfter (target, node) {\n node.prev = target\n node.next = target.next\n if (!node.next) {\n this.tail = node\n } else {\n node.next.prev = node\n }\n target.next = node\n }\n\n /**\n * Appends a `node` to the end of this doubly linked list\n * Note: `node.next` will be unlinked from `node`\n * Note: if `node` is part of another linked list call `addAll` instead\n *\n * @param {*} node\n */\n add (node) {\n if (!this.head) {\n this.head = node\n } else {\n this.tail.next = node\n }\n node.prev = this.tail\n // since node is the new end it doesn't have a next node\n node.next = null\n this.tail = node\n }\n\n /**\n * Appends a chain of nodes where `node` is the head,\n * the difference with `add` is that it correctly sets the position\n * of the node list `tail` property\n *\n * @param {*} node\n */\n addAll (node) {\n if (!this.head) {\n this.head = node\n } else {\n this.tail.next = node\n }\n node.prev = this.tail\n\n // find the end of the list\n while (node.next) {\n node = node.next\n }\n this.tail = node\n }\n\n /**\n * Deletes a `node` from this linked list, it's assumed that `node` is a\n * member of this linked list\n *\n * @param {*} node\n */\n remove (node) {\n if (!node.prev) {\n this.head = node.next\n } else {\n node.prev.next = node.next\n }\n\n if (!node.next) {\n this.tail = node.prev\n } else {\n node.next.prev = node.prev\n }\n }\n\n /**\n * Removes a chain of nodes whose head is `a` and whose tail is `b`,\n * it's assumed that `a` and `b` belong to this list and also that `a`\n * comes before `b` in the linked list\n *\n * @param {*} a\n * @param {*} b\n */\n removeChain (a, b) {\n if (!a.prev) {\n this.head = b.next\n } else {\n a.prev.next = b.next\n }\n\n if (!b.next) {\n this.tail = a.prev\n } else {\n b.next.prev = a.prev\n }\n }\n\n first () {\n return this.head\n }\n\n isEmpty () {\n return !this.head\n }\n}\n\nmodule.exports = VertexList\n","const cross = require('../../../maths/vec3/cross')\nconst normalize = require('../../../maths/vec3/normalize')\nconst subtract = require('../../../maths/vec3/subtract')\n\n/*\n * Original source from quickhull3d (https://github.com/mauriciopoppe/quickhull3d)\n * Copyright (c) 2015 Mauricio Poppe\n *\n * Adapted to JSCAD by Jeff Gay\n */\n\nconst planeNormal = (out, point1, point2, point3) => {\n const tmp = [0, 0, 0]\n subtract(out, point1, point2)\n subtract(tmp, point2, point3)\n cross(out, out, tmp)\n return normalize(out, out)\n}\n\nmodule.exports = planeNormal\n","const QuickHull = require('./QuickHull')\n\n/*\n * Original source from quickhull3d (https://github.com/mauriciopoppe/quickhull3d)\n * Copyright (c) 2015 Mauricio Poppe\n *\n * Adapted to JSCAD by Jeff Gay\n */\n\nconst runner = (points, options = {}) => {\n const instance = new QuickHull(points)\n instance.build()\n return instance.collectFaces(options.skipTriangulation)\n}\n\nmodule.exports = runner\n","const cross = require('../../../maths/vec3/cross')\nconst subtract = require('../../../maths/vec3/subtract')\nconst squaredLength = require('../../../maths/vec3/squaredLength')\n\n/*\n * Original source from quickhull3d (https://github.com/mauriciopoppe/quickhull3d)\n * Copyright (c) 2015 Mauricio Poppe\n *\n * Adapted to JSCAD by Jeff Gay\n */\n\nconst distanceSquared = (p, a, b) => {\n // == parallelogram solution\n //\n // s\n // __a________b__\n // / | /\n // / h| /\n // /_____|__/\n // p\n //\n // s = b - a\n // area = s * h\n // |ap x s| = s * h\n // h = |ap x s| / s\n //\n const ab = []\n const ap = []\n const cr = []\n subtract(ab, b, a)\n subtract(ap, p, a)\n const area = squaredLength(cross(cr, ap, ab))\n const s = squaredLength(ab)\n if (s === 0) {\n throw Error('a and b are the same point')\n }\n return area / s\n}\n\nconst pointLineDistance = (point, a, b) => Math.sqrt(distanceSquared(point, a, b))\n\nmodule.exports = pointLineDistance\n","const geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\nconst path2 = require('../../geometries/path2')\n\n/*\n * Return the unique vertices of a geometry\n */\nconst toUniquePoints = (geometries) => {\n const found = new Set()\n const uniquePoints = []\n\n const addPoint = (point) => {\n const key = point.toString()\n if (!found.has(key)) {\n uniquePoints.push(point)\n found.add(key)\n }\n }\n\n geometries.forEach((geometry) => {\n if (geom2.isA(geometry)) {\n geom2.toPoints(geometry).forEach(addPoint)\n } else if (geom3.isA(geometry)) {\n // points are grouped by polygon\n geom3.toPoints(geometry).forEach((points) => points.forEach(addPoint))\n } else if (path2.isA(geometry)) {\n path2.toPoints(geometry).forEach(addPoint)\n }\n })\n\n return uniquePoints\n}\n\nmodule.exports = toUniquePoints\n","const flatten = require('../../utils/flatten')\n\nconst measureEpsilon = require('../../measurements/measureEpsilon')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\nconst path2 = require('../../geometries/path2')\n\nconst snapPolygons = require('./snapPolygons')\nconst mergePolygons = require('./mergePolygons')\nconst insertTjunctions = require('./insertTjunctions')\nconst triangulatePolygons = require('./triangulatePolygons')\n\n/*\n */\nconst generalizePath2 = (options, geometry) => geometry\n\n/*\n */\nconst generalizeGeom2 = (options, geometry) => geometry\n\n/*\n */\nconst generalizeGeom3 = (options, geometry) => {\n const defaults = {\n snap: false,\n simplify: false,\n triangulate: false\n }\n const { snap, simplify, triangulate } = Object.assign({}, defaults, options)\n\n const epsilon = measureEpsilon(geometry)\n let polygons = geom3.toPolygons(geometry)\n\n // snap the given geometry if requested\n if (snap) {\n polygons = snapPolygons(epsilon, polygons)\n }\n\n // simplify the polygons if requested\n if (simplify) {\n // TODO implement some mesh decimations\n polygons = mergePolygons(epsilon, polygons)\n }\n\n // triangulate the polygons if requested\n if (triangulate) {\n polygons = insertTjunctions(polygons)\n polygons = triangulatePolygons(epsilon, polygons)\n }\n\n // FIXME replace with geom3.cloneShallow() when available\n const clone = Object.assign({}, geometry)\n clone.polygons = polygons\n\n return clone\n}\n\n/**\n * Apply various modifications in proper order to produce a generalized geometry.\n * @param {Object} options - options for modifications\n * @param {Boolean} [options.snap=false] the geometries should be snapped to epsilons\n * @param {Boolean} [options.simplify=false] the geometries should be simplified\n * @param {Boolean} [options.triangulate=false] the geometries should be triangulated\n * @param {...Object} geometries - the geometries to generalize\n * @return {Object|Array} the modified geometry, or a list of modified geometries\n * @alias module:modeling/modifiers.generalize\n */\nconst generalize = (options, ...geometries) => {\n geometries = flatten(geometries)\n if (geometries.length === 0) throw new Error('wrong number of arguments')\n\n const results = geometries.map((geometry) => {\n if (path2.isA(geometry)) return generalizePath2(options, geometry)\n if (geom2.isA(geometry)) return generalizeGeom2(options, geometry)\n if (geom3.isA(geometry)) return generalizeGeom3(options, geometry)\n throw new Error('invalid geometry')\n })\n return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = generalize\n","/**\n * All shapes (primitives or the results of operations) can be modified to correct issues, etc.\n * In all cases, these functions returns the results, and never changes the original geometry.\n * @module modeling/modifiers\n * @example\n * const { snap } = require('@jscad/modeling').modifiers\n */\nmodule.exports = {\n generalize: require('./generalize'),\n snap: require('./snap'),\n retessellate: require('./retessellate')\n}\n","const constants = require('../../maths/constants')\nconst vec3 = require('../../maths/vec3')\nconst poly3 = require('../../geometries/poly3')\n\nconst assert = false\n\nconst getTag = (vertex) => `${vertex}`\n\nconst addSide = (sidemap, vertextag2sidestart, vertextag2sideend, vertex0, vertex1, polygonindex) => {\n const starttag = getTag(vertex0)\n const endtag = getTag(vertex1)\n if (assert && starttag === endtag) throw new Error('assert failed')\n const newsidetag = `${starttag}/${endtag}`\n const reversesidetag = `${endtag}/${starttag}`\n if (sidemap.has(reversesidetag)) {\n // remove the opposing side from mappings\n deleteSide(sidemap, vertextag2sidestart, vertextag2sideend, vertex1, vertex0, null)\n return null\n }\n // add the side to the mappings\n const newsideobj = {\n vertex0: vertex0,\n vertex1: vertex1,\n polygonindex: polygonindex\n }\n if (!(sidemap.has(newsidetag))) {\n sidemap.set(newsidetag, [newsideobj])\n } else {\n sidemap.get(newsidetag).push(newsideobj)\n }\n if (vertextag2sidestart.has(starttag)) {\n vertextag2sidestart.get(starttag).push(newsidetag)\n } else {\n vertextag2sidestart.set(starttag, [newsidetag])\n }\n if (vertextag2sideend.has(endtag)) {\n vertextag2sideend.get(endtag).push(newsidetag)\n } else {\n vertextag2sideend.set(endtag, [newsidetag])\n }\n return newsidetag\n}\n\nconst deleteSide = (sidemap, vertextag2sidestart, vertextag2sideend, vertex0, vertex1, polygonindex) => {\n const starttag = getTag(vertex0)\n const endtag = getTag(vertex1)\n const sidetag = `${starttag}/${endtag}`\n if (assert && !(sidemap.has(sidetag))) throw new Error('assert failed')\n let idx = -1\n const sideobjs = sidemap.get(sidetag)\n for (let i = 0; i < sideobjs.length; i++) {\n const sideobj = sideobjs[i]\n let sidetag = getTag(sideobj.vertex0)\n if (sidetag !== starttag) continue\n sidetag = getTag(sideobj.vertex1)\n if (sidetag !== endtag) continue\n if (polygonindex !== null) {\n if (sideobj.polygonindex !== polygonindex) continue\n }\n idx = i\n break\n }\n if (assert && idx < 0) throw new Error('assert failed')\n sideobjs.splice(idx, 1)\n if (sideobjs.length === 0) {\n sidemap.delete(sidetag)\n }\n\n // adjust start and end lists\n idx = vertextag2sidestart.get(starttag).indexOf(sidetag)\n if (assert && idx < 0) throw new Error('assert failed')\n vertextag2sidestart.get(starttag).splice(idx, 1)\n if (vertextag2sidestart.get(starttag).length === 0) {\n vertextag2sidestart.delete(starttag)\n }\n\n idx = vertextag2sideend.get(endtag).indexOf(sidetag)\n if (assert && idx < 0) throw new Error('assert failed')\n vertextag2sideend.get(endtag).splice(idx, 1)\n if (vertextag2sideend.get(endtag).length === 0) {\n vertextag2sideend.delete(endtag)\n }\n}\n\n/*\n Suppose we have two polygons ACDB and EDGF:\n\n A-----B\n | |\n | E--F\n | | |\n C-----D--G\n\n Note that vertex E forms a T-junction on the side BD. In this case some STL slicers will complain\n that the solid is not watertight. This is because the watertightness check is done by checking if\n each side DE is matched by another side ED.\n\n This function will return a new solid with ACDB replaced by ACDEB\n\n Note that this can create polygons that are slightly non-convex (due to rounding errors). Therefore the result should\n not be used for further CSG operations!\n\n Note this function is meant to be used to preprocess geometries when triangulation is required, i.e. AMF, STL, etc.\n Do not use the results in other operations.\n*/\n\n/*\n * Insert missing vertices for T junctions, which creates polygons that can be triangulated.\n * @param {Array} polygons - the original polygons which may or may not have T junctions\n * @return original polygons (if no T junctions found) or new polygons with updated vertices\n */\nconst insertTjunctions = (polygons) => {\n // STEP 1 : build a map of 'unmatched' sides from the polygons\n // i.e. side AB in one polygon does not have a matching side BA in another polygon\n const sidemap = new Map()\n for (let polygonindex = 0; polygonindex < polygons.length; polygonindex++) {\n const polygon = polygons[polygonindex]\n const numvertices = polygon.vertices.length\n if (numvertices >= 3) {\n let vertex = polygon.vertices[0]\n let vertextag = getTag(vertex)\n for (let vertexindex = 0; vertexindex < numvertices; vertexindex++) {\n let nextvertexindex = vertexindex + 1\n if (nextvertexindex === numvertices) nextvertexindex = 0\n\n const nextvertex = polygon.vertices[nextvertexindex]\n const nextvertextag = getTag(nextvertex)\n\n const sidetag = `${vertextag}/${nextvertextag}`\n const reversesidetag = `${nextvertextag}/${vertextag}`\n if (sidemap.has(reversesidetag)) {\n // this side matches the same side in another polygon. Remove from sidemap\n // FIXME is this check necessary? there should only be ONE(1) opposing side\n // FIXME assert ?\n const ar = sidemap.get(reversesidetag)\n ar.splice(-1, 1)\n if (ar.length === 0) {\n sidemap.delete(reversesidetag)\n }\n } else {\n const sideobj = {\n vertex0: vertex,\n vertex1: nextvertex,\n polygonindex: polygonindex\n }\n if (!(sidemap.has(sidetag))) {\n sidemap.set(sidetag, [sideobj])\n } else {\n sidemap.get(sidetag).push(sideobj)\n }\n }\n vertex = nextvertex\n vertextag = nextvertextag\n }\n } else {\n console.warn('warning: invalid polygon found during insertTjunctions')\n }\n }\n\n if (sidemap.size > 0) {\n // STEP 2 : create a list of starting sides and ending sides\n const vertextag2sidestart = new Map()\n const vertextag2sideend = new Map()\n const sidesToCheck = new Map()\n for (const [sidetag, sideobjs] of sidemap) {\n sidesToCheck.set(sidetag, true)\n sideobjs.forEach((sideobj) => {\n const starttag = getTag(sideobj.vertex0)\n const endtag = getTag(sideobj.vertex1)\n if (vertextag2sidestart.has(starttag)) {\n vertextag2sidestart.get(starttag).push(sidetag)\n } else {\n vertextag2sidestart.set(starttag, [sidetag])\n }\n if (vertextag2sideend.has(endtag)) {\n vertextag2sideend.get(endtag).push(sidetag)\n } else {\n vertextag2sideend.set(endtag, [sidetag])\n }\n })\n }\n\n // STEP 3 : if sidemap is not empty\n const newpolygons = polygons.slice(0) // make a copy in order to replace polygons inline\n while (true) {\n if (sidemap.size === 0) break\n\n for (const sidetag of sidemap.keys()) {\n sidesToCheck.set(sidetag, true)\n }\n\n let donesomething = false\n while (true) {\n const sidetags = Array.from(sidesToCheck.keys())\n if (sidetags.length === 0) break // sidesToCheck is empty, we're done!\n const sidetagtocheck = sidetags[0]\n let donewithside = true\n if (sidemap.has(sidetagtocheck)) {\n const sideobjs = sidemap.get(sidetagtocheck)\n if (assert && sideobjs.length === 0) throw new Error('assert failed')\n const sideobj = sideobjs[0]\n for (let directionindex = 0; directionindex < 2; directionindex++) {\n const startvertex = (directionindex === 0) ? sideobj.vertex0 : sideobj.vertex1\n const endvertex = (directionindex === 0) ? sideobj.vertex1 : sideobj.vertex0\n const startvertextag = getTag(startvertex)\n const endvertextag = getTag(endvertex)\n let matchingsides = []\n if (directionindex === 0) {\n if (vertextag2sideend.has(startvertextag)) {\n matchingsides = vertextag2sideend.get(startvertextag)\n }\n } else {\n if (vertextag2sidestart.has(startvertextag)) {\n matchingsides = vertextag2sidestart.get(startvertextag)\n }\n }\n for (let matchingsideindex = 0; matchingsideindex < matchingsides.length; matchingsideindex++) {\n const matchingsidetag = matchingsides[matchingsideindex]\n const matchingside = sidemap.get(matchingsidetag)[0]\n const matchingsidestartvertex = (directionindex === 0) ? matchingside.vertex0 : matchingside.vertex1\n const matchingsideendvertex = (directionindex === 0) ? matchingside.vertex1 : matchingside.vertex0\n const matchingsidestartvertextag = getTag(matchingsidestartvertex)\n const matchingsideendvertextag = getTag(matchingsideendvertex)\n if (assert && matchingsideendvertextag !== startvertextag) throw new Error('assert failed')\n if (matchingsidestartvertextag === endvertextag) {\n // matchingside cancels sidetagtocheck\n deleteSide(sidemap, vertextag2sidestart, vertextag2sideend, startvertex, endvertex, null)\n deleteSide(sidemap, vertextag2sidestart, vertextag2sideend, endvertex, startvertex, null)\n donewithside = false\n directionindex = 2 // skip reverse direction check\n donesomething = true\n break\n } else {\n const startpos = startvertex\n const endpos = endvertex\n const checkpos = matchingsidestartvertex\n const direction = vec3.subtract(vec3.create(), checkpos, startpos)\n // Now we need to check if endpos is on the line startpos-checkpos:\n const t = vec3.dot(vec3.subtract(vec3.create(), endpos, startpos), direction) / vec3.dot(direction, direction)\n if ((t > 0) && (t < 1)) {\n const closestpoint = vec3.scale(vec3.create(), direction, t)\n vec3.add(closestpoint, closestpoint, startpos)\n const distancesquared = vec3.squaredDistance(closestpoint, endpos)\n if (distancesquared < (constants.EPS * constants.EPS)) {\n // Yes it's a t-junction! We need to split matchingside in two:\n const polygonindex = matchingside.polygonindex\n const polygon = newpolygons[polygonindex]\n // find the index of startvertextag in polygon:\n const insertionvertextag = getTag(matchingside.vertex1)\n let insertionvertextagindex = -1\n for (let i = 0; i < polygon.vertices.length; i++) {\n if (getTag(polygon.vertices[i]) === insertionvertextag) {\n insertionvertextagindex = i\n break\n }\n }\n if (assert && insertionvertextagindex < 0) throw new Error('assert failed')\n // split the side by inserting the vertex:\n const newvertices = polygon.vertices.slice(0)\n newvertices.splice(insertionvertextagindex, 0, endvertex)\n const newpolygon = poly3.create(newvertices)\n\n newpolygons[polygonindex] = newpolygon\n\n // remove the original sides from our maps\n deleteSide(sidemap, vertextag2sidestart, vertextag2sideend, matchingside.vertex0, matchingside.vertex1, polygonindex)\n const newsidetag1 = addSide(sidemap, vertextag2sidestart, vertextag2sideend, matchingside.vertex0, endvertex, polygonindex)\n const newsidetag2 = addSide(sidemap, vertextag2sidestart, vertextag2sideend, endvertex, matchingside.vertex1, polygonindex)\n if (newsidetag1 !== null) sidesToCheck.set(newsidetag1, true)\n if (newsidetag2 !== null) sidesToCheck.set(newsidetag2, true)\n donewithside = false\n directionindex = 2 // skip reverse direction check\n donesomething = true\n break\n } // if(distancesquared < 1e-10)\n } // if( (t > 0) && (t < 1) )\n } // if(endingstidestartvertextag === endvertextag)\n } // for matchingsideindex\n } // for directionindex\n } // if(sidetagtocheck in sidemap)\n if (donewithside) {\n sidesToCheck.delete(sidetagtocheck)\n }\n }\n if (!donesomething) break\n }\n polygons = newpolygons\n }\n sidemap.clear()\n\n return polygons\n}\n\nmodule.exports = insertTjunctions\n","const aboutEqualNormals = require('../../maths/utils/aboutEqualNormals')\nconst vec3 = require('../../maths/vec3')\n\nconst poly3 = require('../../geometries/poly3')\n\n// create a set of edges from the given polygon, and link the edges as well\nconst createEdges = (polygon) => {\n const points = poly3.toPoints(polygon)\n const edges = []\n for (let i = 0; i < points.length; i++) {\n const j = (i + 1) % points.length\n const edge = {\n v1: points[i],\n v2: points[j]\n }\n edges.push(edge)\n }\n // link the edges together\n for (let i = 0; i < edges.length; i++) {\n const j = (i + 1) % points.length\n edges[i].next = edges[j]\n edges[j].prev = edges[i]\n }\n return edges\n}\n\nconst insertEdge = (edges, edge) => {\n const key = `${edge.v1}:${edge.v2}`\n edges.set(key, edge)\n}\n\nconst deleteEdge = (edges, edge) => {\n const key = `${edge.v1}:${edge.v2}`\n edges.delete(key)\n}\n\nconst findOppositeEdge = (edges, edge) => {\n const key = `${edge.v2}:${edge.v1}` // NOTE: OPPOSITE OF INSERT KEY\n return edges.get(key)\n}\n\n// calculate the two adjoining angles between the opposing edges\nconst calculateAnglesBetween = (current, opposite, normal) => {\n let v0 = current.prev.v1\n let v1 = current.prev.v2\n let v2 = opposite.next.v2\n const angle1 = calculateAngle(v0, v1, v2, normal)\n\n v0 = opposite.prev.v1\n v1 = opposite.prev.v2\n v2 = current.next.v2\n const angle2 = calculateAngle(v0, v1, v2, normal)\n\n return [angle1, angle2]\n}\n\nconst v1 = vec3.create()\nconst v2 = vec3.create()\n\nconst calculateAngle = (prevpoint, point, nextpoint, normal) => {\n const d0 = vec3.subtract(v1, point, prevpoint)\n const d1 = vec3.subtract(v2, nextpoint, point)\n vec3.cross(d0, d0, d1)\n return vec3.dot(d0, normal)\n}\n\n// create a polygon starting from the given edge (if possible)\nconst createPolygonAnd = (edge) => {\n let polygon\n const points = []\n while (edge.next) {\n const next = edge.next\n\n points.push(edge.v1)\n\n edge.v1 = null\n edge.v2 = null\n edge.next = null\n edge.prev = null\n\n edge = next\n }\n if (points.length > 0) polygon = poly3.create(points)\n return polygon\n}\n\n/*\n * Merge COPLANAR polygons that share common edges.\n * @param {poly3[]} sourcepolygons - list of polygons\n * @returns {poly3[]} new set of polygons\n */\nconst mergeCoplanarPolygons = (sourcepolygons) => {\n if (sourcepolygons.length < 2) return sourcepolygons\n\n const normal = sourcepolygons[0].plane\n const polygons = sourcepolygons.slice()\n const edgeList = new Map()\n\n while (polygons.length > 0) { // NOTE: the length of polygons WILL change\n const polygon = polygons.shift()\n const edges = createEdges(polygon)\n for (let i = 0; i < edges.length; i++) {\n const current = edges[i]\n const opposite = findOppositeEdge(edgeList, current)\n if (opposite) {\n const angles = calculateAnglesBetween(current, opposite, normal)\n if (angles[0] >= 0 && angles[1] >= 0) {\n const edge1 = opposite.next\n const edge2 = current.next\n // adjust the edges, linking together opposing polygons\n current.prev.next = opposite.next\n current.next.prev = opposite.prev\n\n opposite.prev.next = current.next\n opposite.next.prev = current.prev\n\n // remove the opposing edges\n current.v1 = null\n current.v2 = null\n current.next = null\n current.prev = null\n\n deleteEdge(edgeList, opposite)\n\n opposite.v1 = null\n opposite.v2 = null\n opposite.next = null\n opposite.prev = null\n\n const mergeEdges = (list, e1, e2) => {\n const newedge = {\n v1: e2.v1,\n v2: e1.v2,\n next: e1.next,\n prev: e2.prev\n }\n // link in newedge\n e2.prev.next = newedge\n e1.next.prev = newedge\n // remove old edges\n deleteEdge(list, e1)\n e1.v1 = null\n e1.v2 = null\n e1.next = null\n e1.prev = null\n\n deleteEdge(list, e2)\n e2.v1 = null\n e2.v2 = null\n e2.next = null\n e2.prev = null\n }\n\n if (angles[0] === 0.0) {\n mergeEdges(edgeList, edge1, edge1.prev)\n }\n if (angles[1] === 0.0) {\n mergeEdges(edgeList, edge2, edge2.prev)\n }\n }\n } else {\n if (current.next) insertEdge(edgeList, current)\n }\n }\n }\n\n // build a set of polygons from the remaining edges\n const destpolygons = []\n edgeList.forEach((edge) => {\n const polygon = createPolygonAnd(edge)\n if (polygon) destpolygons.push(polygon)\n })\n\n edgeList.clear()\n\n return destpolygons\n}\n\nconst coplanar = (plane1, plane2) => {\n // expect the same distance from the origin, within tolerance\n if (Math.abs(plane1[3] - plane2[3]) < 0.00000015) {\n return aboutEqualNormals(plane1, plane2)\n }\n return false\n}\n\nconst mergePolygons = (epsilon, polygons) => {\n const polygonsPerPlane = [] // elements: [plane, [poly3...]]\n polygons.forEach((polygon) => {\n const mapping = polygonsPerPlane.find((element) => coplanar(element[0], poly3.plane(polygon)))\n if (mapping) {\n const polygons = mapping[1]\n polygons.push(polygon)\n } else {\n polygonsPerPlane.push([poly3.plane(polygon), [polygon]])\n }\n })\n\n let destpolygons = []\n polygonsPerPlane.forEach((mapping) => {\n const sourcepolygons = mapping[1]\n const retesselayedpolygons = mergeCoplanarPolygons(sourcepolygons)\n destpolygons = destpolygons.concat(retesselayedpolygons)\n })\n return destpolygons\n}\n\nmodule.exports = mergePolygons\n","const { EPS } = require('../../maths/constants')\n\nconst line2 = require('../../maths/line2')\nconst vec2 = require('../../maths/vec2')\nconst OrthoNormalBasis = require('../../maths/OrthoNormalBasis')\nconst interpolateBetween2DPointsForY = require('../../maths/utils/interpolateBetween2DPointsForY')\n\nconst { insertSorted, fnNumberSort } = require('../../utils')\n\nconst poly3 = require('../../geometries/poly3')\n\n/*\n * Retesselation for a set of COPLANAR polygons.\n * @param {poly3[]} sourcepolygons - list of polygons\n * @returns {poly3[]} new set of polygons\n */\nconst reTesselateCoplanarPolygons = (sourcepolygons) => {\n if (sourcepolygons.length < 2) return sourcepolygons\n\n const destpolygons = []\n const numpolygons = sourcepolygons.length\n const plane = poly3.plane(sourcepolygons[0])\n const orthobasis = new OrthoNormalBasis(plane)\n const polygonvertices2d = [] // array of array of Vector2D\n const polygontopvertexindexes = [] // array of indexes of topmost vertex per polygon\n const topy2polygonindexes = new Map()\n const ycoordinatetopolygonindexes = new Map()\n\n // convert all polygon vertices to 2D\n // Make a list of all encountered y coordinates\n // And build a map of all polygons that have a vertex at a certain y coordinate:\n const ycoordinatebins = new Map()\n const ycoordinateBinningFactor = 10 / EPS\n for (let polygonindex = 0; polygonindex < numpolygons; polygonindex++) {\n const poly3d = sourcepolygons[polygonindex]\n let vertices2d = []\n let numvertices = poly3d.vertices.length\n let minindex = -1\n if (numvertices > 0) {\n let miny\n let maxy\n for (let i = 0; i < numvertices; i++) {\n let pos2d = orthobasis.to2D(poly3d.vertices[i])\n // perform binning of y coordinates: If we have multiple vertices very\n // close to each other, give them the same y coordinate:\n const ycoordinatebin = Math.floor(pos2d[1] * ycoordinateBinningFactor)\n let newy\n if (ycoordinatebins.has(ycoordinatebin)) {\n newy = ycoordinatebins.get(ycoordinatebin)\n } else if (ycoordinatebins.has(ycoordinatebin + 1)) {\n newy = ycoordinatebins.get(ycoordinatebin + 1)\n } else if (ycoordinatebins.has(ycoordinatebin - 1)) {\n newy = ycoordinatebins.get(ycoordinatebin - 1)\n } else {\n newy = pos2d[1]\n ycoordinatebins.set(ycoordinatebin, pos2d[1])\n }\n pos2d = vec2.fromValues(pos2d[0], newy)\n vertices2d.push(pos2d)\n const y = pos2d[1]\n if ((i === 0) || (y < miny)) {\n miny = y\n minindex = i\n }\n if ((i === 0) || (y > maxy)) {\n maxy = y\n }\n let polygonindexes = ycoordinatetopolygonindexes.get(y)\n if (!polygonindexes) {\n polygonindexes = {} // PERF\n ycoordinatetopolygonindexes.set(y, polygonindexes)\n }\n polygonindexes[polygonindex] = true\n }\n if (miny >= maxy) {\n // degenerate polygon, all vertices have same y coordinate. Just ignore it from now:\n vertices2d = []\n numvertices = 0\n minindex = -1\n } else {\n let polygonindexes = topy2polygonindexes.get(miny)\n if (!polygonindexes) {\n polygonindexes = []\n topy2polygonindexes.set(miny, polygonindexes)\n }\n polygonindexes.push(polygonindex)\n }\n } // if(numvertices > 0)\n // reverse the vertex order:\n vertices2d.reverse()\n minindex = numvertices - minindex - 1\n polygonvertices2d.push(vertices2d)\n polygontopvertexindexes.push(minindex)\n }\n\n const ycoordinates = []\n ycoordinatetopolygonindexes.forEach((polylist, y) => ycoordinates.push(y))\n ycoordinates.sort(fnNumberSort)\n\n // Now we will iterate over all y coordinates, from lowest to highest y coordinate\n // activepolygons: source polygons that are 'active', i.e. intersect with our y coordinate\n // Is sorted so the polygons are in left to right order\n // Each element in activepolygons has these properties:\n // polygonindex: the index of the source polygon (i.e. an index into the sourcepolygons\n // and polygonvertices2d arrays)\n // leftvertexindex: the index of the vertex at the left side of the polygon (lowest x)\n // that is at or just above the current y coordinate\n // rightvertexindex: dito at right hand side of polygon\n // topleft, bottomleft: coordinates of the left side of the polygon crossing the current y coordinate\n // topright, bottomright: coordinates of the right hand side of the polygon crossing the current y coordinate\n let activepolygons = []\n let prevoutpolygonrow = []\n for (let yindex = 0; yindex < ycoordinates.length; yindex++) {\n const newoutpolygonrow = []\n const ycoordinate = ycoordinates[yindex]\n\n // update activepolygons for this y coordinate:\n // - Remove any polygons that end at this y coordinate\n // - update leftvertexindex and rightvertexindex (which point to the current vertex index\n // at the the left and right side of the polygon\n // Iterate over all polygons that have a corner at this y coordinate:\n const polygonindexeswithcorner = ycoordinatetopolygonindexes.get(ycoordinate)\n for (let activepolygonindex = 0; activepolygonindex < activepolygons.length; ++activepolygonindex) {\n const activepolygon = activepolygons[activepolygonindex]\n const polygonindex = activepolygon.polygonindex\n if (polygonindexeswithcorner[polygonindex]) {\n // this active polygon has a corner at this y coordinate:\n const vertices2d = polygonvertices2d[polygonindex]\n const numvertices = vertices2d.length\n let newleftvertexindex = activepolygon.leftvertexindex\n let newrightvertexindex = activepolygon.rightvertexindex\n // See if we need to increase leftvertexindex or decrease rightvertexindex:\n while (true) {\n let nextleftvertexindex = newleftvertexindex + 1\n if (nextleftvertexindex >= numvertices) nextleftvertexindex = 0\n if (vertices2d[nextleftvertexindex][1] !== ycoordinate) break\n newleftvertexindex = nextleftvertexindex\n }\n let nextrightvertexindex = newrightvertexindex - 1\n if (nextrightvertexindex < 0) nextrightvertexindex = numvertices - 1\n if (vertices2d[nextrightvertexindex][1] === ycoordinate) {\n newrightvertexindex = nextrightvertexindex\n }\n if ((newleftvertexindex !== activepolygon.leftvertexindex) && (newleftvertexindex === newrightvertexindex)) {\n // We have increased leftvertexindex or decreased rightvertexindex, and now they point to the same vertex\n // This means that this is the bottom point of the polygon. We'll remove it:\n activepolygons.splice(activepolygonindex, 1)\n --activepolygonindex\n } else {\n activepolygon.leftvertexindex = newleftvertexindex\n activepolygon.rightvertexindex = newrightvertexindex\n activepolygon.topleft = vertices2d[newleftvertexindex]\n activepolygon.topright = vertices2d[newrightvertexindex]\n let nextleftvertexindex = newleftvertexindex + 1\n if (nextleftvertexindex >= numvertices) nextleftvertexindex = 0\n activepolygon.bottomleft = vertices2d[nextleftvertexindex]\n let nextrightvertexindex = newrightvertexindex - 1\n if (nextrightvertexindex < 0) nextrightvertexindex = numvertices - 1\n activepolygon.bottomright = vertices2d[nextrightvertexindex]\n }\n } // if polygon has corner here\n } // for activepolygonindex\n let nextycoordinate\n if (yindex >= ycoordinates.length - 1) {\n // last row, all polygons must be finished here:\n activepolygons = []\n nextycoordinate = null\n } else { // yindex < ycoordinates.length-1\n nextycoordinate = Number(ycoordinates[yindex + 1])\n const middleycoordinate = 0.5 * (ycoordinate + nextycoordinate)\n // update activepolygons by adding any polygons that start here:\n const startingpolygonindexes = topy2polygonindexes.get(ycoordinate)\n for (const polygonindexKey in startingpolygonindexes) {\n const polygonindex = startingpolygonindexes[polygonindexKey]\n const vertices2d = polygonvertices2d[polygonindex]\n const numvertices = vertices2d.length\n const topvertexindex = polygontopvertexindexes[polygonindex]\n // the top of the polygon may be a horizontal line. In that case topvertexindex can point to any point on this line.\n // Find the left and right topmost vertices which have the current y coordinate:\n let topleftvertexindex = topvertexindex\n while (true) {\n let i = topleftvertexindex + 1\n if (i >= numvertices) i = 0\n if (vertices2d[i][1] !== ycoordinate) break\n if (i === topvertexindex) break // should not happen, but just to prevent endless loops\n topleftvertexindex = i\n }\n let toprightvertexindex = topvertexindex\n while (true) {\n let i = toprightvertexindex - 1\n if (i < 0) i = numvertices - 1\n if (vertices2d[i][1] !== ycoordinate) break\n if (i === topleftvertexindex) break // should not happen, but just to prevent endless loops\n toprightvertexindex = i\n }\n let nextleftvertexindex = topleftvertexindex + 1\n if (nextleftvertexindex >= numvertices) nextleftvertexindex = 0\n let nextrightvertexindex = toprightvertexindex - 1\n if (nextrightvertexindex < 0) nextrightvertexindex = numvertices - 1\n const newactivepolygon = {\n polygonindex: polygonindex,\n leftvertexindex: topleftvertexindex,\n rightvertexindex: toprightvertexindex,\n topleft: vertices2d[topleftvertexindex],\n topright: vertices2d[toprightvertexindex],\n bottomleft: vertices2d[nextleftvertexindex],\n bottomright: vertices2d[nextrightvertexindex]\n }\n insertSorted(activepolygons, newactivepolygon, (el1, el2) => {\n const x1 = interpolateBetween2DPointsForY(el1.topleft, el1.bottomleft, middleycoordinate)\n const x2 = interpolateBetween2DPointsForY(el2.topleft, el2.bottomleft, middleycoordinate)\n if (x1 > x2) return 1\n if (x1 < x2) return -1\n return 0\n })\n } // for(let polygonindex in startingpolygonindexes)\n } // yindex < ycoordinates.length-1\n\n // Now activepolygons is up to date\n // Build the output polygons for the next row in newoutpolygonrow:\n for (const activepolygonKey in activepolygons) {\n const activepolygon = activepolygons[activepolygonKey]\n\n let x = interpolateBetween2DPointsForY(activepolygon.topleft, activepolygon.bottomleft, ycoordinate)\n const topleft = vec2.fromValues(x, ycoordinate)\n x = interpolateBetween2DPointsForY(activepolygon.topright, activepolygon.bottomright, ycoordinate)\n const topright = vec2.fromValues(x, ycoordinate)\n x = interpolateBetween2DPointsForY(activepolygon.topleft, activepolygon.bottomleft, nextycoordinate)\n const bottomleft = vec2.fromValues(x, nextycoordinate)\n x = interpolateBetween2DPointsForY(activepolygon.topright, activepolygon.bottomright, nextycoordinate)\n const bottomright = vec2.fromValues(x, nextycoordinate)\n const outpolygon = {\n topleft: topleft,\n topright: topright,\n bottomleft: bottomleft,\n bottomright: bottomright,\n leftline: line2.fromPoints(line2.create(), topleft, bottomleft),\n rightline: line2.fromPoints(line2.create(), bottomright, topright)\n }\n if (newoutpolygonrow.length > 0) {\n const prevoutpolygon = newoutpolygonrow[newoutpolygonrow.length - 1]\n const d1 = vec2.distance(outpolygon.topleft, prevoutpolygon.topright)\n const d2 = vec2.distance(outpolygon.bottomleft, prevoutpolygon.bottomright)\n if ((d1 < EPS) && (d2 < EPS)) {\n // we can join this polygon with the one to the left:\n outpolygon.topleft = prevoutpolygon.topleft\n outpolygon.leftline = prevoutpolygon.leftline\n outpolygon.bottomleft = prevoutpolygon.bottomleft\n newoutpolygonrow.splice(newoutpolygonrow.length - 1, 1)\n }\n }\n newoutpolygonrow.push(outpolygon)\n } // for(activepolygon in activepolygons)\n if (yindex > 0) {\n // try to match the new polygons against the previous row:\n const prevcontinuedindexes = new Set()\n const matchedindexes = new Set()\n for (let i = 0; i < newoutpolygonrow.length; i++) {\n const thispolygon = newoutpolygonrow[i]\n for (let ii = 0; ii < prevoutpolygonrow.length; ii++) {\n if (!matchedindexes.has(ii)) { // not already processed?\n // We have a match if the sidelines are equal or if the top coordinates\n // are on the sidelines of the previous polygon\n const prevpolygon = prevoutpolygonrow[ii]\n if (vec2.distance(prevpolygon.bottomleft, thispolygon.topleft) < EPS) {\n if (vec2.distance(prevpolygon.bottomright, thispolygon.topright) < EPS) {\n // Yes, the top of this polygon matches the bottom of the previous:\n matchedindexes.add(ii)\n // Now check if the joined polygon would remain convex:\n const v1 = line2.direction(thispolygon.leftline)\n const v2 = line2.direction(prevpolygon.leftline)\n const d1 = v1[0] - v2[0]\n\n const v3 = line2.direction(thispolygon.rightline)\n const v4 = line2.direction(prevpolygon.rightline)\n const d2 = v3[0] - v4[0]\n\n const leftlinecontinues = Math.abs(d1) < EPS\n const rightlinecontinues = Math.abs(d2) < EPS\n const leftlineisconvex = leftlinecontinues || (d1 >= 0)\n const rightlineisconvex = rightlinecontinues || (d2 >= 0)\n if (leftlineisconvex && rightlineisconvex) {\n // yes, both sides have convex corners:\n // This polygon will continue the previous polygon\n thispolygon.outpolygon = prevpolygon.outpolygon\n thispolygon.leftlinecontinues = leftlinecontinues\n thispolygon.rightlinecontinues = rightlinecontinues\n prevcontinuedindexes.add(ii)\n }\n break\n }\n }\n } // if(!prevcontinuedindexes.has(ii))\n } // for ii\n } // for i\n for (let ii = 0; ii < prevoutpolygonrow.length; ii++) {\n if (!prevcontinuedindexes.has(ii)) {\n // polygon ends here\n // Finish the polygon with the last point(s):\n const prevpolygon = prevoutpolygonrow[ii]\n prevpolygon.outpolygon.rightpoints.push(prevpolygon.bottomright)\n if (vec2.distance(prevpolygon.bottomright, prevpolygon.bottomleft) > EPS) {\n // polygon ends with a horizontal line:\n prevpolygon.outpolygon.leftpoints.push(prevpolygon.bottomleft)\n }\n // reverse the left half so we get a counterclockwise circle:\n prevpolygon.outpolygon.leftpoints.reverse()\n const points2d = prevpolygon.outpolygon.rightpoints.concat(prevpolygon.outpolygon.leftpoints)\n const vertices3d = points2d.map((point2d) => orthobasis.to3D(point2d))\n const polygon = poly3.fromPointsAndPlane(vertices3d, plane) // TODO support shared\n\n // if we let empty polygon out, next retesselate will crash\n if (polygon.vertices.length) destpolygons.push(polygon)\n }\n }\n } // if(yindex > 0)\n for (let i = 0; i < newoutpolygonrow.length; i++) {\n const thispolygon = newoutpolygonrow[i]\n if (!thispolygon.outpolygon) {\n // polygon starts here:\n thispolygon.outpolygon = {\n leftpoints: [],\n rightpoints: []\n }\n thispolygon.outpolygon.leftpoints.push(thispolygon.topleft)\n if (vec2.distance(thispolygon.topleft, thispolygon.topright) > EPS) {\n // we have a horizontal line at the top:\n thispolygon.outpolygon.rightpoints.push(thispolygon.topright)\n }\n } else {\n // continuation of a previous row\n if (!thispolygon.leftlinecontinues) {\n thispolygon.outpolygon.leftpoints.push(thispolygon.topleft)\n }\n if (!thispolygon.rightlinecontinues) {\n thispolygon.outpolygon.rightpoints.push(thispolygon.topright)\n }\n }\n }\n prevoutpolygonrow = newoutpolygonrow\n } // for yindex\n return destpolygons\n}\n\nmodule.exports = reTesselateCoplanarPolygons\n","const geom3 = require('../../geometries/geom3')\nconst poly3 = require('../../geometries/poly3')\nconst { NEPS } = require('../../maths/constants')\nconst reTesselateCoplanarPolygons = require('./reTesselateCoplanarPolygons')\n\n/*\n After boolean operations all coplanar polygon fragments are joined by a retesselating\n operation. geom3.reTesselate(geom).\n Retesselation is done through a linear sweep over the polygon surface.\n The sweep line passes over the y coordinates of all vertices in the polygon.\n Polygons are split at each sweep line, and the fragments are joined horizontally and vertically into larger polygons\n (making sure that we will end up with convex polygons).\n*/\nconst retessellate = (geometry) => {\n if (geometry.isRetesselated) {\n return geometry\n }\n\n const polygons = geom3.toPolygons(geometry).map((polygon, index) => ({ vertices: polygon.vertices, plane: poly3.plane(polygon), index: index }))\n const classified = classifyPolygons(polygons)\n\n const destPolygons = []\n classified.forEach((group) => {\n if (Array.isArray(group)) {\n const reTessellateCoplanarPolygons = reTesselateCoplanarPolygons(group)\n destPolygons.push(...reTessellateCoplanarPolygons)\n } else {\n destPolygons.push(group)\n }\n })\n\n const result = geom3.create(destPolygons)\n result.isRetesselated = true\n\n return result\n}\n\nconst classifyPolygons = (polygons) => {\n let clusters = [polygons] // a cluster is an array of potentially coplanar polygons\n const nonCoplanar = [] // polygons that are known to be non-coplanar\n // go through each component of the plane starting with the last one (the distance from origin)\n for (let component = 3; component >= 0; component--) {\n const maybeCoplanar = []\n const tolerance = component === 3 ? 0.000000015 : NEPS\n clusters.forEach((cluster) => {\n // sort the cluster by the current component\n cluster.sort(byPlaneComponent(component, tolerance))\n // iterate through the cluster and check if there are polygons which are not coplanar with the others\n // or if there are sub-clusters of coplanar polygons\n let startIndex = 0\n for (let i = 1; i < cluster.length; i++) {\n // if there's a difference larger than the tolerance, split the cluster\n if (cluster[i].plane[component] - cluster[startIndex].plane[component] > tolerance) {\n // if there's a single polygon it's definitely not coplanar with any others\n if (i - startIndex === 1) {\n nonCoplanar.push(cluster[startIndex])\n } else { // we have a new sub cluster of potentially coplanar polygons\n maybeCoplanar.push(cluster.slice(startIndex, i))\n }\n startIndex = i\n }\n }\n // handle the last elements of the cluster\n if (cluster.length - startIndex === 1) {\n nonCoplanar.push(cluster[startIndex])\n } else {\n maybeCoplanar.push(cluster.slice(startIndex))\n }\n })\n // replace previous clusters with the new ones\n clusters = maybeCoplanar\n }\n // restore the original order of the polygons\n const result = []\n // polygons inside the cluster should already be sorted by index\n clusters.forEach((cluster) => {\n if (cluster[0]) result[cluster[0].index] = cluster\n })\n nonCoplanar.forEach((polygon) => { result[polygon.index] = polygon })\n\n return result\n}\n\nconst byPlaneComponent = (component, tolerance) => (a, b) => {\n if (a.plane[component] - b.plane[component] > tolerance) {\n return 1\n } else if (b.plane[component] - a.plane[component] > tolerance) {\n return -1\n }\n return 0\n}\n\nmodule.exports = retessellate\n","const flatten = require('../../utils/flatten')\n\nconst vec2 = require('../../maths/vec2')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\nconst path2 = require('../../geometries/path2')\n\nconst measureEpsilon = require('../../measurements/measureEpsilon')\n\nconst snapPolygons = require('./snapPolygons')\n\nconst snapPath2 = (geometry) => {\n const epsilon = measureEpsilon(geometry)\n const points = path2.toPoints(geometry)\n const newpoints = points.map((point) => vec2.snap(vec2.create(), point, epsilon))\n // snap can produce duplicate points, remove those\n return path2.create(newpoints)\n}\n\nconst snapGeom2 = (geometry) => {\n const epsilon = measureEpsilon(geometry)\n const sides = geom2.toSides(geometry)\n let newsides = sides.map((side) => [vec2.snap(vec2.create(), side[0], epsilon), vec2.snap(vec2.create(), side[1], epsilon)])\n // snap can produce sides with zero (0) length, remove those\n newsides = newsides.filter((side) => !vec2.equals(side[0], side[1]))\n return geom2.create(newsides)\n}\n\nconst snapGeom3 = (geometry) => {\n const epsilon = measureEpsilon(geometry)\n const polygons = geom3.toPolygons(geometry)\n const newpolygons = snapPolygons(epsilon, polygons)\n return geom3.create(newpolygons)\n}\n\n/**\n * Snap the given geometries to the overall precision (epsilon) of the geometry.\n * @see measurements.measureEpsilon()\n * @param {...Object} geometries - the geometries to snap\n * @return {Object|Array} the snapped geometry, or a list of snapped geometries\n * @alias module:modeling/modifiers.snap\n */\nconst snap = (...geometries) => {\n geometries = flatten(geometries)\n if (geometries.length === 0) throw new Error('wrong number of arguments')\n\n const results = geometries.map((geometry) => {\n if (path2.isA(geometry)) return snapPath2(geometry)\n if (geom2.isA(geometry)) return snapGeom2(geometry)\n if (geom3.isA(geometry)) return snapGeom3(geometry)\n return geometry\n })\n return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = snap\n","const vec3 = require('../../maths/vec3')\n\nconst poly3 = require('../../geometries/poly3')\n\nconst isValidPoly3 = (epsilon, polygon) => {\n const area = Math.abs(poly3.measureArea(polygon))\n return (Number.isFinite(area) && area > epsilon)\n}\n\n/*\n * Snap the given list of polygons to the epsilon.\n */\nconst snapPolygons = (epsilon, polygons) => {\n let newpolygons = polygons.map((polygon) => {\n const snapvertices = polygon.vertices.map((vertice) => vec3.snap(vec3.create(), vertice, epsilon))\n // only retain unique vertices\n const newvertices = []\n for (let i = 0; i < snapvertices.length; i++) {\n const j = (i + 1) % snapvertices.length\n if (!vec3.equals(snapvertices[i], snapvertices[j])) newvertices.push(snapvertices[i])\n }\n const newpolygon = poly3.create(newvertices)\n if (polygon.color) newpolygon.color = polygon.color\n return newpolygon\n })\n // snap can produce polygons with zero (0) area, remove those\n const epsilonArea = (epsilon * epsilon * Math.sqrt(3) / 4)\n newpolygons = newpolygons.filter((polygon) => isValidPoly3(epsilonArea, polygon))\n return newpolygons\n}\n\nmodule.exports = snapPolygons\n","const vec3 = require('../../maths/vec3')\nconst poly3 = require('../../geometries/poly3')\n\nconst triangulatePolygon = (epsilon, polygon, triangles) => {\n const nv = polygon.vertices.length\n if (nv > 3) {\n if (nv > 4) {\n // split the polygon using a midpoint\n const midpoint = [0, 0, 0]\n polygon.vertices.forEach((vertice) => vec3.add(midpoint, midpoint, vertice))\n vec3.snap(midpoint, vec3.divide(midpoint, midpoint, [nv, nv, nv]), epsilon)\n for (let i = 0; i < nv; i++) {\n const poly = poly3.create([midpoint, polygon.vertices[i], polygon.vertices[(i + 1) % nv]])\n if (polygon.color) poly.color = polygon.color\n triangles.push(poly)\n }\n return\n }\n // exactly 4 vertices, use simple triangulation\n const poly0 = poly3.create([polygon.vertices[0], polygon.vertices[1], polygon.vertices[2]])\n const poly1 = poly3.create([polygon.vertices[0], polygon.vertices[2], polygon.vertices[3]])\n if (polygon.color) {\n poly0.color = polygon.color\n poly1.color = polygon.color\n }\n triangles.push(poly0, poly1)\n return\n }\n // exactly 3 vertices, so return the original\n triangles.push(polygon)\n}\n\n/*\n * Convert the given polygons into a list of triangles (polygons with 3 vertices).\n * NOTE: this is possible because poly3 is CONVEX by definition\n */\nconst triangulatePolygons = (epsilon, polygons) => {\n const triangles = []\n polygons.forEach((polygon) => {\n triangulatePolygon(epsilon, polygon, triangles)\n })\n return triangles\n}\n\nmodule.exports = triangulatePolygons\n","const flatten = require('../../utils/flatten')\nconst padArrayToLength = require('../../utils/padArrayToLength')\nconst measureAggregateBoundingBox = require('../../measurements/measureAggregateBoundingBox')\nconst { translate } = require('./translate')\n\nconst validateOptions = (options) => {\n if (!Array.isArray(options.modes) || options.modes.length > 3) throw new Error('align(): modes must be an array of length <= 3')\n options.modes = padArrayToLength(options.modes, 'none', 3)\n if (options.modes.filter((mode) => ['center', 'max', 'min', 'none'].includes(mode)).length !== 3) throw new Error('align(): all modes must be one of \"center\", \"max\" or \"min\"')\n\n if (!Array.isArray(options.relativeTo) || options.relativeTo.length > 3) throw new Error('align(): relativeTo must be an array of length <= 3')\n options.relativeTo = padArrayToLength(options.relativeTo, 0, 3)\n if (options.relativeTo.filter((alignVal) => (Number.isFinite(alignVal) || alignVal == null)).length !== 3) throw new Error('align(): all relativeTo values must be a number, or null.')\n\n if (typeof options.grouped !== 'boolean') throw new Error('align(): grouped must be a boolean value.')\n\n return options\n}\n\nconst populateRelativeToFromBounds = (relativeTo, modes, bounds) => {\n for (let i = 0; i < 3; i++) {\n if (relativeTo[i] == null) {\n if (modes[i] === 'center') {\n relativeTo[i] = (bounds[0][i] + bounds[1][i]) / 2\n } else if (modes[i] === 'max') {\n relativeTo[i] = bounds[1][i]\n } else if (modes[i] === 'min') {\n relativeTo[i] = bounds[0][i]\n }\n }\n }\n return relativeTo\n}\n\nconst alignGeometries = (geometry, modes, relativeTo) => {\n const bounds = measureAggregateBoundingBox(geometry)\n const translation = [0, 0, 0]\n for (let i = 0; i < 3; i++) {\n if (modes[i] === 'center') {\n translation[i] = relativeTo[i] - (bounds[0][i] + bounds[1][i]) / 2\n } else if (modes[i] === 'max') {\n translation[i] = relativeTo[i] - bounds[1][i]\n } else if (modes[i] === 'min') {\n translation[i] = relativeTo[i] - bounds[0][i]\n }\n }\n\n return translate(translation, geometry)\n}\n\n/**\n * Align the boundaries of the given geometries using the given options.\n * @param {Object} options - options for aligning\n * @param {Array} [options.modes = ['center', 'center', 'min']] - the point on the geometries to align to for each axis. Valid options are \"center\", \"max\", \"min\", and \"none\".\n * @param {Array} [options.relativeTo = [0,0,0]] - The point one each axis on which to align the geometries upon. If the value is null, then the corresponding value from the group's bounding box is used.\n * @param {Boolean} [options.grouped = false] - if true, transform all geometries by the same amount, maintaining the relative positions to each other.\n * @param {...Object} geometries - the geometries to align\n * @return {Object|Array} the aligned geometry, or a list of aligned geometries\n * @alias module:modeling/transforms.align\n *\n * @example\n * let alignedGeometries = align({modes: ['min', 'center', 'none'], relativeTo: [10, null, 10], grouped: true }, geometries)\n */\nconst align = (options, ...geometries) => {\n const defaults = {\n modes: ['center', 'center', 'min'],\n relativeTo: [0, 0, 0],\n grouped: false\n }\n options = Object.assign({}, defaults, options)\n\n options = validateOptions(options)\n let { modes, relativeTo, grouped } = options\n geometries = flatten(geometries)\n if (geometries.length === 0) throw new Error('align(): No geometries were provided to act upon')\n\n if (relativeTo.filter((val) => val == null).length) {\n const bounds = measureAggregateBoundingBox(geometries)\n relativeTo = populateRelativeToFromBounds(relativeTo, modes, bounds)\n }\n if (grouped) {\n geometries = alignGeometries(geometries, modes, relativeTo)\n } else {\n geometries = geometries.map((geometry) => alignGeometries(geometry, modes, relativeTo))\n }\n return geometries.length === 1 ? geometries[0] : geometries\n}\n\nmodule.exports = align\n","const flatten = require('../../utils/flatten')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\nconst path2 = require('../../geometries/path2')\n\nconst measureBoundingBox = require('../../measurements/measureBoundingBox')\n\nconst { translate } = require('./translate')\n\nconst centerGeometry = (options, object) => {\n const defaults = {\n axes: [true, true, true],\n relativeTo: [0, 0, 0]\n }\n const { axes, relativeTo } = Object.assign({}, defaults, options)\n\n const bounds = measureBoundingBox(object)\n const offset = [0, 0, 0]\n if (axes[0]) offset[0] = relativeTo[0] - (bounds[0][0] + ((bounds[1][0] - bounds[0][0]) / 2))\n if (axes[1]) offset[1] = relativeTo[1] - (bounds[0][1] + ((bounds[1][1] - bounds[0][1]) / 2))\n if (axes[2]) offset[2] = relativeTo[2] - (bounds[0][2] + ((bounds[1][2] - bounds[0][2]) / 2))\n return translate(offset, object)\n}\n\n/**\n * Center the given objects using the given options.\n * @param {Object} options - options for centering\n * @param {Array} [options.axes=[true,true,true]] - axis of which to center, true or false\n * @param {Array} [options.relativeTo=[0,0,0]] - relative point of which to center the objects\n * @param {...Object} objects - the objects to center\n * @return {Object|Array} the centered object, or a list of centered objects\n * @alias module:modeling/transforms.center\n *\n * @example\n * let myshape = center({axes: [true,false,false]}, sphere()) // center about the X axis\n */\nconst center = (options, ...objects) => {\n const defaults = {\n axes: [true, true, true],\n relativeTo: [0, 0, 0]\n // TODO: Add additional 'methods' of centering: midpoint, centroid\n }\n const { axes, relativeTo } = Object.assign({}, defaults, options)\n\n objects = flatten(objects)\n if (objects.length === 0) throw new Error('wrong number of arguments')\n if (relativeTo.length !== 3) throw new Error('relativeTo must be an array of length 3')\n\n options = { axes, relativeTo }\n\n const results = objects.map((object) => {\n if (path2.isA(object)) return centerGeometry(options, object)\n if (geom2.isA(object)) return centerGeometry(options, object)\n if (geom3.isA(object)) return centerGeometry(options, object)\n return object\n })\n return results.length === 1 ? results[0] : results\n}\n\n/**\n * Center the given objects about the X axis.\n * @param {...Object} objects - the objects to center\n * @return {Object|Array} the centered object, or a list of centered objects\n * @alias module:modeling/transforms.centerX\n */\nconst centerX = (...objects) => center({ axes: [true, false, false] }, objects)\n\n/**\n * Center the given objects about the Y axis.\n * @param {...Object} objects - the objects to center\n * @return {Object|Array} the centered object, or a list of centered objects\n * @alias module:modeling/transforms.centerY\n */\nconst centerY = (...objects) => center({ axes: [false, true, false] }, objects)\n\n/**\n * Center the given objects about the Z axis.\n * @param {...Object} objects - the objects to center\n * @return {Object|Array} the centered object, or a list of centered objects\n * @alias module:modeling/transforms.centerZ\n */\nconst centerZ = (...objects) => center({ axes: [false, false, true] }, objects)\n\nmodule.exports = {\n center,\n centerX,\n centerY,\n centerZ\n}\n","/**\n * All shapes (primitives or the results of operations) can be transformed, such as scaled or rotated.\n * In all cases, the function returns the results, and never changes the original shapes.\n * @module modeling/transforms\n * @example\n * const { center, rotateX, translate } = require('@jscad/modeling').transforms\n */\nmodule.exports = {\n align: require('./align'),\n\n center: require('./center').center,\n centerX: require('./center').centerX,\n centerY: require('./center').centerY,\n centerZ: require('./center').centerZ,\n\n mirror: require('./mirror').mirror,\n mirrorX: require('./mirror').mirrorX,\n mirrorY: require('./mirror').mirrorY,\n mirrorZ: require('./mirror').mirrorZ,\n\n rotate: require('./rotate').rotate,\n rotateX: require('./rotate').rotateX,\n rotateY: require('./rotate').rotateY,\n rotateZ: require('./rotate').rotateZ,\n\n scale: require('./scale').scale,\n scaleX: require('./scale').scaleX,\n scaleY: require('./scale').scaleY,\n scaleZ: require('./scale').scaleZ,\n\n transform: require('./transform'),\n\n translate: require('./translate').translate,\n translateX: require('./translate').translateX,\n translateY: require('./translate').translateY,\n translateZ: require('./translate').translateZ\n}\n","const flatten = require('../../utils/flatten')\n\nconst mat4 = require('../../maths/mat4')\nconst plane = require('../../maths/plane')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\nconst path2 = require('../../geometries/path2')\n\n/**\n * Mirror the given objects using the given options.\n * @param {Object} options - options for mirror\n * @param {Array} [options.origin=[0,0,0]] - the origin of the plane\n * @param {Array} [options.normal=[0,0,1]] - the normal vector of the plane\n * @param {...Object} objects - the objects to mirror\n * @return {Object|Array} the mirrored object, or a list of mirrored objects\n * @alias module:modeling/transforms.mirror\n *\n * @example\n * let myshape = mirror({normal: [0,0,10]}, cube({center: [0,0,15], radius: [20, 25, 5]}))\n */\nconst mirror = (options, ...objects) => {\n const defaults = {\n origin: [0, 0, 0],\n normal: [0, 0, 1] // Z axis\n }\n const { origin, normal } = Object.assign({}, defaults, options)\n\n objects = flatten(objects)\n if (objects.length === 0) throw new Error('wrong number of arguments')\n\n const planeOfMirror = plane.fromNormalAndPoint(plane.create(), normal, origin)\n // verify the plane, i.e. check that the given normal was valid\n if (Number.isNaN(planeOfMirror[0])) {\n throw new Error('the given origin and normal do not define a proper plane')\n }\n\n const matrix = mat4.mirrorByPlane(mat4.create(), planeOfMirror)\n\n const results = objects.map((object) => {\n if (path2.isA(object)) return path2.transform(matrix, object)\n if (geom2.isA(object)) return geom2.transform(matrix, object)\n if (geom3.isA(object)) return geom3.transform(matrix, object)\n return object\n })\n return results.length === 1 ? results[0] : results\n}\n\n/**\n * Mirror the given objects about the X axis.\n * @param {...Object} objects - the objects to mirror\n * @return {Object|Array} the mirrored object, or a list of mirrored objects\n * @alias module:modeling/transforms.mirrorX\n */\nconst mirrorX = (...objects) => mirror({ normal: [1, 0, 0] }, objects)\n\n/**\n * Mirror the given objects about the Y axis.\n * @param {...Object} objects - the geometries to mirror\n * @return {Object|Array} the mirrored object, or a list of mirrored objects\n * @alias module:modeling/transforms.mirrorY\n */\nconst mirrorY = (...objects) => mirror({ normal: [0, 1, 0] }, objects)\n\n/**\n * Mirror the given objects about the Z axis.\n * @param {...Object} objects - the geometries to mirror\n * @return {Object|Array} the mirrored object, or a list of mirrored objects\n * @alias module:modeling/transforms.mirrorZ\n */\nconst mirrorZ = (...objects) => mirror({ normal: [0, 0, 1] }, objects)\n\nmodule.exports = {\n mirror,\n mirrorX,\n mirrorY,\n mirrorZ\n}\n","const flatten = require('../../utils/flatten')\n\nconst mat4 = require('../../maths/mat4')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\nconst path2 = require('../../geometries/path2')\n\n/**\n * Rotate the given objects using the given options.\n * @param {Array} angles - angle (RADIANS) of rotations about X, Y, and Z axis\n * @param {...Object} objects - the objects to rotate\n * @return {Object|Array} the rotated object, or a list of rotated objects\n * @alias module:modeling/transforms.rotate\n *\n * @example\n * const newsphere = rotate([TAU / 8, 0, 0], sphere())\n */\nconst rotate = (angles, ...objects) => {\n if (!Array.isArray(angles)) throw new Error('angles must be an array')\n\n objects = flatten(objects)\n if (objects.length === 0) throw new Error('wrong number of arguments')\n\n // adjust the angles if necessary\n angles = angles.slice() // don't modify the original\n while (angles.length < 3) angles.push(0)\n\n const yaw = angles[2]\n const pitch = angles[1]\n const roll = angles[0]\n\n const matrix = mat4.fromTaitBryanRotation(mat4.create(), yaw, pitch, roll)\n\n const results = objects.map((object) => {\n if (path2.isA(object)) return path2.transform(matrix, object)\n if (geom2.isA(object)) return geom2.transform(matrix, object)\n if (geom3.isA(object)) return geom3.transform(matrix, object)\n return object\n })\n return results.length === 1 ? results[0] : results\n}\n\n/**\n * Rotate the given objects about the X axis, using the given options.\n * @param {Number} angle - angle (RADIANS) of rotations about X\n * @param {...Object} objects - the objects to rotate\n * @return {Object|Array} the rotated object, or a list of rotated objects\n * @alias module:modeling/transforms.rotateX\n */\nconst rotateX = (angle, ...objects) => rotate([angle, 0, 0], objects)\n\n/**\n * Rotate the given objects about the Y axis, using the given options.\n * @param {Number} angle - angle (RADIANS) of rotations about Y\n * @param {...Object} objects - the objects to rotate\n * @return {Object|Array} the rotated object, or a list of rotated objects\n * @alias module:modeling/transforms.rotateY\n */\nconst rotateY = (angle, ...objects) => rotate([0, angle, 0], objects)\n\n/**\n * Rotate the given objects about the Z axis, using the given options.\n * @param {Number} angle - angle (RADIANS) of rotations about Z\n * @param {...Object} objects - the objects to rotate\n * @return {Object|Array} the rotated object, or a list of rotated objects\n * @alias module:modeling/transforms.rotateZ\n */\nconst rotateZ = (angle, ...objects) => rotate([0, 0, angle], objects)\n\nmodule.exports = {\n rotate,\n rotateX,\n rotateY,\n rotateZ\n}\n","const flatten = require('../../utils/flatten')\n\nconst mat4 = require('../../maths/mat4')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\nconst path2 = require('../../geometries/path2')\n\n/**\n * Scale the given objects using the given options.\n * @param {Array} factors - X, Y, Z factors by which to scale the objects\n * @param {...Object} objects - the objects to scale\n * @return {Object|Array} the scaled object, or a list of scaled objects\n * @alias module:modeling/transforms.scale\n *\n * @example\n * let myshape = scale([5, 0, 10], sphere())\n */\nconst scale = (factors, ...objects) => {\n if (!Array.isArray(factors)) throw new Error('factors must be an array')\n\n objects = flatten(objects)\n if (objects.length === 0) throw new Error('wrong number of arguments')\n\n // adjust the factors if necessary\n factors = factors.slice() // don't modify the original\n while (factors.length < 3) factors.push(1)\n\n if (factors[0] <= 0 || factors[1] <= 0 || factors[2] <= 0) throw new Error('factors must be positive')\n\n const matrix = mat4.fromScaling(mat4.create(), factors)\n\n const results = objects.map((object) => {\n if (path2.isA(object)) return path2.transform(matrix, object)\n if (geom2.isA(object)) return geom2.transform(matrix, object)\n if (geom3.isA(object)) return geom3.transform(matrix, object)\n return object\n })\n return results.length === 1 ? results[0] : results\n}\n\n/**\n * Scale the given objects about the X axis using the given options.\n * @param {Number} factor - X factor by which to scale the objects\n * @param {...Object} objects - the objects to scale\n * @return {Object|Array} the scaled object, or a list of scaled objects\n * @alias module:modeling/transforms.scaleX\n */\nconst scaleX = (factor, ...objects) => scale([factor, 1, 1], objects)\n\n/**\n * Scale the given objects about the Y axis using the given options.\n * @param {Number} factor - Y factor by which to scale the objects\n * @param {...Object} objects - the objects to scale\n * @return {Object|Array} the scaled object, or a list of scaled objects\n * @alias module:modeling/transforms.scaleY\n */\nconst scaleY = (factor, ...objects) => scale([1, factor, 1], objects)\n\n/**\n * Scale the given objects about the Z axis using the given options.\n * @param {Number} factor - Z factor by which to scale the objects\n * @param {...Object} objects - the objects to scale\n * @return {Object|Array} the scaled object, or a list of scaled objects\n * @alias module:modeling/transforms.scaleZ\n */\nconst scaleZ = (factor, ...objects) => scale([1, 1, factor], objects)\n\nmodule.exports = {\n scale,\n scaleX,\n scaleY,\n scaleZ\n}\n","const flatten = require('../../utils/flatten')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\nconst path2 = require('../../geometries/path2')\n\n/**\n * Transform the given objects using the given matrix.\n * @param {mat4} matrix - a transformation matrix\n * @param {...Object} objects - the objects to transform\n * @return {Object|Array} the transformed object, or a list of transformed objects\n * @alias module:modeling/transforms.transform\n *\n * @example\n * const newsphere = transform(mat4.rotateX(TAU / 8), sphere())\n */\nconst transform = (matrix, ...objects) => {\n // TODO how to check that the matrix is REAL?\n\n objects = flatten(objects)\n if (objects.length === 0) throw new Error('wrong number of arguments')\n\n const results = objects.map((object) => {\n if (path2.isA(object)) return path2.transform(matrix, object)\n if (geom2.isA(object)) return geom2.transform(matrix, object)\n if (geom3.isA(object)) return geom3.transform(matrix, object)\n return object\n })\n return results.length === 1 ? results[0] : results\n}\n\nmodule.exports = transform\n","const flatten = require('../../utils/flatten')\n\nconst mat4 = require('../../maths/mat4')\n\nconst geom2 = require('../../geometries/geom2')\nconst geom3 = require('../../geometries/geom3')\nconst path2 = require('../../geometries/path2')\n\n/**\n * Translate the given objects using the given options.\n * @param {Array} offset - offset (vector) of which to translate the objects\n * @param {...Object} objects - the objects to translate\n * @return {Object|Array} the translated object, or a list of translated objects\n * @alias module:modeling/transforms.translate\n *\n * @example\n * const newsphere = translate([5, 0, 10], sphere())\n */\nconst translate = (offset, ...objects) => {\n if (!Array.isArray(offset)) throw new Error('offset must be an array')\n\n objects = flatten(objects)\n if (objects.length === 0) throw new Error('wrong number of arguments')\n\n // adjust the offset if necessary\n offset = offset.slice() // don't modify the original\n while (offset.length < 3) offset.push(0)\n\n const matrix = mat4.fromTranslation(mat4.create(), offset)\n\n const results = objects.map((object) => {\n if (path2.isA(object)) return path2.transform(matrix, object)\n if (geom2.isA(object)) return geom2.transform(matrix, object)\n if (geom3.isA(object)) return geom3.transform(matrix, object)\n return object\n })\n return results.length === 1 ? results[0] : results\n}\n\n/**\n * Translate the given objects along the X axis using the given options.\n * @param {Number} offset - X offset of which to translate the objects\n * @param {...Object} objects - the objects to translate\n * @return {Object|Array} the translated object, or a list of translated objects\n * @alias module:modeling/transforms.translateX\n */\nconst translateX = (offset, ...objects) => translate([offset, 0, 0], objects)\n\n/**\n * Translate the given objects along the Y axis using the given options.\n * @param {Number} offset - Y offset of which to translate the geometries\n * @param {...Object} objects - the objects to translate\n * @return {Object|Array} the translated object, or a list of translated objects\n * @alias module:modeling/transforms.translateY\n */\nconst translateY = (offset, ...objects) => translate([0, offset, 0], objects)\n\n/**\n * Translate the given objects along the Z axis using the given options.\n * @param {Number} offset - Z offset of which to translate the geometries\n * @param {...Object} objects - the objects to translate\n * @return {Object|Array} the translated object, or a list of translated objects\n * @alias module:modeling/transforms.translateZ\n */\nconst translateZ = (offset, ...objects) => translate([0, 0, offset], objects)\n\nmodule.exports = {\n translate,\n translateX,\n translateY,\n translateZ\n}\n","const { EPS, TAU } = require('../maths/constants')\n\nconst vec2 = require('../maths/vec2')\n\nconst path2 = require('../geometries/path2')\n\nconst { isGT, isGTE, isNumberArray } = require('./commonChecks')\n\n/**\n * Construct an arc in two dimensional space where all points are at the same distance from the center.\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0]] - center of arc\n * @param {Number} [options.radius=1] - radius of arc\n * @param {Number} [options.startAngle=0] - starting angle of the arc, in radians\n * @param {Number} [options.endAngle=TAU] - ending angle of the arc, in radians\n * @param {Number} [options.segments=32] - number of segments to create per full rotation\n * @param {Boolean} [options.makeTangent=false] - adds line segments at both ends of the arc to ensure that the gradients at the edges are tangent\n * @returns {path2} new 2D path\n * @alias module:modeling/primitives.arc\n */\nconst arc = (options) => {\n const defaults = {\n center: [0, 0],\n radius: 1,\n startAngle: 0,\n endAngle: TAU,\n makeTangent: false,\n segments: 32\n }\n let { center, radius, startAngle, endAngle, makeTangent, segments } = Object.assign({}, defaults, options)\n\n if (!isNumberArray(center, 2)) throw new Error('center must be an array of X and Y values')\n if (!isGT(radius, 0)) throw new Error('radius must be greater than zero')\n if (!isGTE(startAngle, 0)) throw new Error('startAngle must be positive')\n if (!isGTE(endAngle, 0)) throw new Error('endAngle must be positive')\n if (!isGTE(segments, 4)) throw new Error('segments must be four or more')\n\n startAngle = startAngle % TAU\n endAngle = endAngle % TAU\n\n let rotation = TAU\n if (startAngle < endAngle) {\n rotation = endAngle - startAngle\n }\n if (startAngle > endAngle) {\n rotation = endAngle + (TAU - startAngle)\n }\n\n const minangle = Math.acos(((radius * radius) + (radius * radius) - (EPS * EPS)) / (2 * radius * radius))\n\n const centerv = vec2.clone(center)\n let point\n const pointArray = []\n if (rotation < minangle) {\n // there is no rotation, just a single point\n point = vec2.fromAngleRadians(vec2.create(), startAngle)\n vec2.scale(point, point, radius)\n vec2.add(point, point, centerv)\n pointArray.push(point)\n } else {\n // note: add one additional step to acheive full rotation\n const numsteps = Math.max(1, Math.floor(segments * (rotation / TAU))) + 1\n let edgestepsize = numsteps * 0.5 / rotation // step size for half a degree\n if (edgestepsize > 0.25) edgestepsize = 0.25\n\n const totalsteps = makeTangent ? (numsteps + 2) : numsteps\n for (let i = 0; i <= totalsteps; i++) {\n let step = i\n if (makeTangent) {\n step = (i - 1) * (numsteps - 2 * edgestepsize) / numsteps + edgestepsize\n if (step < 0) step = 0\n if (step > numsteps) step = numsteps\n }\n const angle = startAngle + (step * (rotation / numsteps))\n point = vec2.fromAngleRadians(vec2.create(), angle)\n vec2.scale(point, point, radius)\n vec2.add(point, point, centerv)\n pointArray.push(point)\n }\n }\n return path2.fromPoints({ closed: false }, pointArray)\n}\n\nmodule.exports = arc\n","const { TAU } = require('../maths/constants')\n\nconst ellipse = require('./ellipse')\n\nconst { isGTE } = require('./commonChecks')\n\n/**\n * Construct a circle in two dimensional space where all points are at the same distance from the center.\n * @see [ellipse]{@link module:modeling/primitives.ellipse} for more options\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0]] - center of circle\n * @param {Number} [options.radius=1] - radius of circle\n * @param {Number} [options.startAngle=0] - start angle of circle, in radians\n * @param {Number} [options.endAngle=TAU] - end angle of circle, in radians\n * @param {Number} [options.segments=32] - number of segments to create per full rotation\n * @returns {geom2} new 2D geometry\n * @alias module:modeling/primitives.circle\n * @example\n * let myshape = circle({radius: 10})\n */\nconst circle = (options) => {\n const defaults = {\n center: [0, 0],\n radius: 1,\n startAngle: 0,\n endAngle: TAU,\n segments: 32\n }\n let { center, radius, startAngle, endAngle, segments } = Object.assign({}, defaults, options)\n\n if (!isGTE(radius, 0)) throw new Error('radius must be positive')\n\n radius = [radius, radius]\n\n return ellipse({ center, radius, startAngle, endAngle, segments })\n}\n\nmodule.exports = circle\n","// verify that the array has the given dimension, and contains Number values\nconst isNumberArray = (array, dimension) => {\n if (Array.isArray(array) && array.length >= dimension) {\n return array.every((n) => Number.isFinite(n))\n }\n return false\n}\n\n// verify that the value is a Number greater than the constant\nconst isGT = (value, constant) => (Number.isFinite(value) && value > constant)\n\n// verify that the value is a Number greater than or equal to the constant\nconst isGTE = (value, constant) => (Number.isFinite(value) && value >= constant)\n\nmodule.exports = {\n isNumberArray,\n isGT,\n isGTE\n}\n","const cuboid = require('./cuboid')\n\nconst { isGTE } = require('./commonChecks')\n\n/**\n * Construct an axis-aligned solid cube in three dimensional space with six square faces.\n * @see [cuboid]{@link module:modeling/primitives.cuboid} for more options\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0,0]] - center of cube\n * @param {Number} [options.size=2] - dimension of cube\n * @returns {geom3} new 3D geometry\n * @alias module:modeling/primitives.cube\n * @example\n * let myshape = cube({size: 10})\n */\nconst cube = (options) => {\n const defaults = {\n center: [0, 0, 0],\n size: 2\n }\n let { center, size } = Object.assign({}, defaults, options)\n\n if (!isGTE(size, 0)) throw new Error('size must be positive')\n\n size = [size, size, size]\n\n return cuboid({ center, size })\n}\n\nmodule.exports = cube\n","const geom3 = require('../geometries/geom3')\nconst poly3 = require('../geometries/poly3')\n\nconst { isNumberArray } = require('./commonChecks')\n\n/**\n * Construct an axis-aligned solid cuboid in three dimensional space.\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0,0]] - center of cuboid\n * @param {Array} [options.size=[2,2,2]] - dimensions of cuboid; width, depth, height\n * @returns {geom3} new 3D geometry\n * @alias module:modeling/primitives.cuboid\n *\n * @example\n * let myshape = cuboid({size: [5, 10, 5]})\n */\nconst cuboid = (options) => {\n const defaults = {\n center: [0, 0, 0],\n size: [2, 2, 2]\n }\n const { center, size } = Object.assign({}, defaults, options)\n\n if (!isNumberArray(center, 3)) throw new Error('center must be an array of X, Y and Z values')\n if (!isNumberArray(size, 3)) throw new Error('size must be an array of width, depth and height values')\n if (!size.every((n) => n >= 0)) throw new Error('size values must be positive')\n\n // if any size is zero return empty geometry\n if (size[0] === 0 || size[1] === 0 || size[2] === 0) return geom3.create()\n\n const result = geom3.create(\n // adjust a basic shape to size\n [\n [[0, 4, 6, 2], [-1, 0, 0]],\n [[1, 3, 7, 5], [+1, 0, 0]],\n [[0, 1, 5, 4], [0, -1, 0]],\n [[2, 6, 7, 3], [0, +1, 0]],\n [[0, 2, 3, 1], [0, 0, -1]],\n [[4, 5, 7, 6], [0, 0, +1]]\n ].map((info) => {\n const points = info[0].map((i) => {\n const pos = [\n center[0] + (size[0] / 2) * (2 * !!(i & 1) - 1),\n center[1] + (size[1] / 2) * (2 * !!(i & 2) - 1),\n center[2] + (size[2] / 2) * (2 * !!(i & 4) - 1)\n ]\n return pos\n })\n return poly3.create(points)\n })\n )\n return result\n}\n\nmodule.exports = cuboid\n","const geom3 = require('../geometries/geom3')\n\nconst cylinderElliptic = require('./cylinderElliptic')\n\nconst { isGTE } = require('./commonChecks')\n\n/**\n * Construct a Z axis-aligned cylinder in three dimensional space.\n * @see [cylinderElliptic]{@link module:modeling/primitives.cylinderElliptic} for more options\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0,0]] - center of cylinder\n * @param {Number} [options.height=2] - height of cylinder\n * @param {Number} [options.radius=1] - radius of cylinder (at both start and end)\n * @param {Number} [options.segments=32] - number of segments to create per full rotation\n * @returns {geom3} new geometry\n * @alias module:modeling/primitives.cylinder\n *\n * @example\n * let myshape = cylinder({height: 2, radius: 10})\n */\nconst cylinder = (options) => {\n const defaults = {\n center: [0, 0, 0],\n height: 2,\n radius: 1,\n segments: 32\n }\n const { center, height, radius, segments } = Object.assign({}, defaults, options)\n\n if (!isGTE(radius, 0)) throw new Error('radius must be positive')\n\n // if size is zero return empty geometry\n if (height === 0 || radius === 0) return geom3.create()\n\n const newoptions = {\n center,\n height,\n startRadius: [radius, radius],\n endRadius: [radius, radius],\n segments\n }\n\n return cylinderElliptic(newoptions)\n}\n\nmodule.exports = cylinder\n","const { EPS, TAU } = require('../maths/constants')\n\nconst vec3 = require('../maths/vec3')\n\nconst geom3 = require('../geometries/geom3')\nconst poly3 = require('../geometries/poly3')\n\nconst { sin, cos } = require('../maths/utils/trigonometry')\n\nconst { isGT, isGTE, isNumberArray } = require('./commonChecks')\n\n/**\n * Construct a Z axis-aligned elliptic cylinder in three dimensional space.\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0,0]] - center of cylinder\n * @param {Number} [options.height=2] - height of cylinder\n * @param {Array} [options.startRadius=[1,1]] - radius of rounded start, must be two dimensional array\n * @param {Number} [options.startAngle=0] - start angle of cylinder, in radians\n * @param {Array} [options.endRadius=[1,1]] - radius of rounded end, must be two dimensional array\n * @param {Number} [options.endAngle=TAU] - end angle of cylinder, in radians\n * @param {Number} [options.segments=32] - number of segments to create per full rotation\n * @returns {geom3} new geometry\n * @alias module:modeling/primitives.cylinderElliptic\n *\n * @example\n * let myshape = cylinderElliptic({height: 2, startRadius: [10,5], endRadius: [8,3]})\n */\nconst cylinderElliptic = (options) => {\n const defaults = {\n center: [0, 0, 0],\n height: 2,\n startRadius: [1, 1],\n startAngle: 0,\n endRadius: [1, 1],\n endAngle: TAU,\n segments: 32\n }\n let { center, height, startRadius, startAngle, endRadius, endAngle, segments } = Object.assign({}, defaults, options)\n\n if (!isNumberArray(center, 3)) throw new Error('center must be an array of X, Y and Z values')\n if (!isGT(height, 0)) throw new Error('height must be greater then zero')\n if (!isNumberArray(startRadius, 2)) throw new Error('startRadius must be an array of X and Y values')\n if (!startRadius.every((n) => n >= 0)) throw new Error('startRadius values must be positive')\n if (!isNumberArray(endRadius, 2)) throw new Error('endRadius must be an array of X and Y values')\n if (!endRadius.every((n) => n >= 0)) throw new Error('endRadius values must be positive')\n if (endRadius.every((n) => n === 0) && startRadius.every((n) => n === 0)) throw new Error('at least one radius must be positive')\n if (!isGTE(startAngle, 0)) throw new Error('startAngle must be positive')\n if (!isGTE(endAngle, 0)) throw new Error('endAngle must be positive')\n if (!isGTE(segments, 4)) throw new Error('segments must be four or more')\n\n startAngle = startAngle % TAU\n endAngle = endAngle % TAU\n\n let rotation = TAU\n if (startAngle < endAngle) {\n rotation = endAngle - startAngle\n }\n if (startAngle > endAngle) {\n rotation = endAngle + (TAU - startAngle)\n }\n\n const minradius = Math.min(startRadius[0], startRadius[1], endRadius[0], endRadius[1])\n const minangle = Math.acos(((minradius * minradius) + (minradius * minradius) - (EPS * EPS)) /\n (2 * minradius * minradius))\n if (rotation < minangle) throw new Error('startAngle and endAngle do not define a significant rotation')\n\n const slices = Math.floor(segments * (rotation / TAU))\n\n const start = vec3.fromValues(0, 0, -(height / 2))\n const end = vec3.fromValues(0, 0, height / 2)\n const ray = vec3.subtract(vec3.create(), end, start)\n\n const axisX = vec3.fromValues(1, 0, 0)\n const axisY = vec3.fromValues(0, 1, 0)\n\n const v1 = vec3.create()\n const v2 = vec3.create()\n const v3 = vec3.create()\n const point = (stack, slice, radius) => {\n const angle = slice * rotation + startAngle\n vec3.scale(v1, axisX, radius[0] * cos(angle))\n vec3.scale(v2, axisY, radius[1] * sin(angle))\n vec3.add(v1, v1, v2)\n\n vec3.scale(v3, ray, stack)\n vec3.add(v3, v3, start)\n return vec3.add(vec3.create(), v1, v3)\n }\n\n // adjust the points to center\n const fromPoints = (...points) => {\n const newpoints = points.map((point) => vec3.add(vec3.create(), point, center))\n return poly3.create(newpoints)\n }\n\n const polygons = []\n for (let i = 0; i < slices; i++) {\n const t0 = i / slices\n let t1 = (i + 1) / slices\n // fix rounding error when rotating TAU radians\n if (rotation === TAU && i === slices - 1) t1 = 0\n\n if (endRadius[0] === startRadius[0] && endRadius[1] === startRadius[1]) {\n polygons.push(fromPoints(start, point(0, t1, endRadius), point(0, t0, endRadius)))\n polygons.push(fromPoints(point(0, t1, endRadius), point(1, t1, endRadius), point(1, t0, endRadius), point(0, t0, endRadius)))\n polygons.push(fromPoints(end, point(1, t0, endRadius), point(1, t1, endRadius)))\n } else {\n if (startRadius[0] > 0 && startRadius[1] > 0) {\n polygons.push(fromPoints(start, point(0, t1, startRadius), point(0, t0, startRadius)))\n }\n if (startRadius[0] > 0 || startRadius[1] > 0) {\n polygons.push(fromPoints(point(0, t0, startRadius), point(0, t1, startRadius), point(1, t0, endRadius)))\n }\n if (endRadius[0] > 0 && endRadius[1] > 0) {\n polygons.push(fromPoints(end, point(1, t0, endRadius), point(1, t1, endRadius)))\n }\n if (endRadius[0] > 0 || endRadius[1] > 0) {\n polygons.push(fromPoints(point(1, t0, endRadius), point(0, t1, startRadius), point(1, t1, endRadius)))\n }\n }\n }\n if (rotation < TAU) {\n polygons.push(fromPoints(start, point(0, 0, startRadius), end))\n polygons.push(fromPoints(point(0, 0, startRadius), point(1, 0, endRadius), end))\n polygons.push(fromPoints(start, end, point(0, 1, startRadius)))\n polygons.push(fromPoints(point(0, 1, startRadius), end, point(1, 1, endRadius)))\n }\n const result = geom3.create(polygons)\n return result\n}\n\nmodule.exports = cylinderElliptic\n","const { EPS, TAU } = require('../maths/constants')\n\nconst vec2 = require('../maths/vec2')\n\nconst geom2 = require('../geometries/geom2')\n\nconst { sin, cos } = require('../maths/utils/trigonometry')\n\nconst { isGTE, isNumberArray } = require('./commonChecks')\n\n/**\n * Construct an axis-aligned ellipse in two dimensional space.\n * @see https://en.wikipedia.org/wiki/Ellipse\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0]] - center of ellipse\n * @param {Array} [options.radius=[1,1]] - radius of ellipse, along X and Y\n * @param {Number} [options.startAngle=0] - start angle of ellipse, in radians\n * @param {Number} [options.endAngle=TAU] - end angle of ellipse, in radians\n * @param {Number} [options.segments=32] - number of segments to create per full rotation\n * @returns {geom2} new 2D geometry\n * @alias module:modeling/primitives.ellipse\n * @example\n * let myshape = ellipse({radius: [5,10]})\n */\nconst ellipse = (options) => {\n const defaults = {\n center: [0, 0],\n radius: [1, 1],\n startAngle: 0,\n endAngle: TAU,\n segments: 32\n }\n let { center, radius, startAngle, endAngle, segments } = Object.assign({}, defaults, options)\n\n if (!isNumberArray(center, 2)) throw new Error('center must be an array of X and Y values')\n if (!isNumberArray(radius, 2)) throw new Error('radius must be an array of X and Y values')\n if (!radius.every((n) => n >= 0)) throw new Error('radius values must be positive')\n if (!isGTE(startAngle, 0)) throw new Error('startAngle must be positive')\n if (!isGTE(endAngle, 0)) throw new Error('endAngle must be positive')\n if (!isGTE(segments, 3)) throw new Error('segments must be three or more')\n\n // if any radius is zero return empty geometry\n if (radius[0] === 0 || radius[1] === 0) return geom2.create()\n\n startAngle = startAngle % TAU\n endAngle = endAngle % TAU\n\n let rotation = TAU\n if (startAngle < endAngle) {\n rotation = endAngle - startAngle\n }\n if (startAngle > endAngle) {\n rotation = endAngle + (TAU - startAngle)\n }\n\n const minradius = Math.min(radius[0], radius[1])\n const minangle = Math.acos(((minradius * minradius) + (minradius * minradius) - (EPS * EPS)) /\n (2 * minradius * minradius))\n if (rotation < minangle) throw new Error('startAngle and endAngle do not define a significant rotation')\n\n segments = Math.floor(segments * (rotation / TAU))\n\n const centerv = vec2.clone(center)\n const step = rotation / segments // radians per segment\n\n const points = []\n segments = (rotation < TAU) ? segments + 1 : segments\n for (let i = 0; i < segments; i++) {\n const angle = (step * i) + startAngle\n const point = vec2.fromValues(radius[0] * cos(angle), radius[1] * sin(angle))\n vec2.add(point, centerv, point)\n points.push(point)\n }\n if (rotation < TAU) points.push(centerv)\n return geom2.fromPoints(points)\n}\n\nmodule.exports = ellipse\n","const { TAU } = require('../maths/constants')\nconst vec3 = require('../maths/vec3')\n\nconst geom3 = require('../geometries/geom3')\nconst poly3 = require('../geometries/poly3')\n\nconst { sin, cos } = require('../maths/utils/trigonometry')\n\nconst { isGTE, isNumberArray } = require('./commonChecks')\n\n/**\n * Construct an axis-aligned ellipsoid in three dimensional space.\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0,0]] - center of ellipsoid\n * @param {Array} [options.radius=[1,1,1]] - radius of ellipsoid, along X, Y and Z\n * @param {Number} [options.segments=32] - number of segments to create per full rotation\n * @param {Array} [options.axes] - an array with three vectors for the x, y and z base vectors\n * @returns {geom3} new 3D geometry\n * @alias module:modeling/primitives.ellipsoid\n *\n * @example\n * let myshape = ellipsoid({radius: [5, 10, 20]})\n*/\nconst ellipsoid = (options) => {\n const defaults = {\n center: [0, 0, 0],\n radius: [1, 1, 1],\n segments: 32,\n axes: [[1, 0, 0], [0, -1, 0], [0, 0, 1]]\n }\n const { center, radius, segments, axes } = Object.assign({}, defaults, options)\n\n if (!isNumberArray(center, 3)) throw new Error('center must be an array of X, Y and Z values')\n if (!isNumberArray(radius, 3)) throw new Error('radius must be an array of X, Y and Z values')\n if (!radius.every((n) => n >= 0)) throw new Error('radius values must be positive')\n if (!isGTE(segments, 4)) throw new Error('segments must be four or more')\n\n // if any radius is zero return empty geometry\n if (radius[0] === 0 || radius[1] === 0 || radius[2] === 0) return geom3.create()\n\n const xvector = vec3.scale(vec3.create(), vec3.normalize(vec3.create(), axes[0]), radius[0])\n const yvector = vec3.scale(vec3.create(), vec3.normalize(vec3.create(), axes[1]), radius[1])\n const zvector = vec3.scale(vec3.create(), vec3.normalize(vec3.create(), axes[2]), radius[2])\n\n const qsegments = Math.round(segments / 4)\n let prevcylinderpoint\n const polygons = []\n const p1 = vec3.create()\n const p2 = vec3.create()\n for (let slice1 = 0; slice1 <= segments; slice1++) {\n const angle = TAU * slice1 / segments\n const cylinderpoint = vec3.add(vec3.create(), vec3.scale(p1, xvector, cos(angle)), vec3.scale(p2, yvector, sin(angle)))\n if (slice1 > 0) {\n let prevcospitch, prevsinpitch\n for (let slice2 = 0; slice2 <= qsegments; slice2++) {\n const pitch = TAU / 4 * slice2 / qsegments\n const cospitch = cos(pitch)\n const sinpitch = sin(pitch)\n if (slice2 > 0) {\n let points = []\n let point\n point = vec3.subtract(vec3.create(), vec3.scale(p1, prevcylinderpoint, prevcospitch), vec3.scale(p2, zvector, prevsinpitch))\n points.push(vec3.add(point, point, center))\n point = vec3.subtract(vec3.create(), vec3.scale(p1, cylinderpoint, prevcospitch), vec3.scale(p2, zvector, prevsinpitch))\n points.push(vec3.add(point, point, center))\n if (slice2 < qsegments) {\n point = vec3.subtract(vec3.create(), vec3.scale(p1, cylinderpoint, cospitch), vec3.scale(p2, zvector, sinpitch))\n points.push(vec3.add(point, point, center))\n }\n point = vec3.subtract(vec3.create(), vec3.scale(p1, prevcylinderpoint, cospitch), vec3.scale(p2, zvector, sinpitch))\n points.push(vec3.add(point, point, center))\n\n polygons.push(poly3.create(points))\n\n points = []\n point = vec3.add(vec3.create(), vec3.scale(p1, prevcylinderpoint, prevcospitch), vec3.scale(p2, zvector, prevsinpitch))\n points.push(vec3.add(vec3.create(), center, point))\n point = vec3.add(point, vec3.scale(p1, cylinderpoint, prevcospitch), vec3.scale(p2, zvector, prevsinpitch))\n points.push(vec3.add(vec3.create(), center, point))\n if (slice2 < qsegments) {\n point = vec3.add(point, vec3.scale(p1, cylinderpoint, cospitch), vec3.scale(p2, zvector, sinpitch))\n points.push(vec3.add(vec3.create(), center, point))\n }\n point = vec3.add(point, vec3.scale(p1, prevcylinderpoint, cospitch), vec3.scale(p2, zvector, sinpitch))\n points.push(vec3.add(vec3.create(), center, point))\n points.reverse()\n\n polygons.push(poly3.create(points))\n }\n prevcospitch = cospitch\n prevsinpitch = sinpitch\n }\n }\n prevcylinderpoint = cylinderpoint\n }\n return geom3.create(polygons)\n}\n\nmodule.exports = ellipsoid\n","const mat4 = require('../maths/mat4')\nconst vec3 = require('../maths/vec3')\n\nconst geom3 = require('../geometries/geom3')\n\nconst polyhedron = require('./polyhedron')\n\nconst { isGTE } = require('./commonChecks')\n\n/**\n * Construct a geodesic sphere based on icosahedron symmetry.\n * @param {Object} [options] - options for construction\n * @param {Number} [options.radius=1] - target radius of sphere\n * @param {Number} [options.frequency=6] - subdivision frequency per face, multiples of 6\n * @returns {geom3} new 3D geometry\n * @alias module:modeling/primitives.geodesicSphere\n *\n * @example\n * let myshape = geodesicSphere({radius: 15, frequency: 18})\n */\nconst geodesicSphere = (options) => {\n const defaults = {\n radius: 1,\n frequency: 6\n }\n let { radius, frequency } = Object.assign({}, defaults, options)\n\n if (!isGTE(radius, 0)) throw new Error('radius must be positive')\n if (!isGTE(frequency, 6)) throw new Error('frequency must be six or more')\n\n // if radius is zero return empty geometry\n if (radius === 0) return geom3.create()\n\n // adjust the frequency to base 6\n frequency = Math.floor(frequency / 6)\n\n const ci = [ // hard-coded data of icosahedron (20 faces, all triangles)\n [0.850651, 0.000000, -0.525731],\n [0.850651, -0.000000, 0.525731],\n [-0.850651, -0.000000, 0.525731],\n [-0.850651, 0.000000, -0.525731],\n [0.000000, -0.525731, 0.850651],\n [0.000000, 0.525731, 0.850651],\n [0.000000, 0.525731, -0.850651],\n [0.000000, -0.525731, -0.850651],\n [-0.525731, -0.850651, -0.000000],\n [0.525731, -0.850651, -0.000000],\n [0.525731, 0.850651, 0.000000],\n [-0.525731, 0.850651, 0.000000]]\n\n const ti = [[0, 9, 1], [1, 10, 0], [6, 7, 0], [10, 6, 0], [7, 9, 0], [5, 1, 4], [4, 1, 9], [5, 10, 1], [2, 8, 3], [3, 11, 2], [2, 5, 4],\n [4, 8, 2], [2, 11, 5], [3, 7, 6], [6, 11, 3], [8, 7, 3], [9, 8, 4], [11, 10, 5], [10, 11, 6], [8, 9, 7]]\n\n const geodesicSubDivide = (p, frequency, offset) => {\n const p1 = p[0]\n const p2 = p[1]\n const p3 = p[2]\n let n = offset\n const c = []\n const f = []\n\n // p3\n // /\\\n // /__\\ frequency = 3\n // i /\\ /\\\n // /__\\/__\\ total triangles = 9 (frequency*frequency)\n // /\\ /\\ /\\\n // 0/__\\/__\\/__\\\n // p1 0 j p2\n\n for (let i = 0; i < frequency; i++) {\n for (let j = 0; j < frequency - i; j++) {\n const t0 = i / frequency\n const t1 = (i + 1) / frequency\n const s0 = j / (frequency - i)\n const s1 = (j + 1) / (frequency - i)\n const s2 = frequency - i - 1 ? j / (frequency - i - 1) : 1\n const q = []\n\n q[0] = mix3(mix3(p1, p2, s0), p3, t0)\n q[1] = mix3(mix3(p1, p2, s1), p3, t0)\n q[2] = mix3(mix3(p1, p2, s2), p3, t1)\n\n // -- normalize\n for (let k = 0; k < 3; k++) {\n const r = vec3.length(q[k])\n for (let l = 0; l < 3; l++) {\n q[k][l] /= r\n }\n }\n c.push(q[0], q[1], q[2])\n f.push([n, n + 1, n + 2]); n += 3\n\n if (j < frequency - i - 1) {\n const s3 = frequency - i - 1 ? (j + 1) / (frequency - i - 1) : 1\n q[0] = mix3(mix3(p1, p2, s1), p3, t0)\n q[1] = mix3(mix3(p1, p2, s3), p3, t1)\n q[2] = mix3(mix3(p1, p2, s2), p3, t1)\n\n // -- normalize\n for (let k = 0; k < 3; k++) {\n const r = vec3.length(q[k])\n for (let l = 0; l < 3; l++) {\n q[k][l] /= r\n }\n }\n c.push(q[0], q[1], q[2])\n f.push([n, n + 1, n + 2]); n += 3\n }\n }\n }\n return { points: c, triangles: f, offset: n }\n }\n\n const mix3 = (a, b, f) => {\n const _f = 1 - f\n const c = []\n for (let i = 0; i < 3; i++) {\n c[i] = a[i] * _f + b[i] * f\n }\n return c\n }\n\n let points = []\n let faces = []\n let offset = 0\n\n for (let i = 0; i < ti.length; i++) {\n const g = geodesicSubDivide([ci[ti[i][0]], ci[ti[i][1]], ci[ti[i][2]]], frequency, offset)\n points = points.concat(g.points)\n faces = faces.concat(g.triangles)\n offset = g.offset\n }\n\n let geometry = polyhedron({ points: points, faces: faces, orientation: 'inward' })\n if (radius !== 1) geometry = geom3.transform(mat4.fromScaling(mat4.create(), [radius, radius, radius]), geometry)\n return geometry\n}\n\nmodule.exports = geodesicSphere\n","/**\n * Primitives provide the building blocks for complex parts.\n * Each primitive is a geometrical object that can be described mathematically, and therefore precise.\n * Primitives can be logically combined, transformed, extruded, etc.\n * @module modeling/primitives\n * @example\n * const { cube, ellipse, star } = require('@jscad/modeling').primitives\n */\nmodule.exports = {\n arc: require('./arc'),\n circle: require('./circle'),\n cube: require('./cube'),\n cuboid: require('./cuboid'),\n cylinder: require('./cylinder'),\n cylinderElliptic: require('./cylinderElliptic'),\n ellipse: require('./ellipse'),\n ellipsoid: require('./ellipsoid'),\n geodesicSphere: require('./geodesicSphere'),\n line: require('./line'),\n polygon: require('./polygon'),\n polyhedron: require('./polyhedron'),\n rectangle: require('./rectangle'),\n roundedCuboid: require('./roundedCuboid'),\n roundedCylinder: require('./roundedCylinder'),\n roundedRectangle: require('./roundedRectangle'),\n sphere: require('./sphere'),\n square: require('./square'),\n star: require('./star'),\n torus: require('./torus'),\n triangle: require('./triangle')\n}\n","const path2 = require('../geometries/path2')\n\n/**\n * Construct a new line in two dimensional space from the given points.\n * The points must be provided as an array, where each element is a 2D point.\n * @param {Array} points - array of points from which to create the path\n * @returns {path2} new 2D path\n * @alias module:modeling/primitives.line\n *\n * @example\n * let myshape = line([[10, 10], [-10, 10]])\n */\nconst line = (points) => {\n if (!Array.isArray(points)) throw new Error('points must be an array')\n\n return path2.fromPoints({}, points)\n}\n\nmodule.exports = line\n","const geom2 = require('../geometries/geom2')\n\n/**\n * Construct a polygon in two dimensional space from a list of points, or a list of points and paths.\n * NOTE: The ordering of points is VERY IMPORTANT.\n * @param {Object} options - options for construction\n * @param {Array} options.points - points of the polygon : either flat or nested array of 2D points\n * @param {Array} [options.paths] - paths of the polygon : either flat or nested array of point indexes\n * @returns {geom2} new 2D geometry\n * @alias module:modeling/primitives.polygon\n *\n * @example\n * let roof = [[10,11], [0,11], [5,20]]\n * let wall = [[0,0], [10,0], [10,10], [0,10]]\n *\n * let poly = polygon({ points: roof })\n * or\n * let poly = polygon({ points: [roof, wall] })\n * or\n * let poly = polygon({ points: roof, paths: [0, 1, 2] })\n * or\n * let poly = polygon({ points: [roof, wall], paths: [[0, 1, 2], [3, 4, 5, 6]] })\n */\nconst polygon = (options) => {\n const defaults = {\n points: [],\n paths: []\n }\n const { points, paths } = Object.assign({}, defaults, options)\n\n if (!(Array.isArray(points) && Array.isArray(paths))) throw new Error('points and paths must be arrays')\n\n let listofpolys = points\n if (Array.isArray(points[0])) {\n if (!Array.isArray(points[0][0])) {\n // points is an array of something... convert to list\n listofpolys = [points]\n }\n }\n\n listofpolys.forEach((list, i) => {\n if (!Array.isArray(list)) throw new Error('list of points ' + i + ' must be an array')\n if (list.length < 3) throw new Error('list of points ' + i + ' must contain three or more points')\n list.forEach((point, j) => {\n if (!Array.isArray(point)) throw new Error('list of points ' + i + ', point ' + j + ' must be an array')\n if (point.length < 2) throw new Error('list of points ' + i + ', point ' + j + ' must contain by X and Y values')\n })\n })\n\n let listofpaths = paths\n if (paths.length === 0) {\n // create a list of paths based on the points\n let count = 0\n listofpaths = listofpolys.map((list) => list.map((point) => count++))\n }\n\n // flatten the listofpoints for indexed access\n const allpoints = []\n listofpolys.forEach((list) => list.forEach((point) => allpoints.push(point)))\n\n let sides = []\n listofpaths.forEach((path) => {\n const setofpoints = path.map((index) => allpoints[index])\n const geometry = geom2.fromPoints(setofpoints)\n sides = sides.concat(geom2.toSides(geometry))\n })\n return geom2.create(sides)\n}\n\nmodule.exports = polygon\n","const geom3 = require('../geometries/geom3')\nconst poly3 = require('../geometries/poly3')\n\nconst { isNumberArray } = require('./commonChecks')\n\n/**\n * Construct a polyhedron in three dimensional space from the given set of 3D points and faces.\n * The faces can define outward or inward facing polygons (orientation).\n * However, each face must define a counter clockwise rotation of points which follows the right hand rule.\n * @param {Object} options - options for construction\n * @param {Array} options.points - list of points in 3D space\n * @param {Array} options.faces - list of faces, where each face is a set of indexes into the points\n * @param {Array} [options.colors=undefined] - list of RGBA colors to apply to each face\n * @param {String} [options.orientation='outward'] - orientation of faces\n * @returns {geom3} new 3D geometry\n * @alias module:modeling/primitives.polyhedron\n *\n * @example\n * let mypoints = [ [10, 10, 0], [10, -10, 0], [-10, -10, 0], [-10, 10, 0], [0, 0, 10] ]\n * let myfaces = [ [0, 1, 4], [1, 2, 4], [2, 3, 4], [3, 0, 4], [1, 0, 3], [2, 1, 3] ]\n * let myshape = polyhedron({points: mypoint, faces: myfaces, orientation: 'inward'})\n */\nconst polyhedron = (options) => {\n const defaults = {\n points: [],\n faces: [],\n colors: undefined,\n orientation: 'outward'\n }\n const { points, faces, colors, orientation } = Object.assign({}, defaults, options)\n\n if (!(Array.isArray(points) && Array.isArray(faces))) {\n throw new Error('points and faces must be arrays')\n }\n if (points.length < 3) {\n throw new Error('three or more points are required')\n }\n if (faces.length < 1) {\n throw new Error('one or more faces are required')\n }\n if (colors) {\n if (!Array.isArray(colors)) {\n throw new Error('colors must be an array')\n }\n if (colors.length !== faces.length) {\n throw new Error('faces and colors must have the same length')\n }\n }\n points.forEach((point, i) => {\n if (!isNumberArray(point, 3)) throw new Error(`point ${i} must be an array of X, Y, Z values`)\n })\n faces.forEach((face, i) => {\n if (face.length < 3) throw new Error(`face ${i} must contain 3 or more indexes`)\n if (!isNumberArray(face, face.length)) throw new Error(`face ${i} must be an array of numbers`)\n })\n\n // invert the faces if orientation is inwards, as all internals expect outwarding facing polygons\n if (orientation !== 'outward') {\n faces.forEach((face) => face.reverse())\n }\n\n const polygons = faces.map((face, findex) => {\n const polygon = poly3.create(face.map((pindex) => points[pindex]))\n if (colors && colors[findex]) polygon.color = colors[findex]\n return polygon\n })\n\n return geom3.create(polygons)\n}\n\nmodule.exports = polyhedron\n","const vec2 = require('../maths/vec2')\n\nconst geom2 = require('../geometries/geom2')\n\nconst { isNumberArray } = require('./commonChecks')\n\n/**\n * Construct an axis-aligned rectangle in two dimensional space with four sides at right angles.\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0]] - center of rectangle\n * @param {Array} [options.size=[2,2]] - dimension of rectangle, width and length\n * @returns {geom2} new 2D geometry\n * @alias module:modeling/primitives.rectangle\n *\n * @example\n * let myshape = rectangle({size: [10, 20]})\n */\nconst rectangle = (options) => {\n const defaults = {\n center: [0, 0],\n size: [2, 2]\n }\n const { center, size } = Object.assign({}, defaults, options)\n\n if (!isNumberArray(center, 2)) throw new Error('center must be an array of X and Y values')\n if (!isNumberArray(size, 2)) throw new Error('size must be an array of X and Y values')\n if (!size.every((n) => n >= 0)) throw new Error('size values must be positive')\n\n // if any size is zero return empty geometry\n if (size[0] === 0 || size[1] === 0) return geom2.create()\n\n const point = [size[0] / 2, size[1] / 2]\n const pswap = [point[0], -point[1]]\n\n const points = [\n vec2.subtract(vec2.create(), center, point),\n vec2.add(vec2.create(), center, pswap),\n vec2.add(vec2.create(), center, point),\n vec2.subtract(vec2.create(), center, pswap)\n ]\n return geom2.fromPoints(points)\n}\n\nmodule.exports = rectangle\n","const { EPS, TAU } = require('../maths/constants')\n\nconst vec2 = require('../maths/vec2')\nconst vec3 = require('../maths/vec3')\n\nconst geom3 = require('../geometries/geom3')\nconst poly3 = require('../geometries/poly3')\n\nconst { sin, cos } = require('../maths/utils/trigonometry')\n\nconst { isGTE, isNumberArray } = require('./commonChecks')\nconst cuboid = require('./cuboid')\n\nconst createCorners = (center, size, radius, segments, slice, positive) => {\n const pitch = (TAU / 4) * slice / segments\n const cospitch = cos(pitch)\n const sinpitch = sin(pitch)\n\n const layersegments = segments - slice\n let layerradius = radius * cospitch\n let layeroffset = size[2] - (radius - (radius * sinpitch))\n if (!positive) layeroffset = (radius - (radius * sinpitch)) - size[2]\n\n layerradius = layerradius > EPS ? layerradius : 0\n\n const corner0 = vec3.add(vec3.create(), center, [size[0] - radius, size[1] - radius, layeroffset])\n const corner1 = vec3.add(vec3.create(), center, [radius - size[0], size[1] - radius, layeroffset])\n const corner2 = vec3.add(vec3.create(), center, [radius - size[0], radius - size[1], layeroffset])\n const corner3 = vec3.add(vec3.create(), center, [size[0] - radius, radius - size[1], layeroffset])\n const corner0Points = []\n const corner1Points = []\n const corner2Points = []\n const corner3Points = []\n for (let i = 0; i <= layersegments; i++) {\n const radians = layersegments > 0 ? TAU / 4 * i / layersegments : 0\n const point2d = vec2.fromAngleRadians(vec2.create(), radians)\n vec2.scale(point2d, point2d, layerradius)\n const point3d = vec3.fromVec2(vec3.create(), point2d)\n corner0Points.push(vec3.add(vec3.create(), corner0, point3d))\n vec3.rotateZ(point3d, point3d, [0, 0, 0], TAU / 4)\n corner1Points.push(vec3.add(vec3.create(), corner1, point3d))\n vec3.rotateZ(point3d, point3d, [0, 0, 0], TAU / 4)\n corner2Points.push(vec3.add(vec3.create(), corner2, point3d))\n vec3.rotateZ(point3d, point3d, [0, 0, 0], TAU / 4)\n corner3Points.push(vec3.add(vec3.create(), corner3, point3d))\n }\n if (!positive) {\n corner0Points.reverse()\n corner1Points.reverse()\n corner2Points.reverse()\n corner3Points.reverse()\n return [corner3Points, corner2Points, corner1Points, corner0Points]\n }\n return [corner0Points, corner1Points, corner2Points, corner3Points]\n}\n\nconst stitchCorners = (previousCorners, currentCorners) => {\n const polygons = []\n for (let i = 0; i < previousCorners.length; i++) {\n const previous = previousCorners[i]\n const current = currentCorners[i]\n for (let j = 0; j < (previous.length - 1); j++) {\n polygons.push(poly3.create([previous[j], previous[j + 1], current[j]]))\n\n if (j < (current.length - 1)) {\n polygons.push(poly3.create([current[j], previous[j + 1], current[j + 1]]))\n }\n }\n }\n return polygons\n}\n\nconst stitchWalls = (previousCorners, currentCorners) => {\n const polygons = []\n for (let i = 0; i < previousCorners.length; i++) {\n let previous = previousCorners[i]\n let current = currentCorners[i]\n const p0 = previous[previous.length - 1]\n const c0 = current[current.length - 1]\n\n const j = (i + 1) % previousCorners.length\n previous = previousCorners[j]\n current = currentCorners[j]\n const p1 = previous[0]\n const c1 = current[0]\n\n polygons.push(poly3.create([p0, p1, c1, c0]))\n }\n return polygons\n}\n\nconst stitchSides = (bottomCorners, topCorners) => {\n // make a copy and reverse the bottom corners\n bottomCorners = [bottomCorners[3], bottomCorners[2], bottomCorners[1], bottomCorners[0]]\n bottomCorners = bottomCorners.map((corner) => corner.slice().reverse())\n\n const bottomPoints = []\n bottomCorners.forEach((corner) => {\n corner.forEach((point) => bottomPoints.push(point))\n })\n\n const topPoints = []\n topCorners.forEach((corner) => {\n corner.forEach((point) => topPoints.push(point))\n })\n\n const polygons = []\n for (let i = 0; i < topPoints.length; i++) {\n const j = (i + 1) % topPoints.length\n polygons.push(poly3.create([bottomPoints[i], bottomPoints[j], topPoints[j], topPoints[i]]))\n }\n return polygons\n}\n\n/**\n * Construct an axis-aligned solid cuboid in three dimensional space with rounded corners.\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0,0]] - center of rounded cube\n * @param {Array} [options.size=[2,2,2]] - dimension of rounded cube; width, depth, height\n * @param {Number} [options.roundRadius=0.2] - radius of rounded edges\n * @param {Number} [options.segments=32] - number of segments to create per full rotation\n * @returns {geom3} new 3D geometry\n * @alias module:modeling/primitives.roundedCuboid\n *\n * @example\n * let mycube = roundedCuboid({size: [10, 20, 10], roundRadius: 2, segments: 16})\n */\nconst roundedCuboid = (options) => {\n const defaults = {\n center: [0, 0, 0],\n size: [2, 2, 2],\n roundRadius: 0.2,\n segments: 32\n }\n let { center, size, roundRadius, segments } = Object.assign({}, defaults, options)\n\n if (!isNumberArray(center, 3)) throw new Error('center must be an array of X, Y and Z values')\n if (!isNumberArray(size, 3)) throw new Error('size must be an array of X, Y and Z values')\n if (!size.every((n) => n >= 0)) throw new Error('size values must be positive')\n if (!isGTE(roundRadius, 0)) throw new Error('roundRadius must be positive')\n if (!isGTE(segments, 4)) throw new Error('segments must be four or more')\n\n // if any size is zero return empty geometry\n if (size[0] === 0 || size[1] === 0 || size[2] === 0) return geom3.create()\n\n // if roundRadius is zero, return cuboid\n if (roundRadius === 0) return cuboid({ center, size })\n\n size = size.map((v) => v / 2) // convert to radius\n\n if (roundRadius > (size[0] - EPS) ||\n roundRadius > (size[1] - EPS) ||\n roundRadius > (size[2] - EPS)) throw new Error('roundRadius must be smaller then the radius of all dimensions')\n\n segments = Math.floor(segments / 4)\n\n let prevCornersPos = null\n let prevCornersNeg = null\n let polygons = []\n for (let slice = 0; slice <= segments; slice++) {\n const cornersPos = createCorners(center, size, roundRadius, segments, slice, true)\n const cornersNeg = createCorners(center, size, roundRadius, segments, slice, false)\n\n if (slice === 0) {\n polygons = polygons.concat(stitchSides(cornersNeg, cornersPos))\n }\n\n if (prevCornersPos) {\n polygons = polygons.concat(stitchCorners(prevCornersPos, cornersPos),\n stitchWalls(prevCornersPos, cornersPos))\n }\n if (prevCornersNeg) {\n polygons = polygons.concat(stitchCorners(prevCornersNeg, cornersNeg),\n stitchWalls(prevCornersNeg, cornersNeg))\n }\n\n if (slice === segments) {\n // add the top\n let points = cornersPos.map((corner) => corner[0])\n polygons.push(poly3.create(points))\n // add the bottom\n points = cornersNeg.map((corner) => corner[0])\n polygons.push(poly3.create(points))\n }\n\n prevCornersPos = cornersPos\n prevCornersNeg = cornersNeg\n }\n\n return geom3.create(polygons)\n}\n\nmodule.exports = roundedCuboid\n","const { EPS, TAU } = require('../maths/constants')\n\nconst vec3 = require('../maths/vec3')\n\nconst geom3 = require('../geometries/geom3')\nconst poly3 = require('../geometries/poly3')\n\nconst { sin, cos } = require('../maths/utils/trigonometry')\n\nconst { isGTE, isNumberArray } = require('./commonChecks')\nconst cylinder = require('./cylinder')\n\n/**\n * Construct a Z axis-aligned solid cylinder in three dimensional space with rounded ends.\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0,0]] - center of cylinder\n * @param {Number} [options.height=2] - height of cylinder\n * @param {Number} [options.radius=1] - radius of cylinder\n * @param {Number} [options.roundRadius=0.2] - radius of rounded edges\n * @param {Number} [options.segments=32] - number of segments to create per full rotation\n * @returns {geom3} new 3D geometry\n * @alias module:modeling/primitives.roundedCylinder\n *\n * @example\n * let myshape = roundedCylinder({ height: 10, radius: 2, roundRadius: 0.5 })\n */\nconst roundedCylinder = (options) => {\n const defaults = {\n center: [0, 0, 0],\n height: 2,\n radius: 1,\n roundRadius: 0.2,\n segments: 32\n }\n const { center, height, radius, roundRadius, segments } = Object.assign({}, defaults, options)\n\n if (!isNumberArray(center, 3)) throw new Error('center must be an array of X, Y and Z values')\n if (!isGTE(height, 0)) throw new Error('height must be positive')\n if (!isGTE(radius, 0)) throw new Error('radius must be positive')\n if (!isGTE(roundRadius, 0)) throw new Error('roundRadius must be positive')\n if (roundRadius > radius) throw new Error('roundRadius must be smaller then the radius')\n if (!isGTE(segments, 4)) throw new Error('segments must be four or more')\n\n // if size is zero return empty geometry\n if (height === 0 || radius === 0) return geom3.create()\n\n // if roundRadius is zero, return cylinder\n if (roundRadius === 0) return cylinder({ center, height, radius })\n\n const start = [0, 0, -(height / 2)]\n const end = [0, 0, height / 2]\n const direction = vec3.subtract(vec3.create(), end, start)\n const length = vec3.length(direction)\n\n if ((2 * roundRadius) > (length - EPS)) throw new Error('height must be larger than twice roundRadius')\n\n let defaultnormal\n if (Math.abs(direction[0]) > Math.abs(direction[1])) {\n defaultnormal = vec3.fromValues(0, 1, 0)\n } else {\n defaultnormal = vec3.fromValues(1, 0, 0)\n }\n\n const zvector = vec3.scale(vec3.create(), vec3.normalize(vec3.create(), direction), roundRadius)\n const xvector = vec3.scale(vec3.create(), vec3.normalize(vec3.create(), vec3.cross(vec3.create(), zvector, defaultnormal)), radius)\n const yvector = vec3.scale(vec3.create(), vec3.normalize(vec3.create(), vec3.cross(vec3.create(), xvector, zvector)), radius)\n\n vec3.add(start, start, zvector)\n vec3.subtract(end, end, zvector)\n\n const qsegments = Math.floor(0.25 * segments)\n\n const fromPoints = (points) => {\n // adjust the points to center\n const newpoints = points.map((point) => vec3.add(point, point, center))\n return poly3.create(newpoints)\n }\n\n const polygons = []\n const v1 = vec3.create()\n const v2 = vec3.create()\n let prevcylinderpoint\n for (let slice1 = 0; slice1 <= segments; slice1++) {\n const angle = TAU * slice1 / segments\n const cylinderpoint = vec3.add(vec3.create(), vec3.scale(v1, xvector, cos(angle)), vec3.scale(v2, yvector, sin(angle)))\n if (slice1 > 0) {\n // cylinder wall\n let points = []\n points.push(vec3.add(vec3.create(), start, cylinderpoint))\n points.push(vec3.add(vec3.create(), start, prevcylinderpoint))\n points.push(vec3.add(vec3.create(), end, prevcylinderpoint))\n points.push(vec3.add(vec3.create(), end, cylinderpoint))\n polygons.push(fromPoints(points))\n\n let prevcospitch, prevsinpitch\n for (let slice2 = 0; slice2 <= qsegments; slice2++) {\n const pitch = TAU / 4 * slice2 / qsegments\n const cospitch = cos(pitch)\n const sinpitch = sin(pitch)\n if (slice2 > 0) {\n // cylinder rounding, start\n points = []\n let point\n point = vec3.add(vec3.create(), start, vec3.subtract(v1, vec3.scale(v1, prevcylinderpoint, prevcospitch), vec3.scale(v2, zvector, prevsinpitch)))\n points.push(point)\n point = vec3.add(vec3.create(), start, vec3.subtract(v1, vec3.scale(v1, cylinderpoint, prevcospitch), vec3.scale(v2, zvector, prevsinpitch)))\n points.push(point)\n if (slice2 < qsegments) {\n point = vec3.add(vec3.create(), start, vec3.subtract(v1, vec3.scale(v1, cylinderpoint, cospitch), vec3.scale(v2, zvector, sinpitch)))\n points.push(point)\n }\n point = vec3.add(vec3.create(), start, vec3.subtract(v1, vec3.scale(v1, prevcylinderpoint, cospitch), vec3.scale(v2, zvector, sinpitch)))\n points.push(point)\n\n polygons.push(fromPoints(points))\n\n // cylinder rounding, end\n points = []\n point = vec3.add(vec3.create(), vec3.scale(v1, prevcylinderpoint, prevcospitch), vec3.scale(v2, zvector, prevsinpitch))\n vec3.add(point, point, end)\n points.push(point)\n point = vec3.add(vec3.create(), vec3.scale(v1, cylinderpoint, prevcospitch), vec3.scale(v2, zvector, prevsinpitch))\n vec3.add(point, point, end)\n points.push(point)\n if (slice2 < qsegments) {\n point = vec3.add(vec3.create(), vec3.scale(v1, cylinderpoint, cospitch), vec3.scale(v2, zvector, sinpitch))\n vec3.add(point, point, end)\n points.push(point)\n }\n point = vec3.add(vec3.create(), vec3.scale(v1, prevcylinderpoint, cospitch), vec3.scale(v2, zvector, sinpitch))\n vec3.add(point, point, end)\n points.push(point)\n points.reverse()\n\n polygons.push(fromPoints(points))\n }\n prevcospitch = cospitch\n prevsinpitch = sinpitch\n }\n }\n prevcylinderpoint = cylinderpoint\n }\n const result = geom3.create(polygons)\n return result\n}\n\nmodule.exports = roundedCylinder\n","const { EPS, TAU } = require('../maths/constants')\n\nconst vec2 = require('../maths/vec2')\n\nconst geom2 = require('../geometries/geom2')\n\nconst { isGTE, isNumberArray } = require('./commonChecks')\nconst rectangle = require('./rectangle')\n\n/**\n * Construct an axis-aligned rectangle in two dimensional space with rounded corners.\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0]] - center of rounded rectangle\n * @param {Array} [options.size=[2,2]] - dimension of rounded rectangle; width and length\n * @param {Number} [options.roundRadius=0.2] - round radius of corners\n * @param {Number} [options.segments=32] - number of segments to create per full rotation\n * @returns {geom2} new 2D geometry\n * @alias module:modeling/primitives.roundedRectangle\n *\n * @example\n * let myshape = roundedRectangle({size: [10, 20], roundRadius: 2})\n */\nconst roundedRectangle = (options) => {\n const defaults = {\n center: [0, 0],\n size: [2, 2],\n roundRadius: 0.2,\n segments: 32\n }\n let { center, size, roundRadius, segments } = Object.assign({}, defaults, options)\n\n if (!isNumberArray(center, 2)) throw new Error('center must be an array of X and Y values')\n if (!isNumberArray(size, 2)) throw new Error('size must be an array of X and Y values')\n if (!size.every((n) => n >= 0)) throw new Error('size values must be positive')\n if (!isGTE(roundRadius, 0)) throw new Error('roundRadius must be positive')\n if (!isGTE(segments, 4)) throw new Error('segments must be four or more')\n\n // if any size is zero return empty geometry\n if (size[0] === 0 || size[1] === 0) return geom2.create()\n\n // if roundRadius is zero, return rectangle\n if (roundRadius === 0) return rectangle({ center, size })\n\n size = size.map((v) => v / 2) // convert to radius\n\n if (roundRadius > (size[0] - EPS) ||\n roundRadius > (size[1] - EPS)) throw new Error('roundRadius must be smaller then the radius of all dimensions')\n\n const cornersegments = Math.floor(segments / 4)\n\n // create sets of points that define the corners\n const corner0 = vec2.add(vec2.create(), center, [size[0] - roundRadius, size[1] - roundRadius])\n const corner1 = vec2.add(vec2.create(), center, [roundRadius - size[0], size[1] - roundRadius])\n const corner2 = vec2.add(vec2.create(), center, [roundRadius - size[0], roundRadius - size[1]])\n const corner3 = vec2.add(vec2.create(), center, [size[0] - roundRadius, roundRadius - size[1]])\n const corner0Points = []\n const corner1Points = []\n const corner2Points = []\n const corner3Points = []\n for (let i = 0; i <= cornersegments; i++) {\n const radians = TAU / 4 * i / cornersegments\n const point = vec2.fromAngleRadians(vec2.create(), radians)\n vec2.scale(point, point, roundRadius)\n corner0Points.push(vec2.add(vec2.create(), corner0, point))\n vec2.rotate(point, point, vec2.create(), TAU / 4)\n corner1Points.push(vec2.add(vec2.create(), corner1, point))\n vec2.rotate(point, point, vec2.create(), TAU / 4)\n corner2Points.push(vec2.add(vec2.create(), corner2, point))\n vec2.rotate(point, point, vec2.create(), TAU / 4)\n corner3Points.push(vec2.add(vec2.create(), corner3, point))\n }\n\n return geom2.fromPoints(corner0Points.concat(corner1Points, corner2Points, corner3Points))\n}\n\nmodule.exports = roundedRectangle\n","const ellipsoid = require('./ellipsoid')\n\nconst { isGTE } = require('./commonChecks')\n\n/**\n * Construct a sphere in three dimensional space where all points are at the same distance from the center.\n * @see [ellipsoid]{@link module:modeling/primitives.ellipsoid} for more options\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0,0]] - center of sphere\n * @param {Number} [options.radius=1] - radius of sphere\n * @param {Number} [options.segments=32] - number of segments to create per full rotation\n * @param {Array} [options.axes] - an array with three vectors for the x, y and z base vectors\n * @returns {geom3} new 3D geometry\n * @alias module:modeling/primitives.sphere\n *\n * @example\n * let myshape = sphere({radius: 5})\n */\nconst sphere = (options) => {\n const defaults = {\n center: [0, 0, 0],\n radius: 1,\n segments: 32,\n axes: [[1, 0, 0], [0, -1, 0], [0, 0, 1]]\n }\n let { center, radius, segments, axes } = Object.assign({}, defaults, options)\n\n if (!isGTE(radius, 0)) throw new Error('radius must be positive')\n\n radius = [radius, radius, radius]\n\n return ellipsoid({ center, radius, segments, axes })\n}\n\nmodule.exports = sphere\n","const rectangle = require('./rectangle')\n\nconst { isGTE } = require('./commonChecks')\n\n/**\n * Construct an axis-aligned square in two dimensional space with four equal sides at right angles.\n * @see [rectangle]{@link module:modeling/primitives.rectangle} for more options\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0]] - center of square\n * @param {Number} [options.size=2] - dimension of square\n * @returns {geom2} new 2D geometry\n * @alias module:modeling/primitives.square\n *\n * @example\n * let myshape = square({size: 10})\n */\nconst square = (options) => {\n const defaults = {\n center: [0, 0],\n size: 2\n }\n let { center, size } = Object.assign({}, defaults, options)\n\n if (!isGTE(size, 0)) throw new Error('size must be positive')\n\n size = [size, size]\n\n return rectangle({ center, size })\n}\n\nmodule.exports = square\n","const { TAU } = require('../maths/constants')\nconst vec2 = require('../maths/vec2')\n\nconst geom2 = require('../geometries/geom2')\n\nconst { isGT, isGTE, isNumberArray } = require('./commonChecks')\n\n// @see http://www.jdawiseman.com/papers/easymath/surds_star_inner_radius.html\nconst getRadiusRatio = (vertices, density) => {\n if (vertices > 0 && density > 1 && density < vertices / 2) {\n return Math.cos(Math.PI * density / vertices) / Math.cos(Math.PI * (density - 1) / vertices)\n }\n return 0\n}\n\nconst getPoints = (vertices, radius, startAngle, center) => {\n const a = TAU / vertices\n\n const points = []\n for (let i = 0; i < vertices; i++) {\n const point = vec2.fromAngleRadians(vec2.create(), a * i + startAngle)\n vec2.scale(point, point, radius)\n vec2.add(point, center, point)\n points.push(point)\n }\n return points\n}\n\n/**\n * Construct a star in two dimensional space.\n * @see https://en.wikipedia.org/wiki/Star_polygon\n * @param {Object} [options] - options for construction\n * @param {Array} [options.center=[0,0]] - center of star\n * @param {Number} [options.vertices=5] - number of vertices (P) on the star\n * @param {Number} [options.density=2] - density (Q) of star\n * @param {Number} [options.outerRadius=1] - outer radius of vertices\n * @param {Number} [options.innerRadius=0] - inner radius of vertices, or zero to calculate\n * @param {Number} [options.startAngle=0] - starting angle for first vertice, in radians\n * @returns {geom2} new 2D geometry\n * @alias module:modeling/primitives.star\n *\n * @example\n * let star1 = star({vertices: 8, outerRadius: 10}) // star with 8/2 density\n * let star2 = star({vertices: 12, outerRadius: 40, innerRadius: 20}) // star with given radius\n */\nconst star = (options) => {\n const defaults = {\n center: [0, 0],\n vertices: 5,\n outerRadius: 1,\n innerRadius: 0,\n density: 2,\n startAngle: 0\n }\n let { center, vertices, outerRadius, innerRadius, density, startAngle } = Object.assign({}, defaults, options)\n\n if (!isNumberArray(center, 2)) throw new Error('center must be an array of X and Y values')\n if (!isGTE(vertices, 2)) throw new Error('vertices must be two or more')\n if (!isGT(outerRadius, 0)) throw new Error('outerRadius must be greater than zero')\n if (!isGTE(innerRadius, 0)) throw new Error('innerRadius must be greater than zero')\n if (!isGTE(startAngle, 0)) throw new Error('startAngle must be greater than zero')\n\n // force integers\n vertices = Math.floor(vertices)\n density = Math.floor(density)\n\n startAngle = startAngle % TAU\n\n if (innerRadius === 0) {\n if (!isGTE(density, 2)) throw new Error('density must be two or more')\n innerRadius = outerRadius * getRadiusRatio(vertices, density)\n }\n\n const centerv = vec2.clone(center)\n\n const outerPoints = getPoints(vertices, outerRadius, startAngle, centerv)\n const innerPoints = getPoints(vertices, innerRadius, startAngle + Math.PI / vertices, centerv)\n\n const allPoints = []\n for (let i = 0; i < vertices; i++) {\n allPoints.push(outerPoints[i])\n allPoints.push(innerPoints[i])\n }\n\n return geom2.fromPoints(allPoints)\n}\n\nmodule.exports = star\n","const { TAU } = require('../maths/constants')\n\nconst extrudeRotate = require('../operations/extrusions/extrudeRotate')\nconst { rotate } = require('../operations/transforms/rotate')\nconst { translate } = require('../operations/transforms/translate')\n\nconst circle = require('./circle')\n\nconst { isGT, isGTE } = require('./commonChecks')\n\n/**\n * Construct a torus by revolving a small circle (inner) about the circumference of a large (outer) circle.\n * @param {Object} [options] - options for construction\n * @param {Number} [options.innerRadius=1] - radius of small (inner) circle\n * @param {Number} [options.outerRadius=4] - radius of large (outer) circle\n * @param {Integer} [options.innerSegments=32] - number of segments to create per rotation\n * @param {Integer} [options.outerSegments=32] - number of segments to create per rotation\n * @param {Integer} [options.innerRotation=0] - rotation of small (inner) circle in radians\n * @param {Number} [options.outerRotation=TAU] - rotation (outer) of the torus (RADIANS)\n * @param {Number} [options.startAngle=0] - start angle of the torus (RADIANS)\n * @returns {geom3} new 3D geometry\n * @alias module:modeling/primitives.torus\n *\n * @example\n * let myshape = torus({ innerRadius: 10, outerRadius: 100 })\n */\nconst torus = (options) => {\n const defaults = {\n innerRadius: 1,\n innerSegments: 32,\n outerRadius: 4,\n outerSegments: 32,\n innerRotation: 0,\n startAngle: 0,\n outerRotation: TAU\n }\n const { innerRadius, innerSegments, outerRadius, outerSegments, innerRotation, startAngle, outerRotation } = Object.assign({}, defaults, options)\n\n if (!isGT(innerRadius, 0)) throw new Error('innerRadius must be greater than zero')\n if (!isGTE(innerSegments, 3)) throw new Error('innerSegments must be three or more')\n if (!isGT(outerRadius, 0)) throw new Error('outerRadius must be greater than zero')\n if (!isGTE(outerSegments, 3)) throw new Error('outerSegments must be three or more')\n if (!isGTE(startAngle, 0)) throw new Error('startAngle must be positive')\n if (!isGT(outerRotation, 0)) throw new Error('outerRotation must be greater than zero')\n\n if (innerRadius >= outerRadius) throw new Error('inner circle is two large to rotate about the outer circle')\n\n let innerCircle = circle({ radius: innerRadius, segments: innerSegments })\n\n if (innerRotation !== 0) {\n innerCircle = rotate([0, 0, innerRotation], innerCircle)\n }\n\n innerCircle = translate([outerRadius, 0], innerCircle)\n\n const extrudeOptions = {\n startAngle: startAngle,\n angle: outerRotation,\n segments: outerSegments\n }\n return extrudeRotate(extrudeOptions, innerCircle)\n}\n\nmodule.exports = torus\n","const { NEPS } = require('../maths/constants')\nconst vec2 = require('../maths/vec2')\n\nconst geom2 = require('../geometries/geom2')\n\nconst { isNumberArray } = require('./commonChecks')\n\n// returns angle C\nconst solveAngleFromSSS = (a, b, c) => Math.acos(((a * a) + (b * b) - (c * c)) / (2 * a * b))\n\n// returns side c\nconst solveSideFromSAS = (a, C, b) => {\n if (C > NEPS) {\n return Math.sqrt(a * a + b * b - 2 * a * b * Math.cos(C))\n }\n\n // Explained in https://www.nayuki.io/page/numerically-stable-law-of-cosines\n return Math.sqrt((a - b) * (a - b) + a * b * C * C * (1 - C * C / 12))\n}\n\n// AAA is when three angles of a triangle, but no sides\nconst solveAAA = (angles) => {\n const eps = Math.abs(angles[0] + angles[1] + angles[2] - Math.PI)\n if (eps > NEPS) throw new Error('AAA triangles require angles that sum to PI')\n\n const A = angles[0]\n const B = angles[1]\n const C = Math.PI - A - B\n\n // Note: This is not 100% proper but...\n // default the side c length to 1\n // solve the other lengths\n const c = 1\n const a = (c / Math.sin(C)) * Math.sin(A)\n const b = (c / Math.sin(C)) * Math.sin(B)\n return createTriangle(A, B, C, a, b, c)\n}\n\n// AAS is when two angles and one side are known, and the side is not between the angles\nconst solveAAS = (values) => {\n const A = values[0]\n const B = values[1]\n const C = Math.PI + NEPS - A - B\n\n if (C < NEPS) throw new Error('AAS triangles require angles that sum to PI')\n\n const a = values[2]\n const b = (a / Math.sin(A)) * Math.sin(B)\n const c = (a / Math.sin(A)) * Math.sin(C)\n return createTriangle(A, B, C, a, b, c)\n}\n\n// ASA is when two angles and the side between the angles are known\nconst solveASA = (values) => {\n const A = values[0]\n const B = values[2]\n const C = Math.PI + NEPS - A - B\n\n if (C < NEPS) throw new Error('ASA triangles require angles that sum to PI')\n\n const c = values[1]\n const a = (c / Math.sin(C)) * Math.sin(A)\n const b = (c / Math.sin(C)) * Math.sin(B)\n return createTriangle(A, B, C, a, b, c)\n}\n\n// SAS is when two sides and the angle between them are known\nconst solveSAS = (values) => {\n const c = values[0]\n const B = values[1]\n const a = values[2]\n\n const b = solveSideFromSAS(c, B, a)\n\n const A = solveAngleFromSSS(b, c, a) // solve for A\n const C = Math.PI - A - B\n return createTriangle(A, B, C, a, b, c)\n}\n\n// SSA is when two sides and an angle that is not the angle between the sides are known\nconst solveSSA = (values) => {\n const c = values[0]\n const a = values[1]\n const C = values[2]\n\n const A = Math.asin(a * Math.sin(C) / c)\n const B = Math.PI - A - C\n\n const b = (c / Math.sin(C)) * Math.sin(B)\n return createTriangle(A, B, C, a, b, c)\n}\n\n// SSS is when we know three sides of the triangle\nconst solveSSS = (lengths) => {\n const a = lengths[1]\n const b = lengths[2]\n const c = lengths[0]\n if (((a + b) <= c) || ((b + c) <= a) || ((c + a) <= b)) {\n throw new Error('SSS triangle is incorrect, as the longest side is longer than the sum of the other sides')\n }\n\n const A = solveAngleFromSSS(b, c, a) // solve for A\n const B = solveAngleFromSSS(c, a, b) // solve for B\n const C = Math.PI - A - B\n return createTriangle(A, B, C, a, b, c)\n}\n\nconst createTriangle = (A, B, C, a, b, c) => {\n const p0 = vec2.fromValues(0, 0) // everything starts from 0, 0\n const p1 = vec2.fromValues(c, 0)\n const p2 = vec2.fromValues(a, 0)\n vec2.add(p2, vec2.rotate(p2, p2, [0, 0], Math.PI - B), p1)\n return geom2.fromPoints([p0, p1, p2])\n}\n\n/**\n * Construct a triangle in two dimensional space from the given options.\n * The triangle is always constructed CCW from the origin, [0, 0, 0].\n * @see https://www.mathsisfun.com/algebra/trig-solving-triangles.html\n * @param {Object} [options] - options for construction\n * @param {String} [options.type='SSS'] - type of triangle to construct; A ~ angle, S ~ side\n * @param {Array} [options.values=[1,1,1]] - angle (radians) of corners or length of sides\n * @returns {geom2} new 2D geometry\n * @alias module:modeling/primitives.triangle\n *\n * @example\n * let myshape = triangle({type: 'AAS', values: [degToRad(62), degToRad(35), 7]})\n */\nconst triangle = (options) => {\n const defaults = {\n type: 'SSS',\n values: [1, 1, 1]\n }\n let { type, values } = Object.assign({}, defaults, options)\n\n if (typeof (type) !== 'string') throw new Error('triangle type must be a string')\n type = type.toUpperCase()\n if (!((type[0] === 'A' || type[0] === 'S') &&\n (type[1] === 'A' || type[1] === 'S') &&\n (type[2] === 'A' || type[2] === 'S'))) throw new Error('triangle type must contain three letters; A or S')\n\n if (!isNumberArray(values, 3)) throw new Error('triangle values must contain three values')\n if (!values.every((n) => n > 0)) throw new Error('triangle values must be greater than zero')\n\n switch (type) {\n case 'AAA':\n return solveAAA(values)\n case 'AAS':\n return solveAAS(values)\n case 'ASA':\n return solveASA(values)\n case 'SAS':\n return solveSAS(values)\n case 'SSA':\n return solveSSA(values)\n case 'SSS':\n return solveSSS(values)\n default:\n throw new Error('invalid triangle type, try again')\n }\n}\n\nmodule.exports = triangle\n","// -- data source from from http://paulbourke.net/dataformats/hershey/\n// -- reduced to save some bytes...\n// { [ascii code]: [width, x, y, ...] } - undefined value as path separator\nmodule.exports = {\n height: 14,\n 32: [16],\n 33: [10, 5, 21, 5, 7, undefined, 5, 2, 4, 1, 5, 0, 6, 1, 5, 2],\n 34: [16, 4, 21, 4, 14, undefined, 12, 21, 12, 14],\n 35: [21, 11, 25, 4, -7, undefined, 17, 25, 10, -7, undefined, 4, 12, 18, 12, undefined, 3, 6, 17, 6],\n 36: [20, 8, 25, 8, -4, undefined, 12, 25, 12, -4, undefined, 17, 18, 15, 20, 12, 21, 8, 21, 5, 20, 3, 18, 3, 16, 4, 14, 5, 13, 7, 12, 13, 10, 15, 9, 16, 8, 17, 6, 17, 3, 15, 1, 12, 0, 8, 0, 5, 1, 3, 3],\n 37: [24, 21, 21, 3, 0, undefined, 8, 21, 10, 19, 10, 17, 9, 15, 7, 14, 5, 14, 3, 16, 3, 18, 4, 20, 6, 21, 8, 21, 10, 20, 13, 19, 16, 19, 19, 20, 21, 21, undefined, 17, 7, 15, 6, 14, 4, 14, 2, 16, 0, 18, 0, 20, 1, 21, 3, 21, 5, 19, 7, 17, 7],\n 38: [26, 23, 12, 23, 13, 22, 14, 21, 14, 20, 13, 19, 11, 17, 6, 15, 3, 13, 1, 11, 0, 7, 0, 5, 1, 4, 2, 3, 4, 3, 6, 4, 8, 5, 9, 12, 13, 13, 14, 14, 16, 14, 18, 13, 20, 11, 21, 9, 20, 8, 18, 8, 16, 9, 13, 11, 10, 16, 3, 18, 1, 20, 0, 22, 0, 23, 1, 23, 2],\n 39: [10, 5, 19, 4, 20, 5, 21, 6, 20, 6, 18, 5, 16, 4, 15],\n 40: [14, 11, 25, 9, 23, 7, 20, 5, 16, 4, 11, 4, 7, 5, 2, 7, -2, 9, -5, 11, -7],\n 41: [14, 3, 25, 5, 23, 7, 20, 9, 16, 10, 11, 10, 7, 9, 2, 7, -2, 5, -5, 3, -7],\n 42: [16, 8, 21, 8, 9, undefined, 3, 18, 13, 12, undefined, 13, 18, 3, 12],\n 43: [26, 13, 18, 13, 0, undefined, 4, 9, 22, 9],\n 44: [10, 6, 1, 5, 0, 4, 1, 5, 2, 6, 1, 6, -1, 5, -3, 4, -4],\n 45: [26, 4, 9, 22, 9],\n 46: [10, 5, 2, 4, 1, 5, 0, 6, 1, 5, 2],\n 47: [22, 20, 25, 2, -7],\n 48: [20, 9, 21, 6, 20, 4, 17, 3, 12, 3, 9, 4, 4, 6, 1, 9, 0, 11, 0, 14, 1, 16, 4, 17, 9, 17, 12, 16, 17, 14, 20, 11, 21, 9, 21],\n 49: [20, 6, 17, 8, 18, 11, 21, 11, 0],\n 50: [20, 4, 16, 4, 17, 5, 19, 6, 20, 8, 21, 12, 21, 14, 20, 15, 19, 16, 17, 16, 15, 15, 13, 13, 10, 3, 0, 17, 0],\n 51: [20, 5, 21, 16, 21, 10, 13, 13, 13, 15, 12, 16, 11, 17, 8, 17, 6, 16, 3, 14, 1, 11, 0, 8, 0, 5, 1, 4, 2, 3, 4],\n 52: [20, 13, 21, 3, 7, 18, 7, undefined, 13, 21, 13, 0],\n 53: [20, 15, 21, 5, 21, 4, 12, 5, 13, 8, 14, 11, 14, 14, 13, 16, 11, 17, 8, 17, 6, 16, 3, 14, 1, 11, 0, 8, 0, 5, 1, 4, 2, 3, 4],\n 54: [20, 16, 18, 15, 20, 12, 21, 10, 21, 7, 20, 5, 17, 4, 12, 4, 7, 5, 3, 7, 1, 10, 0, 11, 0, 14, 1, 16, 3, 17, 6, 17, 7, 16, 10, 14, 12, 11, 13, 10, 13, 7, 12, 5, 10, 4, 7],\n 55: [20, 17, 21, 7, 0, undefined, 3, 21, 17, 21],\n 56: [20, 8, 21, 5, 20, 4, 18, 4, 16, 5, 14, 7, 13, 11, 12, 14, 11, 16, 9, 17, 7, 17, 4, 16, 2, 15, 1, 12, 0, 8, 0, 5, 1, 4, 2, 3, 4, 3, 7, 4, 9, 6, 11, 9, 12, 13, 13, 15, 14, 16, 16, 16, 18, 15, 20, 12, 21, 8, 21],\n 57: [20, 16, 14, 15, 11, 13, 9, 10, 8, 9, 8, 6, 9, 4, 11, 3, 14, 3, 15, 4, 18, 6, 20, 9, 21, 10, 21, 13, 20, 15, 18, 16, 14, 16, 9, 15, 4, 13, 1, 10, 0, 8, 0, 5, 1, 4, 3],\n 58: [10, 5, 14, 4, 13, 5, 12, 6, 13, 5, 14, undefined, 5, 2, 4, 1, 5, 0, 6, 1, 5, 2],\n 59: [10, 5, 14, 4, 13, 5, 12, 6, 13, 5, 14, undefined, 6, 1, 5, 0, 4, 1, 5, 2, 6, 1, 6, -1, 5, -3, 4, -4],\n 60: [24, 20, 18, 4, 9, 20, 0],\n 61: [26, 4, 12, 22, 12, undefined, 4, 6, 22, 6],\n 62: [24, 4, 18, 20, 9, 4, 0],\n 63: [18, 3, 16, 3, 17, 4, 19, 5, 20, 7, 21, 11, 21, 13, 20, 14, 19, 15, 17, 15, 15, 14, 13, 13, 12, 9, 10, 9, 7, undefined, 9, 2, 8, 1, 9, 0, 10, 1, 9, 2],\n 64: [27, 18, 13, 17, 15, 15, 16, 12, 16, 10, 15, 9, 14, 8, 11, 8, 8, 9, 6, 11, 5, 14, 5, 16, 6, 17, 8, undefined, 12, 16, 10, 14, 9, 11, 9, 8, 10, 6, 11, 5, undefined, 18, 16, 17, 8, 17, 6, 19, 5, 21, 5, 23, 7, 24, 10, 24, 12, 23, 15, 22, 17, 20, 19, 18, 20, 15, 21, 12, 21, 9, 20, 7, 19, 5, 17, 4, 15, 3, 12, 3, 9, 4, 6, 5, 4, 7, 2, 9, 1, 12, 0, 15, 0, 18, 1, 20, 2, 21, 3, undefined, 19, 16, 18, 8, 18, 6, 19, 5],\n 65: [18, 9, 21, 1, 0, undefined, 9, 21, 17, 0, undefined, 4, 7, 14, 7],\n 66: [21, 4, 21, 4, 0, undefined, 4, 21, 13, 21, 16, 20, 17, 19, 18, 17, 18, 15, 17, 13, 16, 12, 13, 11, undefined, 4, 11, 13, 11, 16, 10, 17, 9, 18, 7, 18, 4, 17, 2, 16, 1, 13, 0, 4, 0],\n 67: [21, 18, 16, 17, 18, 15, 20, 13, 21, 9, 21, 7, 20, 5, 18, 4, 16, 3, 13, 3, 8, 4, 5, 5, 3, 7, 1, 9, 0, 13, 0, 15, 1, 17, 3, 18, 5],\n 68: [21, 4, 21, 4, 0, undefined, 4, 21, 11, 21, 14, 20, 16, 18, 17, 16, 18, 13, 18, 8, 17, 5, 16, 3, 14, 1, 11, 0, 4, 0],\n 69: [19, 4, 21, 4, 0, undefined, 4, 21, 17, 21, undefined, 4, 11, 12, 11, undefined, 4, 0, 17, 0],\n 70: [18, 4, 21, 4, 0, undefined, 4, 21, 17, 21, undefined, 4, 11, 12, 11],\n 71: [21, 18, 16, 17, 18, 15, 20, 13, 21, 9, 21, 7, 20, 5, 18, 4, 16, 3, 13, 3, 8, 4, 5, 5, 3, 7, 1, 9, 0, 13, 0, 15, 1, 17, 3, 18, 5, 18, 8, undefined, 13, 8, 18, 8],\n 72: [22, 4, 21, 4, 0, undefined, 18, 21, 18, 0, undefined, 4, 11, 18, 11],\n 73: [8, 4, 21, 4, 0],\n 74: [16, 12, 21, 12, 5, 11, 2, 10, 1, 8, 0, 6, 0, 4, 1, 3, 2, 2, 5, 2, 7],\n 75: [21, 4, 21, 4, 0, undefined, 18, 21, 4, 7, undefined, 9, 12, 18, 0],\n 76: [17, 4, 21, 4, 0, undefined, 4, 0, 16, 0],\n 77: [24, 4, 21, 4, 0, undefined, 4, 21, 12, 0, undefined, 20, 21, 12, 0, undefined, 20, 21, 20, 0],\n 78: [22, 4, 21, 4, 0, undefined, 4, 21, 18, 0, undefined, 18, 21, 18, 0],\n 79: [22, 9, 21, 7, 20, 5, 18, 4, 16, 3, 13, 3, 8, 4, 5, 5, 3, 7, 1, 9, 0, 13, 0, 15, 1, 17, 3, 18, 5, 19, 8, 19, 13, 18, 16, 17, 18, 15, 20, 13, 21, 9, 21],\n 80: [21, 4, 21, 4, 0, undefined, 4, 21, 13, 21, 16, 20, 17, 19, 18, 17, 18, 14, 17, 12, 16, 11, 13, 10, 4, 10],\n 81: [22, 9, 21, 7, 20, 5, 18, 4, 16, 3, 13, 3, 8, 4, 5, 5, 3, 7, 1, 9, 0, 13, 0, 15, 1, 17, 3, 18, 5, 19, 8, 19, 13, 18, 16, 17, 18, 15, 20, 13, 21, 9, 21, undefined, 12, 4, 18, -2],\n 82: [21, 4, 21, 4, 0, undefined, 4, 21, 13, 21, 16, 20, 17, 19, 18, 17, 18, 15, 17, 13, 16, 12, 13, 11, 4, 11, undefined, 11, 11, 18, 0],\n 83: [20, 17, 18, 15, 20, 12, 21, 8, 21, 5, 20, 3, 18, 3, 16, 4, 14, 5, 13, 7, 12, 13, 10, 15, 9, 16, 8, 17, 6, 17, 3, 15, 1, 12, 0, 8, 0, 5, 1, 3, 3],\n 84: [16, 8, 21, 8, 0, undefined, 1, 21, 15, 21],\n 85: [22, 4, 21, 4, 6, 5, 3, 7, 1, 10, 0, 12, 0, 15, 1, 17, 3, 18, 6, 18, 21],\n 86: [18, 1, 21, 9, 0, undefined, 17, 21, 9, 0],\n 87: [24, 2, 21, 7, 0, undefined, 12, 21, 7, 0, undefined, 12, 21, 17, 0, undefined, 22, 21, 17, 0],\n 88: [20, 3, 21, 17, 0, undefined, 17, 21, 3, 0],\n 89: [18, 1, 21, 9, 11, 9, 0, undefined, 17, 21, 9, 11],\n 90: [20, 17, 21, 3, 0, undefined, 3, 21, 17, 21, undefined, 3, 0, 17, 0],\n 91: [14, 4, 25, 4, -7, undefined, 5, 25, 5, -7, undefined, 4, 25, 11, 25, undefined, 4, -7, 11, -7],\n 92: [14, 0, 21, 14, -3],\n 93: [14, 9, 25, 9, -7, undefined, 10, 25, 10, -7, undefined, 3, 25, 10, 25, undefined, 3, -7, 10, -7],\n 94: [16, 6, 15, 8, 18, 10, 15, undefined, 3, 12, 8, 17, 13, 12, undefined, 8, 17, 8, 0],\n 95: [16, 0, -2, 16, -2],\n 96: [10, 6, 21, 5, 20, 4, 18, 4, 16, 5, 15, 6, 16, 5, 17],\n 97: [19, 15, 14, 15, 0, undefined, 15, 11, 13, 13, 11, 14, 8, 14, 6, 13, 4, 11, 3, 8, 3, 6, 4, 3, 6, 1, 8, 0, 11, 0, 13, 1, 15, 3],\n 98: [19, 4, 21, 4, 0, undefined, 4, 11, 6, 13, 8, 14, 11, 14, 13, 13, 15, 11, 16, 8, 16, 6, 15, 3, 13, 1, 11, 0, 8, 0, 6, 1, 4, 3],\n 99: [18, 15, 11, 13, 13, 11, 14, 8, 14, 6, 13, 4, 11, 3, 8, 3, 6, 4, 3, 6, 1, 8, 0, 11, 0, 13, 1, 15, 3],\n 100: [19, 15, 21, 15, 0, undefined, 15, 11, 13, 13, 11, 14, 8, 14, 6, 13, 4, 11, 3, 8, 3, 6, 4, 3, 6, 1, 8, 0, 11, 0, 13, 1, 15, 3],\n 101: [18, 3, 8, 15, 8, 15, 10, 14, 12, 13, 13, 11, 14, 8, 14, 6, 13, 4, 11, 3, 8, 3, 6, 4, 3, 6, 1, 8, 0, 11, 0, 13, 1, 15, 3],\n 102: [12, 10, 21, 8, 21, 6, 20, 5, 17, 5, 0, undefined, 2, 14, 9, 14],\n 103: [19, 15, 14, 15, -2, 14, -5, 13, -6, 11, -7, 8, -7, 6, -6, undefined, 15, 11, 13, 13, 11, 14, 8, 14, 6, 13, 4, 11, 3, 8, 3, 6, 4, 3, 6, 1, 8, 0, 11, 0, 13, 1, 15, 3],\n 104: [19, 4, 21, 4, 0, undefined, 4, 10, 7, 13, 9, 14, 12, 14, 14, 13, 15, 10, 15, 0],\n 105: [8, 3, 21, 4, 20, 5, 21, 4, 22, 3, 21, undefined, 4, 14, 4, 0],\n 106: [10, 5, 21, 6, 20, 7, 21, 6, 22, 5, 21, undefined, 6, 14, 6, -3, 5, -6, 3, -7, 1, -7],\n 107: [17, 4, 21, 4, 0, undefined, 14, 14, 4, 4, undefined, 8, 8, 15, 0],\n 108: [8, 4, 21, 4, 0],\n 109: [30, 4, 14, 4, 0, undefined, 4, 10, 7, 13, 9, 14, 12, 14, 14, 13, 15, 10, 15, 0, undefined, 15, 10, 18, 13, 20, 14, 23, 14, 25, 13, 26, 10, 26, 0],\n 110: [19, 4, 14, 4, 0, undefined, 4, 10, 7, 13, 9, 14, 12, 14, 14, 13, 15, 10, 15, 0],\n 111: [19, 8, 14, 6, 13, 4, 11, 3, 8, 3, 6, 4, 3, 6, 1, 8, 0, 11, 0, 13, 1, 15, 3, 16, 6, 16, 8, 15, 11, 13, 13, 11, 14, 8, 14],\n 112: [19, 4, 14, 4, -7, undefined, 4, 11, 6, 13, 8, 14, 11, 14, 13, 13, 15, 11, 16, 8, 16, 6, 15, 3, 13, 1, 11, 0, 8, 0, 6, 1, 4, 3],\n 113: [19, 15, 14, 15, -7, undefined, 15, 11, 13, 13, 11, 14, 8, 14, 6, 13, 4, 11, 3, 8, 3, 6, 4, 3, 6, 1, 8, 0, 11, 0, 13, 1, 15, 3],\n 114: [13, 4, 14, 4, 0, undefined, 4, 8, 5, 11, 7, 13, 9, 14, 12, 14],\n 115: [17, 14, 11, 13, 13, 10, 14, 7, 14, 4, 13, 3, 11, 4, 9, 6, 8, 11, 7, 13, 6, 14, 4, 14, 3, 13, 1, 10, 0, 7, 0, 4, 1, 3, 3],\n 116: [12, 5, 21, 5, 4, 6, 1, 8, 0, 10, 0, undefined, 2, 14, 9, 14],\n 117: [19, 4, 14, 4, 4, 5, 1, 7, 0, 10, 0, 12, 1, 15, 4, undefined, 15, 14, 15, 0],\n 118: [16, 2, 14, 8, 0, undefined, 14, 14, 8, 0],\n 119: [22, 3, 14, 7, 0, undefined, 11, 14, 7, 0, undefined, 11, 14, 15, 0, undefined, 19, 14, 15, 0],\n 120: [17, 3, 14, 14, 0, undefined, 14, 14, 3, 0],\n 121: [16, 2, 14, 8, 0, undefined, 14, 14, 8, 0, 6, -4, 4, -6, 2, -7, 1, -7],\n 122: [17, 14, 14, 3, 0, undefined, 3, 14, 14, 14, undefined, 3, 0, 14, 0],\n 123: [14, 9, 25, 7, 24, 6, 23, 5, 21, 5, 19, 6, 17, 7, 16, 8, 14, 8, 12, 6, 10, undefined, 7, 24, 6, 22, 6, 20, 7, 18, 8, 17, 9, 15, 9, 13, 8, 11, 4, 9, 8, 7, 9, 5, 9, 3, 8, 1, 7, 0, 6, -2, 6, -4, 7, -6, undefined, 6, 8, 8, 6, 8, 4, 7, 2, 6, 1, 5, -1, 5, -3, 6, -5, 7, -6, 9, -7],\n 124: [8, 4, 25, 4, -7],\n 125: [14, 5, 25, 7, 24, 8, 23, 9, 21, 9, 19, 8, 17, 7, 16, 6, 14, 6, 12, 8, 10, undefined, 7, 24, 8, 22, 8, 20, 7, 18, 6, 17, 5, 15, 5, 13, 6, 11, 10, 9, 6, 7, 5, 5, 5, 3, 6, 1, 7, 0, 8, -2, 8, -4, 7, -6, undefined, 8, 8, 6, 6, 6, 4, 7, 2, 8, 1, 9, -1, 9, -3, 8, -5, 7, -6, 5, -7],\n 126: [24, 3, 6, 3, 8, 4, 11, 6, 12, 8, 12, 10, 11, 14, 8, 16, 7, 18, 7, 20, 8, 21, 10, undefined, 3, 8, 4, 10, 6, 11, 8, 11, 10, 10, 14, 7, 16, 6, 18, 6, 20, 7, 21, 10, 21, 12]\n}\n","/**\n * Texts provide sets of segments for each character or text strings.\n * The segments can be used to create outlines for both 2D and 3D geometry.\n * Note: Only ASCII characters are supported.\n * @module modeling/text\n * @example\n * const { vectorChar, vectorText } = require('@jscad/modeling').text\n */\nmodule.exports = {\n vectorChar: require('./vectorChar'),\n vectorText: require('./vectorText')\n}\n","const vectorParams = require('./vectorParams')\n\n/**\n * Represents a character as a list of segments\n * @typedef {Object} VectorCharObject\n * @property {Float} width - character width\n * @property {Float} height - character height (uppercase)\n * @property {Array} segments - character segments [[[x, y], ...], ...]\n */\n\n/** Construct a {@link VectorCharObject} from a ascii character whose code is between 31 and 127,\n* if the character is not supported it is replaced by a question mark.\n* @param {Object|String} [options] - options for construction or ascii character\n* @param {Float} [options.xOffset=0] - x offset\n* @param {Float} [options.yOffset=0] - y offset\n* @param {Float} [options.height=21] - font size (uppercase height)\n* @param {Float} [options.extrudeOffset=0] - width of the extrusion that will be applied (manually) after the creation of the character\n* @param {String} [options.input='?'] - ascii character (ignored/overwrited if provided as seconds parameter)\n* @param {String} [char='?'] - ascii character\n* @returns {VectorCharObject}\n* @alias module:modeling/text.vectorChar\n*\n* @example\n* let vectorCharObject = vectorChar()\n* or\n* let vectorCharObject = vectorChar('A')\n* or\n* let vectorCharObject = vectorChar({ xOffset: 57 }, 'C')\n* or\n* let vectorCharObject = vectorChar({ xOffset: 78, input: '!' })\n*/\nconst vectorChar = (options, char) => {\n const {\n xOffset, yOffset, input, font, height, extrudeOffset\n } = vectorParams(options, char)\n let code = input.charCodeAt(0)\n if (!code || !font[code]) {\n code = 63 // 63 => ?\n }\n const glyph = [].concat(font[code])\n const ratio = (height - extrudeOffset) / font.height\n const extrudeYOffset = (extrudeOffset / 2)\n const width = glyph.shift() * ratio\n const segments = []\n let polyline = []\n for (let i = 0, il = glyph.length; i < il; i += 2) {\n const gx = ratio * glyph[i] + xOffset\n const gy = ratio * glyph[i + 1] + yOffset + extrudeYOffset\n if (glyph[i] !== undefined) {\n polyline.push([gx, gy])\n continue\n }\n segments.push(polyline)\n polyline = []\n i--\n }\n if (polyline.length) {\n segments.push(polyline)\n }\n return { width, height, segments }\n}\n\nmodule.exports = vectorChar\n","const defaultFont = require('./fonts/single-line/hershey/simplex.js')\n\nconst defaultsVectorParams = {\n xOffset: 0,\n yOffset: 0,\n input: '?',\n align: 'left',\n font: defaultFont,\n height: 14, // == old vector_xxx simplex font height\n lineSpacing: 2.142857142857143, // == 30/14 == old vector_xxx ratio\n letterSpacing: 1,\n extrudeOffset: 0\n}\n\n// vectorsXXX parameters handler\nconst vectorParams = (options, input) => {\n if (!input && typeof options === 'string') {\n options = { input: options }\n }\n options = options || {}\n const params = Object.assign({}, defaultsVectorParams, options)\n params.input = input || params.input\n return params\n}\n\nmodule.exports = vectorParams\n","const vectorChar = require('./vectorChar')\nconst vectorParams = require('./vectorParams')\n\n// translate text line\nconst translateLine = (options, line) => {\n const { x, y } = Object.assign({ x: 0, y: 0 }, options || {})\n const segments = line.segments\n let segment = null\n let point = null\n for (let i = 0, il = segments.length; i < il; i++) {\n segment = segments[i]\n for (let j = 0, jl = segment.length; j < jl; j++) {\n point = segment[j]\n segment[j] = [point[0] + x, point[1] + y]\n }\n }\n return line\n}\n\n/**\n * Construct an array of character segments from a ascii string whose characters code is between 31 and 127,\n * if one character is not supported it is replaced by a question mark.\n * @param {Object|String} [options] - options for construction or ascii string\n * @param {Float} [options.xOffset=0] - x offset\n * @param {Float} [options.yOffset=0] - y offset\n * @param {Float} [options.height=21] - font size (uppercase height)\n * @param {Float} [options.lineSpacing=1.4] - line spacing expressed as a percentage of font size\n * @param {Float} [options.letterSpacing=1] - extra letter spacing expressed as a percentage of font size\n * @param {String} [options.align='left'] - multi-line text alignment: left, center, right\n * @param {Float} [options.extrudeOffset=0] - width of the extrusion that will be applied (manually) after the creation of the character\n * @param {String} [options.input='?'] - ascii string (ignored/overwrited if provided as seconds parameter)\n * @param {String} [text='?'] - ascii string\n * @returns {Array} characters segments [[[x, y], ...], ...]\n * @alias module:modeling/text.vectorText\n *\n * @example\n * let textSegments = vectorText()\n * or\n * let textSegments = vectorText('OpenJSCAD')\n * or\n * let textSegments = vectorText({ yOffset: -50 }, 'OpenJSCAD')\n * or\n * let textSegments = vectorText({ yOffset: -80, input: 'OpenJSCAD' })\n */\nconst vectorText = (options, text) => {\n const {\n xOffset, yOffset, input, font, height, align, extrudeOffset, lineSpacing, letterSpacing\n } = vectorParams(options, text)\n let [x, y] = [xOffset, yOffset]\n let i, il, char, vect, width, diff\n let line = { width: 0, segments: [] }\n const lines = []\n let output = []\n let maxWidth = 0\n const lineStart = x\n const pushLine = () => {\n lines.push(line)\n maxWidth = Math.max(maxWidth, line.width)\n line = { width: 0, segments: [] }\n }\n for (i = 0, il = input.length; i < il; i++) {\n char = input[i]\n vect = vectorChar({ xOffset: x, yOffset: y, font, height, extrudeOffset }, char)\n if (char === '\\n') {\n x = lineStart\n y -= vect.height * lineSpacing\n pushLine()\n continue\n }\n width = vect.width * letterSpacing\n line.width += width\n x += width\n if (char !== ' ') {\n line.segments = line.segments.concat(vect.segments)\n }\n }\n if (line.segments.length) {\n pushLine()\n }\n for (i = 0, il = lines.length; i < il; i++) {\n line = lines[i]\n if (maxWidth > line.width) {\n diff = maxWidth - line.width\n if (align === 'right') {\n line = translateLine({ x: diff }, line)\n } else if (align === 'center') {\n line = translateLine({ x: diff / 2 }, line)\n }\n }\n output = output.concat(line.segments)\n }\n return output\n}\n\nmodule.exports = vectorText\n","// list of supported geometries\nconst geom2 = require('../geometries/geom2')\nconst geom3 = require('../geometries/geom3')\nconst path2 = require('../geometries/path2')\n\n/**\n * @param {Array} shapes - list of shapes to compare\n * @returns {Boolean} true if the given shapes are of the same type\n * @alias module:modeling/utils.areAllShapesTheSameType\n */\nconst areAllShapesTheSameType = (shapes) => {\n let previousType\n for (const shape of shapes) {\n let currentType = 0\n if (geom2.isA(shape)) currentType = 1\n if (geom3.isA(shape)) currentType = 2\n if (path2.isA(shape)) currentType = 3\n\n if (previousType && currentType !== previousType) return false\n previousType = currentType\n }\n return true\n}\n\nmodule.exports = areAllShapesTheSameType\n","/**\n * Convert the given angle (degrees) to radians.\n * @param {Number} degrees - angle in degrees\n * @returns {Number} angle in radians\n * @alias module:modeling/utils.degToRad\n */\nconst degToRad = (degrees) => degrees * 0.017453292519943295\n\nmodule.exports = degToRad\n","/**\n * Flatten the given list of arguments into a single flat array.\n * The arguments can be composed of multiple depths of objects and arrays.\n * @param {Array} arr - list of arguments\n * @returns {Array} a flat list of arguments\n * @alias module:modeling/utils.flatten\n */\nconst flatten = (arr) => arr.reduce((acc, val) => Array.isArray(val) ? acc.concat(flatten(val)) : acc.concat(val), [])\n\nmodule.exports = flatten\n","/**\n * @alias module:modeling/utils.fnNumberSort\n */\nconst fnNumberSort = (a, b) => a - b\n\nmodule.exports = fnNumberSort\n","/**\n * Utility functions of various sorts.\n * @module modeling/utils\n * @example\n * const { flatten, insertSorted } = require('@jscad/modeling').utils\n */\nmodule.exports = {\n areAllShapesTheSameType: require('./areAllShapesTheSameType'),\n degToRad: require('./degToRad'),\n flatten: require('./flatten'),\n fnNumberSort: require('./fnNumberSort'),\n insertSorted: require('./insertSorted'),\n radiusToSegments: require('./radiusToSegments'),\n radToDeg: require('./radToDeg')\n}\n","/**\n * Insert the given element into the given array using the compareFunction.\n * @alias module:modeling/utils.insertSorted\n */\nconst insertSorted = (array, element, comparefunc) => {\n let leftbound = 0\n let rightbound = array.length\n while (rightbound > leftbound) {\n const testindex = Math.floor((leftbound + rightbound) / 2)\n const testelement = array[testindex]\n const compareresult = comparefunc(element, testelement)\n if (compareresult > 0) { // element > testelement\n leftbound = testindex + 1\n } else {\n rightbound = testindex\n }\n }\n array.splice(leftbound, 0, element)\n}\n\nmodule.exports = insertSorted\n","/**\n * Build an array of at minimum a specified length from an existing array and a padding value. IF the array is already larger than the target length, it will not be shortened.\n * @param {Array} anArray - the source array to copy into the result.\n * @param {*} padding - the value to add to the new array to reach the desired length.\n * @param {Number} targetLength - The desired length of the return array.\n * @returns {Array} an array of at least 'targetLength' length\n * @alias module:modeling/utils.padArrayToLength\n */\nconst padArrayToLength = (anArray, padding, targetLength) => {\n anArray = anArray.slice()\n while (anArray.length < targetLength) {\n anArray.push(padding)\n }\n return anArray\n}\n\nmodule.exports = padArrayToLength\n","/**\n * Convert the given angle (radians) to degrees.\n * @param {Number} radians - angle in radians\n * @returns {Number} angle in degrees\n * @alias module:modeling/utils.radToDeg\n */\nconst radToDeg = (radians) => radians * 57.29577951308232\n\nmodule.exports = radToDeg\n","const { TAU } = require('../maths/constants')\n\n/**\n * Calculate the number of segments from the given radius based on minimum length or angle.\n * @param {Number} radius - radius of the requested shape\n * @param {Number} minimumLength - minimum length of segments; length > 0\n * @param {Number} minimumAngle - minimum angle (radians) between segments; 0 > angle < TAU\n * @returns {Number} number of segments to complete the radius\n * @alias module:modeling/utils.radiusToSegments\n */\nconst radiusToSegments = (radius, minimumLength, minimumAngle) => {\n const ss = minimumLength > 0 ? radius * TAU / minimumLength : 0\n const as = minimumAngle > 0 ? TAU / minimumAngle : 0\n // minimum segments is four(4) for round primitives\n return Math.ceil(Math.max(ss, as, 4))\n}\n\nmodule.exports = radiusToSegments\n","// modified version of https://github.com/thibauts/vertices-bounding-box that also works with non nested positions\nconst boundingBox = (positions) => {\n if (positions.length === 0) {\n return [[0, 0, 0], [0, 0, 0]]\n }\n\n const nested = (Array.isArray(positions) && Array.isArray(positions[0]))\n\n const dimensions = nested ? positions[0].length : 3\n const min = new Array(dimensions)\n const max = new Array(dimensions)\n\n for (let i = 0; i < dimensions; i += 1) {\n min[i] = Infinity\n max[i] = -Infinity\n }\n\n if (nested) {\n positions.forEach((position) => {\n for (let i = 0; i < dimensions; i += 1) {\n const _position = nested ? position[i] : position\n max[i] = _position > max[i] ? _position : max[i] // position[i] > max[i] ? position[i] : max[i]\n min[i] = _position < min[i] ? _position : min[i] // min[i] = position[i] < min[i] ? position[i] : min[i]\n }\n })\n } else {\n for (let j = 0; j < positions.length; j += dimensions) {\n for (let i = 0; i < dimensions; i += 1) {\n const _position = positions[i + j] // nested ? positions[i] : position\n max[i] = _position > max[i] ? _position : max[i] // position[i] > max[i] ? position[i] : max[i]\n min[i] = _position < min[i] ? _position : min[i] // min[i] = position[i] < min[i] ? position[i] : min[i]\n }\n }\n }\n\n return [min, max]\n}\nmodule.exports = boundingBox\n","const vec3 = require('gl-vec3')\n\nconst { flatten } = require('@jscad/array-utils')\n\nconst boundingBox = require('./boundingBox')\n\n/*\n * Compute the bounds of the given geometries.\n * See geometry-utils-V2\n * @param {geometry|Array} geometries - geometry or list of geometries to measure\n * @return {Object} the bounds of the given geometries\n * bounds: {\n * dia: 40,\n * center: [0,20,8],\n * min: [9, -10, 0],\n * max: [15, 10, 4]\n * size: [6,20,4]\n * }\n */\nconst computeBounds = (...geometries) => {\n geometries = flatten(geometries)\n\n let bbox // min and max\n geometries.forEach((geometry) => {\n let gbbox = boundingBox(geometry.positions)\n gbbox = gbbox.map((bounds) => vec3.transformMat4(bounds, bounds, geometry.transforms))\n if (bbox) {\n vec3.min(bbox[0], bbox[0], gbbox[0])\n vec3.max(bbox[1], bbox[1], gbbox[1])\n } else {\n bbox = gbbox\n }\n })\n\n const min = vec3.min(vec3.create(), bbox[1], bbox[0])\n const max = vec3.max(vec3.create(), bbox[1], bbox[0])\n\n const size = vec3.subtract(vec3.create(), max, min)\n let center = vec3.scale(vec3.create(), size, 0.5)\n center = vec3.add(center, min, center)\n // aproximate diamter\n const dia = vec3.distance(center, max)\n\n const bounds = {\n dia,\n center: [...center],\n min: [...min],\n max: [...max],\n size: [...size]\n }\n return bounds\n}\n\nmodule.exports = computeBounds\n","const vec3 = require('gl-vec3')\nconst mat4 = require('gl-mat4')\n\nconst fromOrthographicToPerspective = (orthographicCamera) => {\n const { near, far, fov, zoom } = orthographicCamera\n // recompute projection matrix to use perspective camera projection matrix\n const { viewport } = orthographicCamera\n const projection = require('./perspectiveCamera').setProjection(orthographicCamera, { width: viewport[2], height: viewport[3] })\n const { projectionType } = require('./perspectiveCamera').cameraState\n return Object.assign({}, orthographicCamera, projection, { projectionType }, { near, far, fov })\n}\n\nconst fromPerspectiveToOrthographic = (perspectiveCamera) => {\n const { fov, aspect } = perspectiveCamera\n\n // set the orthographic view rectangle to 0,0,width,height\n // see here : http://stackoverflow.com/questions/13483775/set-zoomvalue-of-a-perspective-equal-to-perspective\n\n const distance = vec3.length(vec3.subtract([], perspectiveCamera.position, perspectiveCamera.target)) * 0.3\n const width = Math.tan(fov) * distance * aspect\n const height = Math.tan(fov) * distance\n\n // we re-use near, far, & projection matrix of orthographicCamera\n const { near, far, viewport } = perspectiveCamera\n const fCam = { zoom: 1, near, far }\n const orthographicCamera = require('./orthographicCamera').cameraState\n const projection = require('./orthographicCamera').setProjection(fCam, { width, height })\n return Object.assign({}, orthographicCamera, perspectiveCamera, projection, { projectionType: orthographicCamera.projectionType, viewport })\n}\n\nconst toPerspectiveView = ({ camera }) => {\n const offsetToTarget = vec3.distance(camera.position, camera.target)\n const distance = offsetToTarget\n const position = [distance, distance, distance]\n const view = mat4.lookAt(mat4.create(), position, camera.target, camera.up)\n\n return { view, position }\n}\n\n/**\n * Calculate the camera view and position for acheiving the given preset view.\n */\nconst toPresetView = (viewName, { camera }) => {\n const presets = {\n top: [0, -0.000001, 1],\n bottom: [0, 0, -1],\n front: [0, 1, 0],\n back: [0, -1, 0],\n left: [-1, 0, 0],\n right: [1, 0, 0],\n undefined: [0, 0, 0]\n }\n\n const offsetToTarget = vec3.distance(camera.position, camera.target)\n const position = vec3.add(vec3.create(), presets[viewName].map((x) => x * offsetToTarget), camera.target)\n const view = mat4.lookAt(mat4.create(), position, camera.target, camera.up)\n\n return { view, position }\n}\n\nmodule.exports = {\n toPerspectiveView,\n toPresetView,\n fromOrthographicToPerspective,\n fromPerspectiveToOrthographic\n}\n","const mat4 = require('gl-mat4')\n\nconst cameraState = {\n view: mat4.identity(new Float32Array(16)),\n projection: mat4.identity(new Float32Array(16)),\n matrix: mat4.identity(new Float32Array(16)), // not sure if needed\n near: 1, // 0.01,\n far: 1300,\n up: [0, 0, 1],\n // distance: 10.0, // not sure if needed\n eye: new Float32Array(3), // same as position\n position: [150, 250, 200],\n target: [0, 0, 0],\n fov: Math.PI / 4,\n aspect: 1,\n viewport: [0, 0, 0, 0],\n zoom: 1,\n projectionType: 'orthographic'\n}\n\nconst cameraProps = {}\n\nconst setProjection = (camera, input) => {\n const { width, height } = input\n // context.viewportWidth / context.viewportHeight,\n const aspect = width / height\n const viewport = [0, 0, width, height]\n const multiplier = camera.zoom\n\n const left = -width * multiplier\n const right = width * multiplier\n const bottom = -height * multiplier\n const top = height * multiplier\n\n const projection = mat4.ortho([], left, right, bottom, top, camera.near, camera.far)\n return { projection, aspect, viewport }\n}\n\nmodule.exports = { cameraState, cameraProps, setProjection }\n","const mat4 = require('gl-mat4')\nconst vec3 = require('gl-vec3')\n\nconst cameraState = {\n view: mat4.identity(new Float32Array(16)),\n projection: mat4.identity(new Float32Array(16)),\n matrix: mat4.identity(new Float32Array(16)), // not sure if needed\n near: 1, // 0.01,\n far: 18000,\n up: [0, 0, 1],\n // distance: 10.0, // not sure if needed\n eye: new Float32Array(3), // same as position\n position: [450, 550, 700],\n target: [0, 0, 0],\n fov: Math.PI / 4,\n aspect: 1,\n viewport: [0, 0, 0, 0],\n projectionType: 'perspective'\n}\n\nconst cameraProps = {}\nconst defaults = Object.assign({}, cameraState, cameraProps)\n\nconst setProjection = (output, camera, input) => {\n // context.viewportWidth / context.viewportHeight,\n const aspect = input.width / input.height\n\n const projection = mat4.perspective(mat4.identity([]), camera.fov, aspect,\n camera.near,\n camera.far)\n const viewport = [0, 0, input.width, input.height]\n\n // optional mutation\n const out = output || {}\n out.projection = projection\n out.aspect = aspect\n out.viewport = viewport\n\n return out\n}\n\nconst update = (output, camera) => {\n if (!camera) {\n camera = output\n }\n const { position, target, up } = camera\n const offset = vec3.subtract([], position, target)\n const newPosition = vec3.add(vec3.create(), target, offset)\n const newView = mat4.lookAt(mat4.create(), newPosition, target, up)\n\n // optional mutation\n const out = output || {}\n out.position = newPosition\n out.view = newView\n return out\n}\n\nmodule.exports = { cameraState, cameraProps, defaults, setProjection, update }\n","const vec3 = require('gl-vec3')\nconst mat4 = require('gl-mat4')\nconst { max, min, sqrt, PI, sin, cos, atan2 } = Math\n\nconst computeBounds = require('../bound-utils/computeBounds')\n\n// TODO: make it more data driven ?\n/*\nsetFocus => modify the focusPoint input\nrotate => modify the angle input\n\n*/\n/* cameras are assumed to have:\n projection\n view\n target (focal point)\n eye/position\n up\n*/\n// TODO: multiple data, sometimes redundant, needs simplification\n/*\n- camera state\n- camera props\n\n- controls state\n- controls props\n\n- other\n\n*/\n\nconst controlsProps = {\n limits: {\n minDistance: 0.01,\n maxDistance: 10000\n },\n drag: 0.27, // Decrease the momentum by 1% each iteration\n EPS: 0.000001,\n zoomToFit: {\n auto: true, // always tried to apply zoomTofit\n targets: 'all',\n tightness: 1.5 // how close should the fit be: the lower the tigher : 1 means very close, but fitting most of the time\n },\n // all these, not sure are needed in this shape\n userControl: {\n zoom: true,\n zoomSpeed: 1.0,\n rotate: true,\n rotateSpeed: 1.0,\n pan: true,\n panSpeed: 1.0\n },\n autoRotate: {\n enabled: false,\n speed: 1.0 // 30 seconds per round when fps is 60\n },\n autoAdjustPlanes: true // adjust near & far planes when zooming in &out\n}\n\nconst controlsState = {\n // orbit controls state\n thetaDelta: 0,\n phiDelta: 0,\n scale: 1\n}\n\nconst defaults = Object.assign({}, controlsState, controlsProps)\n\nconst update = ({ controls, camera }, output) => {\n // custom z up is settable, with inverted Y and Z (since we use camera[2] => up)\n const { EPS, drag } = controls\n const { position, target } = camera\n const up = controls.up ? controls.up : camera.up\n\n let curThetaDelta = controls.thetaDelta\n const curPhiDelta = controls.phiDelta\n const curScale = controls.scale\n\n const offset = vec3.subtract([], position, target)\n let theta\n let phi\n\n if (up[2] === 1) {\n // angle from z-axis around y-axis, upVector : z\n theta = atan2(offset[0], offset[1])\n // angle from y-axis\n phi = atan2(sqrt(offset[0] * offset[0] + offset[1] * offset[1]), offset[2])\n } else {\n // in case of y up\n theta = atan2(offset[0], offset[2])\n phi = atan2(sqrt(offset[0] * offset[0] + offset[2] * offset[2]), offset[1])\n // curThetaDelta = -(curThetaDelta)\n }\n\n if (controls.autoRotate.enabled && controls.userControl.rotate) {\n curThetaDelta += 2 * Math.PI / 60 / 60 * controls.autoRotate.speed\n }\n\n theta += curThetaDelta\n phi += curPhiDelta\n\n // restrict phi to be betwee EPS and PI-EPS\n phi = max(EPS, min(PI - EPS, phi))\n // multiply by scaling effect and restrict radius to be between desired limits\n const radius = max(controls.limits.minDistance, min(controls.limits.maxDistance, vec3.length(offset) * curScale))\n\n if (up[2] === 1) {\n offset[0] = radius * sin(phi) * sin(theta)\n offset[2] = radius * cos(phi)\n offset[1] = radius * sin(phi) * cos(theta)\n } else {\n offset[0] = radius * sin(phi) * sin(theta)\n offset[1] = radius * cos(phi)\n offset[2] = radius * sin(phi) * cos(theta)\n }\n\n const newPosition = vec3.add(vec3.create(), target, offset)\n const newView = mat4.lookAt(mat4.create(), newPosition, target, up)\n\n const dragEffect = 1 - max(min(drag, 1.0), 0.01)\n const positionChanged = vec3.distance(position, newPosition) > 0.001\n\n /* let newMatrix = mat4.create()\n newMatrix = mat4.lookAt(newMatrix, newPosition, target, up)\n newMatrix = mat4.translate(matrix, matrix, newPosition) */\n\n // update camera matrix\n // let quaternion = quatFromRotationMatrix(mat4.lookAt(mat4.create(), [0, 0, 0], target, up))\n // let newMatrix = composeMat4(mat4.create(), newPosition, quaternion, [1, 1, 1])\n\n // view = newMatrix\n\n /* if (output) {\n output.controls.thetaDelta = curThetaDelta * dragEffect\n } */\n\n return {\n // controls state\n controls: {\n thetaDelta: curThetaDelta * dragEffect,\n phiDelta: curPhiDelta * dragEffect,\n scale: 1,\n changed: positionChanged\n },\n // camera state\n camera: {\n position: newPosition,\n view: newView\n }\n // matrix: newMatrix\n }\n}\n\n/**\n * compute camera state to rotate the camera\n * @param {Object} controls the controls data/state\n * @param {Object} camera the camera data/state\n * @param {Float} angle value of the angle to rotate\n * @return {Object} the updated camera data/state\n*/\nconst rotate = ({ controls, camera, speed = 1 }, angle) => {\n let {\n thetaDelta,\n phiDelta\n } = controls\n\n if (controls.userControl.rotate) {\n thetaDelta += (angle[0] * speed)\n phiDelta += (angle[1] * speed)\n }\n\n return {\n controls: {\n thetaDelta,\n phiDelta\n },\n camera\n }\n}\n\n/**\n * compute camera state to zoom the camera\n * @param {Object} controls the controls data/state\n * @param {Object} camera the camera data/state\n * @param {Float} zoomDelta value of the zoom\n * @return {Object} the updated camera data/state\n*/\nconst zoom = ({ controls, camera, speed = 1 }, zoomDelta = 0) => {\n let { scale } = controls\n\n if (controls.userControl.zoom && camera && zoomDelta !== undefined && zoomDelta !== 0 && !isNaN(zoomDelta)) {\n const sign = Math.sign(zoomDelta) === 0 ? 1 : Math.sign(zoomDelta)\n zoomDelta = (zoomDelta / zoomDelta) * sign * speed// controls.userControl.zoomSpeed\n // adjust zoom scaling based on distance : the closer to the target, the lesser zoom scaling we apply\n // zoomDelta *= Math.exp(Math.max(camera.scale * 0.05, 1))\n // updated scale after we will apply the new zoomDelta to the current scale\n const newScale = (zoomDelta + controls.scale)\n // updated distance after the scale has been updated, used to prevent going outside limits\n const newDistance = vec3.distance(camera.position, camera.target) * newScale\n\n if (newDistance > controls.limits.minDistance && newDistance < controls.limits.maxDistance) {\n scale += zoomDelta\n }\n // for ortho cameras\n if (camera.projectionType === 'orthographic') {\n const distance = vec3.length(vec3.subtract([], camera.position, camera.target)) * 0.3\n const width = Math.tan(camera.fov) * distance * camera.aspect\n const height = Math.tan(camera.fov) * distance\n\n const projection = require('../cameras/orthographicCamera').setProjection(camera, { width, height })\n camera = projection\n }\n\n /* if (controls.autoAdjustPlanes) {\n // these are empirical values , after a LOT of testing\n const distance = vec3.squaredDistance(camera.target, camera.position)\n camera.near = Math.min(Math.max(5, distance * 0.0015), 100)\n } */\n }\n return { controls: { scale }, camera }\n}\n\n/**\n * compute camera state to pan the camera\n * @param {Object} controls the controls data/state\n * @param {Object} camera the camera data/state\n * @param {Float} delta value of the raw pan delta\n * @return {Object} the updated camera data/state\n*/\nconst pan = ({ controls, camera, speed = 1 }, delta) => {\n const unproject = require('camera-unproject')\n const { projection, view, viewport } = camera\n const combinedProjView = mat4.multiply([], projection, view)\n const invProjView = mat4.invert([], combinedProjView)\n\n const panStart = [\n viewport[2],\n viewport[3],\n 0\n ]\n const panEnd = [\n viewport[2] - delta[0],\n viewport[3] + delta[1],\n 0\n ]\n const unPanStart = unproject([], panStart, viewport, invProjView)\n const unPanEnd = unproject([], panEnd, viewport, invProjView)\n const eyeDistance = vec3.distance(camera.position, camera.eye)\n\n const offset = vec3.subtract([], unPanStart, unPanEnd).map((x) => x * speed * eyeDistance * controls.scale)\n\n return {\n controls,\n camera: {\n position: vec3.add(vec3.create(), camera.position, offset),\n target: vec3.add(vec3.create(), camera.target, offset)\n }\n }\n}\n\n/**\n * compute camera state to 'fit' an object on screen\n * Note1: this is a non optimal but fast & easy implementation\n * @param {Object} controls the controls data/state\n * @param {Object} camera the camera data/state\n * @param {Array} entities - an array of entities (see entitiesFromSolids)\n * @return {Object} the updated camera data/state\n*/\nconst zoomToFit = ({ controls, camera, entities }) => {\n // our camera.fov is already in radian, no need to convert\n const { zoomToFit } = controls\n if (zoomToFit.targets !== 'all') {\n return { controls, camera }\n }\n\n if (entities.length === 0) return { controls, camera }\n\n // compute the overall bounds\n const geometries = entities.map((entity) => entity.geometry)\n const bounds = computeBounds(geometries)\n\n // fixme: for now , we only use the first item\n const { fov, target, position } = camera\n const { tightness } = Object.assign({}, zoomToFit, controlsProps.zoomToFit)\n /*\n - x is scaleForIdealDistance\n - currentDistance is fixed\n - how many times currentDistance * x = idealDistance\n So\n x = idealDistance / currentDistance\n */\n const idealDistanceFromCamera = (bounds.dia * tightness) / Math.tan(fov / 2.0)\n const currentDistance = vec3.distance(target, position)\n const scaleForIdealDistance = idealDistanceFromCamera / currentDistance\n\n return {\n camera: { target: bounds.center },\n controls: { scale: scaleForIdealDistance }\n }\n}\n\n/**\n * compute controls state to 'reset it' to the given state\n * Note1: this is a non optimal but fast & easy implementation\n * @param {Object} controls the controls data/state\n * @param {Object} camera the camera data/state\n * @param {Object} desiredState the state to reset the camera to: defaults to default values\n * @return {Object} the updated camera data/state\n*/\nconst reset = ({ controls, camera }, desiredState) => {\n const options = {\n camera: {\n position: desiredState.camera.position,\n target: desiredState.camera.target,\n projection: mat4.perspective([], camera.fov, camera.aspect, camera.near, camera.far),\n view: desiredState.camera.view\n },\n controls: {\n thetaDelta: desiredState.controls.thetaDelta,\n phiDelta: desiredState.controls.phiDelta,\n scale: desiredState.controls.scale\n }\n }\n return options\n}\n\nmodule.exports = {\n controlsProps,\n controlsState,\n defaults,\n update,\n rotate,\n zoom,\n pan,\n zoomToFit,\n reset\n}\n","const { flatten, toArray } = require('@jscad/array-utils')\n\nconst { meshColor } = require('../rendering/renderDefaults')\n\nconst geom2ToGeometries = require('./geom2ToGeometries')\nconst geom3ToGeometries = require('./geom3ToGeometries')\nconst path2ToGeometries = require('./path2ToGeometries')\n\n/*\n * Assemble a set of renderable entities from the given geometries.\n */\nconst assembleEntities = (geometries) => {\n const entities = geometries.map((geometry) => {\n const visuals = {\n drawCmd: geometry.type === '2d' ? 'drawLines' : 'drawMesh',\n show: true,\n transparent: geometry.isTransparent,\n useVertexColors: true\n }\n const entity = {\n geometry,\n visuals\n }\n return entity\n })\n return entities\n}\n\n/**\n * Convert the given solids into renderable entities.\n * Each 'solid' (V2 geometry) is converted to a WEBGL renderable 'geometry'.\n * The resulting entities are passed as properities to the render.\n * @param {Object} options - options for construction\n * @param {Array} [options.color] - color for rendering, if the solid does not provide a color\n * @param {Boolean} [options.smoothNormals=true] - smooth the normals of 3d solids, rendering a smooth surface\n * @returns {Array} an array of renderable entities\n */\nconst entitiesFromSolids = (options, ...solids) => {\n const defaults = {\n color: meshColor,\n smoothNormals: true\n }\n const { color, smoothNormals } = Object.assign({}, defaults, options)\n\n solids = flatten(toArray(solids))\n solids = solids.filter((solid) => solid && (solid instanceof Object))\n\n const entities = []\n solids.forEach((solid) => {\n let geometries = []\n if ('sides' in solid) {\n geometries = geom2ToGeometries({ color }, solid)\n } else if ('points' in solid) {\n geometries = path2ToGeometries({ color }, solid)\n } else if ('polygons' in solid) {\n geometries = geom3ToGeometries({\n smoothLighting: smoothNormals,\n normalThreshold: 0.3,\n color\n }, solid)\n }\n entities.push(...assembleEntities(geometries))\n })\n return entities\n}\n\nmodule.exports = entitiesFromSolids\n","const mat4 = require('gl-mat4')\n\nconst maxIndex = Math.floor(65535 / 2) // two vertices per segment\n\n/*\n * Convert the given solid into one or more geometries for rendering.\n * @param {Object} options - options for conversion\n * @param {Array} options.color - RGBA of solid\n * @param {geom2} solid - the solid to convert\n * @return {Array} list of new geometries\n */\nconst geom2ToGeometries = (options, solid) => {\n let { color } = options\n\n const sides = solid.sides\n if (sides.length === 0) return []\n\n if ('color' in solid) color = solid.color\n const isTransparent = (color[3] < 1.0)\n const colors = []\n const numgeometries = Math.floor(sides.length / (maxIndex)) + 1\n\n const addColor = (startColor, endColor) => {\n // each line needs 2 colors: startColor and endColor\n // endColor is optional\n colors.push(startColor, endColor || startColor)\n }\n\n const geometries = []\n for (let g = 0; g < numgeometries; g++) {\n const offset = g * maxIndex\n const endset = Math.min(offset + maxIndex, sides.length)\n const positions = []\n\n for (let i = offset; i < endset; i++) {\n const side = sides[i]\n if (side.color) {\n // backfill colors, so colors array is not used unless at least one side has color defined\n if (colors.length === 0 && positions.length > 0) {\n const toFill = positions.length\n for (let j = 0; j < toFill; j++) {\n colors.push(color) // push default color\n }\n }\n // shader actually allows for gradient on the lines by design\n addColor(side.color, side.endColor)\n } else if (colors.length) {\n addColor(color)\n }\n positions.push([side[0][0], side[0][1], 0])\n positions.push([side[1][0], side[1][1], 0])\n }\n // assemble the geometry\n const normals = positions.map((x) => [0, 0, -1])\n const indices = positions.map((x, i) => i)\n const transforms = solid.transforms ? mat4.clone(solid.transforms) : mat4.create()\n\n // FIXME positions should be Float32Array buffers to eliminate another conversion\n // FIXME normals should be Float32Array buffers to eliminate another conversion\n // FIXME indices should be Uint16Array buffers to eliminate another conversion\n geometries.push({ type: '2d', positions, normals, indices, transforms, color, colors, isTransparent })\n }\n return geometries\n}\n\nmodule.exports = geom2ToGeometries\n","const vec3 = require('gl-vec3')\nconst mat4 = require('gl-mat4')\n\nconst maxIndex = 65535\n\n/*\n * Convert the given solid into one or more geometries for rendering.\n * @param {Object} options - options for conversion\n * @param {Array} options.color - RGBA of solid\n * @param {Boolean} options.smoothLighting - set to true in order to use interpolated vertex normals\n * this creates nice round spheres but does not represent the shape of the actual model\n * @param {geom3} solid - the solid to convert\n * @return {Array} list of new geometries\n */\nconst geom3ToGeometries = (options, solid) => {\n let { color, smoothLighting } = options\n\n if ('color' in solid) color = solid.color\n\n const polygons = solid.polygons\n const transforms = solid.transforms ? mat4.clone(solid.transforms) : mat4.create()\n\n const geometries = []\n\n let setstart = 0\n while (setstart < polygons.length) {\n // calculate end of this set\n let vcount = 0\n let setend = setstart\n for (let i = setstart; i < polygons.length; i++) {\n vcount += polygons[i].vertices.length\n if (vcount > maxIndex) break\n setend++\n }\n // temporary storage\n // create attributes of geometry\n const positions = []\n const normals = []\n const indices = []\n const colors = []\n const isTransparent = (color[3] < 1.0)\n\n for (let i = setstart; i < setend; i++) {\n const polygon = polygons[i]\n const vertices = polygon.vertices\n\n const normal = calculateNormal(polygon)\n const faceColor = polygonColor(polygon, color)\n\n const polygonIndices = []\n for (let j = 0; j < vertices.length; j++) {\n const position = vertices[j]\n\n positions.push(position)\n normals.push(normal)\n colors.push(faceColor)\n\n const index = positions.length - 1\n polygonIndices.push(index)\n }\n // add indices to list\n for (let j = 2; j < polygonIndices.length; j++) {\n indices.push([polygonIndices[0], polygonIndices[j - 1], polygonIndices[j]])\n }\n }\n // FIXME positions should be Float32Array buffers to eliminate another conversion\n // FIXME normals should be Float32Array buffers to eliminate another conversion\n // FIXME indices should be Uint16Array buffers to eliminate another conversion\n // FIXME colors should be Float32Array buffers to eliminate another conversion\n // assemble the geometry\n const geometry = {\n type: '3d',\n positions,\n normals,\n indices,\n colors,\n transforms,\n isTransparent\n }\n geometries.push(geometry)\n\n // continue on\n setstart = setend\n }\n return geometries\n}\n\n/*\n * TODO\n * TODO Implement smoothing\n * TODO\n */\nconst smoothing = () => {\n const polygons = []\n const color = []\n let isTransparent = true\n const smoothLighting = true\n const normalThreshold = 0.5 // threshold beyond which to split normals\n const positions = []\n const normals = []\n const indices = []\n const colors = []\n const normalPositionLookup = []\n let tupplesIndex = 0\n for (let i = 0; i < polygons.length; i++) {\n const polygon = polygons[i]\n const vertices = polygon.vertices\n const faceColor = polygonColor(polygon, color)\n const normal = calculateNormal(polygon)\n if (faceColor && faceColor[3] !== 1) isTransparent = true\n const polygonIndices = []\n // we need unique tupples of normal + position, that gives us a specific index (indices)\n // if the angle between a given normal and another normal is less than X they are considered the same\n for (let j = 0; j < vertices.length; j++) {\n let index\n const position = vertices[j]\n if (smoothLighting) {\n const candidateTupple = { normal, position }\n const existingTupple = fuzyNormalAndPositionLookup(normalPositionLookup, candidateTupple, normalThreshold)\n if (!existingTupple) {\n const existingPositing = normalPositionLookup[candidateTupple.position]\n const itemToAdd = [{ normal: candidateTupple.normal, index: tupplesIndex }]\n if (!existingPositing) {\n normalPositionLookup[candidateTupple.position] = itemToAdd\n } else {\n normalPositionLookup[candidateTupple.position] = normalPositionLookup[candidateTupple.position]\n .concat(itemToAdd)\n }\n index = tupplesIndex\n if (faceColor) {\n colors.push(faceColor)\n }\n normals.push(normal)\n positions.push(position)\n tupplesIndex += 1\n } else {\n index = existingTupple.index\n }\n } else {\n if (faceColor) {\n colors.push(faceColor)\n }\n normals.push(normal)\n positions.push(position)\n index = positions.length - 1\n }\n polygonIndices.push(index)\n }\n for (let j = 2; j < polygonIndices.length; j++) {\n indices.push([polygonIndices[0], polygonIndices[j - 1], polygonIndices[j]])\n }\n }\n}\n\n/**\n * return the color information of a polygon\n * @param {Object} polygon a polygon\n * @param {Object} color a default color\n * @returns {Array} `[r, g, b, a]`\n */\nconst polygonColor = (polygon, color) => {\n let faceColor = color\n\n if (polygon.color) {\n faceColor = polygon.color\n }\n // opaque is default\n if (faceColor && faceColor.length < 4) {\n faceColor.push(1.0)\n }\n return faceColor\n}\n\n/*\n * Calculate the normal of the given polygon\n */\nconst calculateNormal = (polygon) => {\n if (polygon.plane) return vec3.clone(polygon.plane)\n\n const vertices = polygon.vertices\n const ba = vec3.create()\n vec3.subtract(ba, vertices[1], vertices[0])\n const ca = vec3.create()\n vec3.subtract(ca, vertices[2], vertices[0])\n const normal = vec3.create()\n vec3.cross(normal, ba, ca)\n vec3.normalize(normal, normal)\n return normal\n}\n\n/*\n * determine if the two given normals are 'similar' ie if the distance/angle between the\n * two is less than the given threshold\n * @param {Array} normal a 3 component array normal\n * @param {Array} otherNormal another 3 component array normal\n * @returns {Boolean} true if the two normals are similar\n */\nconst areNormalsSimilar = (normal, otherNormal, threshold) => (vec3.distance(normal, otherNormal) <= threshold)\n\nconst fuzyNormalAndPositionLookup = (normalPositionLookup, toCompare, normalThreshold) => {\n const normalsCandidates = normalPositionLookup[toCompare.position]\n if (normalsCandidates) {\n // normalPositionLookup[toCompare.position] = normalPositionLookup[toCompare.position].concat([toCompare.normal])\n // get array of normals with same position\n for (let i = 0; i < normalsCandidates.length; i++) {\n const normal = normalsCandidates[i].normal\n const similarNormal = areNormalsSimilar(normal, toCompare.normal, normalThreshold)\n const similar = similarNormal\n if (similar) {\n return { tupple: { position: toCompare.position, normal }, index: normalsCandidates[i].index }\n }\n }\n }\n return undefined\n}\n\nmodule.exports = geom3ToGeometries\n","const mat4 = require('gl-mat4')\n\n// The only data types accepted by WebGL (and OpenGL ES 2.0) for indices are unsigned bytes and unsigned shorts.\n// Since an unsigned short has a range of 0-65535, this means that gl.DrawElements can only reference 65k vertices per draw call.\nconst maxIndex = Math.floor(65535 / 2) - 2 // two vertices per segment, less closing segment\n\n/*\n * Convert the given solid into one or more geometries for rendering.\n * @param {Object} options - options for conversion\n * @param {Array} options.color - RGBA of solid\n * @param {path2} solid - the solid to convert\n * @return {Array} list of new geometries\n */\nconst path2ToGeometries = (options, solid) => {\n let { color } = options\n\n const points = solid.points\n if (points.length === 0) return []\n\n if ('color' in solid) color = solid.color\n const isTransparent = (color[3] < 1.0)\n\n const numgeometries = Math.floor(points.length / (maxIndex)) + 1\n\n const geometries = []\n for (let g = 0; g < numgeometries; g++) {\n const offset = g * maxIndex\n const endset = Math.min(offset + maxIndex, points.length)\n const positions = []\n let prevvertice\n for (let i = offset; i < endset; i++) {\n const point = points[i]\n if (prevvertice) {\n positions.push([prevvertice[0], prevvertice[1], 0])\n positions.push([point[0], point[1], 0])\n }\n prevvertice = point\n }\n // add the last segment if necessary\n if ((g + 1) === numgeometries && solid.isClosed && prevvertice) {\n const point = points[0]\n positions.push([prevvertice[0], prevvertice[1], 0])\n positions.push([point[0], point[1], 0])\n }\n // assemble the geometry\n const normals = positions.map((x) => [0, 0, -1])\n const indices = positions.map((x, i) => i) // FIXME: temporary, not really needed, need to change drawLines\n const transforms = solid.transforms ? mat4.clone(solid.transforms) : mat4.create()\n\n // FIXME positions should be Float32Array buffers to eliminate another conversion\n // FIXME normals should be Float32Array buffers to eliminate another conversion\n // FIXME indices should be Uint16Array buffers to eliminate another conversion\n geometries.push({ type: '2d', positions, normals, indices, transforms, color, isTransparent })\n }\n return geometries\n}\n\nmodule.exports = path2ToGeometries\n","module.exports = {\n prepareRender: require('./rendering/render'),\n drawCommands: {\n // draw commands should bootstrap themselves the first time they are run\n drawGrid: require('./rendering/commands/drawGrid/multi.js'),\n drawAxis: require('./rendering/commands/drawAxis'),\n drawMesh: require('./rendering/commands/drawMesh'),\n drawLines: require('./rendering/commands/drawLines')\n },\n cameras: {\n camera: require('./cameras/camera'),\n orthographic: require('./cameras/orthographicCamera'),\n perspective: require('./cameras/perspectiveCamera')\n },\n controls: {\n orbit: require('./controls/orbitControls')\n },\n entitiesFromSolids: require('./geometry-utils-V2/entitiesFromSolids')\n\n}\n","const mat4 = require('gl-mat4')\n\nconst drawAxis = (regl, params) => {\n const defaults = {\n xColor: [1, 0, 0, 1],\n yColor: [0, 1, 0, 1],\n zColor: [0, 0, 1, 1],\n size: 10,\n lineWidth: 3, // FIXME/ linewidth has been \"deprecated\" in multiple browsers etc, need a workaround,\n alwaysVisible: true // to have the widget alway visible 'on top' of the rest of the scene\n }\n let { size, xColor, yColor, zColor, lineWidth, alwaysVisible } = Object.assign({}, defaults, params)\n\n if (lineWidth > regl.limits.lineWidthDims[1]) {\n lineWidth = regl.limits.lineWidthDims[1]\n }\n const points = [\n 0, 0, 0,\n size, 0, 0\n ]\n\n const commandParams = {\n frag: `precision mediump float;\n uniform vec4 color;\n void main() {\n gl_FragColor = color;\n }`,\n vert: `\n precision mediump float;\n attribute vec3 position;\n uniform mat4 model, view, projection;\n void main() {\n gl_Position = projection * view * model * vec4(position, 1);\n }`,\n\n uniforms: {\n model: (context, props) => props && props.model ? props.model : mat4.identity([]),\n color: (context, props) => props.color,\n angle: (contet, props) => props.angle\n },\n attributes: {\n position: points\n },\n count: points.length / 3,\n primitive: 'line loop',\n lineWidth,\n depth: {\n enable: !alwaysVisible // disable depth testing to have the axis widget 'alway on top' of other items in the 3d viewer\n }\n }\n\n const xAxisModel = mat4.identity([])\n const yAxisModel = mat4.rotateZ(mat4.create(), mat4.identity([]), Math.PI / 2)\n const zAxisModel = mat4.rotateY(mat4.create(), mat4.identity([]), -Math.PI / 2)\n const single = regl(commandParams)\n return (props) => {\n const defaults = {\n model: mat4.identity([])\n }\n props = Object.assign({}, defaults, props)\n return single([\n { color: xColor, model: mat4.multiply(mat4.create(), props.model, xAxisModel) }, // X\n { color: yColor, model: mat4.multiply(mat4.create(), props.model, yAxisModel) }, // Y\n { color: zColor, model: mat4.multiply(mat4.create(), props.model, zAxisModel) } // Z\n ])\n }\n}\n\nmodule.exports = drawAxis\n","const mat4 = require('gl-mat4')\n\nconst makeDrawGrid = (regl, params = {}) => {\n const positions = []\n const defaults = {\n visuals: {\n color: [0, 0, 1, 1],\n fadeOut: false\n },\n ticks: 1,\n size: [16, 16],\n centered: false,\n lineWidth: 2\n }\n const visuals = Object.assign({}, defaults.visuals, params.visuals || {})\n const { fadeOut, color } = visuals\n const { size, ticks, centered, lineWidth } = Object.assign({}, defaults, params)\n\n const width = size[0]\n const length = size[1]\n\n // if (false) {\n // const halfWidth = width * 0.5\n // const halfLength = length * 0.5\n // // const gridLine =\n // positions.push(-halfWidth, 0, 0)\n // positions.push(halfWidth, 0, 0)\n // }\n\n if (centered) {\n const halfWidth = width * 0.5\n const halfLength = length * 0.5\n\n const remWidth = halfWidth % ticks\n const widthStart = -halfWidth + remWidth\n const widthEnd = -widthStart\n\n const remLength = halfLength % ticks\n const lengthStart = -halfLength + remLength\n const lengthEnd = -lengthStart\n\n const skipEvery = 0\n\n for (let i = widthStart, j = 0; i <= widthEnd; i += ticks, j += 1) {\n if (j % skipEvery !== 0) {\n positions.push(lengthStart, i, 0)\n positions.push(lengthEnd, i, 0)\n positions.push(lengthStart, i, 0)\n }\n }\n for (let i = lengthStart, j = 0; i <= lengthEnd; i += ticks, j += 1) {\n if (j % skipEvery !== 0) {\n positions.push(i, widthStart, 0)\n positions.push(i, widthEnd, 0)\n positions.push(i, widthStart, 0)\n }\n }\n } else {\n for (let i = -width * 0.5; i <= width * 0.5; i += ticks) {\n positions.push(-length * 0.5, i, 0)\n positions.push(length * 0.5, i, 0)\n positions.push(-length * 0.5, i, 0)\n }\n\n for (let i = -length * 0.5; i <= length * 0.5; i += ticks) {\n positions.push(i, -width * 0.5, 0)\n positions.push(i, width * 0.5, 0)\n positions.push(i, -width * 0.5, 0)\n }\n }\n return regl({\n vert: `precision mediump float;\n\n uniform float camNear, camFar;\n uniform mat4 model, view, projection;\n\n attribute vec3 position;\n varying vec3 fragNormal, fragPosition;\n varying vec4 worldPosition;\n\n void main() {\n fragPosition = position;\n worldPosition = model * vec4(position, 1);\n vec4 glPosition = projection * view * worldPosition;\n gl_Position = glPosition;\n }`,\n frag: `precision mediump float;\n uniform vec4 color;\n varying vec3 fragNormal, fragPosition;\n varying vec4 worldPosition;\n\n uniform vec4 fogColor;\n uniform bool fadeOut;\n void main() {\n float dist = .5;\n if(fadeOut){\n dist = distance( vec2(0.,0.), vec2(worldPosition.x, worldPosition.y));\n dist *= 0.0025;\n dist = sqrt(dist);\n }\n\n gl_FragColor = mix(color, fogColor, dist);\n }\n `,\n\n attributes: {\n position: regl.buffer(positions)\n },\n count: positions.length / 3,\n uniforms: {\n model: (context, props) => props && props.model ? props.model : mat4.identity([]),\n color: (context, props) => props && props.color ? props.color : color,\n fogColor: (context, props) => props && props.color\n ? [props.color[0], props.color[1], props.color[2], 0]\n : [color[0], color[1], color[2], 0.0],\n fadeOut: (context, props) => props && props.fadeOut !== undefined ? props.fadeOut : fadeOut\n },\n lineWidth: (context, props) => Math.min((props && props.lineWidth ? props.lineWidth : lineWidth), regl.limits.lineWidthDims[1]),\n primitive: 'lines',\n cull: {\n enable: true,\n face: 'front'\n },\n polygonOffset: {\n enable: true,\n offset: {\n factor: 1,\n units: Math.random() * 10\n }\n },\n blend: {\n enable: true,\n func: {\n src: 'src alpha',\n dst: 'one minus src alpha'\n }\n }\n\n })\n}\n\nmodule.exports = makeDrawGrid\n","const makeDrawMultiGrid = (regl, params) => {\n const defaults = {\n size: [50, 50],\n ticks: [10, 1]\n }\n const { size, ticks } = Object.assign({}, defaults, params)\n const drawMainGrid = require('./index')(regl, { size, ticks: ticks[0] })\n const drawSubGrid = require('./index')(regl, { size, ticks: ticks[1] })\n const drawGrid = (props) => {\n drawMainGrid(props)\n drawSubGrid({ color: props.subColor, fadeOut: props.fadeOut })\n }\n return drawGrid\n}\n\nmodule.exports = makeDrawMultiGrid\n","const vColorFrag = `\nprecision mediump float;\nuniform vec4 ucolor;\n\nvoid main () {\n gl_FragColor = ucolor;\n}\n`\nmodule.exports = { frag: vColorFrag }\n","const mat4 = require('gl-mat4')\n\nconst { meshColor } = require('../../renderDefaults')\n\nconst drawLines = (regl, params = {}) => {\n const defaults = {\n color: meshColor,\n geometry: undefined\n }\n let { geometry, color, transparent } = Object.assign({}, defaults, params)\n\n if ('color' in geometry) color = geometry.color\n\n const hasIndices = !!(geometry.indices && geometry.indices.length > 0)\n const hasNormals = !!(geometry.normals && geometry.normals.length > 0)\n const hasVertexColors = !!(geometry.colors && geometry.colors.length > 0)\n\n const vert = hasVertexColors ? require('./vColorShaders').vert : require('./meshShaders').vert\n const frag = hasVertexColors ? require('./vColorShaders').frag : require('./colorOnlyShaders').frag\n\n const commandParams = {\n primitive: 'lines',\n vert,\n frag,\n\n uniforms: {\n model: (context, props) => props.model || geometry.transforms || mat4.create(),\n ucolor: (context, props) => (props && props.color) ? props.color : color\n },\n attributes: {\n position: regl.buffer({ usage: 'static', type: 'float', data: geometry.positions })\n }\n }\n\n // blending is a bit tricky\n // https://stackoverflow.com/questions/51938739/regl-color-and-alpha-blending-of-primitives\n if (transparent) {\n commandParams.blend = {\n enable: true,\n func: { src: 'src alpha', dst: 'one minus src alpha' }\n }\n }\n\n if (hasVertexColors) {\n commandParams.attributes.color = regl.buffer({ usage: 'static', type: 'float', data: geometry.colors })\n }\n\n if (hasIndices) {\n commandParams.elements = regl.elements({ usage: 'static', type: 'uint16', data: geometry.indices })\n }\n\n if (hasNormals) {\n commandParams.attributes.normal = regl.buffer({ usage: 'static', type: 'float', data: geometry.normals })\n }\n\n return regl(commandParams)\n}\n\nmodule.exports = drawLines\n","const meshVert = `\nprecision mediump float;\n\nuniform float camNear, camFar;\nuniform mat4 model, view, projection;\n\nattribute vec3 position, normal;\n\n\nvarying vec3 surfaceNormal, surfacePosition;\nvarying vec4 _worldSpacePosition;\n\n\nvoid main() {\n\n\n surfacePosition = position;\n surfaceNormal = normal;\n vec4 worldSpacePosition = model * vec4(position, 1);\n _worldSpacePosition = worldSpacePosition;\n\n vec4 glPosition = projection * view * model * vec4(position, 1);\n gl_Position = glPosition;\n}\n`\n\nconst meshFrag = `\nprecision mediump float;\nvarying vec3 surfaceNormal;\nuniform float ambientLightAmount;\nuniform float diffuseLightAmount;\nuniform vec4 ucolor;\nuniform vec3 lightDirection;\nuniform vec3 opacity;\n\nvarying vec4 _worldSpacePosition;\n\nuniform vec2 printableArea;\n\nvec4 errorColor = vec4(0.15, 0.15, 0.15, 0.3);\n\nvoid main () {\n vec4 depth = gl_FragCoord;\n\n float v = 0.8; // shadow value\n vec4 endColor = ucolor;\n\n vec3 ambient = ambientLightAmount * endColor.rgb;\n float cosTheta = dot(surfaceNormal, lightDirection);\n vec3 diffuse = diffuseLightAmount * endColor.rgb * clamp(cosTheta , 0.0, 1.0 );\n\n float cosTheta2 = dot(surfaceNormal, vec3(-lightDirection.x, -lightDirection.y, lightDirection.z));\n vec3 diffuse2 = diffuseLightAmount * endColor.rgb * clamp(cosTheta2 , 0.0, 1.0 );\n\n gl_FragColor = vec4((ambient + diffuse + diffuse2 * v), endColor.a);\n}`\n\nmodule.exports = { vert: meshVert, frag: meshFrag }\n","const vColorVert = `\nprecision mediump float;\n\nuniform float camNear, camFar;\nuniform mat4 model, view, projection;\n\nattribute vec3 position, normal;\nattribute vec4 color;\n\nvarying vec3 surfaceNormal, surfacePosition;\nvarying vec4 _worldSpacePosition;\nvarying vec4 vColor;\n\nvoid main() {\n vColor = color;\n\n surfacePosition = position;\n surfaceNormal = normal;\n vec4 worldSpacePosition = model * vec4(position, 1);\n _worldSpacePosition = worldSpacePosition;\n\n vec4 glPosition = projection * view * model * vec4(position, 1);\n gl_Position = glPosition;\n}\n`\n\nconst vColorFrag = `\nprecision mediump float;\nvarying vec4 vColor;\n\nvoid main () {\n gl_FragColor = vColor;\n}\n`\nmodule.exports = { frag: vColorFrag, vert: vColorVert }\n","const mat4 = require('gl-mat4')\n\nconst { meshColor } = require('../../renderDefaults')\n\nconst drawMesh = (regl, params = { extras: {} }) => {\n const defaults = {\n useVertexColors: true,\n dynamicCulling: true,\n geometry: undefined,\n color: meshColor,\n visuals: {}\n }\n const { geometry, dynamicCulling, useVertexColors, color, visuals } = Object.assign({}, defaults, params)\n // let ambientOcclusion = vao(geometry.indices, geometry.positions, 64, 64)\n const ambientOcclusion = regl.buffer([])\n\n // vertex colors or not ?\n const hasIndices = !!(geometry.indices && geometry.indices.length > 0)\n const hasNormals = !!(geometry.normals && geometry.normals.length > 0)\n const transparent = 'transparent' in visuals ? visuals.transparent : false\n const hasVertexColors = !!(useVertexColors && geometry.colors && geometry.colors.length > 0)\n const transforms = geometry.transforms || mat4.create()\n const flip = mat4.determinant(transforms) < 0\n const cullFace = dynamicCulling\n ? (flip ? 'front' : 'back')\n : 'back'\n\n const vert = hasVertexColors ? require('./vColorShaders').vert : require('./meshShaders').vert\n const frag = hasVertexColors ? require('./vColorShaders').frag : require('./meshShaders').frag\n const modelMatrixInv = mat4.invert(mat4.create(), transforms)\n\n let commandParams = {\n primitive: 'triangles',\n vert,\n frag,\n\n uniforms: {\n model: (context, props) => transforms,\n ucolor: (context, props) => (props && props.color) ? props.color : color,\n // semi hack, woraround to enable/disable vertex colors !!!\n vColorToggler: (context, props) => (props && props.useVertexColors && props.useVertexColors === true) ? 1.0 : 0.0,\n // experimental\n unormal: (context, props) => {\n const modelViewMatrix = mat4.invert(mat4.create(), props.camera.view)\n mat4.multiply(modelViewMatrix, modelMatrixInv, modelViewMatrix)\n mat4.transpose(modelViewMatrix, modelViewMatrix)\n return modelViewMatrix\n }\n },\n attributes: {\n position: regl.buffer({ usage: 'static', type: 'float', data: geometry.positions }),\n ao: ambientOcclusion\n },\n cull: {\n enable: true,\n face: cullFace\n }\n }\n\n // blending is a bit tricky\n // https://stackoverflow.com/questions/51938739/regl-color-and-alpha-blending-of-primitives\n if (transparent) {\n commandParams.blend = {\n enable: true,\n func: { src: 'src alpha', dst: 'one minus src alpha' }\n }\n }\n\n if (geometry.cells) {\n commandParams.elements = geometry.cells\n } else if (hasIndices) {\n commandParams.elements = regl.elements({ usage: 'static', type: 'uint16', data: geometry.indices })\n } else if (geometry.triangles) {\n commandParams.elements = geometry.triangles\n } else {\n commandParams.count = geometry.positions.length / 3\n }\n\n if (hasNormals) {\n commandParams.attributes.normal = regl.buffer({ usage: 'static', type: 'float', data: geometry.normals })\n }\n if (hasVertexColors) {\n commandParams.attributes.color = regl.buffer({ usage: 'static', type: 'float', data: geometry.colors })\n }\n\n // Splice in any extra params\n commandParams = Object.assign({}, commandParams, params.extras)\n return regl(commandParams)\n}\n\nmodule.exports = drawMesh\n","const meshFrag = `\nprecision mediump float;\nvarying vec3 surfaceNormal;\nuniform float ambientLightAmount;\nuniform float diffuseLightAmount;\nuniform vec4 ucolor;\nuniform vec3 lightDirection;\nuniform vec3 opacity;\n\nvarying vec4 _worldSpacePosition;\n\nuniform vec2 printableArea;\n\nvec4 errorColor = vec4(0.15, 0.15, 0.15, 0.3);\n\nvoid main () {\n vec4 depth = gl_FragCoord;\n\n float v = 0.8; // shadow value\n vec4 endColor = ucolor;\n\n vec3 ambient = ambientLightAmount * endColor.rgb;\n float cosTheta = dot(surfaceNormal, lightDirection);\n vec3 diffuse = diffuseLightAmount * endColor.rgb * clamp(cosTheta , 0.0, 1.0 );\n\n float cosTheta2 = dot(surfaceNormal, vec3(-lightDirection.x, -lightDirection.y, lightDirection.z));\n vec3 diffuse2 = diffuseLightAmount * endColor.rgb * clamp(cosTheta2 , 0.0, 1.0 );\n\n gl_FragColor = vec4((ambient + diffuse + diffuse2 * v), endColor.a);\n}`\n\nconst meshVert = `\nprecision mediump float;\n\nuniform float camNear, camFar;\nuniform mat4 model, view, projection;\n\nattribute vec3 position, normal;\n\nvarying vec3 surfaceNormal, surfacePosition;\nvarying vec4 _worldSpacePosition;\n\nvoid main() {\n surfacePosition = position;\n surfaceNormal = normal;\n vec4 worldSpacePosition = model * vec4(position, 1);\n _worldSpacePosition = worldSpacePosition;\n\n vec4 glPosition = projection * view * model * vec4(position, 1);\n gl_Position = glPosition;\n}\n`\n\nmodule.exports = { vert: meshVert, frag: meshFrag }\n","const vColorVert = `\nprecision mediump float;\n\nuniform float camNear, camFar;\nuniform mat4 model, view, projection, unormal;\n\nattribute vec3 position, normal;\nattribute vec4 color;\n\nattribute float ao;\nvarying float ambientAo;\n\nvarying vec3 surfaceNormal, surfacePosition;\nvarying vec4 _worldSpacePosition;\nvarying vec4 vColor;\n\nvoid main() {\n surfacePosition = (unormal * vec4(position, 1.0)).xyz;\n surfaceNormal = normalize((unormal * vec4(normal, 1.0)).xyz); //vec4 transformedNormal = uNormalMatrix * vec4(aVertexNormal, 1.0);\n vec4 worldSpacePosition = model * vec4(position, 1);\n _worldSpacePosition = worldSpacePosition;\n //gl_Position = projection * view * worldSpacePosition;\n\n vColor = color;\n\n //ambientAo = (1. - ao) * (0.5 * max(normal.x, 0.) + 0.5);\n\n vec4 glPosition = projection * view * model * vec4(position, 1);\n gl_Position = glPosition;\n //gl_Position = zBufferAdjust(glPosition, camNear, camFar);\n}\n`\nconst vColorFrag = `\nprecision mediump float;\nvarying vec3 surfaceNormal, surfacePosition;\n\nuniform float ambientLightAmount;\nuniform float diffuseLightAmount;\nuniform float specularLightAmount;\n\nuniform vec3 lightDirection;\nuniform vec4 lightColor;\nuniform vec3 opacity;\nuniform float uMaterialShininess;\n\nvarying vec4 vColor;\nuniform vec4 ucolor;\nuniform float vColorToggler;\n\nuniform vec2 printableArea;\nvec4 errorColor = vec4(0.15, 0.15, 0.15, 0.3);//vec4(0.15, 0.15, 0.15, 0.3);\nvarying vec4 _worldSpacePosition;\nvarying float ambientAo;\n\nvoid main () {\n vec4 depth = gl_FragCoord;\n vec4 endColor = vColor * vColorToggler + ucolor * (1.0 - vColorToggler);\n\n vec3 ambient = ambientLightAmount * endColor.rgb ; //ambientAo * \n\n float diffuseWeight = dot(surfaceNormal, lightDirection);\n vec3 diffuse = diffuseLightAmount * endColor.rgb * clamp(diffuseWeight , 0.0, 1.0 );\n\n //specular\n \n vec4 specularColor = vec4(lightColor);\n vec3 eyeDirection = normalize(surfacePosition.xyz);\n vec3 reflectionDirection = reflect(-lightDirection, -surfaceNormal);\n float specularLightWeight = pow(max(dot(reflectionDirection, eyeDirection), 0.0), uMaterialShininess);\n vec3 specular = specularColor.rgb * specularLightWeight * specularLightAmount;\n\n gl_FragColor = vec4((ambient + diffuse + specular), endColor.a);\n}\n`\n\nmodule.exports = { frag: vColorFrag, vert: vColorVert }\n","const renderContext = require('./renderContext')\nconst renderDefaults = require('./renderDefaults')\n\nconst prepareRender = (params) => {\n const defaults = {\n // extensions:['oes_element_index_uint']\n }\n const options = Object.assign(\n {},\n defaults,\n params.glOptions,\n {\n // canvas: (element.nodeName.toLowerCase() === 'canvas') ? element : undefined,\n // container: (element.nodeName.toLowerCase() !== 'canvas') ? element : undefined\n onDone: (err, callback) => {\n if (err) {\n throw err\n }\n }\n }\n )\n // setup regl\n const regl = require('regl')(options)// , (width, height))\n // setup draw command cache\n // const drawCache = {}\n const drawCache2 = new Map()\n\n // create the main draw command\n const command = (props) => {\n props.rendering = Object.assign({}, renderDefaults, props.rendering)\n\n // props is the first parameter, the second one is a function, doing the actual rendering\n renderContext(regl)(props, (context) => {\n regl.clear({\n color: props.rendering.background,\n depth: 1\n })\n // this whole thing is very inneficiant and innelegant ... improve in the future\n if (props.entities) {\n // we need to sort transparents vs non transparents: transparent objects should be rendered last\n // since you can see 'behind' transparent ones, so what is behind needs to already be rendered\n props.entities\n .sort((a, b) => {\n const aTransparent = 'transparent' in a.visuals ? a.visuals.transparent : false\n const bTransparent = 'transparent' in b.visuals ? b.visuals.transparent : false\n return (aTransparent === bTransparent) ? 0 : aTransparent ? 1 : -1\n })\n .forEach((entity) => {\n const { visuals } = entity\n const show = ('show' in visuals) ? visuals.show : true\n if (show && visuals.drawCmd && props.drawCommands[visuals.drawCmd]) {\n let drawCmd\n if (visuals.cacheId) {\n drawCmd = drawCache2.get(visuals.cacheId)\n } else {\n visuals.cacheId = drawCache2.size\n drawCmd = props.drawCommands[visuals.drawCmd](regl, entity)\n drawCache2.set(visuals.cacheId, drawCmd)\n }\n const drawParams = { // FIXME: horrible, tidy up !!: what is needed/should be passed to render pass ?\n ...entity,\n ...visuals,\n camera: props.camera\n }\n drawCmd(drawParams)\n }\n })\n }\n })\n }\n // actual render function\n return function render (data) {\n // important for stats, correct resizing etc\n regl.poll()\n command(data)// meh ??\n // tick += 0.01\n }\n}\n\nmodule.exports = prepareRender\n","const mat4 = require('gl-mat4')\n\n/** function that injects most of the uniforms into the regl context:\n * ie keeps track of all regl global state.\n * @param {} regl\n * @param {} params={}\n */\nconst renderWrapper = (regl, params = {}) => {\n const { fbo } = params\n\n const commandParams = {\n cull: {\n enable: true\n },\n context: {\n lightDirection: [0.2, 0.2, 1]// [0.19, 0.47, 0.29]\n },\n uniforms: {\n view: (context, props) => props.camera.view,\n eye: (context, props) => props.camera.position,\n // projection: (context, props) => mat4.perspective([], props.camera.fov, context.viewportWidth/context.viewportHeight, props.camera.near, props.camera.far), //props.camera.projection,//context.viewportWidth also an alternative?\n projection: (context, props) => props.camera.projection,\n camNear: (context, props) => props.camera.near,\n camFar: (context, props) => props.camera.far,\n // accessories to the above\n invertedView: (context, props) => mat4.invert([], props.camera.view),\n // lighting stuff, needs cleanup\n lightPosition: (context, props) => props && props.rendering && props.rendering.lightPosition ? props.rendering.lightPosition : [100, 200, 100],\n lightDirection: (context, props) => props && props.rendering && props.rendering.lightDirection ? props.rendering.lightDirection : context.lightDirection || [0, 0, 0],\n lightView: (context) => mat4.lookAt([], context.lightDirection, [0.0, 0.0, 0.0], [0.0, 0.0, 1.0]),\n lightProjection: mat4.ortho([], -25, -25, -20, 20, -25, 25),\n lightColor: (context, props) => props && props.rendering && props.rendering.lightColor ? props.rendering.lightColor : [1, 0.8, 0],\n ambientLightAmount: (context, props) => props && props.rendering && props.rendering.ambientLightAmount ? props.rendering.ambientLightAmount : 0.3,\n diffuseLightAmount: (context, props) => props && props.rendering && props.rendering.diffuseLightAmount ? props && props.rendering && props.rendering.diffuseLightAmount : 0.89,\n specularLightAmount: (context, props) => props && props.rendering && props.rendering.specularLightAmount ? props.rendering.specularLightAmount : 0.16,\n uMaterialShininess: (context, props) => props && props.rendering && props.rendering.materialShininess ? props.rendering.materialShininess : 8.0,\n materialAmbient: [0.5, 0.8, 0.3],\n materialDiffuse: [0.5, 0.8, 0.3],\n materialSpecular: [0.5, 0.8, 0.3]\n },\n framebuffer: fbo\n }\n\n // it returns a function\n return regl(Object.assign({}, commandParams, params.extras))\n}\n\nmodule.exports = renderWrapper\n","module.exports = {\n background: [1, 1, 1, 1],\n meshColor: [0, 0.6, 1, 1], // default face color or line color\n lightColor: [1, 1, 1, 1], // note: for now there is a single preset light, not an entity\n lightDirection: [0.2, 0.2, 1],\n lightPosition: [100, 200, 100],\n ambientLightAmount: 0.3,\n diffuseLightAmount: 0.89,\n specularLightAmount: 0.16,\n materialShininess: 8.0\n}\n","/**\n * Flatten the given array into a single array of elements.\n * The given array can be composed of multiple depths of objects and or arrays.\n * @param {Array} array - array to flatten\n * @returns {Array} a flat array with a single list of elements\n * @alias module:array-utils.flatten\n * @example\n * const flat = flatten([[1], [2, 3, [4, 5]], 6]) // returns [1, 2, 3, 4, 5, 6]\n */\nconst flatten = (arr) => arr.reduce((acc, val) => Array.isArray(val) ? acc.concat(flatten(val)) : acc.concat(val), [])\n\nmodule.exports = flatten\n","/**\n * Compare function for sorting arrays of numbers.\n * @param {Number} a - first number\n * @param {Number} b - second number\n * @return {Number} result of a - b\n * @alias module:array-utils.fnNumberSort\n * @example\n * const numbers = [2, 1, 4, 3, 6, 5, 8, 7, 9, 0]\n * const sorted = numbers.sort(fnNumberSort)\n */\nconst fnNumberSort = (a, b) => a - b\n\nmodule.exports = fnNumberSort\n","/**\n * Return the first element of the given array.\n * @param {*} array - anything\n * @returns {*} first element of the array, or undefined\n * @alias module:array-utils.head\n * @example\n * let element = head([1, 2])\n */\nconst head = (array) => {\n if (!Array.isArray(array) || array.length === 0) {\n return undefined\n }\n return array[0]\n}\n\nmodule.exports = head\n","/**\n * Utility functions for arrays.\n * @module array-utils\n * @example\n * const { flatten, head } = require('@jscad/array-utils')\n */\n\nmodule.exports = {\n flatten: require('./flatten'),\n fnNumberSort: require('./fnNumberSort'),\n head: require('./head'),\n insertSorted: require('./insertSorted'),\n nth: require('./nth'),\n padToLength: require('./padToLength'),\n toArray: require('./toArray')\n}\n","/**\n * Insert the given element into the give array using the compareFunction.\n * @param {Array} array - array in which to insert\n * @param {*} element - element to insert into the array\n * @param {Function} compareFunction - a function that defines the sort order of elements\n * @alias module:array-utils.insertSorted\n * @example\n * const numbers = [1, 5]\n * const result = insertSorted(numbers, 3, fnNumberSort)\n */\nconst insertSorted = (array, element, compareFunction) => {\n let leftbound = 0\n let rightbound = array.length\n while (rightbound > leftbound) {\n const testindex = Math.floor((leftbound + rightbound) / 2)\n const testelement = array[testindex]\n const compareresult = compareFunction(element, testelement)\n if (compareresult > 0) { // element > testelement\n leftbound = testindex + 1\n } else {\n rightbound = testindex\n }\n }\n array.splice(leftbound, 0, element)\n return array\n}\n\nmodule.exports = insertSorted\n","/**\n * Return the Nth element of the given array.\n * @param {*} array - anything\n * @param {Number} index - index of the element to return\n * @returns {*} Nth element of the array, or undefined\n * @alias module:array-utils.nth\n * @example\n * let value = nth([1], 2) // undefined\n * let value = nth([1, 2, 3, 4, 5], 3) // 4\n */\nconst nth = (array, index) => {\n if (!Array.isArray(array) || array.length < index) {\n return undefined\n }\n return array[index]\n}\n\nmodule.exports = nth\n","/**\n * Build an array of the given target length from an existing array and a padding value.\n * If the array is already larger than the target length, it will not be shortened.\n * @param {Array} anArray - the source array to copy into the result.\n * @param {*} padding - the value to add to the new array to reach the desired length.\n * @param {Number} targetLength - The desired length of the returned array.\n * @returns {Array} an array with at least 'target length\" elements\n * @alias module:array-utils.padToLength\n * @example\n * const srcArray = [2, 3, 4]\n * const paddedArray = padToLength(srcArray, 0, 5)\n */\nconst padToLength = (anArray, padding, targetLength) => {\n anArray = anArray.slice()\n while (anArray.length < targetLength) {\n anArray.push(padding)\n }\n return anArray\n}\n\nmodule.exports = padToLength\n","/**\n * Convert the given array to an array if not already an array.\n * @param {*} array - anything\n * @returns {Array} an array\n * @alias module:array-utils.toArray\n * @example\n * const array = toArray(1) // [1]\n */\nconst toArray = (array) => {\n if (Array.isArray(array)) return array\n if (array === undefined || array === null) return []\n return [array]\n}\n\nmodule.exports = toArray\n","var transform = require('./lib/projectMat4')\n\nmodule.exports = unproject\n\n/**\n * Unproject a point from screen space to 3D space.\n * The point should have its x and y properties set to\n * 2D screen space, and the z either at 0 (near plane)\n * or 1 (far plane). The provided matrix is assumed to already\n * be combined, i.e. projection * view.\n *\n * After this operation, the out vector's [x, y, z] components will\n * represent the unprojected 3D coordinate.\n *\n * @param {vec3} out the output vector\n * @param {vec3} vec the 2D space vector to unproject\n * @param {vec4} viewport screen x, y, width and height in pixels\n * @param {mat4} invProjectionView combined projection and view matrix\n * @return {vec3} the output vector\n */\nfunction unproject (out, vec, viewport, invProjectionView) {\n var viewX = viewport[0],\n viewY = viewport[1],\n viewWidth = viewport[2],\n viewHeight = viewport[3]\n\n var x = vec[0],\n y = vec[1],\n z = vec[2]\n\n x = x - viewX\n y = viewHeight - y - 1\n y = y - viewY\n\n out[0] = (2 * x) / viewWidth - 1\n out[1] = (2 * y) / viewHeight - 1\n out[2] = 2 * z - 1\n return transform(out, out, invProjectionView)\n}\n","module.exports = project\n\n/**\n * Multiplies the input vec by the specified matrix, \n * applying a W divide, and stores the result in out \n * vector. This is useful for projection,\n * e.g. unprojecting a 2D point into 3D space.\n *\n * @method prj\n * @param {vec3} out the output vector\n * @param {vec3} vec the input vector to project\n * @param {mat4} m the 4x4 matrix to multiply with \n * @return {vec3} the out vector\n */\nfunction project (out, vec, m) {\n var x = vec[0],\n y = vec[1],\n z = vec[2],\n a00 = m[0], a01 = m[1], a02 = m[2], a03 = m[3],\n a10 = m[4], a11 = m[5], a12 = m[6], a13 = m[7],\n a20 = m[8], a21 = m[9], a22 = m[10], a23 = m[11],\n a30 = m[12], a31 = m[13], a32 = m[14], a33 = m[15]\n\n var lw = 1 / (x * a03 + y * a13 + z * a23 + a33)\n\n out[0] = (x * a00 + y * a10 + z * a20 + a30) * lw\n out[1] = (x * a01 + y * a11 + z * a21 + a31) * lw\n out[2] = (x * a02 + y * a12 + z * a22 + a32) * lw\n return out\n}\n","/*\n* FileSaver.js\n* A saveAs() FileSaver implementation.\n*\n* By Eli Grey, http://eligrey.com\n*\n* License : https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md (MIT)\n* source : http://purl.eligrey.com/github/FileSaver.js\n*/\n\n// The one and only way of getting global scope in all environments\n// https://stackoverflow.com/q/3277182/1008999\nvar _global = typeof window === 'object' && window.window === window\n ? window : typeof self === 'object' && self.self === self\n ? self : typeof global === 'object' && global.global === global\n ? global\n : this\n\nfunction bom (blob, opts) {\n if (typeof opts === 'undefined') opts = { autoBom: false }\n else if (typeof opts !== 'object') {\n console.warn('Deprecated: Expected third argument to be a object')\n opts = { autoBom: !opts }\n }\n\n // prepend BOM for UTF-8 XML and text/* types (including HTML)\n // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n if (opts.autoBom && /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n return new Blob([String.fromCharCode(0xFEFF), blob], { type: blob.type })\n }\n return blob\n}\n\nfunction download (url, name, opts) {\n var xhr = new XMLHttpRequest()\n xhr.open('GET', url)\n xhr.responseType = 'blob'\n xhr.onload = function () {\n saveAs(xhr.response, name, opts)\n }\n xhr.onerror = function () {\n console.error('could not download file')\n }\n xhr.send()\n}\n\nfunction corsEnabled (url) {\n var xhr = new XMLHttpRequest()\n // use sync to avoid popup blocker\n xhr.open('HEAD', url, false)\n try {\n xhr.send()\n } catch (e) {}\n return xhr.status >= 200 && xhr.status <= 299\n}\n\n// `a.click()` doesn't work for all browsers (#465)\nfunction click (node) {\n try {\n node.dispatchEvent(new MouseEvent('click'))\n } catch (e) {\n var evt = document.createEvent('MouseEvents')\n evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80,\n 20, false, false, false, false, 0, null)\n node.dispatchEvent(evt)\n }\n}\n\n// Detect WebView inside a native macOS app by ruling out all browsers\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\nvar isMacOSWebView = _global.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent)\n\nvar saveAs = _global.saveAs || (\n // probably in some web worker\n (typeof window !== 'object' || window !== _global)\n ? function saveAs () { /* noop */ }\n\n // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView\n : ('download' in HTMLAnchorElement.prototype && !isMacOSWebView)\n ? function saveAs (blob, name, opts) {\n var URL = _global.URL || _global.webkitURL\n var a = document.createElement('a')\n name = name || blob.name || 'download'\n\n a.download = name\n a.rel = 'noopener' // tabnabbing\n\n // TODO: detect chrome extensions & packaged apps\n // a.target = '_blank'\n\n if (typeof blob === 'string') {\n // Support regular links\n a.href = blob\n if (a.origin !== location.origin) {\n corsEnabled(a.href)\n ? download(blob, name, opts)\n : click(a, a.target = '_blank')\n } else {\n click(a)\n }\n } else {\n // Support blobs\n a.href = URL.createObjectURL(blob)\n setTimeout(function () { URL.revokeObjectURL(a.href) }, 4E4) // 40s\n setTimeout(function () { click(a) }, 0)\n }\n }\n\n // Use msSaveOrOpenBlob as a second approach\n : 'msSaveOrOpenBlob' in navigator\n ? function saveAs (blob, name, opts) {\n name = name || blob.name || 'download'\n\n if (typeof blob === 'string') {\n if (corsEnabled(blob)) {\n download(blob, name, opts)\n } else {\n var a = document.createElement('a')\n a.href = blob\n a.target = '_blank'\n setTimeout(function () { click(a) })\n }\n } else {\n navigator.msSaveOrOpenBlob(bom(blob, opts), name)\n }\n }\n\n // Fallback to using FileReader and a popup\n : function saveAs (blob, name, opts, popup) {\n // Open a popup immediately do go around popup blocker\n // Mostly only available on user interaction and the fileReader is async so...\n popup = popup || open('', '_blank')\n if (popup) {\n popup.document.title =\n popup.document.body.innerText = 'downloading...'\n }\n\n if (typeof blob === 'string') return download(blob, name, opts)\n\n var force = blob.type === 'application/octet-stream'\n var isSafari = /constructor/i.test(_global.HTMLElement) || _global.safari\n var isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent)\n\n if ((isChromeIOS || (force && isSafari) || isMacOSWebView) && typeof FileReader !== 'undefined') {\n // Safari doesn't allow downloading of blob URLs\n var reader = new FileReader()\n reader.onloadend = function () {\n var url = reader.result\n url = isChromeIOS ? url : url.replace(/^data:[^;]*;/, 'data:attachment/file;')\n if (popup) popup.location.href = url\n else location = url\n popup = null // reverse-tabnabbing #460\n }\n reader.readAsDataURL(blob)\n } else {\n var URL = _global.URL || _global.webkitURL\n var url = URL.createObjectURL(blob)\n if (popup) popup.location = url\n else location.href = url\n popup = null // reverse-tabnabbing #460\n setTimeout(function () { URL.revokeObjectURL(url) }, 4E4) // 40s\n }\n }\n)\n\n_global.saveAs = saveAs.saveAs = saveAs\n\nif (typeof module !== 'undefined') {\n module.exports = saveAs;\n}\n","/*!\n * github-buttons v2.27.0\n * (c) 2023 なつき\n * @license BSD-2-Clause\n */\nvar document = window.document;\n\nvar Math = window.Math;\n\nvar HTMLElement = window.HTMLElement;\n\nvar XMLHttpRequest = window.XMLHttpRequest;\n\nvar forEach = function (obj, func) {\n for (var i = 0, len = obj.length; i < len; i++) {\n func(obj[i]);\n }\n};\n\nvar createElementInDocument = function (document) {\n return function (tag, props, children) {\n var el = document.createElement(tag);\n if (props != null) {\n for (var prop in props) {\n var val = props[prop];\n if (val != null) {\n if (el[prop] != null) {\n el[prop] = val;\n } else {\n el.setAttribute(prop, val);\n }\n }\n }\n }\n if (children != null) {\n forEach(children, function (child) {\n el.appendChild(typeof child === 'string' ? document.createTextNode(child) : child);\n });\n }\n return el\n }\n};\n\nvar createElement = createElementInDocument(document);\n\nvar dispatchOnce = function (func) {\n var onceToken;\n return function () {\n if (!onceToken) {\n onceToken = 1;\n func.apply(this, arguments);\n }\n }\n};\n\nvar hasOwnProperty = function (obj, prop) {\n return {}.hasOwnProperty.call(obj, prop)\n};\n\nvar toLowerCase = function (obj) {\n return ('' + obj).toLowerCase()\n};\n\nvar name = \"github-buttons\";\nvar version = \"2.27.0\";\n\nvar iframeURL = 'https://' + (/* istanbul ignore next */ 'unpkg.com/' + name + '@' + version + '/dist' ) + '/buttons.html';\n\nvar domain = 'github.com';\n\nvar apiBaseURL = 'https://api.' + domain;\n\nvar useXHR = XMLHttpRequest && 'prototype' in XMLHttpRequest && 'withCredentials' in XMLHttpRequest.prototype;\n\nvar useShadowDOM = useXHR && HTMLElement && 'attachShadow' in HTMLElement.prototype && !('prototype' in HTMLElement.prototype.attachShadow);\n\nvar onEvent = function (target, eventName, func) {\n /* istanbul ignore else: IE lt 9 */\n if (target.addEventListener) {\n target.addEventListener(eventName, func, false);\n } else {\n target.attachEvent('on' + eventName, func);\n }\n};\n\nvar offEvent = function (target, eventName, func) {\n /* istanbul ignore else: IE lt 9 */\n if (target.removeEventListener) {\n target.removeEventListener(eventName, func, false);\n } else {\n target.detachEvent('on' + eventName, func);\n }\n};\n\nvar onceEvent = function (target, eventName, func) {\n var callback = function () {\n offEvent(target, eventName, callback);\n return func.apply(this, arguments)\n };\n onEvent(target, eventName, callback);\n};\n\nvar onceReadyStateChange = /* istanbul ignore next: IE lt 9 */ function (target, regex, func) {\n if (target.readyState != null) {\n var eventName = 'readystatechange';\n var callback = function () {\n if (regex.test(target.readyState)) {\n offEvent(target, eventName, callback);\n return func.apply(this, arguments)\n }\n };\n onEvent(target, eventName, callback);\n }\n};\n\nvar parseOptions = function (anchor) {\n var options = {\n href: anchor.href,\n title: anchor.title,\n 'aria-label': anchor.getAttribute('aria-label')\n };\n\n forEach(['icon', 'color-scheme', 'text', 'size', 'show-count'], function (option) {\n var attribute = 'data-' + option;\n options[attribute] = anchor.getAttribute(attribute);\n });\n\n if (options['data-text'] == null) {\n options['data-text'] = anchor.textContent || anchor.innerText;\n }\n\n return options\n};\n\nvar buttonsCssText = \"body{margin:0}a{text-decoration:none;outline:0}.widget{display:inline-block;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;font-size:0;line-height:0;white-space:nowrap}.btn,.social-count{position:relative;display:inline-block;display:inline-flex;height:14px;padding:2px 5px;font-size:11px;font-weight:600;line-height:14px;vertical-align:bottom;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-repeat:repeat-x;background-position:-1px -1px;background-size:110% 110%;border:1px solid}.btn{border-radius:.25em}.btn:not(:last-child){border-radius:.25em 0 0 .25em}.social-count{border-left:0;border-radius:0 .25em .25em 0}.widget-lg .btn,.widget-lg .social-count{height:16px;padding:5px 10px;font-size:12px;line-height:16px}.octicon{display:inline-block;vertical-align:text-top;fill:currentColor;overflow:visible}\";\n\nvar light = \".btn:focus-visible,.social-count:focus-visible{outline:2px solid #0969da;outline-offset:-2px}.btn{color:#24292f;background-color:#ebf0f4;border-color:#ccd1d5;border-color:rgba(31,35,40,.15);background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%23f6f8fa'/%3e%3cstop offset='90%25' stop-color='%23ebf0f4'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e\\\");background-image:-moz-linear-gradient(top, #f6f8fa, #ebf0f4 90%);background-image:linear-gradient(180deg, #f6f8fa, #ebf0f4 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr='#FFF6F8FA', endColorstr='#FFEAEFF3')}:root .btn{filter:none}.btn:hover,.btn:focus{background-color:#e9ebef;background-position:0 -0.5em;border-color:#cbcdd1;border-color:rgba(31,35,40,.15);background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%23f3f4f6'/%3e%3cstop offset='90%25' stop-color='%23e9ebef'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e\\\");background-image:-moz-linear-gradient(top, #f3f4f6, #e9ebef 90%);background-image:linear-gradient(180deg, #f3f4f6, #e9ebef 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr='#FFF3F4F6', endColorstr='#FFE8EAEE')}:root .btn:hover,:root .btn:focus{filter:none}.btn:active{background-color:#e5e9ed;border-color:#c7cbcf;border-color:rgba(31,35,40,.15);background-image:none;filter:none}.social-count{color:#24292f;background-color:#fff;border-color:#dddedf;border-color:rgba(31,35,40,.15)}.social-count:hover,.social-count:focus{color:#0969da}.octicon-heart{color:#bf3989}\";\n\nvar lightHighContrast = \".btn:focus-visible,.social-count:focus-visible{outline:2px solid #0349b4;outline-offset:-2px}.btn{color:#0e1116;background-color:#e7ecf0;border-color:#2f3237;border-color:rgba(1,4,9,.8);background-image:none;filter:none}.btn:hover,.btn:focus{background-color:#c4cdd5;background-position:0 -0.5em;border-color:#282c32;border-color:rgba(1,4,9,.8);background-image:none;filter:none}.btn:active{background-color:#d8dde1;border-color:#2c2f34;border-color:rgba(1,4,9,.8)}.social-count{color:#0e1116;background-color:#fff;border-color:#34363a;border-color:rgba(1,4,9,.8)}.social-count:hover,.social-count:focus{color:#0349b4}.octicon-heart{color:#971368}\";\n\nvar dark = \".btn:focus-visible,.social-count:focus-visible{outline:2px solid #2f81f7;outline-offset:-2px}.btn{color:#c9d1d9;background-color:#1a1e23;border-color:#2f3439;border-color:rgba(240,246,252,.1);background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%2321262d'/%3e%3cstop offset='90%25' stop-color='%231a1e23'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e\\\");background-image:-moz-linear-gradient(top, #21262d, #1a1e23 90%);background-image:linear-gradient(180deg, #21262d, #1a1e23 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr='#FF21262D', endColorstr='#FF191D22')}:root .btn{filter:none}.btn:hover,.btn:focus{background-color:#292e33;background-position:0 -0.5em;border-color:#8b949e;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%2330363d'/%3e%3cstop offset='90%25' stop-color='%23292e33'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e\\\");background-image:-moz-linear-gradient(top, #30363d, #292e33 90%);background-image:linear-gradient(180deg, #30363d, #292e33 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr='#FF30363D', endColorstr='#FF282D32')}:root .btn:hover,:root .btn:focus{filter:none}.btn:active{background-color:#161719;border-color:#8b949e;background-image:none;filter:none}.social-count{color:#c9d1d9;background-color:#0d1117;border-color:#24282e;border-color:rgba(240,246,252,.1)}.social-count:hover,.social-count:focus{color:#2f81f7}.octicon-heart{color:#db61a2}\";\n\nvar darkDimmed = \".btn:focus-visible,.social-count:focus-visible{outline:2px solid #539bf5;outline-offset:-2px}.btn{color:#adbac7;background-color:#30363d;border-color:#40464e;border-color:rgba(205,217,229,.1);background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%23373e47'/%3e%3cstop offset='90%25' stop-color='%2330363d'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e\\\");background-image:-moz-linear-gradient(top, #373e47, #30363d 90%);background-image:linear-gradient(180deg, #373e47, #30363d 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr='#FF373E47', endColorstr='#FF2F353C')}:root .btn{filter:none}.btn:hover,.btn:focus{background-color:#3c444d;background-position:0 -0.5em;border-color:#768390;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%23444c56'/%3e%3cstop offset='90%25' stop-color='%233c444d'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e\\\");background-image:-moz-linear-gradient(top, #444c56, #3c444d 90%);background-image:linear-gradient(180deg, #444c56, #3c444d 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr='#FF444C56', endColorstr='#FF3B434C')}:root .btn:hover,:root .btn:focus{filter:none}.btn:active{background-color:#2e3031;border-color:#768390;background-image:none;filter:none}.social-count{color:#adbac7;background-color:#22272e;border-color:#333940;border-color:rgba(205,217,229,.1)}.social-count:hover,.social-count:focus{color:#539bf5}.octicon-heart{color:#c96198}\";\n\nvar darkHighContrast = \".btn:focus-visible,.social-count:focus-visible{outline:2px solid #71b7ff;outline-offset:-2px}.btn{color:#f0f3f6;background-color:#272b33;border-color:#7a828e;background-image:none;filter:none}.btn:hover,.btn:focus{background-color:#4a515b;background-position:0 -0.5em;border-color:#bdc4cc;background-image:none;filter:none}.btn:active{background-color:#1d1d1f;border-color:#bdc4cc}.social-count{color:#f0f3f6;background-color:#0a0c10;border-color:#7a828e}.social-count:hover,.social-count:focus{color:#71b7ff}.octicon-heart{color:#ef6eb1}\";\n\nvar stringify = function (obj, sep, eq, encodeURIComponent) {\n if (sep == null) {\n sep = '&';\n }\n if (eq == null) {\n eq = '=';\n }\n if (encodeURIComponent == null) {\n encodeURIComponent = window.encodeURIComponent;\n }\n var params = [];\n for (var name in obj) {\n var value = obj[name];\n if (value != null) {\n params.push(encodeURIComponent(name) + eq + encodeURIComponent(value));\n }\n }\n return params.join(sep)\n};\n\nvar parse = function (str, sep, eq, decodeURIComponent) {\n if (sep == null) {\n sep = '&';\n }\n if (eq == null) {\n eq = '=';\n }\n if (decodeURIComponent == null) {\n decodeURIComponent = window.decodeURIComponent;\n }\n var obj = {};\n forEach(str.split(sep), function (entry) {\n if (entry !== '') {\n var ref = entry.split(eq);\n obj[decodeURIComponent(ref[0])] = (ref[1] != null ? decodeURIComponent(ref.slice(1).join(eq)) : undefined);\n }\n });\n return obj\n};\n\nvar widgetColorSchemes = {\n light: light,\n light_high_contrast: lightHighContrast,\n dark: dark,\n dark_dimmed: darkDimmed,\n dark_high_contrast: darkHighContrast\n};\n\nvar getColorSchemeMediaQuery = function (systemColorScheme, widgetColorScheme) {\n return '@media(prefers-color-scheme:' + systemColorScheme + '){' + widgetColorSchemes[hasOwnProperty(widgetColorSchemes, widgetColorScheme) ? widgetColorScheme : systemColorScheme] + '}'\n};\n\nvar getColorScheme = function (declarations) {\n if (declarations == null) {\n return widgetColorSchemes.light\n }\n\n if (hasOwnProperty(widgetColorSchemes, declarations)) {\n return widgetColorSchemes[declarations]\n }\n\n var colorSchemes = parse(declarations, ';', ':', function (str) {\n return str.replace(/^[ \\t\\n\\f\\r]+|[ \\t\\n\\f\\r]+$/g, '')\n });\n\n return widgetColorSchemes[hasOwnProperty(widgetColorSchemes, colorSchemes['no-preference']) ? colorSchemes['no-preference'] : 'light'] +\n getColorSchemeMediaQuery('light', colorSchemes.light) +\n getColorSchemeMediaQuery('dark', colorSchemes.dark)\n};\n\nvar data = {\n \"comment-discussion\": {\n heights: {\n \"16\": {\n width: 16,\n path: \"\"\n }\n }\n },\n download: {\n heights: {\n \"16\": {\n width: 16,\n path: \"\"\n }\n }\n },\n eye: {\n heights: {\n \"16\": {\n width: 16,\n path: \"\"\n }\n }\n },\n heart: {\n heights: {\n \"16\": {\n width: 16,\n path: \"\"\n }\n }\n },\n \"issue-opened\": {\n heights: {\n \"16\": {\n width: 16,\n path: \"\"\n }\n }\n },\n \"mark-github\": {\n heights: {\n \"16\": {\n width: 16,\n path: \"\"\n }\n }\n },\n \"package\": {\n heights: {\n \"16\": {\n width: 16,\n path: \"\"\n }\n }\n },\n play: {\n heights: {\n \"16\": {\n width: 16,\n path: \"\"\n }\n }\n },\n \"repo-forked\": {\n heights: {\n \"16\": {\n width: 16,\n path: \"\"\n }\n }\n },\n \"repo-template\": {\n heights: {\n \"16\": {\n width: 16,\n path: \"\"\n }\n }\n },\n star: {\n heights: {\n \"16\": {\n width: 16,\n path: \"\"\n }\n }\n }\n};\n\nvar octicon = function (icon, height) {\n icon = toLowerCase(icon).replace(/^octicon-/, '');\n if (!hasOwnProperty(data, icon)) {\n icon = 'mark-github';\n }\n\n var defaultHeight = height >= 24 && /* istanbul ignore next */ 24 in data[icon].heights ? /* istanbul ignore next */ 24 : 16;\n\n var svg = data[icon].heights[defaultHeight];\n\n return '' + svg.path + ''\n};\n\nvar queues = {};\n\nvar fetch = function (url, func) {\n var queue = queues[url] || (queues[url] = []);\n if (queue.push(func) > 1) {\n return\n }\n\n var callback = dispatchOnce(function () {\n delete queues[url];\n while ((func = queue.shift())) {\n func.apply(null, arguments);\n }\n });\n\n if (useXHR) {\n var xhr = new XMLHttpRequest();\n onEvent(xhr, 'abort', callback);\n onEvent(xhr, 'error', callback);\n onEvent(xhr, 'load', function () {\n var data;\n try {\n data = JSON.parse(this.responseText);\n } catch (error) {\n callback(error);\n return\n }\n callback(this.status !== 200, data);\n });\n xhr.open('GET', url);\n xhr.send();\n } else {\n var contentWindow = this || window;\n contentWindow._ = function (json) {\n contentWindow._ = null;\n callback(json.meta.status !== 200, json.data);\n };\n var script = createElementInDocument(contentWindow.document)('script', {\n async: true,\n src: url + (url.indexOf('?') !== -1 ? '&' : '?') + 'callback=_'\n });\n var onloadend = /* istanbul ignore next: IE lt 9 */ function () {\n if (contentWindow._) {\n contentWindow._({\n meta: {}\n });\n }\n };\n onEvent(script, 'load', onloadend);\n onEvent(script, 'error', onloadend);\n onceReadyStateChange(script, /de|m/, onloadend);\n contentWindow.document.getElementsByTagName('head')[0].appendChild(script);\n }\n};\n\nvar render$1 = function (root, options, func) {\n var createElement = createElementInDocument(root.ownerDocument);\n\n var style = root.appendChild(createElement('style', {\n type: 'text/css'\n }));\n\n var cssText = buttonsCssText + getColorScheme(options['data-color-scheme']);\n\n /* istanbul ignore if: IE lt 9 */\n if (style.styleSheet) {\n style.styleSheet.cssText = cssText;\n } else {\n style.appendChild(root.ownerDocument.createTextNode(cssText));\n }\n\n var isLarge = toLowerCase(options['data-size']) === 'large';\n\n var btn = createElement('a', {\n className: 'btn',\n href: options.href,\n rel: 'noopener',\n target: '_blank',\n title: options.title || undefined,\n 'aria-label': options['aria-label'] || undefined,\n innerHTML: octicon(options['data-icon'], isLarge ? 16 : 14) + ' '\n }, [\n createElement('span', {}, [options['data-text'] || ''])\n ]);\n\n var widget = root.appendChild(createElement('div', {\n className: 'widget' + (isLarge ? ' widget-lg' : '')\n }, [\n btn\n ]));\n\n var hostname = btn.hostname.replace(/\\.$/, '');\n if (('.' + hostname).substring(hostname.length - domain.length) !== ('.' + domain)) {\n btn.removeAttribute('href');\n func(widget);\n return\n }\n\n var path = (' /' + btn.pathname).split(/\\/+/);\n if (((hostname === domain || hostname === 'gist.' + domain) && path[3] === 'archive') ||\n (hostname === domain && path[3] === 'releases' && (path[4] === 'download' || (path[4] === 'latest' && path[5] === 'download'))) ||\n (hostname === 'codeload.' + domain)) {\n btn.target = '_top';\n }\n\n if (toLowerCase(options['data-show-count']) !== 'true' ||\n hostname !== domain ||\n path[1] === 'marketplace' ||\n path[1] === 'sponsors' ||\n path[1] === 'orgs' ||\n path[1] === 'users' ||\n path[1] === '-') {\n func(widget);\n return\n }\n\n var href, property;\n if (!path[2] && path[1]) {\n property = 'followers';\n href = '?tab=followers';\n } else if (!path[3] && path[2]) {\n property = 'stargazers_count';\n href = '/stargazers';\n } else if (!path[4] && path[3] === 'subscription') {\n property = 'subscribers_count';\n href = '/watchers';\n } else if (!path[4] && path[3] === 'fork') {\n property = 'forks_count';\n href = '/forks';\n } else if (path[3] === 'issues') {\n property = 'open_issues_count';\n href = '/issues';\n } else {\n func(widget);\n return\n }\n\n var api = path[2] ? '/repos/' + path[1] + '/' + path[2] : '/users/' + path[1];\n fetch.call(this, apiBaseURL + api, function (error, json) {\n if (!error) {\n var data = json[property];\n widget.appendChild(createElement('a', {\n className: 'social-count',\n href: json.html_url + href,\n rel: 'noopener',\n target: '_blank',\n 'aria-label': data + ' ' + property.replace(/_count$/, '').replace('_', ' ').slice(0, data < 2 ? -1 : undefined) + ' on GitHub'\n }, [\n ('' + data).replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')\n ]));\n }\n func(widget);\n });\n};\n\nvar devicePixelRatio = window.devicePixelRatio || /* istanbul ignore next */ 1;\n\nvar ceilPixel = function (px) {\n return (devicePixelRatio > 1 ? Math.ceil(Math.round(px * devicePixelRatio) / devicePixelRatio * 2) / 2 : Math.ceil(px)) || 0\n};\n\nvar get = function (el) {\n var width = el.offsetWidth;\n var height = el.offsetHeight;\n if (el.getBoundingClientRect) {\n var boundingClientRect = el.getBoundingClientRect();\n width = Math.max(width, ceilPixel(boundingClientRect.width));\n height = Math.max(height, ceilPixel(boundingClientRect.height));\n }\n return [width, height]\n};\n\nvar set = function (el, size) {\n el.style.width = size[0] + 'px';\n el.style.height = size[1] + 'px';\n};\n\nvar render = function (options, func) {\n if (options == null || func == null) {\n return\n }\n if (options.getAttribute) {\n options = parseOptions(options);\n }\n if (useShadowDOM) {\n var host = createElement('span');\n render$1(host.attachShadow({ mode: 'closed' }), options, function () {\n func(host);\n });\n } else {\n var iframe = createElement('iframe', {\n src: 'javascript:0',\n title: options.title || undefined,\n allowtransparency: true,\n scrolling: 'no',\n frameBorder: 0\n });\n set(iframe, [0, 0]);\n iframe.style.border = 'none';\n var callback = function () {\n var contentWindow = iframe.contentWindow;\n var body;\n try {\n body = contentWindow.document.body;\n } catch (_) /* istanbul ignore next: IE 11 */ {\n document.body.appendChild(iframe.parentNode.removeChild(iframe));\n return\n }\n offEvent(iframe, 'load', callback);\n render$1.call(contentWindow, body, options, function (widget) {\n var size = get(widget);\n iframe.parentNode.removeChild(iframe);\n onceEvent(iframe, 'load', function () {\n set(iframe, size);\n });\n iframe.src = iframeURL + '#' + (iframe.name = stringify(options));\n func(iframe);\n });\n };\n onEvent(iframe, 'load', callback);\n document.body.appendChild(iframe);\n }\n};\n\nexport { render };\n","module.exports = adjoint;\n\n/**\n * Calculates the adjugate of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the source matrix\n * @returns {mat4} out\n */\nfunction adjoint(out, a) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3],\n a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7],\n a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11],\n a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n\n out[0] = (a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22));\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n out[2] = (a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12));\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n out[5] = (a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22));\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n out[7] = (a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12));\n out[8] = (a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21));\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n out[10] = (a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11));\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n out[13] = (a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21));\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n out[15] = (a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11));\n return out;\n};","module.exports = clone;\n\n/**\n * Creates a new mat4 initialized with values from an existing matrix\n *\n * @param {mat4} a matrix to clone\n * @returns {mat4} a new 4x4 matrix\n */\nfunction clone(a) {\n var out = new Float32Array(16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n};","module.exports = copy;\n\n/**\n * Copy the values from one mat4 to another\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the source matrix\n * @returns {mat4} out\n */\nfunction copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n};","module.exports = create;\n\n/**\n * Creates a new identity mat4\n *\n * @returns {mat4} a new 4x4 matrix\n */\nfunction create() {\n var out = new Float32Array(16);\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n};","module.exports = determinant;\n\n/**\n * Calculates the determinant of a mat4\n *\n * @param {mat4} a the source matrix\n * @returns {Number} determinant of a\n */\nfunction determinant(a) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3],\n a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7],\n a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11],\n a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15],\n\n b00 = a00 * a11 - a01 * a10,\n b01 = a00 * a12 - a02 * a10,\n b02 = a00 * a13 - a03 * a10,\n b03 = a01 * a12 - a02 * a11,\n b04 = a01 * a13 - a03 * a11,\n b05 = a02 * a13 - a03 * a12,\n b06 = a20 * a31 - a21 * a30,\n b07 = a20 * a32 - a22 * a30,\n b08 = a20 * a33 - a23 * a30,\n b09 = a21 * a32 - a22 * a31,\n b10 = a21 * a33 - a23 * a31,\n b11 = a22 * a33 - a23 * a32;\n\n // Calculate the determinant\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n};","module.exports = fromQuat;\n\n/**\n * Creates a matrix from a quaternion rotation.\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @returns {mat4} out\n */\nfunction fromQuat(out, q) {\n var x = q[0], y = q[1], z = q[2], w = q[3],\n x2 = x + x,\n y2 = y + y,\n z2 = z + z,\n\n xx = x * x2,\n yx = y * x2,\n yy = y * y2,\n zx = z * x2,\n zy = z * y2,\n zz = z * z2,\n wx = w * x2,\n wy = w * y2,\n wz = w * z2;\n\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n\n return out;\n};","module.exports = fromRotation\n\n/**\n * Creates a matrix from a given angle around a given axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest)\n * mat4.rotate(dest, dest, rad, axis)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @param {vec3} axis the axis to rotate around\n * @returns {mat4} out\n */\nfunction fromRotation(out, rad, axis) {\n var s, c, t\n var x = axis[0]\n var y = axis[1]\n var z = axis[2]\n var len = Math.sqrt(x * x + y * y + z * z)\n\n if (Math.abs(len) < 0.000001) {\n return null\n }\n\n len = 1 / len\n x *= len\n y *= len\n z *= len\n\n s = Math.sin(rad)\n c = Math.cos(rad)\n t = 1 - c\n\n // Perform rotation-specific matrix multiplication\n out[0] = x * x * t + c\n out[1] = y * x * t + z * s\n out[2] = z * x * t - y * s\n out[3] = 0\n out[4] = x * y * t - z * s\n out[5] = y * y * t + c\n out[6] = z * y * t + x * s\n out[7] = 0\n out[8] = x * z * t + y * s\n out[9] = y * z * t - x * s\n out[10] = z * z * t + c\n out[11] = 0\n out[12] = 0\n out[13] = 0\n out[14] = 0\n out[15] = 1\n return out\n}\n","module.exports = fromRotationTranslation;\n\n/**\n * Creates a matrix from a quaternion rotation and vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * var quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {vec3} v Translation vector\n * @returns {mat4} out\n */\nfunction fromRotationTranslation(out, q, v) {\n // Quaternion math\n var x = q[0], y = q[1], z = q[2], w = q[3],\n x2 = x + x,\n y2 = y + y,\n z2 = z + z,\n\n xx = x * x2,\n xy = x * y2,\n xz = x * z2,\n yy = y * y2,\n yz = y * z2,\n zz = z * z2,\n wx = w * x2,\n wy = w * y2,\n wz = w * z2;\n\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n \n return out;\n};","module.exports = fromScaling\n\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest)\n * mat4.scale(dest, dest, vec)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {vec3} v Scaling vector\n * @returns {mat4} out\n */\nfunction fromScaling(out, v) {\n out[0] = v[0]\n out[1] = 0\n out[2] = 0\n out[3] = 0\n out[4] = 0\n out[5] = v[1]\n out[6] = 0\n out[7] = 0\n out[8] = 0\n out[9] = 0\n out[10] = v[2]\n out[11] = 0\n out[12] = 0\n out[13] = 0\n out[14] = 0\n out[15] = 1\n return out\n}\n","module.exports = fromTranslation\n\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest)\n * mat4.translate(dest, dest, vec)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {vec3} v Translation vector\n * @returns {mat4} out\n */\nfunction fromTranslation(out, v) {\n out[0] = 1\n out[1] = 0\n out[2] = 0\n out[3] = 0\n out[4] = 0\n out[5] = 1\n out[6] = 0\n out[7] = 0\n out[8] = 0\n out[9] = 0\n out[10] = 1\n out[11] = 0\n out[12] = v[0]\n out[13] = v[1]\n out[14] = v[2]\n out[15] = 1\n return out\n}\n","module.exports = fromXRotation\n\n/**\n * Creates a matrix from the given angle around the X axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest)\n * mat4.rotateX(dest, dest, rad)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nfunction fromXRotation(out, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad)\n\n // Perform axis-specific matrix multiplication\n out[0] = 1\n out[1] = 0\n out[2] = 0\n out[3] = 0\n out[4] = 0\n out[5] = c\n out[6] = s\n out[7] = 0\n out[8] = 0\n out[9] = -s\n out[10] = c\n out[11] = 0\n out[12] = 0\n out[13] = 0\n out[14] = 0\n out[15] = 1\n return out\n}","module.exports = fromYRotation\n\n/**\n * Creates a matrix from the given angle around the Y axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest)\n * mat4.rotateY(dest, dest, rad)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nfunction fromYRotation(out, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad)\n\n // Perform axis-specific matrix multiplication\n out[0] = c\n out[1] = 0\n out[2] = -s\n out[3] = 0\n out[4] = 0\n out[5] = 1\n out[6] = 0\n out[7] = 0\n out[8] = s\n out[9] = 0\n out[10] = c\n out[11] = 0\n out[12] = 0\n out[13] = 0\n out[14] = 0\n out[15] = 1\n return out\n}","module.exports = fromZRotation\n\n/**\n * Creates a matrix from the given angle around the Z axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest)\n * mat4.rotateZ(dest, dest, rad)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nfunction fromZRotation(out, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad)\n\n // Perform axis-specific matrix multiplication\n out[0] = c\n out[1] = s\n out[2] = 0\n out[3] = 0\n out[4] = -s\n out[5] = c\n out[6] = 0\n out[7] = 0\n out[8] = 0\n out[9] = 0\n out[10] = 1\n out[11] = 0\n out[12] = 0\n out[13] = 0\n out[14] = 0\n out[15] = 1\n return out\n}","module.exports = frustum;\n\n/**\n * Generates a frustum matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Number} left Left bound of the frustum\n * @param {Number} right Right bound of the frustum\n * @param {Number} bottom Bottom bound of the frustum\n * @param {Number} top Top bound of the frustum\n * @param {Number} near Near bound of the frustum\n * @param {Number} far Far bound of the frustum\n * @returns {mat4} out\n */\nfunction frustum(out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left),\n tb = 1 / (top - bottom),\n nf = 1 / (near - far);\n out[0] = (near * 2) * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = (near * 2) * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = (far * near * 2) * nf;\n out[15] = 0;\n return out;\n};","module.exports = identity;\n\n/**\n * Set a mat4 to the identity matrix\n *\n * @param {mat4} out the receiving matrix\n * @returns {mat4} out\n */\nfunction identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n};","module.exports = {\n create: require('./create')\n , clone: require('./clone')\n , copy: require('./copy')\n , identity: require('./identity')\n , transpose: require('./transpose')\n , invert: require('./invert')\n , adjoint: require('./adjoint')\n , determinant: require('./determinant')\n , multiply: require('./multiply')\n , translate: require('./translate')\n , scale: require('./scale')\n , rotate: require('./rotate')\n , rotateX: require('./rotateX')\n , rotateY: require('./rotateY')\n , rotateZ: require('./rotateZ')\n , fromRotation: require('./fromRotation')\n , fromRotationTranslation: require('./fromRotationTranslation')\n , fromScaling: require('./fromScaling')\n , fromTranslation: require('./fromTranslation')\n , fromXRotation: require('./fromXRotation')\n , fromYRotation: require('./fromYRotation')\n , fromZRotation: require('./fromZRotation')\n , fromQuat: require('./fromQuat')\n , frustum: require('./frustum')\n , perspective: require('./perspective')\n , perspectiveFromFieldOfView: require('./perspectiveFromFieldOfView')\n , ortho: require('./ortho')\n , lookAt: require('./lookAt')\n , str: require('./str')\n}\n","module.exports = invert;\n\n/**\n * Inverts a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the source matrix\n * @returns {mat4} out\n */\nfunction invert(out, a) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3],\n a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7],\n a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11],\n a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15],\n\n b00 = a00 * a11 - a01 * a10,\n b01 = a00 * a12 - a02 * a10,\n b02 = a00 * a13 - a03 * a10,\n b03 = a01 * a12 - a02 * a11,\n b04 = a01 * a13 - a03 * a11,\n b05 = a02 * a13 - a03 * a12,\n b06 = a20 * a31 - a21 * a30,\n b07 = a20 * a32 - a22 * a30,\n b08 = a20 * a33 - a23 * a30,\n b09 = a21 * a32 - a22 * a31,\n b10 = a21 * a33 - a23 * a31,\n b11 = a22 * a33 - a23 * a32,\n\n // Calculate the determinant\n det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) { \n return null; \n }\n det = 1.0 / det;\n\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n\n return out;\n};","var identity = require('./identity');\n\nmodule.exports = lookAt;\n\n/**\n * Generates a look-at matrix with the given eye position, focal point, and up axis\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {vec3} eye Position of the viewer\n * @param {vec3} center Point the viewer is looking at\n * @param {vec3} up vec3 pointing up\n * @returns {mat4} out\n */\nfunction lookAt(out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len,\n eyex = eye[0],\n eyey = eye[1],\n eyez = eye[2],\n upx = up[0],\n upy = up[1],\n upz = up[2],\n centerx = center[0],\n centery = center[1],\n centerz = center[2];\n\n if (Math.abs(eyex - centerx) < 0.000001 &&\n Math.abs(eyey - centery) < 0.000001 &&\n Math.abs(eyez - centerz) < 0.000001) {\n return identity(out);\n }\n\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n\n len = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2);\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n\n len = Math.sqrt(y0 * y0 + y1 * y1 + y2 * y2);\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n\n return out;\n};","module.exports = multiply;\n\n/**\n * Multiplies two mat4's\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the first operand\n * @param {mat4} b the second operand\n * @returns {mat4} out\n */\nfunction multiply(out, a, b) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3],\n a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7],\n a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11],\n a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n\n // Cache only the current line of the second matrix\n var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; \n out[0] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n out[1] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n out[2] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n out[3] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n\n b0 = b[4]; b1 = b[5]; b2 = b[6]; b3 = b[7];\n out[4] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n out[5] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n out[6] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n out[7] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n\n b0 = b[8]; b1 = b[9]; b2 = b[10]; b3 = b[11];\n out[8] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n out[9] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n out[10] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n out[11] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n\n b0 = b[12]; b1 = b[13]; b2 = b[14]; b3 = b[15];\n out[12] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n out[13] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n out[14] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n out[15] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n return out;\n};","module.exports = ortho;\n\n/**\n * Generates a orthogonal projection matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\nfunction ortho(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right),\n bt = 1 / (bottom - top),\n nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n};","module.exports = perspective;\n\n/**\n * Generates a perspective projection matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\nfunction perspective(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf = 1 / (near - far);\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = (2 * far * near) * nf;\n out[15] = 0;\n return out;\n};","module.exports = perspectiveFromFieldOfView;\n\n/**\n * Generates a perspective projection matrix with the given field of view.\n * This is primarily useful for generating projection matrices to be used\n * with the still experiemental WebVR API.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\nfunction perspectiveFromFieldOfView(out, fov, near, far) {\n var upTan = Math.tan(fov.upDegrees * Math.PI/180.0),\n downTan = Math.tan(fov.downDegrees * Math.PI/180.0),\n leftTan = Math.tan(fov.leftDegrees * Math.PI/180.0),\n rightTan = Math.tan(fov.rightDegrees * Math.PI/180.0),\n xScale = 2.0 / (leftTan + rightTan),\n yScale = 2.0 / (upTan + downTan);\n\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = ((upTan - downTan) * yScale * 0.5);\n out[10] = far / (near - far);\n out[11] = -1.0;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = (far * near) / (near - far);\n out[15] = 0.0;\n return out;\n}\n\n","module.exports = rotate;\n\n/**\n * Rotates a mat4 by the given angle\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @param {vec3} axis the axis to rotate around\n * @returns {mat4} out\n */\nfunction rotate(out, a, rad, axis) {\n var x = axis[0], y = axis[1], z = axis[2],\n len = Math.sqrt(x * x + y * y + z * z),\n s, c, t,\n a00, a01, a02, a03,\n a10, a11, a12, a13,\n a20, a21, a22, a23,\n b00, b01, b02,\n b10, b11, b12,\n b20, b21, b22;\n\n if (Math.abs(len) < 0.000001) { return null; }\n \n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n\n a00 = a[0]; a01 = a[1]; a02 = a[2]; a03 = a[3];\n a10 = a[4]; a11 = a[5]; a12 = a[6]; a13 = a[7];\n a20 = a[8]; a21 = a[9]; a22 = a[10]; a23 = a[11];\n\n // Construct the elements of the rotation matrix\n b00 = x * x * t + c; b01 = y * x * t + z * s; b02 = z * x * t - y * s;\n b10 = x * y * t - z * s; b11 = y * y * t + c; b12 = z * y * t + x * s;\n b20 = x * z * t + y * s; b21 = y * z * t - x * s; b22 = z * z * t + c;\n\n // Perform rotation-specific matrix multiplication\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n if (a !== out) { // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n return out;\n};","module.exports = rotateX;\n\n/**\n * Rotates a matrix by the given angle around the X axis\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nfunction rotateX(out, a, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad),\n a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7],\n a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n\n if (a !== out) { // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n // Perform axis-specific matrix multiplication\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n};","module.exports = rotateY;\n\n/**\n * Rotates a matrix by the given angle around the Y axis\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nfunction rotateY(out, a, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad),\n a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3],\n a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n\n if (a !== out) { // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n // Perform axis-specific matrix multiplication\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n};","module.exports = rotateZ;\n\n/**\n * Rotates a matrix by the given angle around the Z axis\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nfunction rotateZ(out, a, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad),\n a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3],\n a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n\n if (a !== out) { // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n // Perform axis-specific matrix multiplication\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n};","module.exports = scale;\n\n/**\n * Scales the mat4 by the dimensions in the given vec3\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to scale\n * @param {vec3} v the vec3 to scale the matrix by\n * @returns {mat4} out\n **/\nfunction scale(out, a, v) {\n var x = v[0], y = v[1], z = v[2];\n\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n};","module.exports = str;\n\n/**\n * Returns a string representation of a mat4\n *\n * @param {mat4} mat matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\nfunction str(a) {\n return 'mat4(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ', ' +\n a[4] + ', ' + a[5] + ', ' + a[6] + ', ' + a[7] + ', ' +\n a[8] + ', ' + a[9] + ', ' + a[10] + ', ' + a[11] + ', ' + \n a[12] + ', ' + a[13] + ', ' + a[14] + ', ' + a[15] + ')';\n};","module.exports = translate;\n\n/**\n * Translate a mat4 by the given vector\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to translate\n * @param {vec3} v vector to translate by\n * @returns {mat4} out\n */\nfunction translate(out, a, v) {\n var x = v[0], y = v[1], z = v[2],\n a00, a01, a02, a03,\n a10, a11, a12, a13,\n a20, a21, a22, a23;\n\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0]; a01 = a[1]; a02 = a[2]; a03 = a[3];\n a10 = a[4]; a11 = a[5]; a12 = a[6]; a13 = a[7];\n a20 = a[8]; a21 = a[9]; a22 = a[10]; a23 = a[11];\n\n out[0] = a00; out[1] = a01; out[2] = a02; out[3] = a03;\n out[4] = a10; out[5] = a11; out[6] = a12; out[7] = a13;\n out[8] = a20; out[9] = a21; out[10] = a22; out[11] = a23;\n\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n\n return out;\n};","module.exports = transpose;\n\n/**\n * Transpose the values of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the source matrix\n * @returns {mat4} out\n */\nfunction transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1], a02 = a[2], a03 = a[3],\n a12 = a[6], a13 = a[7],\n a23 = a[11];\n\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n \n return out;\n};","module.exports = add;\n\n/**\n * Adds two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */\nfunction add(out, a, b) {\n out[0] = a[0] + b[0]\n out[1] = a[1] + b[1]\n out[2] = a[2] + b[2]\n return out\n}","module.exports = angle\n\nvar fromValues = require('./fromValues')\nvar normalize = require('./normalize')\nvar dot = require('./dot')\n\n/**\n * Get the angle between two 3D vectors\n * @param {vec3} a The first operand\n * @param {vec3} b The second operand\n * @returns {Number} The angle in radians\n */\nfunction angle(a, b) {\n var tempA = fromValues(a[0], a[1], a[2])\n var tempB = fromValues(b[0], b[1], b[2])\n \n normalize(tempA, tempA)\n normalize(tempB, tempB)\n \n var cosine = dot(tempA, tempB)\n\n if(cosine > 1.0){\n return 0\n } else {\n return Math.acos(cosine)\n } \n}\n","module.exports = ceil\n\n/**\n * Math.ceil the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a vector to ceil\n * @returns {vec3} out\n */\nfunction ceil(out, a) {\n out[0] = Math.ceil(a[0])\n out[1] = Math.ceil(a[1])\n out[2] = Math.ceil(a[2])\n return out\n}\n","module.exports = clone;\n\n/**\n * Creates a new vec3 initialized with values from an existing vector\n *\n * @param {vec3} a vector to clone\n * @returns {vec3} a new 3D vector\n */\nfunction clone(a) {\n var out = new Float32Array(3)\n out[0] = a[0]\n out[1] = a[1]\n out[2] = a[2]\n return out\n}","module.exports = copy;\n\n/**\n * Copy the values from one vec3 to another\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the source vector\n * @returns {vec3} out\n */\nfunction copy(out, a) {\n out[0] = a[0]\n out[1] = a[1]\n out[2] = a[2]\n return out\n}","module.exports = create;\n\n/**\n * Creates a new, empty vec3\n *\n * @returns {vec3} a new 3D vector\n */\nfunction create() {\n var out = new Float32Array(3)\n out[0] = 0\n out[1] = 0\n out[2] = 0\n return out\n}","module.exports = cross;\n\n/**\n * Computes the cross product of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */\nfunction cross(out, a, b) {\n var ax = a[0], ay = a[1], az = a[2],\n bx = b[0], by = b[1], bz = b[2]\n\n out[0] = ay * bz - az * by\n out[1] = az * bx - ax * bz\n out[2] = ax * by - ay * bx\n return out\n}","module.exports = require('./distance')\n","module.exports = distance;\n\n/**\n * Calculates the euclidian distance between two vec3's\n *\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {Number} distance between a and b\n */\nfunction distance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1],\n z = b[2] - a[2]\n return Math.sqrt(x*x + y*y + z*z)\n}","module.exports = require('./divide')\n","module.exports = divide;\n\n/**\n * Divides two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */\nfunction divide(out, a, b) {\n out[0] = a[0] / b[0]\n out[1] = a[1] / b[1]\n out[2] = a[2] / b[2]\n return out\n}","module.exports = dot;\n\n/**\n * Calculates the dot product of two vec3's\n *\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {Number} dot product of a and b\n */\nfunction dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]\n}","module.exports = 0.000001\n","module.exports = equals\n\nvar EPSILON = require('./epsilon')\n\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {vec3} a The first vector.\n * @param {vec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\nfunction equals(a, b) {\n var a0 = a[0]\n var a1 = a[1]\n var a2 = a[2]\n var b0 = b[0]\n var b1 = b[1]\n var b2 = b[2]\n return (Math.abs(a0 - b0) <= EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) &&\n Math.abs(a1 - b1) <= EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) &&\n Math.abs(a2 - b2) <= EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)))\n}\n","module.exports = exactEquals\n\n/**\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n *\n * @param {vec3} a The first vector.\n * @param {vec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\nfunction exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2]\n}\n","module.exports = floor\n\n/**\n * Math.floor the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a vector to floor\n * @returns {vec3} out\n */\nfunction floor(out, a) {\n out[0] = Math.floor(a[0])\n out[1] = Math.floor(a[1])\n out[2] = Math.floor(a[2])\n return out\n}\n","module.exports = forEach;\n\nvar vec = require('./create')()\n\n/**\n * Perform some operation over an array of vec3s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\nfunction forEach(a, stride, offset, count, fn, arg) {\n var i, l\n if(!stride) {\n stride = 3\n }\n\n if(!offset) {\n offset = 0\n }\n \n if(count) {\n l = Math.min((count * stride) + offset, a.length)\n } else {\n l = a.length\n }\n\n for(i = offset; i < l; i += stride) {\n vec[0] = a[i] \n vec[1] = a[i+1] \n vec[2] = a[i+2]\n fn(vec, vec, arg)\n a[i] = vec[0] \n a[i+1] = vec[1] \n a[i+2] = vec[2]\n }\n \n return a\n}","module.exports = fromValues;\n\n/**\n * Creates a new vec3 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} a new 3D vector\n */\nfunction fromValues(x, y, z) {\n var out = new Float32Array(3)\n out[0] = x\n out[1] = y\n out[2] = z\n return out\n}","module.exports = {\n EPSILON: require('./epsilon')\n , create: require('./create')\n , clone: require('./clone')\n , angle: require('./angle')\n , fromValues: require('./fromValues')\n , copy: require('./copy')\n , set: require('./set')\n , equals: require('./equals')\n , exactEquals: require('./exactEquals')\n , add: require('./add')\n , subtract: require('./subtract')\n , sub: require('./sub')\n , multiply: require('./multiply')\n , mul: require('./mul')\n , divide: require('./divide')\n , div: require('./div')\n , min: require('./min')\n , max: require('./max')\n , floor: require('./floor')\n , ceil: require('./ceil')\n , round: require('./round')\n , scale: require('./scale')\n , scaleAndAdd: require('./scaleAndAdd')\n , distance: require('./distance')\n , dist: require('./dist')\n , squaredDistance: require('./squaredDistance')\n , sqrDist: require('./sqrDist')\n , length: require('./length')\n , len: require('./len')\n , squaredLength: require('./squaredLength')\n , sqrLen: require('./sqrLen')\n , negate: require('./negate')\n , inverse: require('./inverse')\n , normalize: require('./normalize')\n , dot: require('./dot')\n , cross: require('./cross')\n , lerp: require('./lerp')\n , random: require('./random')\n , transformMat4: require('./transformMat4')\n , transformMat3: require('./transformMat3')\n , transformQuat: require('./transformQuat')\n , rotateX: require('./rotateX')\n , rotateY: require('./rotateY')\n , rotateZ: require('./rotateZ')\n , forEach: require('./forEach')\n}\n","module.exports = inverse;\n\n/**\n * Returns the inverse of the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a vector to invert\n * @returns {vec3} out\n */\nfunction inverse(out, a) {\n out[0] = 1.0 / a[0]\n out[1] = 1.0 / a[1]\n out[2] = 1.0 / a[2]\n return out\n}","module.exports = require('./length')\n","module.exports = length;\n\n/**\n * Calculates the length of a vec3\n *\n * @param {vec3} a vector to calculate length of\n * @returns {Number} length of a\n */\nfunction length(a) {\n var x = a[0],\n y = a[1],\n z = a[2]\n return Math.sqrt(x*x + y*y + z*z)\n}","module.exports = lerp;\n\n/**\n * Performs a linear interpolation between two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @param {Number} t interpolation amount between the two inputs\n * @returns {vec3} out\n */\nfunction lerp(out, a, b, t) {\n var ax = a[0],\n ay = a[1],\n az = a[2]\n out[0] = ax + t * (b[0] - ax)\n out[1] = ay + t * (b[1] - ay)\n out[2] = az + t * (b[2] - az)\n return out\n}","module.exports = max;\n\n/**\n * Returns the maximum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */\nfunction max(out, a, b) {\n out[0] = Math.max(a[0], b[0])\n out[1] = Math.max(a[1], b[1])\n out[2] = Math.max(a[2], b[2])\n return out\n}","module.exports = min;\n\n/**\n * Returns the minimum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */\nfunction min(out, a, b) {\n out[0] = Math.min(a[0], b[0])\n out[1] = Math.min(a[1], b[1])\n out[2] = Math.min(a[2], b[2])\n return out\n}","module.exports = require('./multiply')\n","module.exports = multiply;\n\n/**\n * Multiplies two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */\nfunction multiply(out, a, b) {\n out[0] = a[0] * b[0]\n out[1] = a[1] * b[1]\n out[2] = a[2] * b[2]\n return out\n}","module.exports = negate;\n\n/**\n * Negates the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a vector to negate\n * @returns {vec3} out\n */\nfunction negate(out, a) {\n out[0] = -a[0]\n out[1] = -a[1]\n out[2] = -a[2]\n return out\n}","module.exports = normalize;\n\n/**\n * Normalize a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a vector to normalize\n * @returns {vec3} out\n */\nfunction normalize(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2]\n var len = x*x + y*y + z*z\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len)\n out[0] = a[0] * len\n out[1] = a[1] * len\n out[2] = a[2] * len\n }\n return out\n}","module.exports = random;\n\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec3} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec3} out\n */\nfunction random(out, scale) {\n scale = scale || 1.0\n\n var r = Math.random() * 2.0 * Math.PI\n var z = (Math.random() * 2.0) - 1.0\n var zScale = Math.sqrt(1.0-z*z) * scale\n\n out[0] = Math.cos(r) * zScale\n out[1] = Math.sin(r) * zScale\n out[2] = z * scale\n return out\n}","module.exports = rotateX;\n\n/**\n * Rotate a 3D vector around the x-axis\n * @param {vec3} out The receiving vec3\n * @param {vec3} a The vec3 point to rotate\n * @param {vec3} b The origin of the rotation\n * @param {Number} c The angle of rotation\n * @returns {vec3} out\n */\nfunction rotateX(out, a, b, c){\n var by = b[1]\n var bz = b[2]\n\n // Translate point to the origin\n var py = a[1] - by\n var pz = a[2] - bz\n\n var sc = Math.sin(c)\n var cc = Math.cos(c)\n\n // perform rotation and translate to correct position\n out[0] = a[0]\n out[1] = by + py * cc - pz * sc\n out[2] = bz + py * sc + pz * cc\n\n return out\n}\n","module.exports = rotateY;\n\n/**\n * Rotate a 3D vector around the y-axis\n * @param {vec3} out The receiving vec3\n * @param {vec3} a The vec3 point to rotate\n * @param {vec3} b The origin of the rotation\n * @param {Number} c The angle of rotation\n * @returns {vec3} out\n */\nfunction rotateY(out, a, b, c){\n var bx = b[0]\n var bz = b[2]\n\n // translate point to the origin\n var px = a[0] - bx\n var pz = a[2] - bz\n \n var sc = Math.sin(c)\n var cc = Math.cos(c)\n \n // perform rotation and translate to correct position\n out[0] = bx + pz * sc + px * cc\n out[1] = a[1]\n out[2] = bz + pz * cc - px * sc\n \n return out\n}\n","module.exports = rotateZ;\n\n/**\n * Rotate a 3D vector around the z-axis\n * @param {vec3} out The receiving vec3\n * @param {vec3} a The vec3 point to rotate\n * @param {vec3} b The origin of the rotation\n * @param {Number} c The angle of rotation\n * @returns {vec3} out\n */\nfunction rotateZ(out, a, b, c){\n var bx = b[0]\n var by = b[1]\n\n //Translate point to the origin\n var px = a[0] - bx\n var py = a[1] - by\n \n var sc = Math.sin(c)\n var cc = Math.cos(c)\n\n // perform rotation and translate to correct position\n out[0] = bx + px * cc - py * sc\n out[1] = by + px * sc + py * cc\n out[2] = a[2]\n \n return out\n}\n","module.exports = round\n\n/**\n * Math.round the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a vector to round\n * @returns {vec3} out\n */\nfunction round(out, a) {\n out[0] = Math.round(a[0])\n out[1] = Math.round(a[1])\n out[2] = Math.round(a[2])\n return out\n}\n","module.exports = scale;\n\n/**\n * Scales a vec3 by a scalar number\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec3} out\n */\nfunction scale(out, a, b) {\n out[0] = a[0] * b\n out[1] = a[1] * b\n out[2] = a[2] * b\n return out\n}","module.exports = scaleAndAdd;\n\n/**\n * Adds two vec3's after scaling the second operand by a scalar value\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec3} out\n */\nfunction scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + (b[0] * scale)\n out[1] = a[1] + (b[1] * scale)\n out[2] = a[2] + (b[2] * scale)\n return out\n}","module.exports = set;\n\n/**\n * Set the components of a vec3 to the given values\n *\n * @param {vec3} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} out\n */\nfunction set(out, x, y, z) {\n out[0] = x\n out[1] = y\n out[2] = z\n return out\n}","module.exports = require('./squaredDistance')\n","module.exports = require('./squaredLength')\n","module.exports = squaredDistance;\n\n/**\n * Calculates the squared euclidian distance between two vec3's\n *\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {Number} squared distance between a and b\n */\nfunction squaredDistance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1],\n z = b[2] - a[2]\n return x*x + y*y + z*z\n}","module.exports = squaredLength;\n\n/**\n * Calculates the squared length of a vec3\n *\n * @param {vec3} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\nfunction squaredLength(a) {\n var x = a[0],\n y = a[1],\n z = a[2]\n return x*x + y*y + z*z\n}","module.exports = require('./subtract')\n","module.exports = subtract;\n\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */\nfunction subtract(out, a, b) {\n out[0] = a[0] - b[0]\n out[1] = a[1] - b[1]\n out[2] = a[2] - b[2]\n return out\n}","module.exports = transformMat3;\n\n/**\n * Transforms the vec3 with a mat3.\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the vector to transform\n * @param {mat4} m the 3x3 matrix to transform with\n * @returns {vec3} out\n */\nfunction transformMat3(out, a, m) {\n var x = a[0], y = a[1], z = a[2]\n out[0] = x * m[0] + y * m[3] + z * m[6]\n out[1] = x * m[1] + y * m[4] + z * m[7]\n out[2] = x * m[2] + y * m[5] + z * m[8]\n return out\n}","module.exports = transformMat4;\n\n/**\n * Transforms the vec3 with a mat4.\n * 4th vector component is implicitly '1'\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the vector to transform\n * @param {mat4} m matrix to transform with\n * @returns {vec3} out\n */\nfunction transformMat4(out, a, m) {\n var x = a[0], y = a[1], z = a[2],\n w = m[3] * x + m[7] * y + m[11] * z + m[15]\n w = w || 1.0\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w\n return out\n}","module.exports = transformQuat;\n\n/**\n * Transforms the vec3 with a quat\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the vector to transform\n * @param {quat} q quaternion to transform with\n * @returns {vec3} out\n */\nfunction transformQuat(out, a, q) {\n // benchmarks: http://jsperf.com/quaternion-transform-vec3-implementations\n\n var x = a[0], y = a[1], z = a[2],\n qx = q[0], qy = q[1], qz = q[2], qw = q[3],\n\n // calculate quat * vec\n ix = qw * x + qy * z - qz * y,\n iy = qw * y + qz * x - qx * z,\n iz = qw * z + qx * y - qy * x,\n iw = -qx * x - qy * y - qz * z\n\n // calculate result * inverse quat\n out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy\n out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz\n out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx\n return out\n}","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\nmodule.exports = _createForOfIteratorHelper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var defineProperty = require(\"./defineProperty.js\");\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nmodule.exports = _objectSpread2, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nmodule.exports = _toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\nmodule.exports = _toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"e5b8f22d\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"easy-enclosure:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/easy-enclosure/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkeasy_enclosure\"] = self[\"webpackChunkeasy_enclosure\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nexport default function _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","/**\r\n * Copied from fbjs is-shallow-equal\r\n */\r\n\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\n/**\r\n * inlined Object.is polyfill to avoid requiring consumers ship their own\r\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\r\n */\r\nfunction is(x: any, y: any): boolean {\r\n // SameValue algorithm\r\n if (x === y) { // Steps 1-5, 7-10\r\n // Steps 6.b-6.e: +0 != -0\r\n // Added the nonzero y check to make Flow happy, but it is redundant\r\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\r\n } else {\r\n // Step 6.a: NaN == NaN\r\n return x !== x && y !== y;\r\n }\r\n}\r\n\r\n/**\r\n * Performs equality by iterating through keys on an object and returning false\r\n * when any key has values which are not strictly equal between the arguments.\r\n * Returns true when the values of all keys are strictly equal.\r\n */\r\nexport function shallowEqual(objA: any, objB: any): boolean {\r\n if (is(objA, objB)) {\r\n return true;\r\n }\r\n\r\n if (typeof objA !== 'object' || objA === null ||\r\n typeof objB !== 'object' || objB === null) {\r\n return false;\r\n }\r\n\r\n const keysA = Object.keys(objA);\r\n const keysB = Object.keys(objB);\r\n\r\n if (keysA.length !== keysB.length) {\r\n return false;\r\n }\r\n\r\n // Test for A's keys different from B.\r\n for (let i = 0; i < keysA.length; i++) {\r\n if (\r\n !hasOwnProperty.call(objB, keysA[i]) ||\r\n !is(objA[keysA[i]], objB[keysA[i]])\r\n ) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}","import React from 'react';\r\nimport { shallowEqual } from './is-shallow-equal';\r\n\r\n///\r\n/// EXPORTED SYMBOLS (LIBRARY INTERFACE)\r\n///\r\n\r\n/**\r\n * 'JSON path' from root of a state object to a nested property.\r\n * Return type of [StateMethod.path](#readonly-path).\r\n *\r\n * For example, an object `{ a: [{ b: 1 }, { 1000: 'value' }, '3rd'] }`,\r\n * has got the following paths pointing to existing properties:\r\n *\r\n * - `[]`\r\n * - `['a']`\r\n * - `['a', 0]`\r\n * - `['a', 0, 'b']`\r\n * - `['a', 1]`\r\n * - `['a', 1, 1000]`\r\n * - `['a', 2]`\r\n */\r\nexport type Path = ReadonlyArray;\r\n\r\n/**\r\n * Type of an argument of [State.set](#set).\r\n * \r\n * @typeparam S Type of a value of a state\r\n */\r\nexport type SetStateAction = (S | Immutable | Promise>) | ((prevState: S) => (S | Immutable | Promise>));\r\n\r\n/**\r\n * Type of an argument of [State.merge](#merge).\r\n * \r\n * @typeparam S Type of a value of a state\r\n */\r\nexport type SetPartialStateAction =\r\n S extends ReadonlyArray<(infer U)> ?\r\n ReadonlyArray> | Record> | ((prevValue: S) => (ReadonlyArray> | Record>)) :\r\n S extends object | string ? Partial> | ((prevValue: S) => Partial>) :\r\n S | Immutable | ((prevState: S) => (S | Immutable));\r\n\r\n/**\r\n * Type of an argument of [hookstate](#hookstate) and [useHookstate](#useHookstate).\r\n * \r\n * @typeparam S Type of a value of a state\r\n */\r\nexport type SetInitialStateAction = S | Promise | (() => S | Promise)\r\n\r\n/**\r\n * Special symbol which might be used to delete properties\r\n * from an object calling [State.set](#set) or [State.merge](#merge).\r\n * \r\n * [Learn more...](https://hookstate.js.org/docs/nested-state#deleting-existing-element)\r\n */\r\nexport const none = Symbol('none') as StateValueAtPath;\r\n\r\n/**\r\n * Return type of [State.keys](#readonly-keys).\r\n * \r\n * @typeparam S Type of a value of a state\r\n */\r\nexport type InferStateKeysType =\r\n S extends ReadonlyArray ? ReadonlyArray :\r\n S extends null ? undefined :\r\n S extends object ? ReadonlyArray :\r\n undefined;\r\n\r\n/**\r\n * Return type of [State.ornull](#ornull).\r\n * \r\n * @typeparam S Type of a value of a state\r\n */\r\nexport type InferStateOrnullType =\r\n S extends undefined ? undefined :\r\n S extends null ? null : State;\r\n\r\n/**\r\n * Makes a value deep readonly\r\n */\r\nexport type Immutable =\r\n T extends ImmutablePrimitive ? T :\r\n T extends Array ? ImmutableArray :\r\n T extends Map ? ImmutableMap :\r\n T extends Set ? ImmutableSet : ImmutableObject;\r\nexport type ImmutablePrimitive = undefined | null | boolean | string | number | Function;\r\nexport type ImmutableArray = ReadonlyArray>;\r\nexport type ImmutableMap = ReadonlyMap, Immutable>;\r\nexport type ImmutableSet = ReadonlySet>;\r\nexport type ImmutableObject = { readonly [K in keyof T]: Immutable };\r\n\r\n/**\r\n * An interface to manage a state in Hookstate.\r\n * \r\n * @typeparam S Type of a value of a state\r\n */\r\nexport interface StateMethods {\r\n /**\r\n * 'Javascript' object 'path' to an element relative to the root object\r\n * in the state. For example:\r\n *\r\n * ```tsx\r\n * const state = useHookstate([{ name: 'First Task' }])\r\n * state.path IS []\r\n * state[0].path IS [0]\r\n * state.[0].name.path IS [0, 'name']\r\n * ```\r\n */\r\n readonly path: Path;\r\n\r\n /**\r\n * Return the keys of nested states.\r\n * For a given state of [State](#state) type,\r\n * `state.keys` will be structurally equal to Object.keys(state),\r\n * with two minor difference:\r\n * 1. if `state.value` is an array, the returned result will be\r\n * an array of numbers, not strings like with `Object.keys`.\r\n * 2. if `state.value` is not an object, the returned result will be undefined.\r\n */\r\n readonly keys: InferStateKeysType;\r\n\r\n /**\r\n * Unwraps and returns the underlying state value referred by\r\n * [path](#readonly-path) of this state instance.\r\n *\r\n * It returns the same result as [State.get](#get) method.\r\n *\r\n * This property is more useful than [get](#get) method for the cases,\r\n * when a value may hold null or undefined values.\r\n * Typescript compiler does not handle elimination of undefined with get(),\r\n * like in the following examples, but value does:\r\n *\r\n * ```tsx\r\n * const state = useHookstate(0)\r\n * const myvalue: number = state.value\r\n * ? state.value + 1\r\n * : 0; // <-- compiles\r\n * const myvalue: number = state.get()\r\n * ? state.get() + 1\r\n * : 0; // <-- does not compile\r\n * ```\r\n */\r\n readonly value: Immutable;\r\n\r\n /**\r\n * True if state value is not yet available (eg. equal to a promise)\r\n */\r\n readonly promised: boolean;\r\n\r\n /**\r\n * If the State is promised, this will be a defined promise\r\n * which an application can use to subscribe to with 'then' callback.\r\n */\r\n readonly promise: Promise> | undefined;\r\n\r\n /**\r\n * If a state was set to a promise and the promise was rejected,\r\n * this property will return the error captured from the promise rejection\r\n */\r\n readonly error: StateErrorAtRoot | undefined;\r\n\r\n /**\r\n * Unwraps and returns the underlying state value referred by\r\n * [path](#readonly-path) of this state instance.\r\n *\r\n * It returns the same result as [State.value](#readonly-value) method.\r\n * \r\n * If the additional option `noproxy` is set, the method will return\r\n * the original data object without wrapping it by proxy.\r\n * All properties of the object will be marked as used and on change will trigger the rerender.\r\n * \r\n * If the additional option `stealth` is set, the method will not mark\r\n * the object as used and it will not trigger the rerender if it is changed.\r\n * It might be helpful to use it during debugging, for example:\r\n * `console.log(state.get({ stealth: true }))`.\r\n * If you use it, make sure you know what you are doing. \r\n */\r\n get(options?: { noproxy?: boolean, stealth?: boolean }): Immutable;\r\n\r\n /**\r\n * Sets new value for a state.\r\n * If `this.path === []`,\r\n * it is similar to the `setState` variable returned by `React.useState` hook.\r\n * If `this.path !== []`, it sets only the segment of the state value, pointed out by the path.\r\n * Unlike [merge](#merge) method, this method will not accept partial updates.\r\n * Partial updates can be also done by walking the nested states and setting those.\r\n *\r\n * @param newValue new value to set to a state.\r\n * It can be a value, a promise resolving to a value\r\n * (only if [this.path](#readonly-path) is `[]`),\r\n * or a function returning one of these.\r\n * The function receives the current state value as an argument.\r\n */\r\n set(newValue: SetStateAction): void;\r\n\r\n /**\r\n * Similarly to [set](#set) method updates state value.\r\n *\r\n * - If current state value is an object, it does partial update for the object.\r\n * - If state value is an array and the argument is an array too,\r\n * it concatenates the current value with the value of the argument and sets it to the state.\r\n * - If state value is an array and the `merge` argument is an object,\r\n * it does partial update for the current array value.\r\n * - If current state value is a string, it concatenates the current state\r\n * value with the argument converted to string and sets the result to the state.\r\n */\r\n merge(newValue: SetPartialStateAction): void;\r\n\r\n /**\r\n * Returns nested state by key.\r\n * `state.nested('myprop')` returns the same as `state.myprop` or `state['myprop']`,\r\n * but also works for properties, which names collide with names of state methods.\r\n * \r\n * [Learn more about nested states...](https://hookstate.js.org/docs/nested-state)\r\n * \r\n * @param key child property name or index\r\n */\r\n nested(key: K): State;\r\n\r\n /**\r\n * If state value is null or undefined, returns state value.\r\n * Otherwise, it returns this state instance but\r\n * with null and undefined removed from the type parameter.\r\n * \r\n * [Learn more...](https://hookstate.js.org/docs/nullable-state)\r\n */\r\n ornull: InferStateOrnullType;\r\n}\r\n\r\n/**\r\n * Returns an interface stripped of all keys that don't resolve to U, defaulting \r\n * to a non-strict comparison of T[key] extends U. Setting B to true performs\r\n * a strict type comparison of T[key] extends U & U extends T[key]\r\n */\r\nexport type InferKeysOfType = {\r\n [P in keyof T]: B extends true\r\n ? T[P] extends U\r\n ? (U extends T[P]\r\n ? P\r\n : never)\r\n : never\r\n : T[P] extends U\r\n ? P\r\n : never;\r\n}[keyof T];\r\n\r\n// type PickByType = Pick>;\r\n\r\n/**\r\n * A symbol which is used for type inference marking.\r\n * \r\n * @hidden\r\n * @ignore\r\n */\r\nexport const __state = Symbol('__state')\r\n/**\r\n * An interface which is used for type inference marking.\r\n * \r\n * @hidden\r\n * @ignore\r\n */\r\nexport interface __State {\r\n [__state]: [S, E]\r\n}\r\n\r\n/**\r\n * A routine which allows to extract value type of a state. Useful for extension developers.\r\n */\r\nexport type InferStateValueType = InferReturnType extends __State<(infer S), (infer _)> ? S : V\r\n/**\r\n * A routine which allows to extract extension methods / properties type of a state.\r\n * Useful for extension developers.\r\n */\r\nexport type InferStateExtensionType = InferReturnType extends __State<(infer _), (infer E)>\r\n ? E\r\n : InferReturnType extends Extension<(infer _), (infer _), (infer E)>\r\n ? E : V\r\nexport type InferReturnType = V extends (...args: any) => (infer R) ? InferReturnType : V;\r\n\r\n/**\r\n * Type of a result of [hookstate](#hookstate) and [useHookstate](#useHookstate) functions\r\n * \r\n * @typeparam S Type of a value of a state\r\n * \r\n * [Learn more about global states...](https://hookstate.js.org/docs/global-state)\r\n * [Learn more about local states...](https://hookstate.js.org/docs/local-state)\r\n * [Learn more about nested states...](https://hookstate.js.org/docs/nested-state)\r\n */\r\nexport type State = __State & StateMethods & E & (\r\n S extends ReadonlyArray<(infer U)> ? ReadonlyArray> :\r\n S extends object ? Omit<\r\n { readonly [K in keyof Required]: State; },\r\n keyof StateMethods | InferKeysOfType | keyof E\r\n > : {}\r\n);\r\n\r\n/**\r\n * For extension developers only.\r\n * Type alias to highlight the places where we are dealing with root state value.\r\n *\r\n * @hidden\r\n * @ignore\r\n */\r\nexport type StateValueAtRoot = any; //tslint:disable-line: no-any\r\n/**\r\n * For extension developers only.\r\n * Type alias to highlight the places where we are dealing with nested state value.\r\n *\r\n * @hidden\r\n * @ignore\r\n */\r\nexport type StateValueAtPath = any; //tslint:disable-line: no-any\r\n/**\r\n * For extension developers only.\r\n * Type alias to highlight the places where we are dealing with state error.\r\n *\r\n * @hidden\r\n * @ignore\r\n */\r\nexport type StateErrorAtRoot = any; //tslint:disable-line: no-any\r\n\r\n/**\r\n * For extension developers only.\r\n * Type alias to highlight the places where we are dealing with unknown state extension type.\r\n *\r\n * @hidden\r\n * @ignore\r\n */\r\nexport type StateExtensionUnknown = any; //tslint:disable-line: no-any\r\n\r\n/**\r\n * For extension developers only.\r\n * An additional descriptor of an action mutation action applied\r\n * \r\n * @hidden\r\n * @ignore\r\n */\r\nexport interface SetActionDescriptor {\r\n // path to update / rerender,\r\n // migth be not the same as the part of state methods\r\n // for example, when a new index is added to array\r\n path: Path,\r\n actions?: Record\r\n}\r\n\r\n/**\r\n * For extension developers only.\r\n * Set of callbacks, an extension may subscribe to.\r\n * \r\n * [Learn more...](https://hookstate.js.org/docs/writing-extension)\r\n */\r\nexport interface Extension {\r\n readonly onCreate?: (\r\n state: State,\r\n extensionsCallbacks: {\r\n [K in keyof I]: (i: State) => I[K];\r\n },\r\n ) => { readonly [K in keyof Required]: (state: State) => E[K]; },\r\n readonly onInit?: (\r\n state: State,\r\n extensionsCallbacks: {\r\n [K in keyof E & I]: (i: State) => (E & I)[K];\r\n }\r\n ) => void,\r\n readonly onPreset?: (state: State, value: StateValueAtPath, rootState: State) => void,\r\n readonly onPremerge?: (state: State, value: StateValueAtPath, rootState: State) => void,\r\n readonly onSet?: (state: State, descriptor: SetActionDescriptor, rootState: State) => void,\r\n readonly onDestroy?: (state: State) => void,\r\n};\r\n\r\nexport type ExtensionFactory = (typemarker?: __State) => Extension\r\n\r\nexport function hookstate(\r\n source: __State,\r\n extension?: ExtensionFactory\r\n): never;\r\n/**\r\n * Creates new state and returns it.\r\n *\r\n * You can create as many global states as you need.\r\n *\r\n * When you the state is not needed anymore,\r\n * it should be destroyed by calling\r\n * `destroy()` function.\r\n * This is necessary for some extensions,\r\n * which allocate native resources,\r\n * like subscription to databases, broadcast channels, etc.\r\n * In most cases, a global state is used during\r\n * whole life time of an application and would not require\r\n * destruction. However, if you have got, for example,\r\n * a catalog of dynamically created and destroyed global states,\r\n * the states should be destroyed as advised above.\r\n *\r\n * @param initial Initial value of the state.\r\n * It can be a value OR a promise,\r\n * which asynchronously resolves to a value,\r\n * OR a function returning a value or a promise.\r\n *\r\n * @typeparam S Type of a value of the state\r\n *\r\n * @returns [State](#state) instance,\r\n * which can be used directly to get and set state value\r\n * outside of React components.\r\n * When you need to use the state in a functional `React` component,\r\n * pass the created state to [useHookstate](#useHookstate) function and\r\n * use the returned result in the component's logic.\r\n */\r\nexport function hookstate(\r\n initial: SetInitialStateAction,\r\n extension?: ExtensionFactory\r\n): State;\r\nexport function hookstate(\r\n initial: SetInitialStateAction,\r\n extension?: ExtensionFactory\r\n): State {\r\n const store = createStore(initial);\r\n store.activate(extension as ExtensionFactory)\r\n const methods = store.toMethods();\r\n return methods.self() as unknown as State;\r\n}\r\n\r\n/**\r\n * A method to destroy a global state and resources allocated by the extensions\r\n */\r\nexport function destroy(state: __State) {\r\n (state[self] as StateMethodsImpl).deactivate()\r\n}\r\n\r\n/**\r\n * A method to check if a variable is an instance of Hookstate State\r\n */\r\nexport function isHookstate(v: any) {\r\n return !!(v?.[self])\r\n}\r\n\r\n/**\r\n * A method to check if a variable is an instance of traced (wrapped in a proxy) Hookstate Value\r\n */\r\nexport function isHookstateValue(v: any) {\r\n return !!(v?.[SelfMethodsID])\r\n}\r\n\r\n/**\r\n * A function combines multiple extensions into one extension and returns it\r\n * Browse an example [here](https://hookstate.js.org/docs/extensions-snapshotable)\r\n */\r\nexport function extend<\r\n S,\r\n E,\r\n E1 extends {} = {},\r\n E2 extends {} = {},\r\n E3 extends {} = {},\r\n E4 extends {} = {},\r\n E5 extends {} = {}\r\n>(\r\n e1?: ExtensionFactory,\r\n e2?: ExtensionFactory,\r\n e3?: ExtensionFactory,\r\n e4?: ExtensionFactory,\r\n e5?: ExtensionFactory\r\n): ExtensionFactory {\r\n function extended(extensions: (ExtensionFactory)[]) {\r\n let exts = extensions.map(i => i());\r\n let onInitCbs = exts.map(i => i.onInit).filter(i => i)\r\n let onPremergeCbs = exts.map(i => i.onPremerge).filter(i => i)\r\n let onPresetCbs = exts.map(i => i.onPreset).filter(i => i)\r\n let onSetCbs = exts.map(i => i.onSet).filter(i => i)\r\n let onDestroyCbs = exts.map(i => i.onDestroy).filter(i => i)\r\n let result: Writeable> = {\r\n onCreate: (instanceFactory, combinedMethods) => {\r\n for (let ext of exts) {\r\n if (ext.onCreate) {\r\n let extMethods = ext.onCreate(instanceFactory, combinedMethods)\r\n Object.assign(combinedMethods, extMethods)\r\n }\r\n }\r\n return combinedMethods\r\n }\r\n }\r\n if (onInitCbs.length > 0) {\r\n result.onInit = (s, e) => {\r\n for (let cb of onInitCbs) {\r\n cb!(s, e);\r\n }\r\n }\r\n }\r\n if (onPremergeCbs.length > 0) {\r\n result.onPremerge = (s, d, r) => {\r\n for (let cb of onPremergeCbs) {\r\n cb!(s, d, r);\r\n }\r\n }\r\n }\r\n if (onPresetCbs.length > 0) {\r\n result.onPreset = (s, d, r) => {\r\n for (let cb of onPresetCbs) {\r\n cb!(s, d, r);\r\n }\r\n }\r\n }\r\n if (onSetCbs.length > 0) {\r\n result.onSet = (s, d, r) => {\r\n for (let cb of onSetCbs) {\r\n cb!(s, d, r);\r\n }\r\n }\r\n }\r\n if (onDestroyCbs.length > 0) {\r\n result.onDestroy = (s) => {\r\n for (let cb of onDestroyCbs) {\r\n cb!(s);\r\n }\r\n }\r\n }\r\n return result as Extension\r\n }\r\n return () => extended((\r\n [e1, e2, e3, e4, e5] as ExtensionFactory[]\r\n ).filter(i => i!))\r\n}\r\n\r\n/**\r\n * @warning Initializing a local state to a promise without using \r\n * an initializer callback function, which returns a Promise,\r\n * is almost always a mistake. So, it is blocked.\r\n * Use `useHookstate(() => your_promise)` instead of `useHookstate(your_promise)`.\r\n */\r\nexport function useHookstate(\r\n source: Promise,\r\n extension?: ExtensionFactory\r\n): never;\r\nexport function useHookstate(\r\n source: __State,\r\n extension: ExtensionFactory\r\n): never;\r\n/**\r\n * Enables a functional React component to use a state,\r\n * either created by [hookstate](#hookstate) (*global* state) or\r\n * derived from another call to [useHookstate](#useHookstate) (*scoped* state).\r\n *\r\n * The `useHookstate` forces a component to rerender every time, when:\r\n * - a segment/part of the state data is updated *AND only if*\r\n * - this segment was **used** by the component during or after the latest rendering.\r\n *\r\n * For example, if the state value is `{ a: 1, b: 2 }` and\r\n * a component uses only `a` property of the state, it will rerender\r\n * only when the whole state object is updated or when `a` property is updated.\r\n * Setting the state value/property to the same value is also considered as an update.\r\n *\r\n * A component can use one or many states,\r\n * i.e. you may call `useHookstate` multiple times for multiple states.\r\n *\r\n * The same state can be used by multiple different components.\r\n *\r\n * @param source a reference to the state to hook into\r\n *\r\n * The `useHookstate` is a hook and should follow React's rules of hooks.\r\n *\r\n * @returns an instance of [State](#state),\r\n * which **must be** used within the component (during rendering\r\n * or in effects) or it's children.\r\n */\r\nexport function useHookstate(\r\n source: __State\r\n): State;\r\n/**\r\n * This function enables a functional React component to use a state,\r\n * created per component by [useHookstate](#useHookstate) (*local* state).\r\n * In this case `useHookstate` behaves similarly to `React.useState`,\r\n * but the returned instance of [State](#state)\r\n * has got more features.\r\n *\r\n * When a state is used by only one component, and maybe it's children,\r\n * it is recommended to use *local* state instead of *global*,\r\n * which is created by [hookstate](#hookstate).\r\n *\r\n * *Local* (per component) state is created when a component is mounted\r\n * and automatically destroyed when a component is unmounted.\r\n *\r\n * The same as with the usage of a *global* state,\r\n * `useHookstate` forces a component to rerender when:\r\n * - a segment/part of the state data is updated *AND only if*\r\n * - this segment was **used** by the component during or after the latest rendering.\r\n *\r\n * You can use as many local states within the same component as you need.\r\n *\r\n * @param source An initial value state.\r\n *\r\n * @returns an instance of [State](#state),\r\n * which **must be** used within the component (during rendering\r\n * or in effects) or it's children.\r\n */\r\nexport function useHookstate(\r\n source: SetInitialStateAction,\r\n extension?: ExtensionFactory\r\n): State;\r\nexport function useHookstate(\r\n source: SetInitialStateAction | State,\r\n extension?: ExtensionFactory\r\n): State {\r\n const parentMethods = Object(source) === source ?\r\n source[self] as StateMethodsImpl | undefined :\r\n undefined;\r\n if (parentMethods) {\r\n if (parentMethods.isMounted) {\r\n // Scoped state mount\r\n // eslint-disable-next-line react-hooks/rules-of-hooks\r\n const initializer = () => {\r\n // warning: this is called twice in react strict mode\r\n let store = parentMethods.store\r\n let onSetUsedCallback = () => setValue({\r\n store: store, // immutable\r\n state: state, // immutable\r\n source: value.source // mutable, get the latest from value\r\n })\r\n let state = new StateMethodsImpl(\r\n store,\r\n parentMethods.path,\r\n store.get(parentMethods.path),\r\n store.edition,\r\n onSetUsedCallback\r\n );\r\n return {\r\n store: store,\r\n state: state,\r\n source: source\r\n }\r\n };\r\n const [value, setValue] = React.useState(initializer);\r\n\r\n if (value.store !== parentMethods.store || !('source' in value)) {\r\n throw new StateInvalidUsageError(parentMethods.path, ErrorId.InitStateStoreSwitchover)\r\n }\r\n\r\n // TODO move to a class hide props on prototype level\r\n // hide props from development tools\r\n Object.defineProperty(value, 'store', { enumerable: false });\r\n Object.defineProperty(value, 'state', { enumerable: false });\r\n Object.defineProperty(value, 'source', { enumerable: false });\r\n\r\n value.state.reconstruct(\r\n parentMethods.path,\r\n value.store.get(parentMethods.path),\r\n value.store.edition,\r\n // parent state object has changed its reference object\r\n // so the scopped state should change too\r\n value.source !== source\r\n );\r\n value.source = source;\r\n\r\n // need to subscribe in sync mode, because\r\n // safari delays calling the effect giving priority to timeouts and network events,\r\n // which can cause the state update\r\n parentMethods.subscribe(value.state); // no-op if already subscribed\r\n useIsomorphicLayoutEffect(() => {\r\n // warning: in strict mode, effect is called twice\r\n // so need to restore subscription and reconstruct the extension\r\n // after the first effect unmount callback\r\n value.state.onMount() // no-op if already mounted\r\n parentMethods.subscribe(value.state); // no-op if already subscribed\r\n return () => {\r\n value.state.onUnmount()\r\n parentMethods.unsubscribe(value.state);\r\n }\r\n }, []);\r\n\r\n let state = value.state.self();\r\n // expose property in development tools\r\n value['[hookstate(scoped)]'] = state; // TODO use label here, add core extension to label states\r\n return state\r\n } else {\r\n // Global state mount or destroyed link\r\n // eslint-disable-next-line react-hooks/rules-of-hooks\r\n let initializer = () => {\r\n // warning: this is called twice in react strict mode\r\n let store = parentMethods.store\r\n let onSetUsedCallback = () => setValue({\r\n store: store, // immutable\r\n state: state, // immutable\r\n source: value.source // mutable, get the latest from value\r\n })\r\n let state = new StateMethodsImpl(\r\n store,\r\n RootPath,\r\n store.get(RootPath),\r\n store.edition,\r\n onSetUsedCallback\r\n );\r\n return {\r\n store: store,\r\n state: state,\r\n source: source\r\n }\r\n }\r\n const [value, setValue] = React.useState(initializer);\r\n\r\n if (value.store !== parentMethods.store || !('source' in value)) {\r\n throw new StateInvalidUsageError(parentMethods.path, ErrorId.InitStateStoreSwitchover)\r\n }\r\n\r\n // hide props from development tools\r\n Object.defineProperty(value, 'store', { enumerable: false });\r\n Object.defineProperty(value, 'state', { enumerable: false });\r\n Object.defineProperty(value, 'source', { enumerable: false });\r\n\r\n value.state.reconstruct(\r\n RootPath,\r\n value.store.get(RootPath),\r\n value.store.edition,\r\n // parent state object has changed its reference object\r\n // so the scopped state should change too\r\n value.source !== source\r\n );\r\n value.source = source;\r\n\r\n // need to subscribe in sync mode, because\r\n // safari delays calling the effect giving priority to timeouts and network events,\r\n // which can cause the state update\r\n value.store.subscribe(value.state); // no-op if already subscribed\r\n useIsomorphicLayoutEffect(() => {\r\n // warning: in strict mode, effect is called twice\r\n // so need to restore subscription and reconstruct the extension\r\n // after the first effect unmount callback\r\n value.state.onMount() // no-op if already mounted\r\n value.store.subscribe(value.state); // no-op if already subscribed\r\n return () => {\r\n value.state.onUnmount()\r\n value.store.unsubscribe(value.state);\r\n }\r\n }, []);\r\n\r\n let state: State = value.state.self();\r\n for (let ind = 0; ind < parentMethods.path.length; ind += 1) {\r\n state = state.nested(parentMethods.path[ind]);\r\n }\r\n // expose property in development tools\r\n value['[hookstate(global)]'] = state; // TODO use label here, add core extension to label states\r\n return state as State;\r\n }\r\n } else {\r\n // Local state mount\r\n // eslint-disable-next-line react-hooks/rules-of-hooks\r\n let initializer = () => {\r\n // warning: this is called twice in react strict mode\r\n let store = createStore(source)\r\n let onSetUsedCallback = () => setValue({\r\n store: store,\r\n state: state,\r\n })\r\n let state = new StateMethodsImpl(\r\n store,\r\n RootPath,\r\n store.get(RootPath),\r\n store.edition,\r\n onSetUsedCallback\r\n );\r\n return {\r\n store: store,\r\n state: state\r\n }\r\n }\r\n const [value, setValue] = React.useState(initializer);\r\n\r\n if ('source' in value) {\r\n throw new StateInvalidUsageError(RootPath, ErrorId.InitStateStoreSwitchover)\r\n }\r\n\r\n // hide props from development tools\r\n Object.defineProperty(value, 'store', { enumerable: false });\r\n Object.defineProperty(value, 'state', { enumerable: false });\r\n\r\n value.state.reconstruct(\r\n RootPath,\r\n value.store.get(RootPath),\r\n value.store.edition,\r\n false\r\n );\r\n\r\n // need to subscribe in sync mode, because\r\n // safari delays calling the effect giving priority to timeouts and network events,\r\n // which can cause the state update\r\n value.store.subscribe(value.state); // no-op if already subscribed\r\n // need to attach the extension straight away\r\n // because extension methods are used in render function\r\n // and we can not defer it to the effect callback\r\n value.store.activate(extension as ExtensionFactory); // no-op if already attached\r\n useIsomorphicLayoutEffect(() => {\r\n // warning: in strict mode, effect is called twice\r\n // so need to restore subscription and reconstruct the extension\r\n // after the first effect unmount callback\r\n value.state.onMount() // no-op if already mounted\r\n value.store.subscribe(value.state); // no-op if already subscribed\r\n value.store.activate(extension as ExtensionFactory); // no-op if already attached\r\n return () => {\r\n value.state.onUnmount()\r\n value.store.unsubscribe(value.state);\r\n value.store.deactivate() // this will destroy the extensions\r\n }\r\n }, []);\r\n\r\n let state = value.state.self();\r\n // expose property in development tools\r\n value['[hookstate(local)]'] = state; // TODO use label here, add core extension to label states\r\n return state\r\n }\r\n}\r\n\r\nexport function StateFragment(\r\n props: {\r\n state: __State,\r\n extension: ExtensionFactory,\r\n children: (state: State) => React.ReactElement,\r\n suspend?: boolean,\r\n }\r\n): never;\r\n/**\r\n * Allows to use a state without defining a functional react component.\r\n * It can be also used in class-based React components. It is also\r\n * particularly useful for creating *scoped* states.\r\n *\r\n * [Learn more...](https://hookstate.js.org/docs/using-without-statehook)\r\n * \r\n * @typeparam S Type of a value of a state\r\n */\r\nexport function StateFragment(\r\n props: {\r\n state: __State,\r\n children: (state: State) => React.ReactElement,\r\n suspend?: boolean,\r\n }\r\n): React.ReactElement;\r\n/**\r\n * Allows to use a state without defining a functional react component.\r\n * See more at [StateFragment](#statefragment)\r\n * \r\n * [Learn more...](https://hookstate.js.org/docs/using-without-statehook)\r\n * \r\n * @typeparam S Type of a value of a state\r\n */\r\nexport function StateFragment(\r\n props: {\r\n state: SetInitialStateAction,\r\n extension?: ExtensionFactory,\r\n children: (state: State) => React.ReactElement,\r\n suspend?: boolean,\r\n }\r\n): React.ReactElement;\r\nexport function StateFragment(\r\n props: {\r\n state: State | SetInitialStateAction,\r\n extension?: ExtensionFactory,\r\n children: (state: State) => React.ReactElement,\r\n suspend?: boolean,\r\n }\r\n): React.ReactElement {\r\n const scoped = useHookstate(props.state as SetInitialStateAction, props.extension);\r\n return props.suspend && suspend(scoped) || props.children(scoped);\r\n}\r\n\r\n/**\r\n * If state is promised, then it returns a component which integrates with React 18 Suspend feature automatically.\r\n * Note, that React 18 Suspend support for data loading is still experimental,\r\n * but it worked as per our experiments and testing.\r\n */\r\nexport function suspend(state: State) {\r\n const p = state.promise;\r\n return p && React.createElement(React.lazy(() => p as Promise));\r\n}\r\n\r\n///\r\n/// INTERNAL SYMBOLS (LIBRARY IMPLEMENTATION)\r\n///\r\n\r\nconst self = Symbol('self')\r\n\r\nenum ErrorId {\r\n StateUsedInDependencyList = 100,\r\n\r\n InitStateToValueFromState = 101,\r\n SetStateToValueFromState = 102,\r\n GetStateWhenPromised = 103,\r\n SetStateWhenPromised = 104,\r\n SetStateNestedToPromised = 105,\r\n SetStateWhenDestroyed = 106,\r\n ToJson_Value = 108,\r\n ToJson_State = 109,\r\n\r\n GetProperty_Function = 110,\r\n InitStateStoreSwitchover = 111,\r\n\r\n GetUnknownPlugin = 120,\r\n\r\n SetProperty_State = 201,\r\n SetProperty_Value = 202,\r\n SetPrototypeOf_State = 203,\r\n SetPrototypeOf_Value = 204,\r\n PreventExtensions_State = 205,\r\n PreventExtensions_Value = 206,\r\n DefineProperty_State = 207,\r\n DefineProperty_Value = 208,\r\n DeleteProperty_State = 209,\r\n DeleteProperty_Value = 210,\r\n Construct_State = 211,\r\n Construct_Value = 212,\r\n Apply_State = 213,\r\n Apply_Value = 214,\r\n}\r\n\r\nclass StateInvalidUsageError extends Error {\r\n constructor(path: Path, id: ErrorId, details?: string) {\r\n super(`Error: HOOKSTATE-${id} [path: /${path.join('/')}${details ? `, details: ${details}` : ''}]. ` +\r\n `See https://hookstate.js.org/docs/exceptions#hookstate-${id}`)\r\n }\r\n}\r\n\r\ninterface Subscriber {\r\n onSet(paths: SetActionDescriptor, actions: Set<() => void>): boolean;\r\n}\r\n\r\ninterface Subscribable {\r\n subscribe(l: Subscriber): void;\r\n unsubscribe(l: Subscriber): void;\r\n}\r\n\r\nconst SelfMethodsID = Symbol('ProxyMarker');\r\n\r\nconst RootPath: Path = [];\r\n\r\ntype Writeable = { -readonly [P in keyof T]: T[P] };\r\n\r\nclass Store implements Subscribable {\r\n // > 0 means active store, < 0 means destroyed\r\n // please note, in react strict mode and hot reload cases\r\n // state can be reused, so we should support store resurection\r\n public edition = 1;\r\n\r\n private _stateMethods: StateMethodsImpl;\r\n\r\n private _subscribers: Set = new Set();\r\n\r\n private _extension?: Extension;\r\n private _extensionMethods?: {};\r\n\r\n private _promise?: Promise;\r\n private _promiseResolver?: (_: StateValueAtRoot) => void;\r\n private _promiseError?: StateValueAtRoot;\r\n\r\n constructor(private _value: StateValueAtRoot) {\r\n if (Object(_value) === _value &&\r\n configuration.promiseDetector(_value)) {\r\n this.setPromised(_value)\r\n } else if (_value === none) {\r\n this.setPromised(undefined)\r\n }\r\n\r\n let onSetUsedStoreStateMethods = () => {\r\n this._stateMethods.reconstruct(\r\n RootPath,\r\n this.get(RootPath),\r\n this.edition,\r\n false\r\n )\r\n }\r\n onSetUsedStoreStateMethods[IsUnmounted] = true\r\n\r\n this._stateMethods = new StateMethodsImpl(\r\n this,\r\n RootPath,\r\n this.get(RootPath),\r\n this.edition,\r\n onSetUsedStoreStateMethods\r\n )\r\n this.subscribe(this._stateMethods)\r\n }\r\n\r\n setPromised(promise: StateValueAtPath | undefined) {\r\n this._value = none\r\n this._promiseError = undefined\r\n this._promiseResolver = undefined\r\n\r\n if (!promise) {\r\n this._promise = new Promise(resolve => {\r\n this._promiseResolver = resolve;\r\n })\r\n return;\r\n }\r\n\r\n promise = promise\r\n .then((r: StateValueAtRoot) => {\r\n if (this._promise === promise) {\r\n this._promise = undefined\r\n this._promiseError = undefined\r\n this._promiseResolver === undefined\r\n this.update(this._stateMethods.self(), this.set(RootPath, r))\r\n }\r\n })\r\n .catch((err: StateValueAtRoot) => {\r\n if (this._promise === promise) {\r\n this._promise = undefined\r\n this._promiseResolver = undefined\r\n this._promiseError = err\r\n this.edition += 1\r\n let ad = { path: RootPath };\r\n this.update(this._stateMethods.self(), ad)\r\n }\r\n })\r\n this._promise = promise\r\n }\r\n\r\n activate(extensionFactory: ExtensionFactory | undefined) {\r\n if (this.edition < 0) {\r\n this.edition = -this.edition\r\n }\r\n if (this._extension === undefined) {\r\n this._extension = extensionFactory?.();\r\n this._extensionMethods = this._extension?.onCreate?.(this._stateMethods.self(), {})\r\n // this is invoked with all extension methods activated on the state\r\n this._extension?.onInit?.(this._stateMethods.self(), this._extensionMethods || {})\r\n }\r\n }\r\n\r\n deactivate() {\r\n if (this._extension) {\r\n this._extension.onDestroy?.(this._stateMethods.self())\r\n delete this._extension;\r\n delete this._extensionMethods;\r\n }\r\n if (this.edition > 0) {\r\n this.edition = -this.edition\r\n }\r\n }\r\n\r\n get extension() {\r\n return this._extensionMethods\r\n }\r\n\r\n get promise() {\r\n return this._promise;\r\n }\r\n\r\n get promiseError() {\r\n return this._promiseError;\r\n }\r\n\r\n get(path: Path) {\r\n let result = this._value;\r\n if (result === none) {\r\n return result;\r\n }\r\n path.forEach(p => {\r\n result = result[p];\r\n });\r\n return result;\r\n }\r\n\r\n set(path: Path, value: StateValueAtPath): SetActionDescriptor {\r\n if (this.edition < 0) {\r\n // TODO convert to console log\r\n throw new StateInvalidUsageError(path, ErrorId.SetStateWhenDestroyed)\r\n }\r\n\r\n if (path.length === 0) {\r\n // Root value UPDATE case,\r\n\r\n if (value === none) {\r\n this.setPromised(undefined)\r\n } else if (Object(value) === value && configuration.promiseDetector(value)) {\r\n this.setPromised(value)\r\n value = none\r\n } else if (this._promise && !this._promiseResolver) {\r\n throw new StateInvalidUsageError(path, ErrorId.SetStateWhenPromised)\r\n } else {\r\n this._promiseError = undefined\r\n }\r\n\r\n let prevValue = this._value;\r\n this._value = value;\r\n this.afterSet()\r\n\r\n if (prevValue === none && this._value !== none && this._promiseResolver) {\r\n this._promise = undefined\r\n this._promiseError = undefined\r\n let resolver = this._promiseResolver\r\n this._promiseResolver === undefined\r\n resolver(this._value)\r\n }\r\n\r\n return {\r\n path\r\n };\r\n }\r\n\r\n if (Object(value) === value && configuration.promiseDetector(value)) {\r\n // TODO this one still can get into the state as nested property, need to check on read instead\r\n throw new StateInvalidUsageError(path, ErrorId.SetStateNestedToPromised)\r\n }\r\n\r\n let target = this._value;\r\n for (let i = 0; i < path.length - 1; i += 1) {\r\n target = target[path[i]];\r\n }\r\n\r\n const p = path[path.length - 1]\r\n if (p in target) {\r\n if (value !== none) {\r\n // Property UPDATE case\r\n target[p] = value;\r\n this.afterSet()\r\n return {\r\n path\r\n };\r\n } else {\r\n // Property DELETE case\r\n if (Array.isArray(target) && typeof p === 'number') {\r\n target.splice(p, 1)\r\n } else {\r\n delete target[p]\r\n }\r\n this.afterSet()\r\n\r\n // if an array of objects is about to loose existing property\r\n // we consider it is the whole object is changed\r\n // which is identified by upper path\r\n return {\r\n path: path.slice(0, -1),\r\n actions: { [p]: \"D\" as \"D\" }\r\n }\r\n }\r\n }\r\n\r\n if (value !== none) {\r\n // Property INSERT case\r\n target[p] = value;\r\n this.afterSet()\r\n\r\n // if an array of objects is about to be extended by new property\r\n // we consider it is the whole object is changed\r\n // which is identified by upper path\r\n return {\r\n path: path.slice(0, -1),\r\n actions: { [p]: \"I\" as \"I\" }\r\n }\r\n }\r\n\r\n // Non-existing property DELETE case\r\n // no-op\r\n return {\r\n path\r\n };\r\n }\r\n\r\n preset(state: State, value: StateValueAtPath) {\r\n this._extension?.onPreset?.(state, value, this._stateMethods.self())\r\n }\r\n\r\n premerge(state: State, value: StateValueAtPath) {\r\n this._extension?.onPremerge?.(state, value, this._stateMethods.self())\r\n }\r\n\r\n update(state: State, ad: SetActionDescriptor) {\r\n this._extension?.onSet?.(state, ad, this._stateMethods.self())\r\n\r\n const actions = new Set<() => void>();\r\n // check if actions descriptor can be unfolded into a number of individual update actions\r\n // this is the case when merge call swaps to properties for example\r\n // so we optimize rerendering only these properties\r\n if (ad.actions && Object.values(ad.actions).findIndex(i => i !== \"U\") === -1) {\r\n // all actions are update actions\r\n Object.keys(ad.actions).forEach(key => {\r\n this._subscribers.forEach(s => s.onSet({ path: ad.path.concat(key) }, actions));\r\n })\r\n } else {\r\n this._subscribers.forEach(s => s.onSet(ad, actions));\r\n }\r\n actions.forEach(a => a());\r\n }\r\n\r\n afterSet() {\r\n if (this.edition > 0) {\r\n this.edition += 1;\r\n }\r\n if (this.edition < 0) {\r\n this.edition -= 1;\r\n }\r\n }\r\n toMethods() {\r\n return this._stateMethods;\r\n }\r\n\r\n subscribe(l: Subscriber) {\r\n this._subscribers.add(l);\r\n }\r\n\r\n unsubscribe(l: Subscriber) {\r\n this._subscribers.delete(l);\r\n }\r\n\r\n toJSON() {\r\n throw new StateInvalidUsageError(RootPath, ErrorId.ToJson_Value);\r\n }\r\n}\r\n\r\n// use symbol property to allow for easier reference finding\r\nconst UnusedValue = Symbol('UnusedValue');\r\n\r\n// use symbol to mark that a function has no effect anymore\r\nconst IsUnmounted = Symbol('IsUnmounted');\r\n\r\nclass StateMethodsImpl implements StateMethods, Subscribable, Subscriber {\r\n private subscribers: Set | undefined;\r\n\r\n private childrenCreated: Record> | undefined;\r\n private childrenUsedPrevious: Record> | undefined;\r\n private childrenUsed: Record> | undefined;\r\n\r\n private valueUsedNoProxy: boolean | undefined;\r\n private valueUsedNoProxyPrevious: boolean | undefined;\r\n private valueUsed: StateValueAtPath = UnusedValue;\r\n\r\n private selfUsed: State | undefined;\r\n\r\n get [__state](): [Immutable, E] {\r\n return [this.get(), this.self() as E]\r\n };\r\n\r\n constructor(\r\n public readonly store: Store,\r\n public path: Path,\r\n private valueSource: S,\r\n private valueEdition: number,\r\n private onSetUsed: () => void\r\n ) { }\r\n\r\n reconstruct(path: Path, valueSource: S, valueEdition: number, reset: boolean) {\r\n this.path = path;\r\n this.valueSource = valueSource;\r\n this.valueEdition = valueEdition;\r\n this.valueUsed = UnusedValue;\r\n\r\n if (reset) {\r\n delete this.selfUsed;\r\n delete this.childrenCreated\r\n delete this.childrenUsedPrevious\r\n } else {\r\n this.valueUsedNoProxyPrevious = this.valueUsedNoProxy;\r\n this.childrenUsedPrevious = this.childrenUsed;\r\n }\r\n delete this.valueUsedNoProxy;\r\n delete this.childrenUsed\r\n\r\n // We should not delete subscribers as these are self cleaned up when unmounted\r\n // Theoretically it is possible to reconnect subscribers like we done it for \r\n // children, but it is easier and more efficient to leave subscribers to have independent lifecycle\r\n // If we delete subscribers here, scoped states wrapped in React.memo\r\n // will lose state change propagation and rerendering for scopped states\r\n // delete this.subscribers;\r\n }\r\n\r\n reconnect() {\r\n // Mark it's as used, because it is used in a dependency list\r\n // (we are making it's value used implicitly, so rerender is triggered).\r\n // Otherwise, no rerender => no effects running, even when a value is changed.\r\n // This is marking the state used a bit more than it might be really used\r\n // in the effect callback. More optimized / precise implementation would be\r\n // to remember useSelf as previous (similar to childrenUsed),\r\n // but it is a lot more complicated and the benefit is not worth the complexity.\r\n // So, mark it used.\r\n // We also using it without proxy if it wass used without proxy during the\r\n // previous render, because otherwise children usage might be not traced completely\r\n // and so will not result in renreder if children are updated.\r\n // This is covered by some tests, but there are so many possible corner cases...\r\n this.get({ __internalAllowPromised: true, noproxy: this.valueUsedNoProxyPrevious })\r\n this.childrenUsed = {\r\n ...this.childrenUsedPrevious,\r\n ...this.childrenUsed\r\n }\r\n }\r\n\r\n getUntracked(__internalAllowPromised?: boolean) {\r\n if (this.valueEdition !== this.store.edition) {\r\n this.valueSource = this.store.get(this.path)\r\n this.valueEdition = this.store.edition\r\n\r\n if (this.valueUsed !== UnusedValue) {\r\n this.valueUsed = UnusedValue\r\n this.get({ __internalAllowPromised: true }) // renew cache to keep it marked used\r\n }\r\n }\r\n if (__internalAllowPromised) {\r\n return this.valueSource\r\n }\r\n if (this.store.promiseError) {\r\n throw this.store.promiseError;\r\n }\r\n if (this.store.promise) {\r\n throw new StateInvalidUsageError(this.path, ErrorId.GetStateWhenPromised)\r\n }\r\n return this.valueSource;\r\n }\r\n\r\n get(options?: { noproxy?: boolean, stealth?: boolean, __internalAllowPromised?: boolean }): Immutable {\r\n const valueSource = this.getUntracked(options?.__internalAllowPromised)\r\n if (options?.stealth) {\r\n return valueSource as Immutable;\r\n }\r\n if (this.valueUsed === UnusedValue) {\r\n if (Array.isArray(valueSource)) {\r\n this.valueUsed = this.valueArrayImpl(valueSource as unknown as StateValueAtPath[]);\r\n } else if (Object(valueSource) === valueSource) {\r\n if ((valueSource as StateValueAtPath).constructor?.name === \"Object\") {\r\n this.valueUsed = this.valueObjectImpl(valueSource as unknown as object);\r\n } else {\r\n // any other object except Object, for example Date\r\n this.valueUsedNoProxy = true\r\n this.valueUsed = valueSource;\r\n }\r\n } else {\r\n this.valueUsed = valueSource;\r\n }\r\n }\r\n if (options?.noproxy) {\r\n this.valueUsedNoProxy = true\r\n return valueSource as Immutable;\r\n }\r\n return this.valueUsed as Immutable;\r\n }\r\n\r\n get value(): Immutable {\r\n // various tools, including react dev tools and webpack import\r\n // inspect an object and it's properties\r\n // so these should not throw\r\n // return this.get({ __internalAllowPromised: true })\r\n return this.get()\r\n }\r\n\r\n setUntrackedV4(newValue: SetStateAction): SetActionDescriptor | null {\r\n if (typeof newValue === 'function') {\r\n newValue = (newValue as ((prevValue: S) => S))(this.getUntracked());\r\n }\r\n this.store.preset(this.self() as unknown as State, newValue)\r\n\r\n if (Object(newValue) === newValue && newValue![SelfMethodsID]) {\r\n // TODO check on read instead as it might escape as nested on set anyway\r\n throw new StateInvalidUsageError(this.path, ErrorId.SetStateToValueFromState)\r\n }\r\n if (newValue !== Object(newValue) && newValue === this.getUntracked(true)) {\r\n // this is primitive value and has not changed\r\n // so skip this set call as it does not make an effect\r\n return null\r\n }\r\n return this.store.set(this.path, newValue);\r\n }\r\n\r\n set(newValue: SetStateAction) {\r\n let ad = this.setUntrackedV4(newValue);\r\n if (ad) {\r\n this.store.update(this.self() as State, ad);\r\n }\r\n }\r\n\r\n mergeUntracked(sourceValue: SetPartialStateAction): Path[] {\r\n let r = this.mergeUntrackedV4(sourceValue);\r\n if (r) {\r\n return [r.path]\r\n }\r\n return []\r\n }\r\n\r\n mergeUntrackedV4(sourceValue: SetPartialStateAction): SetActionDescriptor | null {\r\n const currentValue = this.getUntracked()\r\n if (typeof sourceValue === 'function') {\r\n sourceValue = (sourceValue as Function)(currentValue);\r\n }\r\n this.store.premerge(this.self() as unknown as State, sourceValue)\r\n\r\n if (Array.isArray(currentValue)) {\r\n if (Array.isArray(sourceValue)) {\r\n let ad: Required = { path: this.path, actions: {} };\r\n sourceValue.forEach((e, i) => {\r\n ad.actions[currentValue.push(e) - 1] = \"I\"\r\n })\r\n if (Object.keys(ad.actions).length > 0) {\r\n this.setUntrackedV4(currentValue)\r\n return ad\r\n }\r\n return null\r\n } else {\r\n let ad: Required = { path: this.path, actions: {} };\r\n const deletedIndexes: number[] = []\r\n Object.keys(sourceValue as StateValueAtPath)\r\n .map(i => Number(i))\r\n .sort((a, b) => a - b)\r\n .forEach(i => {\r\n const index = Number(i);\r\n const newPropValue = sourceValue[index]\r\n if (newPropValue === none) {\r\n ad.actions[index] = \"D\"\r\n deletedIndexes.push(index)\r\n } else {\r\n if (index in currentValue) {\r\n ad.actions[index] = \"U\"\r\n } else {\r\n ad.actions[index] = \"I\"\r\n }\r\n (currentValue as StateValueAtPath[])[index] = newPropValue\r\n }\r\n });\r\n // indexes are ascending sorted as per above\r\n // so, delete one by one from the end\r\n // this way index positions do not change\r\n deletedIndexes.reverse().forEach(p => {\r\n (currentValue as unknown as []).splice(p, 1)\r\n })\r\n if (Object.keys(ad.actions).length > 0) {\r\n this.setUntrackedV4(currentValue)\r\n return ad\r\n }\r\n return null\r\n }\r\n } else if (Object(currentValue) === currentValue) {\r\n let ad: Required = { path: this.path, actions: {} };\r\n Object.keys(sourceValue as StateValueAtPath).forEach(key => {\r\n const newPropValue = sourceValue[key]\r\n if (newPropValue === none) {\r\n ad.actions[key] = \"D\"\r\n delete currentValue[key]\r\n } else {\r\n if (key in currentValue) {\r\n ad.actions[key] = \"U\"\r\n } else {\r\n ad.actions[key] = \"I\"\r\n }\r\n currentValue[key] = newPropValue\r\n }\r\n })\r\n if (Object.keys(ad.actions).length > 0) {\r\n this.setUntrackedV4(currentValue)\r\n return ad\r\n }\r\n return null\r\n } else if (typeof currentValue === 'string') {\r\n return this.setUntrackedV4((currentValue + String(sourceValue)) as unknown as S)\r\n } else {\r\n return this.setUntrackedV4(sourceValue as S)\r\n }\r\n }\r\n\r\n merge(sourceValue: SetPartialStateAction) {\r\n let r = this.mergeUntrackedV4(sourceValue);\r\n if (r) {\r\n this.store.update(this.self() as State, r)\r\n }\r\n }\r\n\r\n nested(key: K): State {\r\n return this.child(key as string | number).self() as State\r\n }\r\n\r\n rerender(paths: Path[]) {\r\n for (let path of paths) {\r\n this.store.update(this.self() as State, { path })\r\n }\r\n }\r\n\r\n activate(extensionFactory: ExtensionFactory | undefined): void {\r\n this.store.activate(extensionFactory)\r\n }\r\n\r\n deactivate(): void {\r\n this.store.deactivate()\r\n }\r\n\r\n subscribe(l: Subscriber) {\r\n if (this.subscribers === undefined) {\r\n this.subscribers = new Set();\r\n }\r\n this.subscribers.add(l);\r\n }\r\n\r\n unsubscribe(l: Subscriber) {\r\n if (this.subscribers) {\r\n this.subscribers.delete(l);\r\n }\r\n }\r\n\r\n get isMounted(): boolean {\r\n return !this.onSetUsed[IsUnmounted]\r\n }\r\n\r\n onMount() {\r\n delete this.onSetUsed[IsUnmounted];\r\n }\r\n\r\n onUnmount() {\r\n this.onSetUsed[IsUnmounted] = true\r\n }\r\n\r\n onSet(ad: SetActionDescriptor, actions: Set<() => void>): boolean {\r\n const update = () => {\r\n let isAffected = false\r\n if (this.valueUsedNoProxy\r\n // TODO this condition becomes redundant when Downgraded plugins is deleted\r\n && this.valueUsed !== UnusedValue) {\r\n actions.add(this.onSetUsed);\r\n delete this.selfUsed;\r\n isAffected = true;\r\n }\r\n let path = ad.path;\r\n const nextChildKey = path[this.path.length];\r\n if (nextChildKey === undefined) {\r\n // There is no next child to dive into\r\n // So it is this one which was updated\r\n if (this.valueUsed !== UnusedValue) {\r\n actions.add(this.onSetUsed);\r\n delete this.selfUsed;\r\n delete this.childrenUsed;\r\n\r\n if (ad.actions && this.childrenCreated) {\r\n // TODO add automated unit tests for this part\r\n if (Array.isArray(this.valueSource)\r\n && Object.values(ad.actions).includes(\"D\")) {\r\n // this is an array and some elements were removed\r\n // so invalidate cache for all children after the first deleted\r\n let firstDeletedIndex = Object.keys(ad.actions)\r\n .map(i => Number(i))\r\n .sort((a, b) => a - b)\r\n .find(i => ad.actions?.[i] === \"D\")!\r\n for (let childKey in this.childrenCreated) {\r\n if (Number(childKey) >= firstDeletedIndex ||\r\n childKey in ad.actions) {\r\n delete this.childrenCreated[childKey]\r\n }\r\n }\r\n } else {\r\n for (let childKey in ad.actions) {\r\n delete this.childrenCreated[childKey]\r\n }\r\n }\r\n } else {\r\n delete this.childrenCreated;\r\n }\r\n return true;\r\n }\r\n } else {\r\n const nextChild = this.childrenUsed?.[nextChildKey];\r\n if (nextChild && nextChild.onSet(ad, actions)) {\r\n delete this.selfUsed;\r\n return true;\r\n }\r\n }\r\n return isAffected;\r\n }\r\n\r\n const updated = update();\r\n if (!updated && this.subscribers !== undefined) {\r\n this.subscribers.forEach(s => {\r\n if (s.onSet(ad, actions)) {\r\n delete this.selfUsed;\r\n }\r\n })\r\n }\r\n return updated;\r\n }\r\n\r\n get keys(): InferStateKeysType {\r\n const value = this.get()\r\n if (Array.isArray(value)) {\r\n return Object.keys(value).map(i => Number(i)).filter(i => Number.isInteger(i)) as\r\n unknown as InferStateKeysType;\r\n }\r\n if (Object(value) === value) {\r\n return Object.keys(value as StateValueAtPath) as unknown as InferStateKeysType;\r\n }\r\n return undefined as InferStateKeysType;\r\n }\r\n\r\n child(key: number | string) {\r\n this.childrenUsed = this.childrenUsed || {};\r\n const cachedChild = this.childrenUsed.hasOwnProperty(key) && this.childrenUsed[key];\r\n if (cachedChild) {\r\n return cachedChild;\r\n }\r\n\r\n const valueSource = this.valueSource[key]\r\n if (typeof valueSource === 'function') {\r\n // hitting a method of a custom type, should be no-op\r\n throw new StateInvalidUsageError(this.path, ErrorId.GetProperty_Function)\r\n }\r\n this.childrenCreated = this.childrenCreated || {};\r\n const child = this.childrenCreated[key];\r\n let r;\r\n if (child) {\r\n child.reconstruct(\r\n this.path.concat(key),\r\n valueSource,\r\n this.valueEdition,\r\n false\r\n )\r\n r = child;\r\n } else {\r\n r = new StateMethodsImpl(\r\n this.store,\r\n this.path.concat(key),\r\n valueSource,\r\n this.valueEdition,\r\n this.onSetUsed,\r\n )\r\n this.childrenCreated[key] = r;\r\n }\r\n if (this.valueUsedNoProxy) {\r\n // TODO this is redundant when Downgraded plugin is deleted\r\n r.valueUsedNoProxy = true;\r\n }\r\n this.childrenUsed[key] = r;\r\n return r;\r\n }\r\n\r\n private valueArrayImpl(currentValue: StateValueAtPath[]): S {\r\n return proxyWrap(this.path, currentValue,\r\n () => currentValue,\r\n (target: object, key: PropertyKey) => {\r\n if (key === 'length') {\r\n return (target as []).length;\r\n }\r\n if (key in Array.prototype) {\r\n return Array.prototype[key];\r\n }\r\n if (key === SelfMethodsID) {\r\n return this;\r\n }\r\n if (typeof key === 'symbol') {\r\n // allow clients to associate hidden cache with state values\r\n return target[key];\r\n }\r\n const index = Number(key);\r\n if (!Number.isInteger(index)) {\r\n return undefined;\r\n }\r\n return this.child(index).get();\r\n },\r\n (target: object, key: PropertyKey, value: StateValueAtPath) => {\r\n if (typeof key === 'symbol') {\r\n // allow clients to associate hidden cache with state values\r\n target[key] = value;\r\n return true;\r\n }\r\n throw new StateInvalidUsageError(this.path, ErrorId.SetProperty_Value)\r\n },\r\n true\r\n ) as unknown as S;\r\n }\r\n\r\n private valueObjectImpl(currentValue: object): S {\r\n return proxyWrap(this.path, currentValue,\r\n () => currentValue,\r\n (target: object, key: PropertyKey) => {\r\n if (key in Object.prototype) {\r\n return Object.prototype[key];\r\n }\r\n if (key === SelfMethodsID) {\r\n return this;\r\n }\r\n if (typeof key === 'symbol') {\r\n // allow clients to associate hidden cache with state values\r\n return target[key];\r\n }\r\n return this.child(key).get();\r\n },\r\n (target: object, key: PropertyKey, value: StateValueAtPath) => {\r\n if (typeof key === 'symbol') {\r\n // allow clients to associate hidden cache with state values\r\n target[key] = value;\r\n return true;\r\n }\r\n throw new StateInvalidUsageError(this.path, ErrorId.SetProperty_Value)\r\n },\r\n true\r\n ) as unknown as S;\r\n }\r\n\r\n self(): State {\r\n if (this.selfUsed) {\r\n return this.selfUsed\r\n }\r\n\r\n const getter = (_: object, key: PropertyKey) => {\r\n if (key === self) {\r\n return this\r\n }\r\n if (typeof key === 'symbol') {\r\n return undefined\r\n }\r\n if (key === 'toJSON') {\r\n throw new StateInvalidUsageError(this.path, ErrorId.ToJson_State);\r\n }\r\n\r\n let nestedGetter = (prop: PropertyKey) => {\r\n const currentValue = this.get({ __internalAllowPromised: prop === '$$typeof' || prop === 'constructor' });\r\n\r\n if (prop in Object.prototype) {\r\n // Mark it used entirely, so changes to the value\r\n // invalidate and rerender results for Object.prototype.toString(),\r\n // for example.\r\n // We check for Object prototype functions\r\n // even for primitive values, because primitive values still\r\n // can have object methods.\r\n return Object.prototype[prop];\r\n }\r\n\r\n if (// if currentValue is primitive type\r\n (Object(currentValue) !== currentValue) &&\r\n // if promised, it will be none\r\n currentValue !== none) {\r\n // This was an error case, but various tools like webpack bundler\r\n // and react dev tools attempt to get props out of non-null object,\r\n // so this was changed to return just undefined for any property request\r\n // as there is no way to fix 3rd party tools.\r\n // Logging a warning to console is also not an option\r\n // as it pollutes console for legitimate apps on app start app.\r\n // Ref: https://github.com/avkonst/hookstate/issues/125\r\n return undefined\r\n }\r\n\r\n if (Array.isArray(currentValue)) {\r\n if (prop === 'length') {\r\n return currentValue.length;\r\n }\r\n if (prop in Array.prototype) {\r\n return Array.prototype[prop];\r\n }\r\n const index = Number(prop);\r\n if (!Number.isInteger(index)) {\r\n return undefined;\r\n }\r\n return this.nested(index as keyof S)\r\n }\r\n return this.nested(prop.toString() as keyof S)\r\n }\r\n\r\n switch (key) {\r\n case 'path':\r\n return this.path\r\n case 'keys':\r\n return this.keys\r\n case 'value':\r\n return this.value\r\n case 'ornull':\r\n return this.ornull\r\n case 'promised':\r\n return this.promised\r\n case 'promise':\r\n return this.promise\r\n case 'error':\r\n return this.error\r\n case 'get':\r\n return (opts: { noproxy: boolean, stealth: boolean }) => this.get(opts)\r\n case 'set':\r\n return (p: SetStateAction) => this.set(p)\r\n case 'merge':\r\n return (p: SetPartialStateAction) => this.merge(p)\r\n case 'nested':\r\n return (p: keyof S) => nestedGetter(p)\r\n default:\r\n // check if extension method\r\n let ext = this.store.extension\r\n if (ext && key in ext) {\r\n return ext[key](this.self())\r\n }\r\n // otherwise nested child\r\n return nestedGetter(key)\r\n }\r\n }\r\n\r\n this.selfUsed = proxyWrap(this.path, this.valueSource,\r\n (opts) => {\r\n return this.get({ __internalAllowPromised: true, stealth: opts?.stealth });\r\n },\r\n getter,\r\n (_, key, value) => {\r\n throw new StateInvalidUsageError(this.path, ErrorId.SetProperty_State)\r\n },\r\n false) as unknown as State;\r\n return this.selfUsed\r\n }\r\n\r\n get promised(): boolean {\r\n this.get({ __internalAllowPromised: true }) // marks used\r\n return !!this.store.promise;\r\n }\r\n\r\n get promise(): Promise> | undefined {\r\n this.get({ __internalAllowPromised: true }) // marks used\r\n return this.store.promise?.then(_ => this.self());\r\n }\r\n\r\n get error(): StateErrorAtRoot | undefined {\r\n this.get({ __internalAllowPromised: !!this.store.promiseError }) // marks used\r\n return this.store.promiseError;\r\n }\r\n\r\n get ornull(): InferStateOrnullType {\r\n const value = this.get()\r\n if (value === null || value === undefined) {\r\n return value as unknown as InferStateOrnullType;\r\n }\r\n return this.self() as InferStateOrnullType;\r\n }\r\n}\r\n\r\nfunction proxyWrap(\r\n path: Path,\r\n // tslint:disable-next-line: no-any\r\n targetBootstrap: any,\r\n // tslint:disable-next-line: no-any\r\n targetGetter: (opts?: { stealth?: boolean }) => any,\r\n // tslint:disable-next-line: no-any\r\n propertyGetter: (unused: any, key: PropertyKey) => any,\r\n // tslint:disable-next-line: no-any\r\n propertySetter: (unused: any, p: PropertyKey, value: any, receiver: any) => boolean,\r\n isValueProxy: boolean\r\n) {\r\n const onInvalidUsage = (op: ErrorId) => {\r\n throw new StateInvalidUsageError(path, op)\r\n }\r\n if (Object(targetBootstrap) !== targetBootstrap) {\r\n targetBootstrap = {}\r\n }\r\n return new Proxy(targetBootstrap, {\r\n getPrototypeOf: (_target) => {\r\n // should satisfy the invariants:\r\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/getPrototypeOf#Invariants\r\n const targetReal = targetGetter()\r\n if (targetReal === undefined || targetReal === null) {\r\n return null;\r\n }\r\n if (targetReal === none) {\r\n return Object.getPrototypeOf(new Promise(() => { }));\r\n }\r\n return Object.getPrototypeOf(targetReal);\r\n },\r\n setPrototypeOf: (_target, v) => {\r\n return onInvalidUsage(isValueProxy ?\r\n ErrorId.SetPrototypeOf_State :\r\n ErrorId.SetPrototypeOf_Value)\r\n },\r\n isExtensible: (_target) => {\r\n // should satisfy the invariants:\r\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/isExtensible#Invariants\r\n return true; // required to satisfy the invariants of the getPrototypeOf\r\n // return Object.isExtensible(target);\r\n },\r\n preventExtensions: (_target) => {\r\n return onInvalidUsage(isValueProxy ?\r\n ErrorId.PreventExtensions_State :\r\n ErrorId.PreventExtensions_Value)\r\n },\r\n getOwnPropertyDescriptor: (_target, p) => {\r\n const targetReal = targetGetter()\r\n\r\n if (Object(targetReal) === targetReal) {\r\n const origin = Object.getOwnPropertyDescriptor(targetReal, p);\r\n if (Array.isArray(targetReal) && p in Array.prototype) {\r\n return origin;\r\n }\r\n return origin && {\r\n // should be configurable as may not exist on proxy target\r\n configurable: true, // JSON.stringify() does not work for an object without it\r\n enumerable: origin.enumerable,\r\n get: () => propertyGetter(targetReal, p),\r\n set: undefined\r\n };\r\n }\r\n\r\n if (isValueProxy || targetReal === none) {\r\n return undefined;\r\n }\r\n if (p === 'value') {\r\n return {\r\n // should be configurable as does not exist on proxy target\r\n configurable: true,\r\n enumerable: true,\r\n get: () => targetGetter({ stealth: true }),\r\n set: undefined\r\n };\r\n }\r\n if (p === 'path') {\r\n return {\r\n // should be configurable as does not exist on proxy target\r\n configurable: true,\r\n enumerable: true,\r\n get: () => path,\r\n set: undefined\r\n };\r\n }\r\n return undefined;\r\n },\r\n has: (_target, p) => {\r\n if (typeof p === 'symbol') {\r\n return false;\r\n }\r\n const targetReal = targetGetter()\r\n if (Object(targetReal) === targetReal) {\r\n return p in targetReal;\r\n }\r\n if (isValueProxy || targetReal === none) {\r\n return false;\r\n }\r\n return p === 'value' || p === 'path';\r\n },\r\n get: propertyGetter,\r\n set: propertySetter,\r\n deleteProperty: (_target, p) => {\r\n return onInvalidUsage(isValueProxy ?\r\n ErrorId.DeleteProperty_State :\r\n ErrorId.DeleteProperty_Value)\r\n },\r\n defineProperty: (_target, p, attributes) => {\r\n return onInvalidUsage(isValueProxy ?\r\n ErrorId.DefineProperty_State :\r\n ErrorId.DefineProperty_Value)\r\n },\r\n ownKeys: (_target) => {\r\n const targetReal = targetGetter()\r\n if (Array.isArray(targetReal)) {\r\n if (_target.length === undefined) {\r\n // an object turned into an array now\r\n // inject length property now as it is defined on the array\r\n // to enable getOwnPropertyDescriptor for length not throw\r\n Object.defineProperty(targetBootstrap, 'length', {\r\n value: 0, writable: true, enumerable: false, configurable: false\r\n })\r\n }\r\n }\r\n if (Object(targetReal) === targetReal) {\r\n return Object.getOwnPropertyNames(targetReal);\r\n }\r\n if (isValueProxy || targetReal === none) {\r\n return []\r\n }\r\n return ['value', 'path']\r\n },\r\n apply: (_target, thisArg, argArray?) => {\r\n return onInvalidUsage(isValueProxy ?\r\n ErrorId.Apply_State :\r\n ErrorId.Apply_Value)\r\n },\r\n construct: (_target, argArray, newTarget?) => {\r\n return onInvalidUsage(isValueProxy ?\r\n ErrorId.Construct_State :\r\n ErrorId.Construct_Value)\r\n }\r\n });\r\n}\r\n\r\nfunction createStore(initial: SetInitialStateAction): Store {\r\n let initialValue: S | Promise = initial as (S | Promise);\r\n if (typeof initial === 'function') {\r\n initialValue = (initial as (() => S | Promise))();\r\n }\r\n if (Object(initialValue) === initialValue && initialValue[SelfMethodsID]) {\r\n throw new StateInvalidUsageError(RootPath, ErrorId.InitStateToValueFromState)\r\n }\r\n return new Store(initialValue);\r\n}\r\n\r\n/**\r\n * A type of an argument of the configure function\r\n */\r\nexport interface Configuration {\r\n /**\r\n * By default Hookstate intercepts calls to useEffect, useMemo and\r\n * other functions where a dependency lists are used as arguments.\r\n * This allows these hook functions to have Hookstate State objects\r\n * in dependency lists and everything to work as 'expected'.\r\n * \r\n * It is possible to opt-out from this mode, configuring the option to never.\r\n * \r\n * Alternatively, it is possible to set it to intercept only during development,\r\n * which will raise HOOKSTATE-100 error whenever Hookstate State is used in a dependency list of standard React hook function.\r\n * This error can be fixed by replacing standard React hooks by Hookstate provided hooks,\r\n * for example useEffect by useHookstateEffect\r\n */\r\n interceptDependencyListsMode: 'always' | 'development' | 'never',\r\n /**\r\n * Defines is Hookstate is running in a development mode.\r\n * Development mode enables additional checking and HMR support.\r\n * By default, it detects if process.env.NODE_ENV is set to 'development'.\r\n * It might not work in all environments and so expected to be provided by an application explicitly.\r\n */\r\n isDevelopmentMode: boolean,\r\n /**\r\n * A callback which allows Hookstate to detect if a provided variable is a promise or not.\r\n * This allows to enable Hookstate working in Angular environment when Promises are wrapped by zone.js,\r\n * which breaks standard promise resolution / detection convention.\r\n */\r\n promiseDetector: (p: any) => boolean,\r\n}\r\nlet configuration: Configuration & { hiddenInterceptDependencyListsModeDebug: boolean } = {\r\n interceptDependencyListsMode: 'always',\r\n isDevelopmentMode: typeof process === 'object' &&\r\n typeof process.env === 'object' &&\r\n process.env.NODE_ENV === 'development',\r\n promiseDetector: (p) => Promise.resolve(p) === p,\r\n hiddenInterceptDependencyListsModeDebug: false\r\n}\r\n\r\n/**\r\n * Configures Hookstate behavior globally. This is for special cases only, when default\r\n * heuristics fail to work in a specific environment.\r\n * \r\n * @param config \r\n */\r\nexport function configure(config: Partial) {\r\n configuration = {\r\n interceptDependencyListsMode: config.interceptDependencyListsMode ?? configuration.interceptDependencyListsMode,\r\n isDevelopmentMode: config.isDevelopmentMode ?? configuration.isDevelopmentMode,\r\n promiseDetector: config.promiseDetector ?? configuration.promiseDetector,\r\n hiddenInterceptDependencyListsModeDebug: false\r\n }\r\n\r\n interceptReactHooks() // not really required, but for safety\r\n\r\n if (configuration.interceptDependencyListsMode === 'never') {\r\n configuration.hiddenInterceptDependencyListsModeDebug = false;\r\n React['useEffect'] = React['useEffect'] && useEffectOrigin;\r\n React['useLayoutEffect'] = React['useLayoutEffect'] && useLayoutEffectOrigin;\r\n React['useInsertionEffect'] = React['useInsertionEffect'] && useInsertionEffectOrigin;\r\n React['useImperativeHandle'] = React['useImperativeHandle'] && useImperativeHandleOrigin;\r\n React['useMemo'] = React['useMemo'] && useMemoOrigin;\r\n React['useCallback'] = React['useCallback'] && useCallbackOrigin;\r\n // the following does not make an effect as memo calls happen on module load\r\n // so it is always set to memoIntercept\r\n React['memo'] = React['memo'] && memoOrigin as any;\r\n } else {\r\n // do not intercept if a hook is not defined in React\r\n // otherwise, it will enable 3rd party libs thinking the react runs at version 18\r\n React['useEffect'] = React['useEffect'] && useEffectIntercept;\r\n React['useLayoutEffect'] = React['useLayoutEffect'] && useLayoutEffectIntercept;\r\n React['useInsertionEffect'] = React['useLayoutEffect'] && useInsertionEffectIntercept;\r\n React['useImperativeHandle'] = React['useImperativeHandle'] && useImperativeHandleIntercept;\r\n React['useMemo'] = React['useMemo'] && useMemoIntercept;\r\n React['useCallback'] = React['useCallback'] && useCallbackIntercept;\r\n // the following does not make an effect as memo calls happen on module load\r\n // so it is always set to memoIntercept\r\n React['memo'] = React['memo'] && memoIntercept as any;\r\n if (configuration.interceptDependencyListsMode === 'development'\r\n && configuration.isDevelopmentMode) {\r\n configuration.hiddenInterceptDependencyListsModeDebug = true;\r\n }\r\n }\r\n}\r\n\r\nfunction reconnectDependencies(deps?: React.DependencyList, fromIntercept?: boolean): React.DependencyList | undefined {\r\n for (const i of deps || []) {\r\n if (i === Object(i)) {\r\n let state = (i as any)[self] as StateMethodsImpl | undefined\r\n if (state) {\r\n if (fromIntercept && configuration.hiddenInterceptDependencyListsModeDebug) {\r\n throw new StateInvalidUsageError(state.path, ErrorId.StateUsedInDependencyList)\r\n }\r\n state.reconnect()\r\n }\r\n }\r\n }\r\n return deps;\r\n}\r\n\r\nlet useEffectOrigin: (effect: React.EffectCallback, deps?: React.DependencyList) => void;\r\nexport function useHookstateEffect(effect: React.EffectCallback, deps?: React.DependencyList) {\r\n reconnectDependencies(deps)\r\n return useEffectOrigin(effect, deps)\r\n}\r\nfunction useEffectIntercept(effect: React.EffectCallback, deps?: React.DependencyList) {\r\n reconnectDependencies(deps, true)\r\n return useEffectOrigin(effect, deps)\r\n}\r\n\r\nlet useLayoutEffectOrigin: (effect: React.EffectCallback, deps?: React.DependencyList) => void;\r\nexport function useHookstateLayoutEffect(effect: React.EffectCallback, deps?: React.DependencyList) {\r\n reconnectDependencies(deps)\r\n return useLayoutEffectOrigin(effect, deps)\r\n}\r\nfunction useLayoutEffectIntercept(effect: React.EffectCallback, deps?: React.DependencyList) {\r\n reconnectDependencies(deps, true)\r\n return useLayoutEffectOrigin(effect, deps)\r\n}\r\n\r\nlet useInsertionEffectOrigin: (effect: React.EffectCallback, deps?: React.DependencyList) => void;\r\nexport function useHookstateInsertionEffect(effect: React.EffectCallback, deps?: React.DependencyList) {\r\n reconnectDependencies(deps)\r\n return useInsertionEffectOrigin(effect, deps)\r\n}\r\nfunction useInsertionEffectIntercept(effect: React.EffectCallback, deps?: React.DependencyList) {\r\n reconnectDependencies(deps, true)\r\n return useInsertionEffectOrigin(effect, deps)\r\n}\r\n\r\nlet useImperativeHandleOrigin: (ref: React.Ref | undefined, init: () => R, deps?: React.DependencyList) => void;\r\nexport function useHookstateImperativeHandle(ref: React.Ref | undefined, init: () => R, deps?: React.DependencyList): void {\r\n reconnectDependencies(deps)\r\n return useImperativeHandleOrigin(ref, init, deps)\r\n}\r\nfunction useImperativeHandleIntercept(ref: React.Ref | undefined, init: () => R, deps?: React.DependencyList): void {\r\n reconnectDependencies(deps, true)\r\n return useImperativeHandleOrigin(ref, init, deps)\r\n}\r\n\r\nlet useMemoOrigin: (factory: () => T, deps: React.DependencyList | undefined) => T;\r\nexport function useHookstateMemo(factory: () => T, deps: React.DependencyList | undefined): T {\r\n reconnectDependencies(deps)\r\n return useMemoOrigin(factory, deps)\r\n}\r\nfunction useMemoIntercept(factory: () => T, deps: React.DependencyList | undefined): T {\r\n reconnectDependencies(deps, true)\r\n return useMemoOrigin(factory, deps)\r\n}\r\n\r\nlet useCallbackOrigin: (callback: T, deps: React.DependencyList) => T;\r\nexport function useHookstateCallback(callback: T, deps: React.DependencyList): T {\r\n reconnectDependencies(deps)\r\n return useCallbackOrigin(callback, deps)\r\n}\r\nfunction useCallbackIntercept(callback: T, deps: React.DependencyList): T {\r\n reconnectDependencies(deps, true)\r\n return useCallbackOrigin(callback, deps)\r\n}\r\n\r\nlet memoOrigin:

(\r\n Component: React.FunctionComponent

,\r\n propsAreEqual?: (prevProps: Readonly

, nextProps: Readonly

) => boolean\r\n) => React.NamedExoticComponent

;\r\nexport function hookstateMemo>(\r\n Component: T,\r\n propsAreEqual?: (prevProps: Readonly>, nextProps: Readonly>) => boolean\r\n): React.MemoExoticComponent;\r\nexport function hookstateMemo

(\r\n Component: React.FunctionComponent

,\r\n propsAreEqual?: (prevProps: Readonly

, nextProps: Readonly

) => boolean\r\n): React.NamedExoticComponent

{\r\n return memoOrigin(Component, (prevProps, nextProps) => {\r\n reconnectDependencies(Object.keys(nextProps).map(i => nextProps[i]))\r\n return (propsAreEqual || shallowEqual)(prevProps, nextProps)\r\n })\r\n}\r\nfunction memoIntercept>(\r\n Component: T,\r\n propsAreEqual?: (prevProps: Readonly>, nextProps: Readonly>) => boolean\r\n): React.MemoExoticComponent;\r\nfunction memoIntercept

(\r\n Component: React.FunctionComponent

,\r\n propsAreEqual?: (prevProps: Readonly

, nextProps: Readonly

) => boolean\r\n): React.NamedExoticComponent

{\r\n return memoOrigin(Component, (prevProps, nextProps) => {\r\n reconnectDependencies(Object.keys(nextProps).map(i => nextProps[i]), true)\r\n return (propsAreEqual || shallowEqual)(prevProps, nextProps)\r\n })\r\n}\r\n\r\nfunction interceptReactHooks() {\r\n if (!useEffectOrigin && React['useEffect']) {\r\n useEffectOrigin = React['useEffect'];\r\n React['useEffect'] = useEffectIntercept;\r\n }\r\n if (!useLayoutEffectOrigin && React['useLayoutEffect']) {\r\n useLayoutEffectOrigin = React['useLayoutEffect'];\r\n React['useLayoutEffect'] = useLayoutEffectIntercept;\r\n }\r\n if (!useInsertionEffectOrigin && React['useInsertionEffect']) {\r\n useInsertionEffectOrigin = React['useInsertionEffect'];\r\n React['useInsertionEffect'] = useInsertionEffectIntercept;\r\n }\r\n if (!useImperativeHandleOrigin && React['useImperativeHandle']) {\r\n useImperativeHandleOrigin = React['useImperativeHandle'];\r\n React['useImperativeHandle'] = useImperativeHandleIntercept;\r\n }\r\n if (!useMemoOrigin && React['useMemo']) {\r\n useMemoOrigin = React['useMemo'];\r\n React['useMemo'] = useMemoIntercept;\r\n }\r\n if (!useCallbackOrigin && React['useCallback']) {\r\n useCallbackOrigin = React['useCallback'];\r\n React['useCallback'] = useCallbackIntercept;\r\n }\r\n if (!memoOrigin && React['memo']) {\r\n memoOrigin = React['memo'];\r\n React['memo'] = memoIntercept;\r\n }\r\n}\r\ninterceptReactHooks() // TODO defer invoking it until state is created, so the configure had a chance to set it up first\r\n\r\n// Do not try to use useLayoutEffect if DOM not available (SSR)\r\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffectOrigin! : useEffectOrigin!;\r\n","import { hookstate, useHookstate } from '@hookstate/core';\nimport { Surface } from './enclosure';\n\n// The following types do not work due to this issue in the Hookstate library - https://github.com/avkonst/hookstate/issues/369\n// Once that issue is resolved, we can use the following types instead of the Hole type below.\n\n// interface BaseHole {\n// surface: number,\n// x: number,\n// y: number,\n// }\n\n// interface CircleHole extends BaseHole {\n// shape: 'circle',\n// diameter: number,\n// }\n\n// interface SquareHole extends BaseHole {\n// shape: 'square',\n// width: number,\n// }\n// interface RectangleHole extends BaseHole {\n// shape: 'rectangle',\n// length: number,\n// width: number,\n// }\n\n// type Hole = CircleHole | SquareHole | RectangleHole\n\nexport type Hole = {\n shape: 'circle' | 'square' | 'rectangle',\n diameter: number,\n width: number,\n length: number,\n surface: Surface,\n x: number,\n y: number,\n}\n\nexport type PCBMount = {\n x: number,\n y: number,\n height: number,\n outerDiameter: number,\n screwDiameter: number,\n}\n\nexport type Params = {\n length: number,\n width: number,\n height: number,\n floor: number,\n roof: number,\n wall: number,\n waterProof: boolean,\n sealThickness: number,\n insertThickness: number,\n insertHeight: number,\n insertClearance: number,\n showLid: boolean,\n showBase: boolean,\n cornerRadius: number,\n holes: Hole[],\n pcbMounts: PCBMount[],\n wallMounts: boolean,\n wallMountScrewDiameter: number,\n screws: boolean,\n screwDiameter: number,\n}\n\nconst defaults: Params = {\n length: 80,\n width: 100,\n height: 30,\n floor: 2,\n roof: 2,\n wall: 1,\n waterProof: true,\n sealThickness: 2,\n insertThickness: 2,\n insertHeight: 4,\n insertClearance: 0.04,\n showLid: true,\n showBase: true,\n cornerRadius: 3,\n holes: [\n {\n shape: 'circle',\n surface: 'front',\n diameter: 12.5,\n width: 10,\n length: 10,\n x: 0,\n y: 0,\n },\n {\n shape: 'square',\n surface: 'left',\n diameter: 10,\n width: 12,\n length: 10,\n x: 0,\n y: 0,\n },\n {\n shape: 'rectangle',\n surface: 'back',\n width: 40,\n length: 6,\n diameter: 10,\n x: 0,\n y: 0,\n },\n {\n shape: 'square',\n surface: 'right',\n width: 12.5,\n length: 10,\n diameter: 10,\n x: 0,\n y: 0,\n },\n {\n shape: 'square',\n surface: 'top',\n width: 30,\n length: 10,\n diameter: 10,\n x: 0,\n y: 0,\n },\n ],\n pcbMounts: [\n {\n x: 30,\n y: 24,\n height: 5,\n outerDiameter: 6,\n screwDiameter: 2,\n }, {\n x: -30,\n y: 24,\n height: 5,\n outerDiameter: 6,\n screwDiameter: 2,\n }, {\n x: -30,\n y: -24,\n height: 5,\n outerDiameter: 6,\n screwDiameter: 2,\n }, {\n x: 30,\n y: -24,\n height: 5,\n outerDiameter: 6,\n screwDiameter: 2,\n }\n ],\n wallMounts: true,\n wallMountScrewDiameter: 3.98,\n screws: true,\n screwDiameter: 2.98,\n}\n\nconst paramState = hookstate(defaults)\n\nexport const useParams = () => {\n return useHookstate(paramState)\n}","export type Surface = 'top' | 'bottom' | 'left' | 'right' | 'front' | 'back'\nexport const SURFACES: Surface[] = ['top', 'bottom', 'left', 'right', 'front', 'back']\n","import { rotate, translate } from '@jscad/modeling/src/operations/transforms';\nimport { degToRad } from '@jscad/modeling/src/utils';\nimport { cuboid, cylinder } from '@jscad/modeling/src/primitives';\nimport { union } from '@jscad/modeling/src/operations/booleans';\n\nimport { Params } from '../params';\nimport { Geom3 } from '@jscad/modeling/src/geometries/types';\nimport { Vec3 } from '@jscad/modeling/src/maths/types';\nimport { Surface, SURFACES } from '.';\n\nexport const holes = (\n params: Params, surfacesFilter: Surface[] = ['bottom', 'left', 'right', 'back', 'front']\n) => {\n const { length, width, height, wall,\n insertThickness, insertClearance, holes: holeParams } = params\n \n let result: Geom3[] = []\n SURFACES.forEach((surface) => {\n const surfaceHoles = holeParams.filter((spec) => {\n if (surfacesFilter.includes(surface) && spec.surface === surface) {\n return spec\n } else {\n return false\n }\n })\n\n surfaceHoles.forEach((hole, i) => {\n let x: number\n let y: number\n let z: number\n let rot: Vec3\n\n const totalWallThickness = insertThickness + (insertClearance*2) + (wall*2)\n\n if (surface === 'front') {\n y = length - (totalWallThickness/2)\n x = (width/2) - hole.y\n z = (height/2) + hole.x\n rot = [degToRad(90),0,0]\n } else if (surface === 'right') {\n x = totalWallThickness / 2\n y = (length/2) - hole.y\n z = (height/2) + hole.x\n rot = [0,degToRad(90),0]\n } else if (surface === 'back') {\n y = totalWallThickness / 2\n x = (width/2) - hole.y\n z = (height/2) + hole.x\n rot = [degToRad(90),0,0]\n } else if (surface === 'left') {\n x = width - (totalWallThickness/2)\n y = (length/2) - hole.y\n z = (height/2) + hole.x\n rot = [0,degToRad(90),0]\n } else if (surface === 'bottom' || surface === 'top') {\n y = (length/2) - hole.x\n x = (width/2) - hole.y\n z = 0\n rot = [0,0,0]\n } else {\n throw new Error(`Invalid surface: ${surface}`)\n }\n\n if (hole.shape === 'square') {\n result.push(translate([x, y, z], rotate(rot, cuboid({\n size: [hole.width, hole.width, totalWallThickness],\n }))))\n } else if (hole.shape === 'rectangle') {\n result.push(translate([x, y, z], rotate(rot, cuboid({\n size: [hole.width, hole.length, totalWallThickness],\n }))))\n } else if (hole.shape === 'circle') {\n result.push(translate([x, y, z], rotate(rot, cylinder({\n radius: hole.diameter / 2,\n height: totalWallThickness\n }))))\n }\n })\n })\n\n return union(result)\n}","import { translate } from \"@jscad/modeling/src/operations/transforms\"\nimport { subtract, union } from \"@jscad/modeling/src/operations/booleans\"\nimport { hull } from \"@jscad/modeling/src/operations/hulls\"\nimport { cube, cuboid, cylinder } from \"@jscad/modeling/src/primitives\"\nimport { rotateY, mirrorX } from \"@jscad/modeling/src/operations/transforms\"\n\nimport { Params } from \"../params\"\n\nconst SCREWCLEARANCE = 2\nconst RIDGEWIDTH = 2\nconst FLOOR = 2\n\nexport const flange = (screwDiameter: number) => {\n const outerWidth = screwDiameter+(SCREWCLEARANCE*2)+(RIDGEWIDTH*2)\n const innerWidth = screwDiameter+(SCREWCLEARANCE*2)\n\n const outer = hull(\n cuboid({\n size: [outerWidth/2, outerWidth, outerWidth]\n }),\n translate(\n [\n -(outerWidth/2),0,0\n ], \n cylinder({\n height: outerWidth, \n radius: outerWidth/2\n })\n )\n )\n\n const inner = hull(\n cuboid({\n size: [innerWidth/2, innerWidth, innerWidth]\n }),\n translate(\n [\n -(innerWidth/2)-(SCREWCLEARANCE*2),0,0\n ], \n cylinder({\n height: innerWidth, \n radius: innerWidth/2\n })\n )\n )\n\n return subtract(\n outer,\n translate([RIDGEWIDTH,0,FLOOR], inner),\n translate([-outerWidth,0,outerWidth], rotateY(45, cube({size: outerWidth*2}))),\n translate([-outerWidth/2,0,0], cylinder({height: outerWidth, radius: screwDiameter/2}))\n )\n}\n\nexport const flanges = (params: Params) => {\n const { length, width, cornerRadius, wallMountScrewDiameter } = params\n const outerWidth = wallMountScrewDiameter+(SCREWCLEARANCE*2)+(RIDGEWIDTH*2)\n const cornerSpacing = cornerRadius+(outerWidth/2)\n const z = outerWidth/2\n return union(\n translate([-RIDGEWIDTH, cornerSpacing, z], flange(wallMountScrewDiameter)),\n translate([-RIDGEWIDTH, length-cornerSpacing, z], flange(wallMountScrewDiameter)),\n translate([width+RIDGEWIDTH, cornerSpacing, z], mirrorX(flange(wallMountScrewDiameter))),\n translate([width+RIDGEWIDTH, length-cornerSpacing, z], mirrorX(flange(wallMountScrewDiameter)))\n )\n}","import { cuboid, cylinder } from '@jscad/modeling/src/primitives'\nimport { rotateZ, translate } from '@jscad/modeling/src/operations/transforms'\nimport { hull } from '@jscad/modeling/src/operations/hulls'\nimport { subtract } from '@jscad/modeling/src/operations/booleans'\nimport { degToRad } from '@jscad/modeling/src/utils'\n\nexport const roundedCube = (l: number, w: number, h: number, r=8, s=100) => {\n const c = cylinder({\n height: h,\n radius: r,\n segments: s,\n center: [0,0,h/2]\n })\n\n return hull(\n translate([r, r, 0], c),\n translate([l-r, r, 0], c),\n translate([r, w-r, 0], c),\n translate([l-r, w-r, 0], c),\n )\n}\n\nexport const roundedFrame = (l: number, w: number, h: number, t: number, r=8, s=100) => {\n const outer = roundedCube(l, w, h, r, s)\n const inner = roundedCube(l-(t*2), w-(t*2), h, r, s)\n return subtract(outer, translate([t, t, 0], inner))\n}\n\nexport const hollowRoundCube = (l: number, w: number, h: number, t: number, r=8, s=100) => {\n const outer = roundedCube(l, w, h, r, s)\n const inner = roundedCube(l-(t*2), w-(t*2), h, r, s)\n return subtract(outer, translate([t, t, t], inner))\n}\n\nconst roundedCorner = (r: number, h: number, s=100) => {\n return subtract(\n cuboid({size: [r*2, r*2, h]}),\n translate([r, r, 0], roundedCube(r, r, h, r, s)),\n translate([r*2,0,0], cuboid({size: [r*2, r*2, h]}))\n )\n}\n\nexport const clover = (l: number, w: number, h: number, r=8, s=100) => {\n const cornersRemoved = subtract(\n roundedCube(l, w, h, r, s),\n translate([0, 0, 0], roundedCube(r, r, h, r, s)),\n translate([l-r, 0, 0], roundedCube(r, r, h, r, s)),\n translate([0, w-r, 0], roundedCube(r, r, h, r, s)),\n translate([l-r, w-r, 0], roundedCube(r, r, h, r, s)),\n )\n const rounded = subtract(\n cornersRemoved,\n translate([0, r*2, 0], rotateZ(degToRad(0), roundedCorner(r, h*2, s))),\n translate([r*2, 0, 0], rotateZ(degToRad(0), roundedCorner(r, h*2, s))),\n translate([l, r*2, 0], rotateZ(degToRad(90), roundedCorner(r, h*2, s))),\n translate([l-(r*2), 0, 0], rotateZ(degToRad(90), roundedCorner(r, h*2, s))),\n translate([l, w-(r*2), 0], rotateZ(degToRad(180), roundedCorner(r, h*2, s))),\n translate([l-(r*2), w, 0], rotateZ(degToRad(180), roundedCorner(r, h*2, s))),\n translate([0, w-(r*2), 0], rotateZ(degToRad(270), roundedCorner(r, h*2, s))),\n translate([r*2, w, 0], rotateZ(degToRad(270), roundedCorner(r, h*2, s))),\n )\n return rounded\n}\n\nexport const cloverFrame = (l: number, w: number, h: number, t: number, r=8, s=100) => {\n const outer = clover(l, w, h, r, s)\n const inner = clover(l-(t*2), w-(t*2), h, r, s)\n return subtract(outer, translate([t, t, 0], inner))\n}\n\n","import { Params } from '../params'\n\nimport { cloverFrame } from './utils'\n\nimport { translate } from '@jscad/modeling/src/operations/transforms'\n\nexport const waterProofSealCutout = (params: Params) => {\n const { length, width, height, wall, insertThickness, insertHeight, \n sealThickness, insertClearance, cornerRadius } = params\n return translate(\n [\n wall, \n wall, \n height-(insertHeight+sealThickness)\n ],\n cloverFrame(\n width-(wall*2), \n length-(wall*2), \n insertHeight+sealThickness+insertClearance, \n insertThickness+(insertClearance*2), \n (cornerRadius+wall)/2\n )\n )\n}\n\nexport const waterProofSeal = (params: Params) => {\n const { length, width, wall, cornerRadius, sealThickness, insertThickness, insertClearance } = params\n return cloverFrame(width-(wall*2)-(insertClearance*2), length-(wall*2)-(insertClearance*2), sealThickness, insertThickness, (cornerRadius+wall)/2)\n}","import { union } from \"@jscad/modeling/src/operations/booleans\";\nimport { Params } from \"../params\";\n\nimport { cylinder } from '@jscad/modeling/src/primitives';\nimport { translate } from \"@jscad/modeling/src/operations/transforms\";\n\nexport const screws = (params: Params) => {\n const { length, width, height, wall, cornerRadius, screwDiameter } = params\n const offset = (cornerRadius/2)+wall\n return union(\n translate([offset, offset, height/2], cylinder({radius: screwDiameter/2, height: height})),\n translate([width-offset, offset, height/2], cylinder({radius: screwDiameter/2, height: height})),\n translate([offset, length-offset, height/2], cylinder({radius: screwDiameter/2, height: height})),\n translate([width-offset, length-offset, height/2], cylinder({radius: screwDiameter/2, height: height})),\n )\n}","import { booleans } from '@jscad/modeling'\nimport { Params } from '../params'\n\nimport { holes } from './holes'\nimport { flanges } from './wallmount'\nimport { clover, hollowRoundCube, roundedCube } from './utils'\nimport { waterProofSealCutout } from './waterproofseal'\nimport { screws } from './screws'\nimport { translate } from '@jscad/modeling/src/operations/transforms'\n\nconst { subtract, union } = booleans\n\nexport const base = (params: Params) => {\n const { length, width, height, wall, floor, cornerRadius, insertThickness, insertClearance } = params\n\n const body = [] \n const subtracts = []\n\n let _wall = wall\n if (params.waterProof) {\n _wall = (wall * 2) + (insertClearance * 2) + insertThickness\n }\n\n if (params.screws) {\n body.push(subtract(\n roundedCube(width, length, height, cornerRadius),\n translate([\n _wall,_wall,floor\n ], \n clover(\n width-(_wall*2), \n length-(_wall*2), \n height, \n (cornerRadius+wall)/2\n ))\n ))\n subtracts.push(screws(params))\n } else {\n body.push(hollowRoundCube(width, length, height, _wall, cornerRadius))\n }\n \n if (params.wallMounts) {\n body.push(flanges(params))\n }\n\n if (params.waterProof) {\n subtracts.push(waterProofSealCutout(params))\n }\n\n if (params.holes.length > 0) {\n subtracts.push(holes(params))\n }\n\n if (subtracts.length > 0) {\n return subtract(union(body), union(subtracts))\n } else {\n return union(body)\n }\n}","import { booleans, transforms } from '@jscad/modeling'\nimport { cloverFrame, roundedCube, roundedFrame } from './utils'\n\nimport { Params } from '../params'\nimport { screws } from './screws'\nimport { subtract } from '@jscad/modeling/src/operations/booleans'\nimport { holes } from './holes'\n\nconst { union } = booleans\nconst { translate } = transforms\n\nexport const lid = (params: Params) => {\n const { length, width, wall, roof, cornerRadius, insertThickness, insertHeight, insertClearance } = params\n\n const entities = []\n const subtracts = []\n\n entities.push(roundedCube(width, length, roof, cornerRadius))\n\n if (params.screws) {\n entities.push(\n translate([\n wall+insertClearance, \n wall+insertClearance, \n roof\n ], \n cloverFrame(\n width-(wall*2)-(insertClearance*2), \n length-(wall*2)-(insertClearance*2), \n insertHeight, \n insertThickness, \n (cornerRadius+wall)/2\n ))\n )\n subtracts.push(screws(params))\n } else {\n entities.push(\n translate([\n wall+insertClearance, \n wall+insertClearance, \n roof\n ], \n roundedFrame(\n width-(wall*2)-(insertClearance*2), \n length-(wall*2)-(insertClearance*2), \n insertHeight, \n insertThickness, \n cornerRadius\n ))\n )\n }\n\n const holeCount = params.holes.filter((v, i) => {return v.surface === 'top'}).length\n\n if (holeCount > 0) {\n subtracts.push(holes(params, ['top']))\n }\n\n if (subtracts.length > 0) {\n return subtract(union(entities), union(subtracts))\n } else {\n return union(entities)\n }\n}","import { translate } from \"@jscad/modeling/src/operations/transforms\";\nimport { Params, PCBMount } from \"../params\";\nimport { cylinder } from \"@jscad/modeling/src/primitives\";\nimport { subtract, union } from \"@jscad/modeling/src/operations/booleans\";\nimport { Geom3 } from \"@jscad/modeling/src/geometries/types\";\n\nexport const pcbMount = (mountParams: PCBMount) => {\n return subtract(\n cylinder({\n height: mountParams.height, radius: mountParams.outerDiameter / 2, segments: 20\n }),\n cylinder({\n height: mountParams.height, radius: mountParams.screwDiameter / 2, segments: 20\n })\n )\n}\n\nexport const pcbMounts = (params: Params) => {\n const { pcbMounts, length, width, floor } = params\n \n const mounts: Geom3[] = []\n\n pcbMounts.forEach((mount) => {\n const z = (mount.height/2) + floor\n mounts.push(translate([(width/2)-mount.x, (length/2)-mount.y, z], pcbMount(mount)))\n })\n\n return union(mounts)\n}","import { PointerEventHandler, WheelEventHandler, useEffect, useRef } from \"react\"\nimport { prepareRender, entitiesFromSolids, drawCommands, cameras, controls } from \"@jscad/regl-renderer\"\nimport { union } from \"@jscad/modeling/src/operations/booleans\"\nimport { translate } from \"@jscad/modeling/src/operations/transforms\"\n\nimport { Params, useParams } from \"../lib/params\"\n\nimport { Entity } from \"@jscad/regl-renderer/types/geometry-utils-V2/entity\"\nimport { Geom3 } from \"@jscad/modeling/src/geometries/types\"\nimport { Vec3 } from \"@jscad/modeling/src/maths/types\"\n\nimport { base } from \"../lib/enclosure/base\"\nimport { lid } from \"../lib/enclosure/lid\"\nimport { waterProofSeal } from \"../lib/enclosure/waterproofseal\"\nimport { pcbMounts } from \"../lib/enclosure/pcbmount\"\n\nconst SPACING = 20\n\nconst perspectiveCamera = cameras.perspective\nconst camera = Object.assign({}, perspectiveCamera.defaults)\n\nconst orbitControls = controls.orbit\nlet control = orbitControls.defaults\n\nlet lastX = 0\nlet lastY = 0\n\nlet rotateDelta = [0, 0]\nlet panDelta = [0, 0]\nlet zoomDelta = 0\nlet pointerDown = false\nlet zoomToFit = true\nlet updateView = true\n\nconst rotateSpeed = 0.002\nconst panSpeed = 1\nconst zoomSpeed = 0.08\n\ntype Render = (options: any) => void;\n\ntype RenderOptions = {\n camera: typeof camera,\n drawCommands: typeof drawCommands,\n entities: Entity[],\n}\n\nexport const Renderer = () => {\n\n const params = useParams()\n\n const { length, width, height, wall, floor, roof, cornerRadius, holes, \n screws, waterProof, wallMounts, screwDiameter, insertThickness,\n sealThickness, insertHeight, wallMountScrewDiameter, insertClearance,\n pcbMounts: pcbMountParams } = params\n\n const container = useRef(null);\n const _lid = useRef(null)\n const _base = useRef(null)\n const _waterProofSeal = useRef(null)\n const _pcbMounts = useRef(null)\n const model = useRef(null)\n const renderOptions = useRef(null)\n const renderer = useRef(null)\n const animationFrame = useRef(null)\n const unload = useRef(false)\n\n const moveHandler: PointerEventHandler = (ev) => {\n if(!pointerDown) return\n const dx = lastX - ev.pageX \n const dy = ev.pageY - lastY \n\n const shiftKey = (ev.shiftKey === true)\n if (shiftKey) {\n panDelta[0] += dx\n panDelta[1] += dy\n } else {\n rotateDelta[0] -= dx\n rotateDelta[1] -= dy\n }\n\n lastX = ev.pageX\n lastY = ev.pageY\n\n ev.preventDefault()\n }\n\n const downHandler: PointerEventHandler = (ev) => {\n pointerDown = true\n lastX = ev.pageX\n lastY = ev.pageY\n container.current?.setPointerCapture(ev.pointerId)\n }\n\n const upHandler: PointerEventHandler = (ev) => {\n pointerDown = false\n container.current?.releasePointerCapture(ev.pointerId)\n }\n\n const wheelHandler: WheelEventHandler = (ev) => {\n zoomDelta += ev.deltaY\n }\n\n const doRotatePanZoom = () => {\n if (rotateDelta[0] || rotateDelta[1]) {\n const updated = orbitControls.rotate({ controls: control, camera: camera, speed: rotateSpeed }, rotateDelta)\n control = { ...control, ...updated.controls }\n updateView = true\n rotateDelta = [0, 0]\n }\n\n if (panDelta[0] || panDelta[1]) {\n const updated = orbitControls.pan({ controls:control, camera:camera, speed: panSpeed }, panDelta)\n control = { ...control, ...updated.controls }\n panDelta = [0, 0]\n camera.position = updated.camera.position\n camera.target = updated.camera.target\n updateView = true\n }\n\n if (zoomDelta) {\n const updated = orbitControls.zoom({ controls:control, camera:camera, speed: zoomSpeed }, zoomDelta)\n control = { ...control, ...updated.controls }\n zoomDelta = 0\n updateView = true\n }\n\n if (zoomToFit) {\n if (!renderOptions.current?.entities) return\n control.zoomToFit.tightness = 1\n const updated = orbitControls.zoomToFit({ controls: control, camera: camera, entities: renderOptions.current?.entities })\n control = { ...control, ...updated.controls }\n zoomToFit = false\n updateView = true\n }\n }\n\n const updateAndRender = (timestamp?: Number) => {\n doRotatePanZoom()\n\n if (updateView) {\n const updates = orbitControls.update({ controls: control, camera: camera })\n control = { ...control, ...updates.controls }\n updateView = control.changed // for elasticity in rotate / zoom\n\n camera.position = updates.camera.position\n perspectiveCamera.update(camera)\n\n renderer.current && renderer.current(renderOptions.current)\n }\n\n if (!unload.current)\n animationFrame.current = requestAnimationFrame(updateAndRender)\n }\n\n const setCamera = () => {\n perspectiveCamera.setProjection(camera, camera, { \n width: window.innerWidth, \n height: window.innerHeight\n })\n }\n\n // Lid\n useEffect(() => {\n let pos: Vec3\n if (waterProof.value) {\n pos = [(width.value/2)+SPACING, -length.value/2, 0]\n } else {\n pos = [SPACING/2, -length.value/2, 0]\n }\n _lid.current = translate(pos, lid(params.get() as Params))\n }, [length, width, roof, wall, cornerRadius, screws, waterProof, screwDiameter, \n insertThickness, insertHeight, insertClearance, holes])\n\n // Base\n useEffect(() => {\n let pos: Vec3\n if (waterProof.value) {\n pos = [-width.value/2, -length.value/2, 0]\n } else {\n pos = [-(width.value+(SPACING/2)), -length.value/2, 0]\n }\n _base.current = translate(pos, base(params.get() as Params))\n }, [length, width, height, wall, floor, cornerRadius, holes, wallMounts, \n screws, waterProof, screwDiameter, insertThickness, insertHeight, sealThickness, \n wallMountScrewDiameter, insertClearance])\n\n // Waterproof seal\n useEffect(() => {\n if (params.waterProof) {\n const pos = [-width.value-(width.value/2)-SPACING, -length.value/2, 0] as Vec3\n _waterProofSeal.current = translate(pos, waterProofSeal(params.get() as Params))\n }\n }, [length, width, wall, cornerRadius, waterProof, sealThickness, insertClearance, insertThickness])\n\n // PCB mounts\n useEffect(() => {\n if (pcbMountParams.value.length > 0) {\n let pos: Vec3\n if (waterProof.value) {\n pos = [-width.value/2, -length.value/2, 0]\n } else {\n pos = [-(width.value+(SPACING/2)), -length.value/2, 0]\n }\n _pcbMounts.current = translate(pos, pcbMounts(params.get() as Params))\n }\n }, [pcbMountParams, waterProof, wall, floor, height])\n\n // Combine solids\n useEffect(() => {\n let result: Geom3[] = []\n\n if (_lid.current) result.push(_lid.current)\n if (_base.current) result.push(_base.current)\n if (_waterProofSeal.current && waterProof.value) result.push(_waterProofSeal.current)\n if (_pcbMounts.current && pcbMountParams.value.length > 0) result.push(_pcbMounts.current)\n\n model.current = union(result)\n }, [_lid.current, _base.current, _waterProofSeal.current, _pcbMounts.current]) \n \n // Convert solids to entities\n useEffect(() => {\n if (!model.current) return\n\n renderOptions.current = {\n camera: camera,\n drawCommands: drawCommands,\n entities: entitiesFromSolids({}, model.current)\n }\n }, [model.current])\n\n // Initial render\n useEffect(() => {\n if (!container.current || renderer.current) return\n if (container.current && !renderer.current) {\n renderer.current = prepareRender({\n glOptions: { container: container.current },\n })\n }\n setCamera()\n updateAndRender()\n }, [model, renderOptions, renderer, container]);\n\n // Re-render on param change\n useEffect(() => {\n if (!model.current || !renderOptions.current || !renderer.current || !container.current) return\n renderOptions.current.entities = entitiesFromSolids({}, model.current)\n updateView = true\n }, [model.current])\n\n return

;\n};","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export var IconsManifest = [\n {\n \"id\": \"ci\",\n \"name\": \"Circum Icons\",\n \"projectUrl\": \"https://circumicons.com/\",\n \"license\": \"MPL-2.0 license\",\n \"licenseUrl\": \"https://github.com/Klarr-Agency/Circum-Icons/blob/main/LICENSE\"\n },\n {\n \"id\": \"fa\",\n \"name\": \"Font Awesome 5\",\n \"projectUrl\": \"https://fontawesome.com/\",\n \"license\": \"CC BY 4.0 License\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/4.0/\"\n },\n {\n \"id\": \"fa6\",\n \"name\": \"Font Awesome 6\",\n \"projectUrl\": \"https://fontawesome.com/\",\n \"license\": \"CC BY 4.0 License\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/4.0/\"\n },\n {\n \"id\": \"io\",\n \"name\": \"Ionicons 4\",\n \"projectUrl\": \"https://ionicons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/ionic-team/ionicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"io5\",\n \"name\": \"Ionicons 5\",\n \"projectUrl\": \"https://ionicons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/ionic-team/ionicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"md\",\n \"name\": \"Material Design icons\",\n \"projectUrl\": \"http://google.github.io/material-design-icons/\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"https://github.com/google/material-design-icons/blob/master/LICENSE\"\n },\n {\n \"id\": \"ti\",\n \"name\": \"Typicons\",\n \"projectUrl\": \"http://s-ings.com/typicons/\",\n \"license\": \"CC BY-SA 3.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by-sa/3.0/\"\n },\n {\n \"id\": \"go\",\n \"name\": \"Github Octicons icons\",\n \"projectUrl\": \"https://octicons.github.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/primer/octicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"fi\",\n \"name\": \"Feather\",\n \"projectUrl\": \"https://feathericons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/feathericons/feather/blob/master/LICENSE\"\n },\n {\n \"id\": \"lu\",\n \"name\": \"Lucide\",\n \"projectUrl\": \"https://lucide.dev/\",\n \"license\": \"ISC\",\n \"licenseUrl\": \"https://github.com/lucide-icons/lucide/blob/main/LICENSE\"\n },\n {\n \"id\": \"gi\",\n \"name\": \"Game Icons\",\n \"projectUrl\": \"https://game-icons.net/\",\n \"license\": \"CC BY 3.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/3.0/\"\n },\n {\n \"id\": \"wi\",\n \"name\": \"Weather Icons\",\n \"projectUrl\": \"https://erikflowers.github.io/weather-icons/\",\n \"license\": \"SIL OFL 1.1\",\n \"licenseUrl\": \"http://scripts.sil.org/OFL\"\n },\n {\n \"id\": \"di\",\n \"name\": \"Devicons\",\n \"projectUrl\": \"https://vorillaz.github.io/devicons/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"ai\",\n \"name\": \"Ant Design Icons\",\n \"projectUrl\": \"https://github.com/ant-design/ant-design-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"bs\",\n \"name\": \"Bootstrap Icons\",\n \"projectUrl\": \"https://github.com/twbs/icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"ri\",\n \"name\": \"Remix Icon\",\n \"projectUrl\": \"https://github.com/Remix-Design/RemixIcon\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"http://www.apache.org/licenses/\"\n },\n {\n \"id\": \"fc\",\n \"name\": \"Flat Color Icons\",\n \"projectUrl\": \"https://github.com/icons8/flat-color-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"gr\",\n \"name\": \"Grommet-Icons\",\n \"projectUrl\": \"https://github.com/grommet/grommet-icons\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"http://www.apache.org/licenses/\"\n },\n {\n \"id\": \"hi\",\n \"name\": \"Heroicons\",\n \"projectUrl\": \"https://github.com/tailwindlabs/heroicons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"hi2\",\n \"name\": \"Heroicons 2\",\n \"projectUrl\": \"https://github.com/tailwindlabs/heroicons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"si\",\n \"name\": \"Simple Icons\",\n \"projectUrl\": \"https://simpleicons.org/\",\n \"license\": \"CC0 1.0 Universal\",\n \"licenseUrl\": \"https://creativecommons.org/publicdomain/zero/1.0/\"\n },\n {\n \"id\": \"sl\",\n \"name\": \"Simple Line Icons\",\n \"projectUrl\": \"https://thesabbir.github.io/simple-line-icons/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"im\",\n \"name\": \"IcoMoon Free\",\n \"projectUrl\": \"https://github.com/Keyamoon/IcoMoon-Free\",\n \"license\": \"CC BY 4.0 License\",\n \"licenseUrl\": \"https://github.com/Keyamoon/IcoMoon-Free/blob/master/License.txt\"\n },\n {\n \"id\": \"bi\",\n \"name\": \"BoxIcons\",\n \"projectUrl\": \"https://github.com/atisawd/boxicons\",\n \"license\": \"CC BY 4.0 License\",\n \"licenseUrl\": \"https://github.com/atisawd/boxicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"cg\",\n \"name\": \"css.gg\",\n \"projectUrl\": \"https://github.com/astrit/css.gg\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"vsc\",\n \"name\": \"VS Code Icons\",\n \"projectUrl\": \"https://github.com/microsoft/vscode-codicons\",\n \"license\": \"CC BY 4.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/4.0/\"\n },\n {\n \"id\": \"tb\",\n \"name\": \"Tabler Icons\",\n \"projectUrl\": \"https://github.com/tabler/tabler-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"tfi\",\n \"name\": \"Themify Icons\",\n \"projectUrl\": \"https://github.com/lykmapipo/themify-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/thecreation/standard-icons/blob/master/modules/themify-icons/LICENSE\"\n },\n {\n \"id\": \"rx\",\n \"name\": \"Radix Icons\",\n \"projectUrl\": \"https://icons.radix-ui.com\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/radix-ui/icons/blob/master/LICENSE\"\n },\n {\n \"id\": \"pi\",\n \"name\": \"Phosphor Icons\",\n \"projectUrl\": \"https://github.com/phosphor-icons/core\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/phosphor-icons/core/blob/main/LICENSE\"\n },\n {\n \"id\": \"lia\",\n \"name\": \"Icons8 Line Awesome\",\n \"projectUrl\": \"https://icons8.com/line-awesome\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/icons8/line-awesome/blob/master/LICENSE.md\"\n }\n]","import React from \"react\";\nexport var DefaultContext = {\n color: undefined,\n size: undefined,\n className: undefined,\n style: undefined,\n attr: undefined\n};\nexport var IconContext = React.createContext && React.createContext(DefaultContext);","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React from \"react\";\nimport { IconContext, DefaultContext } from \"./iconContext\";\nfunction Tree2Element(tree) {\n return tree && tree.map(function (node, i) {\n return React.createElement(node.tag, __assign({\n key: i\n }, node.attr), Tree2Element(node.child));\n });\n}\nexport function GenIcon(data) {\n // eslint-disable-next-line react/display-name\n return function (props) {\n return React.createElement(IconBase, __assign({\n attr: __assign({}, data.attr)\n }, props), Tree2Element(data.child));\n };\n}\nexport function IconBase(props) {\n var elem = function (conf) {\n var attr = props.attr,\n size = props.size,\n title = props.title,\n svgProps = __rest(props, [\"attr\", \"size\", \"title\"]);\n var computedSize = size || conf.size || \"1em\";\n var className;\n if (conf.className) className = conf.className;\n if (props.className) className = (className ? className + \" \" : \"\") + props.className;\n return React.createElement(\"svg\", __assign({\n stroke: \"currentColor\",\n fill: \"currentColor\",\n strokeWidth: \"0\"\n }, conf.attr, attr, svgProps, {\n className: className,\n style: __assign(__assign({\n color: props.color || conf.color\n }, conf.style), props.style),\n height: computedSize,\n width: computedSize,\n xmlns: \"http://www.w3.org/2000/svg\"\n }), title && React.createElement(\"title\", null, title), props.children);\n };\n return IconContext !== undefined ? React.createElement(IconContext.Consumer, null, function (conf) {\n return elem(conf);\n }) : elem(DefaultContext);\n}","// THIS FILE IS AUTO GENERATED\nimport { GenIcon } from '../lib';\nexport function BiAbacus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2 3h2v18H2zm18 0h2v18h-2zM5 13h2v1h2v-1h2v1h2v-1h4v1h2v-4h-2v1h-4v-1h-2v1H9v-1H7v1H5zm0-9v4h2V7h8v1h2V7h2V5h-2V4h-2v1H7V4zm0 13v3h2v-1h2v1h2v-1h8v-2h-8v-1H9v1H7v-1H5z\"}}]})(props);\n};\nexport function BiAccessibility (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"18\",\"cy\":\"4\",\"r\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m17.836 12.014-4.345.725 3.29-4.113a1 1 0 0 0-.227-1.457l-6-4a.999.999 0 0 0-1.262.125l-4 4 1.414 1.414 3.42-3.42 2.584 1.723-2.681 3.352a5.913 5.913 0 0 0-5.5.752l1.451 1.451A3.972 3.972 0 0 1 8 12c2.206 0 4 1.794 4 4 0 .739-.216 1.425-.566 2.02l1.451 1.451A5.961 5.961 0 0 0 14 16c0-.445-.053-.878-.145-1.295L17 14.181V20h2v-7a.998.998 0 0 0-1.164-.986zM8 20c-2.206 0-4-1.794-4-4 0-.739.216-1.425.566-2.02l-1.451-1.451A5.961 5.961 0 0 0 2 16c0 3.309 2.691 6 6 6 1.294 0 2.49-.416 3.471-1.115l-1.451-1.451A3.972 3.972 0 0 1 8 20z\"}}]})(props);\n};\nexport function BiAddToQueue (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H8c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zM8 16V4h12l.002 12H8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M4 8H2v12c0 1.103.897 2 2 2h12v-2H4V8zm11-2h-2v3h-3v2h3v3h2v-3h3V9h-3z\"}}]})(props);\n};\nexport function BiAdjust (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 22c5.514 0 10-4.486 10-10S17.514 2 12 2 2 6.486 2 12s4.486 10 10 10zm0-18c4.411 0 8 3.589 8 8s-3.589 8-8 8-8-3.589-8-8 3.589-8 8-8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 12a7 7 0 0 0-7-7v14a7 7 0 0 0 7-7z\"}}]})(props);\n};\nexport function BiAlarmAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 4c-4.879 0-9 4.121-9 9s4.121 9 9 9 9-4.121 9-9-4.121-9-9-9zm0 16c-3.794 0-7-3.206-7-7s3.206-7 7-7 7 3.206 7 7-3.206 7-7 7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13 8h-2v4H7v2h4v4h2v-4h4v-2h-4zm7.292-1.292-3.01-3 1.412-1.417 3.01 3zM5.282 2.294 6.7 3.706l-2.99 3-1.417-1.413z\"}}]})(props);\n};\nexport function BiAlarmExclamation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 22c4.879 0 9-4.121 9-9s-4.121-9-9-9-9 4.121-9 9 4.121 9 9 9zm0-16c3.794 0 7 3.206 7 7s-3.206 7-7 7-7-3.206-7-7 3.206-7 7-7zm5.284-2.293 1.412-1.416 3.01 3-1.413 1.417zM5.282 2.294 6.7 3.706l-2.99 3-1.417-1.413z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 9h2v5h-2zm0 6h2v2h-2z\"}}]})(props);\n};\nexport function BiAlarmOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m20.292 6.708-3.01-3 1.412-1.417 3.01 3zm1.415 13.585-2.287-2.287C20.409 16.563 21 14.838 21 13c0-4.879-4.121-9-9-9-1.838 0-3.563.591-5.006 1.58L5.91 4.496l.788-.79-1.416-1.412-.786.788-.789-.789-1.414 1.414 18 18 1.414-1.414zM12 6c3.794 0 7 3.206 7 7 0 1.292-.387 2.507-1.027 3.559L15.414 14H17v-2h-3.586L13 11.586V8h-2v1.586L8.441 7.027C9.493 6.387 10.708 6 12 6zM4.305 8.426A8.792 8.792 0 0 0 3 13c0 4.879 4.121 9 9 9a8.792 8.792 0 0 0 4.574-1.305l-1.461-1.461A6.801 6.801 0 0 1 12 20c-3.794 0-7-3.206-7-7 0-1.111.281-2.169.766-3.113L4.305 8.426z\"}}]})(props);\n};\nexport function BiAlarmSnooze (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 4c-4.879 0-9 4.121-9 9s4.121 9 9 9 9-4.121 9-9-4.121-9-9-9zm0 16c-3.794 0-7-3.206-7-7s3.206-7 7-7 7 3.206 7 7-3.206 7-7 7zm8.292-13.292-3.01-3 1.412-1.417 3.01 3zM6.698 3.707l-2.99 2.999L2.29 5.294l2.99-3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14.832 10.555A1 1 0 0 0 14 9H9v2h3.132l-2.964 4.445A1 1 0 0 0 10 17h5v-2h-3.132l2.964-4.445z\"}}]})(props);\n};\nexport function BiAlarm (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 4c-4.879 0-9 4.121-9 9s4.121 9 9 9 9-4.121 9-9-4.121-9-9-9zm0 16c-3.794 0-7-3.206-7-7s3.206-7 7-7 7 3.206 7 7-3.206 7-7 7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13 12V8h-2v6h6v-2zm4.284-8.293 1.412-1.416 3.01 3-1.413 1.417zm-10.586 0-2.99 2.999L2.29 5.294l2.99-3z\"}}]})(props);\n};\nexport function BiAlbum (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"11.99\",\"cy\":\"11.99\",\"r\":\"2.01\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2zm0 18a8 8 0 1 1 8-8 8 8 0 0 1-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 6a6 6 0 0 0-6 6h2a4 4 0 0 1 4-4z\"}}]})(props);\n};\nexport function BiAlignJustify (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 7h16v2H4zm0-4h16v2H4zm0 8h16v2H4zm0 4h16v2H4zm2 4h12v2H6z\"}}]})(props);\n};\nexport function BiAlignLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 19h16v2H4zm0-4h11v2H4zm0-4h16v2H4zm0-8h16v2H4zm0 4h11v2H4z\"}}]})(props);\n};\nexport function BiAlignMiddle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 19h16v2H4zm3-4h10v2H7zm-3-4h16v2H4zm0-8h16v2H4zm3 4h10v2H7z\"}}]})(props);\n};\nexport function BiAlignRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 19h16v2H4zm5-4h11v2H9zm-5-4h16v2H4zm0-8h16v2H4zm5 4h11v2H9z\"}}]})(props);\n};\nexport function BiAnalyse (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2 12h2a7.986 7.986 0 0 1 2.337-5.663 7.91 7.91 0 0 1 2.542-1.71 8.12 8.12 0 0 1 6.13-.041A2.488 2.488 0 0 0 17.5 7C18.886 7 20 5.886 20 4.5S18.886 2 17.5 2c-.689 0-1.312.276-1.763.725-2.431-.973-5.223-.958-7.635.059a9.928 9.928 0 0 0-3.18 2.139 9.92 9.92 0 0 0-2.14 3.179A10.005 10.005 0 0 0 2 12zm17.373 3.122c-.401.952-.977 1.808-1.71 2.541s-1.589 1.309-2.542 1.71a8.12 8.12 0 0 1-6.13.041A2.488 2.488 0 0 0 6.5 17C5.114 17 4 18.114 4 19.5S5.114 22 6.5 22c.689 0 1.312-.276 1.763-.725A9.965 9.965 0 0 0 12 22a9.983 9.983 0 0 0 9.217-6.102A9.992 9.992 0 0 0 22 12h-2a7.993 7.993 0 0 1-.627 3.122z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 7.462c-2.502 0-4.538 2.036-4.538 4.538S9.498 16.538 12 16.538s4.538-2.036 4.538-4.538S14.502 7.462 12 7.462zm0 7.076c-1.399 0-2.538-1.139-2.538-2.538S10.601 9.462 12 9.462s2.538 1.139 2.538 2.538-1.139 2.538-2.538 2.538z\"}}]})(props);\n};\nexport function BiAnchor (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m22 15-3-4-3 4h1.906c-.436 2.469-2.438 4.471-4.906 4.906V13h2v-2h-2V9.336c1.543-.459 2.714-1.923 2.714-3.621C15.714 3.666 14.048 2 12 2S8.286 3.666 8.286 5.715c0 1.698 1.171 3.162 2.714 3.621V11H9v2h2v6.906C8.531 19.471 6.529 17.469 6.094 15H8l-3-4-3 4h2.073c.511 3.885 3.929 7 7.927 7s7.416-3.115 7.927-7H22zM10.286 5.715C10.286 4.77 11.055 4 12 4s1.714.77 1.714 1.715c0 .951-.801 1.785-1.714 1.785s-1.714-.834-1.714-1.785z\"}}]})(props);\n};\nexport function BiAngry (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 14c-3 0-4 3-4 3h8s-1-3-4-3zm-2.439-2.439c.014-.014.023-.03.037-.044l1.031.413.742-1.857-5-2-.742 1.856 1.373.549L7 10.5a1.499 1.499 0 0 0 2.561 1.061zm3.068-1.49.742 1.857 1.037-.415c.011.011.019.024.029.035a1.488 1.488 0 0 0 2.112 0c.271-.271.438-.644.438-1.056l-.001-.01 1.386-.554-.742-1.857-5.001 2z\"}}]})(props);\n};\nexport function BiAperture (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.579 2 2 6.579 2 12s4.579 10 10 10 10-4.579 10-10S17.421 2 12 2zm2.113 13H9.986l-1.723-3.094L10.202 9h3.736l1.871 3.062L14.113 15zM4 12c0-.953.186-1.87.508-2.727L7.696 15H4.61A7.757 7.757 0 0 1 4 12zm12.283-3h3.106A7.74 7.74 0 0 1 20 12c0 .844-.143 1.66-.397 2.432L16.283 9zm1.905-2h-6.653l1.905-2.857c1.886.359 3.562 1.403 4.748 2.857zm-7.095-2.941L9.132 7H9v.197L7.17 9.942 5.65 7.214c1.3-1.703 3.249-2.895 5.443-3.155zM5.812 17h7.147l-1.709 2.961C9.084 19.748 7.141 18.63 5.812 17zm7.828 2.82 3.357-5.815 1.544 2.526c-1.154 1.642-2.901 2.854-4.901 3.289z\"}}]})(props);\n};\nexport function BiArch (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8 22h1v-6.995c.006-.502.177-3.005 3-3.005s2.994 2.503 3 3v7h7v-2h-1V4h1V2H2v2h1v16H2v2h6zM19 4v2H5V4h14zM5 8h14v12h-2v-5c0-1.729-1.045-5-5-5s-5 3.271-5 5v5H5V8z\"}}]})(props);\n};\nexport function BiArchiveIn (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.706 5.292-2.999-2.999A.996.996 0 0 0 18 2H6a.996.996 0 0 0-.707.293L2.294 5.292A.994.994 0 0 0 2 6v13c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V6a.994.994 0 0 0-.294-.708zM6.414 4h11.172l1 1H5.414l1-1zM4 19V7h16l.002 12H4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14 9h-4v3H7l5 5 5-5h-3z\"}}]})(props);\n};\nexport function BiArchiveOut (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.706 5.292-2.999-2.999A.996.996 0 0 0 18 2H6a.996.996 0 0 0-.707.293L2.294 5.292A.994.994 0 0 0 2 6v13c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V6a.994.994 0 0 0-.294-.708zM6.414 4h11.172l1 1H5.414l1-1zM4 19V7h16l.002 12H4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7 14h3v3h4v-3h3l-5-5z\"}}]})(props);\n};\nexport function BiArchive (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.706 5.291-2.999-2.998A.996.996 0 0 0 18 2H6a.996.996 0 0 0-.707.293L2.294 5.291A.994.994 0 0 0 2 5.999V19c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V5.999a.994.994 0 0 0-.294-.708zM6.414 4h11.172l.999.999H5.415L6.414 4zM4 19V6.999h16L20.002 19H4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15 12H9v-2H7v4h10v-4h-2z\"}}]})(props);\n};\nexport function BiArea (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 5v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2zm16.002 14H5V5h14l.002 14z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15 12h2V7h-5v2h3zm-3 3H9v-3H7v5h5z\"}}]})(props);\n};\nexport function BiArrowBack (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 11H6.414l5.293-5.293-1.414-1.414L2.586 12l7.707 7.707 1.414-1.414L6.414 13H21z\"}}]})(props);\n};\nexport function BiArrowFromBottom (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 18h12v2H6zm6-14.414-6.707 6.707 1.414 1.414L11 7.414V16h2V7.414l4.293 4.293 1.414-1.414z\"}}]})(props);\n};\nexport function BiArrowFromLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 6h2v12H4zm4 7h8.586l-4.293 4.293 1.414 1.414L20.414 12l-6.707-6.707-1.414 1.414L16.586 11H8z\"}}]})(props);\n};\nexport function BiArrowFromRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 6h2v12h-2zm-2 5H7.414l4.293-4.293-1.414-1.414L3.586 12l6.707 6.707 1.414-1.414L7.414 13H16z\"}}]})(props);\n};\nexport function BiArrowFromTop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 4h12v2H6zm6 16.414 6.707-6.707-1.414-1.414L13 16.586V8h-2v8.586l-4.293-4.293-1.414 1.414z\"}}]})(props);\n};\nexport function BiArrowToBottom (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 18h12v2H6zm5-14v8.586L6.707 8.293 5.293 9.707 12 16.414l6.707-6.707-1.414-1.414L13 12.586V4z\"}}]})(props);\n};\nexport function BiArrowToLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 6h2v12H4zm10.293-.707L7.586 12l6.707 6.707 1.414-1.414L11.414 13H20v-2h-8.586l4.293-4.293z\"}}]})(props);\n};\nexport function BiArrowToRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 6h2v12h-2zM4 13h8.586l-4.293 4.293 1.414 1.414L16.414 12 9.707 5.293 8.293 6.707 12.586 11H4z\"}}]})(props);\n};\nexport function BiArrowToTop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 4h12v2H6zm.707 11.707L11 11.414V20h2v-8.586l4.293 4.293 1.414-1.414L12 7.586l-6.707 6.707z\"}}]})(props);\n};\nexport function BiAt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10c1.466 0 2.961-.371 4.442-1.104l-.885-1.793C14.353 19.698 13.156 20 12 20c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8v1c0 .692-.313 2-1.5 2-1.396 0-1.494-1.819-1.5-2V8h-2v.025A4.954 4.954 0 0 0 12 7c-2.757 0-5 2.243-5 5s2.243 5 5 5c1.45 0 2.748-.631 3.662-1.621.524.89 1.408 1.621 2.838 1.621 2.273 0 3.5-2.061 3.5-4v-1c0-5.514-4.486-10-10-10zm0 13c-1.654 0-3-1.346-3-3s1.346-3 3-3 3 1.346 3 3-1.346 3-3 3z\"}}]})(props);\n};\nexport function BiAtom (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3.102 20.898c.698.699 1.696 1.068 2.887 1.068 1.742 0 3.855-.778 6.012-2.127 2.156 1.35 4.27 2.127 6.012 2.127 1.19 0 2.188-.369 2.887-1.068 1.269-1.269 1.411-3.413.401-6.039-.358-.932-.854-1.895-1.457-2.859a16.792 16.792 0 0 0 1.457-2.859c1.01-2.626.867-4.771-.401-6.039-.698-.699-1.696-1.068-2.887-1.068-1.742 0-3.855.778-6.012 2.127-2.156-1.35-4.27-2.127-6.012-2.127-1.19 0-2.188.369-2.887 1.068C1.833 4.371 1.69 6.515 2.7 9.141c.359.932.854 1.895 1.457 2.859A16.792 16.792 0 0 0 2.7 14.859c-1.01 2.626-.867 4.77.402 6.039zm16.331-5.321c.689 1.79.708 3.251.052 3.907-.32.32-.815.482-1.473.482-1.167 0-2.646-.503-4.208-1.38a26.611 26.611 0 0 0 4.783-4.784c.336.601.623 1.196.846 1.775zM12 17.417a23.568 23.568 0 0 1-2.934-2.483A23.998 23.998 0 0 1 6.566 12 23.74 23.74 0 0 1 12 6.583a23.568 23.568 0 0 1 2.934 2.483 23.998 23.998 0 0 1 2.5 2.934A23.74 23.74 0 0 1 12 17.417zm6.012-13.383c.657 0 1.152.162 1.473.482.656.656.638 2.117-.052 3.907-.223.579-.51 1.174-.846 1.775a26.448 26.448 0 0 0-4.783-4.784c1.562-.876 3.041-1.38 4.208-1.38zM4.567 8.423c-.689-1.79-.708-3.251-.052-3.907.32-.32.815-.482 1.473-.482 1.167 0 2.646.503 4.208 1.38a26.448 26.448 0 0 0-4.783 4.784 13.934 13.934 0 0 1-.846-1.775zm0 7.154c.223-.579.51-1.174.846-1.775a26.448 26.448 0 0 0 4.783 4.784c-1.563.877-3.041 1.38-4.208 1.38-.657 0-1.152-.162-1.473-.482-.656-.656-.637-2.117.052-3.907z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"2.574\"}}]})(props);\n};\nexport function BiAward (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 8.999c0 1.902.765 3.627 2 4.89V21a.998.998 0 0 0 1.447.895L12 20.118l3.553 1.776a.992.992 0 0 0 .972-.043c.295-.183.475-.504.475-.851v-7.11a6.976 6.976 0 0 0 2-4.891C19 5.14 15.86 2 12 2S5 5.14 5 8.999zm7.447 9.106a1 1 0 0 0-.895 0L9 19.382v-4.067c.911.434 1.926.685 3 .685s2.089-.25 3-.685v4.066l-2.553-1.276zM12 4c2.756 0 5 2.242 5 4.999A5.006 5.006 0 0 1 12 14c-2.757 0-5-2.243-5-5.001A5.005 5.005 0 0 1 12 4z\"}}]})(props);\n};\nexport function BiBadgeCheck (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4.035 15.479A3.976 3.976 0 0 0 4 16c0 2.378 2.138 4.284 4.521 3.964C9.214 21.198 10.534 22 12 22s2.786-.802 3.479-2.036C17.857 20.284 20 18.378 20 16c0-.173-.012-.347-.035-.521C21.198 14.786 22 13.465 22 12s-.802-2.786-2.035-3.479C19.988 8.347 20 8.173 20 8c0-2.378-2.143-4.288-4.521-3.964C14.786 2.802 13.466 2 12 2s-2.786.802-3.479 2.036C6.138 3.712 4 5.622 4 8c0 .173.012.347.035.521C2.802 9.214 2 10.535 2 12s.802 2.786 2.035 3.479zm1.442-5.403 1.102-.293-.434-1.053A1.932 1.932 0 0 1 6 8c0-1.103.897-2 2-2 .247 0 .499.05.73.145l1.054.434.293-1.102a1.99 1.99 0 0 1 3.846 0l.293 1.102 1.054-.434C15.501 6.05 15.753 6 16 6c1.103 0 2 .897 2 2 0 .247-.05.5-.145.73l-.434 1.053 1.102.293a1.993 1.993 0 0 1 0 3.848l-1.102.293.434 1.053c.095.23.145.483.145.73 0 1.103-.897 2-2 2-.247 0-.499-.05-.73-.145l-1.054-.434-.293 1.102a1.99 1.99 0 0 1-3.846 0l-.293-1.102-1.054.434A1.935 1.935 0 0 1 8 18c-1.103 0-2-.897-2-2 0-.247.05-.5.145-.73l.434-1.053-1.102-.293a1.993 1.993 0 0 1 0-3.848z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m15.742 10.71-1.408-1.42-3.331 3.299-1.296-1.296-1.414 1.414 2.704 2.704z\"}}]})(props);\n};\nexport function BiBadge (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.965 8.521C19.988 8.347 20 8.173 20 8c0-2.378-2.143-4.288-4.521-3.964C14.786 2.802 13.466 2 12 2s-2.786.802-3.479 2.036C6.138 3.712 4 5.622 4 8c0 .173.012.347.035.521C2.802 9.214 2 10.535 2 12s.802 2.786 2.035 3.479A3.976 3.976 0 0 0 4 16c0 2.378 2.138 4.284 4.521 3.964C9.214 21.198 10.534 22 12 22s2.786-.802 3.479-2.036C17.857 20.284 20 18.378 20 16c0-.173-.012-.347-.035-.521C21.198 14.786 22 13.465 22 12s-.802-2.786-2.035-3.479zm-1.442 5.403-1.102.293.434 1.053c.095.23.145.483.145.73 0 1.103-.897 2-2 2-.247 0-.499-.05-.73-.145l-1.054-.434-.293 1.102a1.99 1.99 0 0 1-3.846 0l-.293-1.102-1.054.434A1.935 1.935 0 0 1 8 18c-1.103 0-2-.897-2-2 0-.247.05-.5.145-.73l.434-1.053-1.102-.293a1.993 1.993 0 0 1 0-3.848l1.102-.293-.434-1.053A1.932 1.932 0 0 1 6 8c0-1.103.897-2 2-2 .247 0 .499.05.73.145l1.054.434.293-1.102a1.99 1.99 0 0 1 3.846 0l.293 1.102 1.054-.434C15.501 6.05 15.753 6 16 6c1.103 0 2 .897 2 2 0 .247-.05.5-.145.73l-.434 1.053 1.102.293a1.993 1.993 0 0 1 0 3.848z\"}}]})(props);\n};\nexport function BiBaguette (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7.64 21.71a8 8 0 0 0 5.6-2.47l6-6c2.87-2.87 3.31-7.11 1-9.45s-6.58-1.91-9.45 1l-6 6c-2.87 2.87-3.31 7.11-1 9.45a5.38 5.38 0 0 0 3.85 1.47zm-2-9 2.78 2.79 1.42-1.42-2.79-2.79 1.41-1.41 2.83 2.83 1.42-1.42-2.83-2.83 1.41-1.41 2.83 2.83 1.42-1.42-2.79-2.78c2-1.61 4.65-1.87 6-.47s1.09 4.56-1 6.62l-6 6c-2.06 2.05-5.09 2.5-6.62 1s-1.06-4.07.55-6.08z\"}}]})(props);\n};\nexport function BiBall (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3.76 21a17.68 17.68 0 0 0 4 .43 13.89 13.89 0 0 0 9.93-3.69C23 12.37 21.06 4.11 21 3.76a1 1 0 0 0-.76-.76 17.91 17.91 0 0 0-4-.43 13.82 13.82 0 0 0-9.96 3.71C.94 11.63 2.94 19.89 3 20.24a1 1 0 0 0 .76.76zM7.7 7.7a11.86 11.86 0 0 1 8.49-3.1 17.57 17.57 0 0 1 3 .25c.31 1.87.91 7.67-2.86 11.44a11.91 11.91 0 0 1-8.55 3.11 17.16 17.16 0 0 1-2.93-.25c-.32-1.88-.92-7.67 2.85-11.45z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m7.29 15.29 1.42 1.42 1.79-1.79 1.79 1.79 1.42-1.42-1.8-1.79 1.59-1.59 1.79 1.8 1.42-1.42-1.8-1.79 1.8-1.79-1.42-1.42-1.79 1.8-1.79-1.8-1.42 1.42 1.8 1.79-1.59 1.59-1.79-1.8-1.42 1.42 1.8 1.79z\"}}]})(props);\n};\nexport function BiBandAid (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8.111 21.889a5.962 5.962 0 0 0 4.242-1.757l7.778-7.778a6.007 6.007 0 0 0 0-8.485 5.965 5.965 0 0 0-4.243-1.757 5.962 5.962 0 0 0-4.242 1.757l-7.778 7.778a6.007 6.007 0 0 0 0 8.485 5.965 5.965 0 0 0 4.243 1.757zm-2.829-8.828 7.778-7.778a3.976 3.976 0 0 1 2.828-1.171c1.069 0 2.073.416 2.829 1.171a4.006 4.006 0 0 1 0 5.657l-7.778 7.778a3.976 3.976 0 0 1-2.828 1.171 3.977 3.977 0 0 1-2.829-1.171 4.008 4.008 0 0 1 0-5.657z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"9\",\"cy\":\"12\",\"r\":\"1\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15\",\"cy\":\"12\",\"r\":\"1\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"15\",\"r\":\"1\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"9\",\"r\":\"1\"}}]})(props);\n};\nexport function BiBarChartAlt2 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 7h-4V4c0-1.103-.897-2-2-2h-4c-1.103 0-2 .897-2 2v5H4c-1.103 0-2 .897-2 2v9a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V9c0-1.103-.897-2-2-2zM4 11h4v8H4v-8zm6-1V4h4v15h-4v-9zm10 9h-4V9h4v10z\"}}]})(props);\n};\nexport function BiBarChartAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 6h2v11h-2zm4-3h2v14h-2zM9 9h2v8H9zM4 19h16v2H4zm1-7h2v5H5z\"}}]})(props);\n};\nexport function BiBarChartSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 5v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2zm16.001 14H5V5h14l.001 14z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 7h2v10h-2zm4 3h2v7h-2zm-8 2h2v5H7z\"}}]})(props);\n};\nexport function BiBarChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 6h2v14H9zm4 2h2v12h-2zm4-4h2v16h-2zM5 12h2v8H5z\"}}]})(props);\n};\nexport function BiBarcodeReader (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 7h2v10H5zm9 0h1v10h-1zm-4 0h3v10h-3zM8 7h1v10H8zm8 0h3v10h-3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M4 5h4V3H4c-1.103 0-2 .897-2 2v4h2V5zm0 16h4v-2H4v-4H2v4c0 1.103.897 2 2 2zM20 3h-4v2h4v4h2V5c0-1.103-.897-2-2-2zm0 16h-4v2h4c1.103 0 2-.897 2-2v-4h-2v4z\"}}]})(props);\n};\nexport function BiBarcode (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2zM4 18V6h16v12z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M6 8h2v8H6zm3 0h1v8H9zm8 0h1v8h-1zm-4 0h3v8h-3zm-2 0h1v8h-1z\"}}]})(props);\n};\nexport function BiBaseball (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.99 2a9.937 9.937 0 0 0-7.071 2.938c-3.898 3.898-3.898 10.243 0 14.143 1.895 1.895 4.405 2.938 7.071 2.938s5.177-1.043 7.071-2.938c3.899-3.899 3.899-10.244 0-14.143A9.937 9.937 0 0 0 11.99 2zm5.657 15.667a7.957 7.957 0 0 1-3.816 2.129l-.001-.037a6.199 6.199 0 0 1 .421-2.259l-1.863-.729a8.188 8.188 0 0 0-.552 3.239 7.953 7.953 0 0 1-5.503-2.344 7.965 7.965 0 0 1-2.332-5.503c.08.002.16.005.24.005a8.16 8.16 0 0 0 2.988-.558l-.73-1.862a6.156 6.156 0 0 1-2.281.412 7.936 7.936 0 0 1 2.115-3.809 7.963 7.963 0 0 1 3.972-2.168 5.974 5.974 0 0 1-.357 1.95l1.881.681a7.92 7.92 0 0 0 .482-2.701c0-.033-.004-.065-.005-.098 2.013.079 3.9.896 5.342 2.336a7.959 7.959 0 0 1 2.324 5.348 7.908 7.908 0 0 0-2.787.473l.684 1.88a5.91 5.91 0 0 1 1.935-.361 7.953 7.953 0 0 1-2.157 3.976z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14.112 14.13a7.599 7.599 0 0 0-.926 1.121l1.656 1.12c.2-.296.43-.574.683-.826a6.428 6.428 0 0 1 1.178-.929l-1.049-1.703a8.408 8.408 0 0 0-1.542 1.217zM8.456 8.474a5.713 5.713 0 0 1-.827.681l1.119 1.658a7.72 7.72 0 0 0 1.122-.926 8.501 8.501 0 0 0 1.217-1.542L9.384 7.297a6.519 6.519 0 0 1-.928 1.177z\"}}]})(props);\n};\nexport function BiBasket (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 9h-1.42l-3.712-6.496-1.736.992L17.277 9H6.723l3.146-5.504-1.737-.992L4.42 9H3a1.001 1.001 0 0 0-.965 1.263l2.799 10.264A2.005 2.005 0 0 0 6.764 22h10.473c.898 0 1.692-.605 1.93-1.475l2.799-10.263A.998.998 0 0 0 21 9zm-3.764 11v1-1H6.764L4.31 11h15.38l-2.454 9z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M9 13h2v5H9zm4 0h2v5h-2z\"}}]})(props);\n};\nexport function BiBasketball (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4.929 19.071c1.895 1.895 4.405 2.938 7.071 2.938s5.177-1.043 7.071-2.938c3.899-3.899 3.899-10.243 0-14.143C17.177 3.034 14.665 1.99 12 1.99S6.823 3.034 4.929 4.929c-3.899 3.898-3.899 10.243 0 14.142zm7.38-15.065a7.912 7.912 0 0 1 4.594 1.678L12 10.586l-1.46-1.46c1.161-1.479 1.792-3.308 1.769-5.12zM9.11 7.696 7.098 5.684a7.929 7.929 0 0 1 3.218-1.51c-.015 1.236-.445 2.477-1.206 3.522zM7.686 9.1a6.065 6.065 0 0 1-3.459 1.057 7.923 7.923 0 0 1 1.458-3.058L7.686 9.1zm-3.675 3.046c.077.002.154.014.231.014a8.05 8.05 0 0 0 4.877-1.626L10.586 12l-4.901 4.901a7.972 7.972 0 0 1-1.674-4.755zm12.294 2.745c1.042-.758 2.28-1.188 3.508-1.206a7.947 7.947 0 0 1-1.497 3.217l-2.011-2.011zm.597 3.425a7.935 7.935 0 0 1-3.059 1.47 6.05 6.05 0 0 1 1.057-3.472l2.002 2.002zm-5.044 1.686a7.922 7.922 0 0 1-4.761-1.686L12 13.414l1.463 1.463c-1.103 1.444-1.659 3.266-1.605 5.125zm8.124-8.31c-1.807-.018-3.633.61-5.108 1.768L13.414 12l4.901-4.901a7.968 7.968 0 0 1 1.667 4.593z\"}}]})(props);\n};\nexport function BiBath (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 10H7V7c0-1.103.897-2 2-2s2 .897 2 2h2c0-2.206-1.794-4-4-4S5 4.794 5 7v3H3a1 1 0 0 0-1 1v2c0 2.606 1.674 4.823 4 5.65V22h2v-3h8v3h2v-3.35c2.326-.827 4-3.044 4-5.65v-2a1 1 0 0 0-1-1zm-1 3c0 2.206-1.794 4-4 4H8c-2.206 0-4-1.794-4-4v-1h16v1z\"}}]})(props);\n};\nexport function BiBattery (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 18h14c1.103 0 2-.897 2-2v-2h2v-4h-2V8c0-1.103-.897-2-2-2H4c-1.103 0-2 .897-2 2v8c0 1.103.897 2 2 2zM4 8h14l.002 8H4V8z\"}}]})(props);\n};\nexport function BiBed (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 9.557V3h-2v2H6V3H4v6.557C2.81 10.25 2 11.525 2 13v4a1 1 0 0 0 1 1h1v4h2v-4h12v4h2v-4h1a1 1 0 0 0 1-1v-4c0-1.475-.811-2.75-2-3.443zM18 7v2h-5V7h5zM6 7h5v2H6V7zm14 9H4v-3c0-1.103.897-2 2-2h12c1.103 0 2 .897 2 2v3z\"}}]})(props);\n};\nexport function BiBeenHere (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C7.589 2 4 5.589 4 9.995c-.029 6.445 7.116 11.604 7.42 11.819a.998.998 0 0 0 1.16 0C12.884 21.599 20.029 16.44 20 10c0-4.411-3.589-8-8-8zm0 17.735C10.389 18.427 5.979 14.441 6 10c0-3.309 2.691-6 6-6s6 2.691 6 6.005c.021 4.437-4.388 8.423-6 9.73z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 11.586 8.707 9.293l-1.414 1.414L11 14.414l5.707-5.707-1.414-1.414z\"}}]})(props);\n};\nexport function BiBeer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 6h-2V4a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v15c0 1.654 1.346 3 3 3h10c1.654 0 3-1.346 3-3v-1h2c1.103 0 2-.897 2-2V8c0-1.103-.897-2-2-2zm-4 13c0 .551-.448 1-1 1H5c-.552 0-1-.449-1-1V5h12v14zm4-3h-2V8h2v8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M6 7h2v10H6zm6 0h2v10h-2z\"}}]})(props);\n};\nexport function BiBellMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.707 15.293 19 13.586V10c0-3.217-2.185-5.927-5.145-6.742C13.562 2.52 12.846 2 12 2s-1.562.52-1.855 1.258C7.185 4.074 5 6.783 5 10v3.586l-1.707 1.707A.996.996 0 0 0 3 16v2a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1v-2a.996.996 0 0 0-.293-.707zM19 17H5v-.586l1.707-1.707A.996.996 0 0 0 7 14v-4c0-2.757 2.243-5 5-5s5 2.243 5 5v4c0 .266.105.52.293.707L19 16.414V17zm-7 5a2.98 2.98 0 0 0 2.818-2H9.182A2.98 2.98 0 0 0 12 22z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M8.037 10h7.926v2H8.037z\"}}]})(props);\n};\nexport function BiBellOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 22a2.98 2.98 0 0 0 2.818-2H9.182A2.98 2.98 0 0 0 12 22zm9-4v-2a.996.996 0 0 0-.293-.707L19 13.586V10c0-3.217-2.185-5.927-5.145-6.742C13.562 2.52 12.846 2 12 2s-1.562.52-1.855 1.258c-1.323.364-2.463 1.128-3.346 2.127L3.707 2.293 2.293 3.707l18 18 1.414-1.414-1.362-1.362A.993.993 0 0 0 21 18zM12 5c2.757 0 5 2.243 5 5v4c0 .266.105.52.293.707L19 16.414V17h-.586L8.207 6.793C9.12 5.705 10.471 5 12 5zm-5.293 9.707A.996.996 0 0 0 7 14v-2.879L5.068 9.189C5.037 9.457 5 9.724 5 10v3.586l-1.707 1.707A.996.996 0 0 0 3 16v2a1 1 0 0 0 1 1h10.879l-2-2H5v-.586l1.707-1.707z\"}}]})(props);\n};\nexport function BiBellPlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 7.037h-2V10H8.037v2H11v2.963h2V12h2.963v-2H13z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 13.586V10c0-3.217-2.185-5.927-5.145-6.742C13.562 2.52 12.846 2 12 2s-1.562.52-1.855 1.258C7.185 4.074 5 6.783 5 10v3.586l-1.707 1.707A.996.996 0 0 0 3 16v2a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1v-2a.996.996 0 0 0-.293-.707L19 13.586zM19 17H5v-.586l1.707-1.707A.996.996 0 0 0 7 14v-4c0-2.757 2.243-5 5-5s5 2.243 5 5v4c0 .266.105.52.293.707L19 16.414V17zm-7 5a2.98 2.98 0 0 0 2.818-2H9.182A2.98 2.98 0 0 0 12 22z\"}}]})(props);\n};\nexport function BiBell (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 13.586V10c0-3.217-2.185-5.927-5.145-6.742C13.562 2.52 12.846 2 12 2s-1.562.52-1.855 1.258C7.185 4.074 5 6.783 5 10v3.586l-1.707 1.707A.996.996 0 0 0 3 16v2a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1v-2a.996.996 0 0 0-.293-.707L19 13.586zM19 17H5v-.586l1.707-1.707A.996.996 0 0 0 7 14v-4c0-2.757 2.243-5 5-5s5 2.243 5 5v4c0 .266.105.52.293.707L19 16.414V17zm-7 5a2.98 2.98 0 0 0 2.818-2H9.182A2.98 2.98 0 0 0 12 22z\"}}]})(props);\n};\nexport function BiBible (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 22h15v-2H6.012C5.55 19.988 5 19.805 5 19s.55-.988 1.012-1H21V4c0-1.103-.897-2-2-2H6c-1.206 0-3 .799-3 3v14c0 2.201 1.794 3 3 3zM5 8V5c0-.805.55-.988 1-1h13v12H5V8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 14h2v-4h2V8h-2V6h-2v2H9v2h2z\"}}]})(props);\n};\nexport function BiBitcoin (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8 13v4H6v2h3v2h2v-2h2v2h2v-2.051c1.968-.249 3.5-1.915 3.5-3.949 0-1.32-.65-2.484-1.64-3.213A3.982 3.982 0 0 0 18 9c0-1.858-1.279-3.411-3-3.858V3h-2v2h-2V3H9v2H6v2h2v6zm6.5 4H10v-4h4.5c1.103 0 2 .897 2 2s-.897 2-2 2zM10 7h4c1.103 0 2 .897 2 2s-.897 2-2 2h-4V7z\"}}]})(props);\n};\nexport function BiBlanket (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H7C4.243 2 2 4.243 2 7v10c0 2.757 2.243 5 5 5h12c1.654 0 3-1.346 3-3s-1.346-3-3-3H6v2h13a1 1 0 0 1 0 2H7c-1.654 0-3-1.346-3-3s1.346-3 3-3h13c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm0 10H7a4.973 4.973 0 0 0-3 1.002V7c0-1.654 1.346-3 3-3h13v8z\"}}]})(props);\n};\nexport function BiBlock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zM4 12c0-1.846.634-3.542 1.688-4.897l11.209 11.209A7.946 7.946 0 0 1 12 20c-4.411 0-8-3.589-8-8zm14.312 4.897L7.103 5.688A7.948 7.948 0 0 1 12 4c4.411 0 8 3.589 8 8a7.954 7.954 0 0 1-1.688 4.897z\"}}]})(props);\n};\nexport function BiBluetooth (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m4.41 16.192 1.18 1.615L10 14.584V21a1 1 0 0 0 1.541.841l7-4.5a.999.999 0 0 0 .049-1.649L13.537 12l5.053-3.692a1.002 1.002 0 0 0-.049-1.65l-7-4.5a1.002 1.002 0 0 0-1.021-.037c-.32.176-.52.513-.52.879v6.416L5.59 6.192 4.41 7.808 10 11.893v.215l-5.59 4.084zM12 4.832l4.232 2.721L12 10.646V4.832zm0 8.522 4.232 3.093L12 19.168v-5.814z\"}}]})(props);\n};\nexport function BiBody (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"4\",\"r\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15 22V9h5V7H4v2h5v13h2v-7h2v7z\"}}]})(props);\n};\nexport function BiBold (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.061 11.22A4.46 4.46 0 0 0 18 8.5C18 6.019 15.981 4 13.5 4H6v15h8c2.481 0 4.5-2.019 4.5-4.5a4.48 4.48 0 0 0-1.439-3.28zM13.5 7c.827 0 1.5.673 1.5 1.5s-.673 1.5-1.5 1.5H9V7h4.5zm.5 9H9v-3h5c.827 0 1.5.673 1.5 1.5S14.827 16 14 16z\"}}]})(props);\n};\nexport function BiBoltCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m13 6-6 7h4v5l6-7h-4z\"}}]})(props);\n};\nexport function BiBomb (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 3.001c-1.4 0-2.584 1.167-2.707 1.293L17.207 5.38l-1.091-1.088a.999.999 0 0 0-1.413.001L13.46 5.537A8.353 8.353 0 0 0 10.5 5C5.813 5 2 8.813 2 13.5S5.813 22 10.5 22s8.5-3.813 8.5-8.5c0-.909-.144-1.8-.428-2.658l1.345-1.345a1.002 1.002 0 0 0-.001-1.415l-1.293-1.29 1.088-1.088c.229-.229.845-.703 1.289-.703h1v-2h-1zm-4.511 7.978c.339.804.511 1.652.511 2.521 0 3.584-2.916 6.5-6.5 6.5S4 17.084 4 13.5 6.916 7 10.5 7c.96 0 1.89.21 2.762.624.381.181.837.103 1.136-.196l1.014-1.014 2.384 2.377-1.092 1.092a.998.998 0 0 0-.215 1.096z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M6 13.5a4.47 4.47 0 0 0 1.318 3.182l1.414-1.414C8.26 14.795 8 14.168 8 13.5s.26-1.295.732-1.768A2.484 2.484 0 0 1 10.5 11V9a4.469 4.469 0 0 0-3.182 1.318A4.47 4.47 0 0 0 6 13.5z\"}}]})(props);\n};\nexport function BiBone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.049 4.951a3.953 3.953 0 0 0-1.028-1.801c-1.51-1.51-4.146-1.51-5.656 0a4.009 4.009 0 0 0-.618 4.86l-3.714 3.714c-1.505-.89-3.591-.649-4.86.618a4.004 4.004 0 0 0 0 5.657 3.946 3.946 0 0 0 1.8 1.028c.178.681.53 1.302 1.028 1.8A3.966 3.966 0 0 0 8.829 22a3.973 3.973 0 0 0 2.828-1.172 4.007 4.007 0 0 0 .617-4.859l3.714-3.714c1.507.891 3.593.65 4.861-.619a4.003 4.003 0 0 0 0-5.656 3.942 3.942 0 0 0-1.8-1.029zm.387 5.271c-.756.755-2.073.756-2.829 0l-.707-.707-6.363 6.364.707.707a2.003 2.003 0 0 1 0 2.828c-.757.757-2.074.755-2.829 0a1.963 1.963 0 0 1-.571-1.31l-.047-.9-.9-.047a1.972 1.972 0 0 1-1.31-.571 2.003 2.003 0 0 1 0-2.829c.377-.377.879-.585 1.413-.585s1.036.208 1.414.585l.707.707 6.364-6.363-.707-.707a2.003 2.003 0 0 1 0-2.829c.756-.754 2.072-.754 2.828 0 .343.343.546.809.572 1.312l.048.897.897.048c.503.026.969.229 1.312.572.377.378.585.88.585 1.414s-.207 1.036-.584 1.414z\"}}]})(props);\n};\nexport function BiBong (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m19.293 8.293-2.069 2.069A7.017 7.017 0 0 0 15 8.681V4h1V2H8v2h1v4.681A7.01 7.01 0 0 0 5 15c0 3.859 3.141 7 7 7s7-3.141 7-7a6.958 6.958 0 0 0-.652-2.934l2.359-2.359-1.414-1.414zm-8.959 1.998.666-.235V4h2v6.056l.666.235A5.006 5.006 0 0 1 16.886 14H7.114a5.006 5.006 0 0 1 3.22-3.709zM12 20a5.007 5.007 0 0 1-4.898-4h9.797A5.009 5.009 0 0 1 12 20z\"}}]})(props);\n};\nexport function BiBookAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 8v11c0 2.201 1.794 3 3 3h15v-2H6.012C5.55 19.988 5 19.806 5 19c0-.101.009-.191.024-.273.112-.576.584-.717.988-.727H21V4c0-1.103-.897-2-2-2H6c-1.206 0-3 .799-3 3v3zm3-4h13v12H5V5c0-.806.55-.988 1-1z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 14h2v-3h3V9h-3V6h-2v3H8v2h3z\"}}]})(props);\n};\nexport function BiBookAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 2H6c-1.206 0-3 .799-3 3v14c0 2.201 1.794 3 3 3h15v-2H6.012C5.55 19.988 5 19.806 5 19s.55-.988 1.012-1H21V4c0-1.103-.897-2-2-2zm0 14H5V5c0-.806.55-.988 1-1h13v12z\"}}]})(props);\n};\nexport function BiBookBookmark (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 2.01H6c-1.206 0-3 .799-3 3v14c0 2.201 1.794 3 3 3h15v-2H6.012C5.55 19.998 5 19.815 5 19.01c0-.101.009-.191.024-.273.112-.575.583-.717.987-.727H20c.018 0 .031-.009.049-.01H21V4.01c0-1.103-.897-2-2-2zm0 14H5v-11c0-.806.55-.988 1-1h7v7l2-1 2 1v-7h2v12z\"}}]})(props);\n};\nexport function BiBookContent (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM4 19V5h7v14H4zm9 0V5h7l.001 14H13z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15 7h3v2h-3zm0 4h3v2h-3z\"}}]})(props);\n};\nexport function BiBookHeart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 8v11c0 2.201 1.794 3 3 3h15v-2H6.012C5.55 19.988 5 19.806 5 19s.55-.988 1.012-1H21V4c0-1.103-.897-2-2-2H6c-1.206 0-3 .799-3 3v3zm3-4h13v12H5V5c0-.806.55-.988 1-1z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m11.997 14 3.35-3.289a2.129 2.129 0 0 0 0-3.069 2.225 2.225 0 0 0-3.126 0l-.224.218-.224-.219a2.224 2.224 0 0 0-3.125 0 2.129 2.129 0 0 0 0 3.069L11.997 14z\"}}]})(props);\n};\nexport function BiBookOpen (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 3h-7a2.98 2.98 0 0 0-2 .78A2.98 2.98 0 0 0 10 3H3a1 1 0 0 0-1 1v15a1 1 0 0 0 1 1h5.758c.526 0 1.042.214 1.414.586l1.121 1.121c.009.009.021.012.03.021.086.079.182.149.294.196h.002a.996.996 0 0 0 .762 0h.002c.112-.047.208-.117.294-.196.009-.009.021-.012.03-.021l1.121-1.121A2.015 2.015 0 0 1 15.242 20H21a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zM8.758 18H4V5h6c.552 0 1 .449 1 1v12.689A4.032 4.032 0 0 0 8.758 18zM20 18h-4.758c-.799 0-1.584.246-2.242.689V6c0-.551.448-1 1-1h6v13z\"}}]})(props);\n};\nexport function BiBookReader (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 8c-.202 0-4.85.029-9 2.008C7.85 8.029 3.202 8 3 8a1 1 0 0 0-1 1v9.883a1 1 0 0 0 .305.719c.195.188.48.305.729.28l.127-.001c.683 0 4.296.098 8.416 2.025.016.008.034.005.05.011.119.049.244.083.373.083s.254-.034.374-.083c.016-.006.034-.003.05-.011 4.12-1.928 7.733-2.025 8.416-2.025l.127.001c.238.025.533-.092.729-.28.194-.189.304-.449.304-.719V9a1 1 0 0 0-1-1zM4 10.049c1.485.111 4.381.48 7 1.692v7.742c-3-1.175-5.59-1.494-7-1.576v-7.858zm16 7.858c-1.41.082-4 .401-7 1.576v-7.742c2.619-1.212 5.515-1.581 7-1.692v7.858z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"5\",\"r\":\"3\"}}]})(props);\n};\nexport function BiBook (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 22h15v-2H6.012C5.55 19.988 5 19.805 5 19s.55-.988 1.012-1H21V4c0-1.103-.897-2-2-2H6c-1.206 0-3 .799-3 3v14c0 2.201 1.794 3 3 3zM5 8V5c0-.805.55-.988 1-1h13v12H5V8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M8 6h9v2H8z\"}}]})(props);\n};\nexport function BiBookmarkAltMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.5 2h-12C4.57 2 3 3.57 3 5.5V22l7-3.5 7 3.5v-9h5V5.5C22 3.57 20.43 2 18.5 2zM15 18.764l-5-2.5-5 2.5V5.5C5 4.673 5.673 4 6.5 4h8.852A3.451 3.451 0 0 0 15 5.5v13.264zM20 11h-3V5.5c0-.827.673-1.5 1.5-1.5s1.5.673 1.5 1.5V11z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7 9h6v2H7z\"}}]})(props);\n};\nexport function BiBookmarkAltPlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.5 2h-12C4.57 2 3 3.57 3 5.5V22l7-3.5 7 3.5v-9h5V5.5C22 3.57 20.43 2 18.5 2zM15 18.764l-5-2.5-5 2.5V5.5C5 4.673 5.673 4 6.5 4h8.852A3.451 3.451 0 0 0 15 5.5v13.264zM20 11h-3V5.5c0-.827.673-1.5 1.5-1.5s1.5.673 1.5 1.5V11z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 7H9v2H7v2h2v2h2v-2h2V9h-2z\"}}]})(props);\n};\nexport function BiBookmarkAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.5 2h-12C4.57 2 3 3.57 3 5.5V22l7-3.5 7 3.5v-9h5V5.5C22 3.57 20.43 2 18.5 2zM15 18.764l-5-2.5-5 2.5V5.5C5 4.673 5.673 4 6.5 4h8.852A3.451 3.451 0 0 0 15 5.5v13.264zM20 11h-3V5.5c0-.827.673-1.5 1.5-1.5s1.5.673 1.5 1.5V11z\"}}]})(props);\n};\nexport function BiBookmarkHeart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 22V4c0-1.103-.897-2-2-2H6c-1.103 0-2 .897-2 2v18l8-4.572L20 22zM6 10V4h12v14.553l-6-3.428-6 3.428V10z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15.409 9.512c.361-.372.585-.888.585-1.456s-.223-1.083-.585-1.456a1.962 1.962 0 0 0-1.412-.603S13.001 5.994 12 7.026c-1.001-1.032-1.997-1.029-1.997-1.029-.552 0-1.051.23-1.412.603-.362.373-.585.887-.585 1.456s.223 1.084.585 1.456L12 13.203l3.409-3.691z\"}}]})(props);\n};\nexport function BiBookmarkMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8 9h8v2H8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 22V4c0-1.103-.897-2-2-2H6c-1.103 0-2 .897-2 2v18l8-4.572L20 22zM6 10V4h12v14.553l-6-3.428-6 3.428V10z\"}}]})(props);\n};\nexport function BiBookmarkPlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 14v-3h3V9h-3V6h-2v3H8v2h3v3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 22V4c0-1.103-.897-2-2-2H6c-1.103 0-2 .897-2 2v18l8-4.572L20 22zM6 10V4h12v14.553l-6-3.428-6 3.428V10z\"}}]})(props);\n};\nexport function BiBookmark (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 2H6c-1.103 0-2 .897-2 2v18l8-4.572L20 22V4c0-1.103-.897-2-2-2zm0 16.553-6-3.428-6 3.428V4h12v14.553z\"}}]})(props);\n};\nexport function BiBookmarks (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 5H6c-1.103 0-2 .897-2 2v16l6-3.601L16 23V7c0-1.103-.897-2-2-2zm0 14.467-4-2.399-4 2.399V7h8v12.467z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M18 1h-8c-1.103 0-2 .897-2 2h8c1.103 0 2 .897 2 2v10.443l2 2.489V3c0-1.103-.897-2-2-2z\"}}]})(props);\n};\nexport function BiBorderAll (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 21h12V3H3v18h6zm10-4v2h-6v-6h6v4zM15 5h4v6h-6V5h2zM5 7V5h6v6H5V7zm0 12v-6h6v6H5z\"}}]})(props);\n};\nexport function BiBorderBottom (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 7h2v2H3zm0 4h2v2H3zm0 4h2v2H3zM3 3h2v2H3zm8 0h2v2h-2zM7 3h2v2H7zm8 0h2v2h-2zm4 0h2v2h-2zm0 12h2v2h-2zm0-4h2v2h-2zm0-4h2v2h-2zm-4 4h2v2h-2zm-8 0h2v2H7zm4-4h2v2h-2zm0 8h2v2h-2zm0-4h2v2h-2zm6 8H3v2h18v-2h-2z\"}}]})(props);\n};\nexport function BiBorderInner (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 19h2v2h-2zM7 19h2v2H7zm8 0h2v2h-2zM3 19h2v2H3zm0-4h2v2H3zm0-8h2v2H3zm0-4h2v2H3zm12 0h2v2h-2zM7 3h2v2H7zm12 0h2v2h-2zm0 12h2v2h-2zm0-8h2v2h-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M5 13h6v8h2v-8h8v-2h-8V3h-2v8H3v2h1.93z\"}}]})(props);\n};\nexport function BiBorderLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 3h2v2h-2zm4 0h2v2h-2zM7 3h2v2H7zm12 0h2v2h-2zm0 8h2v2h-2zm0 4h2v2h-2zm0-8h2v2h-2zm0 12h2v2h-2zm-4 0h2v2h-2zm-8 0h2v2H7zm4 0h2v2h-2zm0-4h2v2h-2zm0-8h2v2h-2zm4 4h2v2h-2zm-8 0h2v2H7zm4 0h2v2h-2zM3 5v16h2V3H3z\"}}]})(props);\n};\nexport function BiBorderNone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 19h2v2h-2zm-8 0h2v2h-2zm4 0h2v2h-2zm-8 0h2v2H7zm-4 0h2v2H3zM3 7h2v2H3zm0 8h2v2H3zm0-4h2v2H3zm0-8h2v2H3zm4 0h2v2H7zm4 0h2v2h-2zm4 0h2v2h-2zm4 0h2v2h-2zm0 4h2v2h-2zm0 4h2v2h-2zm0 4h2v2h-2zm-8-8h2v2h-2zm0 8h2v2h-2zm-4-4h2v2H7zm8 0h2v2h-2zm-4 0h2v2h-2z\"}}]})(props);\n};\nexport function BiBorderOuter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 7h2v2h-2zm0 8h2v2h-2zm-4-4h2v2H7zm8 0h2v2h-2zm-4 0h2v2h-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H3v18h18V3h-2zm0 4v12H5V5h14v2z\"}}]})(props);\n};\nexport function BiBorderRadius (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 19h2v2h-2zM7 19h2v2H7zm8 0h2v2h-2zm-4 0h2v2h-2zm-8 0h2v2H3zm0-4h2v2H3zm0-8h2v2H3zm0 4h2v2H3zm0-8h2v2H3zm4 0h2v2H7zm12 12h2v2h-2zM16 3h-5v2h5c1.654 0 3 1.346 3 3v5h2V8c0-2.757-2.243-5-5-5z\"}}]})(props);\n};\nexport function BiBorderRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 19h2v2h-2zm-4 0h2v2h-2zm-4 0h2v2H7zm-4 0h2v2H3zM3 7h2v2H3zm0 8h2v2H3zm0-4h2v2H3zm0-8h2v2H3zm12 0h2v2h-2zm-4 0h2v2h-2zM7 3h2v2H7zm4 4h2v2h-2zm0 8h2v2h-2zm-4-4h2v2H7zm8 0h2v2h-2zm-4 0h2v2h-2zm8-6v16h2V3h-2z\"}}]})(props);\n};\nexport function BiBorderTop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 11h2v2h-2zm0 4h2v2h-2zm0-8h2v2h-2zm0 12h2v2h-2zm-8 0h2v2h-2zm4 0h2v2h-2zm-8 0h2v2H7zm-4 0h2v2H3zm0-8h2v2H3zm0 4h2v2H3zm0-8h2v2H3zm4 4h2v2H7zm8 0h2v2h-2zm-4-4h2v2h-2zm0 8h2v2h-2zm0-4h2v2h-2zm10-8H3v2h18z\"}}]})(props);\n};\nexport function BiBot (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.928 11.607c-.202-.488-.635-.605-.928-.633V8c0-1.103-.897-2-2-2h-6V4.61c.305-.274.5-.668.5-1.11a1.5 1.5 0 0 0-3 0c0 .442.195.836.5 1.11V6H5c-1.103 0-2 .897-2 2v2.997l-.082.006A1 1 0 0 0 1.99 12v2a1 1 0 0 0 1 1H3v5c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2v-5a1 1 0 0 0 1-1v-1.938a1.006 1.006 0 0 0-.072-.455zM5 20V8h14l.001 3.996L19 12v2l.001.005.001 5.995H5z\"}},{\"tag\":\"ellipse\",\"attr\":{\"cx\":\"8.5\",\"cy\":\"12\",\"rx\":\"1.5\",\"ry\":\"2\"}},{\"tag\":\"ellipse\",\"attr\":{\"cx\":\"15.5\",\"cy\":\"12\",\"rx\":\"1.5\",\"ry\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M8 16h8v2H8z\"}}]})(props);\n};\nexport function BiBowlHot (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 10H3a1 1 0 0 0-1 1 10 10 0 0 0 5 8.66V21a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1v-1.34A10 10 0 0 0 22 11a1 1 0 0 0-1-1zm-5.45 8.16a1 1 0 0 0-.55.9V20H9v-.94a1 1 0 0 0-.55-.9A8 8 0 0 1 4.06 12h15.88a8 8 0 0 1-4.39 6.16zM9 9V7.93a4.53 4.53 0 0 0-1.28-3.15A2.49 2.49 0 0 1 7 3V2H5v1a4.53 4.53 0 0 0 1.28 3.17A2.49 2.49 0 0 1 7 7.93V9zm4 0V7.93a4.53 4.53 0 0 0-1.28-3.15A2.49 2.49 0 0 1 11 3V2H9v1a4.53 4.53 0 0 0 1.28 3.15A2.49 2.49 0 0 1 11 7.93V9zm4 0V7.93a4.53 4.53 0 0 0-1.28-3.15A2.49 2.49 0 0 1 15 3V2h-2v1a4.53 4.53 0 0 0 1.28 3.15A2.49 2.49 0 0 1 15 7.93V9z\"}}]})(props);\n};\nexport function BiBowlRice (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 19.66V21a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1v-1.34A10 10 0 0 0 22 11a1 1 0 0 0-1-1 3.58 3.58 0 0 0-1.8-3 3.66 3.66 0 0 0-3.63-3.13 3.86 3.86 0 0 0-1 .13 3.7 3.7 0 0 0-5.11 0 3.86 3.86 0 0 0-1-.13A3.66 3.66 0 0 0 4.81 7 3.58 3.58 0 0 0 3 10a1 1 0 0 0-1 1 10 10 0 0 0 5 8.66zm-.89-11 .83-.26-.16-.9a1.64 1.64 0 0 1 1.66-1.62 1.78 1.78 0 0 1 .83.2l.81.45.5-.77a1.71 1.71 0 0 1 2.84 0l.5.77.81-.45a1.78 1.78 0 0 1 .83-.2 1.65 1.65 0 0 1 1.67 1.6l-.16.85.82.28A1.59 1.59 0 0 1 19 10H5a1.59 1.59 0 0 1 1.11-1.39zM19.94 12a8 8 0 0 1-4.39 6.16 1 1 0 0 0-.55.9V20H9v-.94a1 1 0 0 0-.55-.9A8 8 0 0 1 4.06 12z\"}}]})(props);\n};\nexport function BiBowlingBall (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"7.5\",\"cy\":\"10.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"10.5\",\"cy\":\"7.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"11.5\",\"cy\":\"11.5\",\"r\":\"1.5\"}}]})(props);\n};\nexport function BiBox (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4a2 2 0 0 0-2 2v2a2 2 0 0 0 1 1.72V19a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V8.72A2 2 0 0 0 22 7V5a2 2 0 0 0-2-2zM4 5h16v2H4zm1 14V9h14v10z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M8 11h8v2H8z\"}}]})(props);\n};\nexport function BiBracket (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 4V2H4v20h6v-2H6V4zm4 16v2h6V2h-6v2h4v16z\"}}]})(props);\n};\nexport function BiBraille (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"4\",\"cy\":\"7\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"9\",\"cy\":\"12\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15\",\"cy\":\"7\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15\",\"cy\":\"12\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15\",\"cy\":\"17\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"20\",\"cy\":\"7\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"4\",\"cy\":\"17\",\"r\":\"2\"}}]})(props);\n};\nexport function BiBrain (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.864 8.465a3.505 3.505 0 0 0-3.03-4.449A3.005 3.005 0 0 0 14 2a2.98 2.98 0 0 0-2 .78A2.98 2.98 0 0 0 10 2c-1.301 0-2.41.831-2.825 2.015a3.505 3.505 0 0 0-3.039 4.45A4.028 4.028 0 0 0 2 12c0 1.075.428 2.086 1.172 2.832A4.067 4.067 0 0 0 3 16c0 1.957 1.412 3.59 3.306 3.934A3.515 3.515 0 0 0 9.5 22c.979 0 1.864-.407 2.5-1.059A3.484 3.484 0 0 0 14.5 22a3.51 3.51 0 0 0 3.19-2.06 4.006 4.006 0 0 0 3.138-5.108A4.003 4.003 0 0 0 22 12a4.028 4.028 0 0 0-2.136-3.535zM9.5 20c-.711 0-1.33-.504-1.47-1.198L7.818 18H7c-1.103 0-2-.897-2-2 0-.352.085-.682.253-.981l.456-.816-.784-.51A2.019 2.019 0 0 1 4 12c0-.977.723-1.824 1.682-1.972l1.693-.26-1.059-1.346a1.502 1.502 0 0 1 1.498-2.39L9 6.207V5a1 1 0 0 1 2 0v13.5c0 .827-.673 1.5-1.5 1.5zm9.575-6.308-.784.51.456.816c.168.3.253.63.253.982 0 1.103-.897 2-2.05 2h-.818l-.162.802A1.502 1.502 0 0 1 14.5 20c-.827 0-1.5-.673-1.5-1.5V5c0-.552.448-1 1-1s1 .448 1 1.05v1.207l1.186-.225a1.502 1.502 0 0 1 1.498 2.39l-1.059 1.347 1.693.26A2.002 2.002 0 0 1 20 12c0 .683-.346 1.315-.925 1.692z\"}}]})(props);\n};\nexport function BiBriefcaseAlt2 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 6h-3V4c0-1.103-.897-2-2-2H9c-1.103 0-2 .897-2 2v2H4c-1.103 0-2 .897-2 2v11c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V8c0-1.103-.897-2-2-2zm-5-2v2H9V4h6zM4 8h16v4h-3v-2h-2v2H9v-2H7v2H4V8zm0 11v-5h3v2h2v-2h6v2h2v-2h3.001v5H4z\"}}]})(props);\n};\nexport function BiBriefcaseAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 6h-3V4c0-1.103-.897-2-2-2H9c-1.103 0-2 .897-2 2v2H4c-1.103 0-2 .897-2 2v11c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V8c0-1.103-.897-2-2-2zm-4 2v11H8V8h8zm-1-4v2H9V4h6zM4 8h2v11H4V8zm14 11V8h2l.001 11H18z\"}}]})(props);\n};\nexport function BiBriefcase (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 6h-3V4c0-1.103-.897-2-2-2H9c-1.103 0-2 .897-2 2v2H4c-1.103 0-2 .897-2 2v11c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V8c0-1.103-.897-2-2-2zm-5-2v2H9V4h6zM8 8h12v3H4V8h4zM4 19v-6h6v2h4v-2h6l.001 6H4z\"}}]})(props);\n};\nexport function BiBrightnessHalf (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.707 11.293-2-2L19 8.586V6a1 1 0 0 0-1-1h-2.586l-.707-.707-2-2a.999.999 0 0 0-1.414 0l-2 2L8.586 5H6a1 1 0 0 0-1 1v2.586l-.707.707-2 2a.999.999 0 0 0 0 1.414l2 2 .707.707V18a1 1 0 0 0 1 1h2.586l.707.707 2 2a.997.997 0 0 0 1.414 0l2-2 .707-.707H18a1 1 0 0 0 1-1v-2.586l.707-.707 2-2a.999.999 0 0 0 0-1.414zm-4.414 3-.293.293V17h-2.414l-.293.293-1 1L12 19.586l-1.293-1.293-1-1L9.414 17H7v-2.414l-.293-.293-1-1L4.414 12l1.293-1.293 1-1L7 9.414V7h2.414l.293-.293 1-1L12 4.414l1.293 1.293 1 1 .293.293H17v2.414l.293.293 1 1L19.586 12l-1.293 1.293-1 1z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 8v8c2.206 0 4-1.794 4-4s-1.794-4-4-4z\"}}]})(props);\n};\nexport function BiBrightness (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.707 9.293 19 8.586V6a1 1 0 0 0-1-1h-2.586l-.707-.707-2-2a.999.999 0 0 0-1.414 0l-2 2L8.586 5H6a1 1 0 0 0-1 1v2.586l-.707.707-2 2a.999.999 0 0 0 0 1.414l2 2 .707.707V18a1 1 0 0 0 1 1h2.586l.707.707 2 2a.997.997 0 0 0 1.414 0l2-2 .707-.707H18a1 1 0 0 0 1-1v-2.586l.707-.707 2-2a.999.999 0 0 0 0-1.414l-2-2zm-2.414 5-.293.293V17h-2.414l-.293.293-1 1L12 19.586l-1.293-1.293-1-1L9.414 17H7v-2.414l-.293-.293-1-1L4.414 12l1.293-1.293 1-1L7 9.414V7h2.414l.293-.293 1-1L12 4.414l1.293 1.293 1 1 .293.293H17v2.414l.293.293 1 1L19.586 12l-1.293 1.293-1 1z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 8c-2.206 0-4 1.794-4 4s1.794 4 4 4 4-1.794 4-4-1.794-4-4-4z\"}}]})(props);\n};\nexport function BiBroadcast (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m19.707 4.293-1.414 1.414c2.733 2.733 2.733 7.353 0 10.086l1.414 1.414c3.5-3.5 3.5-9.414 0-12.914zm-4.414 4.414c.566.566.879 1.292.879 2.043s-.313 1.477-.879 2.043l1.414 1.414c.944-.943 1.465-2.172 1.465-3.457s-.521-2.514-1.465-3.457l-1.414 1.414zm-9.086-3L4.793 4.293c-3.5 3.5-3.5 9.414 0 12.914l1.414-1.414c-2.733-2.733-2.733-7.353 0-10.086z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7.293 7.293c-.944.943-1.465 2.172-1.465 3.457s.521 2.514 1.465 3.457l1.414-1.414c-.566-.566-.879-1.292-.879-2.043s.313-1.477.879-2.043L7.293 7.293zM14 10.5a2 2 0 0 0-4 0 1.993 1.993 0 0 0 .895 1.666L10.002 22h3.996l-.893-9.835c.54-.358.895-.97.895-1.665z\"}}]})(props);\n};\nexport function BiBrushAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 8.001h-4V4.999a2.92 2.92 0 0 0-.874-2.108 2.943 2.943 0 0 0-2.39-.879C10.202 2.144 9 3.508 9 5.117V8H5c-1.103 0-2 .897-2 2v10c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2v-9.999c0-1.103-.897-2-2-2zM5 10h6V5.117c0-.57.407-1.07 1.002-1.117.266 0 .512.103.712.307a.956.956 0 0 1 .286.692V10h.995l.005.001h5V12H5v-2zm0 10v-6h14l.002 6H5z\"}}]})(props);\n};\nexport function BiBrush (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13.707 2.293a.999.999 0 0 0-1.414 0l-5.84 5.84c-.015-.001-.029-.009-.044-.009a.997.997 0 0 0-.707.293L4.288 9.831a2.985 2.985 0 0 0-.878 2.122c0 .802.313 1.556.879 2.121l.707.707-2.122 2.122A2.92 2.92 0 0 0 2 19.012a2.968 2.968 0 0 0 1.063 2.308c.519.439 1.188.68 1.885.68.834 0 1.654-.341 2.25-.937l2.04-2.039.707.706c1.134 1.133 3.109 1.134 4.242.001l1.415-1.414a.997.997 0 0 0 .293-.707c0-.026-.013-.05-.015-.076l5.827-5.827a.999.999 0 0 0 0-1.414l-8-8zm-.935 16.024a1.023 1.023 0 0 1-1.414-.001l-1.414-1.413a.999.999 0 0 0-1.414 0l-2.746 2.745a1.19 1.19 0 0 1-.836.352.91.91 0 0 1-.594-.208A.978.978 0 0 1 4 19.01a.959.959 0 0 1 .287-.692l2.829-2.829a.999.999 0 0 0 0-1.414L5.701 12.66a.99.99 0 0 1-.292-.706c0-.268.104-.519.293-.708l.707-.707 7.071 7.072-.708.706zm1.889-2.392L8.075 9.339 13 4.414 19.586 11l-4.925 4.925z\"}}]})(props);\n};\nexport function BiBugAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 9h6v2H9zm0 4h6v2H9z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m18 5.414 1.707-1.707-1.414-1.414-1.563 1.562C15.483 2.708 13.824 2 12 2s-3.483.708-4.73 1.855L5.707 2.293 4.293 3.707 6 5.414A6.937 6.937 0 0 0 5 9H3v2h2v2H3v2h2c0 3.86 3.141 7 7 7s7-3.14 7-7h2v-2h-2v-2h2V9h-2a6.937 6.937 0 0 0-1-3.586zM17 13v2c0 2.757-2.243 5-5 5s-5-2.243-5-5V9c0-2.757 2.243-5 5-5s5 2.243 5 5v4z\"}}]})(props);\n};\nexport function BiBug (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m16.895 6.519 2.813-2.812-1.414-1.414-2.846 2.846a6.575 6.575 0 0 0-.723-.454 5.778 5.778 0 0 0-5.45 0c-.25.132-.488.287-.722.453L5.707 2.293 4.293 3.707l2.813 2.812A8.473 8.473 0 0 0 5.756 9H2v2h2.307c-.065.495-.107.997-.107 1.5 0 .507.042 1.013.107 1.511H2v2h2.753c.013.039.021.08.034.118.188.555.421 1.093.695 1.6.044.081.095.155.141.234l-2.33 2.33 1.414 1.414 2.11-2.111a7.477 7.477 0 0 0 2.068 1.619c.479.253.982.449 1.496.58a6.515 6.515 0 0 0 3.237.001 6.812 6.812 0 0 0 1.496-.58c.465-.246.914-.55 1.333-.904.258-.218.5-.462.734-.716l2.111 2.111 1.414-1.414-2.33-2.33c.047-.08.098-.155.142-.236.273-.505.507-1.043.694-1.599.013-.039.021-.079.034-.118H22v-2h-2.308c.065-.499.107-1.004.107-1.511 0-.503-.042-1.005-.106-1.5H22V9h-3.756a8.494 8.494 0 0 0-1.349-2.481zM8.681 7.748c.445-.558.96-.993 1.528-1.294a3.773 3.773 0 0 1 3.581 0 4.894 4.894 0 0 1 1.53 1.295c.299.373.54.8.753 1.251H7.927c.214-.451.454-.879.754-1.252zM17.8 12.5c0 .522-.042 1.044-.126 1.553-.079.49-.199.973-.355 1.436a8.28 8.28 0 0 1-.559 1.288 7.59 7.59 0 0 1-.733 1.11c-.267.333-.56.636-.869.898-.31.261-.639.484-.979.664s-.695.317-1.057.41c-.04.01-.082.014-.122.023V14h-2v5.881c-.04-.009-.082-.013-.122-.023-.361-.093-.717-.23-1.057-.41s-.669-.403-.978-.664a6.462 6.462 0 0 1-.871-.899 7.402 7.402 0 0 1-.731-1.108 8.337 8.337 0 0 1-.56-1.289 9.075 9.075 0 0 1-.356-1.438A9.61 9.61 0 0 1 6.319 11H17.68c.079.491.12.995.12 1.5z\"}}]})(props);\n};\nexport function BiBuildingHouse (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 2H9c-1.103 0-2 .897-2 2v5.586l-4.707 4.707A1 1 0 0 0 3 16v5a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1V4c0-1.103-.897-2-2-2zm-8 18H5v-5.586l3-3 3 3V20zm8 0h-6v-4a.999.999 0 0 0 .707-1.707L9 9.586V4h10v16z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 6h2v2h-2zm4 0h2v2h-2zm0 4.031h2V12h-2zM15 14h2v2h-2zm-8 1h2v2H7z\"}}]})(props);\n};\nexport function BiBuilding (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 2H6c-1.103 0-2 .897-2 2v17a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V4c0-1.103-.897-2-2-2zm0 18H6V4h12v16z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M8 6h3v2H8zm5 0h3v2h-3zm-5 4h3v2H8zm5 .031h3V12h-3zM8 14h3v2H8zm5 0h3v2h-3z\"}}]})(props);\n};\nexport function BiBuildings (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 2H9c-1.103 0-2 .897-2 2v6H5c-1.103 0-2 .897-2 2v9a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1V4c0-1.103-.897-2-2-2zM5 12h6v8H5v-8zm14 8h-6v-8c0-1.103-.897-2-2-2H9V4h10v16z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 6h2v2h-2zm4 0h2v2h-2zm0 4.031h2V12h-2zM15 14h2v2h-2zm-8 .001h2v2H7z\"}}]})(props);\n};\nexport function BiBulb (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 20h6v2H9zm7.906-6.288C17.936 12.506 19 11.259 19 9c0-3.859-3.141-7-7-7S5 5.141 5 9c0 2.285 1.067 3.528 2.101 4.73.358.418.729.851 1.084 1.349.144.206.38.996.591 1.921H8v2h8v-2h-.774c.213-.927.45-1.719.593-1.925.352-.503.726-.94 1.087-1.363zm-2.724.213c-.434.617-.796 2.075-1.006 3.075h-2.351c-.209-1.002-.572-2.463-1.011-3.08a20.502 20.502 0 0 0-1.196-1.492C7.644 11.294 7 10.544 7 9c0-2.757 2.243-5 5-5s5 2.243 5 5c0 1.521-.643 2.274-1.615 3.413-.373.438-.796.933-1.203 1.512z\"}}]})(props);\n};\nexport function BiBullseye (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 6c-3.309 0-6 2.691-6 6s2.691 6 6 6 6-2.691 6-6-2.691-6-6-6zm0 10c-2.206 0-4-1.794-4-4s1.794-4 4-4 4 1.794 4 4-1.794 4-4 4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.579 2 2 6.579 2 12s4.579 10 10 10 10-4.579 10-10S17.421 2 12 2zm0 18c-4.337 0-8-3.663-8-8s3.663-8 8-8 8 3.663 8 8-3.663 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 10c-1.081 0-2 .919-2 2s.919 2 2 2 2-.919 2-2-.919-2-2-2z\"}}]})(props);\n};\nexport function BiBuoy (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm7.411 7H16v.031A5.037 5.037 0 0 0 14.969 8H15V4.589A8.039 8.039 0 0 1 19.411 9zM12 15c-1.654 0-3-1.346-3-3s1.346-3 3-3 3 1.346 3 3-1.346 3-3 3zm1-10.931v3.032a4.988 4.988 0 0 0-2 0V4.069c.328-.041.66-.069 1-.069s.672.028 1 .069zm-4 .52V8h.031A5.037 5.037 0 0 0 8 9.031V9H4.589C5.402 7 6.999 5.402 9 4.589zM4.069 11h3.032a4.995 4.995 0 0 0 .001 2H4.069C4.028 12.672 4 12.339 4 12s.028-.672.069-1zm.52 4H8v-.031c.284.381.621.718 1 1.005v3.437A8.039 8.039 0 0 1 4.589 15zM11 19.931v-3.032a4.988 4.988 0 0 0 2 0v3.032c-.328.041-.66.069-1 .069s-.672-.028-1-.069zm4-.52v-3.437a5.038 5.038 0 0 0 1-1.005V15h3.411A8.039 8.039 0 0 1 15 19.411zM19.931 13h-3.032a4.995 4.995 0 0 0-.001-2h3.032c.042.328.07.661.07 1s-.028.672-.069 1z\"}}]})(props);\n};\nexport function BiBusSchool (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.259 11.948A.986.986 0 0 0 22 11V8a.999.999 0 0 0-.996-.999V6H21c0-2.206-1.794-4-4-4H7C4.794 2 3 3.794 3 6v1a1 1 0 0 0-1 1v3c0 .461.317.832.742.948a3.953 3.953 0 0 0-.741 2.298l.004 3.757c.001.733.404 1.369.995 1.716V21a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1h12v1a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1.274a2.02 2.02 0 0 0 .421-.313c.377-.378.585-.881.584-1.415l-.004-3.759a3.966 3.966 0 0 0-.742-2.291zM5 18h-.995l-.004-3.757c-.001-.459.161-.89.443-1.243h15.111c.283.353.445.783.446 1.242L20.006 18H5zm6.004-10v3H5V8h6.004zM19 11h-5.996V8H19v3zM7 4h10c1.103 0 2 .897 2 2h-4V5H9v1H5c0-1.103.897-2 2-2z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"6.5\",\"cy\":\"15.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"17.5\",\"cy\":\"15.5\",\"r\":\"1.5\"}}]})(props);\n};\nexport function BiBus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.004 7.975V6c0-2.206-1.794-4-4-4h-10c-2.206 0-4 1.794-4 4v1.998l-.076.004A1 1 0 0 0 2 9v2a1 1 0 0 0 1 1h.004v6c0 .735.403 1.372.996 1.72V21a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1h10v1a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1.276A1.994 1.994 0 0 0 21.004 18v-6a1 1 0 0 0 1-1V9.062a1.006 1.006 0 0 0-.072-.455c-.203-.487-.635-.604-.928-.632zM19.006 18H5.004v-5h14.001l.001 5zM11.004 7v4h-6V7h6zm8 0v4h-6V7h6zm-12-3h10c.736 0 1.375.405 1.722 1H5.282c.347-.595.986-1 1.722-1z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"7.5\",\"cy\":\"15.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"16.5\",\"cy\":\"15.5\",\"r\":\"1.5\"}}]})(props);\n};\nexport function BiCabinet (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 4c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v16c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V4zM5 4h14v7H5V4zm0 16v-7h14.001v7H5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14 7h-4V6H8v3h8V6h-2zm0 8v1h-4v-1H8v3h8v-3z\"}}]})(props);\n};\nexport function BiCableCar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m2 9.76 9-2.45V10H7a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-8a2 2 0 0 0-2-2h-4V6.76l9-2.45V2.24L2 7.69zM11 12v3H7v-3zm6 0v8H7v-3h10v-2h-4v-3z\"}}]})(props);\n};\nexport function BiCake (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 5h-6V2h-2v3H5C3.346 5 2 6.346 2 8v10c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V8c0-1.654-1.346-3-3-3zM5 7h14a1 1 0 0 1 1 1l.001 3.12c-.896.228-1.469.734-1.916 1.132-.507.45-.842.748-1.588.748-.745 0-1.08-.298-1.587-.747-.595-.529-1.409-1.253-2.915-1.253-1.505 0-2.319.724-2.914 1.253-.507.45-.841.747-1.586.747-.743 0-1.077-.297-1.582-.747-.447-.398-1.018-.905-1.913-1.133V8a1 1 0 0 1 1-1zM4 18v-4.714c.191.123.374.274.583.461C5.178 14.276 5.991 15 7.495 15c1.505 0 2.319-.724 2.914-1.253.507-.45.841-.747 1.586-.747s1.08.298 1.587.747c.595.529 1.409 1.253 2.915 1.253s2.321-.724 2.916-1.253c.211-.188.395-.34.588-.464L20.002 18H4z\"}}]})(props);\n};\nexport function BiCalculator (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 2H5c-1.103 0-2 .897-2 2v16c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zM5 20V4h14l.001 16H5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7 12h2v2H7zm0 4h2v2H7zm4-4h2v2h-2zM7 6h10v4H7zm4 10h2v2h-2zm4-4h2v6h-2z\"}}]})(props);\n};\nexport function BiCalendarAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-2V2h-2v2H9V2H7v2H5a2 2 0 0 0-2 2zm16 14H5V8h14z\"}}]})(props);\n};\nexport function BiCalendarCheck (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 4h-2V2h-2v2H9V2H7v2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zm.002 16H5V8h14l.002 12z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m11 17.414 5.707-5.707-1.414-1.414L11 14.586l-2.293-2.293-1.414 1.414z\"}}]})(props);\n};\nexport function BiCalendarEdit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 4h-3V2h-2v2h-4V2H8v2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zM5 20V7h14V6l.002 14H5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m15.628 12.183-1.8-1.799 1.37-1.371 1.8 1.799zm-7.623 4.018V18h1.799l4.976-4.97-1.799-1.799z\"}}]})(props);\n};\nexport function BiCalendarEvent (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 12h6v6h-6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 4h-2V2h-2v2H9V2H7v2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zm.001 16H5V8h14l.001 12z\"}}]})(props);\n};\nexport function BiCalendarExclamation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 4h-2V2h-2v2H9V2H7v2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zm.002 16H5V8h14l.002 12z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 10h2v5h-2zm0 6h2v2h-2z\"}}]})(props);\n};\nexport function BiCalendarHeart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8.648 14.711 11.997 18l3.35-3.289a2.129 2.129 0 0 0 0-3.069 2.225 2.225 0 0 0-3.126 0l-.224.219-.224-.219a2.224 2.224 0 0 0-3.125 0 2.129 2.129 0 0 0 0 3.069z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 4h-2V2h-2v2H9V2H7v2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zm.002 16H5V8h14l.002 12z\"}}]})(props);\n};\nexport function BiCalendarMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8 13h8v2H8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 4h-2V2h-2v2H9V2H7v2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zm.002 16H5V8h14l.002 12z\"}}]})(props);\n};\nexport function BiCalendarPlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8 15h3v3h2v-3h3v-2h-3v-3h-2v3H8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 4h-2V2h-2v2H9V2H7v2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zm.002 16H5V8h14l.002 12z\"}}]})(props);\n};\nexport function BiCalendarStar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m9.981 14.811-.467 2.726 2.449-1.287 2.449 1.287-.468-2.726 1.982-1.932-2.738-.398L11.963 10l-1.225 2.481L8 12.879z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 4h-2V2h-2v2H9V2H7v2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zm.002 16H5V8h14l.002 12z\"}}]})(props);\n};\nexport function BiCalendarWeek (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 4h-3V2h-2v2h-4V2H8v2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zM5 20V7h14V6l.002 14H5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7 10v2h10V9H7z\"}}]})(props);\n};\nexport function BiCalendarX (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m8.293 16.293 1.414 1.414L12 15.414l2.293 2.293 1.414-1.414L13.414 14l2.293-2.293-1.414-1.414L12 12.586l-2.293-2.293-1.414 1.414L10.586 14z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 4h-2V2h-2v2H9V2H7v2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zm.002 16H5V8h14l.002 12z\"}}]})(props);\n};\nexport function BiCalendar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 11h2v2H7zm0 4h2v2H7zm4-4h2v2h-2zm0 4h2v2h-2zm4-4h2v2h-2zm0 4h2v2h-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M5 22h14c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2h-2V2h-2v2H9V2H7v2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2zM19 8l.001 12H5V8h14z\"}}]})(props);\n};\nexport function BiCameraHome (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.125 2H5.875A1.877 1.877 0 0 0 4 3.875v12.25C4 17.159 4.841 18 5.875 18H11v2H7v2h10v-2h-4v-2h5.125A1.877 1.877 0 0 0 20 16.125V3.875A1.877 1.877 0 0 0 18.125 2zM18 16H6V4h12v12z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 14c2.206 0 4-1.794 4-4s-1.794-4-4-4-4 1.794-4 4 1.794 4 4 4zm0-6c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2z\"}}]})(props);\n};\nexport function BiCameraMovie (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 11c0-.959-.68-1.761-1.581-1.954C16.779 8.445 17 7.75 17 7c0-2.206-1.794-4-4-4-1.517 0-2.821.857-3.5 2.104C8.821 3.857 7.517 3 6 3 3.794 3 2 4.794 2 7c0 .902.312 1.727.817 2.396A1.994 1.994 0 0 0 2 11v8c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2v-2.638l4 2v-7l-4 2V11zm-5-6c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2zM6 5c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2zM4 19v-8h12l.002 8H4z\"}}]})(props);\n};\nexport function BiCameraOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8.014 12.135c.074 2.062 1.789 3.777 3.851 3.851l-3.851-3.851z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M4 20h11.879l-2-2H4V8.121L2.144 6.265A1.976 1.976 0 0 0 2 7v11c0 1.103.897 2 2 2zM20 5h-2.586l-2.707-2.707A.996.996 0 0 0 14 2h-4a.997.997 0 0 0-.707.293L6.586 5h-.172L3.707 2.293 2.293 3.707l18 18 1.414-1.414-.626-.626A1.98 1.98 0 0 0 22 18V7c0-1.103-.897-2-2-2zm-6.081 7.505-2.424-2.425c.163-.046.331-.08.505-.08 1.065 0 2 .935 2 2 0 .174-.033.342-.081.505zm1.502 1.501A3.881 3.881 0 0 0 16 12c0-2.168-1.832-4-4-4-.729 0-1.412.22-2.007.579L7.914 6.5l2.5-2.5h3.172l2.707 2.707A.996.996 0 0 0 17 7l3-.001V18h-.586l-3.993-3.994z\"}}]})(props);\n};\nexport function BiCamera (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 8c-2.168 0-4 1.832-4 4s1.832 4 4 4 4-1.832 4-4-1.832-4-4-4zm0 6c-1.065 0-2-.935-2-2s.935-2 2-2 2 .935 2 2-.935 2-2 2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 5h-2.586l-2.707-2.707A.996.996 0 0 0 14 2h-4a.996.996 0 0 0-.707.293L6.586 5H4c-1.103 0-2 .897-2 2v11c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V7c0-1.103-.897-2-2-2zM4 18V7h3c.266 0 .52-.105.707-.293L10.414 4h3.172l2.707 2.707A.996.996 0 0 0 17 7h3l.002 11H4z\"}}]})(props);\n};\nexport function BiCandles (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 19h1v3h2v-3h1a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1H9V2H7v3H6a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1zM7 7h2v10H7zm7 10h1v3h2v-3h1a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1h-1V4h-2v3h-1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1zm1-8h2v6h-2z\"}}]})(props);\n};\nexport function BiCapsule (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8.999 20.133a4.969 4.969 0 0 0 3.536-1.465l7.134-7.133a5.007 5.007 0 0 0-.001-7.072C18.723 3.52 17.467 3 16.132 3s-2.591.52-3.534 1.464l-7.134 7.134a5.009 5.009 0 0 0 0 7.072 4.97 4.97 0 0 0 3.535 1.463zm5.013-14.255A2.979 2.979 0 0 1 16.132 5c.802 0 1.556.313 2.122.878a3.004 3.004 0 0 1 .001 4.243l-2.893 2.892L11.12 8.77l2.892-2.892zm-7.134 7.134 2.828-2.828 4.242 4.243-2.827 2.827c-1.133 1.133-3.11 1.132-4.243.001a3.005 3.005 0 0 1 0-4.243z\"}}]})(props);\n};\nexport function BiCaptions (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 10v4c0 1.103.897 2 2 2h3v-2H8v-4h3V8H8c-1.103 0-2 .897-2 2zm7 0v4c0 1.103.897 2 2 2h3v-2h-3v-4h3V8h-3c-1.103 0-2 .897-2 2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zM4 18V6h16l.002 12H4z\"}}]})(props);\n};\nexport function BiCar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m20.772 10.156-1.368-4.105A2.995 2.995 0 0 0 16.559 4H7.441a2.995 2.995 0 0 0-2.845 2.051l-1.368 4.105A2.003 2.003 0 0 0 2 12v5c0 .753.423 1.402 1.039 1.743-.013.066-.039.126-.039.195V21a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-2h12v2a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-2.062c0-.069-.026-.13-.039-.195A1.993 1.993 0 0 0 22 17v-5c0-.829-.508-1.541-1.228-1.844zM4 17v-5h16l.002 5H4zM7.441 6h9.117c.431 0 .813.274.949.684L18.613 10H5.387l1.105-3.316A1 1 0 0 1 7.441 6z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"6.5\",\"cy\":\"14.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"17.5\",\"cy\":\"14.5\",\"r\":\"1.5\"}}]})(props);\n};\nexport function BiCard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.999 17c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2h-12c-1.103 0-2 .897-2 2v10c0 1.103.897 2 2 2h12zm-12-12h12l.002 10H5.999V5zm-2 14h16v2h-16z\"}}]})(props);\n};\nexport function BiCaretDownCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m12 16 5-6H7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}}]})(props);\n};\nexport function BiCaretDownSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m12 16 5-6H7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM5 19V5h14l.002 14H5z\"}}]})(props);\n};\nexport function BiCaretDown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m11.998 17 7-8h-14z\"}}]})(props);\n};\nexport function BiCaretLeftCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 17V7l-6 5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}}]})(props);\n};\nexport function BiCaretLeftSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 17V7l-6 5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM5 19V5h14l.002 14H5z\"}}]})(props);\n};\nexport function BiCaretLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 19V5l-8 7z\"}}]})(props);\n};\nexport function BiCaretRightCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m10 17 6-5-6-5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}}]})(props);\n};\nexport function BiCaretRightSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m10 17 6-5-6-5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM5 19V5h14l.002 14H5z\"}}]})(props);\n};\nexport function BiCaretRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m9 19 8-7-8-7z\"}}]})(props);\n};\nexport function BiCaretUpCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 14h10l-5-6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}}]})(props);\n};\nexport function BiCaretUpSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 14h10l-5-6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM5 19V5h14l.002 14H5z\"}}]})(props);\n};\nexport function BiCaretUp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 15h14l-7-8z\"}}]})(props);\n};\nexport function BiCarousel (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 19h2c0 1.103.897 2 2 2h8c1.103 0 2-.897 2-2h2c1.103 0 2-.897 2-2V7c0-1.103-.897-2-2-2h-2c0-1.103-.897-2-2-2H8c-1.103 0-2 .897-2 2H4c-1.103 0-2 .897-2 2v10c0 1.103.897 2 2 2zM20 7v10h-2V7h2zM8 5h8l.001 14H8V5zM4 7h2v10H4V7z\"}}]})(props);\n};\nexport function BiCartAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"10.5\",\"cy\":\"19.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"17.5\",\"cy\":\"19.5\",\"r\":\"1.5\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13 13h2v-2.99h2.99v-2H15V5.03h-2v2.98h-2.99v2H13V13z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M10 17h8a1 1 0 0 0 .93-.64L21.76 9h-2.14l-2.31 6h-6.64L6.18 4.23A2 2 0 0 0 4.33 3H2v2h2.33l4.75 11.38A1 1 0 0 0 10 17z\"}}]})(props);\n};\nexport function BiCartAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 4H2v2h2.3l3.28 9a3 3 0 0 0 2.82 2H19v-2h-8.6a1 1 0 0 1-.94-.66L9 13h9.28a2 2 0 0 0 1.92-1.45L22 5.27A1 1 0 0 0 21.27 4 .84.84 0 0 0 21 4zm-2.75 7h-10L6.43 6h13.24z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"10.5\",\"cy\":\"19.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"16.5\",\"cy\":\"19.5\",\"r\":\"1.5\"}}]})(props);\n};\nexport function BiCartDownload (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"10.5\",\"cy\":\"19.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"17.5\",\"cy\":\"19.5\",\"r\":\"1.5\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m14 13.99 4-5h-3v-4h-2v4h-3l4 5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M17.31 15h-6.64L6.18 4.23A2 2 0 0 0 4.33 3H2v2h2.33l4.75 11.38A1 1 0 0 0 10 17h8a1 1 0 0 0 .93-.64L21.76 9h-2.14z\"}}]})(props);\n};\nexport function BiCart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.822 7.431A1 1 0 0 0 21 7H7.333L6.179 4.23A1.994 1.994 0 0 0 4.333 3H2v2h2.333l4.744 11.385A1 1 0 0 0 10 17h8c.417 0 .79-.259.937-.648l3-8a1 1 0 0 0-.115-.921zM17.307 15h-6.64l-2.5-6h11.39l-2.25 6z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"10.5\",\"cy\":\"19.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"17.5\",\"cy\":\"19.5\",\"r\":\"1.5\"}}]})(props);\n};\nexport function BiCast (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 21.001h2C13 14.935 8.065 10 2 10v2c4.962 0 9 4.038 9 9.001z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7 21.001h2C9 17.141 5.86 14 2 14v2c2.757 0 5 2.243 5 5.001z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"3.5\",\"cy\":\"19.5\",\"r\":\"1.5\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4c-1.103 0-2 .897-2 2v2.052c.68.025 1.349.094 2 .217V6h16v13h-5.269c.123.651.191 1.32.217 2H20c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2z\"}}]})(props);\n};\nexport function BiCategoryAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 3H4a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zM9 9H5V5h4v4zm11 4h-6a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1zm-1 6h-4v-4h4v4zM17 3c-2.206 0-4 1.794-4 4s1.794 4 4 4 4-1.794 4-4-1.794-4-4-4zm0 6c-1.103 0-2-.897-2-2s.897-2 2-2 2 .897 2 2-.897 2-2 2zM7 13c-2.206 0-4 1.794-4 4s1.794 4 4 4 4-1.794 4-4-1.794-4-4-4zm0 6c-1.103 0-2-.897-2-2s.897-2 2-2 2 .897 2 2-.897 2-2 2z\"}}]})(props);\n};\nexport function BiCategory (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 3H4a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zM9 9H5V5h4v4zm11-6h-6a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zm-1 6h-4V5h4v4zm-9 4H4a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1zm-1 6H5v-4h4v4zm8-6c-2.206 0-4 1.794-4 4s1.794 4 4 4 4-1.794 4-4-1.794-4-4-4zm0 6c-1.103 0-2-.897-2-2s.897-2 2-2 2 .897 2 2-.897 2-2 2z\"}}]})(props);\n};\nexport function BiCctv (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.916 9.564a.998.998 0 0 0-.513-1.316L7.328 2.492c-.995-.438-2.22.051-2.645 1.042l-2.21 5.154a2.001 2.001 0 0 0 1.052 2.624L9.563 13.9 8.323 17H4v-3H2v8h2v-3h4.323c.823 0 1.552-.494 1.856-1.258l1.222-3.054 5.205 2.23a1 1 0 0 0 1.31-.517l.312-.71 1.701.68 2-5-1.536-.613.523-1.194zm-4.434 5.126L4.313 9.475l2.208-5.152 12.162 5.354-2.201 5.013z\"}}]})(props);\n};\nexport function BiCertification (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2.06 14.68a1 1 0 0 0 .46.6l1.91 1.11v2.2a1 1 0 0 0 1 1h2.2l1.11 1.91a1 1 0 0 0 .86.5 1 1 0 0 0 .51-.14l1.9-1.1 1.91 1.1a1 1 0 0 0 1.37-.36l1.1-1.91h2.2a1 1 0 0 0 1-1v-2.2l1.91-1.11a1 1 0 0 0 .37-1.36L20.76 12l1.11-1.91a1 1 0 0 0-.37-1.36l-1.91-1.1v-2.2a1 1 0 0 0-1-1h-2.2l-1.1-1.91a1 1 0 0 0-.61-.46 1 1 0 0 0-.76.1L12 3.26l-1.9-1.1a1 1 0 0 0-1.36.36L7.63 4.43h-2.2a1 1 0 0 0-1 1v2.2l-1.9 1.1a1 1 0 0 0-.37 1.37l1.1 1.9-1.1 1.91a1 1 0 0 0-.1.77zm3.22-3.17L4.39 10l1.55-.9a1 1 0 0 0 .49-.86V6.43h1.78a1 1 0 0 0 .87-.5L10 4.39l1.54.89a1 1 0 0 0 1 0l1.55-.89.91 1.54a1 1 0 0 0 .87.5h1.77v1.78a1 1 0 0 0 .5.86l1.54.9-.89 1.54a1 1 0 0 0 0 1l.89 1.54-1.54.9a1 1 0 0 0-.5.86v1.78h-1.83a1 1 0 0 0-.86.5l-.89 1.54-1.55-.89a1 1 0 0 0-1 0l-1.51.89-.89-1.54a1 1 0 0 0-.87-.5H6.43v-1.78a1 1 0 0 0-.49-.81l-1.55-.9.89-1.54a1 1 0 0 0 0-1.05z\"}}]})(props);\n};\nexport function BiChair (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 13V4c0-1.103-.897-2-2-2H7c-1.103 0-2 .897-2 2v9a1 1 0 0 0-1 1v8h2v-5h12v5h2v-8a1 1 0 0 0-1-1zm-2-9v9h-2V4h2zm-4 0v9h-2V4h2zM7 4h2v9H7V4z\"}}]})(props);\n};\nexport function BiChalkboard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4c-1.103 0-2 .897-2 2v11c0 1.103.897 2 2 2h4l-1.8 2.4 1.6 1.2 2.7-3.6h3l2.7 3.6 1.6-1.2L16 18h4c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM4 16V5h16l.001 11H4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M6 12h4v2H6z\"}}]})(props);\n};\nexport function BiChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 21h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2zM5 5h14l.001 14H5V5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m13.553 11.658-4-2-2.448 4.895 1.79.894 1.552-3.105 4 2 2.448-4.895-1.79-.894z\"}}]})(props);\n};\nexport function BiChat (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 18v3.766l1.515-.909L11.277 18H16c1.103 0 2-.897 2-2V8c0-1.103-.897-2-2-2H4c-1.103 0-2 .897-2 2v8c0 1.103.897 2 2 2h1zM4 8h12v8h-5.277L7 18.234V16H4V8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H8c-1.103 0-2 .897-2 2h12c1.103 0 2 .897 2 2v8c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2z\"}}]})(props);\n};\nexport function BiCheckCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M9.999 13.587 7.7 11.292l-1.412 1.416 3.713 3.705 6.706-6.706-1.414-1.414z\"}}]})(props);\n};\nexport function BiCheckDouble (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m2.394 13.742 4.743 3.62 7.616-8.704-1.506-1.316-6.384 7.296-3.257-2.486zm19.359-5.084-1.506-1.316-6.369 7.279-.753-.602-1.25 1.562 2.247 1.798z\"}}]})(props);\n};\nexport function BiCheckShield (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.995 6.9a.998.998 0 0 0-.548-.795l-8-4a1 1 0 0 0-.895 0l-8 4a1.002 1.002 0 0 0-.547.795c-.011.107-.961 10.767 8.589 15.014a.987.987 0 0 0 .812 0c9.55-4.247 8.6-14.906 8.589-15.014zM12 19.897C5.231 16.625 4.911 9.642 4.966 7.635L12 4.118l7.029 3.515c.037 1.989-.328 9.018-7.029 12.264z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m11 12.586-2.293-2.293-1.414 1.414L11 15.414l5.707-5.707-1.414-1.414z\"}}]})(props);\n};\nexport function BiCheckSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m10.933 13.519-2.226-2.226-1.414 1.414 3.774 3.774 5.702-6.84-1.538-1.282z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM5 19V5h14l.002 14H5z\"}}]})(props);\n};\nexport function BiCheck (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m10 15.586-3.293-3.293-1.414 1.414L10 18.414l9.707-9.707-1.414-1.414z\"}}]})(props);\n};\nexport function BiCheckboxChecked (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 5c-1.103 0-2 .897-2 2v10c0 1.103.897 2 2 2h10c1.103 0 2-.897 2-2V7c0-1.103-.897-2-2-2H7zm0 12V7h10l.002 10H7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M10.996 12.556 9.7 11.285l-1.4 1.43 2.704 2.647 4.699-4.651-1.406-1.422z\"}}]})(props);\n};\nexport function BiCheckboxMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9.01 11h6v2h-6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M17 5H7a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2zM7 17V7h10v10z\"}}]})(props);\n};\nexport function BiCheckboxSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 9h6v6H9z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 17V7c0-1.103-.897-2-2-2H7c-1.103 0-2 .897-2 2v10c0 1.103.897 2 2 2h10c1.103 0 2-.897 2-2zM7 7h10l.002 10H7V7z\"}}]})(props);\n};\nexport function BiCheckbox (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 5c-1.103 0-2 .897-2 2v10c0 1.103.897 2 2 2h10c1.103 0 2-.897 2-2V7c0-1.103-.897-2-2-2H7zm0 12V7h10l.002 10H7z\"}}]})(props);\n};\nexport function BiCheese (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.16 2a1 1 0 0 0-.66.13l-12 7a.64.64 0 0 0-.13.1l-.1.08a1.17 1.17 0 0 0-.17.26.84.84 0 0 0-.1.43v10a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V10a8.08 8.08 0 0 0-6.84-8zm0 2.05A6.07 6.07 0 0 1 19.93 9H6.7zM20 19H4v-8h16z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"6.5\",\"cy\":\"16.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"11.5\",\"cy\":\"13.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"17\",\"cy\":\"16\",\"r\":\"2\"}}]})(props);\n};\nexport function BiChevronDownCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 13.586 7.707 9.293l-1.414 1.414L12 16.414l5.707-5.707-1.414-1.414z\"}}]})(props);\n};\nexport function BiChevronDownSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 21h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2zM5 5h14l.001 14H5V5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 13.586 7.707 9.293l-1.414 1.414L12 16.414l5.707-5.707-1.414-1.414z\"}}]})(props);\n};\nexport function BiChevronDown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.293 9.293 12 13.586 7.707 9.293l-1.414 1.414L12 16.414l5.707-5.707z\"}}]})(props);\n};\nexport function BiChevronLeftCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13.293 6.293 7.586 12l5.707 5.707 1.414-1.414L10.414 12l4.293-4.293z\"}}]})(props);\n};\nexport function BiChevronLeftSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 21h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2zM5 5h14l.001 14H5V5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13.293 6.293 7.586 12l5.707 5.707 1.414-1.414L10.414 12l4.293-4.293z\"}}]})(props);\n};\nexport function BiChevronLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13.293 6.293 7.586 12l5.707 5.707 1.414-1.414L10.414 12l4.293-4.293z\"}}]})(props);\n};\nexport function BiChevronRightCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M9.293 7.707 13.586 12l-4.293 4.293 1.414 1.414L16.414 12l-5.707-5.707z\"}}]})(props);\n};\nexport function BiChevronRightSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 21h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2zM5 5h14l.001 14H5V5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M9.293 7.707 13.586 12l-4.293 4.293 1.414 1.414L16.414 12l-5.707-5.707z\"}}]})(props);\n};\nexport function BiChevronRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10.707 17.707 16.414 12l-5.707-5.707-1.414 1.414L13.586 12l-4.293 4.293z\"}}]})(props);\n};\nexport function BiChevronUpCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m6.293 13.293 1.414 1.414L12 10.414l4.293 4.293 1.414-1.414L12 7.586z\"}}]})(props);\n};\nexport function BiChevronUpSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 21h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2zM5 5h14l.001 14H5V5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m6.293 13.293 1.414 1.414L12 10.414l4.293 4.293 1.414-1.414L12 7.586z\"}}]})(props);\n};\nexport function BiChevronUp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m6.293 13.293 1.414 1.414L12 10.414l4.293 4.293 1.414-1.414L12 7.586z\"}}]})(props);\n};\nexport function BiChevronsDown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m12 15.586-4.293-4.293-1.414 1.414L12 18.414l5.707-5.707-1.414-1.414z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m17.707 7.707-1.414-1.414L12 10.586 7.707 6.293 6.293 7.707 12 13.414z\"}}]})(props);\n};\nexport function BiChevronsLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m12.707 7.707-1.414-1.414L5.586 12l5.707 5.707 1.414-1.414L8.414 12z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M16.293 6.293 10.586 12l5.707 5.707 1.414-1.414L13.414 12l4.293-4.293z\"}}]})(props);\n};\nexport function BiChevronsRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10.296 7.71 14.621 12l-4.325 4.29 1.408 1.42L17.461 12l-5.757-5.71z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M6.704 6.29 5.296 7.71 9.621 12l-4.325 4.29 1.408 1.42L12.461 12z\"}}]})(props);\n};\nexport function BiChevronsUp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m6.293 11.293 1.414 1.414L12 8.414l4.293 4.293 1.414-1.414L12 5.586z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m6.293 16.293 1.414 1.414L12 13.414l4.293 4.293 1.414-1.414L12 10.586z\"}}]})(props);\n};\nexport function BiChild (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"6\",\"r\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14 9h-4a1 1 0 0 0-.8.4l-3 4 1.6 1.2L9 13v7h2v-4h2v4h2v-7l1.2 1.6 1.6-1.2-3-4A1 1 0 0 0 14 9z\"}}]})(props);\n};\nexport function BiChip (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 9h6v6H9z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 6c0-1.103-.897-2-2-2h-2V2h-2v2h-4V2H8v2H6c-1.103 0-2 .897-2 2v2H2v2h2v4H2v2h2v2c0 1.103.897 2 2 2h2v2h2v-2h4v2h2v-2h2c1.103 0 2-.897 2-2v-2h2v-2h-2v-4h2V8h-2V6zM6 18V6h12l.002 12H6z\"}}]})(props);\n};\nexport function BiChurch (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.447 14.105 18 12.382V12a1 1 0 0 0-.485-.857L13 8.434V6h2V4h-2V2h-2v2H9v2h2v2.434l-4.515 2.709A1 1 0 0 0 6 12v.382l-3.447 1.724A.998.998 0 0 0 2 15v6a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1v-6c0-.379-.214-.725-.553-.895zM4 15.618l2-1V20H4v-4.382zM12 15a2 2 0 0 0-2 2v3H8v-7.434l4-2.4 4 2.4V20h-2v-3a2 2 0 0 0-2-2zm8 5h-2v-5.382l2 1V20z\"}}]})(props);\n};\nexport function BiCircleHalf (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2h-1v20h1a10 10 0 0 0 0-20zm1 17.94V4.06a8 8 0 0 1 0 15.88z\"}}]})(props);\n};\nexport function BiCircleQuarter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2h-1v11h11v-1A10 10 0 0 0 12 2zm1 9V4.06A8 8 0 0 1 19.94 11z\"}}]})(props);\n};\nexport function BiCircleThreeQuarter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2h-1v9H2v1a10 10 0 0 0 17.07 7.07A10 10 0 0 0 12 2zm5.66 15.66A8 8 0 0 1 4.06 13H13V4.06a8 8 0 0 1 4.66 13.6z\"}}]})(props);\n};\nexport function BiCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12c.001 5.515 4.487 10.001 10 10.001 5.514 0 10-4.486 10.001-10.001 0-5.514-4.486-10-10.001-10zm0 18.001c-4.41 0-7.999-3.589-8-8.001 0-4.411 3.589-8 8-8 4.412 0 8.001 3.589 8.001 8-.001 4.412-3.59 8.001-8.001 8.001z\"}}]})(props);\n};\nexport function BiClinic (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.707 2.293a.999.999 0 0 0-1.414 0l-9 9A1 1 0 0 0 3 13h1v7c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2v-7h1a.999.999 0 0 0 .707-1.707l-9-9zM18.001 20H6v-9.586l6-6 6 6V15l.001 5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13 10h-2v3H8v2h3v3h2v-3h3v-2h-3z\"}}]})(props);\n};\nexport function BiClipboard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3h-2.25a1 1 0 0 0-1-1h-7.5a1 1 0 0 0-1 1H5c-1.103 0-2 .897-2 2v15c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zm0 17H5V5h2v2h10V5h2v15z\"}}]})(props);\n};\nexport function BiCloset (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 10.551v-.678A4.005 4.005 0 0 0 16 6c0-2.206-1.794-4-4-4S8 3.794 8 6h2c0-1.103.897-2 2-2s2 .897 2 2-.897 2-2 2a1 1 0 0 0-1 1v1.551l-8.665 7.702A1.001 1.001 0 0 0 3 20h18a1.001 1.001 0 0 0 .664-1.748L13 10.551zM5.63 18 12 12.338 18.37 18H5.63z\"}}]})(props);\n};\nexport function BiCloudDownload (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.948 11.112C18.511 7.67 15.563 5 12.004 5c-2.756 0-5.15 1.611-6.243 4.15-2.148.642-3.757 2.67-3.757 4.85 0 2.757 2.243 5 5 5h1v-2h-1c-1.654 0-3-1.346-3-3 0-1.404 1.199-2.757 2.673-3.016l.581-.102.192-.558C8.153 8.273 9.898 7 12.004 7c2.757 0 5 2.243 5 5v1h1c1.103 0 2 .897 2 2s-.897 2-2 2h-2v2h2c2.206 0 4-1.794 4-4a4.008 4.008 0 0 0-3.056-3.888z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13.004 14v-4h-2v4h-3l4 5 4-5z\"}}]})(props);\n};\nexport function BiCloudDrizzle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8 13h2v3H8zm0 4h2v3H8zm3-2h2v3h-2zm0 4h2v3h-2zm3-6h2v3h-2zm0 4h2v3h-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M18.944 10.112C18.507 6.67 15.56 4 12 4 9.245 4 6.85 5.611 5.757 8.15 3.609 8.792 2 10.819 2 13c0 2.757 2.243 5 5 5v-2c-1.654 0-3-1.346-3-3 0-1.403 1.199-2.756 2.673-3.015l.582-.103.191-.559C8.149 7.273 9.895 6 12 6c2.757 0 5 2.243 5 5v1h1c1.103 0 2 .897 2 2s-.897 2-2 2h-1v2h1c2.206 0 4-1.794 4-4a4.008 4.008 0 0 0-3.056-3.888z\"}}]})(props);\n};\nexport function BiCloudLightRain (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8 13h2v4H8zm0 5h2v2H8zm3-3h2v4h-2zm0 5h2v2h-2zm3-7h2v4h-2zm0 5h2v2h-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M18.944 10.112C18.507 6.67 15.56 4 12 4 9.244 4 6.85 5.611 5.757 8.15 3.609 8.792 2 10.819 2 13c0 2.757 2.243 5 5 5v-2c-1.654 0-3-1.346-3-3 0-1.403 1.199-2.756 2.673-3.015l.581-.103.192-.559C8.149 7.273 9.895 6 12 6c2.757 0 5 2.243 5 5v1h1c1.103 0 2 .897 2 2s-.897 2-2 2h-1v2h1c2.206 0 4-1.794 4-4a4.008 4.008 0 0 0-3.056-3.888z\"}}]})(props);\n};\nexport function BiCloudLightning (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m10 13-1 5h2v4l3.975-6H13l1-3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M18.944 10.112C18.507 6.67 15.56 4 12 4 9.244 4 6.85 5.611 5.757 8.15 3.609 8.792 2 10.819 2 13c0 2.757 2.243 5 5 5v-2c-1.654 0-3-1.346-3-3 0-1.403 1.199-2.756 2.673-3.015l.581-.103.192-.559C8.149 7.273 9.895 6 12 6c2.757 0 5 2.243 5 5v1h1c1.103 0 2 .897 2 2s-.897 2-2 2h-1v2h1c2.206 0 4-1.794 4-4a4.008 4.008 0 0 0-3.056-3.888z\"}}]})(props);\n};\nexport function BiCloudRain (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8 13h2v7H8zm3 2h2v7h-2zm3-2h2v7h-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M18.944 10.113C18.507 6.671 15.56 4.001 12 4.001c-2.756 0-5.15 1.611-6.243 4.15C3.609 8.793 2 10.82 2 13.001c0 2.757 2.243 5 5 5v-2c-1.654 0-3-1.346-3-3 0-1.403 1.199-2.756 2.673-3.015l.581-.103.192-.559C8.149 7.274 9.895 6.001 12 6.001c2.757 0 5 2.243 5 5v1h1c1.103 0 2 .897 2 2s-.897 2-2 2h-1v2h1c2.206 0 4-1.794 4-4a4.008 4.008 0 0 0-3.056-3.888z\"}}]})(props);\n};\nexport function BiCloudSnow (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.944 10.112C18.507 6.67 15.56 4 12 4 9.244 4 6.85 5.611 5.757 8.15 3.609 8.792 2 10.819 2 13c0 2.757 2.243 5 5 5v-2c-1.654 0-3-1.346-3-3 0-1.403 1.199-2.756 2.673-3.015l.581-.103.192-.559C8.149 7.273 9.895 6 12 6c2.757 0 5 2.243 5 5v1h1c1.103 0 2 .897 2 2s-.897 2-2 2h-1v2h1c2.206 0 4-1.794 4-4a4.008 4.008 0 0 0-3.056-3.888z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15\",\"cy\":\"16\",\"r\":\"1\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15\",\"cy\":\"19\",\"r\":\"1\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"18\",\"r\":\"1\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"21\",\"r\":\"1\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"9\",\"cy\":\"19\",\"r\":\"1\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"9\",\"cy\":\"16\",\"r\":\"1\"}}]})(props);\n};\nexport function BiCloudUpload (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 19v-4h3l-4-5-4 5h3v4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7 19h2v-2H7c-1.654 0-3-1.346-3-3 0-1.404 1.199-2.756 2.673-3.015l.581-.102.192-.558C8.149 8.274 9.895 7 12 7c2.757 0 5 2.243 5 5v1h1c1.103 0 2 .897 2 2s-.897 2-2 2h-3v2h3c2.206 0 4-1.794 4-4a4.01 4.01 0 0 0-3.056-3.888C18.507 7.67 15.56 5 12 5 9.244 5 6.85 6.611 5.757 9.15 3.609 9.792 2 11.82 2 14c0 2.757 2.243 5 5 5z\"}}]})(props);\n};\nexport function BiCloud (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.944 11.112C18.507 7.67 15.56 5 12 5 9.244 5 6.85 6.611 5.757 9.15 3.609 9.792 2 11.82 2 14c0 2.757 2.243 5 5 5h11c2.206 0 4-1.794 4-4a4.01 4.01 0 0 0-3.056-3.888zM18 17H7c-1.654 0-3-1.346-3-3 0-1.404 1.199-2.756 2.673-3.015l.581-.102.192-.558C8.149 8.274 9.895 7 12 7c2.757 0 5 2.243 5 5v1h1c1.103 0 2 .897 2 2s-.897 2-2 2z\"}}]})(props);\n};\nexport function BiCodeAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m7.375 16.781 1.25-1.562L4.601 12l4.024-3.219-1.25-1.562-5 4a1 1 0 0 0 0 1.562l5 4zm9.25-9.562-1.25 1.562L19.399 12l-4.024 3.219 1.25 1.562 5-4a1 1 0 0 0 0-1.562l-5-4zm-1.649-4.003-4 18-1.953-.434 4-18z\"}}]})(props);\n};\nexport function BiCodeBlock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM4 19V7h16l.002 12H4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M9.293 9.293 5.586 13l3.707 3.707 1.414-1.414L8.414 13l2.293-2.293zm5.414 0-1.414 1.414L15.586 13l-2.293 2.293 1.414 1.414L18.414 13z\"}}]})(props);\n};\nexport function BiCodeCurly (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 22h1v-2h-.989C8.703 19.994 6 19.827 6 16c0-1.993-.665-3.246-1.502-4C5.335 11.246 6 9.993 6 8c0-3.827 2.703-3.994 3-4h1V2H8.998C7.269 2.004 4 3.264 4 8c0 2.8-1.678 2.99-2.014 3L2 13c.082 0 2 .034 2 3 0 4.736 3.269 5.996 5 6zm13-11c-.082 0-2-.034-2-3 0-4.736-3.269-5.996-5-6h-1v2h.989c.308.006 3.011.173 3.011 4 0 1.993.665 3.246 1.502 4-.837.754-1.502 2.007-1.502 4 0 3.827-2.703 3.994-3 4h-1v2h1.002C16.731 21.996 20 20.736 20 16c0-2.8 1.678-2.99 2.014-3L22 11z\"}}]})(props);\n};\nexport function BiCode (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8.293 6.293 2.586 12l5.707 5.707 1.414-1.414L5.414 12l4.293-4.293zm7.414 11.414L21.414 12l-5.707-5.707-1.414 1.414L18.586 12l-4.293 4.293z\"}}]})(props);\n};\nexport function BiCoffeeTogo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 22h10a1 1 0 0 0 .99-.858L19.867 8H21V6h-1.382l-1.724-3.447A.998.998 0 0 0 17 2H7c-.379 0-.725.214-.895.553L4.382 6H3v2h1.133L6.01 21.142A1 1 0 0 0 7 22zm10.418-11H6.582l-.429-3h11.693l-.428 3zm-9.551 9-.429-3h9.123l-.429 3H7.867zM7.618 4h8.764l1 2H6.618l1-2z\"}}]})(props);\n};\nexport function BiCoffee (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 2h2v3H5zm4 0h2v3H9zm4 0h2v3h-2zm6 7h-2V7H3v11c0 1.654 1.346 3 3 3h8c1.654 0 3-1.346 3-3h2c1.103 0 2-.897 2-2v-5c0-1.103-.897-2-2-2zm-4 9a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V9h10v9zm2-2v-5h2l.002 5H17z\"}}]})(props);\n};\nexport function BiCog (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 16c2.206 0 4-1.794 4-4s-1.794-4-4-4-4 1.794-4 4 1.794 4 4 4zm0-6c1.084 0 2 .916 2 2s-.916 2-2 2-2-.916-2-2 .916-2 2-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m2.845 16.136 1 1.73c.531.917 1.809 1.261 2.73.73l.529-.306A8.1 8.1 0 0 0 9 19.402V20c0 1.103.897 2 2 2h2c1.103 0 2-.897 2-2v-.598a8.132 8.132 0 0 0 1.896-1.111l.529.306c.923.53 2.198.188 2.731-.731l.999-1.729a2.001 2.001 0 0 0-.731-2.732l-.505-.292a7.718 7.718 0 0 0 0-2.224l.505-.292a2.002 2.002 0 0 0 .731-2.732l-.999-1.729c-.531-.92-1.808-1.265-2.731-.732l-.529.306A8.1 8.1 0 0 0 15 4.598V4c0-1.103-.897-2-2-2h-2c-1.103 0-2 .897-2 2v.598a8.132 8.132 0 0 0-1.896 1.111l-.529-.306c-.924-.531-2.2-.187-2.731.732l-.999 1.729a2.001 2.001 0 0 0 .731 2.732l.505.292a7.683 7.683 0 0 0 0 2.223l-.505.292a2.003 2.003 0 0 0-.731 2.733zm3.326-2.758A5.703 5.703 0 0 1 6 12c0-.462.058-.926.17-1.378a.999.999 0 0 0-.47-1.108l-1.123-.65.998-1.729 1.145.662a.997.997 0 0 0 1.188-.142 6.071 6.071 0 0 1 2.384-1.399A1 1 0 0 0 11 5.3V4h2v1.3a1 1 0 0 0 .708.956 6.083 6.083 0 0 1 2.384 1.399.999.999 0 0 0 1.188.142l1.144-.661 1 1.729-1.124.649a1 1 0 0 0-.47 1.108c.112.452.17.916.17 1.378 0 .461-.058.925-.171 1.378a1 1 0 0 0 .471 1.108l1.123.649-.998 1.729-1.145-.661a.996.996 0 0 0-1.188.142 6.071 6.071 0 0 1-2.384 1.399A1 1 0 0 0 13 18.7l.002 1.3H11v-1.3a1 1 0 0 0-.708-.956 6.083 6.083 0 0 1-2.384-1.399.992.992 0 0 0-1.188-.141l-1.144.662-1-1.729 1.124-.651a1 1 0 0 0 .471-1.108z\"}}]})(props);\n};\nexport function BiCoinStack (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 22c3.976 0 8-1.374 8-4V6c0-2.626-4.024-4-8-4S4 3.374 4 6v12c0 2.626 4.024 4 8 4zm0-2c-3.722 0-6-1.295-6-2v-1.268C7.541 17.57 9.777 18 12 18s4.459-.43 6-1.268V18c0 .705-2.278 2-6 2zm0-16c3.722 0 6 1.295 6 2s-2.278 2-6 2-6-1.295-6-2 2.278-2 6-2zM6 8.732C7.541 9.57 9.777 10 12 10s4.459-.43 6-1.268V10c0 .705-2.278 2-6 2s-6-1.295-6-2V8.732zm0 4C7.541 13.57 9.777 14 12 14s4.459-.43 6-1.268V14c0 .705-2.278 2-6 2s-6-1.295-6-2v-1.268z\"}}]})(props);\n};\nexport function BiCoin (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 6C7.03 6 2 7.546 2 10.5v4C2 17.454 7.03 19 12 19s10-1.546 10-4.5v-4C22 7.546 16.97 6 12 6zm-8 8.5v-1.197a9.989 9.989 0 0 0 2 .86v1.881c-1.312-.514-2-1.126-2-1.544zm12 .148v1.971c-.867.179-1.867.31-3 .358v-2a21.75 21.75 0 0 0 3-.329zm-5 2.33a18.788 18.788 0 0 1-3-.358v-1.971c.959.174 1.972.287 3 .33v1.999zm7-.934v-1.881a9.931 9.931 0 0 0 2-.86V14.5c0 .418-.687 1.03-2 1.544zM12 13c-5.177 0-8-1.651-8-2.5S6.823 8 12 8s8 1.651 8 2.5-2.823 2.5-8 2.5z\"}}]})(props);\n};\nexport function BiCollapseAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2 15h7v7h2v-9H2v2zM15 2h-2v9h9V9h-7V2z\"}}]})(props);\n};\nexport function BiCollapseHorizontal (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.95 5.64 13.59 12l6.36 6.36 1.41-1.41L16.41 12l4.95-4.95-1.41-1.41zM2.64 7.05 7.59 12l-4.95 4.95 1.41 1.41L10.41 12 4.05 5.64 2.64 7.05z\"}}]})(props);\n};\nexport function BiCollapseVertical (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 7.59 7.05 2.64 5.64 4.05 12 10.41l6.36-6.36-1.41-1.41L12 7.59zM5.64 19.95l1.41 1.41L12 16.41l4.95 4.95 1.41-1.41L12 13.59l-6.36 6.36z\"}}]})(props);\n};\nexport function BiCollapse (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.121 6.465 14 4.344V10h5.656l-2.121-2.121 3.172-3.172-1.414-1.414zM4.707 3.293 3.293 4.707l3.172 3.172L4.344 10H10V4.344L7.879 6.465zM19.656 14H14v5.656l2.121-2.121 3.172 3.172 1.414-1.414-3.172-3.172zM6.465 16.121l-3.172 3.172 1.414 1.414 3.172-3.172L10 19.656V14H4.344z\"}}]})(props);\n};\nexport function BiCollection (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 10H5c-1.103 0-2 .897-2 2v8c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2v-8c0-1.103-.897-2-2-2zM5 20v-8h14l.002 8H5zM5 6h14v2H5zm2-4h10v2H7z\"}}]})(props);\n};\nexport function BiColorFill (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 13.998c-.092.065-2 2.083-2 3.5 0 1.494.949 2.448 2 2.5.906.044 2-.891 2-2.5 0-1.5-1.908-3.435-2-3.5zm-16.586-1c0 .534.208 1.036.586 1.414l5.586 5.586c.378.378.88.586 1.414.586s1.036-.208 1.414-.586l7-7-.707-.707L11 4.584 8.707 2.291 7.293 3.705l2.293 2.293L4 11.584c-.378.378-.586.88-.586 1.414zM11 7.412l5.586 5.586L11 18.584h.001l-.001 1v-1l-5.586-5.586L11 7.412z\"}}]})(props);\n};\nexport function BiColor (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2zm0 13a3 3 0 1 1 3-3 3 3 0 0 1-3 3zm2.75-7.17A5 5 0 0 0 13 7.1v-3a7.94 7.94 0 0 1 3.9 1.62zM11 7.1a5 5 0 0 0-1.75.73L7.1 5.69A7.94 7.94 0 0 1 11 4.07zM7.83 9.25A5 5 0 0 0 7.1 11h-3a7.94 7.94 0 0 1 1.59-3.9zM7.1 13a5 5 0 0 0 .73 1.75L5.69 16.9A7.94 7.94 0 0 1 4.07 13zm2.15 3.17a5 5 0 0 0 1.75.73v3a7.94 7.94 0 0 1-3.9-1.62zm3.75.73a5 5 0 0 0 1.75-.73l2.15 2.14a7.94 7.94 0 0 1-3.9 1.62zm3.17-2.15A5 5 0 0 0 16.9 13h3a7.94 7.94 0 0 1-1.62 3.9zM16.9 11a5 5 0 0 0-.73-1.75l2.14-2.15a7.94 7.94 0 0 1 1.62 3.9z\"}}]})(props);\n};\nexport function BiColumns (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.893 3.001H4c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h15.893c1.103 0 2-.897 2-2V5a2.003 2.003 0 0 0-2-1.999zM8 19.001H4V8h4v11.001zm6 0h-4V8h4v11.001zm2 0V8h3.893l.001 11.001H16z\"}}]})(props);\n};\nexport function BiCommand (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 14c-2.206 0-4 1.794-4 4s1.794 4 4 4a4.003 4.003 0 0 0 3.998-3.98H10V16h4v2.039h.004A4.002 4.002 0 0 0 18 22c2.206 0 4-1.794 4-4s-1.794-4-4-4h-2v-4h2c2.206 0 4-1.794 4-4s-1.794-4-4-4-4 1.794-4 4v2h-4V5.98h-.002A4.003 4.003 0 0 0 6 2C3.794 2 2 3.794 2 6s1.794 4 4 4h2v4H6zm2 4c0 1.122-.879 2-2 2s-2-.878-2-2 .879-2 2-2h2v2zm10-2c1.121 0 2 .878 2 2s-.879 2-2 2-2-.878-2-2v-2h2zM16 6c0-1.122.879-2 2-2s2 .878 2 2-.879 2-2 2h-2V6zM6 8c-1.121 0-2-.878-2-2s.879-2 2-2 2 .878 2 2v2H6zm4 2h4v4h-4v-4z\"}}]})(props);\n};\nexport function BiCommentAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 14h2v-3h3V9h-3V6h-2v3H8v2h3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .897-2 2v18l5.333-4H20c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm0 14H6.667L4 18V4h16v12z\"}}]})(props);\n};\nexport function BiCommentCheck (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m17.207 8.207-1.414-1.414L11 11.586 8.707 9.293l-1.414 1.414L11 14.414z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .897-2 2v18l5.333-4H20c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm0 14H6.667L4 18V4h16v12z\"}}]})(props);\n};\nexport function BiCommentDetail (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 7h10v2H7zm0 4h7v2H7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .897-2 2v18l5.333-4H20c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm0 14H6.667L4 18V4h16v12z\"}}]})(props);\n};\nexport function BiCommentDots (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .897-2 2v18l5.333-4H20c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm0 14H6.667L4 18V4h16v12z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15\",\"cy\":\"10\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"9\",\"cy\":\"10\",\"r\":\"2\"}}]})(props);\n};\nexport function BiCommentEdit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m13.771 9.123-1.399-1.398-3.869 3.864v1.398h1.398zM14.098 6l1.398 1.398-1.067 1.067-1.398-1.398z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .897-2 2v18l5.333-4H20c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm0 14H6.667L4 18V4h16v12z\"}}]})(props);\n};\nexport function BiCommentError (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 6h2v5h-2zm0 6h2v2h-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .897-2 2v18l5.333-4H20c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm0 14H6.667L4 18V4h16v12z\"}}]})(props);\n};\nexport function BiCommentMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8 9h8v2H8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .897-2 2v18l5.333-4H20c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm0 14H6.667L4 18V4h16v12z\"}}]})(props);\n};\nexport function BiCommentX (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9.707 13.707 12 11.414l2.293 2.293 1.414-1.414L13.414 10l2.293-2.293-1.414-1.414L12 8.586 9.707 6.293 8.293 7.707 10.586 10l-2.293 2.293z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .897-2 2v18l5.333-4H20c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm0 14H6.667L4 18V4h16v12z\"}}]})(props);\n};\nexport function BiComment (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .897-2 2v18l5.333-4H20c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm0 14H6.667L4 18V4h16v12z\"}}]})(props);\n};\nexport function BiCompass (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m8 16 5.991-2L16 8l-6 2z\"}}]})(props);\n};\nexport function BiConfused (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8.5\",\"cy\":\"10.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15.493\",\"cy\":\"10.493\",\"r\":\"1.493\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m8.124 16.992-.248-1.984 8-1 .248 1.984z\"}}]})(props);\n};\nexport function BiConversation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 14h.5c.827 0 1.5-.673 1.5-1.5v-9c0-.827-.673-1.5-1.5-1.5h-13C2.673 2 2 2.673 2 3.5V18l5.333-4H16zm-9.333-2L4 14V4h12v8H6.667z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20.5 8H20v6.001c0 1.1-.893 1.993-1.99 1.999H8v.5c0 .827.673 1.5 1.5 1.5h7.167L22 22V9.5c0-.827-.673-1.5-1.5-1.5z\"}}]})(props);\n};\nexport function BiCookie (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.598 11.064a1.006 1.006 0 0 0-.854-.172A2.938 2.938 0 0 1 20 11c-1.654 0-3-1.346-3.003-2.937.005-.034.016-.136.017-.17a.998.998 0 0 0-1.254-1.006A2.963 2.963 0 0 1 15 7c-1.654 0-3-1.346-3-3 0-.217.031-.444.099-.716a1 1 0 0 0-1.067-1.236A9.956 9.956 0 0 0 2 12c0 5.514 4.486 10 10 10s10-4.486 10-10c0-.049-.003-.097-.007-.16a1.004 1.004 0 0 0-.395-.776zM12 20c-4.411 0-8-3.589-8-8a7.962 7.962 0 0 1 6.006-7.75A5.006 5.006 0 0 0 15 9l.101-.001a5.007 5.007 0 0 0 4.837 4C19.444 16.941 16.073 20 12 20z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12.5\",\"cy\":\"11.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8.5\",\"cy\":\"8.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"7.5\",\"cy\":\"12.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15.5\",\"cy\":\"15.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"10.5\",\"cy\":\"16.5\",\"r\":\"1.5\"}}]})(props);\n};\nexport function BiCool (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14.683 14.828a4.055 4.055 0 0 1-1.272.858 4.002 4.002 0 0 1-4.875-1.45l-1.658 1.119a6.063 6.063 0 0 0 1.621 1.62 5.963 5.963 0 0 0 2.148.903 6.035 6.035 0 0 0 3.542-.35 6.048 6.048 0 0 0 1.907-1.284c.272-.271.52-.571.734-.889l-1.658-1.119a4.147 4.147 0 0 1-.489.592z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 2c2.953 0 5.531 1.613 6.918 4H5.082C6.469 5.613 9.047 4 12 4zm0 16c-4.411 0-8-3.589-8-8 0-.691.098-1.359.264-2H5v1a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2h2a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2v-1h.736c.166.641.264 1.309.264 2 0 4.411-3.589 8-8 8z\"}}]})(props);\n};\nexport function BiCopyAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H10c-1.103 0-2 .897-2 2v4H4c-1.103 0-2 .897-2 2v10c0 1.103.897 2 2 2h10c1.103 0 2-.897 2-2v-4h4c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zM4 20V10h10l.002 10H4zm16-6h-4v-4c0-1.103-.897-2-2-2h-4V4h10v10z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M6 12h6v2H6zm0 4h6v2H6z\"}}]})(props);\n};\nexport function BiCopy (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H10c-1.103 0-2 .897-2 2v4H4c-1.103 0-2 .897-2 2v10c0 1.103.897 2 2 2h10c1.103 0 2-.897 2-2v-4h4c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zM4 20V10h10l.002 10H4zm16-6h-4v-4c0-1.103-.897-2-2-2h-4V4h10v10z\"}}]})(props);\n};\nexport function BiCopyright (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 22c5.421 0 10-4.579 10-10S17.421 2 12 2 2 6.579 2 12s4.579 10 10 10zm0-18c4.337 0 8 3.663 8 8s-3.663 8-8 8-8-3.663-8-8 3.663-8 8-8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 17c.901 0 2.581-.168 3.707-1.292l-1.414-1.416C13.85 14.735 12.992 15 12 15c-1.626 0-3-1.374-3-3s1.374-3 3-3c.993 0 1.851.265 2.293.707l1.414-1.414C14.582 7.168 12.901 7 12 7c-2.757 0-5 2.243-5 5s2.243 5 5 5z\"}}]})(props);\n};\nexport function BiCreditCardAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"15.5\",\"cy\":\"13.5\",\"r\":\"2.5\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 13.5c0-.815.396-1.532 1-1.988A2.47 2.47 0 0 0 11.5 11a2.5 2.5 0 1 0 0 5 2.47 2.47 0 0 0 1.5-.512 2.486 2.486 0 0 1-1-1.988z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zM4 18V6h16l.002 12H4z\"}}]})(props);\n};\nexport function BiCreditCardFront (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zM4 18V6h16l.001 12H4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M6.5 11h3a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5v2a.5.5 0 0 0 .5.5zM6 14h6v2.001H6zm7 0h5v2.001h-5z\"}}]})(props);\n};\nexport function BiCreditCard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zM4 6h16v2H4V6zm0 12v-6h16.001l.001 6H4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M6 14h6v2H6z\"}}]})(props);\n};\nexport function BiCricketBall (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.07 4.93A10 10 0 0 0 4.93 19.07 10 10 0 0 0 19.07 4.93zM6.34 6.34a8 8 0 0 1 8.78-1.71l-.29.3.71.71.52-.53a9.53 9.53 0 0 1 .84.57L5.68 16.9a9.53 9.53 0 0 1-.57-.84l.53-.52-.71-.71-.29.29a8 8 0 0 1 1.7-8.78zm11.32 11.32a8 8 0 0 1-8.78 1.71l.29-.3-.71-.71-.52.53a9.53 9.53 0 0 1-.84-.57L18.32 7.1a9.53 9.53 0 0 1 .57.84l-.53.52.71.71.29-.29a8 8 0 0 1-1.7 8.78zm-6.37-2.12.71.7-1.41 1.42-.71-.66zm2.83-2.83.71.7-1.42 1.42-.7-.71zM17 9.88l.71.71L16.24 12l-.7-.71zm-4.29-1.42-.71-.7 1.41-1.42.71.71zm-2.83 2.83-.71-.7 1.42-1.42.7.71zm-2.83 2.83-.71-.71L7.76 12l.7.71z\"}}]})(props);\n};\nexport function BiCrop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 7c0-1.103-.897-2-2-2H7V2H5v3H2v2h15v15h2v-3h3v-2h-3V7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M5 9v8c0 1.103.897 2 2 2h8v-2H7V9H5z\"}}]})(props);\n};\nexport function BiCross (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 2h2v7h-2zm0 13h2v7h-2zm4-4h7v2h-7zM2 11h7v2H2z\"}}]})(props);\n};\nexport function BiCrosshair (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm1 17.931V17h-2v2.931A8.008 8.008 0 0 1 4.069 13H7v-2H4.069A8.008 8.008 0 0 1 11 4.069V7h2V4.069A8.007 8.007 0 0 1 19.931 11H17v2h2.931A8.008 8.008 0 0 1 13 19.931z\"}}]})(props);\n};\nexport function BiCrown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.219 3.375 8 7.399 4.781 3.375A1.002 1.002 0 0 0 3 4v15c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V4a1.002 1.002 0 0 0-1.781-.625L16 7.399l-3.219-4.024c-.381-.474-1.181-.474-1.562 0zM5 19v-2h14.001v2H5zm10.219-9.375c.381.475 1.182.475 1.563 0L19 6.851 19.001 15H5V6.851l2.219 2.774c.381.475 1.182.475 1.563 0L12 5.601l3.219 4.024z\"}}]})(props);\n};\nexport function BiCubeAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.895 3.553A1.001 1.001 0 0 0 17 3H7c-.379 0-.725.214-.895.553l-4 8a1 1 0 0 0 0 .895l4 8c.17.338.516.552.895.552h10c.379 0 .725-.214.895-.553l4-8a1 1 0 0 0 0-.895l-4-7.999zM19.382 11h-7.764l-3-6h7.764l3 6zM4.118 12 7 6.236 9.882 12 7 17.764 4.118 12zm12.264 7H8.618l3-6h7.764l-3 6z\"}}]})(props);\n};\nexport function BiCube (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.406 6.086-9-4a1.001 1.001 0 0 0-.813 0l-9 4c-.02.009-.034.024-.054.035-.028.014-.058.023-.084.04-.022.015-.039.034-.06.05a.87.87 0 0 0-.19.194c-.02.028-.041.053-.059.081a1.119 1.119 0 0 0-.076.165c-.009.027-.023.052-.031.079A1.013 1.013 0 0 0 2 7v10c0 .396.232.753.594.914l9 4c.13.058.268.086.406.086a.997.997 0 0 0 .402-.096l.004.01 9-4A.999.999 0 0 0 22 17V7a.999.999 0 0 0-.594-.914zM12 4.095 18.538 7 12 9.905l-1.308-.581L5.463 7 12 4.095zM4 16.351V8.539l7 3.111v7.811l-7-3.11zm9 3.11V11.65l7-3.111v7.812l-7 3.11z\"}}]})(props);\n};\nexport function BiCuboid (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.707 2.293A.996.996 0 0 0 16 2H8c-.414 0-.785.255-.934.641l-5 13a.999.999 0 0 0 .227 1.066l5 5A.996.996 0 0 0 8 22h8c.414 0 .785-.255.934-.641l5-13a.999.999 0 0 0-.227-1.066l-5-5zM18.585 7h-5.171l-3-3h5.172l2.999 3zM8.381 4.795l3.438 3.438-4.462 10.71-3.19-3.191L8.381 4.795zM15.313 20h-6.23l4.583-11h5.878l-4.231 11z\"}}]})(props);\n};\nexport function BiCurrentLocation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"4\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13 4.069V2h-2v2.069A8.01 8.01 0 0 0 4.069 11H2v2h2.069A8.008 8.008 0 0 0 11 19.931V22h2v-2.069A8.007 8.007 0 0 0 19.931 13H22v-2h-2.069A8.008 8.008 0 0 0 13 4.069zM12 18c-3.309 0-6-2.691-6-6s2.691-6 6-6 6 2.691 6 6-2.691 6-6 6z\"}}]})(props);\n};\nexport function BiCustomize (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 11h6a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1zm1-6h4v4H5V5zm15-2h-6a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zm-1 6h-4V5h4v4zm-9 12a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h6zm-5-6h4v4H5v-4zm13-1h-2v2h-2v2h2v2h2v-2h2v-2h-2z\"}}]})(props);\n};\nexport function BiCut (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 6.5C10 4.57 8.43 3 6.5 3S3 4.57 3 6.5 4.57 10 6.5 10a3.45 3.45 0 0 0 1.613-.413l2.357 2.528-2.318 2.318A3.46 3.46 0 0 0 6.5 14C4.57 14 3 15.57 3 17.5S4.57 21 6.5 21s3.5-1.57 3.5-3.5c0-.601-.166-1.158-.434-1.652l2.269-2.268L17 19.121a3 3 0 0 0 2.121.879H22L9.35 8.518c.406-.572.65-1.265.65-2.018zM6.5 8C5.673 8 5 7.327 5 6.5S5.673 5 6.5 5 8 5.673 8 6.5 7.327 8 6.5 8zm0 11c-.827 0-1.5-.673-1.5-1.5S5.673 16 6.5 16s1.5.673 1.5 1.5S7.327 19 6.5 19z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m17 4.879-3.707 4.414 1.414 1.414L22 4h-2.879A3 3 0 0 0 17 4.879z\"}}]})(props);\n};\nexport function BiCycling (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 15.414V20h2v-4.586c0-.526-.214-1.042-.586-1.414l-2-2L13 9.414l2 2c.372.372.888.586 1.414.586H20v-2h-3.586l-3.707-3.707a.999.999 0 0 0-1.414 0L8 9.586c-.378.378-.586.88-.586 1.414s.208 1.036.586 1.414l3 3z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"16\",\"cy\":\"5\",\"r\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M18 14c-2.206 0-4 1.794-4 4s1.794 4 4 4 4-1.794 4-4-1.794-4-4-4zm0 6c-1.103 0-2-.897-2-2s.897-2 2-2 2 .897 2 2-.897 2-2 2zM6 22c2.206 0 4-1.794 4-4s-1.794-4-4-4-4 1.794-4 4 1.794 4 4 4zm0-6c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2z\"}}]})(props);\n};\nexport function BiCylinder (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 22c5.131 0 9-1.935 9-4.5V7h-.053c.033-.164.053-.33.053-.5C21 3.935 17.131 2 12 2 7.209 2 3.52 3.688 3.053 6H3v11.5c0 2.565 3.869 4.5 9 4.5zm0-2c-4.273 0-7-1.48-7-2.5V9.394C6.623 10.387 9.111 11 12 11s5.377-.613 7-1.606V17.5c0 1.02-2.727 2.5-7 2.5zm0-16c4.273 0 7 1.48 7 2.5S16.273 9 12 9 5 7.52 5 6.5 7.727 4 12 4z\"}}]})(props);\n};\nexport function BiData (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 17V7c0-2.168-3.663-4-8-4S4 4.832 4 7v10c0 2.168 3.663 4 8 4s8-1.832 8-4zM12 5c3.691 0 5.931 1.507 6 1.994C17.931 7.493 15.691 9 12 9S6.069 7.493 6 7.006C6.069 6.507 8.309 5 12 5zM6 9.607C7.479 10.454 9.637 11 12 11s4.521-.546 6-1.393v2.387c-.069.499-2.309 2.006-6 2.006s-5.931-1.507-6-2V9.607zM6 17v-2.393C7.479 15.454 9.637 16 12 16s4.521-.546 6-1.393v2.387c-.069.499-2.309 2.006-6 2.006s-5.931-1.507-6-2z\"}}]})(props);\n};\nexport function BiDesktop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4c-1.103 0-2 .897-2 2v11c0 1.103.897 2 2 2h7v2H8v2h8v-2h-3v-2h7c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM4 14V5h16l.002 9H4z\"}}]})(props);\n};\nexport function BiDetail (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM4 19V5h16l.002 14H4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M6 7h12v2H6zm0 4h12v2H6zm0 4h6v2H6z\"}}]})(props);\n};\nexport function BiDevices (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H7c-1.103 0-2 .897-2 2v2H4c-1.103 0-2 .897-2 2v10c0 1.103.897 2 2 2h6c1.103 0 2-.897 2-2h8c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM9.997 19H4V9h6l-.003 10zm10-2H12V9c0-1.103-.897-2-2-2H7V5h13l-.003 12z\"}}]})(props);\n};\nexport function BiDialpadAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"6\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"6\",\"cy\":\"6\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"18\",\"cy\":\"6\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"6\",\"cy\":\"12\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"18\",\"cy\":\"12\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"18\",\"r\":\"2\"}}]})(props);\n};\nexport function BiDialpad (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 3h4v3h-4zm0 5h4v3h-4zm0 5h4v3h-4zm6-10h4v3h-4zm0 5h4v3h-4zm0 5h4v3h-4zM4 3h4v3H4zm0 5h4v3H4zm0 5h4v3H4zm6 5h4v3h-4z\"}}]})(props);\n};\nexport function BiDiamond (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.813 3.838A2 2 0 0 0 16.187 3H7.813c-.644 0-1.252.313-1.667.899l-4 6.581a.999.999 0 0 0 .111 1.188l9 10a.995.995 0 0 0 1.486.001l9-10a.997.997 0 0 0 .111-1.188l-4.041-6.643zM12 19.505 5.245 12h13.509L12 19.505zM4.777 10l3.036-5 8.332-.062L19.222 10H4.777z\"}}]})(props);\n};\nexport function BiDice1 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM5 19V5h14l.002 14H5z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"1.5\"}}]})(props);\n};\nexport function BiDice2 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM5 19V5h14l.002 14H5z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"9.5\",\"cy\":\"12\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"14.5\",\"cy\":\"12\",\"r\":\"1.5\"}}]})(props);\n};\nexport function BiDice3 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM5 19V5h14l.002 14H5z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8\",\"cy\":\"8\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"16\",\"cy\":\"16\",\"r\":\"1.5\"}}]})(props);\n};\nexport function BiDice4 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM5 19V5h14l.002 14H5z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8\",\"cy\":\"8\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"16\",\"cy\":\"16\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8\",\"cy\":\"16\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"16\",\"cy\":\"8\",\"r\":\"1.5\"}}]})(props);\n};\nexport function BiDice5 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM5 19V5h14l.002 14H5z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8\",\"cy\":\"8\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"16\",\"cy\":\"16\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8\",\"cy\":\"16\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"16\",\"cy\":\"8\",\"r\":\"1.5\"}}]})(props);\n};\nexport function BiDice6 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM5 19V5h14l.002 14H5z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8\",\"cy\":\"8\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8\",\"cy\":\"12\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"16\",\"cy\":\"12\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"16\",\"cy\":\"16\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8\",\"cy\":\"16\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"16\",\"cy\":\"8\",\"r\":\"1.5\"}}]})(props);\n};\nexport function BiDirections (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.781 13.875-2-2.5A1 1 0 0 0 19 11h-6V9h6c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2H5a1 1 0 0 0-.781.375l-2 2.5a1.001 1.001 0 0 0 0 1.25l2 2.5A1 1 0 0 0 5 9h6v2H5c-1.103 0-2 .897-2 2v3c0 1.103.897 2 2 2h6v4h2v-4h6a1 1 0 0 0 .781-.375l2-2.5a1.001 1.001 0 0 0 0-1.25zM4.281 5.5 5.48 4H19l.002 3H5.48L4.281 5.5zM18.52 16H5v-3h13.52l1.2 1.5-1.2 1.5z\"}}]})(props);\n};\nexport function BiDisc (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2zm0 18a8 8 0 1 1 8-8 8 8 0 0 1-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 8a4 4 0 1 0 4 4 4 4 0 0 0-4-4zm0 6a2 2 0 1 1 2-2 2 2 0 0 1-2 2z\"}}]})(props);\n};\nexport function BiDish (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 15c0-4.625-3.507-8.441-8-8.941V4h-2v2.059c-4.493.5-8 4.316-8 8.941v2h18v-2zM5 15c0-3.859 3.141-7 7-7s7 3.141 7 7H5zm-3 3h20v2H2z\"}}]})(props);\n};\nexport function BiDislike (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H6.693A2.01 2.01 0 0 0 4.82 4.298l-2.757 7.351A1 1 0 0 0 2 12v2c0 1.103.897 2 2 2h5.612L8.49 19.367a2.004 2.004 0 0 0 .274 1.802c.376.52.982.831 1.624.831H12c.297 0 .578-.132.769-.36l4.7-5.64H20c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zm-8.469 17h-1.145l1.562-4.684A1 1 0 0 0 11 14H4v-1.819L6.693 5H16v9.638L11.531 20zM18 14V5h2l.001 9H18z\"}}]})(props);\n};\nexport function BiDizzy (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M10.707 12.293 9.414 11l1.293-1.293-1.414-1.414L8 9.586 6.707 8.293 5.293 9.707 6.586 11l-1.293 1.293 1.414 1.414L8 12.414l1.293 1.293zm6.586-4L16 9.586l-1.293-1.293-1.414 1.414L14.586 11l-1.293 1.293 1.414 1.414L16 12.414l1.293 1.293 1.414-1.414L17.414 11l1.293-1.293zM10 16h4v2h-4z\"}}]})(props);\n};\nexport function BiDna (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.794 11.09c.332-.263.648-.542.947-.84l.136-.142c.283-.293.552-.598.801-.919l.062-.075c.255-.335.486-.688.702-1.049l.128-.22c.205-.364.395-.737.559-1.123.02-.047.035-.095.055-.142.147-.361.274-.731.383-1.109.021-.07.044-.14.063-.211.107-.402.189-.813.251-1.229.013-.087.021-.175.032-.263.051-.432.087-.869.087-1.311V2h-2v.457c0 .184-.031.361-.042.543H6.022C6.012 2.819 6 2.64 6 2.457V2H4v.457c0 4.876 3.269 9.218 7.952 10.569l.028.009c2.881.823 5.056 3.146 5.769 5.965H6.251l.799-2h7.607a7.416 7.416 0 0 0-2.063-2h-4c.445-.424.956-.774 1.491-1.09a9.922 9.922 0 0 1-2.08-1.014C5.55 14.812 4 17.779 4 21.015V23h2v-1.985L6.001 21h11.998l.001.015V23h2v-1.985c0-3.83-2.159-7.303-5.443-9.07a11.1 11.1 0 0 0 1.072-.729c.055-.042.11-.082.165-.126zm-1.19-1.604a8.945 8.945 0 0 1-2.325 1.348c-.092.036-.185.068-.278.102A8.95 8.95 0 0 1 8.836 9h6.292c-.171.161-.332.333-.517.48l-.007.006zM17.619 5c-.005.016-.007.033-.012.049l-.044.151a9.089 9.089 0 0 1-.513 1.252c-.096.19-.213.365-.321.548h-9.48a9.066 9.066 0 0 1-.871-2h11.241z\"}}]})(props);\n};\nexport function BiDockBottom (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2zm0 2v9H5V5zM5 19v-3h14v3z\"}}]})(props);\n};\nexport function BiDockLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2zM5 5h3v14H5zm5 14V5h9v14z\"}}]})(props);\n};\nexport function BiDockRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2zM5 5h9v14H5zm11 14V5h3v14z\"}}]})(props);\n};\nexport function BiDockTop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2zm0 2v3H5V5zM5 19v-9h14v9z\"}}]})(props);\n};\nexport function BiDollarCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2zm0 18a8 8 0 1 1 8-8 8 8 0 0 1-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 11c-2 0-2-.63-2-1s.7-1 2-1 1.39.64 1.4 1h2A3 3 0 0 0 13 7.12V6h-2v1.09C9 7.42 8 8.71 8 10c0 1.12.52 3 4 3 2 0 2 .68 2 1s-.62 1-2 1c-1.84 0-2-.86-2-1H8c0 .92.66 2.55 3 2.92V18h2v-1.08c2-.34 3-1.63 3-2.92 0-1.12-.52-3-4-3z\"}}]})(props);\n};\nexport function BiDollar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.999 8.5h2c0-2.837-2.755-4.131-5-4.429V2h-2v2.071c-2.245.298-5 1.592-5 4.429 0 2.706 2.666 4.113 5 4.43v4.97c-1.448-.251-3-1.024-3-2.4h-2c0 2.589 2.425 4.119 5 4.436V22h2v-2.07c2.245-.298 5-1.593 5-4.43s-2.755-4.131-5-4.429V6.1c1.33.239 3 .941 3 2.4zm-8 0c0-1.459 1.67-2.161 3-2.4v4.799c-1.371-.253-3-1.002-3-2.399zm8 7c0 1.459-1.67 2.161-3 2.4v-4.8c1.33.239 3 .941 3 2.4z\"}}]})(props);\n};\nexport function BiDonateBlood (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 21h9.62a3.995 3.995 0 0 0 3.037-1.397l5.102-5.952a1 1 0 0 0-.442-1.6l-1.968-.656a3.043 3.043 0 0 0-2.823.503l-3.185 2.547-.617-1.235A3.98 3.98 0 0 0 9.146 11H4c-1.103 0-2 .897-2 2v6c0 1.103.897 2 2 2zm0-8h5.146c.763 0 1.448.423 1.789 1.105l.447.895H7v2h6.014a.996.996 0 0 0 .442-.11l.003-.001.004-.002h.003l.002-.001h.004l.001-.001c.011.003.003-.001.003-.001.012 0 .002-.001.002-.001h.001l.002-.001.003-.001.002-.001.002-.001.003-.001.002-.001.002-.001.003-.002.002-.001.002-.001.003-.001.002-.001h.001l.002-.001h.001l.002-.001.002-.001c.011-.001.003-.001.003-.001l.002-.001a.915.915 0 0 0 .11-.078l4.146-3.317c.261-.208.623-.273.94-.167l.557.186-4.133 4.823a2.029 2.029 0 0 1-1.52.688H4v-6zm9.761-10.674C13.3 2.832 11 5.457 11 7.5c0 1.93 1.57 3.5 3.5 3.5S18 9.43 18 7.5c0-2.043-2.3-4.668-2.761-5.174-.379-.416-1.099-.416-1.478 0zM16 7.5c0 .827-.673 1.5-1.5 1.5S13 8.327 13 7.5c0-.708.738-1.934 1.5-2.934.762 1 1.5 2.226 1.5 2.934z\"}}]})(props);\n};\nexport function BiDonateHeart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 21h9.62a3.995 3.995 0 0 0 3.037-1.397l5.102-5.952a1 1 0 0 0-.442-1.6l-1.968-.656a3.043 3.043 0 0 0-2.823.503l-3.185 2.547-.617-1.235A3.98 3.98 0 0 0 9.146 11H4c-1.103 0-2 .897-2 2v6c0 1.103.897 2 2 2zm0-8h5.146c.763 0 1.448.423 1.789 1.105l.447.895H7v2h6.014a.996.996 0 0 0 .442-.11l.003-.001.004-.002h.003l.002-.001h.004l.001-.001c.009.003.003-.001.003-.001.01 0 .002-.001.002-.001h.001l.002-.001.003-.001.002-.001.002-.001.003-.001.002-.001c.003 0 .001-.001.002-.001l.003-.002.002-.001.002-.001.003-.001.002-.001h.001l.002-.001h.001l.002-.001.002-.001c.009-.001.003-.001.003-.001l.002-.001a.915.915 0 0 0 .11-.078l4.146-3.317c.262-.208.623-.273.94-.167l.557.186-4.133 4.823a2.029 2.029 0 0 1-1.52.688H4v-6zM16 2h-.017c-.163.002-1.006.039-1.983.705-.951-.648-1.774-.7-1.968-.704L12.002 2h-.004c-.801 0-1.555.313-2.119.878C9.313 3.445 9 4.198 9 5s.313 1.555.861 2.104l3.414 3.586a1.006 1.006 0 0 0 1.45-.001l3.396-3.568C18.688 6.555 19 5.802 19 5s-.313-1.555-.878-2.121A2.978 2.978 0 0 0 16.002 2H16zm1 3c0 .267-.104.518-.311.725L14 8.55l-2.707-2.843C11.104 5.518 11 5.267 11 5s.104-.518.294-.708A.977.977 0 0 1 11.979 4c.025.001.502.032 1.067.485.081.065.163.139.247.222l.707.707.707-.707c.084-.083.166-.157.247-.222.529-.425.976-.478 1.052-.484a.987.987 0 0 1 .701.292c.189.189.293.44.293.707z\"}}]})(props);\n};\nexport function BiDoorOpen (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10.385 21.788a.997.997 0 0 0 .857.182l8-2A.999.999 0 0 0 20 19V5a1 1 0 0 0-.758-.97l-8-2A1.003 1.003 0 0 0 10 3v1H6a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h4v1c0 .308.142.599.385.788zM12 4.281l6 1.5v12.438l-6 1.5V4.281zM7 18V6h3v12H7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14.242 13.159c.446-.112.758-.512.758-.971v-.377a1 1 0 1 0-2 .001v.377a1 1 0 0 0 1.242.97z\"}}]})(props);\n};\nexport function BiDotsHorizontalRounded (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zM6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\"}}]})(props);\n};\nexport function BiDotsHorizontal (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 10h4v4h-4zm6 0h4v4h-4zM4 10h4v4H4z\"}}]})(props);\n};\nexport function BiDotsVerticalRounded (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 12c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\"}}]})(props);\n};\nexport function BiDotsVertical (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 10h4v4h-4zm0-6h4v4h-4zm0 12h4v4h-4z\"}}]})(props);\n};\nexport function BiDoughnutChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm7.931 9h-3.032A5.013 5.013 0 0 0 13 7.102V4.069A8.008 8.008 0 0 1 19.931 11zM12 9c1.654 0 3 1.346 3 3s-1.346 3-3 3-3-1.346-3-3 1.346-3 3-3zm0 11c-4.411 0-8-3.589-8-8 0-4.072 3.061-7.436 7-7.931v3.032A5.009 5.009 0 0 0 7 12c0 2.757 2.243 5 5 5a5.007 5.007 0 0 0 4.898-4h3.032c-.494 3.939-3.858 7-7.93 7z\"}}]})(props);\n};\nexport function BiDownArrowAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m18.707 12.707-1.414-1.414L13 15.586V6h-2v9.586l-4.293-4.293-1.414 1.414L12 19.414z\"}}]})(props);\n};\nexport function BiDownArrowCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 1.993C6.486 1.994 2 6.48 2 11.994c0 5.513 4.486 9.999 10 10 5.514 0 10-4.486 10-10s-4.485-10-10-10.001zm0 18.001c-4.411-.001-8-3.59-8-8 0-4.411 3.589-8 8-8.001 4.411.001 8 3.59 8 8.001s-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13 8h-2v4H7.991l4.005 4.005L16 12h-3z\"}}]})(props);\n};\nexport function BiDownArrow (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.886 5.536A1.002 1.002 0 0 0 21 5H3a1.002 1.002 0 0 0-.822 1.569l9 13a.998.998 0 0 0 1.644 0l9-13a.998.998 0 0 0 .064-1.033zM12 17.243 4.908 7h14.184L12 17.243z\"}}]})(props);\n};\nexport function BiDownload (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m12 16 4-5h-3V4h-2v7H8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 18H4v-7H2v7c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2v-7h-2v7z\"}}]})(props);\n};\nexport function BiDownvote (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.901 10.566A1.001 1.001 0 0 0 20 10h-4V3a1 1 0 0 0-1-1H9a1 1 0 0 0-1 1v7H4a1.001 1.001 0 0 0-.781 1.625l8 10a1 1 0 0 0 1.562 0l8-10c.24-.301.286-.712.12-1.059zM12 19.399 6.081 12H10V4h4v8h3.919L12 19.399z\"}}]})(props);\n};\nexport function BiDrink (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.832 4.555A1 1 0 0 0 20 3H4a1 1 0 0 0-.832 1.554L11 16.303V20H8v2h8v-2h-3v-3.697l7.832-11.748zM12 14.197 8.535 9h6.93L12 14.197zM18.132 5l-1.333 2H7.201L5.868 5h12.264z\"}}]})(props);\n};\nexport function BiDroplet (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 22c4.636 0 8-3.468 8-8.246C20 7.522 12.882 2.4 12.579 2.185a1 1 0 0 0-1.156-.001C11.12 2.397 4 7.503 4 13.75 4 18.53 7.364 22 12 22zm-.001-17.74C13.604 5.55 18 9.474 18 13.754 18 17.432 15.532 20 12 20s-6-2.57-6-6.25c0-4.29 4.394-8.203 5.999-9.49z\"}}]})(props);\n};\nexport function BiDumbbell (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 5v14h3v-6h6v6h3V5h-3v6H9V5zM3 15a1 1 0 0 0 1 1h1V8H4a1 1 0 0 0-1 1v2H2v2h1v2zm18-6a1 1 0 0 0-1-1h-1v8h1a1 1 0 0 0 1-1v-2h1v-2h-1V9z\"}}]})(props);\n};\nexport function BiDuplicate (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 10H9v3H6v2h3v3h2v-3h3v-2h-3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M4 22h12c1.103 0 2-.897 2-2V8c0-1.103-.897-2-2-2H4c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2zM4 8h12l.002 12H4V8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H8v2h12v12h2V4c0-1.103-.897-2-2-2z\"}}]})(props);\n};\nexport function BiEditAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.045 7.401c.378-.378.586-.88.586-1.414s-.208-1.036-.586-1.414l-1.586-1.586c-.378-.378-.88-.586-1.414-.586s-1.036.208-1.413.585L4 13.585V18h4.413L19.045 7.401zm-3-3 1.587 1.585-1.59 1.584-1.586-1.585 1.589-1.584zM6 16v-1.585l7.04-7.018 1.586 1.586L7.587 16H6zm-2 4h16v2H4z\"}}]})(props);\n};\nexport function BiEdit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m7 17.013 4.413-.015 9.632-9.54c.378-.378.586-.88.586-1.414s-.208-1.036-.586-1.414l-1.586-1.586c-.756-.756-2.075-.752-2.825-.003L7 12.583v4.43zM18.045 4.458l1.589 1.583-1.597 1.582-1.586-1.585 1.594-1.58zM9 13.417l6.03-5.973 1.586 1.586-6.029 5.971L9 15.006v-1.589z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M5 21h14c1.103 0 2-.897 2-2v-8.668l-2 2V19H8.158c-.026 0-.053.01-.079.01-.033 0-.066-.009-.1-.01H5V5h6.847l2-2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2z\"}}]})(props);\n};\nexport function BiEnvelopeOpen (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.555 8.168-9-6a1 1 0 0 0-1.109 0l-9 6A1 1 0 0 0 2 9v11c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V9c0-.334-.167-.646-.445-.832zM12 4.202 19.197 9 12 13.798 4.803 9 12 4.202zM4 20v-9.131l7.445 4.963a1 1 0 0 0 1.11 0L20 10.869 19.997 20H4z\"}}]})(props);\n};\nexport function BiEnvelope (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zm0 2v.511l-8 6.223-8-6.222V6h16zM4 18V9.044l7.386 5.745a.994.994 0 0 0 1.228 0L20 9.044 20.002 18H4z\"}}]})(props);\n};\nexport function BiEqualizer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 9h2v6h-2zm4-3h2v12h-2zM7 4h2v16H7zm12 7h2v2h-2zM3 10h2v4H3z\"}}]})(props);\n};\nexport function BiEraser (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m2.586 15.408 4.299 4.299a.996.996 0 0 0 .707.293h12.001v-2h-6.958l7.222-7.222c.78-.779.78-2.049 0-2.828L14.906 3a2.003 2.003 0 0 0-2.828 0l-4.75 4.749-4.754 4.843a2.007 2.007 0 0 0 .012 2.816zM13.492 4.414l4.95 4.95-2.586 2.586L10.906 7l2.586-2.586zM8.749 9.156l.743-.742 4.95 4.95-4.557 4.557a1.026 1.026 0 0 0-.069.079h-1.81l-4.005-4.007 4.748-4.837z\"}}]})(props);\n};\nexport function BiErrorAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 7h2v7h-2zm0 8h2v2h-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m21.707 7.293-5-5A.996.996 0 0 0 16 2H8a.996.996 0 0 0-.707.293l-5 5A.996.996 0 0 0 2 8v8c0 .266.105.52.293.707l5 5A.996.996 0 0 0 8 22h8c.266 0 .52-.105.707-.293l5-5A.996.996 0 0 0 22 16V8a.996.996 0 0 0-.293-.707zM20 15.586 15.586 20H8.414L4 15.586V8.414L8.414 4h7.172L20 8.414v7.172z\"}}]})(props);\n};\nexport function BiErrorCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.953 2C6.465 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.493 2 11.953 2zM12 20c-4.411 0-8-3.589-8-8s3.567-8 7.953-8C16.391 4 20 7.589 20 12s-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 7h2v7h-2zm0 8h2v2h-2z\"}}]})(props);\n};\nexport function BiError (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.001 10h2v5h-2zM11 16h2v2h-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13.768 4.2C13.42 3.545 12.742 3.138 12 3.138s-1.42.407-1.768 1.063L2.894 18.064a1.986 1.986 0 0 0 .054 1.968A1.984 1.984 0 0 0 4.661 21h14.678c.708 0 1.349-.362 1.714-.968a1.989 1.989 0 0 0 .054-1.968L13.768 4.2zM4.661 19 12 5.137 19.344 19H4.661z\"}}]})(props);\n};\nexport function BiEuro (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13.464 6c1.43 0 2.779.613 3.799 1.726l1.475-1.352C17.334 4.843 15.461 4 13.464 4c-1.998 0-3.87.843-5.272 2.375A8.034 8.034 0 0 0 6.589 9H4v2h2.114c-.038.33-.064.663-.064 1s.026.67.064 1H4v2h2.589c.362.97.901 1.861 1.603 2.626C9.594 19.157 11.466 20 13.464 20c1.997 0 3.87-.843 5.273-2.374l-1.475-1.352C16.243 17.387 14.894 18 13.464 18s-2.778-.612-3.798-1.726A5.937 5.937 0 0 1 8.801 15H13v-2H8.139c-.05-.328-.089-.66-.089-1s.039-.672.089-1H13V9H8.801c.24-.457.516-.893.865-1.274C10.686 6.613 12.034 6 13.464 6z\"}}]})(props);\n};\nexport function BiExclude (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 8h-3V5c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v9c0 1.103.897 2 2 2h3v3c0 1.103.897 2 2 2h9c1.103 0 2-.897 2-2v-9c0-1.103-.897-2-2-2zm-4 7H9V9h6v6z\"}}]})(props);\n};\nexport function BiExitFullscreen (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 4H8v4H4v2h6zM8 20h2v-6H4v2h4zm12-6h-6v6h2v-4h4zm0-6h-4V4h-2v6h6z\"}}]})(props);\n};\nexport function BiExit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.002 3h-14c-1.103 0-2 .897-2 2v4h2V5h14v14h-14v-4h-2v4c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.898-2-2-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m11 16 5-4-5-4v3.001H3v2h8z\"}}]})(props);\n};\nexport function BiExpandAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 12H3v9h9v-2H5zm7-7h7v7h2V3h-9z\"}}]})(props);\n};\nexport function BiExpandHorizontal (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8.29 5.64 1.93 12l6.36 6.36 1.42-1.41L4.76 12l4.95-4.95-1.42-1.41zm6 1.41L19.24 12l-4.95 4.95 1.42 1.41L22.07 12l-6.36-6.36-1.42 1.41z\"}}]})(props);\n};\nexport function BiExpandVertical (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m12 19.24-4.95-4.95-1.41 1.42L12 22.07l6.36-6.36-1.41-1.42L12 19.24zM5.64 8.29l1.41 1.42L12 4.76l4.95 4.95 1.41-1.42L12 1.93 5.64 8.29z\"}}]})(props);\n};\nexport function BiExpand (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21 15.344-2.121 2.121-3.172-3.172-1.414 1.414 3.172 3.172L15.344 21H21zM3 8.656l2.121-2.121 3.172 3.172 1.414-1.414-3.172-3.172L8.656 3H3zM21 3h-5.656l2.121 2.121-3.172 3.172 1.414 1.414 3.172-3.172L21 8.656zM3 21h5.656l-2.121-2.121 3.172-3.172-1.414-1.414-3.172 3.172L3 15.344z\"}}]})(props);\n};\nexport function BiExport (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 16h2V7h3l-4-5-4 5h3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M5 22h14c1.103 0 2-.897 2-2v-9c0-1.103-.897-2-2-2h-4v2h4v9H5v-9h4V9H5c-1.103 0-2 .897-2 2v9c0 1.103.897 2 2 2z\"}}]})(props);\n};\nexport function BiExtension (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 10V7c0-1.103-.897-2-2-2h-3c0-1.654-1.346-3-3-3S8 3.346 8 5H5c-1.103 0-2 .897-2 2v3.881l.659.239C4.461 11.41 5 12.166 5 13s-.539 1.59-1.341 1.88L3 15.119V19c0 1.103.897 2 2 2h3.881l.239-.659C9.41 19.539 10.166 19 11 19s1.59.539 1.88 1.341l.239.659H17c1.103 0 2-.897 2-2v-3c1.654 0 3-1.346 3-3s-1.346-3-3-3zm0 4h-2l-.003 5h-2.545c-.711-1.22-2.022-2-3.452-2s-2.741.78-3.452 2H5v-2.548C6.22 15.741 7 14.43 7 13s-.78-2.741-2-3.452V7h5V5a1 1 0 0 1 2 0v2h5v5h2a1 1 0 0 1 0 2z\"}}]})(props);\n};\nexport function BiFace (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 2c3.213 0 5.982 1.908 7.254 4.648a7.8 7.8 0 0 1-.895-.498c-.409-.258-.873-.551-1.46-.772-.669-.255-1.4-.378-2.234-.378s-1.565.123-2.234.377c-.587.223-1.051.516-1.472.781-.378.237-.703.443-1.103.594C9.41 8.921 8.926 9 8.33 9c-.595 0-1.079-.079-1.524-.248-.4-.151-.728-.358-1.106-.598-.161-.101-.34-.208-.52-.313C6.587 5.542 9.113 4 12 4zm0 16c-4.411 0-8-3.589-8-8 0-.81.123-1.59.348-2.327.094.058.185.11.283.173.411.26.876.554 1.466.776.669.255 1.399.378 2.233.378.833 0 1.564-.123 2.235-.377.587-.223 1.051-.516 1.472-.781.378-.237.703-.443 1.103-.595.445-.168.929-.247 1.525-.247s1.08.079 1.525.248c.399.15.725.356 1.114.602.409.258.873.551 1.46.773.363.138.748.229 1.153.291.049.357.083.717.083 1.086 0 4.411-3.589 8-8 8z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8.5\",\"cy\":\"13.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15.5\",\"cy\":\"13.5\",\"r\":\"1.5\"}}]})(props);\n};\nexport function BiFastForwardCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m13 16 5-4-5-4zm-6 0 5-4-5-4z\"}}]})(props);\n};\nexport function BiFastForward (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m19 12-7-5v10zM5 7v10l7-5z\"}}]})(props);\n};\nexport function BiFemaleSign (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C8.691 2 6 4.691 6 8c0 2.967 2.167 5.432 5 5.91V17H8v2h3v2.988h2V19h3v-2h-3v-3.09c2.833-.479 5-2.943 5-5.91 0-3.309-2.691-6-6-6zm0 10c-2.206 0-4-1.794-4-4s1.794-4 4-4 4 1.794 4 4-1.794 4-4 4z\"}}]})(props);\n};\nexport function BiFemale (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"4\",\"r\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14.948 7.684A.997.997 0 0 0 14 7h-4a.998.998 0 0 0-.948.684l-2 6 1.775.593L8 18h2v4h4v-4h2l-.827-3.724 1.775-.593-2-5.999z\"}}]})(props);\n};\nexport function BiFileBlank (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.937 8.68c-.011-.032-.02-.063-.033-.094a.997.997 0 0 0-.196-.293l-6-6a.997.997 0 0 0-.293-.196c-.03-.014-.062-.022-.094-.033a.991.991 0 0 0-.259-.051C13.04 2.011 13.021 2 13 2H6c-1.103 0-2 .897-2 2v16c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2V9c0-.021-.011-.04-.013-.062a.99.99 0 0 0-.05-.258zM16.586 8H14V5.414L16.586 8zM6 20V4h6v5a1 1 0 0 0 1 1h5l.002 10H6z\"}}]})(props);\n};\nexport function BiFileFind (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13.707 2.293A.996.996 0 0 0 13 2H6c-1.103 0-2 .897-2 2v16c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2V9a.996.996 0 0 0-.293-.707l-6-6zM6 4h6.586L18 9.414l.002 9.174-2.568-2.568c.35-.595.566-1.281.566-2.02 0-2.206-1.794-4-4-4s-4 1.794-4 4 1.794 4 4 4c.739 0 1.425-.216 2.02-.566L16.586 20H6V4zm6 12c-1.103 0-2-.897-2-2s.897-2 2-2 2 .897 2 2-.897 2-2 2z\"}}]})(props);\n};\nexport function BiFile (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.903 8.586a.997.997 0 0 0-.196-.293l-6-6a.997.997 0 0 0-.293-.196c-.03-.014-.062-.022-.094-.033a.991.991 0 0 0-.259-.051C13.04 2.011 13.021 2 13 2H6c-1.103 0-2 .897-2 2v16c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2V9c0-.021-.011-.04-.013-.062a.952.952 0 0 0-.051-.259c-.01-.032-.019-.063-.033-.093zM16.586 8H14V5.414L16.586 8zM6 20V4h6v5a1 1 0 0 0 1 1h5l.002 10H6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M8 12h8v2H8zm0 4h8v2H8zm0-8h2v2H8z\"}}]})(props);\n};\nexport function BiFilm (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM9 11V5h6v6H9zm6 2v6H9v-6h6zM5 5h2v2H5V5zm0 4h2v2H5V9zm0 4h2v2H5v-2zm0 4h2v2H5v-2zm14.002 2H17v-2h2.002v2zm-.001-4H17v-2h2.001v2zm0-4H17V9h2.001v2zM17 7V5h2v2h-2z\"}}]})(props);\n};\nexport function BiFilterAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 3H5a1 1 0 0 0-1 1v2.59c0 .523.213 1.037.583 1.407L10 13.414V21a1.001 1.001 0 0 0 1.447.895l4-2c.339-.17.553-.516.553-.895v-5.586l5.417-5.417c.37-.37.583-.884.583-1.407V4a1 1 0 0 0-1-1zm-6.707 9.293A.996.996 0 0 0 14 13v5.382l-2 1V13a.996.996 0 0 0-.293-.707L6 6.59V5h14.001l.002 1.583-5.71 5.71z\"}}]})(props);\n};\nexport function BiFilter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 11h10v2H7zM4 7h16v2H4zm6 8h4v2h-4z\"}}]})(props);\n};\nexport function BiFingerprint (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5.962 17.674C7 19.331 7 20.567 7 22h2c0-1.521 0-3.244-1.343-5.389l-1.695 1.063zM16.504 3.387C13.977 1.91 7.55.926 4.281 4.305c-3.368 3.481-2.249 9.072.001 11.392.118.122.244.229.369.333.072.061.146.116.205.184l1.494-1.33a3.918 3.918 0 0 0-.419-.391c-.072-.06-.146-.119-.214-.188-1.66-1.711-2.506-6.017.001-8.608 2.525-2.611 8.068-1.579 9.777-.581 2.691 1.569 4.097 4.308 4.109 4.333l1.789-.895c-.065-.135-1.668-3.289-4.889-5.167z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M9.34 12.822c-1.03-1.26-1.787-2.317-1.392-3.506.263-.785.813-1.325 1.637-1.604 1.224-.41 2.92-.16 4.04.601l1.123-1.654c-1.648-1.12-3.982-1.457-5.804-.841-1.408.476-2.435 1.495-2.892 2.866-.776 2.328.799 4.254 1.74 5.405.149.183.29.354.409.512C11 18.323 11 20.109 11 22h2c0-2.036 0-4.345-3.201-8.601a19.71 19.71 0 0 0-.459-.577zm5.791-3.344c1.835 1.764 3.034 4.447 3.889 8.701l1.961-.395c-.939-4.678-2.316-7.685-4.463-9.748l-1.387 1.442z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m11.556 9.169-1.115 1.66c.027.019 2.711 1.88 3.801 5.724l1.924-.545c-1.299-4.582-4.476-6.749-4.61-6.839zm3.132 9.29c.21 1.168.312 2.326.312 3.541h2c0-1.335-.112-2.608-.343-3.895l-1.969.354z\"}}]})(props);\n};\nexport function BiFirstAid (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 6h-3V4c0-1.103-.897-2-2-2H9c-1.103 0-2 .897-2 2v2H4c-1.103 0-2 .897-2 2v10c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V8c0-1.103-.897-2-2-2zM9 4h6v2H9V4zM4 18V8h16l.001 10H4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13 9h-2v3H8v2h3v3h2v-3h3v-2h-3z\"}}]})(props);\n};\nexport function BiFirstPage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m16.293 17.707 1.414-1.414L13.414 12l4.293-4.293-1.414-1.414L10.586 12zM7 6h2v12H7z\"}}]})(props);\n};\nexport function BiFlag (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 4H6V2H4v18H3v2h4v-2H6v-5h13a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1zm-1 9H6V6h12v7z\"}}]})(props);\n};\nexport function BiFolderMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 5h-8.586L9.707 3.293A.996.996 0 0 0 9 3H4c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V7c0-1.103-.897-2-2-2zM4 19V7h16l.002 12H4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7.874 12h8v2h-8z\"}}]})(props);\n};\nexport function BiFolderOpen (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2.165 19.551c.186.28.499.449.835.449h15c.4 0 .762-.238.919-.606l3-7A.998.998 0 0 0 21 11h-1V7c0-1.103-.897-2-2-2h-6.1L9.616 3.213A.997.997 0 0 0 9 3H4c-1.103 0-2 .897-2 2v14h.007a1 1 0 0 0 .158.551zM17.341 18H4.517l2.143-5h12.824l-2.143 5zM18 7v4H6c-.4 0-.762.238-.919.606L4 14.129V7h14z\"}}]})(props);\n};\nexport function BiFolderPlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 9h-2v3H8v2h3v3h2v-3h3v-2h-3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 5h-8.586L9.707 3.293A.996.996 0 0 0 9 3H4c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V7c0-1.103-.897-2-2-2zM4 19V7h16l.002 12H4z\"}}]})(props);\n};\nexport function BiFolder (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 5h-8.586L9.707 3.293A.997.997 0 0 0 9 3H4c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V7c0-1.103-.897-2-2-2zM4 19V7h16l.002 12H4z\"}}]})(props);\n};\nexport function BiFontColor (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 18h14v3H5zm7.5-14h-1c-.401 0-.764.24-.921.609L5.745 16h2.173l1.273-3h5.604l1.268 3h2.171L13.421 4.61A1 1 0 0 0 12.5 4zm-2.46 7 1.959-4.616L13.95 11h-3.91z\"}}]})(props);\n};\nexport function BiFontFamily (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 4h7v2h-7zm1 4h6v2h-6zm2 4h4v2h-4zM9.307 4l-6 16h2.137l1.875-5h6.363l1.875 5h2.137l-6-16H9.307zm-1.239 9L10.5 6.515 12.932 13H8.068z\"}}]})(props);\n};\nexport function BiFontSize (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m22 6-3-4-3 4h2v4h-2l3 4 3-4h-2V6zM9.307 4l-6 16h2.137l1.875-5h6.363l1.875 5h2.137l-6-16H9.307zm-1.239 9L10.5 6.515 12.932 13H8.068z\"}}]})(props);\n};\nexport function BiFont (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m11.307 4-6 16h2.137l1.875-5h6.363l1.875 5h2.137l-6-16h-2.387zm-1.239 9L12.5 6.515 14.932 13h-4.864z\"}}]})(props);\n};\nexport function BiFoodMenu (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 2h2v20H3zm7 4h7v2h-7zm0 4h7v2h-7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 2H6v20h13c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm0 18H8V4h11v16z\"}}]})(props);\n};\nexport function BiFoodTag (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zm-1 16H5V5h14v14z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"5\"}}]})(props);\n};\nexport function BiFootball (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.071 4.929a9.936 9.936 0 0 0-7.07-2.938 9.943 9.943 0 0 0-7.072 2.938c-3.899 3.898-3.899 10.243 0 14.142a9.94 9.94 0 0 0 7.073 2.938 9.936 9.936 0 0 0 7.07-2.937c3.899-3.898 3.899-10.243-.001-14.143zM12.181 4h-.359c.061-.001.119-.009.18-.009s.118.008.179.009zm6.062 13H16l-1.258 2.516a7.956 7.956 0 0 1-2.741.493 7.96 7.96 0 0 1-2.746-.494L8 17.01H5.765a7.96 7.96 0 0 1-1.623-3.532L6 11 4.784 8.567a7.936 7.936 0 0 1 1.559-2.224 7.994 7.994 0 0 1 3.22-1.969L12 6l2.438-1.625a8.01 8.01 0 0 1 3.22 1.968 7.94 7.94 0 0 1 1.558 2.221L18 11l1.858 2.478A7.952 7.952 0 0 1 18.243 17z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m8.5 11 1.5 4h4l1.5-4L12 8.5z\"}}]})(props);\n};\nexport function BiFork (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m14.47 13.77-1.41-1.42 5.66-5.65-1.42-1.42-5.65 5.66-1.42-1.41 5.66-5.66-1.42-1.42-6.36 6.37a3 3 0 0 0 0 4.24l.71.71-6.37 6.36 1.42 1.42 6.36-6.37.71.71a3 3 0 0 0 4.24 0l6.37-6.36-1.42-1.42z\"}}]})(props);\n};\nexport function BiFridge (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 2H6c-1.103 0-2 .897-2 2v16c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm0 2 .001 5H10V7H8v2H6V4h12zM6 20v-9h2v3h2v-3h8.001l.001 9H6z\"}}]})(props);\n};\nexport function BiFullscreen (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 5h5V3H3v7h2zm5 14H5v-5H3v7h7zm11-5h-2v5h-5v2h7zm-2-4h2V3h-7v2h5z\"}}]})(props);\n};\nexport function BiGame (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.937 7.53C19.227 4.119 15.803 2 12 2 6.486 2 2 6.486 2 12s4.486 10 10 10c3.803 0 7.227-2.119 8.937-5.53a1 1 0 0 0-.397-1.316L15.017 12l5.522-3.153c.461-.264.636-.842.398-1.317zm-8.433 3.602a.999.999 0 0 0 0 1.736l6.173 3.525A7.949 7.949 0 0 1 12 20c-4.411 0-8-3.589-8-8s3.589-8 8-8a7.95 7.95 0 0 1 6.677 3.606l-6.173 3.526z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"11.5\",\"cy\":\"7.5\",\"r\":\"1.5\"}}]})(props);\n};\nexport function BiGasPump (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m19.616 6.48.014-.017-4-3.24-1.26 1.554 2.067 1.674a2.99 2.99 0 0 0-1.395 3.058c.149.899.766 1.676 1.565 2.112.897.49 1.685.446 2.384.197L18.976 18a.996.996 0 0 1-1.39.922.995.995 0 0 1-.318-.217.996.996 0 0 1-.291-.705L17 16a2.98 2.98 0 0 0-.877-2.119A3 3 0 0 0 14 13h-1V5c0-1.103-.897-2-2-2H4c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h7c1.103 0 2-.897 2-2v-4h1c.136 0 .267.027.391.078a1.028 1.028 0 0 1 .531.533A.994.994 0 0 1 15 16l-.024 2c0 .406.079.799.236 1.168.151.359.368.68.641.951a2.97 2.97 0 0 0 2.123.881c.406 0 .798-.078 1.168-.236.358-.15.68-.367.951-.641A2.983 2.983 0 0 0 20.976 18L21 9a2.997 2.997 0 0 0-1.384-2.52zM4 5h7l.001 4H4V5zm0 14v-8h7.001l.001 8H4zm14-9a1 1 0 1 1 0-2 1 1 0 0 1 0 2z\"}}]})(props);\n};\nexport function BiGhost (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2c-4.963 0-9 4.038-9 9v8h.051c.245 1.691 1.69 3 3.449 3 1.174 0 2.074-.417 2.672-1.174a3.99 3.99 0 0 0 5.668-.014c.601.762 1.504 1.188 2.66 1.188 1.93 0 3.5-1.57 3.5-3.5V11c0-4.962-4.037-9-9-9zm7 16.5c0 .827-.673 1.5-1.5 1.5-.449 0-1.5 0-1.5-2v-1h-2v1c0 1.103-.897 2-2 2s-2-.897-2-2v-1H8v1c0 1.845-.774 2-1.5 2-.827 0-1.5-.673-1.5-1.5V11c0-3.86 3.141-7 7-7s7 3.14 7 7v7.5z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"9\",\"cy\":\"10\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15\",\"cy\":\"10\",\"r\":\"2\"}}]})(props);\n};\nexport function BiGift (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 7h-1.209A4.92 4.92 0 0 0 19 5.5C19 3.57 17.43 2 15.5 2c-1.622 0-2.705 1.482-3.404 3.085C11.407 3.57 10.269 2 8.5 2 6.57 2 5 3.57 5 5.5c0 .596.079 1.089.209 1.5H4c-1.103 0-2 .897-2 2v2c0 1.103.897 2 2 2v7c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2v-7c1.103 0 2-.897 2-2V9c0-1.103-.897-2-2-2zm-4.5-3c.827 0 1.5.673 1.5 1.5C17 7 16.374 7 16 7h-2.478c.511-1.576 1.253-3 1.978-3zM7 5.5C7 4.673 7.673 4 8.5 4c.888 0 1.714 1.525 2.198 3H8c-.374 0-1 0-1-1.5zM4 9h7v2H4V9zm2 11v-7h5v7H6zm12 0h-5v-7h5v7zm-5-9V9.085L13.017 9H20l.001 2H13z\"}}]})(props);\n};\nexport function BiGitBranch (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.5 4C15.57 4 14 5.57 14 7.5c0 1.554 1.025 2.859 2.43 3.315-.146.932-.547 1.7-1.23 2.323-1.946 1.773-5.527 1.935-7.2 1.907V8.837c1.44-.434 2.5-1.757 2.5-3.337C10.5 3.57 8.93 2 7 2S3.5 3.57 3.5 5.5c0 1.58 1.06 2.903 2.5 3.337v6.326c-1.44.434-2.5 1.757-2.5 3.337C3.5 20.43 5.07 22 7 22s3.5-1.57 3.5-3.5c0-.551-.14-1.065-.367-1.529 2.06-.186 4.657-.757 6.409-2.35 1.097-.997 1.731-2.264 1.904-3.768C19.915 10.438 21 9.1 21 7.5 21 5.57 19.43 4 17.5 4zm-12 1.5C5.5 4.673 6.173 4 7 4s1.5.673 1.5 1.5S7.827 7 7 7s-1.5-.673-1.5-1.5zM7 20c-.827 0-1.5-.673-1.5-1.5a1.5 1.5 0 0 1 1.482-1.498l.13.01A1.495 1.495 0 0 1 7 20zM17.5 9c-.827 0-1.5-.673-1.5-1.5S16.673 6 17.5 6s1.5.673 1.5 1.5S18.327 9 17.5 9z\"}}]})(props);\n};\nexport function BiGitCommit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 6c-2.967 0-5.431 2.167-5.909 5H2v2h4.092c.479 2.832 2.942 4.998 5.909 4.998s5.43-2.166 5.909-4.998H22v-2h-4.09c-.478-2.833-2.942-5-5.91-5zm0 9.998c-2.205 0-3.999-1.794-3.999-3.999S9.795 8 12 8c2.206 0 4 1.794 4 3.999s-1.794 3.999-4 3.999z\"}}]})(props);\n};\nexport function BiGitCompare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6.01 2c-1.93 0-3.5 1.57-3.5 3.5 0 1.58 1.06 2.903 2.5 3.337v7.16c-.001.179.027 1.781 1.174 2.931C6.892 19.64 7.84 20 9 20v2l4-3-4-3v2c-1.823 0-1.984-1.534-1.99-2V8.837c1.44-.434 2.5-1.757 2.5-3.337 0-1.93-1.571-3.5-3.5-3.5zm0 5c-.827 0-1.5-.673-1.5-1.5S5.183 4 6.01 4s1.5.673 1.5 1.5S6.837 7 6.01 7zm13 8.163V7.997C19.005 6.391 17.933 4 15 4V2l-4 3 4 3V6c1.829 0 2.001 1.539 2.01 2v7.163c-1.44.434-2.5 1.757-2.5 3.337 0 1.93 1.57 3.5 3.5 3.5s3.5-1.57 3.5-3.5c0-1.58-1.06-2.903-2.5-3.337zm-1 4.837c-.827 0-1.5-.673-1.5-1.5s.673-1.5 1.5-1.5 1.5.673 1.5 1.5-.673 1.5-1.5 1.5z\"}}]})(props);\n};\nexport function BiGitMerge (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2.5 18.5C2.5 20.43 4.07 22 6 22s3.5-1.57 3.5-3.5c0-1.58-1.06-2.903-2.5-3.337v-3.488c.244.273.509.527.813.744 1.18.844 2.617 1.098 3.918 1.098.966 0 1.853-.14 2.506-.281a3.5 3.5 0 0 0 3.264 2.265c1.93 0 3.5-1.57 3.5-3.5s-1.57-3.5-3.5-3.5a3.5 3.5 0 0 0-3.404 2.718c-1.297.321-3.664.616-5.119-.426-.666-.477-1.09-1.239-1.306-2.236C8.755 7.96 9.5 6.821 9.5 5.5 9.5 3.57 7.93 2 6 2S2.5 3.57 2.5 5.5c0 1.58 1.06 2.903 2.5 3.337v6.326c-1.44.434-2.5 1.757-2.5 3.337zm15-8c.827 0 1.5.673 1.5 1.5s-.673 1.5-1.5 1.5S16 12.827 16 12s.673-1.5 1.5-1.5zm-10 8c0 .827-.673 1.5-1.5 1.5s-1.5-.673-1.5-1.5S5.173 17 6 17s1.5.673 1.5 1.5zm-3-13C4.5 4.673 5.173 4 6 4s1.5.673 1.5 1.5S6.827 7 6 7s-1.5-.673-1.5-1.5z\"}}]})(props);\n};\nexport function BiGitPullRequest (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.01 15.163V7.997C19.005 6.391 17.933 4 15 4V2l-4 3 4 3V6c1.829 0 2.001 1.539 2.01 2v7.163c-1.44.434-2.5 1.757-2.5 3.337 0 1.93 1.57 3.5 3.5 3.5s3.5-1.57 3.5-3.5c0-1.58-1.06-2.903-2.5-3.337zm-1 4.837c-.827 0-1.5-.673-1.5-1.5s.673-1.5 1.5-1.5 1.5.673 1.5 1.5-.673 1.5-1.5 1.5zM9.5 5.5C9.5 3.57 7.93 2 6 2S2.5 3.57 2.5 5.5c0 1.58 1.06 2.903 2.5 3.337v6.326c-1.44.434-2.5 1.757-2.5 3.337C2.5 20.43 4.07 22 6 22s3.5-1.57 3.5-3.5c0-1.58-1.06-2.903-2.5-3.337V8.837C8.44 8.403 9.5 7.08 9.5 5.5zm-5 0C4.5 4.673 5.173 4 6 4s1.5.673 1.5 1.5S6.827 7 6 7s-1.5-.673-1.5-1.5zm3 13c0 .827-.673 1.5-1.5 1.5s-1.5-.673-1.5-1.5S5.173 17 6 17s1.5.673 1.5 1.5z\"}}]})(props);\n};\nexport function BiGitRepoForked (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5.559 8.855c.166 1.183.789 3.207 3.087 4.079C11 13.829 11 14.534 11 15v.163c-1.44.434-2.5 1.757-2.5 3.337 0 1.93 1.57 3.5 3.5 3.5s3.5-1.57 3.5-3.5c0-1.58-1.06-2.903-2.5-3.337V15c0-.466 0-1.171 2.354-2.065 2.298-.872 2.921-2.896 3.087-4.079C19.912 8.441 21 7.102 21 5.5 21 3.57 19.43 2 17.5 2S14 3.57 14 5.5c0 1.552 1.022 2.855 2.424 3.313-.146.735-.565 1.791-1.778 2.252-1.192.452-2.053.953-2.646 1.536-.593-.583-1.453-1.084-2.646-1.536-1.213-.461-1.633-1.517-1.778-2.252C8.978 8.355 10 7.052 10 5.5 10 3.57 8.43 2 6.5 2S3 3.57 3 5.5c0 1.602 1.088 2.941 2.559 3.355zM17.5 4c.827 0 1.5.673 1.5 1.5S18.327 7 17.5 7 16 6.327 16 5.5 16.673 4 17.5 4zm-4 14.5c0 .827-.673 1.5-1.5 1.5s-1.5-.673-1.5-1.5.673-1.5 1.5-1.5 1.5.673 1.5 1.5zM6.5 4C7.327 4 8 4.673 8 5.5S7.327 7 6.5 7 5 6.327 5 5.5 5.673 4 6.5 4z\"}}]})(props);\n};\nexport function BiGlassesAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.948 11.684-2-6A.997.997 0 0 0 19 5h-3v2h2.279l1.334 4H15c-1.103 0-2 .897-2 2h-2c0-1.103-.897-2-2-2H4.387l1.334-4H8V5H5a.998.998 0 0 0-.948.684l-2 6 .012.004A.928.928 0 0 0 2 12v4c0 1.654 1.346 3 3 3h3c1.654 0 3-1.346 3-3v-1h2v1c0 1.654 1.346 3 3 3h3c1.654 0 3-1.346 3-3v-4a.964.964 0 0 0-.063-.313l.011-.003zM9 16c0 .551-.448 1-1 1H5c-.552 0-1-.449-1-1v-3h5v3zm11 0c0 .551-.448 1-1 1h-3c-.552 0-1-.449-1-1v-3h5v3z\"}}]})(props);\n};\nexport function BiGlasses (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.977 13.783-2-9A1.002 1.002 0 0 0 19 4h-3v2h2.198l.961 4.326A4.467 4.467 0 0 0 17.5 10c-1.953 0-3.603 1.258-4.224 3h-2.553c-.621-1.742-2.271-3-4.224-3-.587 0-1.145.121-1.659.326L5.802 6H8V4H5a1 1 0 0 0-.976.783l-2 9 .047.011A4.552 4.552 0 0 0 2 14.5C2 16.981 4.019 19 6.5 19c2.31 0 4.197-1.756 4.449-4h2.102c.252 2.244 2.139 4 4.449 4 2.481 0 4.5-2.019 4.5-4.5 0-.242-.034-.475-.071-.706l.048-.011zM6.5 17C5.122 17 4 15.878 4 14.5S5.122 12 6.5 12 9 13.122 9 14.5 7.878 17 6.5 17zm11 0c-1.379 0-2.5-1.122-2.5-2.5s1.121-2.5 2.5-2.5 2.5 1.122 2.5 2.5-1.121 2.5-2.5 2.5z\"}}]})(props);\n};\nexport function BiGlobeAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 18.791V20H9v2h6v-2h-2v-1.845a9.934 9.934 0 0 0 3.071-2.084c3.898-3.898 3.898-10.243 0-14.143l-1.414 1.414c3.119 3.12 3.119 8.195 0 11.314-3.119 3.118-8.195 3.12-11.314 0L1.929 16.07A9.971 9.971 0 0 0 9 18.994a9.98 9.98 0 0 0 2-.203z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M3 9c0 3.309 2.691 6 6 6s6-2.691 6-6-2.691-6-6-6-6 2.691-6 6zm10 0c0 2.206-1.794 4-4 4s-4-1.794-4-4 1.794-4 4-4 4 1.794 4 4z\"}}]})(props);\n};\nexport function BiGlobe (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm7.931 9h-2.764a14.67 14.67 0 0 0-1.792-6.243A8.013 8.013 0 0 1 19.931 11zM12.53 4.027c1.035 1.364 2.427 3.78 2.627 6.973H9.03c.139-2.596.994-5.028 2.451-6.974.172-.01.344-.026.519-.026.179 0 .354.016.53.027zm-3.842.7C7.704 6.618 7.136 8.762 7.03 11H4.069a8.013 8.013 0 0 1 4.619-6.273zM4.069 13h2.974c.136 2.379.665 4.478 1.556 6.23A8.01 8.01 0 0 1 4.069 13zm7.381 6.973C10.049 18.275 9.222 15.896 9.041 13h6.113c-.208 2.773-1.117 5.196-2.603 6.972-.182.012-.364.028-.551.028-.186 0-.367-.016-.55-.027zm4.011-.772c.955-1.794 1.538-3.901 1.691-6.201h2.778a8.005 8.005 0 0 1-4.469 6.201z\"}}]})(props);\n};\nexport function BiGridAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 3H4a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zM9 9H5V5h4v4zm5 2h6a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1h-6a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1zm1-6h4v4h-4V5zM3 20a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v6zm2-5h4v4H5v-4zm8 5a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1h-6a1 1 0 0 0-1 1v6zm2-5h4v4h-4v-4z\"}}]})(props);\n};\nexport function BiGridHorizontal (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 7h4v4h-4zm6 0h4v4h-4zM4 7h4v4H4zm6 6h4v4h-4zm6 0h4v4h-4zM4 13h4v4H4z\"}}]})(props);\n};\nexport function BiGridSmall (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 7h4v4H7zm0 6h4v4H7zm6-6h4v4h-4zm0 6h4v4h-4z\"}}]})(props);\n};\nexport function BiGridVertical (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 10h4v4H7zm0-6h4v4H7zm0 12h4v4H7zm6-6h4v4h-4zm0-6h4v4h-4zm0 12h4v4h-4z\"}}]})(props);\n};\nexport function BiGrid (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 3H4.984c-1.103 0-2 .897-2 2v14.016c0 1.103.897 2 2 2H19c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2h-4zm4 5h-3V5h3v3zM4.984 10h3v4.016h-3V10zm5 0H14v4.016H9.984V10zM16 10h3v4.016h-3V10zm-2-5v3H9.984V5H14zM7.984 5v3h-3V5h3zm-3 11.016h3v3h-3v-3zm5 3v-3H14v3H9.984zm6.016 0v-3h3.001v3H16z\"}}]})(props);\n};\nexport function BiGroup (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.604 11.048a5.67 5.67 0 0 0 .751-3.44c-.179-1.784-1.175-3.361-2.803-4.44l-1.105 1.666c1.119.742 1.8 1.799 1.918 2.974a3.693 3.693 0 0 1-1.072 2.986l-1.192 1.192 1.618.475C18.951 13.701 19 17.957 19 18h2c0-1.789-.956-5.285-4.396-6.952z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M9.5 12c2.206 0 4-1.794 4-4s-1.794-4-4-4-4 1.794-4 4 1.794 4 4 4zm0-6c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2zm1.5 7H8c-3.309 0-6 2.691-6 6v1h2v-1c0-2.206 1.794-4 4-4h3c2.206 0 4 1.794 4 4v1h2v-1c0-3.309-2.691-6-6-6z\"}}]})(props);\n};\nexport function BiHandicap (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"9\",\"cy\":\"4\",\"r\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M16.98 14.804A1 1 0 0 0 16 14h-4.133l-.429-3H16V9h-4.847l-.163-1.142A1 1 0 0 0 10 7H9a1.003 1.003 0 0 0-.99 1.142l.877 6.142A2.009 2.009 0 0 0 10.867 16h4.313l.839 4.196c.094.467.504.804.981.804h3v-2h-2.181l-.839-4.196z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12.51 17.5c-.739 1.476-2.25 2.5-4.01 2.5A4.505 4.505 0 0 1 4 15.5a4.503 4.503 0 0 1 2.817-4.167l-.289-2.025C3.905 10.145 2 12.604 2 15.5 2 19.084 4.916 22 8.5 22a6.497 6.497 0 0 0 5.545-3.126l-.274-1.374H12.51z\"}}]})(props);\n};\nexport function BiHappyAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8.5\",\"cy\":\"9.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15.493\",\"cy\":\"9.493\",\"r\":\"1.493\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 18c5 0 6-5 6-5H6s1 5 6 5z\"}}]})(props);\n};\nexport function BiHappyBeaming (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 18c4 0 5-4 5-4H7s1 4 5 4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m13 12 2 .012c.012-.462.194-1.012 1-1.012s.988.55 1 1h2c0-1.206-.799-3-3-3s-3 1.794-3 3zm-5-1c.806 0 .988.55 1 1h2c0-1.206-.799-3-3-3s-3 1.794-3 3l2 .012C7.012 11.55 7.194 11 8 11z\"}}]})(props);\n};\nexport function BiHappyHeartEyes (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 18c4 0 5-4 5-4H7s1 4 5 4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 22c5.514 0 10-4.486 10-10S17.514 2 12 2 2 6.486 2 12s4.486 10 10 10zm0-18c4.411 0 8 3.589 8 8s-3.589 8-8 8-8-3.589-8-8 3.589-8 8-8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m8.535 12.634 2.05-2.083a1.485 1.485 0 0 0-.018-2.118 1.49 1.49 0 0 0-2.065-.034 1.488 1.488 0 0 0-2.067.068c-.586.6-.579 1.53.019 2.117l2.081 2.05zm7 0 2.05-2.083a1.485 1.485 0 0 0-.018-2.118 1.49 1.49 0 0 0-2.065-.034 1.488 1.488 0 0 0-2.068.067c-.586.6-.579 1.53.019 2.117l2.082 2.051z\"}}]})(props);\n};\nexport function BiHappy (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8.5\",\"cy\":\"10.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15.493\",\"cy\":\"10.493\",\"r\":\"1.493\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 18c4 0 5-4 5-4H7s1 4 5 4z\"}}]})(props);\n};\nexport function BiHardHat (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 15a9.11 9.11 0 0 0-.18-1.81 8.53 8.53 0 0 0-.53-1.69 8.08 8.08 0 0 0-.83-1.5 8.73 8.73 0 0 0-1.1-1.33A8.27 8.27 0 0 0 17 7.54a8.08 8.08 0 0 0-1.53-.83L15 6.52V5a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v1.52l-.5.19a8.08 8.08 0 0 0-1.5.83 8.27 8.27 0 0 0-1.33 1.1A8.27 8.27 0 0 0 4.54 10a8.08 8.08 0 0 0-.83 1.53 9 9 0 0 0-.53 1.69A9.11 9.11 0 0 0 3 15v3H2v2h20v-2h-1zM5 15a7.33 7.33 0 0 1 .14-1.41 6.64 6.64 0 0 1 .41-1.31 7.15 7.15 0 0 1 .64-1.19 7.15 7.15 0 0 1 1.9-1.9A7.33 7.33 0 0 1 9 8.68V15h2V6h2v9h2V8.68a8.13 8.13 0 0 1 .91.51 7.09 7.09 0 0 1 1 .86 6.44 6.44 0 0 1 .85 1 6 6 0 0 1 .65 1.19 7.13 7.13 0 0 1 .41 1.31A7.33 7.33 0 0 1 19 15v3H5z\"}}]})(props);\n};\nexport function BiHash (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.018 3.815 15.232 8h-4.966l.716-3.815-1.964-.37L8.232 8H4v2h3.857l-.751 4H3v2h3.731l-.714 3.805 1.965.369L8.766 16h4.966l-.714 3.805 1.965.369.783-4.174H20v-2h-3.859l.751-4H21V8h-3.733l.716-3.815-1.965-.37zM14.106 14H9.141l.751-4h4.966l-.752 4z\"}}]})(props);\n};\nexport function BiHdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.983 13.821-1.851-10.18A1.998 1.998 0 0 0 18.165 2H5.835a2 2 0 0 0-1.968 1.643l-1.85 10.178.019.003c-.012.06-.036.114-.036.176v5c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2v-5c0-.063-.024-.116-.035-.176l.018-.003zM5.835 4h12.331l1.637 9H4.198l1.637-9zM4 19v-4h16l.002 4H4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M17 16h2v2h-2zm-3 0h2v2h-2z\"}}]})(props);\n};\nexport function BiHeading (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 20V4h-3v6H9V4H6v16h3v-7h6v7z\"}}]})(props);\n};\nexport function BiHeadphone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 12v-1.707c0-4.442-3.479-8.161-7.755-8.29-2.204-.051-4.251.736-5.816 2.256A7.933 7.933 0 0 0 4 10v2c-1.103 0-2 .897-2 2v4c0 1.103.897 2 2 2h2V10a5.95 5.95 0 0 1 1.821-4.306 5.977 5.977 0 0 1 4.363-1.691C15.392 4.099 18 6.921 18 10.293V20h2c1.103 0 2-.897 2-2v-4c0-1.103-.897-2-2-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7 12h2v8H7zm8 0h2v8h-2z\"}}]})(props);\n};\nexport function BiHealth (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.649 5.286 14 8.548V2.025h-4v6.523L4.351 5.286l-2 3.465 5.648 3.261-5.648 3.261 2 3.465L10 15.477V22h4v-6.523l5.649 3.261 2-3.465-5.648-3.261 5.648-3.261z\"}}]})(props);\n};\nexport function BiHeartCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.279 8.833 12 9.112l-.279-.279a2.745 2.745 0 0 0-3.906 0 2.745 2.745 0 0 0 0 3.907L12 16.926l4.186-4.186a2.745 2.745 0 0 0 0-3.907 2.746 2.746 0 0 0-3.907 0z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}}]})(props);\n};\nexport function BiHeartSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m11.998 17 4.186-4.186a2.745 2.745 0 0 0 0-3.907 2.746 2.746 0 0 0-3.907 0l-.278.279-.279-.279a2.746 2.746 0 0 0-3.907 0 2.746 2.746 0 0 0 0 3.907L11.998 17z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M21 4a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1V4zm-2 15H5V5h14v14z\"}}]})(props);\n};\nexport function BiHeart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 4.595a5.904 5.904 0 0 0-3.996-1.558 5.942 5.942 0 0 0-4.213 1.758c-2.353 2.363-2.352 6.059.002 8.412l7.332 7.332c.17.299.498.492.875.492a.99.99 0 0 0 .792-.409l7.415-7.415c2.354-2.354 2.354-6.049-.002-8.416a5.938 5.938 0 0 0-4.209-1.754A5.906 5.906 0 0 0 12 4.595zm6.791 1.61c1.563 1.571 1.564 4.025.002 5.588L12 18.586l-6.793-6.793c-1.562-1.563-1.561-4.017-.002-5.584.76-.756 1.754-1.172 2.799-1.172s2.035.416 2.789 1.17l.5.5a.999.999 0 0 0 1.414 0l.5-.5c1.512-1.509 4.074-1.505 5.584-.002z\"}}]})(props);\n};\nexport function BiHelpCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 6a3.939 3.939 0 0 0-3.934 3.934h2C10.066 8.867 10.934 8 12 8s1.934.867 1.934 1.934c0 .598-.481 1.032-1.216 1.626a9.208 9.208 0 0 0-.691.599c-.998.997-1.027 2.056-1.027 2.174V15h2l-.001-.633c.001-.016.033-.386.441-.793.15-.15.339-.3.535-.458.779-.631 1.958-1.584 1.958-3.182A3.937 3.937 0 0 0 12 6zm-1 10h2v2h-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}}]})(props);\n};\nexport function BiHide (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 19c.946 0 1.81-.103 2.598-.281l-1.757-1.757c-.273.021-.55.038-.841.038-5.351 0-7.424-3.846-7.926-5a8.642 8.642 0 0 1 1.508-2.297L4.184 8.305c-1.538 1.667-2.121 3.346-2.132 3.379a.994.994 0 0 0 0 .633C2.073 12.383 4.367 19 12 19zm0-14c-1.837 0-3.346.396-4.604.981L3.707 2.293 2.293 3.707l18 18 1.414-1.414-3.319-3.319c2.614-1.951 3.547-4.615 3.561-4.657a.994.994 0 0 0 0-.633C21.927 11.617 19.633 5 12 5zm4.972 10.558-2.28-2.28c.19-.39.308-.819.308-1.278 0-1.641-1.359-3-3-3-.459 0-.888.118-1.277.309L8.915 7.501A9.26 9.26 0 0 1 12 7c5.351 0 7.424 3.846 7.926 5-.302.692-1.166 2.342-2.954 3.558z\"}}]})(props);\n};\nexport function BiHighlight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m20.707 5.826-3.535-3.533a.999.999 0 0 0-1.408-.006L7.096 10.82a1.01 1.01 0 0 0-.273.488l-1.024 4.437L4 18h2.828l1.142-1.129 3.588-.828c.18-.042.345-.133.477-.262l8.667-8.535a1 1 0 0 0 .005-1.42zm-9.369 7.833-2.121-2.12 7.243-7.131 2.12 2.12-7.242 7.131zM4 20h16v2H4z\"}}]})(props);\n};\nexport function BiHistory (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 8v5h5v-2h-3V8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M21.292 8.497a8.957 8.957 0 0 0-1.928-2.862 9.004 9.004 0 0 0-4.55-2.452 9.09 9.09 0 0 0-3.626 0 8.965 8.965 0 0 0-4.552 2.453 9.048 9.048 0 0 0-1.928 2.86A8.963 8.963 0 0 0 4 12l.001.025H2L5 16l3-3.975H6.001L6 12a6.957 6.957 0 0 1 1.195-3.913 7.066 7.066 0 0 1 1.891-1.892 7.034 7.034 0 0 1 2.503-1.054 7.003 7.003 0 0 1 8.269 5.445 7.117 7.117 0 0 1 0 2.824 6.936 6.936 0 0 1-1.054 2.503c-.25.371-.537.72-.854 1.036a7.058 7.058 0 0 1-2.225 1.501 6.98 6.98 0 0 1-1.313.408 7.117 7.117 0 0 1-2.823 0 6.957 6.957 0 0 1-2.501-1.053 7.066 7.066 0 0 1-1.037-.855l-1.414 1.414A8.985 8.985 0 0 0 13 21a9.05 9.05 0 0 0 3.503-.707 9.009 9.009 0 0 0 3.959-3.26A8.968 8.968 0 0 0 22 12a8.928 8.928 0 0 0-.708-3.503z\"}}]})(props);\n};\nexport function BiHive (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m20.895 7.553-2-4A1.001 1.001 0 0 0 18 3h-5c-.379 0-.725.214-.895.553L10.382 7H6c-.379 0-.725.214-.895.553l-2 4a1 1 0 0 0 0 .895l2 4c.17.338.516.552.895.552h4.382l1.724 3.447A.998.998 0 0 0 13 21h5c.379 0 .725-.214.895-.553l2-4a1 1 0 0 0 0-.895L19.118 12l1.776-3.553a1 1 0 0 0 .001-.894zM13.618 5h3.764l1.5 3-1.5 3h-3.764l-1.5-3 1.5-3zm-8.5 7 1.5-3h3.764l1.5 3-1.5 3H6.618l-1.5-3zm12.264 7h-3.764l-1.5-3 1.5-3h3.764l1.5 3-1.5 3z\"}}]})(props);\n};\nexport function BiHomeAlt2 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.71 2.29a1 1 0 0 0-1.42 0l-9 9a1 1 0 0 0 0 1.42A1 1 0 0 0 3 13h1v7a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7h1a1 1 0 0 0 1-1 1 1 0 0 0-.29-.71zM6 20v-9.59l6-6 6 6V20z\"}}]})(props);\n};\nexport function BiHomeAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 22h14a2 2 0 0 0 2-2v-9a1 1 0 0 0-.29-.71l-8-8a1 1 0 0 0-1.41 0l-8 8A1 1 0 0 0 3 11v9a2 2 0 0 0 2 2zm5-2v-5h4v5zm-5-8.59 7-7 7 7V20h-3v-5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v5H5z\"}}]})(props);\n};\nexport function BiHomeCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 13h1v7c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2v-7h1a1 1 0 0 0 .707-1.707l-9-9a.999.999 0 0 0-1.414 0l-9 9A1 1 0 0 0 3 13zm9-8.586 6 6V15l.001 5H6v-9.585l6-6.001z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 17c2.206 0 4-1.794 4-4s-1.794-4-4-4-4 1.794-4 4 1.794 4 4 4zm0-6c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2z\"}}]})(props);\n};\nexport function BiHomeHeart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m12.223 11.641-.223.22-.224-.22a2.224 2.224 0 0 0-3.125 0 2.13 2.13 0 0 0 0 3.07L12 18l3.349-3.289a2.13 2.13 0 0 0 0-3.07 2.225 2.225 0 0 0-3.126 0z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m21.707 11.293-9-9a.999.999 0 0 0-1.414 0l-9 9A1 1 0 0 0 3 13h1v7c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2v-7h1a1 1 0 0 0 .707-1.707zM18.001 20H6v-9.585l6-6 6 6V15l.001 5z\"}}]})(props);\n};\nexport function BiHomeSmile (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 13h1v7c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2v-7h1a1 1 0 0 0 .707-1.707l-9-9a.999.999 0 0 0-1.414 0l-9 9A1 1 0 0 0 3 13zm9-8.586 6 6V15l.001 5H6v-9.586l6-6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 18c3.703 0 4.901-3.539 4.95-3.689l-1.9-.621c-.008.023-.781 2.31-3.05 2.31-2.238 0-3.02-2.221-3.051-2.316l-1.899.627C7.099 14.461 8.297 18 12 18z\"}}]})(props);\n};\nexport function BiHome (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 13h1v7c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2v-7h1a1 1 0 0 0 .707-1.707l-9-9a.999.999 0 0 0-1.414 0l-9 9A1 1 0 0 0 3 13zm7 7v-5h4v5h-4zm2-15.586 6 6V15l.001 5H16v-5c0-1.103-.897-2-2-2h-4c-1.103 0-2 .897-2 2v5H6v-9.586l6-6z\"}}]})(props);\n};\nexport function BiHorizontalCenter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m5.005 15.995 4-4-4-4v3h-3v2h3zm14-5v-3l-4 4 4 4v-3h3v-2h-2.072zm-8 7h2v3h-2zm0-5h2v3h-2zm0-5h2v3h-2zm0-5h2v3h-2z\"}}]})(props);\n};\nexport function BiHorizontalLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m11 8-4 4 4 4v-3h8v-2h-8V8zM3 18h2v3H3zM3 13h2v3H3zM3 8h2v3H3zM3 3h2v3H3z\"}}]})(props);\n};\nexport function BiHorizontalRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 11H5v2h8v3l4-4-4-4v3zM19 3h2v3h-2zM19 8h2v3h-2zM19 13h2v3h-2zM19 18h2v3h-2z\"}}]})(props);\n};\nexport function BiHotel (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"7.5\",\"cy\":\"11.5\",\"r\":\"2.5\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M17.205 7H12a1 1 0 0 0-1 1v7H4V6H2v14h2v-3h16v3h2v-8.205A4.8 4.8 0 0 0 17.205 7zM13 15V9h4.205A2.798 2.798 0 0 1 20 11.795V15h-7z\"}}]})(props);\n};\nexport function BiHourglass (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.566 11.021A7.016 7.016 0 0 0 19 5V4h1V2H4v2h1v1a7.016 7.016 0 0 0 3.434 6.021c.354.208.566.545.566.9v.158c0 .354-.212.69-.566.9A7.016 7.016 0 0 0 5 19v1H4v2h16v-2h-1v-1a7.014 7.014 0 0 0-3.433-6.02c-.355-.21-.567-.547-.567-.901v-.158c0-.355.212-.692.566-.9zm-1.015 3.681A5.008 5.008 0 0 1 17 19v1H7v-1a5.01 5.01 0 0 1 2.45-4.299c.971-.573 1.55-1.554 1.55-2.622v-.158c0-1.069-.58-2.051-1.551-2.623A5.008 5.008 0 0 1 7 5V4h10v1c0 1.76-.938 3.406-2.449 4.298C13.58 9.87 13 10.852 13 11.921v.158c0 1.068.579 2.049 1.551 2.623z\"}}]})(props);\n};\nexport function BiIdCard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9.715 12c1.151 0 2-.849 2-2s-.849-2-2-2-2 .849-2 2 .848 2 2 2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4c-1.103 0-2 .841-2 1.875v12.25C2 19.159 2.897 20 4 20h16c1.103 0 2-.841 2-1.875V5.875C22 4.841 21.103 4 20 4zm0 14-16-.011V6l16 .011V18z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14 9h4v2h-4zm1 4h3v2h-3zm-1.57 2.536c0-1.374-1.676-2.786-3.715-2.786S6 14.162 6 15.536V16h7.43v-.464z\"}}]})(props);\n};\nexport function BiImageAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 5h13v7h2V5c0-1.103-.897-2-2-2H4c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h8v-2H4V5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m8 11-3 4h11l-4-6-3 4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 14h-2v3h-3v2h3v3h2v-3h3v-2h-3z\"}}]})(props);\n};\nexport function BiImageAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM5 19V5h14l.002 14H5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m10 14-1-1-3 4h12l-5-7z\"}}]})(props);\n};\nexport function BiImage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"7.499\",\"cy\":\"9.5\",\"r\":\"1.5\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m10.499 14-1.5-2-3 4h12l-4.5-6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19.999 4h-16c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zm-16 14V6h16l.002 12H3.999z\"}}]})(props);\n};\nexport function BiImages (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H8c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zM8 16V4h12l.002 12H8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M4 8H2v12c0 1.103.897 2 2 2h12v-2H4V8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m12 12-1-1-2 3h10l-4-6z\"}}]})(props);\n};\nexport function BiImport (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m12 18 4-5h-3V2h-2v11H8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 9h-4v2h4v9H5v-9h4V9H5c-1.103 0-2 .897-2 2v9c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2v-9c0-1.103-.897-2-2-2z\"}}]})(props);\n};\nexport function BiInfinite (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 7c-2.094 0-3.611 1.567-5.001 3.346C10.609 8.567 9.093 7 7 7c-2.757 0-5 2.243-5 5a4.98 4.98 0 0 0 1.459 3.534A4.956 4.956 0 0 0 6.99 17h.012c2.089-.005 3.605-1.572 4.996-3.351C13.389 15.431 14.906 17 17 17c2.757 0 5-2.243 5-5s-2.243-5-5-5zM6.998 15l-.008 1v-1c-.799 0-1.55-.312-2.114-.878A3.004 3.004 0 0 1 7 9c1.33 0 2.56 1.438 3.746 2.998C9.558 13.557 8.328 14.997 6.998 15zM17 15c-1.33 0-2.561-1.44-3.749-3.002C14.438 10.438 15.668 9 17 9c1.654 0 3 1.346 3 3s-1.346 3-3 3z\"}}]})(props);\n};\nexport function BiInfoCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 11h2v6h-2zm0-4h2v2h-2z\"}}]})(props);\n};\nexport function BiInfoSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zm-1 16H5V5h14v14z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 7h2v2h-2zm0 4h2v6h-2z\"}}]})(props);\n};\nexport function BiInjection (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.84 7.4 22.25 6 18 1.75l-1.4 1.41L18 4.58 16.6 6l-2.13-2.13-1.41-1.42-1.41 1.42.7.71L3 13.92a2 2 0 0 0-.3 2.45L4 18.56l-2.25 2.28 1.41 1.41L5.44 20l2.19 1.31a2 2 0 0 0 1 .28 2 2 0 0 0 1.45-.59l9.34-9.34.71.7 1.42-1.41-1.42-1.42L18 7.4 19.42 6zM18 10.23l-9.34 9.35L6 18l-1.58-2.66.86-.87 2.83 2.83 1.42-1.41-2.83-2.83 1.41-1.41 2.83 2.82 1.41-1.41-2.83-2.83 1.42-1.41 2.83 2.83 1.41-1.42-2.83-2.83L13.77 6z\"}}]})(props);\n};\nexport function BiIntersect (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 16h3v3c0 1.103.897 2 2 2h9c1.103 0 2-.897 2-2v-9c0-1.103-.897-2-2-2h-3V5c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v9c0 1.103.897 2 2 2zm9.001-2L14 10h.001v4zM19 10l.001 9H10v-3h4c1.103 0 2-.897 2-2v-4h3zM5 5h9v3h-4c-1.103 0-2 .897-2 2v4H5V5z\"}}]})(props);\n};\nexport function BiItalic (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 7V4H9v3h2.868L9.012 17H5v3h10v-3h-2.868l2.856-10z\"}}]})(props);\n};\nexport function BiJoystickAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"15\",\"cy\":\"13\",\"r\":\"1\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"17\",\"cy\":\"11\",\"r\":\"1\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M10 9H8v2H6v2h2v2h2v-2h2v-2h-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15 5H9a7 7 0 0 0-7 7 7 7 0 0 0 7 7h6a7 7 0 0 0 7-7 7 7 0 0 0-7-7zm0 12H9A5 5 0 1 1 9 7h6a5 5 0 1 1 0 10z\"}}]})(props);\n};\nexport function BiJoystickButton (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 7h-3V4c0-1.103-.897-2-2-2H9c-1.103 0-2 .897-2 2v3H4c-1.103 0-2 .897-2 2v6c0 1.103.897 2 2 2h3v3c0 1.103.897 2 2 2h6c1.103 0 2-.897 2-2v-3h3c1.103 0 2-.897 2-2V9c0-1.103-.897-2-2-2zm0 8h-5v4h.001v1H9v-5H4V9h5V4h6v5h5v6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M8 14v-4l-3 2zm8 0 3-2-3-2zm-6-6h4l-2-3zm2 11 2-3h-4z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"2\"}}]})(props);\n};\nexport function BiJoystick (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 8.65A5 5 0 0 0 17 4H7a5 5 0 0 0-5 4.74A2 2 0 0 0 2 9v7.5A3.48 3.48 0 0 0 5.5 20c1.43 0 2.32-1.06 3.19-2.09.32-.37.65-.76 1-1.1a4.81 4.81 0 0 1 1.54-.75 6.61 6.61 0 0 1 1.54 0 4.81 4.81 0 0 1 1.54.75c.35.34.68.73 1 1.1.87 1 1.76 2.09 3.19 2.09a3.48 3.48 0 0 0 3.5-3.5V9a2.09 2.09 0 0 0 0-.26zm-2 7.85a1.5 1.5 0 0 1-1.5 1.5c-.5 0-1-.64-1.66-1.38-.34-.39-.72-.85-1.15-1.26a6.68 6.68 0 0 0-2.46-1.25 6.93 6.93 0 0 0-2.46 0 6.68 6.68 0 0 0-2.46 1.25c-.43.41-.81.87-1.15 1.26C6.54 17.36 6 18 5.5 18A1.5 1.5 0 0 1 4 16.5V9a.77.77 0 0 0 0-.15A3 3 0 0 1 7 6h10a3 3 0 0 1 3 2.72v.12A.86.86 0 0 0 20 9z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"16\",\"cy\":\"12\",\"r\":\"1\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"18\",\"cy\":\"10\",\"r\":\"1\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"16\",\"cy\":\"8\",\"r\":\"1\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"14\",\"cy\":\"10\",\"r\":\"1\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8\",\"cy\":\"10\",\"r\":\"2\"}}]})(props);\n};\nexport function BiKey (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 17a5.007 5.007 0 0 0 4.898-4H14v2h2v-2h2v3h2v-3h1v-2h-9.102A5.007 5.007 0 0 0 7 7c-2.757 0-5 2.243-5 5s2.243 5 5 5zm0-8c1.654 0 3 1.346 3 3s-1.346 3-3 3-3-1.346-3-3 1.346-3 3-3z\"}}]})(props);\n};\nexport function BiKnife (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.66 3.6a3 3 0 0 0-4.24 0l-.71.71-7.07 7.07 2.12 2.12-6.36 6.36 1.41 1.42L19.66 6.43c1.1-1.1 1.1-1.73.71-2.12z\"}}]})(props);\n};\nexport function BiLabel (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.813 4.419A.997.997 0 0 0 16 4H3a1 1 0 0 0-.813 1.581L6.771 12l-4.585 6.419A1 1 0 0 0 3 20h13a.997.997 0 0 0 .813-.419l5-7a.997.997 0 0 0 0-1.162l-5-7zM15.485 18H4.943l3.87-5.419a.997.997 0 0 0 0-1.162L4.943 6h10.542l4.286 6-4.286 6z\"}}]})(props);\n};\nexport function BiLandscape (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 20h18a1 1 0 0 0 .864-1.504l-7-12c-.359-.615-1.369-.613-1.729 0L9.866 12.1l-1.02-1.632A.998.998 0 0 0 8 10h-.001a1 1 0 0 0-.847.47l-5 8A1 1 0 0 0 3 20zM14 8.985 19.259 18h-5.704l-2.486-3.987L14 8.985zm-5.999 3.9L11.197 18H4.805l3.196-5.115zM6 8c1.654 0 3-1.346 3-3S7.654 2 6 2 3 3.346 3 5s1.346 3 3 3zm0-4a1 1 0 1 1 0 2 1 1 0 0 1 0-2z\"}}]})(props);\n};\nexport function BiLaptop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 17.722c.595-.347 1-.985 1-1.722V5c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v11c0 .736.405 1.375 1 1.722V18H2v2h20v-2h-2v-.278zM5 16V5h14l.002 11H5z\"}}]})(props);\n};\nexport function BiLastPage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7.707 17.707 13.414 12 7.707 6.293 6.293 7.707 10.586 12l-4.293 4.293zM15 6h2v12h-2z\"}}]})(props);\n};\nexport function BiLaugh (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 18c4 0 5-4 5-4H7s1 4 5 4zm5.555-9.168-1.109-1.664-3 2a1.001 1.001 0 0 0 .108 1.727l4 2 .895-1.789-2.459-1.229 1.565-1.045zm-6.557 1.23a1 1 0 0 0-.443-.894l-3-2-1.11 1.664 1.566 1.044-2.459 1.229.895 1.789 4-2a.998.998 0 0 0 .551-.832z\"}}]})(props);\n};\nexport function BiLayerMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m2.513 12.833 9.022 5.04a.995.995 0 0 0 .973.001l8.978-5a1 1 0 0 0-.002-1.749l-9.022-5a1 1 0 0 0-.968-.001l-8.978 4.96a1 1 0 0 0-.003 1.749zm9.464-4.69 6.964 3.859-6.917 3.853-6.964-3.89 6.917-3.822z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m3.485 15.126-.971 1.748 9 5a1 1 0 0 0 .971 0l9-5-.971-1.748L12 19.856l-8.515-4.73zM16 4h6v2h-6z\"}}]})(props);\n};\nexport function BiLayerPlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.484 11.125-9.022-5a1 1 0 0 0-.968-.001l-8.978 4.96a1 1 0 0 0-.003 1.749l9.022 5.04a.995.995 0 0 0 .973.001l8.978-5a1 1 0 0 0-.002-1.749zm-9.461 4.73-6.964-3.89 6.917-3.822 6.964 3.859-6.917 3.853z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 22a.994.994 0 0 0 .485-.126l9-5-.971-1.748L12 19.856l-8.515-4.73-.971 1.748 9 5A1 1 0 0 0 12 22zm8-20h-2v2h-2v2h2v2h2V6h2V4h-2z\"}}]})(props);\n};\nexport function BiLayer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 7.999a1 1 0 0 0-.516-.874l-9.022-5a1.003 1.003 0 0 0-.968 0l-8.978 4.96a1 1 0 0 0-.003 1.748l9.022 5.04a.995.995 0 0 0 .973.001l8.978-5A1 1 0 0 0 22 7.999zm-9.977 3.855L5.06 7.965l6.917-3.822 6.964 3.859-6.918 3.852z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20.515 11.126 12 15.856l-8.515-4.73-.971 1.748 9 5a1 1 0 0 0 .971 0l9-5-.97-1.748z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20.515 15.126 12 19.856l-8.515-4.73-.971 1.748 9 5a1 1 0 0 0 .971 0l9-5-.97-1.748z\"}}]})(props);\n};\nexport function BiLayout (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zm0 2 .001 4H5V5h14zM5 11h8v8H5v-8zm10 8v-8h4.001l.001 8H15z\"}}]})(props);\n};\nexport function BiLeaf (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.88 2.15-1.2.4a13.84 13.84 0 0 1-6.41.64 11.87 11.87 0 0 0-6.68.9A7.23 7.23 0 0 0 3.3 9.5a8.65 8.65 0 0 0 1.47 6.6c-.06.21-.12.42-.17.63A22.6 22.6 0 0 0 4 22h2a30.69 30.69 0 0 1 .59-4.32 9.25 9.25 0 0 0 4.52 1.11 11 11 0 0 0 4.28-.87C23 14.67 22 3.86 22 3.41zm-7.27 13.93c-2.61 1.11-5.73.92-7.48-.45a13.79 13.79 0 0 1 1.21-2.84A10.17 10.17 0 0 1 9.73 11a9 9 0 0 1 1.81-1.42A12 12 0 0 1 16 8V7a11.43 11.43 0 0 0-5.26 1.08 10.28 10.28 0 0 0-4.12 3.65 15.07 15.07 0 0 0-1 1.87 7 7 0 0 1-.38-3.73 5.24 5.24 0 0 1 3.14-4 8.93 8.93 0 0 1 3.82-.84c.62 0 1.23.06 1.87.11a16.2 16.2 0 0 0 6-.35C20 7.55 19.5 14 14.61 16.08z\"}}]})(props);\n};\nexport function BiLeftArrowAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.707 17.293 8.414 13H18v-2H8.414l4.293-4.293-1.414-1.414L4.586 12l6.707 6.707z\"}}]})(props);\n};\nexport function BiLeftArrowCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.999 1.993C6.486 1.994 2 6.48 1.999 11.994c0 5.514 4.486 10 10.001 10 5.514-.001 10-4.487 10-10 0-5.514-4.486-10-10.001-10.001zM12 19.994c-4.412 0-8.001-3.589-8.001-8 .001-4.411 3.59-8 8-8.001C16.411 3.994 20 7.583 20 11.994c0 4.41-3.589 7.999-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m12.012 7.989-4.005 4.005 4.005 4.004v-3.004h3.994v-2h-3.994z\"}}]})(props);\n};\nexport function BiLeftArrow (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.464 2.114a.998.998 0 0 0-1.033.063l-13 9a1.003 1.003 0 0 0 0 1.645l13 9A1 1 0 0 0 19 21V3a1 1 0 0 0-.536-.886zM17 19.091 6.757 12 17 4.909v14.182z\"}}]})(props);\n};\nexport function BiLeftDownArrowCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.006 2.007A9.93 9.93 0 0 0 4.935 4.93c-3.898 3.898-3.898 10.242 0 14.142 1.885 1.885 4.396 2.923 7.071 2.923s5.187-1.038 7.071-2.923c3.898-3.899 3.898-10.243 0-14.142a9.931 9.931 0 0 0-7.071-2.923zm5.657 15.65c-1.507 1.507-3.516 2.337-5.657 2.337s-4.15-.83-5.657-2.337c-3.118-3.119-3.118-8.194 0-11.313 1.507-1.507 3.517-2.337 5.657-2.337s4.15.83 5.657 2.337c3.118 3.119 3.118 8.194 0 11.313z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m14.346 8.247-3.215 3.215-2.125-2.125V15h5.663l-2.124-2.124 3.215-3.215z\"}}]})(props);\n};\nexport function BiLeftIndent (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 7h10v2H4zm0-4h16v2H4zm0 8h10v2H4zm0 4h10v2H4zm0 4h16v2H4zm16-3V8l-4 4z\"}}]})(props);\n};\nexport function BiLeftTopArrowCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.993 2.007a9.928 9.928 0 0 0-7.071 2.922c-3.899 3.899-3.899 10.243 0 14.143a9.931 9.931 0 0 0 7.071 2.923 9.928 9.928 0 0 0 7.071-2.923c3.899-3.899 3.899-10.243 0-14.143a9.927 9.927 0 0 0-7.071-2.922zm5.657 15.65a7.945 7.945 0 0 1-5.657 2.337c-2.141 0-4.15-.83-5.657-2.337-3.119-3.119-3.119-8.195 0-11.314a7.946 7.946 0 0 1 5.657-2.336c2.142 0 4.15.829 5.657 2.336 3.12 3.119 3.12 8.195 0 11.314z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14.657 9H8.993v5.663l2.125-2.124 3.215 3.214 1.414-1.414-3.215-3.214z\"}}]})(props);\n};\nexport function BiLemon (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 22a9.83 9.83 0 0 1-3.26-.55 2.23 2.23 0 0 0-1.7.19 3.51 3.51 0 0 1-2.47.24 3.55 3.55 0 0 1-2.45-2.45A3.51 3.51 0 0 1 2.36 17a2.23 2.23 0 0 0 .19-1.7 10.07 10.07 0 0 1 0-6.53 9.87 9.87 0 0 1 6.18-6.23 10.07 10.07 0 0 1 6.53 0A2.23 2.23 0 0 0 17 2.36a3.51 3.51 0 0 1 2.47-.24 3.55 3.55 0 0 1 2.45 2.45A3.51 3.51 0 0 1 21.64 7a2.23 2.23 0 0 0-.19 1.7 10.07 10.07 0 0 1 0 6.53 9.87 9.87 0 0 1-6.19 6.19A10.33 10.33 0 0 1 12 22zm-3.84-2.64a3.91 3.91 0 0 1 1.23.2 8 8 0 0 0 5.24 0 7.84 7.84 0 0 0 4.94-4.93 8 8 0 0 0 0-5.24 4.19 4.19 0 0 1 .29-3.23 1.53 1.53 0 0 0 .09-1.08 1.49 1.49 0 0 0-1-1 1.53 1.53 0 0 0-1.08.09 4.19 4.19 0 0 1-3.23.29 8 8 0 0 0-5.24 0 7.84 7.84 0 0 0-4.97 4.91 8 8 0 0 0 0 5.24 4.19 4.19 0 0 1-.29 3.23 1.53 1.53 0 0 0-.09 1.08 1.49 1.49 0 0 0 1 1 1.53 1.53 0 0 0 1.08-.09 4.47 4.47 0 0 1 2.03-.47z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M8 12H6a6 6 0 0 1 6-6v2a4 4 0 0 0-4 4z\"}}]})(props);\n};\nexport function BiLibrary (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 3h2v18H7zM4 3h2v18H4zm6 0h2v18h-2zm9.062 17.792-6.223-16.89 1.877-.692 6.223 16.89z\"}}]})(props);\n};\nexport function BiLike (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 8h-5.612l1.123-3.367c.202-.608.1-1.282-.275-1.802S14.253 2 13.612 2H12c-.297 0-.578.132-.769.36L6.531 8H4c-1.103 0-2 .897-2 2v9c0 1.103.897 2 2 2h13.307a2.01 2.01 0 0 0 1.873-1.298l2.757-7.351A1 1 0 0 0 22 12v-2c0-1.103-.897-2-2-2zM4 10h2v9H4v-9zm16 1.819L17.307 19H8V9.362L12.468 4h1.146l-1.562 4.683A.998.998 0 0 0 13 10h7v1.819z\"}}]})(props);\n};\nexport function BiLineChartDown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 3H3v18h18v-2H5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13 12.586 8.707 8.293 7.293 9.707 13 15.414l3-3 4.293 4.293 1.414-1.414L16 9.586z\"}}]})(props);\n};\nexport function BiLineChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 3v17a1 1 0 0 0 1 1h17v-2H5V3H3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15.293 14.707a.999.999 0 0 0 1.414 0l5-5-1.414-1.414L16 12.586l-2.293-2.293a.999.999 0 0 0-1.414 0l-5 5 1.414 1.414L13 12.414l2.293 2.293z\"}}]})(props);\n};\nexport function BiLinkAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4.222 19.778a4.983 4.983 0 0 0 3.535 1.462 4.986 4.986 0 0 0 3.536-1.462l2.828-2.829-1.414-1.414-2.828 2.829a3.007 3.007 0 0 1-4.243 0 3.005 3.005 0 0 1 0-4.243l2.829-2.828-1.414-1.414-2.829 2.828a5.006 5.006 0 0 0 0 7.071zm15.556-8.485a5.008 5.008 0 0 0 0-7.071 5.006 5.006 0 0 0-7.071 0L9.879 7.051l1.414 1.414 2.828-2.829a3.007 3.007 0 0 1 4.243 0 3.005 3.005 0 0 1 0 4.243l-2.829 2.828 1.414 1.414 2.829-2.828z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m8.464 16.95-1.415-1.414 8.487-8.486 1.414 1.415z\"}}]})(props);\n};\nexport function BiLinkExternal (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m13 3 3.293 3.293-7 7 1.414 1.414 7-7L21 11V3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 19H5V5h7l-2-2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2v-5l-2-2v7z\"}}]})(props);\n};\nexport function BiLink (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8.465 11.293c1.133-1.133 3.109-1.133 4.242 0l.707.707 1.414-1.414-.707-.707c-.943-.944-2.199-1.465-3.535-1.465s-2.592.521-3.535 1.465L4.929 12a5.008 5.008 0 0 0 0 7.071 4.983 4.983 0 0 0 3.535 1.462A4.982 4.982 0 0 0 12 19.071l.707-.707-1.414-1.414-.707.707a3.007 3.007 0 0 1-4.243 0 3.005 3.005 0 0 1 0-4.243l2.122-2.121z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m12 4.929-.707.707 1.414 1.414.707-.707a3.007 3.007 0 0 1 4.243 0 3.005 3.005 0 0 1 0 4.243l-2.122 2.121c-1.133 1.133-3.109 1.133-4.242 0L10.586 12l-1.414 1.414.707.707c.943.944 2.199 1.465 3.535 1.465s2.592-.521 3.535-1.465L19.071 12a5.008 5.008 0 0 0 0-7.071 5.006 5.006 0 0 0-7.071 0z\"}}]})(props);\n};\nexport function BiLira (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 21h2c4.411 0 8-4.038 8-9h-2c0 3.86-2.691 7-6 7v-7.358l6-1.385V8.204l-6 1.385V7.642l6-1.385V4.204l-6 1.385V3H9v3.05l-3 .693v2.053l3-.692v1.947l-3 .692v2.053l3-.692V21z\"}}]})(props);\n};\nexport function BiListCheck (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 7h11v2H4zm0 4h11v2H4zm0 4h7v2H4zm15.299-2.708-4.3 4.291-1.292-1.291-1.414 1.415 2.706 2.704 5.712-5.703z\"}}]})(props);\n};\nexport function BiListMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.063 15H13v2h9v-2zM4 7h11v2H4zm0 4h11v2H4zm0 4h7v2H4z\"}}]})(props);\n};\nexport function BiListOl (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5.282 12.064c-.428.328-.72.609-.875.851-.155.24-.249.498-.279.768h2.679v-.748H5.413c.081-.081.152-.151.212-.201.062-.05.182-.142.361-.27.303-.218.511-.42.626-.604.116-.186.173-.375.173-.578a.898.898 0 0 0-.151-.512.892.892 0 0 0-.412-.341c-.174-.076-.419-.111-.733-.111-.3 0-.537.038-.706.114a.889.889 0 0 0-.396.338c-.094.143-.159.346-.194.604l.894.076c.025-.188.074-.317.147-.394a.375.375 0 0 1 .279-.108c.11 0 .2.035.272.108a.344.344 0 0 1 .108.258.55.55 0 0 1-.108.297c-.074.102-.241.254-.503.453zm.055 6.386a.398.398 0 0 1-.282-.105c-.074-.07-.128-.195-.162-.378L4 18.085c.059.204.142.372.251.506.109.133.248.235.417.306.168.069.399.103.692.103.3 0 .541-.047.725-.14a1 1 0 0 0 .424-.403c.098-.175.146-.354.146-.544a.823.823 0 0 0-.088-.393.708.708 0 0 0-.249-.261 1.015 1.015 0 0 0-.286-.11.943.943 0 0 0 .345-.299.673.673 0 0 0 .113-.383.747.747 0 0 0-.281-.596c-.187-.159-.49-.238-.909-.238-.365 0-.648.072-.847.219-.2.143-.334.353-.404.626l.844.151c.023-.162.067-.274.133-.338s.151-.098.257-.098a.33.33 0 0 1 .241.089c.059.06.087.139.087.238 0 .104-.038.193-.117.27s-.177.112-.293.112a.907.907 0 0 1-.116-.011l-.045.649a1.13 1.13 0 0 1 .289-.056c.132 0 .237.041.313.126.077.082.115.199.115.352 0 .146-.04.266-.119.354a.394.394 0 0 1-.301.134zm.948-10.083V5h-.739a1.47 1.47 0 0 1-.394.523c-.168.142-.404.262-.708.365v.754a2.595 2.595 0 0 0 .937-.48v2.206h.904zM9 6h11v2H9zm0 5h11v2H9zm0 5h11v2H9z\"}}]})(props);\n};\nexport function BiListPlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 15v-3h-2v3h-3v2h3v3h2v-3h3v-2h-.937zM4 7h11v2H4zm0 4h11v2H4zm0 4h8v2H4z\"}}]})(props);\n};\nexport function BiListUl (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 6h2v2H4zm0 5h2v2H4zm0 5h2v2H4zm16-8V6H8.023v2H18.8zM8 11h12v2H8zm0 5h12v2H8z\"}}]})(props);\n};\nexport function BiLoaderAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 22c5.421 0 10-4.579 10-10h-2c0 4.337-3.663 8-8 8s-8-3.663-8-8c0-4.336 3.663-8 8-8V2C6.579 2 2 6.58 2 12c0 5.421 4.579 10 10 10z\"}}]})(props);\n};\nexport function BiLoaderCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"20\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"4\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"6.343\",\"cy\":\"17.657\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"17.657\",\"cy\":\"6.343\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"4\",\"cy\":\"12\",\"r\":\"2.001\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"20\",\"cy\":\"12\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"6.343\",\"cy\":\"6.344\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"17.657\",\"cy\":\"17.658\",\"r\":\"2\"}}]})(props);\n};\nexport function BiLoader (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2 11h5v2H2zm15 0h5v2h-5zm-6 6h2v5h-2zm0-15h2v5h-2zM4.222 5.636l1.414-1.414 3.536 3.536-1.414 1.414zm15.556 12.728-1.414 1.414-3.536-3.536 1.414-1.414zm-12.02-3.536 1.414 1.414-3.536 3.536-1.414-1.414zm7.07-7.071 3.536-3.535 1.414 1.415-3.536 3.535z\"}}]})(props);\n};\nexport function BiLocationPlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.42 21.815a1.004 1.004 0 0 0 1.16 0C12.884 21.598 20.029 16.44 20 10c0-4.411-3.589-8-8-8S4 5.589 4 9.996c-.029 6.444 7.116 11.602 7.42 11.819zM12 4c3.309 0 6 2.691 6 6.004.021 4.438-4.388 8.423-6 9.731-1.611-1.308-6.021-5.293-6-9.735 0-3.309 2.691-6 6-6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 14h2v-3h3V9h-3V6h-2v3H8v2h3z\"}}]})(props);\n};\nexport function BiLockAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C9.243 2 7 4.243 7 7v3H6c-1.103 0-2 .897-2 2v8c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2v-8c0-1.103-.897-2-2-2h-1V7c0-2.757-2.243-5-5-5zm6 10 .002 8H6v-8h12zm-9-2V7c0-1.654 1.346-3 3-3s3 1.346 3 3v3H9z\"}}]})(props);\n};\nexport function BiLockOpenAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 8V7c0-2.757-2.243-5-5-5S7 4.243 7 7v3H6c-1.103 0-2 .897-2 2v8c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2v-8c0-1.103-.897-2-2-2H9V7c0-1.654 1.346-3 3-3s3 1.346 3 3v1h2zm1 4 .002 8H6v-8h12z\"}}]})(props);\n};\nexport function BiLockOpen (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 4c1.654 0 3 1.346 3 3h2c0-2.757-2.243-5-5-5S7 4.243 7 7v2H6c-1.103 0-2 .897-2 2v9c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2v-9c0-1.103-.897-2-2-2H9V7c0-1.654 1.346-3 3-3zm6.002 16H13v-2.278c.595-.347 1-.985 1-1.722 0-1.103-.897-2-2-2s-2 .897-2 2c0 .736.405 1.375 1 1.722V20H6v-9h12l.002 9z\"}}]})(props);\n};\nexport function BiLock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C9.243 2 7 4.243 7 7v2H6c-1.103 0-2 .897-2 2v9c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2v-9c0-1.103-.897-2-2-2h-1V7c0-2.757-2.243-5-5-5zM9 7c0-1.654 1.346-3 3-3s3 1.346 3 3v2H9V7zm9.002 13H13v-2.278c.595-.347 1-.985 1-1.722 0-1.103-.897-2-2-2s-2 .897-2 2c0 .736.405 1.375 1 1.722V20H6v-9h12l.002 9z\"}}]})(props);\n};\nexport function BiLogInCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m10.998 16 5-4-5-4v3h-9v2h9z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12.999 2.999a8.938 8.938 0 0 0-6.364 2.637L8.049 7.05c1.322-1.322 3.08-2.051 4.95-2.051s3.628.729 4.95 2.051S20 10.13 20 12s-.729 3.628-2.051 4.95-3.08 2.051-4.95 2.051-3.628-.729-4.95-2.051l-1.414 1.414c1.699 1.7 3.959 2.637 6.364 2.637s4.665-.937 6.364-2.637C21.063 16.665 22 14.405 22 12s-.937-4.665-2.637-6.364a8.938 8.938 0 0 0-6.364-2.637z\"}}]})(props);\n};\nexport function BiLogIn (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m13 16 5-4-5-4v3H4v2h9z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3h-9c-1.103 0-2 .897-2 2v4h2V5h9v14h-9v-4H9v4c0 1.103.897 2 2 2h9c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2z\"}}]})(props);\n};\nexport function BiLogOutCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m2 12 5 4v-3h9v-2H7V8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13.001 2.999a8.938 8.938 0 0 0-6.364 2.637L8.051 7.05c1.322-1.322 3.08-2.051 4.95-2.051s3.628.729 4.95 2.051 2.051 3.08 2.051 4.95-.729 3.628-2.051 4.95-3.08 2.051-4.95 2.051-3.628-.729-4.95-2.051l-1.414 1.414c1.699 1.7 3.959 2.637 6.364 2.637s4.665-.937 6.364-2.637c1.7-1.699 2.637-3.959 2.637-6.364s-.937-4.665-2.637-6.364a8.938 8.938 0 0 0-6.364-2.637z\"}}]})(props);\n};\nexport function BiLogOut (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 13v-2H7V8l-5 4 5 4v-3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3h-9c-1.103 0-2 .897-2 2v4h2V5h9v14h-9v-4H9v4c0 1.103.897 2 2 2h9c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2z\"}}]})(props);\n};\nexport function BiLowVision (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 4.998c-1.836 0-3.356.389-4.617.971L3.707 2.293 2.293 3.707l3.315 3.316c-2.613 1.952-3.543 4.618-3.557 4.66l-.105.316.105.316C2.073 12.382 4.367 19 12 19c1.835 0 3.354-.389 4.615-.971l3.678 3.678 1.414-1.414-3.317-3.317c2.614-1.952 3.545-4.618 3.559-4.66l.105-.316-.105-.316c-.022-.068-2.316-6.686-9.949-6.686zM4.074 12c.103-.236.274-.586.521-.989l5.867 5.867C6.249 16.23 4.523 13.035 4.074 12zm9.247 4.907-7.48-7.481a8.138 8.138 0 0 1 1.188-.982l8.055 8.054a8.835 8.835 0 0 1-1.763.409zm3.648-1.352-1.541-1.541c.354-.596.572-1.28.572-2.015 0-.474-.099-.924-.255-1.349A.983.983 0 0 1 15 11a1 1 0 0 1-1-1c0-.439.288-.802.682-.936A3.97 3.97 0 0 0 12 7.999c-.735 0-1.419.218-2.015.572l-1.07-1.07A9.292 9.292 0 0 1 12 6.998c5.351 0 7.425 3.847 7.926 5a8.573 8.573 0 0 1-2.957 3.557z\"}}]})(props);\n};\nexport function BiMagnet (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3h-3c-1.103 0-2 .897-2 2v8c0 1.103-.897 2-2 2s-2-.897-2-2V5c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v8c0 4.963 4.037 9 9 9s9-4.037 9-9V5c0-1.103-.897-2-2-2zm-3 2h3v3h-3V5zM5 5h3v3H5V5zm7 15c-3.859 0-7-3.141-7-7v-3h3v3c0 2.206 1.794 4 4 4s4-1.794 4-4v-3h3v3c0 3.859-3.141 7-7 7z\"}}]})(props);\n};\nexport function BiMailSend (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H6c-1.103 0-2 .897-2 2v5h2V8l6.4 4.8a1.001 1.001 0 0 0 1.2 0L20 8v9h-8v2h8c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zm-7 6.75L6.666 6h12.668L13 10.75z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M2 12h7v2H2zm2 3h6v2H4zm3 3h4v2H7z\"}}]})(props);\n};\nexport function BiMaleFemale (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"6\",\"cy\":\"4\",\"r\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M9 7H3a1 1 0 0 0-1 1v7h2v7h4v-7h2V8a1 1 0 0 0-1-1z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"17\",\"cy\":\"4\",\"r\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20.21 7.73a1 1 0 0 0-1-.73h-4.5a1 1 0 0 0-1 .73L12 14h2l-1 4h2v4h4v-4h2l-1-4h2z\"}}]})(props);\n};\nexport function BiMaleSign (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 11V4h-7l2.793 2.793-4.322 4.322A5.961 5.961 0 0 0 8 10c-3.309 0-6 2.691-6 6s2.691 6 6 6 6-2.691 6-6c0-1.294-.416-2.49-1.115-3.471l4.322-4.322L20 11zM8 20c-2.206 0-4-1.794-4-4s1.794-4 4-4 4 1.794 4 4-1.794 4-4 4z\"}}]})(props);\n};\nexport function BiMale (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"4\",\"r\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15 7H9a1 1 0 0 0-1 1v7h2v7h4v-7h2V8a1 1 0 0 0-1-1z\"}}]})(props);\n};\nexport function BiMapAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.447 6.105-6-3a1 1 0 0 0-.895 0L9 5.882 3.447 3.105A1 1 0 0 0 2 4v13c0 .379.214.725.553.895l6 3a1 1 0 0 0 .895 0L15 18.118l5.553 2.776a.992.992 0 0 0 .972-.043c.295-.183.475-.504.475-.851V7c0-.379-.214-.725-.553-.895zM10 7.618l4-2v10.764l-4 2V7.618zm-6-2 4 2v10.764l-4-2V5.618zm16 12.764-4-2V5.618l4 2v10.764z\"}}]})(props);\n};\nexport function BiMapPin (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m12 17 1-2V9.858c1.721-.447 3-2 3-3.858 0-2.206-1.794-4-4-4S8 3.794 8 6c0 1.858 1.279 3.411 3 3.858V15l1 2zM10 6c0-1.103.897-2 2-2s2 .897 2 2-.897 2-2 2-2-.897-2-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m16.267 10.563-.533 1.928C18.325 13.207 20 14.584 20 16c0 1.892-3.285 4-8 4s-8-2.108-8-4c0-1.416 1.675-2.793 4.267-3.51l-.533-1.928C4.197 11.54 2 13.623 2 16c0 3.364 4.393 6 10 6s10-2.636 10-6c0-2.377-2.197-4.46-5.733-5.437z\"}}]})(props);\n};\nexport function BiMap (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 14c2.206 0 4-1.794 4-4s-1.794-4-4-4-4 1.794-4 4 1.794 4 4 4zm0-6c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11.42 21.814a.998.998 0 0 0 1.16 0C12.884 21.599 20.029 16.44 20 10c0-4.411-3.589-8-8-8S4 5.589 4 9.995c-.029 6.445 7.116 11.604 7.42 11.819zM12 4c3.309 0 6 2.691 6 6.005.021 4.438-4.388 8.423-6 9.73-1.611-1.308-6.021-5.294-6-9.735 0-3.309 2.691-6 6-6z\"}}]})(props);\n};\nexport function BiMask (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 6H5C3.346 6 2 7.346 2 9v5c0 2.206 1.794 4 4 4h1.637c1.166 0 2.28-.557 2.981-1.491.66-.879 2.104-.88 2.764.001A3.744 3.744 0 0 0 16.363 18H18c2.206 0 4-1.794 4-4V9c0-1.654-1.346-3-3-3zm1 8c0 1.103-.897 2-2 2h-1.637c-.54 0-1.057-.259-1.382-.69-.71-.948-1.797-1.492-2.981-1.492s-2.271.544-2.981 1.491A1.741 1.741 0 0 1 7.637 16H6c-1.103 0-2-.897-2-2V9c0-.551.448-1 1-1h14c.552 0 1 .449 1 1v5z\"}},{\"tag\":\"ellipse\",\"attr\":{\"cx\":\"7.5\",\"cy\":\"11.5\",\"rx\":\"2.5\",\"ry\":\"1.5\"}},{\"tag\":\"ellipse\",\"attr\":{\"cx\":\"16.5\",\"cy\":\"11.5\",\"rx\":\"2.5\",\"ry\":\"1.5\"}}]})(props);\n};\nexport function BiMath (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 2H5v3H2v2h3v3h2V7h3V5H7V2zm7 3h8v2h-8zm0 10h8v2h-8zm0 4h8v2h-8zm-5.71-4.71L6 16.59l-2.29-2.3-1.42 1.42L4.59 18l-2.3 2.29 1.42 1.42L6 19.41l2.29 2.3 1.42-1.42L7.41 18l2.3-2.29-1.42-1.42z\"}}]})(props);\n};\nexport function BiMedal (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 22c3.859 0 7-3.141 7-7s-3.141-7-7-7c-3.86 0-7 3.141-7 7s3.14 7 7 7zm0-12c2.757 0 5 2.243 5 5s-2.243 5-5 5-5-2.243-5-5 2.243-5 5-5zm-1-8H7v5.518a8.957 8.957 0 0 1 4-1.459V2zm6 0h-4v4.059a8.957 8.957 0 0 1 4 1.459V2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m10.019 15.811-.468 2.726L12 17.25l2.449 1.287-.468-2.726 1.982-1.932-2.738-.398L12 11l-1.225 2.481-2.738.398z\"}}]})(props);\n};\nexport function BiMehAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14 10h4v2h-4zm-6.026 5H16v2H7.974zM6 10h4v2H6z\"}}]})(props);\n};\nexport function BiMehBlank (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8.5\",\"cy\":\"10.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15.493\",\"cy\":\"10.493\",\"r\":\"1.493\"}}]})(props);\n};\nexport function BiMeh (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8.5\",\"cy\":\"10.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15.493\",\"cy\":\"10.493\",\"r\":\"1.493\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7.974 15H16v2H7.974z\"}}]})(props);\n};\nexport function BiMemoryCard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 4v16c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2V8a.997.997 0 0 0-.293-.707l-5-5A.996.996 0 0 0 14 2H6c-1.103 0-2 .897-2 2zm14 4.414L18.001 20H6V4h7.586L18 8.414z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M8 6h2v4H8zm4 0h2v4h-2z\"}}]})(props);\n};\nexport function BiMenuAltLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 11h12v2H4zm0-5h16v2H4zm0 12h7.235v-2H4z\"}}]})(props);\n};\nexport function BiMenuAltRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 6h16v2H4zm4 5h12v2H8zm5 5h7v2h-7z\"}}]})(props);\n};\nexport function BiMenu (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 6h16v2H4zm0 5h16v2H4zm0 5h16v2H4z\"}}]})(props);\n};\nexport function BiMerge (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 3H5a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M21 19v-9a2 2 0 0 0-2-2h-1v8a2 2 0 0 1-2 2H8v1a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2z\"}}]})(props);\n};\nexport function BiMessageAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h3v3.767L13.277 18H20c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm0 14h-7.277L9 18.233V16H4V4h16v12z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 14h2v-3h3V9h-3V6h-2v3H8v2h3z\"}}]})(props);\n};\nexport function BiMessageAltAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 16c0 1.103.897 2 2 2h3.586L12 21.414 15.414 18H19c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v12zM5 4h14v12h-4.414L12 18.586 9.414 16H5V4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 14h2v-3h3V9h-3V6h-2v3H8v2h3z\"}}]})(props);\n};\nexport function BiMessageAltCheck (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 4v12c0 1.103.897 2 2 2h3.586L12 21.414 15.414 18H19c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2zm2 0h14v12h-4.414L12 18.586 9.414 16H5V4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m17.207 7.207-1.414-1.414L11 10.586 8.707 8.293 7.293 9.707 11 13.414z\"}}]})(props);\n};\nexport function BiMessageAltDetail (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 2c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h3.586L12 21.414 15.414 18H19c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2H5zm14 14h-4.414L12 18.586 9.414 16H5V4h14v12z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7 7h10v2H7zm0 4h7v2H7z\"}}]})(props);\n};\nexport function BiMessageAltDots (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 2H5c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h3.586L12 21.414 15.414 18H19c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm0 14h-4.414L12 18.586 9.414 16H5V4h14v12z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15\",\"cy\":\"10\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"9\",\"cy\":\"10\",\"r\":\"2\"}}]})(props);\n};\nexport function BiMessageAltEdit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8.586 18 12 21.414 15.414 18H19c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h3.586zM5 4h14v12h-4.414L12 18.586 9.414 16H5V4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m12.479 7.219-4.977 4.969v1.799h1.8l4.975-4.969zm2.219-2.22 1.8 1.8-1.37 1.37-1.8-1.799z\"}}]})(props);\n};\nexport function BiMessageAltError (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 2c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h3.586L12 21.414 15.414 18H19c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2H5zm14 14h-4.414L12 18.586 9.414 16H5V4h14v12z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 6h2v6h-2zm0 7h2v2h-2z\"}}]})(props);\n};\nexport function BiMessageAltMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8.586 18 12 21.414 15.414 18H19c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h3.586zM5 4h14v12h-4.414L12 18.586 9.414 16H5V4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M8 9h8v2H8z\"}}]})(props);\n};\nexport function BiMessageAltX (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8.586 18 12 21.414 15.414 18H19c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h3.586zM5 4h14v12h-4.414L12 18.586 9.414 16H5V4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M9.707 13.707 12 11.414l2.293 2.293 1.414-1.414L13.414 10l2.293-2.293-1.414-1.414L12 8.586 9.707 6.293 8.293 7.707 10.586 10l-2.293 2.293z\"}}]})(props);\n};\nexport function BiMessageAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 2H5c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h3.586L12 21.414 15.414 18H19c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm0 14h-4.414L12 18.586 9.414 16H5V4h14v12z\"}}]})(props);\n};\nexport function BiMessageCheck (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h3v3.767L13.277 18H20c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm0 14h-7.277L9 18.233V16H4V4h16v12z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m17.207 7.207-1.414-1.414L11 10.586 8.707 8.293 7.293 9.707 11 13.414z\"}}]})(props);\n};\nexport function BiMessageDetail (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h3v3.767L13.277 18H20c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm0 14h-7.277L9 18.233V16H4V4h16v12z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7 7h10v2H7zm0 4h7v2H7z\"}}]})(props);\n};\nexport function BiMessageDots (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h3v3.766L13.277 18H20c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm0 14h-7.277L9 18.234V16H4V4h16v12z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15\",\"cy\":\"10\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"9\",\"cy\":\"10\",\"r\":\"2\"}}]})(props);\n};\nexport function BiMessageEdit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h3v3.767L13.277 18H20c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm0 14h-7.277L9 18.233V16H4V4h16v12z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m13.803 9.189-1.399-1.398-3.869 3.864v1.399h1.399zm.327-3.123 1.398 1.399-1.066 1.066-1.399-1.398z\"}}]})(props);\n};\nexport function BiMessageError (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h3v3.767L13.277 18H20c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm0 14h-7.277L9 18.233V16H4V4h16v12z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 6h2v5h-2zm0 6h2v2h-2z\"}}]})(props);\n};\nexport function BiMessageMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h3v3.767L13.277 18H20c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm0 14h-7.277L9 18.233V16H4V4h16v12z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M8 9h8v2H8z\"}}]})(props);\n};\nexport function BiMessageRoundedAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 5.589 2 10c0 2.908 1.898 5.515 5 6.934V22l5.34-4.005C17.697 17.852 22 14.32 22 10c0-4.411-4.486-8-10-8zm0 14h-.333L9 18v-2.417l-.641-.247C5.67 14.301 4 12.256 4 10c0-3.309 3.589-6 8-6s8 2.691 8 6-3.589 6-8 6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13 6h-2v3H8v2h3v3h2v-3h3V9h-3z\"}}]})(props);\n};\nexport function BiMessageRoundedCheck (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 5.589 2 10c0 2.908 1.898 5.515 5 6.934V22l5.339-4.005C17.697 17.852 22 14.32 22 10c0-4.411-4.486-8-10-8zm0 14h-.333L9 18v-2.417l-.641-.247C5.67 14.301 4 12.256 4 10c0-3.309 3.589-6 8-6s8 2.691 8 6-3.589 6-8 6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 11.586 8.707 9.293l-1.414 1.414L11 14.414l6.207-6.207-1.414-1.414z\"}}]})(props);\n};\nexport function BiMessageRoundedDetail (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 5.589 2 10c0 2.908 1.898 5.515 5 6.934V22l5.34-4.005C17.697 17.852 22 14.32 22 10c0-4.411-4.486-8-10-8zm0 14h-.333L9 18v-2.417l-.641-.247C5.67 14.301 4 12.256 4 10c0-3.309 3.589-6 8-6s8 2.691 8 6-3.589 6-8 6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7 7h10v2H7zm0 4h7v2H7z\"}}]})(props);\n};\nexport function BiMessageRoundedDots (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"9.5\",\"cy\":\"9.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"14.5\",\"cy\":\"9.5\",\"r\":\"1.5\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 5.589 2 10c0 2.908 1.897 5.515 5 6.934V22l5.34-4.004C17.697 17.852 22 14.32 22 10c0-4.411-4.486-8-10-8zm0 14h-.333L9 18v-2.417l-.641-.247C5.671 14.301 4 12.256 4 10c0-3.309 3.589-6 8-6s8 2.691 8 6-3.589 6-8 6z\"}}]})(props);\n};\nexport function BiMessageRoundedEdit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 5.589 2 10c0 2.908 1.898 5.515 5 6.934V22l5.34-4.005C17.697 17.852 22 14.32 22 10c0-4.411-4.486-8-10-8zm0 14h-.333L9 18v-2.417l-.641-.247C5.67 14.301 4 12.256 4 10c0-3.309 3.589-6 8-6s8 2.691 8 6-3.589 6-8 6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M8.503 11.589v1.398h1.398l3.87-3.864-1.399-1.398zm5.927-3.125-1.398-1.398 1.067-1.067 1.398 1.398z\"}}]})(props);\n};\nexport function BiMessageRoundedError (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 5.589 2 10c0 2.908 1.898 5.515 5 6.934V22l5.34-4.005C17.697 17.852 22 14.32 22 10c0-4.411-4.486-8-10-8zm0 14h-.333L9 18v-2.417l-.641-.247C5.67 14.301 4 12.256 4 10c0-3.309 3.589-6 8-6s8 2.691 8 6-3.589 6-8 6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 6h2v5h-2zm0 6h2v2h-2z\"}}]})(props);\n};\nexport function BiMessageRoundedMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 5.589 2 10c0 2.908 1.898 5.515 5 6.934V22l5.34-4.005C17.697 17.852 22 14.32 22 10c0-4.411-4.486-8-10-8zm0 14h-.333L9 18v-2.417l-.641-.247C5.67 14.301 4 12.256 4 10c0-3.309 3.589-6 8-6s8 2.691 8 6-3.589 6-8 6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M8 9h8v2H8z\"}}]})(props);\n};\nexport function BiMessageRoundedX (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 5.589 2 10c0 2.908 1.898 5.515 5 6.934V22l5.34-4.005C17.697 17.852 22 14.32 22 10c0-4.411-4.486-8-10-8zm0 14h-.333L9 18v-2.417l-.641-.247C5.67 14.301 4 12.256 4 10c0-3.309 3.589-6 8-6s8 2.691 8 6-3.589 6-8 6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14.293 6.293 12 8.586 9.707 6.293 8.293 7.707 10.586 10l-2.293 2.293 1.414 1.414L12 11.414l2.293 2.293 1.414-1.414L13.414 10l2.293-2.293z\"}}]})(props);\n};\nexport function BiMessageRounded (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 5.589 2 10c0 2.908 1.898 5.516 5 6.934V22l5.34-4.005C17.697 17.852 22 14.32 22 10c0-4.411-4.486-8-10-8zm0 14h-.333L9 18v-2.417l-.641-.247C5.67 14.301 4 12.256 4 10c0-3.309 3.589-6 8-6s8 2.691 8 6-3.589 6-8 6z\"}}]})(props);\n};\nexport function BiMessageSquareAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 2H8C4.691 2 2 4.691 2 8v13a1 1 0 0 0 1 1h13c3.309 0 6-2.691 6-6V8c0-3.309-2.691-6-6-6zm4 14c0 2.206-1.794 4-4 4H4V8c0-2.206 1.794-4 4-4h8c2.206 0 4 1.794 4 4v8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4z\"}}]})(props);\n};\nexport function BiMessageSquareCheck (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 2H8C4.691 2 2 4.691 2 8v13a1 1 0 0 0 1 1h13c3.309 0 6-2.691 6-6V8c0-3.309-2.691-6-6-6zm4 14c0 2.206-1.794 4-4 4H4V8c0-2.206 1.794-4 4-4h8c2.206 0 4 1.794 4 4v8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m11 13.586-2.293-2.293-1.414 1.414L11 16.414l6.207-6.207-1.414-1.414z\"}}]})(props);\n};\nexport function BiMessageSquareDetail (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 2H8C4.691 2 2 4.691 2 8v13a1 1 0 0 0 1 1h13c3.309 0 6-2.691 6-6V8c0-3.309-2.691-6-6-6zm4 14c0 2.206-1.794 4-4 4H4V8c0-2.206 1.794-4 4-4h8c2.206 0 4 1.794 4 4v8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7 9h10v2H7zm0 4h7v2H7z\"}}]})(props);\n};\nexport function BiMessageSquareDots (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 2H8C4.691 2 2 4.691 2 8v12a1 1 0 0 0 1 1h13c3.309 0 6-2.691 6-6V8c0-3.309-2.691-6-6-6zm4 13c0 2.206-1.794 4-4 4H4V8c0-2.206 1.794-4 4-4h8c2.206 0 4 1.794 4 4v7z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"9.5\",\"cy\":\"11.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"14.5\",\"cy\":\"11.5\",\"r\":\"1.5\"}}]})(props);\n};\nexport function BiMessageSquareEdit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 2H8C4.691 2 2 4.691 2 8v13a1 1 0 0 0 1 1h13c3.309 0 6-2.691 6-6V8c0-3.309-2.691-6-6-6zm4 14c0 2.206-1.794 4-4 4H4V8c0-2.206 1.794-4 4-4h8c2.206 0 4 1.794 4 4v8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7 14.987v1.999h1.999l5.529-5.522-1.998-1.998zm8.47-4.465-1.998-2L14.995 7l2 1.999z\"}}]})(props);\n};\nexport function BiMessageSquareError (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 2H8C4.691 2 2 4.691 2 8v13a1 1 0 0 0 1 1h13c3.309 0 6-2.691 6-6V8c0-3.309-2.691-6-6-6zm4 14c0 2.206-1.794 4-4 4H4V8c0-2.206 1.794-4 4-4h8c2.206 0 4 1.794 4 4v8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 6h2v8h-2zm0 10h2v2h-2z\"}}]})(props);\n};\nexport function BiMessageSquareMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 2H8C4.691 2 2 4.691 2 8v13a1 1 0 0 0 1 1h13c3.309 0 6-2.691 6-6V8c0-3.309-2.691-6-6-6zm4 14c0 2.206-1.794 4-4 4H4V8c0-2.206 1.794-4 4-4h8c2.206 0 4 1.794 4 4v8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M8 11h8v2H8z\"}}]})(props);\n};\nexport function BiMessageSquareX (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 2H8C4.691 2 2 4.691 2 8v13a1 1 0 0 0 1 1h13c3.309 0 6-2.691 6-6V8c0-3.309-2.691-6-6-6zm4 14c0 2.206-1.794 4-4 4H4V8c0-2.206 1.794-4 4-4h8c2.206 0 4 1.794 4 4v8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15.292 7.295 12 10.587 8.708 7.295 7.294 8.709l3.292 3.292-3.292 3.292 1.414 1.414L12 13.415l3.292 3.292 1.414-1.414-3.292-3.292 3.292-3.292z\"}}]})(props);\n};\nexport function BiMessageSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 2H8C4.691 2 2 4.691 2 8v12a1 1 0 0 0 1 1h13c3.309 0 6-2.691 6-6V8c0-3.309-2.691-6-6-6zm4 13c0 2.206-1.794 4-4 4H4V8c0-2.206 1.794-4 4-4h8c2.206 0 4 1.794 4 4v7z\"}}]})(props);\n};\nexport function BiMessageX (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h3v3.767L13.277 18H20c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm0 14h-7.277L9 18.233V16H4V4h16v12z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M9.707 13.707 12 11.414l2.293 2.293 1.414-1.414L13.414 10l2.293-2.293-1.414-1.414L12 8.586 9.707 6.293 8.293 7.707 10.586 10l-2.293 2.293z\"}}]})(props);\n};\nexport function BiMessage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h3v3.767L13.277 18H20c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm0 14h-7.277L9 18.233V16H4V4h16v12z\"}}]})(props);\n};\nexport function BiMeteor (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9.5 22c2.003 0 3.887-.78 5.313-2.207l6.904-7.096A1 1 0 0 0 21 11h-3.301l4.175-7.514a1.001 1.001 0 0 0-1.359-1.36l-7.11 3.95.576-2.879a1 1 0 0 0-1.629-.957L4.196 9.197c-2.924 2.924-2.924 7.682 0 10.606A7.452 7.452 0 0 0 9.5 22zM5.552 10.665l5.902-5.031-.248 1.24-.186.93v.001l-.424 2.119 7.83-4.35-3.3 5.94-.001.001L14.301 13h4.331l-5.243 5.389C12.35 19.428 10.969 20 9.5 20s-2.851-.572-3.89-1.611c-2.143-2.144-2.143-5.634-.058-7.724z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M9.5 18a3.492 3.492 0 0 0 1.484-6.659c.005.053.016.105.016.159a1.5 1.5 0 1 1-3 0c0-.054.011-.106.016-.159A3.492 3.492 0 0 0 9.5 18z\"}}]})(props);\n};\nexport function BiMicrochip (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 2H8c-1.103 0-2 .897-2 2v16c0 1.103.897 2 2 2h8c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zM8 20V4h8l.001 16H8zM3 7h2V5H3v.5H2v1h1zm18-2h-2v2h2v-.5h1v-1h-1zM3 11h2V9H3v.5H2v1h1zm18-2h-2v2h2v-.5h1v-1h-1zM3 15h2v-2H3v.5H2v1h1zm18-2h-2v2h2v-.5h1v-1h-1zM3 19h2v-2H3v.5H2v1h1zm18-2h-2v2h2v-.5h1v-1h-1z\"}}]})(props);\n};\nexport function BiMicrophoneOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.707 20.293-3.388-3.388A7.942 7.942 0 0 0 20 12.021h-2a5.95 5.95 0 0 1-1.109 3.456l-1.452-1.452c.348-.591.561-1.27.561-2.004v-6C16 3.804 14.215 2 12.021 2c-.07 0-.14.009-.209.025A4.005 4.005 0 0 0 8 6.021v.565L3.707 2.293 2.293 3.707l18 18 1.414-1.414zM10 6.021c0-1.103.897-2 2-2a.918.918 0 0 0 .164-.015C13.188 4.08 14 4.956 14 6.021v6c0 .172-.029.335-.071.494L10 8.586V6.021zm-4 6H4c0 4.072 3.06 7.436 7 7.931v2.069h2v-2.07a7.993 7.993 0 0 0 2.218-.611l-1.558-1.558a5.979 5.979 0 0 1-1.66.239c-3.309 0-6-2.692-6-6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M8.011 12.132a3.993 3.993 0 0 0 3.877 3.877l-3.877-3.877z\"}}]})(props);\n};\nexport function BiMicrophone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 12V6c0-2.217-1.785-4.021-3.979-4.021a.933.933 0 0 0-.209.025A4.006 4.006 0 0 0 8 6v6c0 2.206 1.794 4 4 4s4-1.794 4-4zm-6 0V6c0-1.103.897-2 2-2a.89.89 0 0 0 .163-.015C13.188 4.06 14 4.935 14 6v6c0 1.103-.897 2-2 2s-2-.897-2-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M6 12H4c0 4.072 3.061 7.436 7 7.931V22h2v-2.069c3.939-.495 7-3.858 7-7.931h-2c0 3.309-2.691 6-6 6s-6-2.691-6-6z\"}}]})(props);\n};\nexport function BiMinusBack (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 3H5c-1.103 0-2 .897-2 2v9c0 1.103.897 2 2 2h3v3c0 1.103.897 2 2 2h9c1.103 0 2-.897 2-2v-9c0-1.103-.897-2-2-2h-3V5c0-1.103-.897-2-2-2zM5 5h9l-.003 9H5V5z\"}}]})(props);\n};\nexport function BiMinusCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 11h10v2H7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}}]})(props);\n};\nexport function BiMinusFront (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 16h3v3c0 1.103.897 2 2 2h9c1.103 0 2-.897 2-2v-9c0-1.103-.897-2-2-2h-3V5c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v9c0 1.103.897 2 2 2zm13.997 3H10v-9h9l-.003 9z\"}}]})(props);\n};\nexport function BiMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 11h14v2H5z\"}}]})(props);\n};\nexport function BiMobileAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.75 2h-10c-1.103 0-2 .897-2 2v16c0 1.103.897 2 2 2h10c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm-10 18V4h10l.002 16H6.75z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"11.75\",\"cy\":\"18\",\"r\":\"1\"}}]})(props);\n};\nexport function BiMobileLandscape (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 5H4c-1.103 0-2 .897-2 2v10c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V7c0-1.103-.897-2-2-2zM7.001 7H19v10H7.001V7z\"}}]})(props);\n};\nexport function BiMobileVibration (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.535 2.808c-.756-.756-2.072-.756-2.828 0l-9.899 9.899a2.001 2.001 0 0 0 0 2.828l5.657 5.657c.378.378.88.586 1.414.586s1.036-.208 1.414-.586l9.899-9.899c.378-.378.586-.88.586-1.414s-.208-1.036-.586-1.414l-5.657-5.657zm-5.656 16.97v1-1l-5.657-5.657 9.899-9.899 5.657 5.657-9.899 9.899z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"9\",\"cy\":\"15\",\"r\":\"1\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m15.707 21.707-1.414-1.414 6-6 1.414 1.415zM8.293 2.293l1.414 1.414-6 6-1.414-1.415z\"}}]})(props);\n};\nexport function BiMobile (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 2H7c-1.103 0-2 .897-2 2v16c0 1.103.897 2 2 2h10c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zM7 16.999V5h10l.002 11.999H7z\"}}]})(props);\n};\nexport function BiMoneyWithdraw (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 15c-1.84 0-2-.86-2-1H8c0 .92.66 2.55 3 2.92V18h2v-1.08c2-.34 3-1.63 3-2.92 0-1.12-.52-3-4-3-2 0-2-.63-2-1s.7-1 2-1 1.39.64 1.4 1h2A3 3 0 0 0 13 7.12V6h-2v1.09C9 7.42 8 8.71 8 10c0 1.12.52 3 4 3 2 0 2 .68 2 1s-.62 1-2 1z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M5 2H2v2h2v17a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V4h2V2H5zm13 18H6V4h12z\"}}]})(props);\n};\nexport function BiMoney (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 4H3a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1zm-1 11a3 3 0 0 0-3 3H7a3 3 0 0 0-3-3V9a3 3 0 0 0 3-3h10a3 3 0 0 0 3 3v6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 8c-2.206 0-4 1.794-4 4s1.794 4 4 4 4-1.794 4-4-1.794-4-4-4zm0 6c-1.103 0-2-.897-2-2s.897-2 2-2 2 .897 2 2-.897 2-2 2z\"}}]})(props);\n};\nexport function BiMoon (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.742 13.045a8.088 8.088 0 0 1-2.077.271c-2.135 0-4.14-.83-5.646-2.336a8.025 8.025 0 0 1-2.064-7.723A1 1 0 0 0 9.73 2.034a10.014 10.014 0 0 0-4.489 2.582c-3.898 3.898-3.898 10.243 0 14.143a9.937 9.937 0 0 0 7.072 2.93 9.93 9.93 0 0 0 7.07-2.929 10.007 10.007 0 0 0 2.583-4.491 1.001 1.001 0 0 0-1.224-1.224zm-2.772 4.301a7.947 7.947 0 0 1-5.656 2.343 7.953 7.953 0 0 1-5.658-2.344c-3.118-3.119-3.118-8.195 0-11.314a7.923 7.923 0 0 1 2.06-1.483 10.027 10.027 0 0 0 2.89 7.848 9.972 9.972 0 0 0 7.848 2.891 8.036 8.036 0 0 1-1.484 2.059z\"}}]})(props);\n};\nexport function BiMouseAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 2h-2C7.691 2 5 4.691 5 8v8c0 3.309 2.691 6 6 6h2c3.309 0 6-2.691 6-6V8c0-3.309-2.691-6-6-6zm-2 2v6H7V8c0-2.206 1.794-4 4-4zm6 12c0 2.206-1.794 4-4 4h-2c-2.206 0-4-1.794-4-4v-4h10v4zm-4-6V4c2.206 0 4 1.794 4 4v2h-4z\"}}]})(props);\n};\nexport function BiMouse (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.975 22H12c3.859 0 7-3.14 7-7V9c0-3.841-3.127-6.974-6.981-7h-.06C8.119 2.022 5 5.157 5 9v6c0 3.86 3.129 7 6.975 7zM7 9a5.007 5.007 0 0 1 4.985-5C14.75 4.006 17 6.249 17 9v6c0 2.757-2.243 5-5 5h-.025C9.186 20 7 17.804 7 15V9z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 6h2v6h-2z\"}}]})(props);\n};\nexport function BiMoveHorizontal (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 11H7V7l-5 5 5 5v-4h10v4l5-5-5-5z\"}}]})(props);\n};\nexport function BiMoveVertical (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m7 17 5 5 5-5h-4V7h4l-5-5-5 5h4v10z\"}}]})(props);\n};\nexport function BiMove (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 11h-5V6h3l-4-4-4 4h3v5H6V8l-4 4 4 4v-3h5v5H8l4 4 4-4h-3v-5h5v3l4-4-4-4z\"}}]})(props);\n};\nexport function BiMoviePlay (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zm.001 6c-.001 0-.001 0 0 0h-.465l-2.667-4H20l.001 4zM9.536 9 6.869 5h2.596l2.667 4H9.536zm5 0-2.667-4h2.596l2.667 4h-2.596zM4 5h.465l2.667 4H4V5zm0 14v-8h16l.002 8H4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m10 18 5.5-3-5.5-3z\"}}]})(props);\n};\nexport function BiMovie (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zm.001 6c-.001 0-.001 0 0 0h-.466l-2.667-4H20l.001 4zM9.535 9 6.868 5h2.597l2.667 4H9.535zm5 0-2.667-4h2.597l2.667 4h-2.597zM4 5h.465l2.667 4H4V5zm0 14v-8h16l.002 8H4z\"}}]})(props);\n};\nexport function BiMusic (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m19.684 5.821-9-3.272A1.998 1.998 0 0 0 8 4.428v6.129A3.953 3.953 0 0 0 6 10c-2.206 0-4 1.794-4 4s1.794 4 4 4 4-1.794 4-4V4.428L19 7.7v6.856A3.962 3.962 0 0 0 17 14c-2.206 0-4 1.794-4 4s1.794 4 4 4 4-1.794 4-4V7.7c0-.838-.529-1.594-1.316-1.879zM6 16c-1.103 0-2-.897-2-2s.897-2 2-2 2 .897 2 2-.897 2-2 2zm11 4c-1.103 0-2-.897-2-2s.897-2 2-2 2 .897 2 2-.897 2-2 2z\"}}]})(props);\n};\nexport function BiNavigation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2.002 9.63c-.023.411.207.794.581.966l7.504 3.442 3.442 7.503c.164.356.52.583.909.583l.057-.002a1 1 0 0 0 .894-.686l5.595-17.032c.117-.358.023-.753-.243-1.02s-.66-.358-1.02-.243L2.688 8.736a1 1 0 0 0-.686.894zm16.464-3.971-4.182 12.73-2.534-5.522a.998.998 0 0 0-.492-.492L5.734 9.841l12.732-4.182z\"}}]})(props);\n};\nexport function BiNetworkChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3c-1.654 0-3 1.346-3 3 0 .502.136.968.354 1.385l-1.116 1.302A3.976 3.976 0 0 0 13 8c-.739 0-1.425.216-2.02.566L9.566 7.152A3.449 3.449 0 0 0 10 5.5C10 3.57 8.43 2 6.5 2S3 3.57 3 5.5 4.57 9 6.5 9c.601 0 1.158-.166 1.652-.434L9.566 9.98A3.972 3.972 0 0 0 9 12c0 .997.38 1.899.985 2.601l-1.692 1.692.025.025A2.962 2.962 0 0 0 7 16c-1.654 0-3 1.346-3 3s1.346 3 3 3 3-1.346 3-3c0-.476-.121-.919-.318-1.318l.025.025 1.954-1.954c.421.15.867.247 1.339.247 2.206 0 4-1.794 4-4a3.96 3.96 0 0 0-.439-1.785l1.253-1.462c.364.158.764.247 1.186.247 1.654 0 3-1.346 3-3s-1.346-3-3-3zM7 20a1 1 0 1 1 0-2 1 1 0 0 1 0 2zM5 5.5C5 4.673 5.673 4 6.5 4S8 4.673 8 5.5 7.327 7 6.5 7 5 6.327 5 5.5zm8 8.5c-1.103 0-2-.897-2-2s.897-2 2-2 2 .897 2 2-.897 2-2 2zm6-7a1 1 0 1 1 0-2 1 1 0 0 1 0 2z\"}}]})(props);\n};\nexport function BiNews (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.875 3H4.125C2.953 3 2 3.897 2 5v14c0 1.103.953 2 2.125 2h15.75C21.047 21 22 20.103 22 19V5c0-1.103-.953-2-2.125-2zm0 16H4.125c-.057 0-.096-.016-.113-.016-.007 0-.011.002-.012.008L3.988 5.046c.007-.01.052-.046.137-.046h15.75c.079.001.122.028.125.008l.012 13.946c-.007.01-.052.046-.137.046z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M6 7h6v6H6zm7 8H6v2h12v-2h-4zm1-4h4v2h-4zm0-4h4v2h-4z\"}}]})(props);\n};\nexport function BiNoEntry (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 10h10v4H7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}}]})(props);\n};\nexport function BiNoSignal (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 16h2v5H3zm4-3h2v8H7zM21 3h-2v14.59l-2-2V7h-2v6.59l-2-2V10h-1.59l-7.7-7.71-1.42 1.42 18 18 1.42-1.42-.71-.7V3zm-6 18h1.88L15 19.12V21zm-4 0h2v-3.88l-2-2V21z\"}}]})(props);\n};\nexport function BiNote (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h8a.996.996 0 0 0 .707-.293l7-7a.997.997 0 0 0 .196-.293c.014-.03.022-.061.033-.093a.991.991 0 0 0 .051-.259c.002-.021.013-.041.013-.062V5c0-1.103-.897-2-2-2zM5 5h14v7h-6a1 1 0 0 0-1 1v6H5V5zm9 12.586V14h3.586L14 17.586z\"}}]})(props);\n};\nexport function BiNotepad (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 4h-3V2h-2v2h-4V2H8v2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zM5 20V7h14V6l.002 14H5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7 9h10v2H7zm0 4h5v2H7z\"}}]})(props);\n};\nexport function BiNotificationOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.71 20.296-1.786-1.786c.045-.163.076-.332.076-.51v-7h-2v5.586L7.414 6H13V4H6c-.178 0-.347.031-.51.076l-1.78-1.78L2.296 3.71l18 18 1.414-1.414zM4 8.121V18c0 1.103.897 2 2 2h9.879l-2-2H6v-7.879l-2-2z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"18\",\"cy\":\"6\",\"r\":\"3\"}}]})(props);\n};\nexport function BiNotification (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"18\",\"cy\":\"6\",\"r\":\"3\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M18 19H5V6h8c0-.712.153-1.387.422-2H5c-1.103 0-2 .897-2 2v13c0 1.103.897 2 2 2h13c1.103 0 2-.897 2-2v-8.422A4.962 4.962 0 0 1 18 11v8z\"}}]})(props);\n};\nexport function BiObjectsHorizontalCenter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 20h6v2h2v-2h6a1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1h-6v-2h4a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1h-4V2h-2v2H7a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h4v2H5a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1zM8 6h8v3H8zm-2 9h12v3H6z\"}}]})(props);\n};\nexport function BiObjectsHorizontalLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2 2h2v20H2zM21 13H7a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1zm-1 5H8v-3h12zM7 11h10a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1zm1-5h8v3H8z\"}}]})(props);\n};\nexport function BiObjectsHorizontalRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2h2v20h-2zM18 14a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1zm-2 4H4v-3h12zM7 11h10a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1zm1-5h8v3H8z\"}}]})(props);\n};\nexport function BiObjectsVerticalBottom (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2 20h20v2H2zM4 3v14a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H5a1 1 0 0 0-1 1zm2 1h3v12H6zM13 17a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1V7a1 1 0 0 0-1-1h-5a1 1 0 0 0-1 1zm2-9h3v8h-3z\"}}]})(props);\n};\nexport function BiObjectsVerticalCenter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 7a1 1 0 0 0-1-1h-5a1 1 0 0 0-1 1v4h-2V5a1 1 0 0 0-1-1H5a1 1 0 0 0-1 1v6H2v2h2v6a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1v-6h2v4a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1v-4h2v-2h-2zM9 18H6V6h3zm9-2h-3V8h3z\"}}]})(props);\n};\nexport function BiObjectsVerticalTop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2 2h20v2H2zM11 21V7a1 1 0 0 0-1-1H5a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1zm-2-1H6V8h3zM19 6h-5a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1V7a1 1 0 0 0-1-1zm-1 10h-3V8h3z\"}}]})(props);\n};\nexport function BiOutline (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 19v-9c0-1.103-.897-2-2-2h-3V5c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v9c0 1.103.897 2 2 2h3v3c0 1.103.897 2 2 2h9c1.103 0 2-.897 2-2zM5 14V5h9v3h-4c-1.103 0-2 .897-2 2v4H5zm9.001 0H10v-4h4.001v4zM10 16h4c1.103 0 2-.897 2-2v-4h3l.001 9H10v-3z\"}}]})(props);\n};\nexport function BiPackage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 8a.76.76 0 0 0 0-.21v-.08a.77.77 0 0 0-.07-.16.35.35 0 0 0-.05-.08l-.1-.13-.08-.06-.12-.09-9-5a1 1 0 0 0-1 0l-9 5-.09.07-.11.08a.41.41 0 0 0-.07.11.39.39 0 0 0-.08.1.59.59 0 0 0-.06.14.3.3 0 0 0 0 .1A.76.76 0 0 0 2 8v8a1 1 0 0 0 .52.87l9 5a.75.75 0 0 0 .13.06h.1a1.06 1.06 0 0 0 .5 0h.1l.14-.06 9-5A1 1 0 0 0 22 16V8zm-10 3.87L5.06 8l2.76-1.52 6.83 3.9zm0-7.72L18.94 8 16.7 9.25 9.87 5.34zM4 9.7l7 3.92v5.68l-7-3.89zm9 9.6v-5.68l3-1.68V15l2-1v-3.18l2-1.11v5.7z\"}}]})(props);\n};\nexport function BiPaintRoll (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 2H7c-1.103 0-2 .897-2 2v3c0 1.103.897 2 2 2h11c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zM7 7V4h11l.002 3H7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13 15v-2c0-1.103-.897-2-2-2H4V5c-1.103 0-2 .897-2 2v4c0 1.103.897 2 2 2h7v2a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1z\"}}]})(props);\n};\nexport function BiPaint (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7.061 22c1.523 0 2.84-.543 3.91-1.613 1.123-1.123 1.707-2.854 1.551-4.494l8.564-8.564a3.123 3.123 0 0 0-.002-4.414c-1.178-1.18-3.234-1.18-4.412 0l-8.884 8.884c-1.913.169-3.807 1.521-3.807 3.919 0 .303.021.588.042.86.08 1.031.109 1.418-1.471 2.208a1.001 1.001 0 0 0-.122 1.717C2.52 20.563 4.623 22 7.061 22c-.001 0-.001 0 0 0zM18.086 4.328a1.144 1.144 0 0 1 1.586.002 1.12 1.12 0 0 1 0 1.584L12 13.586 10.414 12l7.672-7.672zM6.018 16.423c-.018-.224-.037-.458-.037-.706 0-1.545 1.445-1.953 2.21-1.953.356 0 .699.073.964.206.945.475 1.26 1.293 1.357 1.896.177 1.09-.217 2.368-.956 3.107C8.865 19.664 8.049 20 7.061 20H7.06c-.75 0-1.479-.196-2.074-.427 1.082-.973 1.121-1.989 1.032-3.15z\"}}]})(props);\n};\nexport function BiPalette (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13.4 2.096a10.08 10.08 0 0 0-8.937 3.331A10.054 10.054 0 0 0 2.096 13.4c.53 3.894 3.458 7.207 7.285 8.246a9.982 9.982 0 0 0 2.618.354l.142-.001a3.001 3.001 0 0 0 2.516-1.426 2.989 2.989 0 0 0 .153-2.879l-.199-.416a1.919 1.919 0 0 1 .094-1.912 2.004 2.004 0 0 1 2.576-.755l.412.197c.412.198.85.299 1.301.299A3.022 3.022 0 0 0 22 12.14a9.935 9.935 0 0 0-.353-2.76c-1.04-3.826-4.353-6.754-8.247-7.284zm5.158 10.909-.412-.197c-1.828-.878-4.07-.198-5.135 1.494-.738 1.176-.813 2.576-.204 3.842l.199.416a.983.983 0 0 1-.051.961.992.992 0 0 1-.844.479h-.112a8.061 8.061 0 0 1-2.095-.283c-3.063-.831-5.403-3.479-5.826-6.586-.321-2.355.352-4.623 1.893-6.389a8.002 8.002 0 0 1 7.16-2.664c3.107.423 5.755 2.764 6.586 5.826.198.73.293 1.474.282 2.207-.012.807-.845 1.183-1.441.894z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"7.5\",\"cy\":\"14.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"7.5\",\"cy\":\"10.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"10.5\",\"cy\":\"7.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"14.5\",\"cy\":\"7.5\",\"r\":\"1.5\"}}]})(props);\n};\nexport function BiPaperPlane (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.56,3.34a1,1,0,0,0-1-.08l-17,8a1,1,0,0,0-.57.92,1,1,0,0,0,.6.9L8,15.45v6.72L13.84,18l4.76,2.08a.93.93,0,0,0,.4.09,1,1,0,0,0,.52-.15,1,1,0,0,0,.48-.79l1-15A1,1,0,0,0,20.56,3.34ZM18.1,17.68l-5.27-2.31L16,9.17,8.35,13.42,5.42,12.13,18.89,5.79Z\"}}]})(props);\n};\nexport function BiPaperclip (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.004 5H9c-1.838 0-3.586.737-4.924 2.076C2.737 8.415 2 10.163 2 12c0 1.838.737 3.586 2.076 4.924C5.414 18.263 7.162 19 9 19h8v-2H9c-1.303 0-2.55-.529-3.51-1.49C4.529 14.55 4 13.303 4 12c0-1.302.529-2.549 1.49-3.51C6.45 7.529 7.697 7 9 7h8V6l.001 1h.003c.79 0 1.539.314 2.109.886.571.571.886 1.322.887 2.116a2.966 2.966 0 0 1-.884 2.11A2.988 2.988 0 0 1 17 13H9a.99.99 0 0 1-.698-.3A.991.991 0 0 1 8 12c0-.252.11-.507.301-.698A.987.987 0 0 1 9 11h8V9H9c-.79 0-1.541.315-2.114.889C6.314 10.461 6 11.211 6 12s.314 1.54.888 2.114A2.974 2.974 0 0 0 9 15h8.001a4.97 4.97 0 0 0 3.528-1.473 4.967 4.967 0 0 0-.001-7.055A4.95 4.95 0 0 0 17.004 5z\"}}]})(props);\n};\nexport function BiParagraph (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 16h2v4h2V6h2v14h2V6h3V4H9c-3.309 0-6 2.691-6 6s2.691 6 6 6zM9 6h2v8H9c-2.206 0-4-1.794-4-4s1.794-4 4-4z\"}}]})(props);\n};\nexport function BiParty (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 8.31c-.36-.41-.73-.82-1.12-1.21l-.29-.27.14-.12a3.15 3.15 0 0 0 .9-3.49A3.91 3.91 0 0 0 14 1v2a2 2 0 0 1 1.76 1c.17.4 0 .84-.47 1.31-.07.08-.15.13-.22.2-3-2.41-6.29-3.77-7.9-2.16a2.16 2.16 0 0 0-.41.59v.1l-.18.53-4.41 13.1A3.28 3.28 0 0 0 5.28 22a3.21 3.21 0 0 0 1-.17L20 17.28a1 1 0 0 0 .43-.31l.21-.18c1.43-1.44.51-4.21-1.41-6.9A6.63 6.63 0 0 1 23 9V7a8.44 8.44 0 0 0-5 1.31zM5.7 19.93a1.29 1.29 0 0 1-1.63-1.63l1.36-4.1a10.7 10.7 0 0 0 4.29 4.39zm7-2.33a8.87 8.87 0 0 1-6.3-6.29l1-3 .06.09c.11.22.25.45.39.68s.16.29.26.44.33.48.51.73.19.28.3.42.43.55.66.82l.29.35c.34.39.7.77 1.08 1.16s.68.64 1 1l.33.28.78.63.37.28c.28.2.55.4.83.58l.31.2c.36.22.72.43 1.07.61h.05zm6.51-2.23h-.06c-.69.38-3.56-.57-6.79-3.81-.34-.34-.66-.67-.95-1l-.29-.35-.53-.64-.29-.4c-.13-.19-.27-.37-.39-.55l-.26-.42-.29-.47c-.08-.14-.14-.27-.21-.4s-.15-.26-.21-.4a3.31 3.31 0 0 1-.14-.36c-.05-.13-.11-.26-.15-.38S8.6 6 8.57 5.88s-.05-.22-.07-.32a2.26 2.26 0 0 1 0-.26 1 1 0 0 1 0-.24l.11-.31c.36-.36 2.23 0 4.73 1.9A4.13 4.13 0 0 1 12 7v2a6.45 6.45 0 0 0 3-.94l.48.46c.42.42.81.85 1.18 1.28a5.32 5.32 0 0 0-.6 3.4l2-.39a3.57 3.57 0 0 1 0-1.12 11.3 11.3 0 0 1 .81 1.45c.56 1.32.52 2.06.34 2.23z\"}}]})(props);\n};\nexport function BiPaste (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 11V5c0-1.103-.897-2-2-2h-3a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1H4c-1.103 0-2 .897-2 2v13c0 1.103.897 2 2 2h7c0 1.103.897 2 2 2h7c1.103 0 2-.897 2-2v-7c0-1.103-.897-2-2-2zm-9 2v5H4V5h3v2h8V5h3v6h-5c-1.103 0-2 .897-2 2zm2 7v-7h7l.001 7H13z\"}}]})(props);\n};\nexport function BiPauseCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13 9h2v6h-2zM9 9h2v6H9z\"}}]})(props);\n};\nexport function BiPause (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8 7h3v10H8zm5 0h3v10h-3z\"}}]})(props);\n};\nexport function BiPen (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.404 2.998c-.757-.754-2.077-.751-2.828.005l-1.784 1.791L11.586 7H7a.998.998 0 0 0-.939.658l-4 11c-.133.365-.042.774.232 1.049l2 2a.997.997 0 0 0 1.049.232l11-4A.998.998 0 0 0 17 17v-4.586l2.207-2.207v-.001h.001L21 8.409c.378-.378.586-.881.585-1.415 0-.535-.209-1.038-.588-1.415l-2.593-2.581zm-3.111 8.295A.996.996 0 0 0 15 12v4.3l-9.249 3.363 4.671-4.671c.026.001.052.008.078.008A1.5 1.5 0 1 0 9 13.5c0 .026.007.052.008.078l-4.671 4.671L7.7 9H12c.266 0 .52-.105.707-.293L14.5 6.914 17.086 9.5l-1.793 1.793zm3.206-3.208-2.586-2.586 1.079-1.084 2.593 2.581-1.086 1.089z\"}}]})(props);\n};\nexport function BiPencil (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 21a1 1 0 0 0 .24 0l4-1a1 1 0 0 0 .47-.26L21 7.41a2 2 0 0 0 0-2.82L19.42 3a2 2 0 0 0-2.83 0L4.3 15.29a1.06 1.06 0 0 0-.27.47l-1 4A1 1 0 0 0 3.76 21 1 1 0 0 0 4 21zM18 4.41 19.59 6 18 7.59 16.42 6zM5.91 16.51 15 7.41 16.59 9l-9.1 9.1-2.11.52z\"}}]})(props);\n};\nexport function BiPhoneCall (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.57 22a2 2 0 0 0 1.43-.59l2.71-2.71a1 1 0 0 0 0-1.41l-4-4a1 1 0 0 0-1.41 0l-1.6 1.59a7.55 7.55 0 0 1-3-1.59 7.62 7.62 0 0 1-1.59-3l1.59-1.6a1 1 0 0 0 0-1.41l-4-4a1 1 0 0 0-1.41 0L2.59 6A2 2 0 0 0 2 7.43 15.28 15.28 0 0 0 6.3 17.7 15.28 15.28 0 0 0 16.57 22zM6 5.41 8.59 8 7.3 9.29a1 1 0 0 0-.3.91 10.12 10.12 0 0 0 2.3 4.5 10.08 10.08 0 0 0 4.5 2.3 1 1 0 0 0 .91-.27L16 15.41 18.59 18l-2 2a13.28 13.28 0 0 1-8.87-3.71A13.28 13.28 0 0 1 4 7.41zM20 11h2a8.81 8.81 0 0 0-9-9v2a6.77 6.77 0 0 1 7 7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13 8c2.1 0 3 .9 3 3h2c0-3.22-1.78-5-5-5z\"}}]})(props);\n};\nexport function BiPhoneIncoming (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.712 13.288a.999.999 0 0 0-1.414 0l-1.597 1.596c-.824-.245-2.166-.771-2.99-1.596-.874-.874-1.374-2.253-1.594-2.992l1.594-1.594a.999.999 0 0 0 0-1.414l-4-4a1.03 1.03 0 0 0-1.414 0l-2.709 2.71c-.382.38-.597.904-.588 1.437.022 1.423.396 6.367 4.297 10.268C10.195 21.6 15.142 21.977 16.566 22h.028c.528 0 1.027-.208 1.405-.586l2.712-2.712a.999.999 0 0 0 0-1.414l-3.999-4zM16.585 20c-1.248-.021-5.518-.356-8.874-3.712C4.343 12.92 4.019 8.636 4 7.414l2.004-2.005L8.59 7.995 7.297 9.288c-.238.238-.34.582-.271.912.024.115.611 2.842 2.271 4.502s4.387 2.247 4.502 2.271a.994.994 0 0 0 .912-.271l1.293-1.293 2.586 2.586L16.585 20z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15.795 6.791 13.005 4v6.995H20l-2.791-2.79 4.503-4.503-1.414-1.414z\"}}]})(props);\n};\nexport function BiPhoneOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10.09 12.5a8.92 8.92 0 0 1-1-2.2l1.59-1.59a1 1 0 0 0 0-1.42l-4-4a1 1 0 0 0-1.41 0L2.59 6A2 2 0 0 0 2 7.44 15.44 15.44 0 0 0 5.62 17L2.3 20.29l1.41 1.42 18-18-1.41-1.42zM7 15.55a13.36 13.36 0 0 1-3-8.13l2-2L8.59 8 7.3 9.29a1 1 0 0 0-.27.92 11 11 0 0 0 1.62 3.73zm9.71-2.26a1 1 0 0 0-1.41 0l-1.6 1.6-.34-.12-1.56 1.55a12.06 12.06 0 0 0 2 .66 1 1 0 0 0 .91-.27l1.3-1.3L18.59 18l-2 2A13.61 13.61 0 0 1 10 18.1l-1.43 1.45a15.63 15.63 0 0 0 8 2.45 2 2 0 0 0 1.43-.58l2.71-2.71a1 1 0 0 0 0-1.42z\"}}]})(props);\n};\nexport function BiPhoneOutgoing (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.712 13.288a.999.999 0 0 0-1.414 0l-1.594 1.594c-.739-.22-2.118-.72-2.992-1.594s-1.374-2.253-1.594-2.992l1.594-1.594a.999.999 0 0 0 0-1.414l-4-4a.999.999 0 0 0-1.414 0L2.586 6c-.38.38-.594.902-.586 1.435.023 1.424.4 6.37 4.298 10.268S15.142 21.977 16.566 22h.028c.528 0 1.027-.208 1.405-.586l2.712-2.712a.999.999 0 0 0 0-1.414l-3.999-4zM16.585 20c-1.248-.021-5.518-.356-8.873-3.712C4.346 12.922 4.02 8.637 4 7.414l2.005-2.005 2.586 2.586-1.293 1.293a1 1 0 0 0-.272.912c.024.115.611 2.842 2.271 4.502s4.387 2.247 4.502 2.271a.993.993 0 0 0 .912-.271l1.293-1.293 2.586 2.586L16.585 20z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m16.795 5.791-4.497 4.497 1.414 1.414 4.497-4.497L21.005 10V2.995H14z\"}}]})(props);\n};\nexport function BiPhone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.707 12.293a.999.999 0 0 0-1.414 0l-1.594 1.594c-.739-.22-2.118-.72-2.992-1.594s-1.374-2.253-1.594-2.992l1.594-1.594a.999.999 0 0 0 0-1.414l-4-4a.999.999 0 0 0-1.414 0L3.581 5.005c-.38.38-.594.902-.586 1.435.023 1.424.4 6.37 4.298 10.268s8.844 4.274 10.269 4.298h.028c.528 0 1.027-.208 1.405-.586l2.712-2.712a.999.999 0 0 0 0-1.414l-4-4.001zm-.127 6.712c-1.248-.021-5.518-.356-8.873-3.712-3.366-3.366-3.692-7.651-3.712-8.874L7 4.414 9.586 7 8.293 8.293a1 1 0 0 0-.272.912c.024.115.611 2.842 2.271 4.502s4.387 2.247 4.502 2.271a.991.991 0 0 0 .912-.271L17 14.414 19.586 17l-2.006 2.005z\"}}]})(props);\n};\nexport function BiPhotoAlbum (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.024 11.536 10 10l-2 3h9l-3.5-5z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"9.503\",\"cy\":\"7.497\",\"r\":\"1.503\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 2H6c-1.206 0-3 .799-3 3v14c0 2.201 1.794 3 3 3h15v-2H6.012C5.55 19.988 5 19.806 5 19s.55-.988 1.012-1H21V4c0-1.103-.897-2-2-2zm0 14H5V5c0-.806.55-.988 1-1h13v12z\"}}]})(props);\n};\nexport function BiPieChartAlt2 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm7.931 9H13V4.069A8.008 8.008 0 0 1 19.931 11zM4 12c0-4.072 3.061-7.436 7-7.931V12a.996.996 0 0 0 .111.438c.015.03.022.063.041.093l4.202 6.723A7.949 7.949 0 0 1 12 20c-4.411 0-8-3.589-8-8zm13.052 6.196L13.805 13h6.126a7.992 7.992 0 0 1-2.879 5.196z\"}}]})(props);\n};\nexport function BiPieChartAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2a9.936 9.936 0 0 0-7.071 2.929C3.04 6.818 2 9.33 2 12s1.04 5.182 2.929 7.071C6.818 20.96 9.33 22 12 22s5.182-1.04 7.071-2.929C20.96 17.182 22 14.67 22 12s-1.04-5.182-2.929-7.071A9.936 9.936 0 0 0 12 2zm5.657 15.657C16.146 19.168 14.137 20 12 20s-4.146-.832-5.657-2.343C4.832 16.146 4 14.137 4 12s.832-4.146 2.343-5.657A7.927 7.927 0 0 1 11 4.069V12a1 1 0 0 0 1 1h7.931a7.927 7.927 0 0 1-2.274 4.657zM13 11V4.062a7.945 7.945 0 0 1 4.657 2.281A7.934 7.934 0 0 1 19.938 11H13z\"}}]})(props);\n};\nexport function BiPieChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 5.166V12h6.834A6.817 6.817 0 0 0 12 5.166z\"}}]})(props);\n};\nexport function BiPin (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m12 22 1-2v-3h5a1 1 0 0 0 1-1v-1.586c0-.526-.214-1.042-.586-1.414L17 11.586V8a1 1 0 0 0 1-1V4c0-1.103-.897-2-2-2H8c-1.103 0-2 .897-2 2v3a1 1 0 0 0 1 1v3.586L5.586 13A2.01 2.01 0 0 0 5 14.414V16a1 1 0 0 0 1 1h5v3l1 2zM8 4h8v2H8V4zM7 14.414l1.707-1.707A.996.996 0 0 0 9 12V8h6v4c0 .266.105.52.293.707L17 14.414V15H7v-.586z\"}}]})(props);\n};\nexport function BiPlanet (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2.76 20.2a2.73 2.73 0 0 0 2.15.85 8.86 8.86 0 0 0 3.37-.86 9 9 0 0 0 12.27-10.9c1.31-2.23 1.75-4.26.67-5.48a2.94 2.94 0 0 0-2.57-1A5 5 0 0 0 16.1 4 9 9 0 0 0 3.58 15.14c-1.06 1.21-2.05 3.68-.82 5.06zm1.5-1.32c-.22-.25 0-1.07.37-1.76a9.26 9.26 0 0 0 1.57 1.74c-1.03.3-1.71.28-1.94.02zm14.51-5.17A7 7 0 0 1 15.58 18 7.12 7.12 0 0 1 12 19a6.44 6.44 0 0 1-1.24-.13 30.73 30.73 0 0 0 4.42-3.29 31.5 31.5 0 0 0 3.8-4 6.88 6.88 0 0 1-.21 2.13zm.09-8.89a.94.94 0 0 1 .87.32c.23.26.16.94-.26 1.93a9.2 9.2 0 0 0-1.61-1.86 2.48 2.48 0 0 1 1-.39zM5.22 10.31A6.94 6.94 0 0 1 8.41 6 7 7 0 0 1 12 5a6.9 6.9 0 0 1 6 3.41 5.19 5.19 0 0 1 .35.66 27.43 27.43 0 0 1-4.49 5A27.35 27.35 0 0 1 8.35 18a7 7 0 0 1-3.13-7.65z\"}}]})(props);\n};\nexport function BiPlayCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m9 17 8-5-8-5z\"}}]})(props);\n};\nexport function BiPlay (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 6v12l10-6z\"}}]})(props);\n};\nexport function BiPlug (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 8h2v5c0 2.206 1.794 4 4 4h2v5h2v-5h2c2.206 0 4-1.794 4-4V8h2V6H3v2zm4 0h10v5c0 1.103-.897 2-2 2H9c-1.103 0-2-.897-2-2V8zm0-6h2v3H7zm8 0h2v3h-2z\"}}]})(props);\n};\nexport function BiPlusCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}}]})(props);\n};\nexport function BiPlusMedical (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 2.013H9V9H2v6h7v6.987h6V15h7V9h-7z\"}}]})(props);\n};\nexport function BiPlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 11h-6V5h-2v6H5v2h6v6h2v-6h6z\"}}]})(props);\n};\nexport function BiPodcast (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12.01\",\"cy\":\"12\",\"r\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11.01 22h2l.5-7h-3l.5 7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2a10 10 0 0 0-2.45 19.68l-.15-2.12a8 8 0 1 1 5.21 0l-.15 2.12A10 10 0 0 0 12 2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15.32 9.61a3.44 3.44 0 0 1 .37.68 3.83 3.83 0 0 1 .23.75 3.57 3.57 0 0 1 .09.8 3.66 3.66 0 0 1-.09.81 3.83 3.83 0 0 1-.23.75 3.44 3.44 0 0 1-.37.68 4.7 4.7 0 0 1-.35.43l-.19 2.62a5.33 5.33 0 0 0 .58-.31A5.86 5.86 0 0 0 17 15.2a5.57 5.57 0 0 0 .55-1 5.89 5.89 0 0 0 .35-1.13 6.06 6.06 0 0 0 .1-1.23 6.22 6.22 0 0 0-.13-1.21A6.09 6.09 0 0 0 17 8.49a6.29 6.29 0 0 0-.73-.89 5.67 5.67 0 0 0-.89-.73 6.3 6.3 0 0 0-1-.56A6.17 6.17 0 0 0 13.21 6a6.11 6.11 0 0 0-2.41 0 5.51 5.51 0 0 0-1.13.36 5.57 5.57 0 0 0-1 .55 5.67 5.67 0 0 0-.89.73 6.29 6.29 0 0 0-.78.85 6.09 6.09 0 0 0-.9 2.14 6.21 6.21 0 0 0-.1 1.21 6.06 6.06 0 0 0 .12 1.21 5.89 5.89 0 0 0 .35 1.13 5.57 5.57 0 0 0 .55 1 6.24 6.24 0 0 0 1.62 1.62 5.33 5.33 0 0 0 .58.31L9 14.51a4.7 4.7 0 0 1-.35-.43 3.44 3.44 0 0 1-.37-.68 3.83 3.83 0 0 1-.23-.75 3.65 3.65 0 0 1-.05-.81 3.56 3.56 0 0 1 .08-.8 3.83 3.83 0 0 1 .23-.75 3.44 3.44 0 0 1 .37-.68 4 4 0 0 1 .5-.61 3.87 3.87 0 0 1 .59-.48 3.44 3.44 0 0 1 .68-.37 3.86 3.86 0 0 1 .75-.24 4.36 4.36 0 0 1 1.61 0 3.86 3.86 0 0 1 .75.24 3.58 3.58 0 0 1 1.27.85 3.49 3.49 0 0 1 .49.61z\"}}]})(props);\n};\nexport function BiPointer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.978 13.21a1 1 0 0 0-.396-1.024l-14-10a.999.999 0 0 0-1.575.931l2 17a1 1 0 0 0 1.767.516l3.612-4.416 3.377 5.46 1.701-1.052-3.357-5.428 6.089-1.218a.995.995 0 0 0 .782-.769zm-8.674.31a1 1 0 0 0-.578.347l-3.008 3.677L7.257 5.127l10.283 7.345-5.236 1.048z\"}}]})(props);\n};\nexport function BiPoll (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 11h7v2H7zm0-4h10.97v2H7zm0 8h13v2H7zM4 4h2v16H4z\"}}]})(props);\n};\nexport function BiPolygon (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.707 2.293A.996.996 0 0 0 16 2H8a.996.996 0 0 0-.707.293l-5 5A.996.996 0 0 0 2 8v8c0 .266.105.52.293.707l5 5A.996.996 0 0 0 8 22h8c.266 0 .52-.105.707-.293l5-5A.996.996 0 0 0 22 16V8a.996.996 0 0 0-.293-.707l-5-5zM20 15.586 15.586 20H8.414L4 15.586V8.414L8.414 4h7.172L20 8.414v7.172z\"}}]})(props);\n};\nexport function BiPopsicle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 2a7 7 0 0 0-4.94 2l-7.78 7.82a1 1 0 0 0 0 1.41l3.54 3.54-3.54 3.53 1.42 1.42 3.53-3.54 3.54 3.54a1 1 0 0 0 1.41 0L20 13.94A7 7 0 0 0 15 2zm3.54 10.54-7.07 7.06-2.82-2.83-1.42-1.42-2.83-2.83 7.07-7.07a5 5 0 0 1 7.08 7.08z\"}}]})(props);\n};\nexport function BiPound (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m5.553 19.105.764 1.843C7.498 20.555 9.422 20 10 20c.838 0 1.462.208 2.184.448.775.259 1.654.552 2.816.552 1.177 0 3.078-.921 3.447-1.105l-.895-1.789c-.721.36-2.031.894-2.552.894-.838 0-1.462-.208-2.184-.448C12.041 18.293 11.162 18 10 18c-.229 0-.526.037-.857.099C9.702 16.95 10 15.561 10 14h3v-2H9.626c-.042-.107-.084-.216-.125-.317C9.243 11.052 9 10.455 9 9c0-1.369.521-3 3-3 2.224 0 3.021 2.227 3.052 2.316l1.896-.633C16.898 7.533 15.679 4 12 4 8.313 4 7 6.583 7 9c0 1.491.234 2.35.478 3H5v2h3c0 2.467-.892 4.328-2.447 5.105z\"}}]})(props);\n};\nexport function BiPowerOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 21c4.411 0 8-3.589 8-8 0-3.35-2.072-6.221-5-7.411v2.223A6 6 0 0 1 18 13c0 3.309-2.691 6-6 6s-6-2.691-6-6a5.999 5.999 0 0 1 3-5.188V5.589C6.072 6.779 4 9.65 4 13c0 4.411 3.589 8 8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 2h2v10h-2z\"}}]})(props);\n};\nexport function BiPrinter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 7h-1V2H6v5H5c-1.654 0-3 1.346-3 3v7c0 1.103.897 2 2 2h2v3h12v-3h2c1.103 0 2-.897 2-2v-7c0-1.654-1.346-3-3-3zM8 4h8v3H8V4zm8 16H8v-4h8v4zm4-3h-2v-3H6v3H4v-7c0-.551.449-1 1-1h14c.552 0 1 .449 1 1v7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14 10h4v2h-4z\"}}]})(props);\n};\nexport function BiPulse (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.97 4.757a.999.999 0 0 0-1.918-.073l-3.186 9.554-2.952-6.644a1.002 1.002 0 0 0-1.843.034L5.323 12H2v2h3.323c.823 0 1.552-.494 1.856-1.257l.869-2.172 3.037 6.835c.162.363.521.594.915.594l.048-.001a.998.998 0 0 0 .9-.683l2.914-8.742.979 3.911A1.995 1.995 0 0 0 18.781 14H22v-2h-3.22l-1.81-7.243z\"}}]})(props);\n};\nexport function BiPurchaseTagAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.707 2.293A.997.997 0 0 0 11 2H6a.997.997 0 0 0-.707.293l-3 3A.996.996 0 0 0 2 6v5c0 .266.105.52.293.707l10 10a.997.997 0 0 0 1.414 0l8-8a.999.999 0 0 0 0-1.414l-10-10zM13 19.586l-9-9V6.414L6.414 4h4.172l9 9L13 19.586z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8.353\",\"cy\":\"8.353\",\"r\":\"1.647\"}}]})(props);\n};\nexport function BiPurchaseTag (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13.707 3.293A.996.996 0 0 0 13 3H4a1 1 0 0 0-1 1v9c0 .266.105.52.293.707l8 8a.997.997 0 0 0 1.414 0l9-9a.999.999 0 0 0 0-1.414l-8-8zM12 19.586l-7-7V5h7.586l7 7L12 19.586z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8.496\",\"cy\":\"8.495\",\"r\":\"1.505\"}}]})(props);\n};\nexport function BiPyramid (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.445 21.832a1 1 0 0 0 1.11 0l9-6A.998.998 0 0 0 21.8 14.4l-9-12c-.377-.504-1.223-.504-1.6 0l-9 12a1 1 0 0 0 .245 1.432l9 6zM13 19.131V6l6.565 8.754L13 19.131zM11 6v13.131l-6.565-4.377L11 6z\"}}]})(props);\n};\nexport function BiQrScan (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 4h4.01V2H2v6h2V4zm0 12H2v6h6.01v-2H4v-4zm16 4h-4v2h6v-6h-2v4zM16 4h4v4h2V2h-6v2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M5 11h6V5H5zm2-4h2v2H7zM5 19h6v-6H5zm2-4h2v2H7zM19 5h-6v6h6zm-2 4h-2V7h2zm-3.99 4h2v2h-2zm2 2h2v2h-2zm2 2h2v2h-2zm0-4h2v2h-2z\"}}]})(props);\n};\nexport function BiQr (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 11h8V3H3zm2-6h4v4H5zM3 21h8v-8H3zm2-6h4v4H5zm8-12v8h8V3zm6 6h-4V5h4zm-5.99 4h2v2h-2zm2 2h2v2h-2zm-2 2h2v2h-2zm4 0h2v2h-2zm2 2h2v2h-2zm-4 0h2v2h-2zm2-6h2v2h-2zm2 2h2v2h-2z\"}}]})(props);\n};\nexport function BiQuestionMark (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 4C9.243 4 7 6.243 7 9h2c0-1.654 1.346-3 3-3s3 1.346 3 3c0 1.069-.454 1.465-1.481 2.255-.382.294-.813.626-1.226 1.038C10.981 13.604 10.995 14.897 11 15v2h2v-2.009c0-.024.023-.601.707-1.284.32-.32.682-.598 1.031-.867C15.798 12.024 17 11.1 17 9c0-2.757-2.243-5-5-5zm-1 14h2v2h-2z\"}}]})(props);\n};\nexport function BiRadar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.579 2 2 6.58 2 12s4.579 10 10 10 10-4.58 10-10S17.421 2 12 2zm0 18c-4.337 0-8-3.664-8-8 0-3.998 3.115-7.417 7-7.927V6.09C8.167 6.569 6 9.033 6 12c0 3.309 2.691 6 6 6 1.595 0 3.1-.626 4.237-1.763l-1.414-1.415A3.97 3.97 0 0 1 12 16c-2.206 0-4-1.794-4-4 0-1.858 1.279-3.411 3-3.858v2.146c-.59.353-1 .993-1 1.712 0 1.081.919 2 2 2s2-.919 2-2c0-.719-.41-1.359-1-1.712V4.073c3.885.51 7 3.929 7 7.927 0 4.336-3.663 8-8 8z\"}}]})(props);\n};\nexport function BiRadioCircleMarked (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 5c-3.859 0-7 3.141-7 7s3.141 7 7 7 7-3.141 7-7-3.141-7-7-7zm0 12c-2.757 0-5-2.243-5-5s2.243-5 5-5 5 2.243 5 5-2.243 5-5 5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 9c-1.627 0-3 1.373-3 3s1.373 3 3 3 3-1.373 3-3-1.373-3-3-3z\"}}]})(props);\n};\nexport function BiRadioCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 12c0 3.859 3.14 7 7 7 3.859 0 7-3.141 7-7s-3.141-7-7-7c-3.86 0-7 3.141-7 7zm12 0c0 2.757-2.243 5-5 5s-5-2.243-5-5 2.243-5 5-5 5 2.243 5 5z\"}}]})(props);\n};\nexport function BiRadio (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m20.25 5.025-7.898-2.962-.703 1.873L14.484 5H4c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V7c0-1.018-.767-1.85-1.75-1.975zM4 19v-7h16v-2H4V7h16l.001 12H4z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"16.5\",\"cy\":\"15.5\",\"r\":\"2.5\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M6 15h4.999v2H6z\"}}]})(props);\n};\nexport function BiReceipt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 11h-3V4a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v14c0 1.654 1.346 3 3 3h14c1.654 0 3-1.346 3-3v-6a1 1 0 0 0-1-1zM5 19a1 1 0 0 1-1-1V5h12v13c0 .351.061.688.171 1H5zm15-1a1 1 0 0 1-2 0v-5h2v5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M6 7h8v2H6zm0 4h8v2H6zm5 4h3v2h-3z\"}}]})(props);\n};\nexport function BiRectangle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM4 19V5h16l.001 14H4z\"}}]})(props);\n};\nexport function BiRecycle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.224 15.543-.813-1.464-1.748.972.812 1.461c.048.085.082.173.104.264a1.024 1.024 0 0 1-.014.5.988.988 0 0 1-.104.235 1 1 0 0 1-.347.352.978.978 0 0 1-.513.137H14v-2l-4 3 4 3v-2h4.601c.278 0 .552-.037.811-.109a2.948 2.948 0 0 0 1.319-.776c.178-.179.332-.38.456-.593a2.992 2.992 0 0 0 .336-2.215 3.163 3.163 0 0 0-.299-.764zM5.862 11.039l-2.31 4.62a3.06 3.06 0 0 0-.261.755 2.997 2.997 0 0 0 .851 2.735c.178.174.376.326.595.453A3.022 3.022 0 0 0 6.236 20H8v-2H6.236a1.016 1.016 0 0 1-.5-.13.974.974 0 0 1-.353-.349 1 1 0 0 1-.149-.468.933.933 0 0 1 .018-.245c.018-.087.048-.173.089-.256l2.256-4.512 1.599.923L8.598 8 4 9.964l1.862 1.075zm12.736 1.925L19.196 8l-1.638.945-2.843-5.117a2.95 2.95 0 0 0-1.913-1.459 3.227 3.227 0 0 0-.772-.083 3.003 3.003 0 0 0-1.498.433A2.967 2.967 0 0 0 9.41 3.944l-.732 1.464 1.789.895.732-1.465c.045-.09.101-.171.166-.242a.933.933 0 0 1 .443-.27 1.053 1.053 0 0 1 .53-.011.963.963 0 0 1 .63.485l2.858 5.146L14 11l4.598 1.964z\"}}]})(props);\n};\nexport function BiRedo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 18h3v-2H9c-1.654 0-3-1.346-3-3s1.346-3 3-3h6v3l5-4-5-4v3H9c-2.757 0-5 2.243-5 5s2.243 5 5 5z\"}}]})(props);\n};\nexport function BiReflectHorizontal (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 21h12l-6-6-6 6zM18 3H6l6 6 6-6zM3 11h3v2H3zm5 0h3v2H8zm5 0h3v2h-3zm5 0h3v2h-3z\"}}]})(props);\n};\nexport function BiReflectVertical (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m3 18 6-6-6-6v12zm12-6 6 6V6l-6 6zm-4-9h2v3h-2zm0 5h2v3h-2zm0 5h2v3h-2zm0 5h2v3h-2z\"}}]})(props);\n};\nexport function BiRefresh (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 11H7.101l.001-.009a4.956 4.956 0 0 1 .752-1.787 5.054 5.054 0 0 1 2.2-1.811c.302-.128.617-.226.938-.291a5.078 5.078 0 0 1 2.018 0 4.978 4.978 0 0 1 2.525 1.361l1.416-1.412a7.036 7.036 0 0 0-2.224-1.501 6.921 6.921 0 0 0-1.315-.408 7.079 7.079 0 0 0-2.819 0 6.94 6.94 0 0 0-1.316.409 7.04 7.04 0 0 0-3.08 2.534 6.978 6.978 0 0 0-1.054 2.505c-.028.135-.043.273-.063.41H2l4 4 4-4zm4 2h2.899l-.001.008a4.976 4.976 0 0 1-2.103 3.138 4.943 4.943 0 0 1-1.787.752 5.073 5.073 0 0 1-2.017 0 4.956 4.956 0 0 1-1.787-.752 5.072 5.072 0 0 1-.74-.61L7.05 16.95a7.032 7.032 0 0 0 2.225 1.5c.424.18.867.317 1.315.408a7.07 7.07 0 0 0 2.818 0 7.031 7.031 0 0 0 4.395-2.945 6.974 6.974 0 0 0 1.053-2.503c.027-.135.043-.273.063-.41H22l-4-4-4 4z\"}}]})(props);\n};\nexport function BiRegistered (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.14 2a10 10 0 1 0 10 10 10 10 0 0 0-10-10zm0 18a8 8 0 1 1 8-8 8 8 0 0 1-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M16.14 10a3 3 0 0 0-3-3h-5v10h2v-4h1.46l2.67 4h2.4l-2.75-4.12A3 3 0 0 0 16.14 10zm-3 1h-3V9h3a1 1 0 0 1 0 2z\"}}]})(props);\n};\nexport function BiRename (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.005 5.995h-1v2h1v8h-1v2h1c1.103 0 2-.897 2-2v-8c0-1.102-.898-2-2-2zm-14 4H15v4H6.005z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M17.005 17.995V4H20V2h-8v2h3.005v1.995h-11c-1.103 0-2 .897-2 2v8c0 1.103.897 2 2 2h11V20H12v2h8v-2h-2.995v-2.005zm-13-2v-8h11v8h-11z\"}}]})(props);\n};\nexport function BiRepeat (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 6h-5v2h4v9H4V8h5v3l5-4-5-4v3H3a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V7a1 1 0 0 0-1-1z\"}}]})(props);\n};\nexport function BiReplyAll (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 18v-8a1 1 0 0 0-1-1h-6V6l-5 4 5 4v-3h5v7h2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M9 12.4 6 10l3-2.4V6l-5 4 5 4z\"}}]})(props);\n};\nexport function BiReply (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 11h6v7h2v-8a1 1 0 0 0-1-1h-7V6l-5 4 5 4v-3z\"}}]})(props);\n};\nexport function BiRepost (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 7a1 1 0 0 0-1-1h-8v2h7v5h-3l3.969 5L22 13h-3V7zM5 17a1 1 0 0 0 1 1h8v-2H7v-5h3L6 6l-4 5h3v6z\"}}]})(props);\n};\nexport function BiReset (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 16c1.671 0 3-1.331 3-3s-1.329-3-3-3-3 1.331-3 3 1.329 3 3 3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20.817 11.186a8.94 8.94 0 0 0-1.355-3.219 9.053 9.053 0 0 0-2.43-2.43 8.95 8.95 0 0 0-3.219-1.355 9.028 9.028 0 0 0-1.838-.18V2L8 5l3.975 3V6.002c.484-.002.968.044 1.435.14a6.961 6.961 0 0 1 2.502 1.053 7.005 7.005 0 0 1 1.892 1.892A6.967 6.967 0 0 1 19 13a7.032 7.032 0 0 1-.55 2.725 7.11 7.11 0 0 1-.644 1.188 7.2 7.2 0 0 1-.858 1.039 7.028 7.028 0 0 1-3.536 1.907 7.13 7.13 0 0 1-2.822 0 6.961 6.961 0 0 1-2.503-1.054 7.002 7.002 0 0 1-1.89-1.89A6.996 6.996 0 0 1 5 13H3a9.02 9.02 0 0 0 1.539 5.034 9.096 9.096 0 0 0 2.428 2.428A8.95 8.95 0 0 0 12 22a9.09 9.09 0 0 0 1.814-.183 9.014 9.014 0 0 0 3.218-1.355 8.886 8.886 0 0 0 1.331-1.099 9.228 9.228 0 0 0 1.1-1.332A8.952 8.952 0 0 0 21 13a9.09 9.09 0 0 0-.183-1.814z\"}}]})(props);\n};\nexport function BiRestaurant (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 10h-2V3H8v7H6V3H4v8c0 1.654 1.346 3 3 3h1v7h2v-7h1c1.654 0 3-1.346 3-3V3h-2v7zm7-7h-1c-1.159 0-2 1.262-2 3v8h2v7h2V4a1 1 0 0 0-1-1z\"}}]})(props);\n};\nexport function BiRevision (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.89 10.105a8.696 8.696 0 0 0-.789-1.456l-1.658 1.119a6.606 6.606 0 0 1 .987 2.345 6.659 6.659 0 0 1 0 2.648 6.495 6.495 0 0 1-.384 1.231 6.404 6.404 0 0 1-.603 1.112 6.654 6.654 0 0 1-1.776 1.775 6.606 6.606 0 0 1-2.343.987 6.734 6.734 0 0 1-2.646 0 6.55 6.55 0 0 1-3.317-1.788 6.605 6.605 0 0 1-1.408-2.088 6.613 6.613 0 0 1-.382-1.23 6.627 6.627 0 0 1 .382-3.877A6.551 6.551 0 0 1 7.36 8.797 6.628 6.628 0 0 1 9.446 7.39c.395-.167.81-.296 1.23-.382.107-.022.216-.032.324-.049V10l5-4-5-4v2.938a8.805 8.805 0 0 0-.725.111 8.512 8.512 0 0 0-3.063 1.29A8.566 8.566 0 0 0 4.11 16.77a8.535 8.535 0 0 0 1.835 2.724 8.614 8.614 0 0 0 2.721 1.833 8.55 8.55 0 0 0 5.061.499 8.576 8.576 0 0 0 6.162-5.056c.22-.52.389-1.061.5-1.608a8.643 8.643 0 0 0 0-3.45 8.684 8.684 0 0 0-.499-1.607z\"}}]})(props);\n};\nexport function BiRewindCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 16V8l-5 4zm6 0V8l-5 4z\"}}]})(props);\n};\nexport function BiRewind (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 12V7l-7 5 7 5zm7-5-7 5 7 5z\"}}]})(props);\n};\nexport function BiRfid (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 22h16a1 1 0 0 0 1-1v-8h-2v7H5V4h5V2H4a1 1 0 0 0-1 1v18a1 1 0 0 0 1 1z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"11\",\"r\":\"1\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15 11h2a5 5 0 0 0-5-5v2a3 3 0 0 1 3 3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 11h2a9 9 0 0 0-9-9v2a7 7 0 0 1 7 7zM9.65 15.67a1 1 0 0 0-.14-.51.76.76 0 0 0-.38-.31 2.3 2.3 0 0 0-.75-.09H7V18h.65v-1.35h.14a1.31 1.31 0 0 1 .33 0 .58.58 0 0 1 .19.14 4.72 4.72 0 0 1 .35.48l.47.7h.78l-.39-.63a3.56 3.56 0 0 0-.38-.53 1.25 1.25 0 0 0-.35-.27 1 1 0 0 0 .64-.3.84.84 0 0 0 .22-.57zm-.74.33a.4.4 0 0 1-.18.14 2.36 2.36 0 0 1-.59 0h-.49v-.82h1a.4.4 0 0 1 .25.13.36.36 0 0 1 .09.26.43.43 0 0 1-.08.29zM10.92 16.62h1.36v-.54h-1.36v-.77h1.57v-.55h-2.22V18h.65v-1.38zM13.01 14.76h.65V18h-.65zM16.1 14.82a2.48 2.48 0 0 0-.62-.06h-1.2V18h1.24a1.76 1.76 0 0 0 .57-.07 1.07 1.07 0 0 0 .46-.26 1.35 1.35 0 0 0 .35-.57 2 2 0 0 0 .1-.69 2.35 2.35 0 0 0-.11-.76 1.33 1.33 0 0 0-.31-.53 1.09 1.09 0 0 0-.48-.3zm.16 2.18a.74.74 0 0 1-.17.31.57.57 0 0 1-.27.13 1.79 1.79 0 0 1-.39 0h-.49v-2.13h.29a3.06 3.06 0 0 1 .54 0 .71.71 0 0 1 .3.15.82.82 0 0 1 .19.32 2.05 2.05 0 0 1 .06.57 2.41 2.41 0 0 1-.06.65z\"}}]})(props);\n};\nexport function BiRightArrowAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m11.293 17.293 1.414 1.414L19.414 12l-6.707-6.707-1.414 1.414L15.586 11H6v2h9.586z\"}}]})(props);\n};\nexport function BiRightArrowCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.999 1.993c-5.514.001-10 4.487-10 10.001s4.486 10 10.001 10c5.513 0 9.999-4.486 10-10 0-5.514-4.486-10-10.001-10.001zM12 19.994c-4.412 0-8.001-3.589-8.001-8s3.589-8 8-8.001C16.411 3.994 20 7.583 20 11.994c-.001 4.411-3.59 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 10.994H8v2h4V16l4.005-4.005L12 7.991z\"}}]})(props);\n};\nexport function BiRightArrow (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5.536 21.886a1.004 1.004 0 0 0 1.033-.064l13-9a1 1 0 0 0 0-1.644l-13-9A.998.998 0 0 0 5 3v18a1 1 0 0 0 .536.886zM7 4.909 17.243 12 7 19.091V4.909z\"}}]})(props);\n};\nexport function BiRightDownArrowCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2.007a9.928 9.928 0 0 0-7.071 2.922c-3.899 3.899-3.899 10.243 0 14.143A9.93 9.93 0 0 0 12 21.995a9.93 9.93 0 0 0 7.071-2.923c3.899-3.899 3.899-10.243 0-14.143A9.928 9.928 0 0 0 12 2.007zm5.657 15.65A7.946 7.946 0 0 1 12 19.994c-2.141 0-4.15-.83-5.657-2.337-3.119-3.119-3.119-8.195 0-11.314A7.944 7.944 0 0 1 12 4.007c2.141 0 4.15.829 5.657 2.336 3.119 3.119 3.119 8.195 0 11.314z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M9.661 8.247 8.247 9.661l3.214 3.214L9.336 15H15V9.337l-2.125 2.124z\"}}]})(props);\n};\nexport function BiRightIndent (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 15h10v2H10zm-6 4h16v2H4zm6-8h10v2H10zm0-4h10v2H10zM4 3h16v2H4zm0 5v8l4-4z\"}}]})(props);\n};\nexport function BiRightTopArrowCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.006 2.007a9.927 9.927 0 0 0-7.071 2.922c-3.898 3.899-3.898 10.243 0 14.142 1.885 1.885 4.396 2.923 7.071 2.923s5.187-1.038 7.071-2.923c3.898-3.898 3.898-10.242 0-14.142a9.928 9.928 0 0 0-7.071-2.922zm5.657 15.649c-1.507 1.507-3.517 2.337-5.657 2.337s-4.15-.83-5.657-2.337c-3.118-3.119-3.118-8.194 0-11.313 1.507-1.507 3.516-2.336 5.657-2.336s4.15.829 5.657 2.336c3.118 3.119 3.118 8.194 0 11.313z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m11.467 11.125-3.214 3.214 1.414 1.414 3.214-3.214 2.125 2.124V9H9.343z\"}}]})(props);\n};\nexport function BiRocket (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.92 2.38A15.72 15.72 0 0 0 17.5 2a8.26 8.26 0 0 0-6 2.06Q9.89 5.67 8.31 7.27c-1.21-.13-4.08-.2-6 1.74a1 1 0 0 0 0 1.41l11.3 11.32a1 1 0 0 0 1.41 0c1.95-2 1.89-4.82 1.77-6l3.21-3.2c3.19-3.19 1.74-9.18 1.68-9.43a1 1 0 0 0-.76-.73zm-2.36 8.75L15 14.67a1 1 0 0 0-.27.9 6.81 6.81 0 0 1-.54 3.94L4.52 9.82a6.67 6.67 0 0 1 4-.5A1 1 0 0 0 9.39 9s1.4-1.45 3.51-3.56A6.61 6.61 0 0 1 17.5 4a14.51 14.51 0 0 1 2.33.2c.24 1.43.62 5.04-1.27 6.93z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15.73\",\"cy\":\"8.3\",\"r\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M5 16c-2 1-2 5-2 5a7.81 7.81 0 0 0 5-2z\"}}]})(props);\n};\nexport function BiRotateLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6.758 8.758 5.344 7.344a8.048 8.048 0 0 0-1.841 2.859l1.873.701a6.048 6.048 0 0 1 1.382-2.146zM19 12.999a7.935 7.935 0 0 0-2.344-5.655A7.917 7.917 0 0 0 12 5.069V2L7 6l5 4V7.089a5.944 5.944 0 0 1 3.242 1.669A5.956 5.956 0 0 1 17 13v.002c0 .33-.033.655-.086.977-.007.043-.011.088-.019.131a6.053 6.053 0 0 1-1.138 2.536c-.16.209-.331.412-.516.597a5.954 5.954 0 0 1-.728.613 5.906 5.906 0 0 1-2.277 1.015c-.142.03-.285.05-.43.069-.062.009-.122.021-.184.027a6.104 6.104 0 0 1-1.898-.103L9.3 20.819a8.087 8.087 0 0 0 2.534.136c.069-.007.138-.021.207-.03.205-.026.409-.056.61-.098l.053-.009-.001-.005a7.877 7.877 0 0 0 2.136-.795l.001.001.028-.019a7.906 7.906 0 0 0 1.01-.67c.27-.209.532-.43.777-.675.248-.247.47-.513.681-.785.021-.028.049-.053.07-.081l-.006-.004a7.899 7.899 0 0 0 1.093-1.997l.008.003c.029-.078.05-.158.076-.237.037-.11.075-.221.107-.333.04-.14.073-.281.105-.423.022-.099.048-.195.066-.295.032-.171.056-.344.076-.516.01-.076.023-.15.03-.227.023-.249.037-.5.037-.753.002-.002.002-.004.002-.008zM6.197 16.597l-1.6 1.201a8.045 8.045 0 0 0 2.569 2.225l.961-1.754a6.018 6.018 0 0 1-1.93-1.672zM5 13c0-.145.005-.287.015-.429l-1.994-.143a7.977 7.977 0 0 0 .483 3.372l1.873-.701A5.975 5.975 0 0 1 5 13z\"}}]})(props);\n};\nexport function BiRotateRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.242 17.242a6.04 6.04 0 0 1-1.37 1.027l.961 1.754a8.068 8.068 0 0 0 2.569-2.225l-1.6-1.201a5.938 5.938 0 0 1-.56.645zm1.743-4.671a5.975 5.975 0 0 1-.362 2.528l1.873.701a7.977 7.977 0 0 0 .483-3.371l-1.994.142zm1.512-2.368a8.048 8.048 0 0 0-1.841-2.859l-1.414 1.414a6.071 6.071 0 0 1 1.382 2.146l1.873-.701zm-8.128 8.763c-.047-.005-.094-.015-.141-.021a6.701 6.701 0 0 1-.468-.075 5.923 5.923 0 0 1-2.421-1.122 5.954 5.954 0 0 1-.583-.506 6.138 6.138 0 0 1-.516-.597 5.91 5.91 0 0 1-.891-1.634 6.086 6.086 0 0 1-.247-.902c-.008-.043-.012-.088-.019-.131A6.332 6.332 0 0 1 6 13.002V13c0-1.603.624-3.109 1.758-4.242A5.944 5.944 0 0 1 11 7.089V10l5-4-5-4v3.069a7.917 7.917 0 0 0-4.656 2.275A7.936 7.936 0 0 0 4 12.999v.009c0 .253.014.504.037.753.007.076.021.15.03.227.021.172.044.345.076.516.019.1.044.196.066.295.032.142.065.283.105.423.032.112.07.223.107.333.026.079.047.159.076.237l.008-.003A7.948 7.948 0 0 0 5.6 17.785l-.007.005c.021.028.049.053.07.081.211.272.433.538.681.785a8.236 8.236 0 0 0 .966.816c.265.192.537.372.821.529l.028.019.001-.001a7.877 7.877 0 0 0 2.136.795l-.001.005.053.009c.201.042.405.071.61.098.069.009.138.023.207.03a8.038 8.038 0 0 0 2.532-.137l-.424-1.955a6.11 6.11 0 0 1-1.904.102z\"}}]})(props);\n};\nexport function BiRss (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 20.001C19 11.729 12.271 5 4 5v2c7.168 0 13 5.832 13 13.001h2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 20.001h2C14 14.486 9.514 10 4 10v2c4.411 0 8 3.589 8 8.001z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"6\",\"cy\":\"18\",\"r\":\"2\"}}]})(props);\n};\nexport function BiRuble (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8 21h2v-3h6v-2h-6v-2h4.5c2.757 0 5-2.243 5-5s-2.243-5-5-5H9a1 1 0 0 0-1 1v7H5v2h3v2H5v2h3v3zm2-15h4.5c1.654 0 3 1.346 3 3s-1.346 3-3 3H10V6z\"}}]})(props);\n};\nexport function BiRuler (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.875 7H3.125C1.953 7 1 7.897 1 9v6c0 1.103.953 2 2.125 2h17.75C22.047 17 23 16.103 23 15V9c0-1.103-.953-2-2.125-2zm0 8H3.125c-.057 0-.096-.016-.113-.016-.007 0-.011.002-.012.008l-.012-5.946c.007-.01.052-.046.137-.046H5v3h2V9h2v4h2V9h2v3h2V9h2v4h2V9h1.875c.079.001.122.028.125.008l.012 5.946c-.007.01-.052.046-.137.046z\"}}]})(props);\n};\nexport function BiRun (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"17\",\"cy\":\"4\",\"r\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15.777 10.969a2.007 2.007 0 0 0 2.148.83l3.316-.829-.483-1.94-3.316.829-1.379-2.067a2.01 2.01 0 0 0-1.272-.854l-3.846-.77a1.998 1.998 0 0 0-2.181 1.067l-1.658 3.316 1.789.895 1.658-3.317 1.967.394L7.434 17H3v2h4.434c.698 0 1.355-.372 1.715-.971l1.918-3.196 5.169 1.034 1.816 5.449 1.896-.633-1.815-5.448a2.007 2.007 0 0 0-1.506-1.33l-3.039-.607 1.772-2.954.417.625z\"}}]})(props);\n};\nexport function BiRupee (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 6V4H6v2h3.5c1.302 0 2.401.838 2.815 2H6v2h6.315A2.994 2.994 0 0 1 9.5 12H6v2.414L11.586 20h2.828l-6-6H9.5a5.007 5.007 0 0 0 4.898-4H17V8h-2.602a4.933 4.933 0 0 0-.924-2H17z\"}}]})(props);\n};\nexport function BiSad (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8.5\",\"cy\":\"10.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15.493\",\"cy\":\"10.493\",\"r\":\"1.493\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 14c-3 0-4 3-4 3h8s-1-3-4-3z\"}}]})(props);\n};\nexport function BiSave (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 21h14a2 2 0 0 0 2-2V8a1 1 0 0 0-.29-.71l-4-4A1 1 0 0 0 16 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2zm10-2H9v-5h6zM13 7h-2V5h2zM5 5h2v4h8V5h.59L19 8.41V19h-2v-5a2 2 0 0 0-2-2H9a2 2 0 0 0-2 2v5H5z\"}}]})(props);\n};\nexport function BiScan (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 4v5h2V5h4V3H4a1 1 0 0 0-1 1zm18 5V4a1 1 0 0 0-1-1h-5v2h4v4h2zm-2 10h-4v2h5a1 1 0 0 0 1-1v-5h-2v4zM9 21v-2H5v-4H3v5a1 1 0 0 0 1 1h5zM2 11h20v2H2z\"}}]})(props);\n};\nexport function BiScatterChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 21h17v-2H5V3H3v17a1 1 0 0 0 1 1z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"10\",\"cy\":\"8\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"18\",\"cy\":\"12\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"11.5\",\"cy\":\"13.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"16.5\",\"cy\":\"6.5\",\"r\":\"1.5\"}}]})(props);\n};\nexport function BiScreenshot (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 14h-2v3h-3v2h3v3h2v-3h3v-2h-3zM4 19h3v-2H5v-2H3v3a1 1 0 0 0 1 1zM19 4a1 1 0 0 0-1-1h-3v2h2v2h2V4zM5 5h2V3H4a1 1 0 0 0-1 1v3h2V5zM3 9h2v4H3zm14 0h2v3h-2zM9 3h4v2H9zm0 14h3v2H9z\"}}]})(props);\n};\nexport function BiSearchAlt2 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.023 16.977a35.13 35.13 0 0 1-1.367-1.384c-.372-.378-.596-.653-.596-.653l-2.8-1.337A6.962 6.962 0 0 0 16 9c0-3.859-3.14-7-7-7S2 5.141 2 9s3.14 7 7 7c1.763 0 3.37-.66 4.603-1.739l1.337 2.8s.275.224.653.596c.387.363.896.854 1.384 1.367l1.358 1.392.604.646 2.121-2.121-.646-.604c-.379-.372-.885-.866-1.391-1.36zM9 14c-2.757 0-5-2.243-5-5s2.243-5 5-5 5 2.243 5 5-2.243 5-5 5z\"}}]})(props);\n};\nexport function BiSearchAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 18a7.952 7.952 0 0 0 4.897-1.688l4.396 4.396 1.414-1.414-4.396-4.396A7.952 7.952 0 0 0 18 10c0-4.411-3.589-8-8-8s-8 3.589-8 8 3.589 8 8 8zm0-14c3.309 0 6 2.691 6 6s-2.691 6-6 6-6-2.691-6-6 2.691-6 6-6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11.412 8.586c.379.38.588.882.588 1.414h2a3.977 3.977 0 0 0-1.174-2.828c-1.514-1.512-4.139-1.512-5.652 0l1.412 1.416c.76-.758 2.07-.756 2.826-.002z\"}}]})(props);\n};\nexport function BiSearch (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 18a7.952 7.952 0 0 0 4.897-1.688l4.396 4.396 1.414-1.414-4.396-4.396A7.952 7.952 0 0 0 18 10c0-4.411-3.589-8-8-8s-8 3.589-8 8 3.589 8 8 8zm0-14c3.309 0 6 2.691 6 6s-2.691 6-6 6-6-2.691-6-6 2.691-6 6-6z\"}}]})(props);\n};\nexport function BiSelectMultiple (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H8c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zM8 16V4h12l.002 12H8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M4 8H2v12c0 1.103.897 2 2 2h12v-2H4V8zm8.933 3.519-1.726-1.726-1.414 1.414 3.274 3.274 5.702-6.84-1.538-1.282z\"}}]})(props);\n};\nexport function BiSelection (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 9a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v1H9V4a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h1v6H4a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1v-1h6v1a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1h-1V9h1zm-3-4h2v2h-2V5zM5 5h2v2H5V5zm2 14H5v-2h2v2zm12 0h-2v-2h2v2zm-2-4h-1a1 1 0 0 0-1 1v1H9v-1a1 1 0 0 0-1-1H7V9h1a1 1 0 0 0 1-1V7h6v1a1 1 0 0 0 1 1h1v6z\"}}]})(props);\n};\nexport function BiSend (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.426 11.095-17-8A.999.999 0 0 0 3.03 4.242L4.969 12 3.03 19.758a.998.998 0 0 0 1.396 1.147l17-8a1 1 0 0 0 0-1.81zM5.481 18.197l.839-3.357L12 12 6.32 9.16l-.839-3.357L18.651 12l-13.17 6.197z\"}}]})(props);\n};\nexport function BiServer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2zM4 9V5h16v4zm16 4H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2zM4 19v-4h16v4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M17 6h2v2h-2zm-3 0h2v2h-2zm3 10h2v2h-2zm-3 0h2v2h-2z\"}}]})(props);\n};\nexport function BiShapeCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.494 9.05a8.14 8.14 0 0 0-4.544-4.544C14.713 3.088 13.485 2 12 2S9.287 3.088 9.05 4.506A8.136 8.136 0 0 0 4.506 9.05C3.088 9.287 2 10.515 2 12s1.088 2.713 2.506 2.95a8.14 8.14 0 0 0 4.544 4.544C9.287 20.912 10.515 22 12 22s2.713-1.088 2.95-2.506a8.14 8.14 0 0 0 4.544-4.544C20.912 14.713 22 13.485 22 12s-1.088-2.713-2.506-2.95zM12 4a1 1 0 0 1 1 1c0 .06-.023.11-.034.167a1.015 1.015 0 0 1-.083.279c-.014.027-.034.049-.051.075a1.062 1.062 0 0 1-.16.209c-.04.037-.09.062-.136.092-.054.036-.104.078-.165.103-.115.047-.239.075-.371.075s-.256-.028-.371-.075c-.061-.024-.111-.066-.165-.103-.046-.03-.096-.055-.136-.092a1.062 1.062 0 0 1-.16-.209c-.017-.026-.037-.048-.051-.075a1.026 1.026 0 0 1-.083-.279C11.023 5.11 11 5.06 11 5a1 1 0 0 1 1-1zm-7 7c.06 0 .11.023.167.034.099.017.194.041.279.083.027.014.049.034.075.051.075.047.149.097.209.16.037.04.062.09.092.136.036.054.078.104.103.165.047.115.075.239.075.371s-.028.256-.075.371c-.024.061-.066.111-.103.165-.03.046-.055.096-.092.136-.06.063-.134.113-.209.16-.026.017-.048.037-.075.051a1.026 1.026 0 0 1-.279.083C5.11 12.977 5.06 13 5 13a1 1 0 0 1 0-2zm7 9a1 1 0 0 1-1-1c0-.06.023-.11.034-.167.017-.099.041-.194.083-.279.014-.027.034-.049.051-.075.047-.075.097-.149.16-.209.04-.037.09-.062.136-.092.054-.036.104-.078.165-.103.115-.047.239-.075.371-.075s.256.028.371.075c.061.024.111.066.165.103.046.03.096.055.136.092.063.06.113.134.16.209.017.026.037.048.051.075.042.085.066.181.083.279.011.057.034.107.034.167a1 1 0 0 1-1 1zm2.583-2.512c-.006-.011-.017-.019-.022-.029a3.007 3.007 0 0 0-.996-1.007c-.054-.033-.109-.06-.166-.09a2.902 2.902 0 0 0-.486-.205c-.064-.021-.128-.044-.194-.061-.233-.057-.471-.096-.719-.096s-.486.039-.718.097c-.066.017-.13.039-.195.061a2.928 2.928 0 0 0-.485.205c-.056.029-.112.057-.166.09a3.007 3.007 0 0 0-.996 1.007c-.006.011-.017.019-.022.029a6.15 6.15 0 0 1-2.905-2.905c.011-.006.019-.017.029-.022a3.007 3.007 0 0 0 1.007-.996c.033-.054.061-.11.09-.166.083-.154.15-.316.205-.485.021-.065.044-.129.061-.195.056-.234.095-.472.095-.72s-.039-.486-.097-.718a2.568 2.568 0 0 0-.061-.194 2.902 2.902 0 0 0-.205-.486c-.03-.057-.057-.112-.09-.166A3.007 3.007 0 0 0 6.54 9.44c-.01-.006-.018-.017-.028-.023a6.15 6.15 0 0 1 2.905-2.905c.006.01.017.018.022.029.248.411.588.755.996 1.007.054.033.11.061.166.09.155.083.316.15.486.205.064.021.128.044.194.061.233.057.47.096.719.096a2.94 2.94 0 0 0 .912-.158c.17-.055.331-.122.486-.205.056-.029.112-.057.166-.09.408-.252.748-.596.996-1.007.006-.011.017-.019.022-.029a6.15 6.15 0 0 1 2.905 2.905c-.011.006-.019.017-.029.022a3.007 3.007 0 0 0-1.007.996c-.033.054-.061.11-.09.166-.083.155-.15.316-.205.486-.021.064-.044.128-.061.194A3.07 3.07 0 0 0 16 12a2.94 2.94 0 0 0 .158.912c.055.17.122.331.205.486.029.056.057.112.09.166.252.408.596.748 1.007.996.011.006.019.017.029.022a6.145 6.145 0 0 1-2.906 2.906zM19 13c-.06 0-.11-.023-.167-.034a1.015 1.015 0 0 1-.279-.083c-.027-.014-.049-.034-.075-.051a1.062 1.062 0 0 1-.209-.16c-.037-.04-.062-.09-.092-.136-.036-.054-.078-.104-.103-.165-.047-.115-.075-.239-.075-.371s.028-.256.075-.371c.024-.061.066-.111.103-.165.03-.046.055-.096.092-.136.06-.063.134-.113.209-.16.026-.017.048-.037.075-.051.085-.042.181-.066.279-.083.057-.011.107-.034.167-.034a1 1 0 0 1 0 2z\"}}]})(props);\n};\nexport function BiShapePolygon (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 14.185v-2.369A2.997 2.997 0 0 0 22 9c0-1.654-1.346-3-3-3a2.99 2.99 0 0 0-2.116.876L12.969 5.31c.01-.103.031-.204.031-.31 0-1.654-1.346-3-3-3S7 3.346 7 5c0 .762.295 1.451.765 1.981L6.091 9.212A2.977 2.977 0 0 0 5 9c-1.654 0-3 1.346-3 3s1.346 3 3 3c.159 0 .313-.023.465-.047L7.4 17.532c-.248.436-.4.932-.4 1.468 0 1.654 1.346 3 3 3a2.994 2.994 0 0 0 2.863-2.153l3.962-.792A2.987 2.987 0 0 0 19 20c1.654 0 3-1.346 3-3a2.995 2.995 0 0 0-2-2.815zM19 8a1.001 1.001 0 1 1-1 1c0-.551.448-1 1-1zm-9-4a1.001 1.001 0 1 1-1 1c0-.551.448-1 1-1zm-6 8a1.001 1.001 0 1 1 1 1c-.552 0-1-.449-1-1zm6 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm2.761-2.172A3.005 3.005 0 0 0 10 16c-.386 0-.752.079-1.091.213l-1.674-2.231C7.705 13.451 8 12.762 8 12c0-.536-.152-1.032-.399-1.467l1.935-2.58c.152.024.305.047.464.047a2.99 2.99 0 0 0 2.116-.876l3.915 1.566c-.01.103-.031.204-.031.31 0 1.302.839 2.401 2 2.815v2.369a2.996 2.996 0 0 0-2 2.815c0 .061.015.117.018.177l-3.257.652zM19 18a1 1 0 1 1 0-2 1 1 0 0 1 0 2z\"}}]})(props);\n};\nexport function BiShapeSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 6c0-1.654-1.346-3-3-3a2.993 2.993 0 0 0-2.815 2h-6.37A2.993 2.993 0 0 0 6 3C4.346 3 3 4.346 3 6c0 1.302.839 2.401 2 2.815v6.369A2.997 2.997 0 0 0 3 18c0 1.654 1.346 3 3 3a2.993 2.993 0 0 0 2.815-2h6.369a2.994 2.994 0 0 0 2.815 2c1.654 0 3-1.346 3-3a2.997 2.997 0 0 0-2-2.816V8.816A2.996 2.996 0 0 0 21 6zm-3-1a1.001 1.001 0 1 1-1 1c0-.551.448-1 1-1zm-2.815 12h-6.37A2.99 2.99 0 0 0 7 15.184V8.816A2.99 2.99 0 0 0 8.815 7h6.369A2.99 2.99 0 0 0 17 8.815v6.369A2.99 2.99 0 0 0 15.185 17zM6 5a1.001 1.001 0 1 1-1 1c0-.551.448-1 1-1zm0 14a1.001 1.001 0 0 1 0-2 1.001 1.001 0 0 1 0 2zm12 0a1.001 1.001 0 0 1 0-2 1.001 1.001 0 0 1 0 2z\"}}]})(props);\n};\nexport function BiShapeTriangle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 15c-.183 0-.358.022-.532.054L8.946 6.532C8.978 6.359 9 6.182 9 6c0-1.654-1.346-3-3-3S3 4.346 3 6c0 1.302.839 2.401 2 2.815v6.369A2.997 2.997 0 0 0 3 18c0 1.654 1.346 3 3 3a2.993 2.993 0 0 0 2.815-2h6.369a2.994 2.994 0 0 0 2.815 2c1.654 0 3-1.346 3-3S19.654 15 18 15zm-11 .184V8.816c.329-.118.629-.291.894-.508l7.799 7.799a2.961 2.961 0 0 0-.508.894h-6.37A2.99 2.99 0 0 0 7 15.184zM6 5a1.001 1.001 0 1 1-1 1c0-.551.448-1 1-1zm0 14a1.001 1.001 0 0 1 0-2 1.001 1.001 0 0 1 0 2zm12 0a1.001 1.001 0 0 1 0-2 1.001 1.001 0 0 1 0 2z\"}}]})(props);\n};\nexport function BiShareAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5.5 15a3.51 3.51 0 0 0 2.36-.93l6.26 3.58a3.06 3.06 0 0 0-.12.85 3.53 3.53 0 1 0 1.14-2.57l-6.26-3.58a2.74 2.74 0 0 0 .12-.76l6.15-3.52A3.49 3.49 0 1 0 14 5.5a3.35 3.35 0 0 0 .12.85L8.43 9.6A3.5 3.5 0 1 0 5.5 15zm12 2a1.5 1.5 0 1 1-1.5 1.5 1.5 1.5 0 0 1 1.5-1.5zm0-13A1.5 1.5 0 1 1 16 5.5 1.5 1.5 0 0 1 17.5 4zm-12 6A1.5 1.5 0 1 1 4 11.5 1.5 1.5 0 0 1 5.5 10z\"}}]})(props);\n};\nexport function BiShare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 7.05V4a1 1 0 0 0-1-1 1 1 0 0 0-.7.29l-7 7a1 1 0 0 0 0 1.42l7 7A1 1 0 0 0 11 18v-3.1h.85a10.89 10.89 0 0 1 8.36 3.72 1 1 0 0 0 1.11.35A1 1 0 0 0 22 18c0-9.12-8.08-10.68-11-10.95zm.85 5.83a14.74 14.74 0 0 0-2 .13A1 1 0 0 0 9 14v1.59L4.42 11 9 6.41V8a1 1 0 0 0 1 1c.91 0 8.11.2 9.67 6.43a13.07 13.07 0 0 0-7.82-2.55z\"}}]})(props);\n};\nexport function BiShekel (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 8v8h2V8c0-2.206-1.794-4-4-4H5v16h2V6h4c1.103 0 2 .897 2 2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M17 16c0 1.103-.897 2-2 2h-4V8H9v12h6c2.206 0 4-1.794 4-4V4h-2v12z\"}}]})(props);\n};\nexport function BiShieldAlt2 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.438 5.089a1.002 1.002 0 0 0-.959.015c-.684.389-1.355.577-2.053.577-2.035 0-3.952-1.629-5.722-3.39-.375-.373-1.063-.373-1.438 0C9.592 3.959 7.598 5.663 5.51 5.663c-.69 0-1.351-.184-2.018-.561-.298-.166-.658-.171-.96-.012s-.501.461-.528.801c-.011.129-.944 12.872 9.683 16.041a.99.99 0 0 0 .286.042H12c.097 0 .192-.014.285-.041 10.657-3.17 9.695-15.916 9.684-16.044a1 1 0 0 0-.531-.8zm-9.452 14.842c-6.979-2.255-7.934-9.412-8.014-12.477.505.14 1.019.209 1.537.209 2.492 0 4.65-1.567 6.476-3.283 1.893 1.788 3.983 3.301 6.442 3.301.53 0 1.057-.074 1.575-.22-.074 3.065-1.021 10.217-8.016 12.47z\"}}]})(props);\n};\nexport function BiShieldAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m20.342 8.447 1.105-.553A.998.998 0 0 0 21.8 6.4l-3-4A1 1 0 0 0 18 2H6a1 1 0 0 0-.8.4l-3 4a1 1 0 0 0 .352 1.494l1.105.553-1.131 2.262A5.052 5.052 0 0 0 2 12.944v.591a6.028 6.028 0 0 0 3.894 5.618l3.431 1.286a5.488 5.488 0 0 1 1.969 1.268.997.997 0 0 0 1.413 0 5.486 5.486 0 0 1 1.969-1.267l3.432-1.287A6.03 6.03 0 0 0 22 13.535v-.591c0-.771-.183-1.545-.527-2.236l-1.131-2.261zM20 13.535a4.019 4.019 0 0 1-2.596 3.745l-3.431 1.287a7.5 7.5 0 0 0-1.974 1.101 7.515 7.515 0 0 0-1.974-1.102L6.596 17.28A4.019 4.019 0 0 1 4 13.535v-.591c0-.463.109-.928.316-1.342l1.131-2.261a2.003 2.003 0 0 0-.895-2.684l-.033-.015L6.5 4h11l1.981 2.642-.034.017a2.004 2.004 0 0 0-.895 2.684l1.131 2.26c.208.414.317.878.317 1.341v.591z\"}}]})(props);\n};\nexport function BiShieldMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m20.41 6.11-8-4a.94.94 0 0 0-.89 0l-8 4A1 1 0 0 0 3 6.9c0 .11-1 10.77 8.59 15a1 1 0 0 0 .41.1.93.93 0 0 0 .4-.09C21.92 17.67 21 7 21 6.9a1 1 0 0 0-.59-.79zM12 19.9C5.2 16.63 4.88 9.64 4.93 7.63l7-3.51 7 3.51c.13 2.01-.19 9-6.93 12.27z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M8 11h8v2H8z\"}}]})(props);\n};\nexport function BiShieldPlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.63 21.91A.9.9 0 0 0 12 22a1 1 0 0 0 .41-.09C22 17.67 21 7 21 6.9a1 1 0 0 0-.55-.79l-8-4a1 1 0 0 0-.9 0l-8 4A1 1 0 0 0 3 6.9c0 .1-.92 10.77 8.63 15.01zM5 7.63l7-3.51 7 3.51c.05 2-.27 9-7 12.27C5.26 16.63 4.94 9.64 5 7.63z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11.06 16h2v-3h3.01v-2h-3.01V8h-2v3h-3v2h3v3z\"}}]})(props);\n};\nexport function BiShieldQuarter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.995 6.9a.998.998 0 0 0-.548-.795l-8-4a1 1 0 0 0-.895 0l-8 4a1.002 1.002 0 0 0-.547.795c-.011.107-.961 10.767 8.589 15.014a.987.987 0 0 0 .812 0c9.55-4.247 8.6-14.906 8.589-15.014zM12 19.897V12H5.51a15.473 15.473 0 0 1-.544-4.365L12 4.118V12h6.46c-.759 2.74-2.498 5.979-6.46 7.897z\"}}]})(props);\n};\nexport function BiShieldX (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m20.48 6.105-8-4a1 1 0 0 0-.895 0l-8 4a1.002 1.002 0 0 0-.547.795c-.011.107-.961 10.767 8.589 15.014a.99.99 0 0 0 .812 0c9.55-4.247 8.6-14.906 8.589-15.014a1.001 1.001 0 0 0-.548-.795zm-8.447 13.792C5.265 16.625 4.944 9.642 4.999 7.635l7.034-3.517 7.029 3.515c.038 1.989-.328 9.018-7.029 12.264z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14.293 8.293 12 10.586 9.707 8.293 8.293 9.707 10.586 12l-2.293 2.293 1.414 1.414L12 13.414l2.293 2.293 1.414-1.414L13.414 12l2.293-2.293z\"}}]})(props);\n};\nexport function BiShield (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.995 6.903a.997.997 0 0 0-.547-.797l-7.973-4a.997.997 0 0 0-.895-.002l-8.027 4c-.297.15-.502.437-.544.767-.013.097-1.145 9.741 8.541 15.008a.995.995 0 0 0 .969-.009c9.307-5.259 8.514-14.573 8.476-14.967zm-8.977 12.944c-6.86-4.01-7.14-10.352-7.063-12.205l7.071-3.523 6.998 3.511c.005 1.87-.481 8.243-7.006 12.217z\"}}]})(props);\n};\nexport function BiShocked (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8.5\",\"cy\":\"10.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15.493\",\"cy\":\"10.493\",\"r\":\"1.493\"}},{\"tag\":\"ellipse\",\"attr\":{\"cx\":\"12\",\"cy\":\"15.5\",\"rx\":\"3\",\"ry\":\"2.5\"}}]})(props);\n};\nexport function BiShoppingBag (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 22h14c1.103 0 2-.897 2-2V9a1 1 0 0 0-1-1h-3V7c0-2.757-2.243-5-5-5S7 4.243 7 7v1H4a1 1 0 0 0-1 1v11c0 1.103.897 2 2 2zM9 7c0-1.654 1.346-3 3-3s3 1.346 3 3v1H9V7zm-4 3h2v2h2v-2h6v2h2v-2h2l.002 10H5V10z\"}}]})(props);\n};\nexport function BiShowAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 12c-1.095 0-2-.905-2-2 0-.354.103-.683.268-.973C12.178 9.02 12.092 9 12 9a3.02 3.02 0 0 0-3 3c0 1.642 1.358 3 3 3 1.641 0 3-1.358 3-3 0-.092-.02-.178-.027-.268-.29.165-.619.268-.973.268z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 5c-7.633 0-9.927 6.617-9.948 6.684L1.946 12l.105.316C2.073 12.383 4.367 19 12 19s9.927-6.617 9.948-6.684l.106-.316-.105-.316C21.927 11.617 19.633 5 12 5zm0 12c-5.351 0-7.424-3.846-7.926-5C4.578 10.842 6.652 7 12 7c5.351 0 7.424 3.846 7.926 5-.504 1.158-2.578 5-7.926 5z\"}}]})(props);\n};\nexport function BiShow (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 9a3.02 3.02 0 0 0-3 3c0 1.642 1.358 3 3 3 1.641 0 3-1.358 3-3 0-1.641-1.359-3-3-3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 5c-7.633 0-9.927 6.617-9.948 6.684L1.946 12l.105.316C2.073 12.383 4.367 19 12 19s9.927-6.617 9.948-6.684l.106-.316-.105-.316C21.927 11.617 19.633 5 12 5zm0 12c-5.351 0-7.424-3.846-7.926-5C4.578 10.842 6.652 7 12 7c5.351 0 7.424 3.846 7.926 5-.504 1.158-2.578 5-7.926 5z\"}}]})(props);\n};\nexport function BiShower (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 18.33A6.78 6.78 0 0 0 19.5 15a6.73 6.73 0 0 0-1.5 3.33 1.51 1.51 0 1 0 3 0zM11 20.33A6.78 6.78 0 0 0 9.5 17 6.73 6.73 0 0 0 8 20.33 1.59 1.59 0 0 0 9.5 22a1.59 1.59 0 0 0 1.5-1.67zM14.5 22a1.59 1.59 0 0 0 1.5-1.67A6.78 6.78 0 0 0 14.5 17a6.73 6.73 0 0 0-1.5 3.33A1.59 1.59 0 0 0 14.5 22zM3 18.33A1.59 1.59 0 0 0 4.5 20 1.59 1.59 0 0 0 6 18.33 6.78 6.78 0 0 0 4.5 15 6.73 6.73 0 0 0 3 18.33zM13 4.07V2h-2v2.07A8 8 0 0 0 4 12H2v2h20v-2h-2a8 8 0 0 0-7-7.93zM6 12a6 6 0 0 1 12 0z\"}}]})(props);\n};\nexport function BiShuffle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 17h-1.559l-9.7-10.673A1 1 0 0 0 5.001 6H2v2h2.559l4.09 4.5-4.09 4.501H2v2h3.001a1 1 0 0 0 .74-.327L10 13.987l4.259 4.686a1 1 0 0 0 .74.327H17v3l5-4-5-4v3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15.441 8H17v3l5-3.938L17 3v3h-2.001a1 1 0 0 0-.74.327l-3.368 3.707 1.48 1.346L15.441 8z\"}}]})(props);\n};\nexport function BiSidebar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM4 19V7h6v12H4zm8 0V7h8V5l.002 14H12z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M6 10h2v2H6zm0 4h2v2H6z\"}}]})(props);\n};\nexport function BiSignal1 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 16h2v5H3z\"}}]})(props);\n};\nexport function BiSignal2 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 16h2v5H3zm4-3h2v8H7z\"}}]})(props);\n};\nexport function BiSignal3 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 16h2v5H3zm4-3h2v8H7zm4-3h2v11h-2z\"}}]})(props);\n};\nexport function BiSignal4 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 16h2v5H3zm4-3h2v8H7zm4-3h2v11h-2zm4-3h2v14h-2z\"}}]})(props);\n};\nexport function BiSignal5 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 16h2v5H3zm4-3h2v8H7zm4-3h2v11h-2zm4-3h2v14h-2zm4-3h2v17h-2z\"}}]})(props);\n};\nexport function BiSitemap (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 13.01h-7V10h1c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2h-4c-1.103 0-2 .897-2 2v4c0 1.103.897 2 2 2h1v3.01H4V18H3v4h4v-4H6v-2.99h5V18h-1v4h4v-4h-1v-2.99h5V18h-1v4h4v-4h-1v-4.99zM10 8V4h4l.002 4H10z\"}}]})(props);\n};\nexport function BiSkipNextCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m8 16 5-4-5-4zm5-4v4h2V8h-2z\"}}]})(props);\n};\nexport function BiSkipNext (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 7v10l7-5zm9 10V7h-2v10z\"}}]})(props);\n};\nexport function BiSkipPreviousCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M16 16V8l-5 4zM9 8v8h2V8z\"}}]})(props);\n};\nexport function BiSkipPrevious (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m16 7-7 5 7 5zm-7 5V7H7v10h2z\"}}]})(props);\n};\nexport function BiSleepy (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"ellipse\",\"attr\":{\"cx\":\"12\",\"cy\":\"15.5\",\"rx\":\"3\",\"ry\":\"2.5\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M10 7c-2.905 0-3.983 2.386-4 3.99l2 .021C8.002 10.804 8.076 9 10 9V7zm4 0v2c1.826 0 1.992 1.537 2 2.007L17 11h1c0-1.608-1.065-4-4-4z\"}}]})(props);\n};\nexport function BiSliderAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7.5 14.5c-1.58 0-2.903 1.06-3.337 2.5H2v2h2.163c.434 1.44 1.757 2.5 3.337 2.5s2.903-1.06 3.337-2.5H22v-2H10.837c-.434-1.44-1.757-2.5-3.337-2.5zm0 5c-.827 0-1.5-.673-1.5-1.5s.673-1.5 1.5-1.5S9 17.173 9 18s-.673 1.5-1.5 1.5zm9-11c-1.58 0-2.903 1.06-3.337 2.5H2v2h11.163c.434 1.44 1.757 2.5 3.337 2.5s2.903-1.06 3.337-2.5H22v-2h-2.163c-.434-1.44-1.757-2.5-3.337-2.5zm0 5c-.827 0-1.5-.673-1.5-1.5s.673-1.5 1.5-1.5 1.5.673 1.5 1.5-.673 1.5-1.5 1.5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12.837 5C12.403 3.56 11.08 2.5 9.5 2.5S6.597 3.56 6.163 5H2v2h4.163C6.597 8.44 7.92 9.5 9.5 9.5s2.903-1.06 3.337-2.5h9.288V5h-9.288zM9.5 7.5C8.673 7.5 8 6.827 8 6s.673-1.5 1.5-1.5S11 5.173 11 6s-.673 1.5-1.5 1.5z\"}}]})(props);\n};\nexport function BiSlider (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 5h9v2h-9zM2 7h7v2h2V3H9v2H2zm7 10h13v2H9zm10-6h3v2h-3zm-2 4V9.012h-2V11H2v2h13v2zM7 21v-6H5v2H2v2h3v2z\"}}]})(props);\n};\nexport function BiSlideshow (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4c-1.103 0-2 .897-2 2v10c0 1.103.897 2 2 2h7v3H8v2h8v-2h-3v-3h7c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM4 15V5h16l.001 10H4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m10 13 5-3-5-3z\"}}]})(props);\n};\nexport function BiSmile (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14.829 14.828a4.055 4.055 0 0 1-1.272.858 4.002 4.002 0 0 1-4.875-1.45l-1.658 1.119a6.063 6.063 0 0 0 1.621 1.62 5.963 5.963 0 0 0 2.148.903 6.042 6.042 0 0 0 2.415 0 5.972 5.972 0 0 0 2.148-.903c.313-.212.612-.458.886-.731.272-.271.52-.571.734-.889l-1.658-1.119a4.017 4.017 0 0 1-.489.592z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8.5\",\"cy\":\"10.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15.493\",\"cy\":\"10.493\",\"r\":\"1.493\"}}]})(props);\n};\nexport function BiSortAZ (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.707 14.707A1 1 0 0 0 19 13h-7v2h4.586l-4.293 4.293A1 1 0 0 0 13 21h7v-2h-4.586l4.293-4.293zM7 3.99H5v12H2l4 4 4-4H7zM17 3h-2c-.417 0-.79.259-.937.649l-2.75 7.333h2.137L14.193 9h3.613l.743 1.981h2.137l-2.75-7.333A1 1 0 0 0 17 3zm-2.057 4 .75-2h.613l.75 2h-2.113z\"}}]})(props);\n};\nexport function BiSortAlt2 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 20h2V8h3L8 4 4 8h3zm13-4h-3V4h-2v12h-3l4 4z\"}}]})(props);\n};\nexport function BiSortDown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m6 20 4-4H7V4H5v12H2zm5-12h9v2h-9zm0 4h7v2h-7zm0-8h11v2H11zm0 12h5v2h-5z\"}}]})(props);\n};\nexport function BiSortUp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 9h9v2h-9zm0 4h7v2h-7zm0-8h11v2H11zm0 12h5v2h-5zm-6 3h2V8h3L6 4 2 8h3z\"}}]})(props);\n};\nexport function BiSortZA (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.707 14.707A1 1 0 0 0 19 13h-7v2h4.586l-4.293 4.293A1 1 0 0 0 13 21h7v-2h-4.586l4.293-4.293zM6 3.99l-4 4h3v12h2v-12h3zM17 3h-2c-.417 0-.79.259-.937.649l-2.75 7.333h2.137L14.193 9h3.613l.743 1.981h2.137l-2.75-7.333A1 1 0 0 0 17 3zm-2.057 4 .75-2h.613l.75 2h-2.113z\"}}]})(props);\n};\nexport function BiSort (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8 16H4l6 6V2H8zm6-11v17h2V8h4l-6-6z\"}}]})(props);\n};\nexport function BiSpa (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.787 9.023c-.125.027-1.803.418-3.953 1.774-.323-1.567-1.279-4.501-4.108-7.485L12 2.546l-.726.767C8.435 6.308 7.483 9.25 7.163 10.827 5.005 9.448 3.34 9.052 3.218 9.024L2 8.752V10c0 7.29 3.925 12 10 12 5.981 0 10-4.822 10-12V8.758l-1.213.265zM8.999 12.038c.002-.033.152-3.1 3.001-6.532C14.814 8.906 14.999 12 15 12v.125a18.933 18.933 0 0 0-3.01 3.154 19.877 19.877 0 0 0-2.991-3.113v-.128zM12 20c-5.316 0-7.549-4.196-7.937-8.564 1.655.718 4.616 2.426 7.107 6.123l.841 1.249.825-1.26c2.426-3.708 5.425-5.411 7.096-6.122C19.534 15.654 17.304 20 12 20z\"}}]})(props);\n};\nexport function BiSpaceBar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 13H7V9H5v6h14V9h-2z\"}}]})(props);\n};\nexport function BiSpeaker (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm0 18H6V4h12z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 19a4 4 0 1 0-4-4 4 4 0 0 0 4 4zm0-6a2 2 0 1 1-2 2 2 2 0 0 1 2-2z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12.01\",\"cy\":\"7\",\"r\":\"2\"}}]})(props);\n};\nexport function BiSprayCan (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.002 2h-4a1 1 0 0 0-1 1v3.812a5.998 5.998 0 0 0-3 5.188v.988L3 13l.002.072V21a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1v-9a5.999 5.999 0 0 0-3-5.188V3a1 1 0 0 0-1-1zm-3 4V4h2v2h-2zm5.001 14h-8v-6h8v6zm-8.001-8c0-2.206 1.794-4 4-4s4 1.794 4 4h-8zm8.001-9h2v2h-2zM16 3h2v2h-2zm0 3h2v2h-2zm3-3h2v2h-2zm0 3h2v2h-2zm0 3h2v2h-2z\"}}]})(props);\n};\nexport function BiSpreadsheet (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 5c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5zM5 19V5h14l.002 14H5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7 7h1.998v2H7zm4 0h6v2h-6zm-4 4h1.998v2H7zm4 0h6v2h-6zm-4 4h1.998v2H7zm4 0h6v2h-6z\"}}]})(props);\n};\nexport function BiSquareRounded (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 2H7C4.243 2 2 4.243 2 7v10c0 2.757 2.243 5 5 5h10c2.757 0 5-2.243 5-5V7c0-2.757-2.243-5-5-5zm3 15c0 1.654-1.346 3-3 3H7c-1.654 0-3-1.346-3-3V7c0-1.654 1.346-3 3-3h10c1.654 0 3 1.346 3 3v10z\"}}]})(props);\n};\nexport function BiSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zm-1 16H5V5h14v14z\"}}]})(props);\n};\nexport function BiStar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m6.516 14.323-1.49 6.452a.998.998 0 0 0 1.529 1.057L12 18.202l5.445 3.63a1.001 1.001 0 0 0 1.517-1.106l-1.829-6.4 4.536-4.082a1 1 0 0 0-.59-1.74l-5.701-.454-2.467-5.461a.998.998 0 0 0-1.822 0L8.622 8.05l-5.701.453a1 1 0 0 0-.619 1.713l4.214 4.107zm2.853-4.326a.998.998 0 0 0 .832-.586L12 5.43l1.799 3.981a.998.998 0 0 0 .832.586l3.972.315-3.271 2.944c-.284.256-.397.65-.293 1.018l1.253 4.385-3.736-2.491a.995.995 0 0 0-1.109 0l-3.904 2.603 1.05-4.546a1 1 0 0 0-.276-.94l-3.038-2.962 4.09-.326z\"}}]})(props);\n};\nexport function BiStation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m7.758 16.243 1.414-1.415a3.97 3.97 0 0 1-1.173-2.831c0-1.068.417-2.071 1.173-2.825L7.758 7.756a5.957 5.957 0 0 0-1.76 4.24c0 1.604.625 3.112 1.76 4.247zm8.484 0A5.96 5.96 0 0 0 18 12a5.96 5.96 0 0 0-1.758-4.243l-1.414 1.414C15.584 9.927 16 10.932 16 12s-.416 2.073-1.172 2.829l1.414 1.414z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M6.344 17.657a7.953 7.953 0 0 1-2.345-5.659c0-2.137.833-4.145 2.345-5.654L4.93 4.929c-1.89 1.886-2.931 4.397-2.931 7.069s1.041 5.183 2.931 7.073l1.414-1.414zM17.657 6.343A7.948 7.948 0 0 1 20 12a7.948 7.948 0 0 1-2.343 5.657l1.414 1.414A9.932 9.932 0 0 0 22 12a9.934 9.934 0 0 0-2.929-7.071l-1.414 1.414z\"}}]})(props);\n};\nexport function BiStats (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 12a2 2 0 0 0-.703.133l-2.398-1.963c.059-.214.101-.436.101-.67C17 8.114 15.886 7 14.5 7S12 8.114 12 9.5c0 .396.1.765.262 1.097l-2.909 3.438A2.06 2.06 0 0 0 9 14c-.179 0-.348.03-.512.074l-2.563-2.563C5.97 11.348 6 11.179 6 11c0-1.108-.892-2-2-2s-2 .892-2 2 .892 2 2 2c.179 0 .348-.03.512-.074l2.563 2.563A1.906 1.906 0 0 0 7 16c0 1.108.892 2 2 2s2-.892 2-2c0-.237-.048-.46-.123-.671l2.913-3.442c.227.066.462.113.71.113a2.48 2.48 0 0 0 1.133-.281l2.399 1.963A2.077 2.077 0 0 0 18 14c0 1.108.892 2 2 2s2-.892 2-2-.892-2-2-2z\"}}]})(props);\n};\nexport function BiSticker (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.796 9.982C20.849 5.357 16.729 2 12 2 6.486 2 2 6.486 2 12c0 4.729 3.357 8.849 7.982 9.796a.988.988 0 0 0 .908-.272l10.633-10.633c.238-.238.34-.578.273-.909zM11 18a7.93 7.93 0 0 1 1.365-4.471 8.18 8.18 0 0 1 .978-1.186 8.211 8.211 0 0 1 1.184-.977 8.128 8.128 0 0 1 1.36-.738c.481-.203.986-.36 1.501-.466a8.112 8.112 0 0 1 2.17-.134l-8.529 8.529c-.013-.185-.029-.37-.029-.557zm-7-6c0-4.411 3.589-8 8-8 2.909 0 5.528 1.589 6.929 4.005a9.99 9.99 0 0 0-1.943.198c-.643.132-1.274.328-1.879.583a10.15 10.15 0 0 0-1.699.923c-.533.361-1.03.771-1.479 1.22s-.858.945-1.221 1.48c-.359.533-.67 1.104-.922 1.698A10.013 10.013 0 0 0 9 18c0 .491.048.979.119 1.461C6.089 18.288 4 15.336 4 12z\"}}]})(props);\n};\nexport function BiStopCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M9 9h6v6H9z\"}}]})(props);\n};\nexport function BiStop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 7h10v10H7z\"}}]})(props);\n};\nexport function BiStopwatch (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 5c-4.411 0-8 3.589-8 8s3.589 8 8 8 8-3.589 8-8-3.589-8-8-8zm0 14c-3.309 0-6-2.691-6-6s2.691-6 6-6 6 2.691 6 6-2.691 6-6 6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 9h2v5h-2zM9 2h6v2H9zm10.293 5.707-2-2 1.414-1.414 2 2z\"}}]})(props);\n};\nexport function BiStoreAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 5c0-1.654-1.346-3-3-3H5C3.346 2 2 3.346 2 5v2.831c0 1.053.382 2.01 1 2.746V19c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2v-8.424c.618-.735 1-1.692 1-2.746V5zm-2 0v2.831c0 1.14-.849 2.112-1.891 2.167L18 10c-1.103 0-2-.897-2-2V4h3c.552 0 1 .449 1 1zM10 4h4v4c0 1.103-.897 2-2 2s-2-.897-2-2V4zM4 5c0-.551.448-1 1-1h3v4c0 1.103-.897 2-2 2l-.109-.003C4.849 9.943 4 8.971 4 7.831V5zm6 14v-3h4v3h-4zm6 0v-3c0-1.103-.897-2-2-2h-4c-1.103 0-2 .897-2 2v3H5v-7.131c.254.067.517.111.787.125A3.988 3.988 0 0 0 9 10.643c.733.832 1.807 1.357 3 1.357s2.267-.525 3-1.357a3.988 3.988 0 0 0 3.213 1.351c.271-.014.533-.058.787-.125V19h-3z\"}}]})(props);\n};\nexport function BiStore (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.148 2.971A2.008 2.008 0 0 0 17.434 2H6.566c-.698 0-1.355.372-1.714.971L2.143 7.485A.995.995 0 0 0 2 8a3.97 3.97 0 0 0 1 2.618V19c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2v-8.382A3.97 3.97 0 0 0 22 8a.995.995 0 0 0-.143-.515l-2.709-4.514zm.836 5.28A2.003 2.003 0 0 1 18 10c-1.103 0-2-.897-2-2 0-.068-.025-.128-.039-.192l.02-.004L15.22 4h2.214l2.55 4.251zM10.819 4h2.361l.813 4.065C13.958 9.137 13.08 10 12 10s-1.958-.863-1.993-1.935L10.819 4zM6.566 4H8.78l-.76 3.804.02.004C8.025 7.872 8 7.932 8 8c0 1.103-.897 2-2 2a2.003 2.003 0 0 1-1.984-1.749L6.566 4zM10 19v-3h4v3h-4zm6 0v-3c0-1.103-.897-2-2-2h-4c-1.103 0-2 .897-2 2v3H5v-7.142c.321.083.652.142 1 .142a3.99 3.99 0 0 0 3-1.357c.733.832 1.807 1.357 3 1.357s2.267-.525 3-1.357A3.99 3.99 0 0 0 18 12c.348 0 .679-.059 1-.142V19h-3z\"}}]})(props);\n};\nexport function BiStreetView (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"4\",\"r\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 18h2v-5h2V9c0-1.103-.897-2-2-2h-4c-1.103 0-2 .897-2 2v4h2v5h2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m18.446 11.386-.893 1.789C19.108 13.95 20 14.98 20 16c0 1.892-3.285 4-8 4s-8-2.108-8-4c0-1.02.892-2.05 2.446-2.825l-.893-1.789C3.295 12.512 2 14.193 2 16c0 3.364 4.393 6 10 6s10-2.636 10-6c0-1.807-1.295-3.488-3.554-4.614z\"}}]})(props);\n};\nexport function BiStrikethrough (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 11h-8c-4 0-4-1.816-4-2.5C8 7.882 8 6 12 6c2.8 0 2.99 1.678 3 2.014L16 8h1c0-1.384-1.045-4-5-4-5.416 0-6 3.147-6 4.5 0 .728.148 1.667.736 2.5H4v2h16v-2zm-8 7c-3.793 0-3.99-1.815-4-2H6c0 .04.069 4 6 4 5.221 0 6-2.819 6-4.5 0-.146-.009-.317-.028-.5h-2.006c.032.2.034.376.034.5 0 .684 0 2.5-4 2.5z\"}}]})(props);\n};\nexport function BiSubdirectoryLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 13h-6v-3l-5 4 5 4v-3h7a1 1 0 0 0 1-1V5h-2v8z\"}}]})(props);\n};\nexport function BiSubdirectoryRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 13H8V5H6v9a1 1 0 0 0 1 1h7v3l5-4-5-4v3z\"}}]})(props);\n};\nexport function BiSun (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6.993 12c0 2.761 2.246 5.007 5.007 5.007s5.007-2.246 5.007-5.007S14.761 6.993 12 6.993 6.993 9.239 6.993 12zM12 8.993c1.658 0 3.007 1.349 3.007 3.007S13.658 15.007 12 15.007 8.993 13.658 8.993 12 10.342 8.993 12 8.993zM10.998 19h2v3h-2zm0-17h2v3h-2zm-9 9h3v2h-3zm17 0h3v2h-3zM4.219 18.363l2.12-2.122 1.415 1.414-2.12 2.122zM16.24 6.344l2.122-2.122 1.414 1.414-2.122 2.122zM6.342 7.759 4.22 5.637l1.415-1.414 2.12 2.122zm13.434 10.605-1.414 1.414-2.122-2.122 1.414-1.414z\"}}]})(props);\n};\nexport function BiSupport (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12v4.143C2 17.167 2.897 18 4 18h1a1 1 0 0 0 1-1v-5.143a1 1 0 0 0-1-1h-.908C4.648 6.987 7.978 4 12 4s7.352 2.987 7.908 6.857H19a1 1 0 0 0-1 1V18c0 1.103-.897 2-2 2h-2v-1h-4v3h6c2.206 0 4-1.794 4-4 1.103 0 2-.833 2-1.857V12c0-5.514-4.486-10-10-10z\"}}]})(props);\n};\nexport function BiSushi (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C7.51 2 4 4.2 4 7v10c0 2.8 3.51 5 8 5s8-2.2 8-5V7c0-2.8-3.51-5-8-5zm0 18c-3.54 0-6-1.58-6-3v-6.67A10.52 10.52 0 0 0 12 12a10.52 10.52 0 0 0 6-1.67V17c0 1.42-2.46 3-6 3zm0-10c-3.54 0-6-1.58-6-3s2.46-3 6-3 6 1.58 6 3-2.46 3-6 3z\"}},{\"tag\":\"ellipse\",\"attr\":{\"cx\":\"12\",\"cy\":\"7\",\"rx\":\"3\",\"ry\":\"1.71\"}}]})(props);\n};\nexport function BiSwim (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"19.003\",\"cy\":\"6.002\",\"r\":\"2.002\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M18.875 13.219c-.567.453-.978.781-1.878.781-.899 0-1.288-.311-1.876-.781-.68-.543-1.525-1.219-3.127-1.219-1.601 0-2.445.676-3.124 1.219-.588.47-.975.781-1.875.781-.898 0-1.286-.311-1.873-.78C4.443 12.676 3.6 12 2 12v2c.897 0 1.285.311 1.872.78.679.544 1.523 1.22 3.123 1.22s2.446-.676 3.125-1.22c.587-.47.976-.78 1.874-.78.9 0 1.311.328 1.878.781.679.543 1.524 1.219 3.125 1.219 1.602 0 2.447-.676 3.127-1.219.588-.47.977-.781 1.876-.781v-2c-1.601 0-2.446.676-3.125 1.219zM16.997 19c-.899 0-1.288-.311-1.876-.781-.68-.543-1.525-1.219-3.127-1.219-1.601 0-2.445.676-3.124 1.219-.588.47-.975.781-1.875.781-.898 0-1.286-.311-1.873-.78C4.443 17.676 3.6 17 2 17v2c.897 0 1.285.311 1.872.78.679.544 1.523 1.22 3.123 1.22s2.446-.676 3.125-1.22c.587-.47.976-.78 1.874-.78.9 0 1.311.328 1.878.781.679.543 1.524 1.219 3.125 1.219 1.602 0 2.447-.676 3.127-1.219.588-.47.977-.781 1.876-.781v-2c-1.601 0-2.446.676-3.125 1.219-.567.453-.978.781-1.878.781zM11 5.419l2.104 2.104-2.057 2.57c.286-.056.596-.093.947-.093 1.602 0 2.447.676 3.127 1.219.588.47.977.781 1.876.781.9 0 1.311-.328 1.878-.781.132-.105.274-.217.423-.326l-2.096-2.09.005-.005-5.5-5.5a.999.999 0 0 0-1.414 0l-4 4 1.414 1.414L11 5.419z\"}}]})(props);\n};\nexport function BiSync (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m13 7.101.01.001a4.978 4.978 0 0 1 2.526 1.362 5.005 5.005 0 0 1 1.363 2.528 5.061 5.061 0 0 1-.001 2.016 4.976 4.976 0 0 1-1.363 2.527l1.414 1.414a7.014 7.014 0 0 0 1.908-3.54 6.98 6.98 0 0 0 0-2.819 6.957 6.957 0 0 0-1.907-3.539 6.97 6.97 0 0 0-2.223-1.5 6.921 6.921 0 0 0-1.315-.408c-.137-.028-.275-.043-.412-.063V2L9 6l4 4V7.101zm-7.45 7.623c.174.412.392.812.646 1.19.249.37.537.718.854 1.034a7.036 7.036 0 0 0 2.224 1.501c.425.18.868.317 1.315.408.167.034.338.056.508.078v2.944l4-4-4-4v3.03c-.035-.006-.072-.003-.107-.011a4.978 4.978 0 0 1-2.526-1.362 4.994 4.994 0 0 1 .001-7.071L7.051 7.05a7.01 7.01 0 0 0-1.5 2.224A6.974 6.974 0 0 0 5 12a6.997 6.997 0 0 0 .55 2.724z\"}}]})(props);\n};\nexport function BiTab (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 2c-1.103 0-2 .897-2 2v16c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2H6zm0 15V5h12l.002 12H6z\"}}]})(props);\n};\nexport function BiTable (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 21h15.893c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2H4c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2zm0-2v-5h4v5H4zM14 7v5h-4V7h4zM8 7v5H4V7h4zm2 12v-5h4v5h-4zm6 0v-5h3.894v5H16zm3.893-7H16V7h3.893v5z\"}}]})(props);\n};\nexport function BiTachometer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 4C6.486 4 2 8.486 2 14a9.89 9.89 0 0 0 1.051 4.445c.17.34.516.555.895.555h16.107c.379 0 .726-.215.896-.555A9.89 9.89 0 0 0 22 14c0-5.514-4.486-10-10-10zm7.41 13H4.59A7.875 7.875 0 0 1 4 14c0-4.411 3.589-8 8-8s8 3.589 8 8a7.875 7.875 0 0 1-.59 3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M10.939 12.939a1.53 1.53 0 0 0 0 2.561 1.53 1.53 0 0 0 2.121-.44l3.962-6.038a.034.034 0 0 0 0-.035.033.033 0 0 0-.045-.01l-6.038 3.962z\"}}]})(props);\n};\nexport function BiTagAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.868 4.504A1 1 0 0 0 17 4H3a1 1 0 0 0-.868 1.496L5.849 12l-3.717 6.504A1 1 0 0 0 3 20h14a1 1 0 0 0 .868-.504l4-7a.998.998 0 0 0 0-.992l-4-7zM16.42 18H4.724l3.145-5.504a.998.998 0 0 0 0-.992L4.724 6H16.42l3.429 6-3.429 6z\"}}]})(props);\n};\nexport function BiTag (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H8.515a2 2 0 0 0-1.627.838l-4.701 6.581a.997.997 0 0 0 0 1.162l4.701 6.581A2 2 0 0 0 8.515 20H20c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zm0 14H8.515l-4.286-6 4.286-6H20v12z\"}}]})(props);\n};\nexport function BiTargetLock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"3\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13 4.069V2h-2v2.069A8.008 8.008 0 0 0 4.069 11H2v2h2.069A8.007 8.007 0 0 0 11 19.931V22h2v-2.069A8.007 8.007 0 0 0 19.931 13H22v-2h-2.069A8.008 8.008 0 0 0 13 4.069zM12 18c-3.309 0-6-2.691-6-6s2.691-6 6-6 6 2.691 6 6-2.691 6-6 6z\"}}]})(props);\n};\nexport function BiTaskX (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 20c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2h-2a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1H5c-1.103 0-2 .897-2 2v15zM5 5h2v2h10V5h2v15H5V5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14.292 10.295 12 12.587l-2.292-2.292-1.414 1.414 2.292 2.292-2.292 2.292 1.414 1.414L12 15.415l2.292 2.292 1.414-1.414-2.292-2.292 2.292-2.292z\"}}]})(props);\n};\nexport function BiTask (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 22h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2h-2a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1H5c-1.103 0-2 .897-2 2v15c0 1.103.897 2 2 2zM5 5h2v2h10V5h2v15H5V5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m11 13.586-1.793-1.793-1.414 1.414L11 16.414l5.207-5.207-1.414-1.414z\"}}]})(props);\n};\nexport function BiTaxi (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m20.772 10.156-1.368-4.105A2.995 2.995 0 0 0 16.559 4H14V2h-4v2H7.441a2.995 2.995 0 0 0-2.845 2.051l-1.368 4.105A2.003 2.003 0 0 0 2 12v5c0 .753.423 1.402 1.039 1.743-.013.066-.039.126-.039.195V21a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-2h12v2a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-2.062c0-.069-.026-.13-.039-.195A1.993 1.993 0 0 0 22 17v-5c0-.829-.508-1.541-1.228-1.844zM4 17v-5h16l.002 5H4zM7.441 6h9.117c.431 0 .813.274.949.684L18.613 10H5.387l1.105-3.316A1 1 0 0 1 7.441 6z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"6.5\",\"cy\":\"14.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"17.5\",\"cy\":\"14.5\",\"r\":\"1.5\"}}]})(props);\n};\nexport function BiTennisBall (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4.929 19.081c1.895 1.895 4.405 2.938 7.071 2.938s5.177-1.043 7.071-2.938c3.899-3.899 3.899-10.243 0-14.143C17.177 3.044 14.665 2 12 2S6.823 3.044 4.929 4.938c-3.899 3.899-3.899 10.244 0 14.143zm12.728-1.414a7.969 7.969 0 0 1-3.813 2.129c-.009-1.602.586-3.146 1.691-4.251 1.163-1.163 2.732-1.828 4.277-1.851a7.945 7.945 0 0 1-2.155 3.973zm2.325-5.965c-2.124-.021-4.284.853-5.861 2.429-1.532 1.532-2.327 3.68-2.263 5.881a7.946 7.946 0 0 1-5.516-2.345 7.97 7.97 0 0 1-2.332-5.512c.077.002.154.014.231.014 2.115 0 4.16-.804 5.637-2.28 1.58-1.58 2.457-3.739 2.43-5.873a7.948 7.948 0 0 1 5.349 2.337 7.96 7.96 0 0 1 2.325 5.349zM6.343 6.353a7.968 7.968 0 0 1 3.973-2.169c-.018 1.555-.685 3.124-1.851 4.291-1.104 1.103-2.642 1.696-4.238 1.691a7.929 7.929 0 0 1 2.116-3.813z\"}}]})(props);\n};\nexport function BiTerminal (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 14h6v2h-6zM6.293 9.707 8.586 12l-2.293 2.293 1.414 1.414L11.414 12 7.707 8.293z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zM4 18V6h16l.002 12H4z\"}}]})(props);\n};\nexport function BiTestTube (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m13.293 2.707.818.818L3.318 14.318C2.468 15.168 2 16.298 2 17.5s.468 2.332 1.318 3.183C4.169 21.532 5.299 22 6.5 22s2.331-.468 3.182-1.318L20.475 9.889l.818.818 1.414-1.414-8-8-1.414 1.414zm3.182 8.354-2.403-2.404-1.414 1.414 2.403 2.404-1.414 1.415-.99-.99-1.414 1.414.99.99-1.415 1.415-2.403-2.404L7 15.728l2.403 2.404-1.136 1.136c-.945.944-2.59.944-3.535 0C4.26 18.795 4 18.168 4 17.5s.26-1.295.732-1.768L15.525 4.939l3.535 3.535-2.585 2.587z\"}}]})(props);\n};\nexport function BiText (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 8h2V6h3.252L7.68 18H5v2h8v-2h-2.252L13.32 6H17v2h2V4H5z\"}}]})(props);\n};\nexport function BiTimeFive (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13 7h-2v5.414l3.293 3.293 1.414-1.414L13 11.586z\"}}]})(props);\n};\nexport function BiTime (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13 7h-2v6h6v-2h-4z\"}}]})(props);\n};\nexport function BiTimer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m20.145 8.27 1.563-1.563-1.414-1.414L18.586 7c-1.05-.63-2.274-1-3.586-1-3.859 0-7 3.14-7 7s3.141 7 7 7 7-3.14 7-7a6.966 6.966 0 0 0-1.855-4.73zM15 18c-2.757 0-5-2.243-5-5s2.243-5 5-5 5 2.243 5 5-2.243 5-5 5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14 10h2v4h-2zm-1-7h4v2h-4zM3 8h4v2H3zm0 8h4v2H3zm-1-4h3.99v2H2z\"}}]})(props);\n};\nexport function BiTired (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 14c-3 0-4 3-4 3h8s-1-3-4-3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m17.555 8.832-1.109-1.664-3 2a1.001 1.001 0 0 0 .108 1.727l4 2 .895-1.789-2.459-1.229 1.565-1.045zm-6.557 1.23a1 1 0 0 0-.443-.894l-3-2-1.11 1.664 1.566 1.044-2.459 1.229.895 1.789 4-2a.998.998 0 0 0 .551-.832z\"}}]})(props);\n};\nexport function BiToggleLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8 9c-1.628 0-3 1.372-3 3s1.372 3 3 3 3-1.372 3-3-1.372-3-3-3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M16 6H8c-3.3 0-5.989 2.689-6 6v.016A6.01 6.01 0 0 0 8 18h8a6.01 6.01 0 0 0 6-5.994V12c-.009-3.309-2.699-6-6-6zm0 10H8a4.006 4.006 0 0 1-4-3.99C4.004 9.799 5.798 8 8 8h8c2.202 0 3.996 1.799 4 4.006A4.007 4.007 0 0 1 16 16zm4-3.984.443-.004.557.004h-1z\"}}]})(props);\n};\nexport function BiToggleRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 9c-1.628 0-3 1.372-3 3s1.372 3 3 3 3-1.372 3-3-1.372-3-3-3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M16 6H8c-3.296 0-5.982 2.682-6 5.986v.042A6.01 6.01 0 0 0 8 18h8c3.309 0 6-2.691 6-6s-2.691-6-6-6zm0 10H8a4.006 4.006 0 0 1-4-3.99C4.004 9.799 5.798 8 8 8h8c2.206 0 4 1.794 4 4s-1.794 4-4 4z\"}}]})(props);\n};\nexport function BiTone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm-1 9H4.069a7.965 7.965 0 0 1 .52-2H11v2zm0 4H4.589a7.965 7.965 0 0 1-.52-2H11v2zm0-10.931V7H5.765A7.996 7.996 0 0 1 11 4.069zM5.765 17H11v2.931A7.996 7.996 0 0 1 5.765 17zM13 19.931V4.069c3.939.495 7 3.858 7 7.931s-3.061 7.436-7 7.931z\"}}]})(props);\n};\nexport function BiTrafficCone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13.943 2.667A1 1 0 0 0 13 2h-2a1 1 0 0 0-.943.667L4.292 19H2v2h20v-2h-2.292L13.943 2.667zM15.47 13H8.53l1.06-3h4.82l1.06 3zm-3.763-9h.586l1.412 4h-3.41l1.412-4zM7.825 15h8.35l1.412 4H6.413l1.412-4z\"}}]})(props);\n};\nexport function BiTrain (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"8.5\",\"cy\":\"14.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15.5\",\"cy\":\"14.5\",\"r\":\"1.5\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M18.87 3.34A3.55 3.55 0 0 0 16.38 2H7.62a3.47 3.47 0 0 0-2.5 1.35A4.32 4.32 0 0 0 4 6v12a1 1 0 0 0 1 1h2l-2 3h2.32L8 21h8l.68 1H19l-2-3h2a1 1 0 0 0 1-1V6a4.15 4.15 0 0 0-1.13-2.66zM7.62 4h8.72a1.77 1.77 0 0 1 1 .66 3.25 3.25 0 0 1 .25.34H6.39a2.3 2.3 0 0 1 .25-.35A1.65 1.65 0 0 1 7.62 4zM6 8V7h12v3H6zm12 9H6v-5h12z\"}}]})(props);\n};\nexport function BiTransferAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.924 10.383a1 1 0 0 0-.217-1.09l-5-5-1.414 1.414L16.586 9H4v2h15a1 1 0 0 0 .924-.617zM4.076 13.617a1 1 0 0 0 .217 1.09l5 5 1.414-1.414L7.414 15H20v-2H5a.999.999 0 0 0-.924.617z\"}}]})(props);\n};\nexport function BiTransfer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m15 12 5-4-5-4v2.999H2v2h13zm7 3H9v-3l-5 4 5 4v-3h13z\"}}]})(props);\n};\nexport function BiTrashAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 2H9c-1.103 0-2 .897-2 2v2H3v2h2v12c0 1.103.897 2 2 2h10c1.103 0 2-.897 2-2V8h2V6h-4V4c0-1.103-.897-2-2-2zM9 4h6v2H9V4zm8 16H7V8h10v12z\"}}]})(props);\n};\nexport function BiTrash (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 20a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8h2V6h-4V4a2 2 0 0 0-2-2H9a2 2 0 0 0-2 2v2H3v2h2zM9 4h6v2H9zM8 8h9v12H7V8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M9 10h2v8H9zm4 0h2v8h-2z\"}}]})(props);\n};\nexport function BiTrendingDown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m14 9.586-4 4-6.293-6.293-1.414 1.414L10 16.414l4-4 4.293 4.293L16 19h6v-6l-2.293 2.293z\"}}]})(props);\n};\nexport function BiTrendingUp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m10 10.414 4 4 5.707-5.707L22 11V5h-6l2.293 2.293L14 11.586l-4-4-7.707 7.707 1.414 1.414z\"}}]})(props);\n};\nexport function BiTrim (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 16h3v3c0 1.103.897 2 2 2h9c1.103 0 2-.897 2-2v-9c0-1.103-.897-2-2-2h-3V5c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v9c0 1.103.897 2 2 2zm14-6-.003 9H10v-3h4c1.103 0 2-.897 2-2v-4h3zM5 10h5V5h4l-.003 9H5v-4z\"}}]})(props);\n};\nexport function BiTrip (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14.844 20H6.5C5.121 20 4 18.879 4 17.5S5.121 15 6.5 15h7c1.93 0 3.5-1.57 3.5-3.5S15.43 8 13.5 8H8.639a9.812 9.812 0 0 1-1.354 2H13.5c.827 0 1.5.673 1.5 1.5s-.673 1.5-1.5 1.5h-7C4.019 13 2 15.019 2 17.5S4.019 22 6.5 22h9.593a10.415 10.415 0 0 1-1.249-2zM5 2C3.346 2 2 3.346 2 5c0 3.188 3 5 3 5s3-1.813 3-5c0-1.654-1.346-3-3-3zm0 4.5a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 5 6.5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 14c-1.654 0-3 1.346-3 3 0 3.188 3 5 3 5s3-1.813 3-5c0-1.654-1.346-3-3-3zm0 4.5a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 19 18.5z\"}}]})(props);\n};\nexport function BiTrophy (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 4h-3V3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1v1H3a1 1 0 0 0-1 1v3c0 4.31 1.799 6.91 4.819 7.012A6.001 6.001 0 0 0 11 17.91V20H9v2h6v-2h-2v-2.09a6.01 6.01 0 0 0 4.181-2.898C20.201 14.91 22 12.31 22 8V5a1 1 0 0 0-1-1zM4 8V6h2v6.83C4.216 12.078 4 9.299 4 8zm8 8c-2.206 0-4-1.794-4-4V4h8v8c0 2.206-1.794 4-4 4zm6-3.17V6h2v2c0 1.299-.216 4.078-2 4.83z\"}}]})(props);\n};\nexport function BiTv (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 6h-5.586l2.293-2.293-1.414-1.414L12 5.586 8.707 2.293 7.293 3.707 9.586 6H4c-1.103 0-2 .897-2 2v11c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V8c0-1.103-.897-2-2-2zM4 19V8h16l.002 11H4z\"}}]})(props);\n};\nexport function BiUnderline (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 18h14v2H5zM6 4v6c0 3.309 2.691 6 6 6s6-2.691 6-6V4h-2v6c0 2.206-1.794 4-4 4s-4-1.794-4-4V4H6z\"}}]})(props);\n};\nexport function BiUndo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 10h6c1.654 0 3 1.346 3 3s-1.346 3-3 3h-3v2h3c2.757 0 5-2.243 5-5s-2.243-5-5-5H9V5L4 9l5 4v-3z\"}}]})(props);\n};\nexport function BiUnite (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 16a1 1 0 0 0 1-1V9a1 1 0 0 0-1-1H9a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M5 16h1V8a2 2 0 0 1 2-2h8V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2zm3 3a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2v-9a2 2 0 0 0-2-2h-1v8a2 2 0 0 1-2 2H8v1z\"}}]})(props);\n};\nexport function BiUniversalAccess (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"7.5\",\"r\":\"1.5\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2zm0 18a8 8 0 1 1 8-8 8 8 0 0 1-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M16.5 10.5 16 9l-3 1h-2L8 9l-.5 1.5 3 1V13L9 17.25l1.5.75 1.25-3.5h.5L13.5 18l1.5-.75L13.5 13v-1.5l3-1z\"}}]})(props);\n};\nexport function BiUnlink (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.949 14.121 19.071 12a5.008 5.008 0 0 0 0-7.071 5.006 5.006 0 0 0-7.071 0l-.707.707 1.414 1.414.707-.707a3.007 3.007 0 0 1 4.243 0 3.005 3.005 0 0 1 0 4.243l-2.122 2.121a2.723 2.723 0 0 1-.844.57L13.414 12l1.414-1.414-.707-.707a4.965 4.965 0 0 0-3.535-1.465c-.235 0-.464.032-.691.066L3.707 2.293 2.293 3.707l18 18 1.414-1.414-5.536-5.536c.277-.184.538-.396.778-.636zm-6.363 3.536a3.007 3.007 0 0 1-4.243 0 3.005 3.005 0 0 1 0-4.243l1.476-1.475-1.414-1.414L4.929 12a5.008 5.008 0 0 0 0 7.071 4.983 4.983 0 0 0 3.535 1.462A4.982 4.982 0 0 0 12 19.071l.707-.707-1.414-1.414-.707.707z\"}}]})(props);\n};\nexport function BiUpArrowAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 8.414V18h2V8.414l4.293 4.293 1.414-1.414L12 4.586l-6.707 6.707 1.414 1.414z\"}}]})(props);\n};\nexport function BiUpArrowCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.001 1.993C6.486 1.994 2 6.48 2 11.994c.001 5.514 4.487 10 10 10 5.515 0 10.001-4.486 10.001-10s-4.486-10-10-10.001zM12 19.994c-4.41 0-7.999-3.589-8-8 0-4.411 3.589-8 8.001-8.001 4.411.001 8 3.59 8 8.001s-3.589 8-8.001 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m12.001 8.001-4.005 4.005h3.005V16h2v-3.994h3.004z\"}}]})(props);\n};\nexport function BiUpArrow (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 19h18a1.002 1.002 0 0 0 .823-1.569l-9-13c-.373-.539-1.271-.539-1.645 0l-9 13A.999.999 0 0 0 3 19zm9-12.243L19.092 17H4.908L12 6.757z\"}}]})(props);\n};\nexport function BiUpload (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 15h2V9h3l-4-5-4 5h3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 18H4v-7H2v7c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2v-7h-2v7z\"}}]})(props);\n};\nexport function BiUpsideDown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14.829 9.172c.181.181.346.38.488.592l1.658-1.119a6.063 6.063 0 0 0-1.621-1.62 5.963 5.963 0 0 0-2.148-.903 5.985 5.985 0 0 0-5.448 1.634 5.993 5.993 0 0 0-.733.889l1.657 1.119a4.017 4.017 0 0 1 2.51-1.683 3.989 3.989 0 0 1 3.637 1.091z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15.5\",\"cy\":\"13.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8.507\",\"cy\":\"13.507\",\"r\":\"1.493\"}}]})(props);\n};\nexport function BiUpvote (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.781 2.375c-.381-.475-1.181-.475-1.562 0l-8 10A1.001 1.001 0 0 0 4 14h4v7a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-7h4a1.001 1.001 0 0 0 .781-1.625l-8-10zM15 12h-1v8h-4v-8H6.081L12 4.601 17.919 12H15z\"}}]})(props);\n};\nexport function BiUsb (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 10h1v2h-4V6h2l-3-4-3 4h2v8H7v-2.277c.596-.347 1-.985 1-1.723a2 2 0 0 0-4 0c0 .738.404 1.376 1 1.723V14c0 1.103.897 2 2 2h4v2.277A1.99 1.99 0 0 0 10 20a2 2 0 0 0 4 0c0-.738-.404-1.376-1-1.723V14h4c1.103 0 2-.897 2-2v-2h1V6h-4v4z\"}}]})(props);\n};\nexport function BiUserCheck (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.29 8.29 16 12.58l-1.3-1.29-1.41 1.42 2.7 2.7 5.72-5.7zM4 8a3.91 3.91 0 0 0 4 4 3.91 3.91 0 0 0 4-4 3.91 3.91 0 0 0-4-4 3.91 3.91 0 0 0-4 4zm6 0a1.91 1.91 0 0 1-2 2 1.91 1.91 0 0 1-2-2 1.91 1.91 0 0 1 2-2 1.91 1.91 0 0 1 2 2zM4 18a3 3 0 0 1 3-3h2a3 3 0 0 1 3 3v1h2v-1a5 5 0 0 0-5-5H7a5 5 0 0 0-5 5v1h2z\"}}]})(props);\n};\nexport function BiUserCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2A10.13 10.13 0 0 0 2 12a10 10 0 0 0 4 7.92V20h.1a9.7 9.7 0 0 0 11.8 0h.1v-.08A10 10 0 0 0 22 12 10.13 10.13 0 0 0 12 2zM8.07 18.93A3 3 0 0 1 11 16.57h2a3 3 0 0 1 2.93 2.36 7.75 7.75 0 0 1-7.86 0zm9.54-1.29A5 5 0 0 0 13 14.57h-2a5 5 0 0 0-4.61 3.07A8 8 0 0 1 4 12a8.1 8.1 0 0 1 8-8 8.1 8.1 0 0 1 8 8 8 8 0 0 1-2.39 5.64z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 6a3.91 3.91 0 0 0-4 4 3.91 3.91 0 0 0 4 4 3.91 3.91 0 0 0 4-4 3.91 3.91 0 0 0-4-4zm0 6a1.91 1.91 0 0 1-2-2 1.91 1.91 0 0 1 2-2 1.91 1.91 0 0 1 2 2 1.91 1.91 0 0 1-2 2z\"}}]})(props);\n};\nexport function BiUserMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 11h8v2h-8zM8 4a3.91 3.91 0 0 0-4 4 3.91 3.91 0 0 0 4 4 3.91 3.91 0 0 0 4-4 3.91 3.91 0 0 0-4-4zm0 6a1.91 1.91 0 0 1-2-2 1.91 1.91 0 0 1 2-2 1.91 1.91 0 0 1 2 2 1.91 1.91 0 0 1-2 2zm-4 8a3 3 0 0 1 3-3h2a3 3 0 0 1 3 3v1h2v-1a5 5 0 0 0-5-5H7a5 5 0 0 0-5 5v1h2z\"}}]})(props);\n};\nexport function BiUserPin (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 10c1.151 0 2-.848 2-2s-.849-2-2-2c-1.15 0-2 .848-2 2s.85 2 2 2zm0 1c-2.209 0-4 1.612-4 3.6v.386h8V14.6c0-1.988-1.791-3.6-4-3.6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 2H5c-1.103 0-2 .897-2 2v13c0 1.103.897 2 2 2h4l3 3 3-3h4c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm-5 15-2 2-2-2H5V4h14l.002 13H14z\"}}]})(props);\n};\nexport function BiUserPlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 8h-2v3h-3v2h3v3h2v-3h3v-2h-3zM4 8a3.91 3.91 0 0 0 4 4 3.91 3.91 0 0 0 4-4 3.91 3.91 0 0 0-4-4 3.91 3.91 0 0 0-4 4zm6 0a1.91 1.91 0 0 1-2 2 1.91 1.91 0 0 1-2-2 1.91 1.91 0 0 1 2-2 1.91 1.91 0 0 1 2 2zM4 18a3 3 0 0 1 3-3h2a3 3 0 0 1 3 3v1h2v-1a5 5 0 0 0-5-5H7a5 5 0 0 0-5 5v1h2z\"}}]})(props);\n};\nexport function BiUserVoice (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8 12c2.28 0 4-1.72 4-4s-1.72-4-4-4-4 1.72-4 4 1.72 4 4 4zm0-6c1.178 0 2 .822 2 2s-.822 2-2 2-2-.822-2-2 .822-2 2-2zm1 7H7c-2.757 0-5 2.243-5 5v1h2v-1c0-1.654 1.346-3 3-3h2c1.654 0 3 1.346 3 3v1h2v-1c0-2.757-2.243-5-5-5zm9.364-10.364L16.95 4.05C18.271 5.373 19 7.131 19 9s-.729 3.627-2.05 4.95l1.414 1.414C20.064 13.663 21 11.403 21 9s-.936-4.663-2.636-6.364z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15.535 5.464 14.121 6.88C14.688 7.445 15 8.198 15 9s-.312 1.555-.879 2.12l1.414 1.416C16.479 11.592 17 10.337 17 9s-.521-2.592-1.465-3.536z\"}}]})(props);\n};\nexport function BiUserX (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m15.71 15.71 2.29-2.3 2.29 2.3 1.42-1.42-2.3-2.29 2.3-2.29-1.42-1.42-2.29 2.3-2.29-2.3-1.42 1.42L16.58 12l-2.29 2.29zM12 8a3.91 3.91 0 0 0-4-4 3.91 3.91 0 0 0-4 4 3.91 3.91 0 0 0 4 4 3.91 3.91 0 0 0 4-4zM6 8a1.91 1.91 0 0 1 2-2 1.91 1.91 0 0 1 2 2 1.91 1.91 0 0 1-2 2 1.91 1.91 0 0 1-2-2zM4 18a3 3 0 0 1 3-3h2a3 3 0 0 1 3 3v1h2v-1a5 5 0 0 0-5-5H7a5 5 0 0 0-5 5v1h2z\"}}]})(props);\n};\nexport function BiUser (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2a5 5 0 1 0 5 5 5 5 0 0 0-5-5zm0 8a3 3 0 1 1 3-3 3 3 0 0 1-3 3zm9 11v-1a7 7 0 0 0-7-7h-4a7 7 0 0 0-7 7v1h2v-1a5 5 0 0 1 5-5h4a5 5 0 0 1 5 5v1z\"}}]})(props);\n};\nexport function BiVector (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.277 8c.347.596.985 1 1.723 1a2 2 0 0 0 0-4c-.738 0-1.376.404-1.723 1H16V4a1 1 0 0 0-1-1H9a1 1 0 0 0-1 1v2H5.723C5.376 5.404 4.738 5 4 5a2 2 0 0 0 0 4c.738 0 1.376-.404 1.723-1H8v.369C5.133 9.84 4.318 12.534 4.091 14H3a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1h-.877c.197-.959.718-2.406 2.085-3.418A.984.984 0 0 0 9 11h6a.98.98 0 0 0 .792-.419c1.373 1.013 1.895 2.458 2.089 3.419H17a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1h-1.092c-.227-1.466-1.042-4.161-3.908-5.632V8h2.277zM6 18H4v-2h2v2zm14 0h-2v-2h2v2zm-6-9h-4V5h4v4z\"}}]})(props);\n};\nexport function BiVerticalBottom (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 19h3v2h-3zM13 19h3v2h-3zM8 19h3v2H8zM3 19h3v2H3zM13 5h-2v8H8l4 4 4-4h-3V5z\"}}]})(props);\n};\nexport function BiVerticalCenter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 5V2h-2v3H8l4 4 4-4zm0 17v-3h3l-4-4-4 4h3v3zM3 11h3v2H3zm5 0h3v2H8zm5 0h3v2h-3zm5 0h3v2h-3z\"}}]})(props);\n};\nexport function BiVerticalTop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m12 7-4 4h3v8h2v-8h3l-4-4zM3 3h3v2H3zM8 3h3v2H8zM13 3h3v2h-3zM18 3h3v2h-3z\"}}]})(props);\n};\nexport function BiVial (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m11.95 3.564.708.707-9.193 9.193C2.521 14.408 2 15.664 2 17s.521 2.592 1.465 3.535C4.408 21.479 5.664 22 7 22s2.592-.521 3.535-1.465l9.193-9.193.707.708 1.414-1.414-8.485-8.486-1.414 1.414zM9.121 19.121c-1.133 1.133-3.109 1.133-4.242 0C4.313 18.555 4 17.802 4 17s.313-1.555.879-2.121L5.758 14h8.484l-5.121 5.121zM16.242 12H7.758l6.314-6.314 4.242 4.242L16.242 12z\"}}]})(props);\n};\nexport function BiVideoOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 7c0-1.103-.897-2-2-2H6.414L3.707 2.293 2.293 3.707l18 18 1.414-1.414L18 16.586v-2.919L22 17V7l-4 3.333V7zm-2 7.586L8.414 7H16v7.586zM4 19h10.879l-2-2H4V8.121L2.145 6.265A1.977 1.977 0 0 0 2 7v10c0 1.103.897 2 2 2z\"}}]})(props);\n};\nexport function BiVideoPlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 8H9v3H6v2h3v3h2v-3h3v-2h-3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M18 7c0-1.103-.897-2-2-2H4c-1.103 0-2 .897-2 2v10c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2v-3.333L22 17V7l-4 3.333V7zm-1.999 10H4V7h12v5l.001 5z\"}}]})(props);\n};\nexport function BiVideoRecording (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 9c0-1.103-.897-2-2-2h-1.434l-2.418-4.029A2.008 2.008 0 0 0 10.434 2H5v2h5.434l1.8 3H4c-1.103 0-2 .897-2 2v9c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2v-3l4 2v-7l-4 2V9zm-1.998 9H4V9h12l.001 4H16v1l.001.001.001 3.999z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M6 14h6v2H6z\"}}]})(props);\n};\nexport function BiVideo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 7c0-1.103-.897-2-2-2H4c-1.103 0-2 .897-2 2v10c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2v-3.333L22 17V7l-4 3.333V7zm-1.998 10H4V7h12l.001 4.999L16 12l.001.001.001 4.999z\"}}]})(props);\n};\nexport function BiVoicemail (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.5 8a4.505 4.505 0 0 0-4.5 4.5c0 .925.281 1.784.762 2.5h-3.523c.48-.716.761-1.575.761-2.5C11 10.019 8.981 8 6.5 8S2 10.019 2 12.5 4.019 17 6.5 17c.171 0 .334-.032.5-.051V17h11v-.051c2.244-.252 4-2.139 4-4.449 0-2.481-2.019-4.5-4.5-4.5zM4 12.5C4 11.121 5.121 10 6.5 10S9 11.121 9 12.5 7.879 15 6.5 15 4 13.879 4 12.5zM17.5 15c-1.379 0-2.5-1.121-2.5-2.5s1.121-2.5 2.5-2.5 2.5 1.121 2.5 2.5-1.121 2.5-2.5 2.5z\"}}]})(props);\n};\nexport function BiVolumeFull (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 21c3.527-1.547 5.999-4.909 5.999-9S19.527 4.547 16 3v2c2.387 1.386 3.999 4.047 3.999 7S18.387 17.614 16 19v2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M16 7v10c1.225-1.1 2-3.229 2-5s-.775-3.9-2-5zM4 17h2.697l5.748 3.832a1.004 1.004 0 0 0 1.027.05A1 1 0 0 0 14 20V4a1 1 0 0 0-1.554-.832L6.697 7H4c-1.103 0-2 .897-2 2v6c0 1.103.897 2 2 2zm0-8h3c.033 0 .061-.016.093-.019a1.027 1.027 0 0 0 .38-.116c.026-.015.057-.017.082-.033L12 5.868v12.264l-4.445-2.964c-.025-.017-.056-.02-.082-.033a.986.986 0 0 0-.382-.116C7.059 15.016 7.032 15 7 15H4V9z\"}}]})(props);\n};\nexport function BiVolumeLow (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 17h2.697l5.748 3.832a1.004 1.004 0 0 0 1.027.05A1 1 0 0 0 14 20V4a1 1 0 0 0-1.554-.832L6.697 7H4c-1.103 0-2 .897-2 2v6c0 1.103.897 2 2 2zm0-8h3c.033 0 .061-.016.093-.019a1.027 1.027 0 0 0 .379-.116c.026-.014.057-.017.082-.033L12 5.868v12.264l-4.445-2.964c-.025-.018-.056-.02-.082-.033a.977.977 0 0 0-.382-.116C7.059 15.016 7.032 15 7 15H4V9zm12-2v10c1.225-1.1 2-3.229 2-5s-.775-3.9-2-5z\"}}]})(props);\n};\nexport function BiVolumeMute (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.707 20.293-2.023-2.023A9.566 9.566 0 0 0 21.999 12c0-4.091-2.472-7.453-5.999-9v2c2.387 1.386 3.999 4.047 3.999 7a8.113 8.113 0 0 1-1.672 4.913l-1.285-1.285C17.644 14.536 18 13.19 18 12c0-1.771-.775-3.9-2-5v7.586l-2-2V4a1 1 0 0 0-1.554-.832L7.727 6.313l-4.02-4.02-1.414 1.414 18 18 1.414-1.414zM12 5.868v4.718L9.169 7.755 12 5.868zM4 17h2.697l5.748 3.832a1.004 1.004 0 0 0 1.027.05A1 1 0 0 0 14 20v-1.879l-2-2v2.011l-4.445-2.964c-.025-.017-.056-.02-.082-.033a.986.986 0 0 0-.382-.116C7.059 15.016 7.032 15 7 15H4V9h.879L3.102 7.223A1.995 1.995 0 0 0 2 9v6c0 1.103.897 2 2 2z\"}}]})(props);\n};\nexport function BiVolume (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 17h2.697l5.748 3.832a1.004 1.004 0 0 0 1.027.05A1 1 0 0 0 14 20V4a1 1 0 0 0-1.554-.832L6.697 7H4c-1.103 0-2 .897-2 2v6c0 1.103.897 2 2 2zm0-8h3c.033 0 .061-.016.093-.019a1.027 1.027 0 0 0 .379-.116c.026-.014.057-.017.082-.033L12 5.868v12.264l-4.445-2.964c-.025-.018-.056-.02-.082-.033a.977.977 0 0 0-.382-.116C7.059 15.016 7.032 15 7 15H4V9z\"}}]})(props);\n};\nexport function BiWalk (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"13\",\"cy\":\"4\",\"r\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13.978 12.27c.245.368.611.647 1.031.787l2.675.892.633-1.896-2.675-.892-1.663-2.495a2.016 2.016 0 0 0-.769-.679l-1.434-.717a1.989 1.989 0 0 0-1.378-.149l-3.193.797a2.002 2.002 0 0 0-1.306 1.046l-1.794 3.589 1.789.895 1.794-3.589 2.223-.556-1.804 8.346-3.674 2.527 1.133 1.648 3.675-2.528c.421-.29.713-.725.82-1.225l.517-2.388 2.517 1.888.925 4.625 1.961-.393-.925-4.627a2 2 0 0 0-.762-1.206l-2.171-1.628.647-3.885 1.208 1.813z\"}}]})(props);\n};\nexport function BiWalletAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H5C3.346 3 2 4.346 2 6v12c0 1.654 1.346 3 3 3h15c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM5 19c-.552 0-1-.449-1-1V6c0-.551.448-1 1-1h15v3h-6c-1.103 0-2 .897-2 2v4c0 1.103.897 2 2 2h6.001v3H5zm15-9v4h-6v-4h6z\"}}]})(props);\n};\nexport function BiWallet (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 12h2v4h-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 7V5c0-1.103-.897-2-2-2H5C3.346 3 2 4.346 2 6v12c0 2.201 1.794 3 3 3h15c1.103 0 2-.897 2-2V9c0-1.103-.897-2-2-2zM5 5h13v2H5a1.001 1.001 0 0 1 0-2zm15 14H5.012C4.55 18.988 4 18.805 4 18V8.815c.314.113.647.185 1 .185h15v10z\"}}]})(props);\n};\nexport function BiWater (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5.996 9c1.413 0 2.16-.747 2.705-1.293.49-.49.731-.707 1.292-.707s.802.217 1.292.707C11.83 8.253 12.577 9 13.991 9c1.415 0 2.163-.747 2.71-1.293.491-.49.732-.707 1.295-.707s.804.217 1.295.707C19.837 8.253 20.585 9 22 9V7c-.563 0-.804-.217-1.295-.707C20.159 5.747 19.411 5 17.996 5s-2.162.747-2.709 1.292c-.491.491-.731.708-1.296.708-.562 0-.802-.217-1.292-.707C12.154 5.747 11.407 5 9.993 5s-2.161.747-2.706 1.293c-.49.49-.73.707-1.291.707s-.801-.217-1.291-.707C4.16 5.747 3.413 5 2 5v2c.561 0 .801.217 1.291.707C3.836 8.253 4.583 9 5.996 9zm0 5c1.413 0 2.16-.747 2.705-1.293.49-.49.731-.707 1.292-.707s.802.217 1.292.707c.545.546 1.292 1.293 2.706 1.293 1.415 0 2.163-.747 2.71-1.293.491-.49.732-.707 1.295-.707s.804.217 1.295.707C19.837 13.253 20.585 14 22 14v-2c-.563 0-.804-.217-1.295-.707-.546-.546-1.294-1.293-2.709-1.293s-2.162.747-2.709 1.292c-.491.491-.731.708-1.296.708-.562 0-.802-.217-1.292-.707C12.154 10.747 11.407 10 9.993 10s-2.161.747-2.706 1.293c-.49.49-.73.707-1.291.707s-.801-.217-1.291-.707C4.16 10.747 3.413 10 2 10v2c.561 0 .801.217 1.291.707C3.836 13.253 4.583 14 5.996 14zm0 5c1.413 0 2.16-.747 2.705-1.293.49-.49.731-.707 1.292-.707s.802.217 1.292.707c.545.546 1.292 1.293 2.706 1.293 1.415 0 2.163-.747 2.71-1.293.491-.49.732-.707 1.295-.707s.804.217 1.295.707C19.837 18.253 20.585 19 22 19v-2c-.563 0-.804-.217-1.295-.707-.546-.546-1.294-1.293-2.709-1.293s-2.162.747-2.709 1.292c-.491.491-.731.708-1.296.708-.562 0-.802-.217-1.292-.707C12.154 15.747 11.407 15 9.993 15s-2.161.747-2.706 1.293c-.49.49-.73.707-1.291.707s-.801-.217-1.291-.707C4.16 15.747 3.413 15 2 15v2c.561 0 .801.217 1.291.707C3.836 18.253 4.583 19 5.996 19z\"}}]})(props);\n};\nexport function BiWebcam (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2c-4.963 0-9 4.038-9 9 0 3.328 1.82 6.232 4.513 7.79l-2.067 1.378A1 1 0 0 0 6 22h12a1 1 0 0 0 .555-1.832l-2.067-1.378C19.18 17.232 21 14.328 21 11c0-4.962-4.037-9-9-9zm0 16c-3.859 0-7-3.141-7-7 0-3.86 3.141-7 7-7s7 3.14 7 7c0 3.859-3.141 7-7 7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 6c-2.757 0-5 2.243-5 5s2.243 5 5 5 5-2.243 5-5-2.243-5-5-5zm0 8c-1.654 0-3-1.346-3-3s1.346-3 3-3 3 1.346 3 3-1.346 3-3 3z\"}}]})(props);\n};\nexport function BiWifi0 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"18\",\"r\":\"2\"}}]})(props);\n};\nexport function BiWifi1 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.671 14.307C16.184 12.819 14.17 12 12 12s-4.184.819-5.671 2.307l1.414 1.414c1.11-1.11 2.621-1.722 4.257-1.722 1.636.001 3.147.612 4.257 1.722l1.414-1.414z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"18\",\"r\":\"2\"}}]})(props);\n};\nexport function BiWifi2 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.671 14.307C16.184 12.819 14.17 12 12 12s-4.184.819-5.671 2.307l1.414 1.414c1.11-1.11 2.621-1.722 4.257-1.722 1.636.001 3.147.612 4.257 1.722l1.414-1.414z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20.437 11.292c-4.572-4.573-12.301-4.573-16.873 0l1.414 1.414c3.807-3.807 10.238-3.807 14.045 0l1.414-1.414z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"18\",\"r\":\"2\"}}]})(props);\n};\nexport function BiWifiOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m1.293 8.395 1.414 1.414c.504-.504 1.052-.95 1.622-1.359L2.9 7.021c-.56.422-1.104.87-1.607 1.374zM6.474 5.06 3.707 2.293 2.293 3.707l18 18 1.414-1.414-5.012-5.012.976-.975a7.86 7.86 0 0 0-4.099-2.148L11.294 9.88c2.789-.191 5.649.748 7.729 2.827l1.414-1.414c-2.898-2.899-7.061-3.936-10.888-3.158L8.024 6.61A13.366 13.366 0 0 1 12 6c3.537 0 6.837 1.353 9.293 3.809l1.414-1.414C19.874 5.561 16.071 4 12 4a15.198 15.198 0 0 0-5.526 1.06zm-2.911 6.233 1.414 1.414a9.563 9.563 0 0 1 2.058-1.551L5.576 9.697c-.717.451-1.395.979-2.013 1.596zm2.766 3.014 1.414 1.414c.692-.692 1.535-1.151 2.429-1.428l-1.557-1.557a7.76 7.76 0 0 0-2.286 1.571zm7.66 3.803-2.1-2.1a1.996 1.996 0 1 0 2.1 2.1z\"}}]})(props);\n};\nexport function BiWifi (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 6c3.537 0 6.837 1.353 9.293 3.809l1.414-1.414C19.874 5.561 16.071 4 12 4c-4.071.001-7.874 1.561-10.707 4.395l1.414 1.414C5.163 7.353 8.463 6 12 6zm5.671 8.307c-3.074-3.074-8.268-3.074-11.342 0l1.414 1.414c2.307-2.307 6.207-2.307 8.514 0l1.414-1.414z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20.437 11.293c-4.572-4.574-12.301-4.574-16.873 0l1.414 1.414c3.807-3.807 10.238-3.807 14.045 0l1.414-1.414z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"18\",\"r\":\"2\"}}]})(props);\n};\nexport function BiWind (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 5.5C13 3.57 11.43 2 9.5 2 7.466 2 6.25 3.525 6.25 5h2c0-.415.388-1 1.25-1 .827 0 1.5.673 1.5 1.5S10.327 7 9.5 7H2v2h7.5C11.43 9 13 7.43 13 5.5zm2.5 9.5H8v2h7.5c.827 0 1.5.673 1.5 1.5s-.673 1.5-1.5 1.5c-.862 0-1.25-.585-1.25-1h-2c0 1.475 1.216 3 3.25 3 1.93 0 3.5-1.57 3.5-3.5S17.43 15 15.5 15z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M18 5c-2.206 0-4 1.794-4 4h2c0-1.103.897-2 2-2s2 .897 2 2-.897 2-2 2H2v2h16c2.206 0 4-1.794 4-4s-1.794-4-4-4zM2 15h4v2H2z\"}}]})(props);\n};\nexport function BiWindowAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zm0 2 .001 4H4V5h16zM4 19v-8h16.001l.001 8H4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14 6h2v2h-2zm3 0h2v2h-2z\"}}]})(props);\n};\nexport function BiWindowClose (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM4 19V7h16l.001 12H4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m15.707 10.707-1.414-1.414L12 11.586 9.707 9.293l-1.414 1.414L10.586 13l-2.293 2.293 1.414 1.414L12 14.414l2.293 2.293 1.414-1.414L13.414 13z\"}}]})(props);\n};\nexport function BiWindowOpen (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h5v-2H4V7h16v12h-5v2h5c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13 21v-5h3l-4-5-4 5h3v5z\"}}]})(props);\n};\nexport function BiWindow (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 21h16c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2H4c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2zm0-2V7h16l.001 12H4z\"}}]})(props);\n};\nexport function BiWindows (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 7H4c-1.103 0-2 .897-2 2v10c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2V9c0-1.103-.897-2-2-2zM4 19v-8h12V9l.002 10H4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M22 5c0-1.103-.897-2-2-2H7c-1.103 0-2 .897-2 2h13.001c1.101 0 1.996.895 1.999 1.994L20.002 15H20v2c1.103 0 2-.897 2-2V8.007L22.001 8V6L22 5.99V5z\"}}]})(props);\n};\nexport function BiWine (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.713 12.123c.264-.952.312-2.03.143-3.206l-.866-6.059A1 1 0 0 0 18 2H6a1 1 0 0 0-.99.858l-.865 6.058c-.169 1.177-.121 2.255.142 3.206.864 3.134 3.551 5.392 6.713 5.794V20H9v2h6v-2h-2v-2.084c3.162-.402 5.849-2.66 6.713-5.793zM17.133 4l.57 4H6.296l.571-4h10.266zM6.215 11.59c-.132-.474-.181-1.009-.159-1.59h11.889c.021.581-.028 1.116-.159 1.591A6.021 6.021 0 0 1 12 16a6.019 6.019 0 0 1-5.785-4.41z\"}}]})(props);\n};\nexport function BiWinkSmile (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14.828 14.828a3.988 3.988 0 0 1-2.02 1.09 4.108 4.108 0 0 1-1.616 0 4.103 4.103 0 0 1-.749-.232 4.161 4.161 0 0 1-.679-.368 4.115 4.115 0 0 1-1.082-1.082l-1.658 1.117c.215.319.462.619.733.889a5.991 5.991 0 0 0 8.485.002c.272-.271.52-.571.734-.891l-1.658-1.117c-.143.211-.307.41-.49.592z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8.5\",\"cy\":\"10.5\",\"r\":\"1.5\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15.5 10c-2 0-2.5 2-2.5 2h5s-.501-2-2.5-2z\"}}]})(props);\n};\nexport function BiWinkTongue (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.5 9c-2 0-2.5 2-2.5 2h5s-.501-2-2.5-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm-2 16v-3h4v3c0 1.103-.897 2-2 2s-2-.897-2-2zm5.856 1.005c.085-.323.144-.656.144-1.005v-1.499C17.589 15.028 18 13 18 13H6s.412 2.028 2 3.501V18c0 .349.059.682.144 1.005A8.005 8.005 0 0 1 4 12c0-4.411 3.589-8 8-8s8 3.589 8 8a8.005 8.005 0 0 1-4.144 7.005z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8.5\",\"cy\":\"9.5\",\"r\":\"1.5\"}}]})(props);\n};\nexport function BiWon (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.758 5H19.68l-.844 3h-4.893l-.899-3h-2.088l-.899 3H5.164L4.32 5H2.242l.844 3H2v2h1.648l.563 2H2v2h2.773l1.688 6h2.083l1.8-6h3.313l1.8 6h2.083l1.688-6H22v-2h-2.211l.563-2H22V8h-1.086l.844-3zM5.727 10h3.729l-.6 2H6.289l-.562-2zm1.804 6.417L6.852 14h1.404l-.725 2.417zM10.944 12l.6-2h.912l.6 2h-2.112zm5.525 4.417L15.744 14h1.404l-.679 2.417zM17.711 12h-2.567l-.6-2h3.729l-.562 2z\"}}]})(props);\n};\nexport function BiWorld (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zM4 12c0-.899.156-1.762.431-2.569L6 11l2 2v2l2 2 1 1v1.931C7.061 19.436 4 16.072 4 12zm14.33 4.873C17.677 16.347 16.687 16 16 16v-1a2 2 0 0 0-2-2h-4v-3a2 2 0 0 0 2-2V7h1a2 2 0 0 0 2-2v-.411C17.928 5.778 20 8.65 20 12a7.947 7.947 0 0 1-1.67 4.873z\"}}]})(props);\n};\nexport function BiWrench (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5.122 21c.378.378.88.586 1.414.586S7.572 21.378 7.95 21l4.336-4.336a7.495 7.495 0 0 0 2.217.333 7.446 7.446 0 0 0 5.302-2.195 7.484 7.484 0 0 0 1.632-8.158l-.57-1.388-4.244 4.243-2.121-2.122 4.243-4.243-1.389-.571A7.478 7.478 0 0 0 14.499 2c-2.003 0-3.886.78-5.301 2.196a7.479 7.479 0 0 0-1.862 7.518L3 16.05a2.001 2.001 0 0 0 0 2.828L5.122 21zm4.548-8.791-.254-.616a5.486 5.486 0 0 1 1.196-5.983 5.46 5.46 0 0 1 4.413-1.585l-3.353 3.353 4.949 4.95 3.355-3.355a5.49 5.49 0 0 1-1.587 4.416c-1.55 1.55-3.964 2.027-5.984 1.196l-.615-.255-5.254 5.256h.001l-.001 1v-1l-2.122-2.122 5.256-5.255z\"}}]})(props);\n};\nexport function BiXCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9.172 16.242 12 13.414l2.828 2.828 1.414-1.414L13.414 12l2.828-2.828-1.414-1.414L12 10.586 9.172 7.758 7.758 9.172 10.586 12l-2.828 2.828z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 22c5.514 0 10-4.486 10-10S17.514 2 12 2 2 6.486 2 12s4.486 10 10 10zm0-18c4.411 0 8 3.589 8 8s-3.589 8-8 8-8-3.589-8-8 3.589-8 8-8z\"}}]})(props);\n};\nexport function BiX (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m16.192 6.344-4.243 4.242-4.242-4.242-1.414 1.414L10.535 12l-4.242 4.242 1.414 1.414 4.242-4.242 4.243 4.242 1.414-1.414L13.364 12l4.242-4.242z\"}}]})(props);\n};\nexport function BiYen (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.2 3.4 12 10.333 6.8 3.4 5.2 4.6 10 11H7v2h4v2H7v2h4v4h2v-4h4v-2h-4v-2h4v-2h-3l4.8-6.4z\"}}]})(props);\n};\nexport function BiZoomIn (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 6H9v3H6v2h3v3h2v-3h3V9h-3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M10 2c-4.411 0-8 3.589-8 8s3.589 8 8 8a7.952 7.952 0 0 0 4.897-1.688l4.396 4.396 1.414-1.414-4.396-4.396A7.952 7.952 0 0 0 18 10c0-4.411-3.589-8-8-8zm0 14c-3.309 0-6-2.691-6-6s2.691-6 6-6 6 2.691 6 6-2.691 6-6 6z\"}}]})(props);\n};\nexport function BiZoomOut (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 9h8v2H6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M10 18a7.952 7.952 0 0 0 4.897-1.688l4.396 4.396 1.414-1.414-4.396-4.396A7.952 7.952 0 0 0 18 10c0-4.411-3.589-8-8-8s-8 3.589-8 8 3.589 8 8 8zm0-14c3.309 0 6 2.691 6 6s-2.691 6-6 6-6-2.691-6-6 2.691-6 6-6z\"}}]})(props);\n};\nexport function BiSolidAddToQueue (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 22h12v-2H4V8H2v12c0 1.103.897 2 2 2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H8c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm-2 9h-3v3h-2v-3h-3V9h3V6h2v3h3v2z\"}}]})(props);\n};\nexport function BiSolidAdjustAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.071 19.071c3.833-3.833 3.833-10.31 0-14.143s-10.31-3.833-14.143 0-3.833 10.31 0 14.143 10.31 3.833 14.143 0zM7.051 7.051c2.706-2.707 7.191-2.708 9.898 0l-9.898 9.898c-2.708-2.707-2.71-7.19 0-9.898z\"}}]})(props);\n};\nexport function BiSolidAdjust (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.579 2 2 6.58 2 12s4.579 10 10 10 10-4.58 10-10S17.421 2 12 2zm0 17V5c3.829 0 7 3.169 7 7 0 3.828-3.171 7-7 7z\"}}]})(props);\n};\nexport function BiSolidAlarmAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 4c-4.879 0-9 4.121-9 9s4.121 9 9 9 9-4.121 9-9-4.121-9-9-9zm4 10h-3v3h-2v-3H8v-2h3V9h2v3h3v2zm1.284-10.293 1.412-1.416 3.01 3-1.413 1.417zM5.282 2.294 6.7 3.706l-2.99 3-1.417-1.413z\"}}]})(props);\n};\nexport function BiSolidAlarmExclamation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m17.284 3.707 1.412-1.416 3.01 3-1.413 1.417zm-10.586 0-2.99 2.999L2.29 5.294l2.99-3zM12 4c-4.879 0-9 4.121-9 9s4.121 9 9 9 9-4.121 9-9-4.121-9-9-9zm1 14h-2v-2h2v2zm0-4h-2V8h2v6z\"}}]})(props);\n};\nexport function BiSolidAlarmOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m20.292 6.708-3.01-3 1.412-1.417 3.01 3zm1.415 13.585-2.287-2.288C20.409 16.563 21 14.837 21 13c0-4.878-4.121-9-9-9-1.838 0-3.563.59-5.006 1.581L5.91 4.496l.788-.79-1.416-1.412-.786.788-.789-.789-1.414 1.414 18 18 1.414-1.414zM17 14h-1.586l-2-2H17v2zm-6-6h2v3.586l-2-2V8zm1 14c1.658 0 3.224-.485 4.574-1.305L4.305 8.426A8.794 8.794 0 0 0 3 13c0 4.878 4.122 9 9 9z\"}}]})(props);\n};\nexport function BiSolidAlarmSnooze (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m17.284 3.707 1.412-1.416 3.01 3-1.413 1.417zm-10.586 0-2.99 2.999L2.29 5.294l2.99-3zM12 4c-4.878 0-9 4.121-9 9s4.122 9 9 9c4.879 0 9-4.121 9-9s-4.121-9-9-9zm4 13H8.131l4-6H8V9h7.868l-1.035 1.554-.001.001L11.869 15H16v2z\"}}]})(props);\n};\nexport function BiSolidAlarm (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 4c-4.878 0-9 4.122-9 9s4.122 9 9 9c4.879 0 9-4.122 9-9s-4.121-9-9-9zm5 10h-6V8h2v4h4v2zm3.292-7.292-3.01-3 1.412-1.417 3.01 3zM5.282 2.294 6.7 3.706l-2.99 3-1.417-1.413z\"}}]})(props);\n};\nexport function BiSolidAlbum (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm-4.607 8.055A4.956 4.956 0 0 0 7 12H5a6.978 6.978 0 0 1 2.051-4.95 6.978 6.978 0 0 1 2.225-1.5l.779 1.842c-.596.252-1.13.612-1.59 1.072s-.82.995-1.072 1.591zm4.6 3.945a2.007 2.007 0 1 1 0-4.014 2.007 2.007 0 0 1 0 4.014z\"}}]})(props);\n};\nexport function BiSolidAmbulance (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.86 12.48 19.15 8a2 2 0 0 0-1.72-1H15V5a1 1 0 0 0-1-1H4a2 2 0 0 0-2 2v10a2 2 0 0 0 1 1.73 3.49 3.49 0 0 0 7 .27h3.1a3.48 3.48 0 0 0 6.9 0 2 2 0 0 0 2-2v-3a1.07 1.07 0 0 0-.14-.52zM6.5 19A1.5 1.5 0 1 1 8 17.5 1.5 1.5 0 0 1 6.5 19zm5.5-8h-2v2H8v-2H6V9h2V7h2v2h2zm4.5 8a1.5 1.5 0 1 1 1.5-1.5 1.5 1.5 0 0 1-1.5 1.5zM15 12V9h2.43l1.8 3z\"}}]})(props);\n};\nexport function BiSolidAnalyse (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4.626 8.878a7.937 7.937 0 0 1 1.71-2.541 7.92 7.92 0 0 1 2.542-1.71 8.12 8.12 0 0 1 6.13-.041A2.49 2.49 0 0 0 17.5 7C18.886 7 20 5.886 20 4.5S18.886 2 17.5 2c-.689 0-1.312.276-1.763.725-2.431-.973-5.223-.958-7.635.059-1.19.5-2.26 1.22-3.18 2.139A9.98 9.98 0 0 0 2 12h2c0-1.086.211-2.136.626-3.122zm14.747 6.244c-.401.952-.977 1.808-1.71 2.541s-1.589 1.309-2.542 1.71a8.12 8.12 0 0 1-6.13.041A2.488 2.488 0 0 0 6.5 17C5.114 17 4 18.114 4 19.5S5.114 22 6.5 22c.689 0 1.312-.276 1.763-.725A9.973 9.973 0 0 0 12 22a9.983 9.983 0 0 0 9.217-6.102A9.992 9.992 0 0 0 22 12h-2a7.993 7.993 0 0 1-.627 3.122z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 7.462c-2.502 0-4.538 2.036-4.538 4.538S9.498 16.538 12 16.538c2.502 0 4.538-2.036 4.538-4.538S14.502 7.462 12 7.462z\"}}]})(props);\n};\nexport function BiSolidAngry (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm-5 8.5.002-.022-1.373-.549.742-1.857 5 2-.742 1.857-1.031-.413c-.014.014-.023.031-.037.044A1.499 1.499 0 0 1 7 10.5zM8 17s1-3 4-3 4 3 4 3H8zm8.986-6.507c0 .412-.167.785-.438 1.056a1.488 1.488 0 0 1-2.112 0c-.011-.011-.019-.024-.029-.035l-1.037.415-.742-1.857 5-2 .742 1.857-1.386.554a.036.036 0 0 1 .002.01z\"}}]})(props);\n};\nexport function BiSolidArch (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 8V6H3v14H2v2h6v-7c0-.163.046-4 4-4 3.821 0 3.993 3.602 4 4v7h6v-2h-1V8zM2 2h20v2H2z\"}}]})(props);\n};\nexport function BiSolidArchiveIn (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.706 5.292-2.999-2.999A.996.996 0 0 0 18 2H6a.997.997 0 0 0-.707.293L2.294 5.292A.996.996 0 0 0 2 6v13c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V6a.994.994 0 0 0-.294-.708zM6.414 4h11.172l1 1H5.414l1-1zM12 18l-5-5h3v-3h4v3h3l-5 5z\"}}]})(props);\n};\nexport function BiSolidArchiveOut (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.706 5.292-2.999-2.999A.996.996 0 0 0 18 2H6a.996.996 0 0 0-.707.293L2.294 5.292A.994.994 0 0 0 2 6v13c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V6a.994.994 0 0 0-.294-.708zM6.414 4h11.172l1 1H5.414l1-1zM14 14v3h-4v-3H7l5-5 5 5h-3z\"}}]})(props);\n};\nexport function BiSolidArchive (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.704 5.29-2.997-2.997A.996.996 0 0 0 18 2H6a.996.996 0 0 0-.707.293L2.296 5.29A.994.994 0 0 0 2 5.999V19a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V5.999a.994.994 0 0 0-.296-.709zM6.414 4h11.172l1 1H5.414l1-1zM17 13v1H7v-4h2v2h6v-2h2v3z\"}}]})(props);\n};\nexport function BiSolidArea (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 19a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14zm9-13h6v6h-2V8h-4V6zm-6 6h2v4h4v2H6v-6z\"}}]})(props);\n};\nexport function BiSolidArrowFromBottom (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 18h12v2H6zm6-14-6 6h5v6h2v-6h5z\"}}]})(props);\n};\nexport function BiSolidArrowFromLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 6h2v12H4zm10 5H8v2h6v5l6-6-6-6z\"}}]})(props);\n};\nexport function BiSolidArrowFromRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 6h2v12h-2zm-8 12v-5h6v-2h-6V6l-6 6z\"}}]})(props);\n};\nexport function BiSolidArrowFromTop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 4h12v2H6zm5 4v6H6l6 6 6-6h-5V8z\"}}]})(props);\n};\nexport function BiSolidArrowToBottom (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 18h12v2H6zm5-14v6H6l6 6 6-6h-5V4z\"}}]})(props);\n};\nexport function BiSolidArrowToLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 6h2v12H4zm10 7h6v-2h-6V6l-6 6 6 6z\"}}]})(props);\n};\nexport function BiSolidArrowToRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 6h2v12h-2zm-8 5H4v2h6v5l6-6-6-6z\"}}]})(props);\n};\nexport function BiSolidArrowToTop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 4h12v2H6zm5 10v6h2v-6h5l-6-6-6 6z\"}}]})(props);\n};\nexport function BiSolidAward (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 8.999a6.99 6.99 0 0 0 2.879 5.646l.001.001a6.972 6.972 0 0 0 1.881.979l.051.019a6.906 6.906 0 0 0 1.163.271 6.79 6.79 0 0 0 1.024.085H12c.35 0 .69-.034 1.027-.084l.182-.028c.336-.059.664-.139.981-.243l.042-.016C17 14.693 19 12.078 19 8.999 19 5.14 15.86 2 12 2S5 5.14 5 8.999zM12 4c2.756 0 5 2.242 5 4.999h-2A3.003 3.003 0 0 0 12 6V4zM7.521 16.795V22L12 20.5l4.479 1.5.001-5.205a8.932 8.932 0 0 1-8.959 0z\"}}]})(props);\n};\nexport function BiSolidBabyCarriage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.666 12.277a7.72 7.72 0 0 0 .171-.665c.003-.017.004-.033.008-.05.02-.098.029-.199.045-.298.025-.157.055-.313.07-.471a7.979 7.979 0 0 0-2.303-6.45A7.979 7.979 0 0 0 14 2v8H6.517l-.858-2H2v2h2.341l1.828 4.266A3.504 3.504 0 0 0 4 17.5C4 19.43 5.57 21 7.5 21c1.759 0 3.204-1.309 3.449-3h2.102c.245 1.691 1.69 3 3.449 3 1.93 0 3.5-1.57 3.5-3.5 0-.63-.181-1.213-.473-1.725.042-.041.089-.077.131-.119.36-.361.688-.759.977-1.184.288-.43.536-.886.736-1.359.016-.037.026-.076.041-.113h.001l.015-.042c.088-.22.168-.441.235-.668l.003-.013zM7.5 19c-.827 0-1.5-.673-1.5-1.5S6.673 16 7.5 16s1.5.673 1.5 1.5S8.327 19 7.5 19zm9 0c-.827 0-1.5-.673-1.5-1.5s.673-1.5 1.5-1.5 1.5.673 1.5 1.5-.673 1.5-1.5 1.5z\"}}]})(props);\n};\nexport function BiSolidBackpack (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 15a1 1 0 0 0-1-1H9c-.551 0-1 .448-1 1v2h8v-2zm-8 4h8v3H8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M21 12c0-2.967-2.167-5.432-5-5.91V5c0-1.654-1.346-3-3-3h-2C9.346 2 8 3.346 8 5v1.09C5.167 6.568 3 9.033 3 12v8c0 1.103.897 2 2 2h1v-7c0-1.654 1.346-3 3-3h6c1.654 0 3 1.346 3 3v7h1c1.103 0 2-.897 2-2v-8zM10 5c0-.552.449-1 1-1h2a1 1 0 0 1 1 1v1h-4V5z\"}}]})(props);\n};\nexport function BiSolidBadgeCheck (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.965 8.521C19.988 8.347 20 8.173 20 8c0-2.379-2.143-4.288-4.521-3.965C14.786 2.802 13.466 2 12 2s-2.786.802-3.479 2.035C6.138 3.712 4 5.621 4 8c0 .173.012.347.035.521C2.802 9.215 2 10.535 2 12s.802 2.785 2.035 3.479A3.976 3.976 0 0 0 4 16c0 2.379 2.138 4.283 4.521 3.965C9.214 21.198 10.534 22 12 22s2.786-.802 3.479-2.035C17.857 20.283 20 18.379 20 16c0-.173-.012-.347-.035-.521C21.198 14.785 22 13.465 22 12s-.802-2.785-2.035-3.479zm-9.01 7.895-3.667-3.714 1.424-1.404 2.257 2.286 4.327-4.294 1.408 1.42-5.749 5.706z\"}}]})(props);\n};\nexport function BiSolidBadgeDollar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2.047 14.668a.994.994 0 0 0 .465.607l1.91 1.104v2.199a1 1 0 0 0 1 1h2.199l1.104 1.91a1.01 1.01 0 0 0 .866.5c.174 0 .347-.046.501-.135L12 20.75l1.91 1.104a1.001 1.001 0 0 0 1.366-.365l1.103-1.91h2.199a1 1 0 0 0 1-1V16.38l1.91-1.104a1 1 0 0 0 .365-1.367L20.75 12l1.104-1.908a1 1 0 0 0-.365-1.366l-1.91-1.104v-2.2a1 1 0 0 0-1-1H16.38l-1.103-1.909a1.008 1.008 0 0 0-.607-.466.993.993 0 0 0-.759.1L12 3.25l-1.909-1.104a1 1 0 0 0-1.366.365l-1.104 1.91H5.422a1 1 0 0 0-1 1V7.62l-1.91 1.104a1.003 1.003 0 0 0-.365 1.368L3.251 12l-1.104 1.908a1.009 1.009 0 0 0-.1.76zM12 13c-3.48 0-4-1.879-4-3 0-1.287 1.029-2.583 3-2.915V6.012h2v1.109c1.734.41 2.4 1.853 2.4 2.879h-1l-1 .018C13.386 9.638 13.185 9 12 9c-1.299 0-2 .515-2 1 0 .374 0 1 2 1 3.48 0 4 1.879 4 3 0 1.287-1.029 2.583-3 2.915V18h-2v-1.08c-2.339-.367-3-2.003-3-2.92h2c.011.143.159 1 2 1 1.38 0 2-.585 2-1 0-.325 0-1-2-1z\"}}]})(props);\n};\nexport function BiSolidBadge (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.965 8.521C19.988 8.347 20 8.173 20 8c0-2.379-2.143-4.288-4.521-3.965C14.786 2.802 13.466 2 12 2s-2.786.802-3.479 2.035C6.138 3.712 4 5.621 4 8c0 .173.012.347.035.521C2.802 9.215 2 10.535 2 12s.802 2.785 2.035 3.479A3.976 3.976 0 0 0 4 16c0 2.379 2.138 4.283 4.521 3.965C9.214 21.198 10.534 22 12 22s2.786-.802 3.479-2.035C17.857 20.283 20 18.379 20 16c0-.173-.012-.347-.035-.521C21.198 14.785 22 13.465 22 12s-.802-2.785-2.035-3.479z\"}}]})(props);\n};\nexport function BiSolidBaguette (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m11.13 4.41 4.23 4.23L14.3 9.7l-4.24-4.24-1.77 1.77 4.24 4.24-1.06 1.06-4.24-4.24-1.77 1.77L9.7 14.3l-1.06 1.06-4.23-4.23C1.86 14 1.55 18 3.79 20.21a5.38 5.38 0 0 0 3.85 1.5 8 8 0 0 0 5.6-2.47l6-6c2.87-2.87 3.31-7.11 1-9.45s-6.24-1.93-9.11.62z\"}}]})(props);\n};\nexport function BiSolidBall (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.247 3.034c-.069-.018-1.742-.433-4.052-.433-2.842 0-6.868.64-9.91 3.687-5.34 5.349-3.34 13.61-3.252 13.96a1 1 0 0 0 .728.726c.069.018 1.726.426 4.018.426 2.849 0 6.884-.641 9.932-3.688 5.335-5.335 3.351-13.6 3.264-13.949a1.005 1.005 0 0 0-.728-.729zm-3.537 9.262-1.414 1.414-1.793-1.792-1.586 1.586 1.792 1.793-1.414 1.414-1.792-1.793-1.793 1.793-1.414-1.414 1.793-1.793-1.793-1.794 1.414-1.414 1.793 1.794 1.586-1.586-1.794-1.793 1.414-1.414 1.794 1.793 1.793-1.793 1.414 1.414-1.793 1.793 1.793 1.792z\"}}]})(props);\n};\nexport function BiSolidBalloon (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 19.91 10 22h4l-1-2.09c4-.65 7-5.28 7-9.91a8 8 0 0 0-16 0c0 4.63 3.08 9.26 7 9.91zm1-15.66v1.5A4.26 4.26 0 0 0 7.75 10h-1.5A5.76 5.76 0 0 1 12 4.25z\"}}]})(props);\n};\nexport function BiSolidBandAid (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m11.646 3.868-7.778 7.778a6.007 6.007 0 0 0 0 8.485 5.984 5.984 0 0 0 4.242 1.754 5.984 5.984 0 0 0 4.243-1.754l7.778-7.778a6.007 6.007 0 0 0 0-8.485 6.008 6.008 0 0 0-8.485 0zM9 13a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm3 3a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm0-6a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm3 3a1 1 0 1 1 0-2 1 1 0 0 1 0 2z\"}}]})(props);\n};\nexport function BiSolidBank (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2 8v4.001h1V18H2v3h16l3 .001V21h1v-3h-1v-5.999h1V8L12 2 2 8zm4 10v-5.999h2V18H6zm5 0v-5.999h2V18h-2zm7 0h-2v-5.999h2V18zM14 8a2 2 0 1 1-4.001-.001A2 2 0 0 1 14 8z\"}}]})(props);\n};\nexport function BiSolidBarChartAlt2 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 21H3a1 1 0 0 1-1-1v-8a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1zm7 0h-3a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1v17a1 1 0 0 1-1 1zm7 0h-3a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1v11a1 1 0 0 1-1 1z\"}}]})(props);\n};\nexport function BiSolidBarChartSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 19V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2zM9 18H7v-6h2v6zm4 0h-2V7h2v11zm4 0h-2v-8h2v8z\"}}]})(props);\n};\nexport function BiSolidBarcode (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2zM8 17H5V7h3zm2 0H9V7h1zm2 0h-1V7h1zm4 0h-3V7h3zm3 0h-2V7h2z\"}}]})(props);\n};\nexport function BiSolidBaseball (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.984 12.236a9.966 9.966 0 0 0-2.913-7.308 9.966 9.966 0 0 0-7.308-2.913 9.04 9.04 0 0 1-.673 4.313l-1.84-.78a7.044 7.044 0 0 0 .526-3.284 9.927 9.927 0 0 0-4.847 2.665 9.924 9.924 0 0 0-2.666 4.852 7.082 7.082 0 0 0 2.576-.276l.575 1.916c-1.1.33-2.257.443-3.398.344a9.964 9.964 0 0 0 2.913 7.307 9.965 9.965 0 0 0 7.307 2.913 9.079 9.079 0 0 1 .344-3.398l1.916.575a7.06 7.06 0 0 0-.276 2.576 9.927 9.927 0 0 0 4.853-2.666 9.926 9.926 0 0 0 2.665-4.848 7.056 7.056 0 0 0-3.284.526l-.78-1.841a9.025 9.025 0 0 1 4.31-.673zM9.17 9.173a9.017 9.017 0 0 1-2.192 1.612l-.927-1.772a7.01 7.01 0 0 0 2.576-2.314l1.663 1.113c-.328.49-.705.948-1.12 1.361zm7.074 7.068a6.991 6.991 0 0 0-1.257 1.708l-1.772-.927a9.025 9.025 0 0 1 2.972-3.312l1.113 1.663a6.987 6.987 0 0 0-1.056.868z\"}}]})(props);\n};\nexport function BiSolidBasket (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8.132 2.504 4.42 9H3a1.001 1.001 0 0 0-.965 1.263l2.799 10.263A2.004 2.004 0 0 0 6.764 22h10.473c.898 0 1.692-.605 1.93-1.475l2.799-10.263A.998.998 0 0 0 21 9h-1.42l-3.712-6.496-1.736.992L17.277 9H6.723l3.145-5.504-1.736-.992zM14 13h2v5h-2v-5zm-6 0h2v5H8v-5z\"}}]})(props);\n};\nexport function BiSolidBasketball (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.328 4.258a9.953 9.953 0 0 0-5.949-2.235 8.99 8.99 0 0 1-1.835 7.107L12 10.586l6.328-6.328zM7.701 9.115 4.258 5.672a9.938 9.938 0 0 0-2.112 4.704 7.007 7.007 0 0 0 5.555-1.261zm12.041-3.443L13.414 12l1.456 1.456a8.993 8.993 0 0 1 7.107-1.835 9.953 9.953 0 0 0-2.235-5.949zm2.112 7.952a7.007 7.007 0 0 0-5.555 1.261l3.443 3.443a9.924 9.924 0 0 0 2.112-4.704zM9.115 7.701a7.007 7.007 0 0 0 1.261-5.555 9.928 9.928 0 0 0-4.704 2.112l3.443 3.443zm4.509 14.153a9.936 9.936 0 0 0 4.704-2.111L14.885 16.3a7.003 7.003 0 0 0-1.261 5.554zM12 13.414l-6.328 6.328a9.953 9.953 0 0 0 5.949 2.235 8.99 8.99 0 0 1 1.835-7.107L12 13.414zm-7.742 4.914L10.586 12 9.13 10.544a8.993 8.993 0 0 1-7.107 1.835 9.953 9.953 0 0 0 2.235 5.949z\"}}]})(props);\n};\nexport function BiSolidBath (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 10H7V7.113c0-.997.678-1.923 1.661-2.085A2.003 2.003 0 0 1 11 7h2a4.003 4.003 0 0 0-4.398-3.98C6.523 3.222 5 5.089 5 7.178V10H3a1 1 0 0 0-1 1v2c0 2.606 1.674 4.823 4 5.65V22h2v-3h8v3h2v-3.35c2.326-.827 4-3.044 4-5.65v-2a1 1 0 0 0-1-1z\"}}]})(props);\n};\nexport function BiSolidBatteryCharging (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 10V8a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-2h2v-4h-2zM9 17l2-3.89L7 12l6-5-1 3.89L16 12l-7 5z\"}}]})(props);\n};\nexport function BiSolidBatteryFull (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 18h14a2 2 0 0 0 2-2v-2h2v-4h-2V8a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2zm1-9h12v6H5V9z\"}}]})(props);\n};\nexport function BiSolidBatteryLow (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 8a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-2h2v-4h-2V8zM5 15V9h3l4 6H5z\"}}]})(props);\n};\nexport function BiSolidBattery (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 8a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-2h2v-4h-2V8z\"}}]})(props);\n};\nexport function BiSolidBed (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 9.556V3h-2v2H6V3H4v6.557C2.81 10.25 2 11.526 2 13v4a1 1 0 0 0 1 1h1v4h2v-4h12v4h2v-4h1a1 1 0 0 0 1-1v-4c0-1.474-.811-2.75-2-3.444zM11 9H6V7h5v2zm7 0h-5V7h5v2z\"}}]})(props);\n};\nexport function BiSolidBeenHere (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C7.589 2 4 5.589 4 9.995 3.971 16.44 11.696 21.784 12 22c0 0 8.029-5.56 8-12 0-4.411-3.589-8-8-8zm-1 13.414-3.707-3.707 1.414-1.414L11 12.586l5.293-5.293 1.414 1.414L11 15.414z\"}}]})(props);\n};\nexport function BiSolidBeer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 6h-2V4a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v15c0 1.654 1.346 3 3 3h10c1.654 0 3-1.346 3-3v-1h2c1.103 0 2-.897 2-2V8c0-1.103-.897-2-2-2zM8 17H6V7h2v10zm6 0h-2V7h2v10zm6-1h-2V8h2v8z\"}}]})(props);\n};\nexport function BiSolidBellMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 22a2.98 2.98 0 0 0 2.818-2H9.182A2.98 2.98 0 0 0 12 22zm8.707-5.707L19 14.586V10c0-3.217-2.185-5.926-5.145-6.743C13.562 2.52 12.846 2 12 2s-1.562.52-1.855 1.258C7.185 4.074 5 6.783 5 10v4.586l-1.707 1.707A.997.997 0 0 0 3 17v1a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1v-1a.997.997 0 0 0-.293-.707zM16 12H8v-2h8v2z\"}}]})(props);\n};\nexport function BiSolidBellOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.345 18.931A.993.993 0 0 0 21 18v-1a.996.996 0 0 0-.293-.707L19 14.586V10c0-3.217-2.185-5.927-5.145-6.742C13.562 2.52 12.846 2 12 2s-1.562.52-1.855 1.258c-1.323.364-2.463 1.128-3.346 2.127L3.707 2.293 2.293 3.707l18 18 1.414-1.414-1.362-1.362zM12 22a2.98 2.98 0 0 0 2.818-2H9.182A2.98 2.98 0 0 0 12 22zM5 10v4.586l-1.707 1.707A.996.996 0 0 0 3 17v1a1 1 0 0 0 1 1h10.879L5.068 9.189C5.037 9.457 5 9.724 5 10z\"}}]})(props);\n};\nexport function BiSolidBellPlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 22a2.98 2.98 0 0 0 2.818-2H9.182A2.98 2.98 0 0 0 12 22zm8.707-5.707L19 14.586V10c0-3.217-2.185-5.926-5.145-6.743C13.562 2.52 12.846 2 12 2s-1.562.52-1.855 1.258C7.185 4.074 5 6.783 5 10v4.586l-1.707 1.707A.997.997 0 0 0 3 17v1a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1v-1a.997.997 0 0 0-.293-.707zM16 12h-3v3h-2v-3H8v-2h3V7h2v3h3v2z\"}}]})(props);\n};\nexport function BiSolidBellRing (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m5.705 3.71-1.41-1.42C1 5.563 1 7.935 1 11h1l1-.063C3 8.009 3 6.396 5.705 3.71zm13.999-1.42-1.408 1.42C21 6.396 21 8.009 21 11l2-.063c0-3.002 0-5.374-3.296-8.647zM12 22a2.98 2.98 0 0 0 2.818-2H9.182A2.98 2.98 0 0 0 12 22zm7-7.414V10c0-3.217-2.185-5.927-5.145-6.742C13.562 2.52 12.846 2 12 2s-1.562.52-1.855 1.258C7.184 4.073 5 6.783 5 10v4.586l-1.707 1.707A.996.996 0 0 0 3 17v1a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1v-1a.996.996 0 0 0-.293-.707L19 14.586z\"}}]})(props);\n};\nexport function BiSolidBell (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 22a2.98 2.98 0 0 0 2.818-2H9.182A2.98 2.98 0 0 0 12 22zm7-7.414V10c0-3.217-2.185-5.927-5.145-6.742C13.562 2.52 12.846 2 12 2s-1.562.52-1.855 1.258C7.185 4.074 5 6.783 5 10v4.586l-1.707 1.707A.996.996 0 0 0 3 17v1a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1v-1a.996.996 0 0 0-.293-.707L19 14.586z\"}}]})(props);\n};\nexport function BiSolidBible (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 22h15v-2H6.012C5.55 19.988 5 19.805 5 19s.55-.988 1.012-1H21V4a2 2 0 0 0-2-2H6c-1.206 0-3 .799-3 3v14c0 2.201 1.794 3 3 3zM8 7h3V5h2v2h3v2h-3v6h-2V9H8V7z\"}}]})(props);\n};\nexport function BiSolidBinoculars (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.447 5.345A3.27 3.27 0 0 0 16.29 3a3.293 3.293 0 0 0-3.277 3h-2.025a3.297 3.297 0 0 0-3.284-3 3.268 3.268 0 0 0-3.151 2.345l-2.511 8.368A1.027 1.027 0 0 0 2 14v1a5.006 5.006 0 0 0 5.001 5 5.003 5.003 0 0 0 4.576-3h.846a5.003 5.003 0 0 0 4.576 3A5.006 5.006 0 0 0 22 14.999V14c0-.098-.015-.194-.042-.287l-2.511-8.368zM7.001 18A3.005 3.005 0 0 1 4 15c0-.076.017-.147.022-.222A2.995 2.995 0 0 1 7 12a3 3 0 0 1 3 3v.009A3.004 3.004 0 0 1 7.001 18zm9.998 0A3.004 3.004 0 0 1 14 15.009V15a3 3 0 0 1 6-.001A3.005 3.005 0 0 1 16.999 18z\"}}]})(props);\n};\nexport function BiSolidBlanket (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H7C4.243 2 2 4.243 2 7v10c0 2.757 2.243 5 5 5h12c1.654 0 3-1.346 3-3s-1.346-3-3-3H6v2h13a1 1 0 0 1 0 2H7c-1.654 0-3-1.346-3-3s1.346-3 3-3h13c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zM4 13h.003L4 13.002V13z\"}}]})(props);\n};\nexport function BiSolidBoltCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm-1 16v-5H7l6-7v5h4l-6 7z\"}}]})(props);\n};\nexport function BiSolidBolt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.168 8H13l.806-4.835A1 1 0 0 0 12.819 2H7.667a1 1 0 0 0-.986.835l-1.667 10A1 1 0 0 0 6 14h4v8l8.01-12.459A1 1 0 0 0 17.168 8z\"}}]})(props);\n};\nexport function BiSolidBomb (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m18.293 4.293-1.086 1.086-1.086-1.086a.999.999 0 0 0-1.414 0l-1.249 1.249A8.427 8.427 0 0 0 10.499 5C5.813 5 2 8.813 2 13.5S5.813 22 10.499 22s8.5-3.813 8.5-8.5a8.42 8.42 0 0 0-.431-2.654L19.914 9.5a.999.999 0 0 0 0-1.414l-1.293-1.293 1.09-1.09C19.94 5.474 20.556 5 21 5h1V3h-1c-1.4 0-2.584 1.167-2.707 1.293zM10.499 10c-.935 0-1.813.364-2.475 1.025A3.48 3.48 0 0 0 7 13.5H5c0-1.468.571-2.849 1.609-3.888A5.464 5.464 0 0 1 10.499 8v2z\"}}]})(props);\n};\nexport function BiSolidBone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.852 5.148a3.317 3.317 0 0 0-.96-2.183 3.333 3.333 0 1 0-4.713 4.714l-5.499 5.5a3.333 3.333 0 1 0-4.714 4.713c.606.606 1.39.918 2.183.96.042.793.354 1.576.96 2.183a3.333 3.333 0 1 0 4.713-4.714l5.499-5.499a3.333 3.333 0 1 0 4.714-4.713 3.313 3.313 0 0 0-2.183-.961z\"}}]})(props);\n};\nexport function BiSolidBong (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m19.293 8.293-2.069 2.069A7.017 7.017 0 0 0 15 8.681V4h1V2H8v2h1v4.681A7.01 7.01 0 0 0 5 15c0 3.859 3.141 7 7 7s7-3.141 7-7a6.958 6.958 0 0 0-.652-2.934l2.359-2.359-1.414-1.414zm-8.959 1.998.666-.235V4h2v6.056l.666.235A5.006 5.006 0 0 1 16.886 14H7.114a5.006 5.006 0 0 1 3.22-3.709z\"}}]})(props);\n};\nexport function BiSolidBookAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6.012 18H21V4c0-1.103-.897-2-2-2H6c-1.206 0-3 .799-3 3v14c0 2.201 1.794 3 3 3h15v-2H6.012C5.55 19.988 5 19.806 5 19s.55-.988 1.012-1zM8 9h3V6h2v3h3v2h-3v3h-2v-3H8V9z\"}}]})(props);\n};\nexport function BiSolidBookAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 5v14c0 2.201 1.794 3 3 3h15v-2H6.012C5.55 19.988 5 19.806 5 19s.55-.988 1.012-1H21V4c0-1.103-.897-2-2-2H6c-1.206 0-3 .799-3 3z\"}}]})(props);\n};\nexport function BiSolidBookBookmark (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 2H6c-1.206 0-3 .799-3 3v14c0 2.201 1.794 3 3 3h15v-2H6.012C5.55 19.988 5 19.806 5 19c0-.101.009-.191.024-.273.112-.576.584-.717.988-.727H21V4a2 2 0 0 0-2-2zm0 9-2-1-2 1V4h4v7z\"}}]})(props);\n};\nexport function BiSolidBookContent (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zm-1 4v2h-5V7h5zm-5 4h5v2h-5v-2zM4 19V5h7v14H4z\"}}]})(props);\n};\nexport function BiSolidBookHeart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6.012 18H21V4c0-1.103-.897-2-2-2H6c-1.206 0-3 .799-3 3v14c0 2.201 1.794 3 3 3h15v-2H6.012C5.55 19.988 5 19.806 5 19c0-.101.009-.191.024-.273.112-.576.584-.717.988-.727zM8.648 7.642a2.224 2.224 0 0 1 3.125 0l.224.219.223-.219a2.225 2.225 0 0 1 3.126 0 2.129 2.129 0 0 1 0 3.069L11.998 14l-3.349-3.289a2.128 2.128 0 0 1-.001-3.069z\"}}]})(props);\n};\nexport function BiSolidBookOpen (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 3h-7a2.98 2.98 0 0 0-2 .78A2.98 2.98 0 0 0 10 3H3a1 1 0 0 0-1 1v15a1 1 0 0 0 1 1h5.758a2.01 2.01 0 0 1 1.414.586l1.121 1.121c.009.009.021.012.03.021.086.08.182.15.294.196h.002a.996.996 0 0 0 .762 0h.002c.112-.046.208-.117.294-.196.009-.009.021-.012.03-.021l1.121-1.121A2.01 2.01 0 0 1 15.242 20H21a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zm-1 15h-4.758a4.03 4.03 0 0 0-2.242.689V6c0-.551.448-1 1-1h6v13z\"}}]})(props);\n};\nexport function BiSolidBookReader (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2 8v11.529S6.621 19.357 12 22c5.379-2.643 10-2.471 10-2.471V8s-5.454 0-10 2.471C7.454 8 2 8 2 8z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"5\",\"r\":\"3\"}}]})(props);\n};\nexport function BiSolidBook (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6.012 18H21V4a2 2 0 0 0-2-2H6c-1.206 0-3 .799-3 3v14c0 2.201 1.794 3 3 3h15v-2H6.012C5.55 19.988 5 19.805 5 19s.55-.988 1.012-1zM8 6h9v2H8V6z\"}}]})(props);\n};\nexport function BiSolidBookmarkAltMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.5 2h-12C4.57 2 3 3.57 3 5.5V22l7-3.5 7 3.5v-9h5V5.5C22 3.57 20.43 2 18.5 2zM13 11H7V9h6v2zm7 0h-3V5.5c0-.827.673-1.5 1.5-1.5s1.5.673 1.5 1.5V11z\"}}]})(props);\n};\nexport function BiSolidBookmarkAltPlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.5 2h-12C4.57 2 3 3.57 3 5.5V22l7-3.5 7 3.5v-9h5V5.5C22 3.57 20.43 2 18.5 2zM13 11h-2v2H9v-2H7V9h2V7h2v2h2v2zm7 0h-3V5.5c0-.827.673-1.5 1.5-1.5s1.5.673 1.5 1.5V11z\"}}]})(props);\n};\nexport function BiSolidBookmarkAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.5 2h-12C4.57 2 3 3.57 3 5.5V22l7-3.5 7 3.5v-9h5V5.5C22 3.57 20.43 2 18.5 2zm1.5 9h-3V5.5c0-.827.673-1.5 1.5-1.5s1.5.673 1.5 1.5V11z\"}}]})(props);\n};\nexport function BiSolidBookmarkHeart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 22V4c0-1.103-.897-2-2-2H7c-1.103 0-2 .897-2 2v18l7-4.666L19 22zM8.006 8.056c0-.568.224-1.083.585-1.456.361-.372.86-.603 1.412-.603 0 0 .996-.003 1.997 1.029 1.001-1.032 1.997-1.029 1.997-1.029.552 0 1.051.23 1.412.603s.585.888.585 1.456-.224 1.084-.585 1.456L12 13.203 8.591 9.512a2.083 2.083 0 0 1-.585-1.456z\"}}]})(props);\n};\nexport function BiSolidBookmarkMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 2H7a2 2 0 0 0-2 2v18l7-4.848L19 22V4a2 2 0 0 0-2-2zm-1 9H8V9h8v2z\"}}]})(props);\n};\nexport function BiSolidBookmarkPlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 2H7a2 2 0 0 0-2 2v18l7-4.848L19 22V4a2 2 0 0 0-2-2zm-1 9h-3v3h-2v-3H8V9h3V6h2v3h3v2z\"}}]})(props);\n};\nexport function BiSolidBookmarkStar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 11.222 14.667 13l-.89-3.111L16 8l-2.667-.333L12 5l-1.333 2.667L8 8l2.223 1.889L9.333 13z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 21.723V4a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v17.723l7-4.571 7 4.571zM8 8l2.667-.333L12 5l1.333 2.667L16 8l-2.223 1.889.89 3.111L12 11.222 9.333 13l.89-3.111L8 8z\"}}]})(props);\n};\nexport function BiSolidBookmark (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 10.132v-6c0-1.103-.897-2-2-2H7c-1.103 0-2 .897-2 2V22l7-4.666L19 22V10.132z\"}}]})(props);\n};\nexport function BiSolidBookmarks (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.999 23V7c0-1.103-.897-2-2-2h-8c-1.103 0-2 .897-2 2v16l6-3.601 6 3.601z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15.585 3h1.414c1.103 0 2 .897 2 2v10.443l2 2.489V3c0-1.103-.897-2-2-2h-8c-1.103 0-2 .897-2 2h6.586z\"}}]})(props);\n};\nexport function BiSolidBot (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 10.975V8a2 2 0 0 0-2-2h-6V4.688c.305-.274.5-.668.5-1.11a1.5 1.5 0 0 0-3 0c0 .442.195.836.5 1.11V6H5a2 2 0 0 0-2 2v2.998l-.072.005A.999.999 0 0 0 2 12v2a1 1 0 0 0 1 1v5a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-5a1 1 0 0 0 1-1v-1.938a1.004 1.004 0 0 0-.072-.455c-.202-.488-.635-.605-.928-.632zM7 12c0-1.104.672-2 1.5-2s1.5.896 1.5 2-.672 2-1.5 2S7 13.104 7 12zm8.998 6c-1.001-.003-7.997 0-7.998 0v-2s7.001-.002 8.002 0l-.004 2zm-.498-4c-.828 0-1.5-.896-1.5-2s.672-2 1.5-2 1.5.896 1.5 2-.672 2-1.5 2z\"}}]})(props);\n};\nexport function BiSolidBowlHot (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 10H3a1 1 0 0 0-1 1 10 10 0 0 0 5 8.66V21a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1v-1.34A10 10 0 0 0 22 11a1 1 0 0 0-1-1zM9 9V7.93a4.51 4.51 0 0 0-1.28-3.15A2.49 2.49 0 0 1 7 3V2H5v1a4.51 4.51 0 0 0 1.28 3.17A2.49 2.49 0 0 1 7 7.93V9zm4 0V7.93a4.51 4.51 0 0 0-1.28-3.15A2.49 2.49 0 0 1 11 3V2H9v1a4.51 4.51 0 0 0 1.28 3.15A2.49 2.49 0 0 1 11 7.93V9zm4 0V7.93a4.51 4.51 0 0 0-1.28-3.15A2.49 2.49 0 0 1 15 3V2h-2v1a4.51 4.51 0 0 0 1.28 3.15A2.49 2.49 0 0 1 15 7.93V9z\"}}]})(props);\n};\nexport function BiSolidBowlRice (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 10a3.58 3.58 0 0 0-1.8-3 3.66 3.66 0 0 0-3.63-3.13 3.86 3.86 0 0 0-1 .13 3.7 3.7 0 0 0-5.11 0 3.86 3.86 0 0 0-1-.13A3.66 3.66 0 0 0 4.81 7 3.58 3.58 0 0 0 3 10a1 1 0 0 0-1 1 10 10 0 0 0 5 8.66V21a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1v-1.34A10 10 0 0 0 22 11a1 1 0 0 0-1-1zM5 10a1.59 1.59 0 0 1 1.11-1.39l.83-.26-.16-.85a1.64 1.64 0 0 1 1.66-1.62 1.78 1.78 0 0 1 .83.2l.81.45.5-.77a1.71 1.71 0 0 1 2.84 0l.5.77.81-.45a1.78 1.78 0 0 1 .83-.2 1.65 1.65 0 0 1 1.67 1.6l-.16.85.82.28A1.59 1.59 0 0 1 19 10z\"}}]})(props);\n};\nexport function BiSolidBowlingBall (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zM6.5 12a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 6.5 12zM9 6.5a1.5 1.5 0 1 1 3.001.001A1.5 1.5 0 0 1 9 6.5zm2.5 6.5a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 11.5 13z\"}}]})(props);\n};\nexport function BiSolidBox (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2 3h20v4H2zm17 5H3v11a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V8h-2zm-3 6H8v-2h8v2z\"}}]})(props);\n};\nexport function BiSolidBrain (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3.299 17.596c.432 1.332 1.745 2.182 3.146 2.182H6.5A2.78 2.78 0 0 0 9.223 22c.457 0 .884-.115 1.262-.313a.992.992 0 0 0 .515-.882V3.027a.997.997 0 0 0-.785-.983 2.324 2.324 0 0 0-1.479.201c-.744.356-1.18 1.151-1.18 1.978v.055a2.778 2.778 0 0 0-2.744 4.433A3.327 3.327 0 0 0 2 12c0 1.178.611 2.211 1.533 2.812-.43.771-.571 1.746-.234 2.784zm15.889-8.885a2.778 2.778 0 0 0-2.744-4.433v-.055c0-.826-.437-1.622-1.181-1.978a2.32 2.32 0 0 0-1.478-.201.998.998 0 0 0-.785.983v17.777c0 .365.192.712.516.882.378.199.804.314 1.261.314a2.78 2.78 0 0 0 2.723-2.223h.056c1.4 0 2.714-.85 3.146-2.182.337-1.038.196-2.013-.234-2.784A3.35 3.35 0 0 0 22 12a3.327 3.327 0 0 0-2.812-3.289z\"}}]})(props);\n};\nexport function BiSolidBriefcaseAlt2 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 6h-3V4c0-1.103-.897-2-2-2H9c-1.103 0-2 .897-2 2v2H4c-1.103 0-2 .897-2 2v4h5v-2h2v2h6v-2h2v2h5V8c0-1.103-.897-2-2-2zM9 4h6v2H9V4zm8 11h-2v-2H9v2H7v-2H2v6c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2v-6h-5v2z\"}}]})(props);\n};\nexport function BiSolidBriefcaseAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 6h-3V4c0-1.103-.897-2-2-2H9c-1.103 0-2 .897-2 2v2H4c-1.103 0-2 .897-2 2v11c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V8c0-1.103-.897-2-2-2zM6 8h2v11H6V8zm12 11h-2V8h2v11zM15 4v2H9V4h6z\"}}]})(props);\n};\nexport function BiSolidBriefcase (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 6h-3V4c0-1.103-.897-2-2-2H9c-1.103 0-2 .897-2 2v2H4c-1.103 0-2 .897-2 2v3h20V8c0-1.103-.897-2-2-2zM9 4h6v2H9V4zm5 10h-4v-2H2v7c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2v-7h-8v2z\"}}]})(props);\n};\nexport function BiSolidBrightnessHalf (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.546 11.646 19 9.101V5.5a.5.5 0 0 0-.5-.5h-3.601l-2.546-2.546a.5.5 0 0 0-.707 0L9.101 5H5.5a.5.5 0 0 0-.5.5v3.601l-2.546 2.546a.5.5 0 0 0 0 .707L5 14.899V18.5a.5.5 0 0 0 .5.5h3.601l2.546 2.546a.5.5 0 0 0 .707 0L14.899 19H18.5a.5.5 0 0 0 .5-.5v-3.601l2.546-2.546a.5.5 0 0 0 0-.707zM12 8a4 4 0 0 1 0 8\"}}]})(props);\n};\nexport function BiSolidBrightness (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.546 11.646 19 9.101V5.5a.5.5 0 0 0-.5-.5h-3.601l-2.546-2.546a.5.5 0 0 0-.707 0L9.101 5H5.5a.5.5 0 0 0-.5.5v3.601l-2.546 2.546a.5.5 0 0 0 0 .707L5 14.899V18.5a.5.5 0 0 0 .5.5h3.601l2.546 2.546a.5.5 0 0 0 .707 0L14.899 19H18.5a.5.5 0 0 0 .5-.5v-3.601l2.546-2.546a.5.5 0 0 0 0-.707zM12 16a4 4 0 1 1 0-8 4 4 0 0 1 0 8z\"}}]})(props);\n};\nexport function BiSolidBrushAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 8.001h-2V8h-1V4.999a2.92 2.92 0 0 0-.874-2.108 2.943 2.943 0 0 0-2.39-.879C10.202 2.144 9 3.508 9 5.117V8H6c-1.103 0-2 .897-2 2v11a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V10.001c0-1.103-.897-2-2-2zM6 12v-2h5V5.117c0-.57.407-1.07 1.002-1.117.266 0 .512.103.712.307a.956.956 0 0 1 .286.692V10h.995l.005.001h4V12H6z\"}}]})(props);\n};\nexport function BiSolidBrush (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.207 11.278-2.035-2.035-1.415-1.415-5.035-5.035a.999.999 0 0 0-1.414 0L6.151 7.949 4.736 9.363a2.985 2.985 0 0 0-.878 2.122c0 .802.313 1.556.879 2.121l.707.707-2.122 2.122a2.925 2.925 0 0 0-.873 2.108 2.968 2.968 0 0 0 1.063 2.308 2.92 2.92 0 0 0 1.886.681c.834 0 1.654-.341 2.25-.937l2.039-2.039.707.706c1.133 1.133 3.107 1.134 4.242.001l.708-.707.569-.569.138-.138 5.156-5.157a.999.999 0 0 0 0-1.414zm-7.277 5.865-.708.706a1.021 1.021 0 0 1-1.414 0l-1.414-1.413a.999.999 0 0 0-1.414 0l-2.746 2.745a1.192 1.192 0 0 1-.836.352.914.914 0 0 1-.595-.208.981.981 0 0 1-.354-.782.955.955 0 0 1 .287-.692l2.829-2.829a.999.999 0 0 0 0-1.414l-1.414-1.415c-.189-.188-.293-.438-.293-.706s.104-.519.293-.708l.707-.707 3.536 3.536 3.536 3.535z\"}}]})(props);\n};\nexport function BiSolidBugAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m18 5.414 1.707-1.707-1.414-1.414-1.563 1.562C15.483 2.708 13.824 2 12 2s-3.483.708-4.73 1.855L5.707 2.293 4.293 3.707 6 5.414A6.937 6.937 0 0 0 5 9H3v2h2v2H3v2h2c0 3.86 3.141 7 7 7s7-3.14 7-7h2v-2h-2v-2h2V9h-2a6.937 6.937 0 0 0-1-3.586zM15 15H9v-2h6v2zm0-4H9V9h6v2z\"}}]})(props);\n};\nexport function BiSolidBug (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6.787 7h10.426c-.108-.158-.201-.331-.318-.481l2.813-2.812-1.414-1.414-2.846 2.846a6.575 6.575 0 0 0-.723-.454 5.778 5.778 0 0 0-5.45 0c-.25.132-.488.287-.722.453L5.707 2.293 4.293 3.707l2.813 2.812c-.118.151-.21.323-.319.481zM5.756 9H2v2h2.307c-.065.495-.107.997-.107 1.5 0 .507.042 1.013.107 1.511H2v2h2.753c.013.039.021.08.034.118.188.555.421 1.093.695 1.6.044.081.095.155.141.234l-2.33 2.33 1.414 1.414 2.11-2.111a7.477 7.477 0 0 0 2.068 1.619c.479.253.982.449 1.496.58.204.052.411.085.618.118V16h2v5.914a6.23 6.23 0 0 0 .618-.118 6.812 6.812 0 0 0 1.496-.58c.465-.246.914-.55 1.333-.904.258-.218.5-.462.734-.716l2.111 2.111 1.414-1.414-2.33-2.33c.047-.08.098-.155.142-.236.273-.505.507-1.043.694-1.599.013-.039.021-.079.034-.118H22v-2h-2.308c.065-.499.107-1.004.107-1.511 0-.503-.042-1.005-.106-1.5H22V9H5.756z\"}}]})(props);\n};\nexport function BiSolidBuildingHouse (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.991 2H9.01C7.899 2 7 2.899 7 4.01v5.637l-4.702 4.642A1 1 0 0 0 3 16v5a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1V4.009C21 2.899 20.102 2 18.991 2zm-8.069 13.111V20H5v-5.568l2.987-2.949 2.935 3.003v.625zM13 9h-2V7h2v2zm4 8h-2v-2h2v2zm0-4h-2v-2h2v2zm0-4h-2V7h2v2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7 15h2v2H7z\"}}]})(props);\n};\nexport function BiSolidBuilding (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 2H7a2 2 0 0 0-2 2v17a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4a2 2 0 0 0-2-2zm-6 14H8v-2h3v2zm0-4H8v-2h3v2zm0-4H8V6h3v2zm5 8h-3v-2h3v2zm0-4h-3v-2h3v2zm0-4h-3V6h3v2z\"}}]})(props);\n};\nexport function BiSolidBuildings (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 14.001h2v2H7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 2h-8a2 2 0 0 0-2 2v6H5c-1.103 0-2 .897-2 2v9a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1V4a2 2 0 0 0-2-2zM5 20v-8h6v8H5zm9-12h-2V6h2v2zm4 8h-2v-2h2v2zm0-4h-2v-2h2v2zm0-4h-2V6h2v2z\"}}]})(props);\n};\nexport function BiSolidBulb (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 20h6v2H9zm7.906-6.288C17.936 12.506 19 11.259 19 9c0-3.859-3.141-7-7-7S5 5.141 5 9c0 2.285 1.067 3.528 2.101 4.73.358.418.729.851 1.084 1.349.144.206.38.996.591 1.921h-.792v2h8.032v-2h-.79c.213-.927.45-1.719.593-1.925.352-.503.726-.94 1.087-1.363z\"}}]})(props);\n};\nexport function BiSolidBullseye (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 17c-3.859 0-7-3.14-7-7s3.141-7 7-7 7 3.14 7 7-3.141 7-7 7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 7c-2.757 0-5 2.243-5 5s2.243 5 5 5 5-2.243 5-5-2.243-5-5-5zm0 7c-1.103 0-2-.897-2-2s.897-2 2-2 2 .897 2 2-.897 2-2 2z\"}}]})(props);\n};\nexport function BiSolidBuoy (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm7.736 8h-3.16A5.02 5.02 0 0 0 14 7.424V4.263A8.015 8.015 0 0 1 19.736 10zM12 15c-1.654 0-3-1.346-3-3s1.346-3 3-3 3 1.346 3 3-1.346 3-3 3zM10 4.263v3.161A5.02 5.02 0 0 0 7.424 10h-3.16A8.015 8.015 0 0 1 10 4.263zM4.264 14h3.16A5.02 5.02 0 0 0 10 16.576v3.161A8.015 8.015 0 0 1 4.264 14zM14 19.737v-3.161A5.02 5.02 0 0 0 16.576 14h3.16A8.015 8.015 0 0 1 14 19.737z\"}}]})(props);\n};\nexport function BiSolidBusSchool (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 11.597V11h1V8h-1V6c0-2.206-1.794-4-4-4H7C4.794 2 3 3.794 3 6v2H2v3h1v.597a3.97 3.97 0 0 0-.999 2.648l.004 3.758c.001.733.404 1.369.995 1.716V21a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1h12v1a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1.274a2.02 2.02 0 0 0 .421-.313c.377-.378.585-.881.584-1.415l-.004-3.759A3.965 3.965 0 0 0 21 11.597zM8 4h8v2H8V4zM6.5 17a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 6.5 17zm4.5-5H5V8h6v4zm6.5 5a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 17.5 17zm1.5-5h-6V8h6v4z\"}}]})(props);\n};\nexport function BiSolidBus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 6.021c.003-.146-.007-1.465-1.3-2.735C18.427 2.036 17.143 2 17 2H6.996c-.239 0-1.493.063-2.708 1.302C3.036 4.578 3 5.859 3 6v3H2v3h1v6c0 .734.406 1.373 1 1.721V21a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1h10v1a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1.277A1.99 1.99 0 0 0 21 18v-6h1V9h-1V6.021zM9 4h6v2H9V4zM6.5 18a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 6.5 18zm4.5-5H5V8h6v5zm6.5 5a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 17.5 18zm1.5-5h-6V8h6v5z\"}}]})(props);\n};\nexport function BiSolidBusiness (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 7h-6a1 1 0 0 0-1 1v3h-2V4a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1zM8 6h2v2H8V6zM6 16H4v-2h2v2zm0-4H4v-2h2v2zm0-4H4V6h2v2zm4 8H8v-2h2v2zm0-4H8v-2h2v2zm9 4h-2v-2h2v2zm0-4h-2v-2h2v2z\"}}]})(props);\n};\nexport function BiSolidCabinet (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 4c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v7h18V4zm-5 4H8V5h2v1h4V5h2v3zM5 22h14c1.103 0 2-.897 2-2v-7H3v7c0 1.103.897 2 2 2zm3-6h2v1h4v-1h2v3H8v-3z\"}}]})(props);\n};\nexport function BiSolidCableCar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m2 9.76 9-2.45V10H7a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-8a2 2 0 0 0-2-2h-4V6.76l9-2.45V2.24L2 7.69zM11 12v3H7v-3zm6 0v3h-4v-3z\"}}]})(props);\n};\nexport function BiSolidCake (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.997 15c-1.601 0-2.446-.676-3.125-1.219-.567-.453-.977-.781-1.878-.781-.898 0-1.287.311-1.874.78-.679.544-1.524 1.22-3.125 1.22s-2.444-.676-3.123-1.22C3.285 13.311 2.897 13 2 13v5c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2v-5c-.899 0-1.288.311-1.876.781-.68.543-1.525 1.219-3.127 1.219zM19 5h-6V2h-2v3H5C3.346 5 2 6.346 2 8v3c1.6 0 2.443.676 3.122 1.22.587.469.975.78 1.873.78.899 0 1.287-.311 1.875-.781.679-.543 1.524-1.219 3.124-1.219 1.602 0 2.447.676 3.127 1.219.588.47.977.781 1.876.781.9 0 1.311-.328 1.878-.781C19.554 11.676 20.399 11 22 11V8c0-1.654-1.346-3-3-3z\"}}]})(props);\n};\nexport function BiSolidCalculator (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 22h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2zm3-3H7v-2h2v2zm0-4H7v-2h2v2zm0-4H7V9h2v2zm4 8h-2v-2h2v2zm0-4h-2v-2h2v2zm0-4h-2V9h2v2zm4 8h-2v-6h2v6zm0-8h-2V9h2v2zM6 4h12v3H6V4z\"}}]})(props);\n};\nexport function BiSolidCalendarAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 22h14c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2h-2V2h-2v2H9V2H7v2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2zM5 7h14v2H5V7z\"}}]})(props);\n};\nexport function BiSolidCalendarCheck (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 22h14c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2h-2V2h-2v2H9V2H7v2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2zm6-3.586-3.707-3.707 1.414-1.414L11 15.586l4.293-4.293 1.414 1.414L11 18.414zM5 7h14v2H5V7z\"}}]})(props);\n};\nexport function BiSolidCalendarEdit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 22h14c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2h-2V2h-2v2H9V2H7v2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2zm4.799-2.013H8v-1.799l4.977-4.97 1.799 1.799-4.977 4.97zm5.824-5.817-1.799-1.799L15.196 11l1.799 1.799-1.372 1.371zM5 7h14v2H5V7z\"}}]})(props);\n};\nexport function BiSolidCalendarEvent (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 4h-2V2h-2v2H9V2H7v2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zm-1 15h-6v-6h6v6zm1-10H5V7h14v2z\"}}]})(props);\n};\nexport function BiSolidCalendarExclamation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 4h-2V2h-2v2H9V2H7v2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zm-6 16h-2v-2h2v2zm0-4h-2v-5h2v5zm6-7H5V7h14v2z\"}}]})(props);\n};\nexport function BiSolidCalendarHeart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 4h-2V2h-2v2H9V2H7v2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zm-3.648 11.711L12.002 19l-3.349-3.289a2.129 2.129 0 0 1 0-3.069 2.224 2.224 0 0 1 3.125 0l.224.219.224-.219a2.225 2.225 0 0 1 3.126 0 2.129 2.129 0 0 1 0 3.069zM19 9H5V7h14v2z\"}}]})(props);\n};\nexport function BiSolidCalendarMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 22h14c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2h-2V2h-2v2H9V2H7v2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2zm11-6H8v-2h8v2zM5 7h14v2H5V7z\"}}]})(props);\n};\nexport function BiSolidCalendarPlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 22h14c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2h-2V2h-2v2H9V2H7v2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2zm11-6h-3v3h-2v-3H8v-2h3v-3h2v3h3v2zM5 7h14v2H5V7z\"}}]})(props);\n};\nexport function BiSolidCalendarStar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 4h-2V2h-2v2H9V2H7v2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zm-4.588 15-2.449-1.288L9.514 19l.468-2.728L8 14.342l2.738-.398 1.225-2.48 1.225 2.48 2.738.398-1.981 1.931.467 2.727zM19 9H5V7h14v2z\"}}]})(props);\n};\nexport function BiSolidCalendarWeek (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 4h-2V2h-2v2H9V2H7v2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zm-2 8v2H7v-3h10v1zm2-3H5V7h14v2z\"}}]})(props);\n};\nexport function BiSolidCalendarX (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 22h14c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2h-2V2h-2v2H9V2H7v2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2zm10.707-4.707-1.414 1.414L12 16.414l-2.293 2.293-1.414-1.414L10.586 15l-2.293-2.293 1.414-1.414L12 13.586l2.293-2.293 1.414 1.414L13.414 15l2.293 2.293zM5 7h14v2H5V7z\"}}]})(props);\n};\nexport function BiSolidCalendar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 20V6c0-1.103-.897-2-2-2h-2V2h-2v2H9V2H7v2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2zM9 18H7v-2h2v2zm0-4H7v-2h2v2zm4 4h-2v-2h2v2zm0-4h-2v-2h2v2zm4 4h-2v-2h2v2zm0-4h-2v-2h2v2zm2-5H5V7h14v2z\"}}]})(props);\n};\nexport function BiSolidCameraHome (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"10\",\"r\":\"3\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M18.125 2H5.875A1.877 1.877 0 0 0 4 3.875v12.25C4 17.159 4.841 18 5.875 18H11v2H7v2h10v-2h-4v-2h5.125A1.877 1.877 0 0 0 20 16.125V3.875A1.877 1.877 0 0 0 18.125 2zM12 15c-2.757 0-5-2.243-5-5s2.243-5 5-5 5 2.243 5 5-2.243 5-5 5z\"}}]})(props);\n};\nexport function BiSolidCameraMovie (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 11c0-.959-.68-1.761-1.581-1.954C16.779 8.445 17 7.75 17 7c0-2.206-1.794-4-4-4-1.516 0-2.822.857-3.5 2.104C8.822 3.857 7.516 3 6 3 3.794 3 2 4.794 2 7c0 .902.312 1.726.817 2.396A1.993 1.993 0 0 0 2 11v8c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2v-2.637l4 2v-7l-4 2V11zm-5-6c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2zM6 5c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2z\"}}]})(props);\n};\nexport function BiSolidCameraOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 20h11.879l-3.083-3.083A4.774 4.774 0 0 1 12 17c-2.71 0-5-2.29-5-5 0-.271.039-.535.083-.796L2.144 6.265C2.054 6.493 2 6.74 2 7v11c0 1.103.897 2 2 2zM20 5h-2.586l-2.707-2.707A.996.996 0 0 0 14 2h-4a.996.996 0 0 0-.707.293L6.586 5h-.172L3.707 2.293 2.293 3.707l18 18 1.414-1.414-.626-.626A1.98 1.98 0 0 0 22 18V7c0-1.103-.897-2-2-2zm-5.312 8.274A2.86 2.86 0 0 0 15 12c0-1.626-1.374-3-3-3-.456 0-.884.12-1.274.312l-1.46-1.46A4.88 4.88 0 0 1 12 7c2.71 0 5 2.29 5 5a4.88 4.88 0 0 1-.852 2.734l-1.46-1.46z\"}}]})(props);\n};\nexport function BiSolidCameraPlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 5h-2.586l-2.707-2.707A.996.996 0 0 0 14 2h-4a.996.996 0 0 0-.707.293L6.586 5H4c-1.103 0-2 .897-2 2v11c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V7c0-1.103-.897-2-2-2zm-8 12c-2.71 0-5-2.29-5-5 0-2.711 2.29-5 5-5s5 2.289 5 5c0 2.71-2.29 5-5 5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z\"}}]})(props);\n};\nexport function BiSolidCamera (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 9c-1.626 0-3 1.374-3 3s1.374 3 3 3 3-1.374 3-3-1.374-3-3-3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 5h-2.586l-2.707-2.707A.996.996 0 0 0 14 2h-4a.996.996 0 0 0-.707.293L6.586 5H4c-1.103 0-2 .897-2 2v11c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V7c0-1.103-.897-2-2-2zm-8 12c-2.71 0-5-2.29-5-5s2.29-5 5-5 5 2.29 5 5-2.29 5-5 5z\"}}]})(props);\n};\nexport function BiSolidCapsule (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8.434 20.566c1.335 0 2.591-.52 3.535-1.464l7.134-7.133a5.008 5.008 0 0 0-.001-7.072 4.969 4.969 0 0 0-3.536-1.463c-1.335 0-2.59.52-3.534 1.464l-7.134 7.133a5.01 5.01 0 0 0-.001 7.072 4.971 4.971 0 0 0 3.537 1.463zm5.011-14.254a2.979 2.979 0 0 1 2.12-.878c.802 0 1.556.312 2.122.878a3.004 3.004 0 0 1 .001 4.243l-2.893 2.892-4.242-4.244 2.892-2.891z\"}}]})(props);\n};\nexport function BiSolidCaptions (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zm-9 6H8v4h3v2H8c-1.103 0-2-.897-2-2v-4c0-1.103.897-2 2-2h3v2zm7 0h-3v4h3v2h-3c-1.103 0-2-.897-2-2v-4c0-1.103.897-2 2-2h3v2z\"}}]})(props);\n};\nexport function BiSolidCarBattery (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 6H4c-1.103 0-2 .897-2 2v10c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V8c0-1.103-.897-2-2-2zM9 14H4v-2h5v2zm11 0h-2v2h-2v-2h-2v-2h2v-2h2v2h2v2zM4 3h4v2H4zm12 0h4v2h-4z\"}}]})(props);\n};\nexport function BiSolidCarCrash (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2.634 17.918a1.765 1.765 0 0 0 1.201 1.291l.18.791H4v2h16v-2H6.683a.84.84 0 0 0-.007-.278l-.196-.863 10.357-2.356.196.863a.886.886 0 0 0 1.06.667l.863-.197a.885.885 0 0 0 .667-1.06l-.251-1.103c.446-.416.67-1.046.525-1.683l-.59-2.59a1.76 1.76 0 0 0-1.262-1.307l-2.049-3.378a2.774 2.774 0 0 0-2.982-1.263l-7.868 1.79a2.769 2.769 0 0 0-2.144 2.43l-.387 3.932a1.76 1.76 0 0 0-.57 1.724l.589 2.59zm3.02-.688a1.327 1.327 0 1 1-.59-2.589 1.327 1.327 0 0 1 .59 2.589zm11.222-2.552a1.328 1.328 0 1 1-.59-2.587 1.328 1.328 0 0 1 .59 2.587zM5.589 9.192l7.869-1.791a.773.773 0 0 1 .83.351l1.585 2.613-.566.129-10.046 2.287-.568.129.299-3.042a.772.772 0 0 1 .597-.676zM18.405 4 17 2l-.5 3L19 9l3 1-2-2.539 2-.933-2-.933L22 2z\"}}]})(props);\n};\nexport function BiSolidCarGarage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 19.723V21a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1h12v1a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1.277A1.99 1.99 0 0 0 22 18v-3c0-.831-.507-1.542-1.228-1.845l-1.368-4.104A2.995 2.995 0 0 0 16.559 7H7.441a2.995 2.995 0 0 0-2.845 2.051l-1.368 4.104A2.001 2.001 0 0 0 2 15v3c0 .738.404 1.376 1 1.723zM5.5 18a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 5.5 18zm13 0a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 18.5 18zM7.441 9h9.117a1 1 0 0 1 .949.684L18.613 13H5.387l1.105-3.316c.137-.409.519-.684.949-.684z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M22 7.388V5.279l-9.684-3.228a.996.996 0 0 0-.658.009L2 5.572V7.7l10.015-3.642L22 7.388z\"}}]})(props);\n};\nexport function BiSolidCarMechanic (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m20.772 13.155-1.368-4.104A2.995 2.995 0 0 0 16.559 7H7.441a2.995 2.995 0 0 0-2.845 2.051l-1.368 4.104A2.001 2.001 0 0 0 2 15v3c0 .738.404 1.376 1 1.723V21a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1h12v1a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1.277A1.99 1.99 0 0 0 22 18v-3c0-.831-.507-1.542-1.228-1.845zM7.441 9h9.117a1 1 0 0 1 .949.684L18.613 13H5.387l1.105-3.316c.137-.409.519-.684.949-.684zM5.5 18a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 5.5 18zm13 0a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 18.5 18zM5.277 5c.347.595.985 1 1.723 1s1.376-.405 1.723-1h6.555c.346.595.984 1 1.722 1s1.376-.405 1.723-1H17V3h1.723c-.347-.595-.985-1-1.723-1s-1.376.405-1.723 1H8.723C8.376 2.405 7.738 2 7 2s-1.376.405-1.723 1H7v2H5.277z\"}}]})(props);\n};\nexport function BiSolidCarWash (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m20.772 13.155-1.368-4.104A2.995 2.995 0 0 0 16.559 7H7.441a2.995 2.995 0 0 0-2.845 2.051l-1.368 4.104A2.001 2.001 0 0 0 2 15v3c0 .738.404 1.376 1 1.723V21a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1h12v1a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1.277A1.99 1.99 0 0 0 22 18v-3c0-.831-.507-1.542-1.228-1.845zM7.441 9h9.117a1 1 0 0 1 .949.684L18.613 13H5.387l1.105-3.316c.137-.409.519-.684.949-.684zM5.5 18a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 5.5 18zm13 0a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 18.5 18zM9 4.378c.005-1.088-1.037-2.051-1.387-2.344a.176.176 0 0 0-.228 0C7.033 2.325 5.995 3.271 6 4.377 6 5.272 6.673 6 7.5 6S9 5.272 9 4.378zm4.5 0c.005-1.088-1.037-2.052-1.387-2.344a.176.176 0 0 0-.228 0c-.353.291-1.391 1.238-1.386 2.344C10.5 5.272 11.173 6 12 6s1.5-.728 1.5-1.622zm4.5 0c.005-1.088-1.037-2.052-1.387-2.344a.176.176 0 0 0-.228 0c-.352.291-1.39 1.237-1.385 2.343C15 5.272 15.673 6 16.5 6S18 5.272 18 4.378z\"}}]})(props);\n};\nexport function BiSolidCar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m20.772 10.155-1.368-4.104A2.995 2.995 0 0 0 16.559 4H7.441a2.995 2.995 0 0 0-2.845 2.051l-1.368 4.104A2 2 0 0 0 2 12v5c0 .738.404 1.376 1 1.723V21a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-2h12v2a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-2.277A1.99 1.99 0 0 0 22 17v-5a2 2 0 0 0-1.228-1.845zM7.441 6h9.117c.431 0 .813.274.949.684L18.613 10H5.387l1.105-3.316A1 1 0 0 1 7.441 6zM5.5 16a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 5.5 16zm13 0a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 18.5 16z\"}}]})(props);\n};\nexport function BiSolidCard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 17c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2H6c-1.103 0-2 .897-2 2v10c0 1.103.897 2 2 2h12zM4 19h16v2H4z\"}}]})(props);\n};\nexport function BiSolidCaretDownCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10c5.515 0 10-4.486 10-10S17.515 2 12 2zm0 14-5-6h10l-5 6z\"}}]})(props);\n};\nexport function BiSolidCaretDownSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 21h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2zm12-11-5 6-5-6h10z\"}}]})(props);\n};\nexport function BiSolidCaretLeftCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm2 15-6-5 6-5v10z\"}}]})(props);\n};\nexport function BiSolidCaretLeftSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 21h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2zm9-14v10l-6-5 6-5z\"}}]})(props);\n};\nexport function BiSolidCaretRightCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 22c5.514 0 10-4.486 10-10S17.514 2 12 2 2 6.486 2 12s4.486 10 10 10zM10 7l6 5-6 5V7z\"}}]})(props);\n};\nexport function BiSolidCaretRightSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 21h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2zm5-14 6 5-6 5V7z\"}}]})(props);\n};\nexport function BiSolidCaretUpCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.485 2 2 6.486 2 12s4.485 10 10 10c5.514 0 10-4.486 10-10S17.514 2 12 2zM7 14l5-6 5 6H7z\"}}]})(props);\n};\nexport function BiSolidCaretUpSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 21h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2zm7-13 5 6H7l5-6z\"}}]})(props);\n};\nexport function BiSolidCarousel (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 3H8c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h8c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM2 7v10c0 1.103.897 2 2 2V5c-1.103 0-2 .897-2 2zm18-2v14c1.103 0 2-.897 2-2V7c0-1.103-.897-2-2-2z\"}}]})(props);\n};\nexport function BiSolidCartAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"10.5\",\"cy\":\"19.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"17.5\",\"cy\":\"19.5\",\"r\":\"1.5\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M21 7H7.334L6.18 4.23A1.995 1.995 0 0 0 4.333 3H2v2h2.334l4.743 11.385c.155.372.52.615.923.615h8c.417 0 .79-.259.937-.648l3-8A1.003 1.003 0 0 0 21 7zm-4 6h-2v2h-2v-2h-2v-2h2V9h2v2h2v2z\"}}]})(props);\n};\nexport function BiSolidCartAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 4H2v2h2.3l3.521 9.683A2.004 2.004 0 0 0 9.7 17H18v-2H9.7l-.728-2H18c.4 0 .762-.238.919-.606l3-7A.998.998 0 0 0 21 4z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"10.5\",\"cy\":\"19.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"16.5\",\"cy\":\"19.5\",\"r\":\"1.5\"}}]})(props);\n};\nexport function BiSolidCartDownload (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"10.5\",\"cy\":\"19.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"17.5\",\"cy\":\"19.5\",\"r\":\"1.5\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M21 7H7.334L6.18 4.23A1.995 1.995 0 0 0 4.333 3H2v2h2.334l4.743 11.385c.155.372.52.615.923.615h8c.417 0 .79-.259.937-.648l3-8A1.003 1.003 0 0 0 21 7zm-7 8-3-3h2V9h2v3h2l-3 3z\"}}]})(props);\n};\nexport function BiSolidCart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.822 7.431A1 1 0 0 0 21 7H7.333L6.179 4.23A1.994 1.994 0 0 0 4.333 3H2v2h2.333l4.744 11.385A1 1 0 0 0 10 17h8c.417 0 .79-.259.937-.648l3-8a1 1 0 0 0-.115-.921z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"10.5\",\"cy\":\"19.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"17.5\",\"cy\":\"19.5\",\"r\":\"1.5\"}}]})(props);\n};\nexport function BiSolidCastle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 11h-2V6h1V2h-2v2h-1V2h-2v2h-1V2h-2v2h-1V2H8v2H7V2H5v4h1v5H4V9H2v12h7v-5a3 3 0 0 1 6 0v5h7V9h-2zm-10-1H8V7h2zm6 0h-2V7h2z\"}}]})(props);\n};\nexport function BiSolidCat (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 14a5 5 0 0 0 2.71-.81L20 13a3.16 3.16 0 0 0 .45-.37l.21-.2a4.48 4.48 0 0 0 .48-.58l.06-.08a4.28 4.28 0 0 0 .41-.76 1.57 1.57 0 0 0 .09-.23 4.21 4.21 0 0 0 .2-.63l.06-.25A5.5 5.5 0 0 0 22 9V2l-3 3h-4l-3-3v7a5 5 0 0 0 5 5zm2-7a1 1 0 1 1-1 1 1 1 0 0 1 1-1zm-4 0a1 1 0 1 1-1 1 1 1 0 0 1 1-1z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 22v-5H8v5H5V11.9a3.49 3.49 0 0 1-2.48-1.64A3.59 3.59 0 0 1 2 8.5 3.65 3.65 0 0 1 6 5a1.89 1.89 0 0 0 2-2 1 1 0 0 1 1-1 1 1 0 0 1 1 1 3.89 3.89 0 0 1-4 4C4.19 7 4 8.16 4 8.51S4.18 10 6 10h5.09A6 6 0 0 0 19 14.65V22h-3v-5h-2v5z\"}}]})(props);\n};\nexport function BiSolidCategoryAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 3H4a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zm10 10h-6a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1zM17 3c-2.206 0-4 1.794-4 4s1.794 4 4 4 4-1.794 4-4-1.794-4-4-4zM7 13c-2.206 0-4 1.794-4 4s1.794 4 4 4 4-1.794 4-4-1.794-4-4-4z\"}}]})(props);\n};\nexport function BiSolidCategory (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 11h6a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1zm10 0h6a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1h-6a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1zM4 21h6a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1zm13 0c2.206 0 4-1.794 4-4s-1.794-4-4-4-4 1.794-4 4 1.794 4 4 4z\"}}]})(props);\n};\nexport function BiSolidCctv (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.618 7.462 6.403 2.085a1.007 1.007 0 0 0-.77-.016 1.002 1.002 0 0 0-.552.537l-3 7a1 1 0 0 0 .525 1.313L9.563 13.9 8.323 17H4v-3H2v8h2v-3h4.323c.823 0 1.552-.494 1.856-1.258l1.222-3.054 3.419 1.465a1 1 0 0 0 1.311-.518l3-6.857a1 1 0 0 0-.513-1.316zm1.312 8.91-1.858-.742 1.998-5 1.858.741z\"}}]})(props);\n};\nexport function BiSolidCertification (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2.047 14.667a.992.992 0 0 0 .466.607l1.909 1.104v2.199a1 1 0 0 0 1 1h2.199l1.104 1.91a1.002 1.002 0 0 0 1.366.366L12 20.75l1.91 1.104a1.002 1.002 0 0 0 1.366-.366l1.103-1.909h2.199a1 1 0 0 0 1-1V16.38l1.909-1.104a.999.999 0 0 0 .366-1.366L20.75 12l1.104-1.909a1 1 0 0 0-.366-1.366l-1.909-1.104V5.422a1 1 0 0 0-1-1H16.38l-1.103-1.909a1.004 1.004 0 0 0-.607-.466.994.994 0 0 0-.759.1L12 3.25l-1.909-1.104a.998.998 0 0 0-1.366.365l-1.104 1.91H5.422a1 1 0 0 0-1 1V7.62L2.513 8.725a1.001 1.001 0 0 0-.365 1.366L3.251 12l-1.104 1.909a1.003 1.003 0 0 0-.1.758z\"}}]})(props);\n};\nexport function BiSolidChalkboard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4c-1.103 0-2 .897-2 2v10c0 1.103.897 2 2 2h4l-1.8 2.4 1.6 1.2 2.7-3.6h3l2.7 3.6 1.6-1.2L16 18h4c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zM5 13h4v2H5v-2z\"}}]})(props);\n};\nexport function BiSolidChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 21c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14zM9.553 9.658l4 2 1.553-3.105 1.789.895-2.447 4.895-4-2-1.553 3.105-1.789-.895 2.447-4.895z\"}}]})(props);\n};\nexport function BiSolidChat (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 18h2v4.081L11.101 18H16c1.103 0 2-.897 2-2V8c0-1.103-.897-2-2-2H4c-1.103 0-2 .897-2 2v8c0 1.103.897 2 2 2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H8c-1.103 0-2 .897-2 2h12c1.103 0 2 .897 2 2v8c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2z\"}}]})(props);\n};\nexport function BiSolidCheckCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm-1.999 14.413-3.713-3.705L7.7 11.292l2.299 2.295 5.294-5.294 1.414 1.414-6.706 6.706z\"}}]})(props);\n};\nexport function BiSolidCheckShield (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.488 21.754c.294.157.663.156.957-.001 8.012-4.304 8.581-12.713 8.574-15.104a.988.988 0 0 0-.596-.903l-8.05-3.566a1.005 1.005 0 0 0-.813.001L3.566 5.747a.99.99 0 0 0-.592.892c-.034 2.379.445 10.806 8.514 15.115zM8.674 10.293l2.293 2.293 4.293-4.293 1.414 1.414-5.707 5.707-3.707-3.707 1.414-1.414z\"}}]})(props);\n};\nexport function BiSolidCheckSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zm-7.933 13.481-3.774-3.774 1.414-1.414 2.226 2.226 4.299-5.159 1.537 1.28-5.702 6.841z\"}}]})(props);\n};\nexport function BiSolidCheckboxChecked (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 5a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2H7zm4 10.414-2.707-2.707 1.414-1.414L11 12.586l3.793-3.793 1.414 1.414L11 15.414z\"}}]})(props);\n};\nexport function BiSolidCheckboxMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 5H7a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2zm-1 8H8v-2h8z\"}}]})(props);\n};\nexport function BiSolidCheckbox (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 19h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2z\"}}]})(props);\n};\nexport function BiSolidCheese (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.16 2a1 1 0 0 0-.66.13l-12 7a.64.64 0 0 0-.13.1l-.1.08a1.17 1.17 0 0 0-.17.26.84.84 0 0 0-.1.43v10a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V10a8.08 8.08 0 0 0-6.84-8zm0 2.05A6.07 6.07 0 0 1 19.93 9H6.7zM6.5 18A1.5 1.5 0 1 1 8 16.5 1.5 1.5 0 0 1 6.5 18zm5-3a1.5 1.5 0 1 1 1.5-1.5 1.5 1.5 0 0 1-1.5 1.5zm5.5 3a2 2 0 1 1 2-2 2 2 0 0 1-2 2z\"}}]})(props);\n};\nexport function BiSolidChess (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 2H3a1 1 0 0 0-1 1v18a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1zm-1 6h-4v4h4v4h-4v4h-4v-4H8v4H4v-4h4v-4H4V8h4V4h4v4h4V4h4v4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M8 8h4v4H8zm4 4h4v4h-4z\"}}]})(props);\n};\nexport function BiSolidChevronDownCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 14.414-5.707-5.707 1.414-1.414L12 13.586l4.293-4.293 1.414 1.414L12 16.414z\"}}]})(props);\n};\nexport function BiSolidChevronDownSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 21h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2zM7.707 9.293 12 13.586l4.293-4.293 1.414 1.414L12 16.414l-5.707-5.707 1.414-1.414z\"}}]})(props);\n};\nexport function BiSolidChevronDown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.939 7.939 12 12.879l-4.939-4.94-2.122 2.122L12 17.121l7.061-7.06z\"}}]})(props);\n};\nexport function BiSolidChevronLeftCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm2.707 14.293-1.414 1.414L7.586 12l5.707-5.707 1.414 1.414L10.414 12l4.293 4.293z\"}}]})(props);\n};\nexport function BiSolidChevronLeftSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 3c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2H5zm9.707 13.293-1.414 1.414L7.586 12l5.707-5.707 1.414 1.414L10.414 12l4.293 4.293z\"}}]})(props);\n};\nexport function BiSolidChevronLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13.939 4.939 6.879 12l7.06 7.061 2.122-2.122L11.121 12l4.94-4.939z\"}}]})(props);\n};\nexport function BiSolidChevronRightCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm-1.293 15.707-1.414-1.414L13.586 12 9.293 7.707l1.414-1.414L16.414 12l-5.707 5.707z\"}}]})(props);\n};\nexport function BiSolidChevronRightSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 5v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2zm6.293 2.707 1.414-1.414L16.414 12l-5.707 5.707-1.414-1.414L13.586 12 9.293 7.707z\"}}]})(props);\n};\nexport function BiSolidChevronRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10.061 19.061 17.121 12l-7.06-7.061-2.122 2.122L12.879 12l-4.94 4.939z\"}}]})(props);\n};\nexport function BiSolidChevronUpCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm4.293 12.707L12 10.414l-4.293 4.293-1.414-1.414L12 7.586l5.707 5.707-1.414 1.414z\"}}]})(props);\n};\nexport function BiSolidChevronUpSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 21h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2zm7-13.414 5.707 5.707-1.414 1.414L12 10.414l-4.293 4.293-1.414-1.414L12 7.586z\"}}]})(props);\n};\nexport function BiSolidChevronUp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m12 6.879-7.061 7.06 2.122 2.122L12 11.121l4.939 4.94 2.122-2.122z\"}}]})(props);\n};\nexport function BiSolidChevronsDown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.939 10.939 12 15.879l-4.939-4.94-2.122 2.122L12 20.121l7.061-7.06z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M16.939 3.939 12 8.879l-4.939-4.94-2.122 2.122L12 13.121l7.061-7.06z\"}}]})(props);\n};\nexport function BiSolidChevronsLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m8.121 12 4.94-4.939-2.122-2.122L3.879 12l7.06 7.061 2.122-2.122z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M17.939 4.939 10.879 12l7.06 7.061 2.122-2.122L15.121 12l4.94-4.939z\"}}]})(props);\n};\nexport function BiSolidChevronsRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m13.061 4.939-2.122 2.122L15.879 12l-4.94 4.939 2.122 2.122L20.121 12z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M6.061 19.061 13.121 12l-7.06-7.061-2.122 2.122L8.879 12l-4.94 4.939z\"}}]})(props);\n};\nexport function BiSolidChevronsUp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m12 3.879-7.061 7.06 2.122 2.122L12 8.121l4.939 4.94 2.122-2.122z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m4.939 17.939 2.122 2.122L12 15.121l4.939 4.94 2.122-2.122L12 10.879z\"}}]})(props);\n};\nexport function BiSolidChip (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 7a2 2 0 0 0-2-2h-1V2h-2v3h-4V2H8v3H7a2 2 0 0 0-2 2v1H2v2h3v4H2v2h3v1a2 2 0 0 0 2 2h1v3h2v-3h4v3h2v-3h1a2 2 0 0 0 2-2v-1h3v-2h-3v-4h3V8h-3V7zm-4 8H9V9h6v6z\"}}]})(props);\n};\nexport function BiSolidChurch (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 22v-4a2 2 0 0 1 4 0v4h4V12a1 1 0 0 0-.485-.857L13 8.434V6h2V4h-2V2h-2v2H9v2h2v2.434l-4.515 2.709A1 1 0 0 0 6 12v10h4zm-7 0h2v-8.118l-2.447 1.224A.998.998 0 0 0 2 16v5a1 1 0 0 0 1 1zm18.447-6.895L19 13.882V22h2a1 1 0 0 0 1-1v-5c0-.379-.214-.725-.553-.895z\"}}]})(props);\n};\nexport function BiSolidCircleHalf (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2h-1v20h1a10 10 0 0 0 0-20z\"}}]})(props);\n};\nexport function BiSolidCircleQuarter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2h-1v11h11v-1A10 10 0 0 0 12 2z\"}}]})(props);\n};\nexport function BiSolidCircleThreeQuarter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2h-1v9H2v1a10 10 0 0 0 17.07 7.07A10 10 0 0 0 12 2z\"}}]})(props);\n};\nexport function BiSolidCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2z\"}}]})(props);\n};\nexport function BiSolidCity (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 6h-4V3a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7H3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V7a1 1 0 0 0-1-1zM6 18H4v-2h2v2zm0-4H4v-2h2v2zm5 4H9v-2h2v2zm0-4H9v-2h2v2zm0-4H9V8h2v2zm0-4H9V4h2v2zm4 12h-2v-2h2v2zm0-4h-2v-2h2v2zm0-4h-2V8h2v2zm0-4h-2V4h2v2zm5 12h-2v-2h2v2zm0-4h-2v-2h2v2zm0-4h-2V8h2v2z\"}}]})(props);\n};\nexport function BiSolidClinic (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.743 12.331-9-10c-.379-.422-1.107-.422-1.486 0l-9 10a.998.998 0 0 0-.17 1.076c.16.361.518.593.913.593h2v7a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-7h2a.998.998 0 0 0 .743-1.669zM16 15h-3v3h-2v-3H8v-2h3v-3h2v3h3v2z\"}}]})(props);\n};\nexport function BiSolidCloudDownload (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.944 11.112C18.507 7.67 15.56 5 12 5 9.244 5 6.85 6.61 5.757 9.149 3.609 9.792 2 11.82 2 14c0 2.657 2.089 4.815 4.708 4.971V19H17.99v-.003L18 19c2.206 0 4-1.794 4-4a4.008 4.008 0 0 0-3.056-3.888zM8 12h3V9h2v3h3l-4 5-4-5z\"}}]})(props);\n};\nexport function BiSolidCloudLightning (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.944 10.112C18.507 6.67 15.56 4 12 4 9.244 4 6.85 5.611 5.757 8.15 3.609 8.792 2 10.82 2 13c0 2.757 2.243 5 5 5h1.333L10 13h4l-2 3h2.975l-1.325 2H18c2.206 0 4-1.794 4-4a4.01 4.01 0 0 0-3.056-3.888zM11 18H8.333L8 19h3v3l2.649-4H11.5z\"}}]})(props);\n};\nexport function BiSolidCloudRain (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.944 10.112C18.507 6.67 15.56 4 12 4 9.244 4 6.85 5.611 5.757 8.15 3.609 8.792 2 10.82 2 13c0 2.757 2.243 5 5 5h1v3h2v-3h4v3h2v-3h2c2.206 0 4-1.794 4-4a4.01 4.01 0 0 0-3.056-3.888z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 19h2v3h-2z\"}}]})(props);\n};\nexport function BiSolidCloudUpload (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.944 11.112C18.507 7.67 15.56 5 12 5 9.244 5 6.85 6.611 5.757 9.15 3.609 9.792 2 11.82 2 14c0 2.757 2.243 5 5 5h11c2.206 0 4-1.794 4-4a4.01 4.01 0 0 0-3.056-3.888zM13 14v3h-2v-3H8l4-5 4 5h-3z\"}}]})(props);\n};\nexport function BiSolidCloud (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.944 11.112C18.507 7.67 15.56 5 12 5 9.244 5 6.85 6.611 5.757 9.15 3.609 9.792 2 11.82 2 14c0 2.757 2.243 5 5 5h11c2.206 0 4-1.794 4-4a4.01 4.01 0 0 0-3.056-3.888z\"}}]})(props);\n};\nexport function BiSolidCoffeeAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 5h-1V4a1 1 0 0 0-1-1H5a1 1 0 0 0-1 1v9a4 4 0 0 0 4 4h6c1.858 0 3.411-1.279 3.858-3H19a3 3 0 0 0 3-3V8a3 3 0 0 0-3-3zm1 6a1 1 0 0 1-1 1h-1V7h1a1 1 0 0 1 1 1v3zm-2 8H3c0 1.654 1.346 3 3 3h11c1.654 0 3-1.346 3-3h-2z\"}}]})(props);\n};\nexport function BiSolidCoffeeBean (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 18a6.06 6.06 0 0 0 5.17-6 7.62 7.62 0 0 1 6.52-7.51l2.59-.37c-.07-.08-.13-.16-.21-.24-3.26-3.26-9.52-2.28-14 2.18C2.28 9.9 1 15 2.76 18.46z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12.73 12a7.63 7.63 0 0 1-6.51 7.52l-2.46.35.15.17c3.26 3.26 9.52 2.29 14-2.17C21.68 14.11 23 9 21.25 5.59l-3.34.48A6.05 6.05 0 0 0 12.73 12z\"}}]})(props);\n};\nexport function BiSolidCoffeeTogo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m18.5 5-1.224-2.447A1 1 0 0 0 16.382 2H7.618a1 1 0 0 0-.894.553L5.5 5H3v2h18V5h-2.5zM6.734 21.142c.071.492.493.858.991.858h8.551a1 1 0 0 0 .99-.858L19 9H5l1.734 12.142zM16 12l-.714 5H8.714L8 12h8z\"}}]})(props);\n};\nexport function BiSolidCoffee (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 2h2v3H5zm4 0h2v3H9zm4 0h2v3h-2zm6 7h-2V8a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v10a3 3 0 0 0 3 3h8a3 3 0 0 0 3-3h2c1.103 0 2-.897 2-2v-5c0-1.103-.897-2-2-2zm-2 7v-5h2l.002 5H17z\"}}]})(props);\n};\nexport function BiSolidCog (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m2.344 15.271 2 3.46a1 1 0 0 0 1.366.365l1.396-.806c.58.457 1.221.832 1.895 1.112V21a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1v-1.598a8.094 8.094 0 0 0 1.895-1.112l1.396.806c.477.275 1.091.11 1.366-.365l2-3.46a1.004 1.004 0 0 0-.365-1.366l-1.372-.793a7.683 7.683 0 0 0-.002-2.224l1.372-.793c.476-.275.641-.89.365-1.366l-2-3.46a1 1 0 0 0-1.366-.365l-1.396.806A8.034 8.034 0 0 0 15 4.598V3a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v1.598A8.094 8.094 0 0 0 7.105 5.71L5.71 4.904a.999.999 0 0 0-1.366.365l-2 3.46a1.004 1.004 0 0 0 .365 1.366l1.372.793a7.683 7.683 0 0 0 0 2.224l-1.372.793c-.476.275-.641.89-.365 1.366zM12 8c2.206 0 4 1.794 4 4s-1.794 4-4 4-4-1.794-4-4 1.794-4 4-4z\"}}]})(props);\n};\nexport function BiSolidCoinStack (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 10c3.976 0 8-1.374 8-4s-4.024-4-8-4-8 1.374-8 4 4.024 4 8 4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M4 10c0 2.626 4.024 4 8 4s8-1.374 8-4V8c0 2.626-4.024 4-8 4s-8-1.374-8-4v2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M4 14c0 2.626 4.024 4 8 4s8-1.374 8-4v-2c0 2.626-4.024 4-8 4s-8-1.374-8-4v2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M4 18c0 2.626 4.024 4 8 4s8-1.374 8-4v-2c0 2.626-4.024 4-8 4s-8-1.374-8-4v2z\"}}]})(props);\n};\nexport function BiSolidCoin (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 5C7.031 5 2 6.546 2 9.5S7.031 14 12 14c4.97 0 10-1.546 10-4.5S16.97 5 12 5zm-5 9.938v3c1.237.299 2.605.482 4 .541v-3a21.166 21.166 0 0 1-4-.541zm6 .54v3a20.994 20.994 0 0 0 4-.541v-3a20.994 20.994 0 0 1-4 .541zm6-1.181v3c1.801-.755 3-1.857 3-3.297v-3c0 1.44-1.199 2.542-3 3.297zm-14 3v-3C3.2 13.542 2 12.439 2 11v3c0 1.439 1.2 2.542 3 3.297z\"}}]})(props);\n};\nexport function BiSolidCollection (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 10H5c-1.103 0-2 .897-2 2v8c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2v-8c0-1.103-.897-2-2-2zM5 6h14v2H5zm2-4h10v2H7z\"}}]})(props);\n};\nexport function BiSolidColorFill (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 14c-.092.064-2 2.083-2 3.5 0 1.494.949 2.448 2 2.5.906.044 2-.891 2-2.5 0-1.5-1.908-3.436-2-3.5zM9.586 20c.378.378.88.586 1.414.586s1.036-.208 1.414-.586l7-7-.707-.707L11 4.586 8.707 2.293 7.293 3.707 9.586 6 4 11.586c-.378.378-.586.88-.586 1.414s.208 1.036.586 1.414L9.586 20zM11 7.414 16.586 13H5.414L11 7.414z\"}}]})(props);\n};\nexport function BiSolidColor (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7.08 11.25A4.84 4.84 0 0 1 8 9.05L4.43 5.49A9.88 9.88 0 0 0 2 11.25zM9.05 8a4.84 4.84 0 0 1 2.2-.91V2a9.88 9.88 0 0 0-5.76 2.43zm3.7-6v5A4.84 4.84 0 0 1 15 8l3.56-3.56A9.88 9.88 0 0 0 12.75 2zM8 15a4.84 4.84 0 0 1-.91-2.2H2a9.88 9.88 0 0 0 2.39 5.76zm3.25 1.92a4.84 4.84 0 0 1-2.2-.92l-3.56 3.57A9.88 9.88 0 0 0 11.25 22zM16 9.05a4.84 4.84 0 0 1 .91 2.2h5a9.88 9.88 0 0 0-2.39-5.76zM15 16a4.84 4.84 0 0 1-2.2.91v5a9.88 9.88 0 0 0 5.76-2.39zm1.92-3.25A4.84 4.84 0 0 1 16 15l3.56 3.56A9.88 9.88 0 0 0 22 12.75z\"}}]})(props);\n};\nexport function BiSolidCommentAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .897-2 2v18l4-4h14c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm-3 9h-4v4h-2v-4H7V9h4V5h2v4h4v2z\"}}]})(props);\n};\nexport function BiSolidCommentCheck (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .897-2 2v18l4-4h14c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm-9 11.914-3.707-3.707 1.414-1.414L11 11.086l4.793-4.793 1.414 1.414L11 13.914z\"}}]})(props);\n};\nexport function BiSolidCommentDetail (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 1.999H4c-1.103 0-2 .897-2 2v18l4-4h14c1.103 0 2-.897 2-2v-12c0-1.103-.897-2-2-2zm-6 11H7v-2h7v2zm3-4H7v-2h10v2z\"}}]})(props);\n};\nexport function BiSolidCommentDots (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .897-2 2v18l4-4h14c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zM9 12a2 2 0 1 1 .001-4.001A2 2 0 0 1 9 12zm6 0a2 2 0 1 1 .001-4.001A2 2 0 0 1 15 12z\"}}]})(props);\n};\nexport function BiSolidCommentEdit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .897-2 2v18l4-4h14c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zM8.999 14.987H7v-1.999l5.53-5.522 1.998 1.999-5.529 5.522zm6.472-6.464-1.999-1.999 1.524-1.523L16.995 7l-1.524 1.523z\"}}]})(props);\n};\nexport function BiSolidCommentError (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .897-2 2v18l4-4h14c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm-7 13h-2v-2h2v2zm0-4h-2V5h2v6z\"}}]})(props);\n};\nexport function BiSolidCommentMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .897-2 2v18l4-4h14c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm-4 9H8V9h8v2z\"}}]})(props);\n};\nexport function BiSolidCommentX (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .897-2 2v18l4-4h14c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm-3.294 11.543-1.414 1.414-3.293-3.292-3.292 3.292-1.414-1.414 3.292-3.292-3.292-3.293 1.414-1.414 3.292 3.292 3.293-3.292 1.414 1.414-3.292 3.293 3.292 3.292z\"}}]})(props);\n};\nexport function BiSolidComment (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .897-2 2v18l4-4h14c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2z\"}}]})(props);\n};\nexport function BiSolidCompass (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm3 13-8 2 2-8 8-2-2 8z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"2\"}}]})(props);\n};\nexport function BiSolidComponent (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m3.553 18.895 4 2a1.001 1.001 0 0 0 .894 0L12 19.118l3.553 1.776a.99.99 0 0 0 .894.001l4-2c.339-.17.553-.516.553-.895v-5c0-.379-.214-.725-.553-.895L17 10.382V6c0-.379-.214-.725-.553-.895l-4-2a1 1 0 0 0-.895 0l-4 2C7.214 5.275 7 5.621 7 6v4.382l-3.447 1.724A.998.998 0 0 0 3 13v5c0 .379.214.725.553.895zM8 12.118l2.264 1.132-2.913 1.457-2.264-1.132L8 12.118zm4-2.5 3-1.5v2.264l-3 1.5V9.618zm6.264 3.632-2.882 1.441-2.264-1.132L16 12.118l2.264 1.132zM8 18.882l-.062-.031V16.65L11 15.118v2.264l-3 1.5zm8 0v-2.264l3-1.5v2.264l-3 1.5zM12 5.118l2.264 1.132-2.882 1.441-2.264-1.132L12 5.118z\"}}]})(props);\n};\nexport function BiSolidConfused (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm-5 8.5a1.5 1.5 0 1 1 3.001.001A1.5 1.5 0 0 1 7 10.5zm1.124 6.492-.248-1.984 8-1 .248 1.984-8 1zm7.369-5.006a1.494 1.494 0 1 1 .001-2.987 1.494 1.494 0 0 1-.001 2.987z\"}}]})(props);\n};\nexport function BiSolidContact (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 2H6a2 2 0 0 0-2 2v3H2v2h2v2H2v2h2v2H2v2h2v3a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1zm-8 2.999c1.648 0 3 1.351 3 3A3.012 3.012 0 0 1 13 11c-1.647 0-3-1.353-3-3.001 0-1.649 1.353-3 3-3zM19 18H7v-.75c0-2.219 2.705-4.5 6-4.5s6 2.281 6 4.5V18z\"}}]})(props);\n};\nexport function BiSolidConversation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 14h3.5c.827 0 1.5-.673 1.5-1.5v-9c0-.827-.673-1.5-1.5-1.5h-13C2.673 2 2 2.673 2 3.5V18l5.333-4H13zm-9-.1.154-.016L4 14v-.1z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20.5 8H20v6.001c0 1.1-.893 1.993-1.99 1.999H8v.5c0 .827.673 1.5 1.5 1.5h7.167L22 22V9.5c0-.827-.673-1.5-1.5-1.5z\"}}]})(props);\n};\nexport function BiSolidCookie (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.598 11.064a1.006 1.006 0 0 0-.854-.172A2.938 2.938 0 0 1 20 11c-1.654 0-3-1.346-3.003-2.938.005-.034.016-.134.017-.168a.998.998 0 0 0-1.254-1.006A3.002 3.002 0 0 1 15 7c-1.654 0-3-1.346-3-3 0-.217.031-.444.099-.716a1 1 0 0 0-1.067-1.236A9.956 9.956 0 0 0 2 12c0 5.514 4.486 10 10 10s10-4.486 10-10c0-.049-.003-.097-.007-.16a1.004 1.004 0 0 0-.395-.776zM8.5 6a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3zm-2 8a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm3 4a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm2.5-6.5a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0zm3.5 6.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z\"}}]})(props);\n};\nexport function BiSolidCool (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm4.095 14.244a5.982 5.982 0 0 1-3.034 1.634 6.05 6.05 0 0 1-2.414 0 5.919 5.919 0 0 1-2.148-.903 6.078 6.078 0 0 1-1.621-1.622l1.658-1.117c.143.211.307.41.488.59a3.988 3.988 0 0 0 1.273.86c.243.102.495.181.749.232a4.108 4.108 0 0 0 1.616 0c.253-.052.505-.131.75-.233.234-.1.464-.224.679-.368.208-.142.407-.306.591-.489.183-.182.347-.381.489-.592l1.658 1.117c-.215.32-.462.62-.734.891zM19 10a2 2 0 0 1-2 2h-2a2 2 0 0 1-2-2h-2a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V8h14v2z\"}}]})(props);\n};\nexport function BiSolidCopyAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H10a2 2 0 0 0-2 2v2h8a2 2 0 0 1 2 2v8h2a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M4 22h10c1.103 0 2-.897 2-2V10c0-1.103-.897-2-2-2H4c-1.103 0-2 .897-2 2v10c0 1.103.897 2 2 2zm2-10h6v2H6v-2zm0 4h6v2H6v-2z\"}}]})(props);\n};\nexport function BiSolidCopy (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 8H4c-1.103 0-2 .897-2 2v10c0 1.103.897 2 2 2h10c1.103 0 2-.897 2-2V10c0-1.103-.897-2-2-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H10a2 2 0 0 0-2 2v2h8a2 2 0 0 1 2 2v8h2a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z\"}}]})(props);\n};\nexport function BiSolidCopyright (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.579 2 2 6.58 2 12s4.579 10 10 10 10-4.58 10-10S17.421 2 12 2zm0 13c.992 0 1.85-.265 2.293-.708l1.414 1.415C14.581 16.832 12.901 17 12 17c-2.757 0-5-2.243-5-5s2.243-5 5-5c.901 0 2.582.168 3.707 1.293l-1.414 1.414C13.851 9.264 12.993 9 12 9c-1.626 0-3 1.374-3 3s1.374 3 3 3z\"}}]})(props);\n};\nexport function BiSolidCoupon (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 5H3a1 1 0 0 0-1 1v4h.893c.996 0 1.92.681 2.08 1.664A2.001 2.001 0 0 1 3 14H2v4a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1v-4h-1a2.001 2.001 0 0 1-1.973-2.336c.16-.983 1.084-1.664 2.08-1.664H22V6a1 1 0 0 0-1-1zM11 17H9v-2h2v2zm0-4H9v-2h2v2zm0-4H9V7h2v2z\"}}]})(props);\n};\nexport function BiSolidCreditCardAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zm-7.5 12a2.5 2.5 0 1 1 0-5 2.47 2.47 0 0 1 1.5.512c-.604.456-1 1.173-1 1.988s.396 1.532 1 1.988a2.47 2.47 0 0 1-1.5.512zm4 0a2.5 2.5 0 1 1 0-5 2.5 2.5 0 0 1 0 5z\"}}]})(props);\n};\nexport function BiSolidCreditCardFront (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zM5 8.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-2zm6 7.5H5v-2h6v2zm8 0h-6v-2h6v2z\"}}]})(props);\n};\nexport function BiSolidCreditCard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4c-1.103 0-2 .897-2 2v2h20V6c0-1.103-.897-2-2-2zM2 18c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2v-6H2v6zm3-3h6v2H5v-2z\"}}]})(props);\n};\nexport function BiSolidCricketBall (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m3.67 16.26.54.53-.62.61a9 9 0 0 0 .84 1.11L18.51 4.42a10.93 10.93 0 0 0-1.1-.83l-.62.61-.53-.53.48-.48A10 10 0 0 0 3.2 16.74zM14.86 5.07l.53.53L14 7l-.53-.53zm-2.79 2.8.52.53-1.39 1.4-.53-.53zm-2.8 2.8.53.53-1.4 1.39-.53-.53zm-2.8 2.79L7 14l-1.4 1.4-.53-.53zm.12 6.95.62-.61.53.53-.48.48A10 10 0 0 0 20.8 7.26l-.47.48-.54-.53.62-.61a9 9 0 0 0-.84-1.11L5.49 19.58a10.93 10.93 0 0 0 1.1.83zM18.4 8.61l.53.53-1.4 1.4L17 10zm-2.8 2.8.53.53-1.4 1.39-.53-.53zm-2.8 2.79.53.53-1.39 1.4-.54-.53zM10 17l.53.53-1.4 1.4-.53-.53z\"}}]})(props);\n};\nexport function BiSolidCrop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 7.5C19 6.121 17.879 5 16.5 5H8V2H5v3H2v3h14v14h3v-3h3v-3h-3V7.5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M8 10H5v6.5C5 17.879 6.121 19 7.5 19H14v-3H8v-6z\"}}]})(props);\n};\nexport function BiSolidCrown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21 2-5 5-4-5-4 5-5-5v13h18zM5 21h14a2 2 0 0 0 2-2v-2H3v2a2 2 0 0 0 2 2z\"}}]})(props);\n};\nexport function BiSolidCubeAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.895 3.553A1.001 1.001 0 0 0 17 3H7c-.379 0-.725.214-.895.553l-4 8a1 1 0 0 0 0 .895l4 8c.17.338.516.552.895.552h10c.379 0 .725-.214.895-.553l4-8a1 1 0 0 0 0-.895l-4-7.999zM19.382 11h-7.764l-3-6h7.764l3 6zm-3 8H8.618l3-6h7.764l-3 6z\"}}]})(props);\n};\nexport function BiSolidCube (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.406 6.086-9-4a1.001 1.001 0 0 0-.813 0l-9 4c-.02.009-.034.024-.054.035-.028.014-.058.023-.084.04-.022.015-.039.034-.06.05a.87.87 0 0 0-.19.194c-.02.028-.041.053-.059.081a1.119 1.119 0 0 0-.076.165c-.009.027-.023.052-.031.079A1.013 1.013 0 0 0 2 7v10c0 .396.232.753.594.914l9 4c.13.058.268.086.406.086a.997.997 0 0 0 .402-.096l.004.01 9-4A.999.999 0 0 0 22 17V7a.999.999 0 0 0-.594-.914zM12 4.095 18.538 7 12 9.905l-1.308-.581L5.463 7 12 4.095zm1 15.366V11.65l7-3.111v7.812l-7 3.11z\"}}]})(props);\n};\nexport function BiSolidCuboid (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.707 2.293A.996.996 0 0 0 16 2H8c-.414 0-.785.255-.934.641l-5 13a.999.999 0 0 0 .227 1.066l5 5A.996.996 0 0 0 8 22h8c.414 0 .785-.255.934-.641l5-13a.999.999 0 0 0-.227-1.066l-5-5zM18.585 7h-5.171l-3-3h5.172l2.999 3zm-3.272 13h-6.23l4.583-11h5.878l-4.231 11z\"}}]})(props);\n};\nexport function BiSolidCustomize (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 3H4a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zm10 0h-6a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zM10 13H4a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1zm8 1h-2v2h-2v2h2v2h2v-2h2v-2h-2z\"}}]})(props);\n};\nexport function BiSolidCylinder (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 22c5.131 0 9-1.935 9-4.5V7c0-.051-.024-.097-.033-.146.016-.117.033-.234.033-.354C21 3.935 17.131 2 12 2S3 3.935 3 6.5v11c0 2.565 3.869 4.5 9 4.5zm0-18c4.273 0 7 1.48 7 2.5a.683.683 0 0 1-.025.158c-.004.01-.012.018-.015.027-.274.848-2.29 1.98-5.496 2.253l-.05.003C12.965 8.979 12.494 9 12 9 7.727 9 5 7.52 5 6.5S7.727 4 12 4z\"}}]})(props);\n};\nexport function BiSolidDashboard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 13h6a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1zm-1 7a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v4zm10 0a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-7a1 1 0 0 0-1-1h-6a1 1 0 0 0-1 1v7zm1-10h6a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1h-6a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1z\"}}]})(props);\n};\nexport function BiSolidData (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 6c0-2.168-3.663-4-8-4S4 3.832 4 6v2c0 2.168 3.663 4 8 4s8-1.832 8-4V6zm-8 13c-4.337 0-8-1.832-8-4v3c0 2.168 3.663 4 8 4s8-1.832 8-4v-3c0 2.168-3.663 4-8 4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 10c0 2.168-3.663 4-8 4s-8-1.832-8-4v3c0 2.168 3.663 4 8 4s8-1.832 8-4v-3z\"}}]})(props);\n};\nexport function BiSolidDetail (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2zm-9 14H5v-2h6v2zm8-4H5v-2h14v2zm0-4H5V7h14v2z\"}}]})(props);\n};\nexport function BiSolidDevices (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H7c-1.103 0-2 .897-2 2v2H4c-1.103 0-2 .897-2 2v10c0 1.103.897 2 2 2h6c1.103 0 2-.897 2-2h8c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM6 9h4l-.003 9H4V9h2zm6 8V9c0-1.103-.897-2-2-2H7V5h11v12h-6z\"}}]})(props);\n};\nexport function BiSolidDiamond (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.445 3h-8.89c-.345 0-.666.178-.849.47L3.25 9h17.5l-3.456-5.53a1.003 1.003 0 0 0-.849-.47zM11.26 21.186a1 1 0 0 0 1.48 0L22 11H2l9.26 10.186z\"}}]})(props);\n};\nexport function BiSolidDice1 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zm-7 10.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z\"}}]})(props);\n};\nexport function BiSolidDice2 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM9.5 13.5a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 9.5 13.5zm5 0a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 14.5 13.5z\"}}]})(props);\n};\nexport function BiSolidDice3 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM8 9.5a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 8 9.5zm4 4a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 12 13.5zm4 4a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 16 17.5z\"}}]})(props);\n};\nexport function BiSolidDice4 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM8 17.5a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 8 17.5zm0-8a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 8 9.5zm8 8a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 16 17.5zm0-8a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 16 9.5z\"}}]})(props);\n};\nexport function BiSolidDice5 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM8 17.5a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 8 17.5zm0-8a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 8 9.5zm4 4a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 12 13.5zm4 4a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 16 17.5zm0-8a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 16 9.5z\"}}]})(props);\n};\nexport function BiSolidDice6 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM8 17.5a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 8 17.5zm0-4a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 8 13.5zm0-4a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 8 9.5zm8 8a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 16 17.5zm0-4a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 16 13.5zm0-4a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 16 9.5z\"}}]})(props);\n};\nexport function BiSolidDirectionLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.707 11.294-8.978-9a1.001 1.001 0 0 0-1.415-.002l-9.021 9a1 1 0 0 0 0 1.416l9.021 9c.39.389 1.026.388 1.415-.002l8.978-9a.998.998 0 0 0 0-1.412zM15 16h-2v-4h-3v2l-3-3 3-3v2h5v6z\"}}]})(props);\n};\nexport function BiSolidDirectionRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m2.295 12.707 8.978 9c.389.39 1.025.391 1.414.002l9.021-9a1 1 0 0 0 0-1.416l-9.021-9a.999.999 0 0 0-1.414.002l-8.978 9a.998.998 0 0 0 0 1.412zm6.707-2.706h5v-2l3 3-3 3v-2h-3v4h-2v-6z\"}}]})(props);\n};\nexport function BiSolidDirections (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 11h-6V8h6a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H5L2 5l3 3h6v3H5a2 2 0 0 0-2 2v2a2 2 0 0 0 2 2h6v5h2v-5h6l3-3-3-3z\"}}]})(props);\n};\nexport function BiSolidDisc (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 14c-2.206 0-4-1.794-4-4s1.794-4 4-4 4 1.794 4 4-1.794 4-4 4z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"11.998\",\"cy\":\"11.998\",\"r\":\"2.002\"}}]})(props);\n};\nexport function BiSolidDiscount (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 5H3a1 1 0 0 0-1 1v4h.893c.996 0 1.92.681 2.08 1.664A2.001 2.001 0 0 1 3 14H2v4a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1v-4h-1a2.001 2.001 0 0 1-1.973-2.336c.16-.983 1.084-1.664 2.08-1.664H22V6a1 1 0 0 0-1-1zM9 9a1 1 0 1 1 0 2 1 1 0 1 1 0-2zm-.8 6.4 6-8 1.6 1.2-6 8-1.6-1.2zM15 15a1 1 0 1 1 0-2 1 1 0 1 1 0 2z\"}}]})(props);\n};\nexport function BiSolidDish (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 15c0-4.625-3.507-8.441-8-8.941V4h-2v2.059c-4.493.5-8 4.316-8 8.941v2h18v-2zM2 18h20v2H2z\"}}]})(props);\n};\nexport function BiSolidDislike (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3h-1v13h1a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2zM4 16h7l-1.122 3.368A2 2 0 0 0 11.775 22H12l5-5.438V3H6l-3.937 8.649-.063.293V14a2 2 0 0 0 2 2z\"}}]})(props);\n};\nexport function BiSolidDizzy (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zM8 12.414l-1.293 1.293-1.414-1.414L6.586 11 5.293 9.707l1.414-1.414L8 9.586l1.293-1.293 1.414 1.414L9.414 11l1.293 1.293-1.414 1.414L8 12.414zM14 18h-4v-2h4v2zm4.707-5.707-1.414 1.414L16 12.414l-1.293 1.293-1.414-1.414L14.586 11l-1.293-1.293 1.414-1.414L16 9.586l1.293-1.293 1.414 1.414L17.414 11l1.293 1.293z\"}}]})(props);\n};\nexport function BiSolidDockBottom (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 21h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2zM19 5l.001 9H5V5h14z\"}}]})(props);\n};\nexport function BiSolidDockLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 19V5c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2zm-11 0V5h9l.002 14H10z\"}}]})(props);\n};\nexport function BiSolidDockRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 5c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5zM5 5h9v14H5V5z\"}}]})(props);\n};\nexport function BiSolidDockTop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 5v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2zm2 14v-9h14.001l.001 9H5z\"}}]})(props);\n};\nexport function BiSolidDog (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 6h-2l-1.27-1.27A2.49 2.49 0 0 0 16 4h-2.5A2.64 2.64 0 0 0 11 2v6.36a4.38 4.38 0 0 0 1.13 2.72 6.57 6.57 0 0 0 4.13 1.82l3.45-1.38a3 3 0 0 0 1.73-1.84L22 8.15a1.06 1.06 0 0 0 0-.31V7a1 1 0 0 0-1-1zm-5 2a1 1 0 1 1 1-1 1 1 0 0 1-1 1z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11.38 11.74A5.24 5.24 0 0 1 10.07 9H6a1.88 1.88 0 0 1-2-2 1 1 0 0 0-2 0 4.69 4.69 0 0 0 .48 2A3.58 3.58 0 0 0 4 10.53V22h3v-5h6v5h3v-8.13a7.35 7.35 0 0 1-4.62-2.13z\"}}]})(props);\n};\nexport function BiSolidDollarCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm1 14.915V18h-2v-1.08c-2.339-.367-3-2.002-3-2.92h2c.011.143.159 1 2 1 1.38 0 2-.585 2-1 0-.324 0-1-2-1-3.48 0-4-1.88-4-3 0-1.288 1.029-2.584 3-2.915V6.012h2v1.109c1.734.41 2.4 1.853 2.4 2.879h-1l-1 .018C13.386 9.638 13.185 9 12 9c-1.299 0-2 .516-2 1 0 .374 0 1 2 1 3.48 0 4 1.88 4 3 0 1.288-1.029 2.584-3 2.915z\"}}]})(props);\n};\nexport function BiSolidDonateBlood (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.726 13.02 14 16H9v-1h4.065a.5.5 0 0 0 .416-.777l-.888-1.332A1.995 1.995 0 0 0 10.93 12H3a1 1 0 0 0-1 1v6a2 2 0 0 0 2 2h9.639a3 3 0 0 0 2.258-1.024L22 13l-1.452-.484a2.998 2.998 0 0 0-2.822.504zM15.403 12a3 3 0 0 0 3-3c0-2.708-3-6-3-6s-3 3.271-3 6a3 3 0 0 0 3 3z\"}}]})(props);\n};\nexport function BiSolidDonateHeart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.726 13.02 14 16H9v-1h4.065a.5.5 0 0 0 .416-.777l-.888-1.332A1.995 1.995 0 0 0 10.93 12H3a1 1 0 0 0-1 1v6a2 2 0 0 0 2 2h9.639a3 3 0 0 0 2.258-1.024L22 13l-1.452-.484a2.998 2.998 0 0 0-2.822.504zm1.532-5.63c.451-.465.73-1.108.73-1.818s-.279-1.353-.73-1.818A2.447 2.447 0 0 0 17.494 3S16.25 2.997 15 4.286C13.75 2.997 12.506 3 12.506 3a2.45 2.45 0 0 0-1.764.753c-.451.466-.73 1.108-.73 1.818s.279 1.354.73 1.818L15 12l4.258-4.61z\"}}]})(props);\n};\nexport function BiSolidDoorOpen (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 5v14a1 1 0 0 0 1 1h3v-2H7V6h2V4H6a1 1 0 0 0-1 1zm14.242-.97-8-2A1 1 0 0 0 10 3v18a.998.998 0 0 0 1.242.97l8-2A1 1 0 0 0 20 19V5a1 1 0 0 0-.758-.97zM15 12.188a1.001 1.001 0 0 1-2 0v-.377a1 1 0 1 1 2 .001v.376z\"}}]})(props);\n};\nexport function BiSolidDoughnutChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 6c2.507.423 4.577 2.493 5 5h4c-.471-4.717-4.283-8.529-9-9v4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M18 13c-.478 2.833-2.982 4.949-5.949 4.949-3.309 0-6-2.691-6-6C6.051 8.982 8.167 6.478 11 6V2c-5.046.504-8.949 4.773-8.949 9.949 0 5.514 4.486 10 10 10 5.176 0 9.445-3.903 9.949-8.949h-4z\"}}]})(props);\n};\nexport function BiSolidDownArrowAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 12h-5V6h-2v6H6l6 7z\"}}]})(props);\n};\nexport function BiSolidDownArrowCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 15-5-5h4V7h2v5h4l-5 5z\"}}]})(props);\n};\nexport function BiSolidDownArrowSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 21a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14zm-8-9V7h2v5h4l-5 5-5-5h4z\"}}]})(props);\n};\nexport function BiSolidDownArrow (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.178 19.569a.998.998 0 0 0 1.644 0l9-13A.999.999 0 0 0 21 5H3a1.002 1.002 0 0 0-.822 1.569l9 13z\"}}]})(props);\n};\nexport function BiSolidDownload (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 9h-4V3H9v6H5l7 8zM4 19h16v2H4z\"}}]})(props);\n};\nexport function BiSolidDownvote (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.901 10.566A1.001 1.001 0 0 0 20 10h-4V3a1 1 0 0 0-1-1H9a1 1 0 0 0-1 1v7H4a1.001 1.001 0 0 0-.781 1.625l8 10a1 1 0 0 0 1.562 0l8-10c.24-.301.286-.712.12-1.059z\"}}]})(props);\n};\nexport function BiSolidDrink (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.832 4.555A1 1 0 0 0 20 3H4a1 1 0 0 0-.832 1.554L11 16.303V20H8v2h8v-2h-3v-3.697l7.832-11.748zm-2.7.445-2 3H7.868l-2-3h12.264z\"}}]})(props);\n};\nexport function BiSolidDropletHalf (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.578 2.184a1.004 1.004 0 0 0-1.156 0C11.119 2.398 4 7.513 4 13.75 4 18.53 7.364 22 12 22s8-3.468 8-8.246c0-6.241-7.119-11.356-7.422-11.57zM6 13.75c0-4.283 4.395-8.201 6-9.49V20c-3.533 0-6-2.57-6-6.25z\"}}]})(props);\n};\nexport function BiSolidDroplet (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.6 2.4c-.4-.3-.9-.3-1.2 0C9.5 3.9 4 8.5 4 14c0 4.4 3.6 8 8 8s8-3.6 8-8c0-5.4-5.5-10.1-7.4-11.6\"}}]})(props);\n};\nexport function BiSolidDryer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 22h16a1 1 0 0 0 1-1V5c0-1.654-1.346-3-3-3H6C4.346 2 3 3.346 3 5v16a1 1 0 0 0 1 1zM18 3.924a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm-3 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm-3 3.117c3.309 0 6 2.691 6 6s-2.691 6-6 6-6-2.691-6-6 2.691-6 6-6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M9.32 12.265c-.415.384-1.041.964-1.041 2.067 0 1.104.626 1.684 1.041 2.068.352.325.4.398.4.6h2c0-1.104-.626-1.684-1.041-2.068-.352-.325-.4-.398-.4-.6s.048-.275.4-.6c.414-.384 1.041-.964 1.041-2.068 0-1.103-.626-1.683-1.041-2.066-.351-.325-.399-.397-.399-.598h-2c0 1.104.627 1.683 1.042 2.066.351.324.399.396.399.597-.001.203-.05.276-.401.602zm4 0c-.414.384-1.04.964-1.04 2.067s.626 1.684 1.04 2.067c.351.325.399.398.399.601h2c0-1.104-.626-1.684-1.04-2.067-.351-.325-.399-.398-.399-.601s.049-.275.399-.601c.414-.384 1.04-.964 1.04-2.068 0-1.103-.626-1.682-1.04-2.065-.35-.324-.399-.397-.399-.598h-2c0 1.103.626 1.683 1.041 2.066.35.324.398.397.398.598.001.202-.048.275-.399.601z\"}}]})(props);\n};\nexport function BiSolidDuplicate (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 22h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2zm2-9h3v-3h2v3h3v2h-3v3H9v-3H6v-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H8v2h12v12h2V4c0-1.103-.897-2-2-2z\"}}]})(props);\n};\nexport function BiSolidEditAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m16 2.012 3 3L16.713 7.3l-3-3zM4 14v3h3l8.299-8.287-3-3zm0 6h16v2H4z\"}}]})(props);\n};\nexport function BiSolidEditLocation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C7.589 2 4 5.589 4 9.995 3.971 16.44 11.696 21.784 12 22c0 0 8.029-5.56 8-12 0-4.411-3.589-8-8-8zM9.799 14.987H8v-1.799l4.977-4.97 1.799 1.799-4.977 4.97zm5.824-5.817-1.799-1.799L15.196 6l1.799 1.799-1.372 1.371z\"}}]})(props);\n};\nexport function BiSolidEdit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m18.988 2.012 3 3L19.701 7.3l-3-3zM8 16h3l7.287-7.287-3-3L8 13z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 19H8.158c-.026 0-.053.01-.079.01-.033 0-.066-.009-.1-.01H5V5h6.847l2-2H5c-1.103 0-2 .896-2 2v14c0 1.104.897 2 2 2h14a2 2 0 0 0 2-2v-8.668l-2 2V19z\"}}]})(props);\n};\nexport function BiSolidEject (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m12 6-6 8h12zM6 16h12v2H6z\"}}]})(props);\n};\nexport function BiSolidEnvelopeOpen (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.555 8.168-9-6a1 1 0 0 0-1.109 0l-9 6A.995.995 0 0 0 2.004 9H2v11a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9h-.004a.997.997 0 0 0-.441-.832zM20 12.7 12 17l-8-4.3v-2.403l8 4.299 8-4.299V12.7z\"}}]})(props);\n};\nexport function BiSolidEnvelope (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2zm0 4.7-8 5.334L4 8.7V6.297l8 5.333 8-5.333V8.7z\"}}]})(props);\n};\nexport function BiSolidEraser (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.48 3 7.73 7.75 3 12.59a2 2 0 0 0 0 2.82l4.3 4.3A1 1 0 0 0 8 20h12v-2h-7l7.22-7.22a2 2 0 0 0 0-2.83L15.31 3a2 2 0 0 0-2.83 0zM8.41 18l-4-4 4.75-4.84.74-.75 4.95 4.95-4.56 4.56-.07.08z\"}}]})(props);\n};\nexport function BiSolidErrorAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.707 2.293A.996.996 0 0 0 16 2H8a.996.996 0 0 0-.707.293l-5 5A.996.996 0 0 0 2 8v8c0 .266.105.52.293.707l5 5A.996.996 0 0 0 8 22h8c.266 0 .52-.105.707-.293l5-5A.996.996 0 0 0 22 16V8a.996.996 0 0 0-.293-.707l-5-5zM13 17h-2v-2h2v2zm0-4h-2V7h2v6z\"}}]})(props);\n};\nexport function BiSolidErrorCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.953 2C6.465 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.493 2 11.953 2zM13 17h-2v-2h2v2zm0-4h-2V7h2v6z\"}}]})(props);\n};\nexport function BiSolidError (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.884 2.532c-.346-.654-1.422-.654-1.768 0l-9 17A.999.999 0 0 0 3 21h18a.998.998 0 0 0 .883-1.467L12.884 2.532zM13 18h-2v-2h2v2zm-2-4V9h2l.001 5H11z\"}}]})(props);\n};\nexport function BiSolidEvStation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m19.616 6.48.014-.017-4-3.24-1.26 1.554 2.067 1.674a2.99 2.99 0 0 0-1.394 3.062c.15.899.769 1.676 1.57 2.111.895.487 1.68.442 2.378.194L18.976 18a.996.996 0 0 1-1.39.922.995.995 0 0 1-.318-.217.996.996 0 0 1-.291-.705L17 16a2.98 2.98 0 0 0-.877-2.119A3 3 0 0 0 14 13h-1V5a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h7a2 2 0 0 0 2-2v-4h1c.136 0 .267.027.391.078a1.028 1.028 0 0 1 .531.533A.994.994 0 0 1 15 16l-.024 2c0 .406.079.799.236 1.168.151.359.368.68.641.951a2.97 2.97 0 0 0 2.123.881c.406 0 .798-.078 1.168-.236.358-.15.68-.367.951-.641A2.983 2.983 0 0 0 20.976 18L21 9a2.997 2.997 0 0 0-1.384-2.52zM6 18l1-5H4l5-7-1 5h3l-5 7zm12-8a1 1 0 1 1 0-2 1 1 0 0 1 0 2z\"}}]})(props);\n};\nexport function BiSolidExit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5.002 21h14c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2h-14c-1.103 0-2 .897-2 2v6.001H10V7l6 5-6 5v-3.999H3.002V19c0 1.103.897 2 2 2z\"}}]})(props);\n};\nexport function BiSolidExtension (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 10V7c0-1.103-.897-2-2-2h-3c0-1.654-1.346-3-3-3S8 3.346 8 5H5c-1.103 0-2 .897-2 2v4h1a2 2 0 0 1 0 4H3v4c0 1.103.897 2 2 2h4v-1a2 2 0 0 1 4 0v1h4c1.103 0 2-.897 2-2v-3c1.654 0 3-1.346 3-3s-1.346-3-3-3z\"}}]})(props);\n};\nexport function BiSolidEyedropper (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m4 15.76-1 4A1 1 0 0 0 3.75 21a1 1 0 0 0 .49 0l4-1a1 1 0 0 0 .47-.26L17 11.41l1.29 1.3 1.42-1.42-1.3-1.29L21 7.41a2 2 0 0 0 0-2.82L19.41 3a2 2 0 0 0-2.82 0L14 5.59l-1.3-1.3-1.42 1.42L12.58 7l-8.29 8.29a1 1 0 0 0-.29.47zm1.87.75L14 8.42 15.58 10l-8.09 8.1-2.12.53z\"}}]})(props);\n};\nexport function BiSolidFaceMask (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12c0 2.521.945 4.82 2.49 6.582 1.24 1.52 3.266 3.066 6.439 3.358a9.731 9.731 0 0 0 2.141 0c3.174-.292 5.199-1.839 6.439-3.358A9.948 9.948 0 0 0 22 12c0-5.514-4.486-10-10-10zM4.709 8.724c.154.09.308.182.456.276.396.25.791.5 1.286.688.494.187 1.088.312 1.879.312.792 0 1.386-.125 1.881-.313s.891-.437 1.287-.687.792-.5 1.287-.688c.494-.187 1.088-.312 1.88-.312s1.386.125 1.88.313c.495.187.891.437 1.287.687s.792.5 1.287.688c.178.067.374.122.581.171.191.682.3 1.398.3 2.141 0 .843-.133 1.654-.375 2.417-.261.195-.733.474-1.577.756-.769.256-1.672.458-2.685.602a25.337 25.337 0 0 1-6.727 0c-1.013-.144-1.916-.346-2.685-.602-.844-.282-1.316-.561-1.577-.756a7.953 7.953 0 0 1 .335-5.693z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8.5\",\"cy\":\"12.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15.5\",\"cy\":\"12.5\",\"r\":\"1.5\"}}]})(props);\n};\nexport function BiSolidFace (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8 0-1.168.258-2.275.709-3.276.154.09.308.182.456.276.396.25.791.5 1.286.688.494.187 1.088.312 1.879.312.792 0 1.386-.125 1.881-.313s.891-.437 1.287-.687.792-.5 1.287-.688c.494-.187 1.088-.312 1.88-.312s1.386.125 1.88.313c.495.187.891.437 1.287.687s.792.5 1.287.688c.178.067.374.122.581.171.191.682.3 1.398.3 2.141 0 4.411-3.589 8-8 8z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8.5\",\"cy\":\"12.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15.5\",\"cy\":\"12.5\",\"r\":\"1.5\"}}]})(props);\n};\nexport function BiSolidFactory (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 10V6l-5 4V6l-5 4V4H2v16h20V6l-5 4zm-8 7H7v-3h2v3zm5 0h-2v-3h2v3zm5 0h-2v-3h2v3z\"}}]})(props);\n};\nexport function BiSolidFastForwardCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.485 2 2 6.485 2 12s4.485 10 10 10c5.514 0 10-4.485 10-10S17.514 2 12 2zm1 14v-4l-6 4V8l6 4V8l6 4-6 4z\"}}]})(props);\n};\nexport function BiSolidFileArchive (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 2a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6h-3v2H9v2h2v2H9v2h2v8H7v-6h2v-2H7V8h2V6H7V4h2V2H6zm7 2 5 5h-5V4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M8 15h2v2H8z\"}}]})(props);\n};\nexport function BiSolidFileBlank (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 2a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6H6zm8 7h-1V4l5 5h-4z\"}}]})(props);\n};\nexport function BiSolidFileCss (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zM9.446 17.412c.275 0 .581-.061.762-.132l.138.713c-.168.084-.546.174-1.037.174-1.397 0-2.117-.869-2.117-2.021C7.191 14.768 8.175 14 9.398 14c.474 0 .833.096.995.18l-.186.726a1.98 1.98 0 0 0-.768-.149c-.726 0-1.29.438-1.29 1.337.001.808.482 1.318 1.297 1.318zm2.491.755c-.461 0-.917-.119-1.145-.245l.186-.756c.246.126.624.252 1.014.252.42 0 .642-.174.642-.438 0-.252-.192-.396-.678-.57-.672-.234-1.109-.605-1.109-1.193 0-.689.575-1.217 1.529-1.217.455 0 .791.096 1.031.203l-.204.738a1.919 1.919 0 0 0-.846-.192c-.396 0-.587.181-.587.39 0 .258.228.372.749.57.714.264 1.05.636 1.05 1.205-.001.678-.523 1.253-1.632 1.253zm3.24 0c-.461 0-.917-.119-1.145-.245l.186-.756c.246.126.624.252 1.014.252.42 0 .642-.174.642-.438 0-.252-.192-.396-.678-.57-.672-.234-1.109-.605-1.109-1.193 0-.689.575-1.217 1.529-1.217.455 0 .791.096 1.031.203l-.204.738a1.919 1.919 0 0 0-.846-.192c-.396 0-.587.181-.587.39 0 .258.228.372.749.57.714.264 1.05.636 1.05 1.205 0 .678-.523 1.253-1.632 1.253zM14 9h-1V4l5 5h-4z\"}}]})(props);\n};\nexport function BiSolidFileDoc (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.186 14.552c-.617 0-.977.587-.977 1.373 0 .791.371 1.35.983 1.35.617 0 .971-.588.971-1.374 0-.726-.348-1.349-.977-1.349z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zM9.155 17.454c-.426.354-1.073.521-1.864.521-.475 0-.81-.03-1.038-.06v-3.971a8.16 8.16 0 0 1 1.235-.083c.768 0 1.266.138 1.655.432.42.312.684.81.684 1.522 0 .775-.282 1.309-.672 1.639zm2.99.546c-1.2 0-1.901-.906-1.901-2.058 0-1.211.773-2.116 1.967-2.116 1.241 0 1.919.929 1.919 2.045-.001 1.325-.805 2.129-1.985 2.129zm4.655-.762c.275 0 .581-.061.762-.132l.138.713c-.168.084-.546.174-1.037.174-1.397 0-2.117-.869-2.117-2.021 0-1.379.983-2.146 2.207-2.146.474 0 .833.096.995.18l-.186.726a1.979 1.979 0 0 0-.768-.15c-.726 0-1.29.438-1.29 1.338 0 .809.48 1.318 1.296 1.318zM14 9h-1V4l5 5h-4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7.584 14.563c-.203 0-.335.018-.413.036v2.645c.078.018.204.018.317.018.828.006 1.367-.449 1.367-1.415.006-.84-.485-1.284-1.271-1.284z\"}}]})(props);\n};\nexport function BiSolidFileExport (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 22a2 2 0 0 0 2-2v-5l-5 4v-3H8v-2h7v-3l5 4V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12zM13 4l5 5h-5V4z\"}}]})(props);\n};\nexport function BiSolidFileFind (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 22h12c.178 0 .348-.03.512-.074l-3.759-3.759A4.966 4.966 0 0 1 12 19c-2.757 0-5-2.243-5-5s2.243-5 5-5 5 2.243 5 5a4.964 4.964 0 0 1-.833 2.753l3.759 3.759c.044-.164.074-.334.074-.512V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"14\",\"r\":\"3\"}}]})(props);\n};\nexport function BiSolidFileGif (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm-2.667 15.772A4.512 4.512 0 0 1 9.984 18c-.737 0-1.271-.186-1.644-.546-.371-.348-.575-.875-.569-1.469.006-1.344.983-2.111 2.309-2.111.521 0 .924.103 1.121.198l-.191.731c-.222-.096-.498-.174-.941-.174-.762 0-1.338.432-1.338 1.308 0 .833.522 1.325 1.271 1.325.21 0 .378-.024.45-.061v-.846h-.624v-.713h1.505v2.13zm1.634.186h-.918v-4.042h.918v4.042zm3.262-3.292h-1.553v.923h1.451v.744h-1.451v1.625h-.918v-4.042h2.471v.75zM14 9h-1V4l5 5h-4z\"}}]})(props);\n};\nexport function BiSolidFileHtml (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm-1 2 5 5h-5V4zM8.531 18h-.76v-1.411H6.515V18h-.767v-3.373h.767v1.296h1.257v-1.296h.76V18zm3-2.732h-.921V18h-.766v-2.732h-.905v-.641h2.592v.641zM14.818 18l-.05-1.291c-.017-.405-.03-.896-.03-1.387h-.016c-.104.431-.245.911-.375 1.307l-.41 1.316h-.597l-.359-1.307a15.154 15.154 0 0 1-.306-1.316h-.011c-.021.456-.034.976-.059 1.396L12.545 18h-.705l.216-3.373h1.015l.331 1.126c.104.391.21.811.284 1.206h.017c.095-.391.209-.836.32-1.211l.359-1.121h.996L15.563 18h-.745zm3.434 0h-2.108v-3.373h.767v2.732h1.342V18z\"}}]})(props);\n};\nexport function BiSolidFileImage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 22h12a2 2 0 0 0 2-2V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2zm7-18 5 5h-5V4zm-4.5 7a1.5 1.5 0 1 1-.001 3.001A1.5 1.5 0 0 1 8.5 11zm.5 5 1.597 1.363L13 13l4 6H7l2-3z\"}}]})(props);\n};\nexport function BiSolidFileImport (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 14V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-4h-7v3l-5-4 5-4v3h7zM13 4l5 5h-5V4z\"}}]})(props);\n};\nexport function BiSolidFileJpg (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zM9.239 16.446c0 1.152-.551 1.554-1.438 1.554-.21 0-.486-.036-.665-.097l.101-.737c.127.042.289.072.469.072.384 0 .623-.174.623-.804v-2.543h.911v2.555zm3.294-.365c-.313.293-.773.426-1.313.426-.12 0-.228-.007-.312-.019v1.445h-.906v-3.988a7.528 7.528 0 0 1 1.236-.083c.563 0 .965.107 1.234.323.259.204.433.54.433.936s-.133.732-.372.96zm4.331 1.667c-.28.096-.815.228-1.349.228-.737 0-1.271-.186-1.643-.546-.371-.348-.575-.875-.57-1.469.007-1.344.983-2.111 2.309-2.111.521 0 .924.103 1.121.198l-.191.731c-.222-.096-.497-.174-.941-.174-.761 0-1.338.432-1.338 1.308 0 .833.523 1.325 1.271 1.325.211 0 .378-.024.451-.061v-.846h-.624v-.713h1.504v2.13zM14 9h-1V4l5 5h-4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11.285 14.552c-.186 0-.312.018-.377.036v1.193c.077.018.174.023.307.023.484 0 .784-.246.784-.659 0-.372-.257-.593-.714-.593z\"}}]})(props);\n};\nexport function BiSolidFileJs (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm-2.745 14.186c0 1.345-.644 1.814-1.681 1.814-.245 0-.567-.042-.777-.112l.119-.861c.147.049.336.084.546.084.448 0 .729-.203.729-.938v-2.97h1.064v2.983zm2.043 1.807c-.539 0-1.071-.141-1.337-.287l.217-.883c.287.147.729.294 1.184.294.491 0 .749-.203.749-.511 0-.295-.224-.463-.791-.666-.784-.272-1.295-.707-1.295-1.394 0-.806.672-1.422 1.786-1.422.533 0 .925.112 1.205.238l-.238.861c-.189-.091-.525-.224-.987-.224s-.687.21-.687.455c0 .301.267.435.875.665.834.309 1.226.742 1.226 1.408-.002.793-.61 1.466-1.907 1.466zM14 9h-1V4l5 5h-4z\"}}]})(props);\n};\nexport function BiSolidFileJson (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.823 15.122c-.517 0-.816.491-.816 1.146 0 .661.311 1.126.82 1.126.517 0 .812-.49.812-1.146 0-.604-.291-1.126-.816-1.126z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zM8.022 16.704c0 .961-.461 1.296-1.2 1.296-.176 0-.406-.029-.557-.08l.086-.615c.104.035.239.06.391.06.319 0 .52-.145.52-.67v-2.122h.761v2.131zm1.459 1.291c-.385 0-.766-.1-.955-.205l.155-.631c.204.105.521.211.846.211.35 0 .534-.146.534-.365 0-.211-.159-.331-.564-.476-.562-.195-.927-.506-.927-.996 0-.576.481-1.017 1.277-1.017.38 0 .659.08.861.171l-.172.615c-.135-.065-.375-.16-.705-.16s-.491.15-.491.325c0 .215.19.311.627.476.596.22.876.53.876 1.006.001.566-.436 1.046-1.362 1.046zm3.306.005c-1.001 0-1.586-.755-1.586-1.716 0-1.012.646-1.768 1.642-1.768 1.035 0 1.601.776 1.601 1.707C14.443 17.33 13.773 18 12.787 18zm4.947-.055h-.802l-.721-1.302a12.64 12.64 0 0 1-.585-1.19l-.016.005c.021.445.031.921.031 1.472v1.016h-.701v-3.373h.891l.701 1.236c.2.354.4.775.552 1.155h.014c-.05-.445-.065-.9-.065-1.406v-.985h.702v3.372zM14 9h-1V4l5 5h-4z\"}}]})(props);\n};\nexport function BiSolidFileMd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14.481 14.015c-.238 0-.393.021-.483.042v3.089c.091.021.237.021.371.021.966.007 1.597-.525 1.597-1.653.007-.981-.568-1.499-1.485-1.499z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm-2.934 15.951-.07-1.807a53.142 53.142 0 0 1-.042-1.94h-.021a26.098 26.098 0 0 1-.525 1.828l-.574 1.842H9l-.504-1.828a21.996 21.996 0 0 1-.428-1.842h-.013c-.028.638-.049 1.366-.084 1.954l-.084 1.793h-.988L7.2 13.23h1.422l.462 1.576c.147.546.295 1.135.399 1.688h.021a39.87 39.87 0 0 1 .448-1.694l.504-1.569h1.394l.26 4.721h-1.044zm5.25-.56c-.498.413-1.253.609-2.178.609a9.27 9.27 0 0 1-1.212-.07v-4.636a9.535 9.535 0 0 1 1.443-.099c.896 0 1.478.161 1.933.505.49.364.799.945.799 1.778 0 .904-.33 1.528-.785 1.913zM14 9h-1V4l5 5h-4z\"}}]})(props);\n};\nexport function BiSolidFilePdf (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8.267 14.68c-.184 0-.308.018-.372.036v1.178c.076.018.171.023.302.023.479 0 .774-.242.774-.651 0-.366-.254-.586-.704-.586zm3.487.012c-.2 0-.33.018-.407.036v2.61c.077.018.201.018.313.018.817.006 1.349-.444 1.349-1.396.006-.83-.479-1.268-1.255-1.268z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zM9.498 16.19c-.309.29-.765.42-1.296.42a2.23 2.23 0 0 1-.308-.018v1.426H7v-3.936A7.558 7.558 0 0 1 8.219 14c.557 0 .953.106 1.22.319.254.202.426.533.426.923-.001.392-.131.723-.367.948zm3.807 1.355c-.42.349-1.059.515-1.84.515-.468 0-.799-.03-1.024-.06v-3.917A7.947 7.947 0 0 1 11.66 14c.757 0 1.249.136 1.633.426.415.308.675.799.675 1.504 0 .763-.279 1.29-.663 1.615zM17 14.77h-1.532v.911H16.9v.734h-1.432v1.604h-.906V14.03H17v.74zM14 9h-1V4l5 5h-4z\"}}]})(props);\n};\nexport function BiSolidFilePlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 22h12a2 2 0 0 0 2-2V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2zm7-18 5 5h-5V4zM8 14h3v-3h2v3h3v2h-3v3h-2v-3H8v-2z\"}}]})(props);\n};\nexport function BiSolidFilePng (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7.782 14.576c-.186 0-.312.018-.377.036v1.193c.077.018.174.023.306.023.485 0 .785-.246.785-.659 0-.371-.258-.593-.714-.593z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zM9.03 16.105c-.313.293-.774.426-1.313.426-.12 0-.229-.007-.312-.019v1.445h-.906V13.97a7.504 7.504 0 0 1 1.235-.083c.563 0 .966.107 1.235.323.258.204.432.54.432.936s-.131.731-.371.959zm4.302 1.853h-.96l-.863-1.56c-.24-.432-.504-.953-.701-1.427l-.019.006c.024.534.036 1.104.036 1.763v1.218h-.84v-4.042h1.067l.84 1.481c.24.426.479.93.659 1.385h.019a14.746 14.746 0 0 1-.078-1.685v-1.182h.84v4.043zm4.169-.186a4.512 4.512 0 0 1-1.349.228c-.737 0-1.271-.186-1.644-.546-.371-.348-.575-.875-.569-1.469.006-1.344.983-2.111 2.309-2.111.521 0 .924.103 1.121.198l-.191.731c-.222-.096-.498-.174-.941-.174-.762 0-1.338.432-1.338 1.308 0 .833.522 1.325 1.271 1.325.21 0 .378-.024.45-.061v-.846h-.624v-.713h1.505v2.13zM14 9h-1V4l5 5h-4z\"}}]})(props);\n};\nexport function BiSolidFileTxt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zM9.998 14.768H8.895v3.274h-.917v-3.274H6.893V14h3.105v.768zm2.725 3.274-.365-.731c-.15-.282-.246-.492-.359-.726h-.013c-.083.233-.185.443-.312.726l-.335.731h-1.045l1.171-2.045L10.336 14h1.05l.354.738c.121.245.21.443.306.671h.013c.096-.258.174-.438.276-.671l.341-.738h1.043l-1.139 1.973 1.198 2.069h-1.055zm4.384-3.274h-1.104v3.274h-.917v-3.274h-1.085V14h3.105v.768zM14 9h-1V4l5 5h-4z\"}}]})(props);\n};\nexport function BiSolidFile (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 22a2 2 0 0 0 2-2V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12zM13 4l5 5h-5V4zM7 8h3v2H7V8zm0 4h10v2H7v-2zm0 4h10v2H7v-2z\"}}]})(props);\n};\nexport function BiSolidFilm (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 4v1h-2V3H7v2H5V3H3v18h2v-2h2v2h10v-2h2v2h2V3h-2v1zM5 7h2v2H5V7zm0 4h2v2H5v-2zm0 6v-2h2v2H5zm12 0v-2h2v2h-2zm2-4h-2v-2h2v2zm-2-4V7h2v2h-2z\"}}]})(props);\n};\nexport function BiSolidFilterAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 20v-4.586L20.414 8c.375-.375.586-.884.586-1.415V4a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v2.585c0 .531.211 1.04.586 1.415L11 15.414V22l2-2z\"}}]})(props);\n};\nexport function BiSolidFirstAid (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 6h-3V4a2 2 0 0 0-2-2H9a2 2 0 0 0-2 2v2H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2zM9 4h6v2H9zm7 10h-3v3h-2v-3H8v-2h3V9h2v3h3z\"}}]})(props);\n};\nexport function BiSolidFlagAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m14.303 6-3-2H6V2H4v20h2v-8h4.697l3 2H20V6z\"}}]})(props);\n};\nexport function BiSolidFlagCheckered (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 2v18H3v2h4v-2H6v-5h13a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1H6V2H4zm4 3v2h2V5h2v2h2V5h2v2h2v2h-2v2h2v2h-2v-2h-2v2h-2v-2h-2v2H8v-2H6V9h2V7H6V5h2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M8 9h2v2H8zm4 0h2v2h-2zm-2-2h2v2h-2zm4 0h2v2h-2z\"}}]})(props);\n};\nexport function BiSolidFlag (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 4H6V2H4v18H3v2h4v-2H6v-5h13a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1z\"}}]})(props);\n};\nexport function BiSolidFlame (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.579 2.393a.982.982 0 0 0-1.153.006C9.592 3.728 4 8.252 4 14c0 3.247 1.948 6.043 4.734 7.296A3.971 3.971 0 0 1 8 19c-.017-3.221 3.558-6.893 3.71-7a.497.497 0 0 1 .579 0c.152.107 3.711 2.974 3.711 7.002 0 .854-.275 1.643-.733 2.294C18.052 20.043 20 17.248 20 14.005c0-5.861-5.582-10.307-7.421-11.612z\"}}]})(props);\n};\nexport function BiSolidFlask (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 9.783V4h1V2H8v2h1v5.783l-4.268 9.389a1.992 1.992 0 0 0 .14 1.911A1.99 1.99 0 0 0 6.553 22h10.895a1.99 1.99 0 0 0 1.681-.917c.37-.574.423-1.289.14-1.911L15 9.783zm-4.09.631c.06-.13.09-.271.09-.414V4h2v6c0 .143.03.284.09.414L15.177 15H8.825l2.085-4.586z\"}}]})(props);\n};\nexport function BiSolidFlorist (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10.84 21.871 12 22a10.221 10.221 0 0 0-9.013-8.891L2 13l.021.173a10.001 10.001 0 0 0 8.819 8.698zm11.139-8.698L22 13l-.987.109c-4.7.523-8.427 4.2-9.013 8.891l1.16-.129a10.001 10.001 0 0 0 8.819-8.698zM18.063 5.5a2.5 2.5 0 0 0-3.415-.915c-.062.035-.111.081-.168.121.005-.069.02-.136.02-.206a2.5 2.5 0 1 0-5 0c0 .07.015.137.021.206-.057-.04-.107-.086-.168-.121a2.5 2.5 0 0 0-2.5 4.33c.061.035.126.056.188.085-.062.029-.127.05-.188.085a2.5 2.5 0 0 0 2.5 4.33c.062-.035.111-.081.168-.121-.006.069-.021.136-.021.206a2.5 2.5 0 1 0 5 0c0-.07-.015-.137-.021-.206.057.04.106.086.168.121a2.5 2.5 0 0 0 2.5-4.33c-.061-.035-.126-.056-.188-.085.063-.029.127-.05.188-.085a2.5 2.5 0 0 0 .916-3.415zM12 12a3 3 0 1 1 0-6 3 3 0 0 1 0 6z\"}}]})(props);\n};\nexport function BiSolidFolderMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 5h-9.586L8.707 3.293A.997.997 0 0 0 8 3H4c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V7c0-1.103-.897-2-2-2zm-4 9H8v-2h8v2z\"}}]})(props);\n};\nexport function BiSolidFolderOpen (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2.165 19.551c.186.28.499.449.835.449h15c.4 0 .762-.238.919-.606l3-7A.998.998 0 0 0 21 11h-1V8c0-1.103-.897-2-2-2h-6.655L8.789 4H4c-1.103 0-2 .897-2 2v13h.007a1 1 0 0 0 .158.551zM18 8v3H6c-.4 0-.762.238-.919.606L4 14.129V8h14z\"}}]})(props);\n};\nexport function BiSolidFolderPlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 5h-9.586L8.707 3.293A.997.997 0 0 0 8 3H4c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V7c0-1.103-.897-2-2-2zm-4 9h-3v3h-2v-3H8v-2h3V9h2v3h3v2z\"}}]})(props);\n};\nexport function BiSolidFolder (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 5h-9.586L8.707 3.293A.997.997 0 0 0 8 3H4c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V7c0-1.103-.897-2-2-2z\"}}]})(props);\n};\nexport function BiSolidFoodMenu (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 2h2v20H3zm16 0H6v20h13c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zm-1 10H9v-2h9v2zm0-4H9V6h9v2z\"}}]})(props);\n};\nexport function BiSolidFridge (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 2H6c-1.103 0-2 .897-2 2v5h4V6h2v3h10V4c0-1.103-.897-2-2-2zm-8 13H8v-5H4v10c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2V10H10v5z\"}}]})(props);\n};\nexport function BiSolidGame (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 22c3.719 0 7.063-2.035 8.809-5.314L13 12l7.809-4.686C19.063 4.035 15.719 2 12 2 6.486 2 2 6.486 2 12s4.486 10 10 10zm-.5-16a1.5 1.5 0 1 1-.001 3.001A1.5 1.5 0 0 1 11.5 6z\"}}]})(props);\n};\nexport function BiSolidGasPump (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m19.616 6.48.014-.017-4-3.24-1.26 1.554 2.067 1.674a2.99 2.99 0 0 0-1.394 3.062c.15.899.769 1.676 1.57 2.111.895.487 1.68.442 2.378.194L18.976 18a.996.996 0 0 1-1.39.922.995.995 0 0 1-.318-.217.996.996 0 0 1-.291-.705L17 16a2.98 2.98 0 0 0-.877-2.119A3 3 0 0 0 14 13h-1V5a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h7a2 2 0 0 0 2-2v-4h1c.136 0 .267.027.391.078a1.028 1.028 0 0 1 .531.533A.994.994 0 0 1 15 16l-.024 2c0 .406.079.799.236 1.168.151.359.368.68.641.951a2.97 2.97 0 0 0 2.123.881c.406 0 .798-.078 1.168-.236.358-.15.68-.367.951-.641A2.983 2.983 0 0 0 20.976 18L21 9a2.997 2.997 0 0 0-1.384-2.52zM11 8H4V5h7v3zm7 2a1 1 0 1 1 0-2 1 1 0 0 1 0 2z\"}}]})(props);\n};\nexport function BiSolidGhost (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 11v8h.051c.245 1.692 1.69 3 3.449 3 1.174 0 2.074-.417 2.672-1.174a3.99 3.99 0 0 0 5.668-.014c.601.762 1.504 1.188 2.66 1.188 1.93 0 3.5-1.57 3.5-3.5V11c0-4.962-4.037-9-9-9s-9 4.038-9 9zm6 1c-1.103 0-2-.897-2-2s.897-2 2-2 2 .897 2 2-.897 2-2 2zm6-4c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2z\"}}]})(props);\n};\nexport function BiSolidGift (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 12H4v8a2 2 0 0 0 2 2h5V12H5zm13 0h-5v10h5a2 2 0 0 0 2-2v-8h-2zm.791-5A4.92 4.92 0 0 0 19 5.5C19 3.57 17.43 2 15.5 2c-1.622 0-2.705 1.482-3.404 3.085C11.407 3.57 10.269 2 8.5 2 6.57 2 5 3.57 5 5.5c0 .596.079 1.089.209 1.5H2v4h9V9h2v2h9V7h-3.209zM7 5.5C7 4.673 7.673 4 8.5 4c.888 0 1.714 1.525 2.198 3H8c-.374 0-1 0-1-1.5zM15.5 4c.827 0 1.5.673 1.5 1.5C17 7 16.374 7 16 7h-2.477c.51-1.576 1.251-3 1.977-3z\"}}]})(props);\n};\nexport function BiSolidGraduation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2 7v1l11 4 9-4V7L11 4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M4 11v4.267c0 1.621 4.001 3.893 9 3.734 4-.126 6.586-1.972 7-3.467.024-.089.037-.178.037-.268V11L13 14l-5-1.667v3.213l-1-.364V12l-3-1z\"}}]})(props);\n};\nexport function BiSolidGridAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 11h6a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1zm10 0h6a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1h-6a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1zM4 21h6a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1zm10 0h6a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1h-6a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1z\"}}]})(props);\n};\nexport function BiSolidGrid (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 4h4v4H4zm6 0h4v4h-4zm6 0h4v4h-4zM4 10h4v4H4zm6 0h4v4h-4zm6 0h4v4h-4zM4 16h4v4H4zm6 0h4v4h-4zm6 0h4v4h-4z\"}}]})(props);\n};\nexport function BiSolidGroup (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9.5 12c2.206 0 4-1.794 4-4s-1.794-4-4-4-4 1.794-4 4 1.794 4 4 4zm1.5 1H8c-3.309 0-6 2.691-6 6v1h15v-1c0-3.309-2.691-6-6-6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M16.604 11.048a5.67 5.67 0 0 0 .751-3.44c-.179-1.784-1.175-3.361-2.803-4.44l-1.105 1.666c1.119.742 1.8 1.799 1.918 2.974a3.693 3.693 0 0 1-1.072 2.986l-1.192 1.192 1.618.475C18.951 13.701 19 17.957 19 18h2c0-1.789-.956-5.285-4.396-6.952z\"}}]})(props);\n};\nexport function BiSolidGuitarAmp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 6h-2V4c0-1.103-.897-2-2-2H8c-1.103 0-2 .897-2 2v2H4c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V8c0-1.103-.897-2-2-2zM8 4h8v2H8V4zM6 19a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm0-3a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm3 3a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm0-3a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm3 3a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm0-3a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm3 3a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm0-3a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm3 3a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm0-3a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm2-4H4V8h16v4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14 9h2v2h-2zm3 0h2v2h-2z\"}}]})(props);\n};\nexport function BiSolidHandDown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.278 2.231a1.001 1.001 0 0 0-.64-.231H5a2 2 0 0 0-2 2v7.21a2 2 0 0 0 1.779 1.987L12 14v6a2 2 0 0 0 4 0V8l3.03 1.212a2.001 2.001 0 0 0 2.641-1.225l.113-.34a.998.998 0 0 0-.309-1.084l-5.197-4.332z\"}}]})(props);\n};\nexport function BiSolidHandLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3h-7.21a2 2 0 0 0-1.987 1.779L10 12H4a2 2 0 0 0 0 4h12l-1.212 3.03a2.001 2.001 0 0 0 1.225 2.641l.34.113a.998.998 0 0 0 1.084-.309l4.332-5.197c.149-.179.231-.406.231-.64V5a2 2 0 0 0-2-2z\"}}]})(props);\n};\nexport function BiSolidHandRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 8H8l1.212-3.03a2 2 0 0 0-1.225-2.641l-.34-.113a.998.998 0 0 0-1.084.309L2.231 7.722a1.001 1.001 0 0 0-.231.64V19a2 2 0 0 0 2 2h7.21a2 2 0 0 0 1.987-1.779L14 12h6a2 2 0 0 0 0-4z\"}}]})(props);\n};\nexport function BiSolidHandUp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.221 10.803 12 10V4a2 2 0 0 0-4 0v12l-3.031-1.212a2 2 0 0 0-2.64 1.225l-.113.34a.998.998 0 0 0 .309 1.084l5.197 4.332c.179.149.406.231.64.231H19a2 2 0 0 0 2-2v-7.21a2 2 0 0 0-1.779-1.987z\"}}]})(props);\n};\nexport function BiSolidHand (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.5 5A1.5 1.5 0 0 0 19 6.5V11h-1V4.5a1.5 1.5 0 0 0-3 0V11h-1V3.5a1.5 1.5 0 0 0-3 0V11h-1V5.5a1.5 1.5 0 0 0-3 0v10.81l-2.22-3.6a1.5 1.5 0 0 0-2.56 1.58l3.31 5.34A5 5 0 0 0 9.78 22H17a5 5 0 0 0 5-5V6.5A1.5 1.5 0 0 0 20.5 5z\"}}]})(props);\n};\nexport function BiSolidHappyAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm3.493 6a1.494 1.494 0 1 1-.001 2.987A1.494 1.494 0 0 1 15.493 8zM8.5 8a1.5 1.5 0 1 1-.001 3.001A1.5 1.5 0 0 1 8.5 8zM12 18c-5 0-6-5-6-5h12s-1 5-6 5z\"}}]})(props);\n};\nexport function BiSolidHappyBeaming (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zM8 9c2.201 0 3 1.794 3 3H9c-.012-.45-.194-1-1-1s-.988.55-1 1.012L5 12c0-1.206.799-3 3-3zm4 9c-4 0-5-4-5-4h10s-1 4-5 4zm5-6c-.012-.45-.194-1-1-1s-.988.55-1 1.012L13 12c0-1.206.799-3 3-3s3 1.794 3 3h-2z\"}}]})(props);\n};\nexport function BiSolidHappyHeartEyes (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zM6.435 8.467A1.49 1.49 0 0 1 8.502 8.4a1.49 1.49 0 0 1 2.065.033c.597.592.604 1.521.018 2.118l-2.05 2.083-2.082-2.05a1.484 1.484 0 0 1-.018-2.117zM12 18c-4 0-5-4-5-4h10s-1 4-5 4zm5.585-7.449-2.05 2.083-2.082-2.05a1.485 1.485 0 0 1-.019-2.117 1.49 1.49 0 0 1 2.068-.067 1.49 1.49 0 0 1 2.065.033c.597.591.605 1.521.018 2.118z\"}}]})(props);\n};\nexport function BiSolidHappy (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm3.493 7a1.494 1.494 0 1 1-.001 2.987A1.494 1.494 0 0 1 15.493 9zM8.5 9a1.5 1.5 0 1 1-.001 3.001A1.5 1.5 0 0 1 8.5 9zm3.5 9c-4 0-5-4-5-4h10s-1 4-5 4z\"}}]})(props);\n};\nexport function BiSolidHardHat (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 18v-3a8 8 0 0 0-5-7.4V13h-1V5h-4v8H9V7.6A8 8 0 0 0 4 15v3H2v2h20v-2z\"}}]})(props);\n};\nexport function BiSolidHdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 13H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2zm-4 5h-2v-2h2v2zm4 0h-2v-2h2v2zm.775-7H21l-1.652-7.434A2 2 0 0 0 17.396 2H6.604a2 2 0 0 0-1.952 1.566L3 11h17.775z\"}}]})(props);\n};\nexport function BiSolidHeartCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm4.186 10.74L12 16.926 7.814 12.74a2.745 2.745 0 0 1 0-3.907 2.745 2.745 0 0 1 3.906 0l.28.279.279-.279a2.745 2.745 0 0 1 3.906 0 2.745 2.745 0 0 1 .001 3.907z\"}}]})(props);\n};\nexport function BiSolidHeartSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 21h16a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1zM7.812 8.907a2.746 2.746 0 0 1 3.907 0l.279.279.278-.279a2.746 2.746 0 0 1 3.907 0 2.745 2.745 0 0 1 0 3.907L11.998 17l-4.187-4.186a2.747 2.747 0 0 1 .001-3.907z\"}}]})(props);\n};\nexport function BiSolidHeart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.205 4.791a5.938 5.938 0 0 0-4.209-1.754A5.906 5.906 0 0 0 12 4.595a5.904 5.904 0 0 0-3.996-1.558 5.942 5.942 0 0 0-4.213 1.758c-2.353 2.363-2.352 6.059.002 8.412L12 21.414l8.207-8.207c2.354-2.353 2.355-6.049-.002-8.416z\"}}]})(props);\n};\nexport function BiSolidHelpCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm1 16h-2v-2h2v2zm.976-4.885c-.196.158-.385.309-.535.459-.408.407-.44.777-.441.793v.133h-2v-.167c0-.118.029-1.177 1.026-2.174.195-.195.437-.393.691-.599.734-.595 1.216-1.029 1.216-1.627a1.934 1.934 0 0 0-3.867.001h-2C8.066 7.765 9.831 6 12 6s3.934 1.765 3.934 3.934c0 1.597-1.179 2.55-1.958 3.181z\"}}]})(props);\n};\nexport function BiSolidHide (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8.073 12.194 4.212 8.333c-1.52 1.657-2.096 3.317-2.106 3.351L2 12l.105.316C2.127 12.383 4.421 19 12.054 19c.929 0 1.775-.102 2.552-.273l-2.746-2.746a3.987 3.987 0 0 1-3.787-3.787zM12.054 5c-1.855 0-3.375.404-4.642.998L3.707 2.293 2.293 3.707l18 18 1.414-1.414-3.298-3.298c2.638-1.953 3.579-4.637 3.593-4.679l.105-.316-.105-.316C21.98 11.617 19.687 5 12.054 5zm1.906 7.546c.187-.677.028-1.439-.492-1.96s-1.283-.679-1.96-.492L10 8.586A3.955 3.955 0 0 1 12.054 8c2.206 0 4 1.794 4 4a3.94 3.94 0 0 1-.587 2.053l-1.507-1.507z\"}}]})(props);\n};\nexport function BiSolidHomeAlt2 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.74 2.32a1 1 0 0 0-1.48 0l-9 10A1 1 0 0 0 3 14h2v7a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-7h2a1 1 0 0 0 1-1 1 1 0 0 0-.26-.68z\"}}]})(props);\n};\nexport function BiSolidHomeCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.743 12.331-9-10c-.379-.422-1.107-.422-1.486 0l-9 10A1 1 0 0 0 3 14h2v7a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-7h2a.998.998 0 0 0 .743-1.669zM12 16a3 3 0 1 1 0-6 3 3 0 0 1 0 6z\"}}]})(props);\n};\nexport function BiSolidHomeHeart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 14h2v7a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-7h2a.998.998 0 0 0 .913-.593.998.998 0 0 0-.17-1.076l-9-10c-.379-.422-1.107-.422-1.486 0l-9 10A1 1 0 0 0 3 14zm5.653-2.359a2.224 2.224 0 0 1 3.125 0l.224.22.223-.22a2.225 2.225 0 0 1 3.126 0 2.13 2.13 0 0 1 0 3.07L12.002 18l-3.349-3.289a2.13 2.13 0 0 1 0-3.07z\"}}]})(props);\n};\nexport function BiSolidHomeSmile (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 14h2v7a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-7h2a.998.998 0 0 0 .913-.593.998.998 0 0 0-.17-1.076l-9-10c-.379-.422-1.107-.422-1.486 0l-9 10A1 1 0 0 0 3 14zm5.949-.316C8.98 13.779 9.762 16 12 16c2.269 0 3.042-2.287 3.05-2.311l1.9.621C16.901 14.461 15.703 18 12 18s-4.901-3.539-4.95-3.689l1.899-.627z\"}}]})(props);\n};\nexport function BiSolidHome (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.743 12.331-9-10c-.379-.422-1.107-.422-1.486 0l-9 10a.998.998 0 0 0-.17 1.076c.16.361.518.593.913.593h2v7a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-4h4v4a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-7h2a.998.998 0 0 0 .743-1.669z\"}}]})(props);\n};\nexport function BiSolidHot (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.5 8c0 1.5-.5 3.5-2.9 4.3.7-1.7.8-3.4.3-5-.7-2.1-3-3.7-4.6-4.6-.4-.3-1.1.1-1 .7 0 1.1-.3 2.7-2 4.4C4.1 10 3 12.3 3 14.5 3 17.4 5 21 9 21c-4-4-1-7.5-1-7.5.8 5.9 5 7.5 7 7.5 1.7 0 5-1.2 5-6.4 0-3.1-1.3-5.5-2.4-6.9-.3-.5-1-.2-1.1.3\"}}]})(props);\n};\nexport function BiSolidHotel (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"8\",\"cy\":\"11\",\"r\":\"3\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M18.205 7H12v8H4V6H2v14h2v-3h16v3h2v-4c0-.009-.005-.016-.005-.024H22V11c0-2.096-1.698-4-3.795-4z\"}}]})(props);\n};\nexport function BiSolidHourglassBottom (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 2H4v2h1v1a7.014 7.014 0 0 0 3.433 6.02c.355.21.567.547.567.901v.158c0 .354-.212.691-.566.9A7.016 7.016 0 0 0 5 19v1H4v2h16v-2h-1v-1a7.016 7.016 0 0 0-3.434-6.021c-.354-.208-.566-.545-.566-.9v-.158c0-.354.212-.69.566-.9A7.016 7.016 0 0 0 19 5V4h1V2H5zm12 3a5.01 5.01 0 0 1-2.45 4.299A3.107 3.107 0 0 0 13.166 11h-2.332a3.114 3.114 0 0 0-1.385-1.702A5.008 5.008 0 0 1 7 5V4h10v1z\"}}]})(props);\n};\nexport function BiSolidHourglassTop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.566 11.021A7.016 7.016 0 0 0 19 5V4h1V2H4v2h1v1a7.016 7.016 0 0 0 3.434 6.021c.354.208.566.545.566.9v.158c0 .354-.212.69-.566.9A7.016 7.016 0 0 0 5 19v1H4v2h16v-2h-1v-1a7.014 7.014 0 0 0-3.433-6.02c-.355-.21-.567-.547-.567-.901v-.158c0-.355.212-.692.566-.9zM17 19v1H7v-1a5.01 5.01 0 0 1 2.45-4.299A3.111 3.111 0 0 0 10.834 13h2.332c.23.691.704 1.3 1.385 1.702A5.008 5.008 0 0 1 17 19z\"}}]})(props);\n};\nexport function BiSolidHourglass (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 22h1v-2h-1v-1a7.014 7.014 0 0 0-3.433-6.02c-.355-.21-.567-.547-.567-.901v-.158c0-.354.212-.691.566-.9A7.016 7.016 0 0 0 19 5V4h1V2H4v2h1v1a7.016 7.016 0 0 0 3.434 6.021c.354.209.566.545.566.9v.158c0 .354-.212.691-.566.9A7.016 7.016 0 0 0 5 19v1H4v2h15zM17 4v1a5.005 5.005 0 0 1-1.004 3H8.004A5.005 5.005 0 0 1 7 5V4h10zM9.45 14.702c.971-.574 1.55-1.554 1.55-2.623V12h2v.079c0 1.068.579 2.049 1.551 2.623A4.98 4.98 0 0 1 16.573 17H7.427a4.977 4.977 0 0 1 2.023-2.298z\"}}]})(props);\n};\nexport function BiSolidIdCard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zM8.715 8c1.151 0 2 .849 2 2s-.849 2-2 2-2-.849-2-2 .848-2 2-2zm3.715 8H5v-.465c0-1.373 1.676-2.785 3.715-2.785s3.715 1.412 3.715 2.785V16zM19 15h-4v-2h4v2zm0-4h-5V9h5v2z\"}}]})(props);\n};\nexport function BiSolidImageAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m9 13 3-4 3 4.5V12h4V5c0-1.103-.897-2-2-2H4c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h8v-4H5l3-4 1 2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 14h-2v3h-3v2h3v3h2v-3h3v-2h-3z\"}}]})(props);\n};\nexport function BiSolidImageAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 21h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2zm3-7 2.363 2.363L14 11l5 7H5l3-4z\"}}]})(props);\n};\nexport function BiSolidImage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.999 4h-16c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zm-13.5 3a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3zm5.5 10h-7l4-5 1.5 2 3-4 5.5 7h-7z\"}}]})(props);\n};\nexport function BiSolidInbox (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4c-1.103 0-2 .897-2 2v14a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V5c0-1.103-.897-2-2-2zm-1 9h-3.142c-.446 1.722-1.997 3-3.858 3s-3.412-1.278-3.858-3H4V5h16v7h-1z\"}}]})(props);\n};\nexport function BiSolidInfoCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z\"}}]})(props);\n};\nexport function BiSolidInfoSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 4v16a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1zm8 3h2v2h-2V7zm0 4h2v6h-2v-6z\"}}]})(props);\n};\nexport function BiSolidInjection (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 5.61 9.24 8.35l3.31 3.31-1.06 1.06-3.31-3.31-1.77 1.77 3.31 3.31-1.06 1.06-3.31-3.31-2 2A2 2 0 0 0 3 16.66l1 1.89-2.25 2.29 1.41 1.41L5.45 20l1.89 1a2 2 0 0 0 1 .26 2 2 0 0 0 1.42-.59L18.39 12zm7.8 3.59-1.79-1.8 1.42-1.41 1.41 1.41 1.41-1.41-4.24-4.24-1.41 1.41 1.41 1.42-1.41 1.41-1.8-1.79-1.74-1.75-1.41 1.42 1.03 1.03v.01l6.41 6.41h.01l1.03 1.03 1.42-1.41-1.74-1.74h-.01z\"}}]})(props);\n};\nexport function BiSolidInstitution (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.857 8.485-3-5A.997.997 0 0 0 18 3h-4.586l-.707-.707a.999.999 0 0 0-1.414 0L10.586 3H6a.997.997 0 0 0-.857.485l-3 5A1.001 1.001 0 0 0 2.002 9H2v10a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V9h-.002c0-.178-.046-.356-.141-.515zM20 18h-6v-4h-4v4H4v-8h2.414l.293-.293 2-2L12 4.414l4.293 4.293 1 1 .293.293H20v8z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"11.895\",\"cy\":\"9.895\",\"r\":\"2.105\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M6 12h2v3H6zm10 0h2v3h-2z\"}}]})(props);\n};\nexport function BiSolidInvader (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 3h2v2H6zm2 16h3v2H8zm8-16h2v2h-2zm-3 16h3v2h-3zm7-8V9h-2V7h-2V5h-2v2h-4V5H8v2H6v2H4v2H2v8h2v-4h2v4h2v-3h8v3h2v-4h2v4h2v-8zm-10 1H8V9h2zm6 0h-2V9h2z\"}}]})(props);\n};\nexport function BiSolidJoystickAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 6H8a6 6 0 0 0 0 12h8a6 6 0 0 0 0-12zm-5 7H9v2H7v-2H5v-2h2V9h2v2h2v2zm3.5 2a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm3-3a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z\"}}]})(props);\n};\nexport function BiSolidJoystickButton (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 8h-4V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v4H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h4v4a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2v-4h4a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2zM7 14l-3-2 3-2v4zm5 6-2-3h4l-2 3zm0-6a2 2 0 1 1 .001-4.001A2 2 0 0 1 12 14zm-2-7 2-3 2 3h-4zm7 7v-4l3 2-3 2z\"}}]})(props);\n};\nexport function BiSolidJoystick (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.986 9.74a3.193 3.193 0 0 0-.008-.088A5.003 5.003 0 0 0 17 5H7a4.97 4.97 0 0 0-4.987 4.737c-.01.079-.013.161-.013.253v6.51c0 .925.373 1.828 1.022 2.476A3.524 3.524 0 0 0 5.5 20c1.8 0 2.504-1 3.5-3 .146-.292.992-2 3-2 1.996 0 2.853 1.707 3 2 1.004 2 1.7 3 3.5 3 .925 0 1.828-.373 2.476-1.022A3.524 3.524 0 0 0 22 16.5V10c0-.095-.004-.18-.014-.26zM7 12.031a2 2 0 1 1-.001-3.999A2 2 0 0 1 7 12.031zm10-5a1 1 0 1 1 0 2 1 1 0 1 1 0-2zm-2 4a1 1 0 1 1 0-2 1 1 0 1 1 0 2zm2 2a1 1 0 1 1 0-2 1 1 0 1 1 0 2zm2-2a1 1 0 1 1 0-2 1 1 0 1 1 0 2z\"}}]})(props);\n};\nexport function BiSolidKey (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3.433 17.325 3.079 19.8a1 1 0 0 0 1.131 1.131l2.475-.354C7.06 20.524 8 18 8 18s.472.405.665.466c.412.13.813-.274.948-.684L10 16.01s.577.292.786.335c.266.055.524-.109.707-.293a.988.988 0 0 0 .241-.391L12 14.01s.675.187.906.214c.263.03.519-.104.707-.293l1.138-1.137a5.502 5.502 0 0 0 5.581-1.338 5.507 5.507 0 0 0 0-7.778 5.507 5.507 0 0 0-7.778 0 5.5 5.5 0 0 0-1.338 5.581l-7.501 7.5a.994.994 0 0 0-.282.566zM18.504 5.506a2.919 2.919 0 0 1 0 4.122l-4.122-4.122a2.919 2.919 0 0 1 4.122 0z\"}}]})(props);\n};\nexport function BiSolidKeyboard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 5H3a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h18a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2zm-8 2h2v2h-2V7zm0 4h2v2h-2v-2zM9 7h2v2H9V7zm0 4h2v2H9v-2zM5 7h2v2H5V7zm0 4h2v2H5v-2zm12 6H7v-2h10v2zm2-4h-2v-2h2v2zm0-4h-2V7h2v2z\"}}]})(props);\n};\nexport function BiSolidLabel (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.813 4.419A.997.997 0 0 0 16 4H3a1 1 0 0 0-.813 1.581L6.771 12l-4.585 6.419A1 1 0 0 0 3 20h13a.997.997 0 0 0 .813-.419l5-7a.997.997 0 0 0 0-1.162l-5-7z\"}}]})(props);\n};\nexport function BiSolidLandmark (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 17h-2V9h2V7a.998.998 0 0 0-.594-.914l-9.432-4.191-8.421 4.21A1 1 0 0 0 2 7v2h2v8H2v4h19v-4zm-5-8v8h-3V9h3zM7 9h3v8H7V9z\"}}]})(props);\n};\nexport function BiSolidLandscape (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"6.5\",\"cy\":\"6.5\",\"r\":\"2.5\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m14 7-5.223 8.487L7 13l-5 7h20z\"}}]})(props);\n};\nexport function BiSolidLaugh (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm-6.447 9.105 2.459-1.229-1.567-1.044 1.109-1.664 3 2a1 1 0 0 1-.108 1.727l-4 2-.893-1.79zM12 18c-4 0-5-4-5-4h10s-1 4-5 4zm5.553-5.105-4-2a1 1 0 0 1-.108-1.727l3-2 1.109 1.664-1.566 1.044 2.459 1.229-.894 1.79z\"}}]})(props);\n};\nexport function BiSolidLayerMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.484 11.125-9.022-5a1 1 0 0 0-.968-.001l-8.978 4.96a1 1 0 0 0-.003 1.749l9.022 5.04a.995.995 0 0 0 .973.001l8.978-5a1 1 0 0 0-.002-1.749z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20.515 15.126 12 19.856l-8.515-4.73-.971 1.748 9 5a1 1 0 0 0 .971 0l9-5-.97-1.748zM16 4h6v2h-6z\"}}]})(props);\n};\nexport function BiSolidLayerPlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m2.513 12.833 9.022 5.04a.995.995 0 0 0 .973.001l8.978-5a1 1 0 0 0-.002-1.749l-9.022-5a1 1 0 0 0-.968-.001l-8.978 4.96a1 1 0 0 0-.003 1.749z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m3.485 15.126-.971 1.748 9 5a1 1 0 0 0 .971 0l9-5-.971-1.748L12 19.856l-8.515-4.73zM20 8V6h2V4h-2V2h-2v2h-2v2h2v2z\"}}]})(props);\n};\nexport function BiSolidLayer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.484 7.125-9.022-5a1.003 1.003 0 0 0-.968 0l-8.978 4.96a1 1 0 0 0-.003 1.748l9.022 5.04a.995.995 0 0 0 .973.001l8.978-5a1 1 0 0 0-.002-1.749z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m12 15.856-8.515-4.73-.971 1.748 9 5a1 1 0 0 0 .971 0l9-5-.971-1.748L12 15.856z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m12 19.856-8.515-4.73-.971 1.748 9 5a1 1 0 0 0 .971 0l9-5-.971-1.748L12 19.856z\"}}]})(props);\n};\nexport function BiSolidLayout (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.103 0-2 .897-2 2v4h18V5c0-1.103-.897-2-2-2zM3 19c0 1.103.897 2 2 2h8V11H3v8zm12 2h4c1.103 0 2-.897 2-2v-8h-6v10z\"}}]})(props);\n};\nexport function BiSolidLeaf (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m22 3.41-.12-1.26-1.2.4a13.84 13.84 0 0 1-6.41.64 11.87 11.87 0 0 0-6.68.9A7.23 7.23 0 0 0 3.3 9.5a9 9 0 0 0 .39 4.58 16.6 16.6 0 0 1 1.18-2.2 9.85 9.85 0 0 1 4.07-3.43 11.16 11.16 0 0 1 5.06-1A12.08 12.08 0 0 0 9.34 9.2a9.48 9.48 0 0 0-1.86 1.53 11.38 11.38 0 0 0-1.39 1.91 16.39 16.39 0 0 0-1.57 4.54A26.42 26.42 0 0 0 4 22h2a30.69 30.69 0 0 1 .59-4.32 9.25 9.25 0 0 0 4.52 1.11 11 11 0 0 0 4.28-.87C23 14.67 22 3.86 22 3.41z\"}}]})(props);\n};\nexport function BiSolidLeftArrowAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m5 12 7 6v-5h6v-2h-6V6z\"}}]})(props);\n};\nexport function BiSolidLeftArrowCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm5 11h-5v4l-5-5 5-5v4h5v2z\"}}]})(props);\n};\nexport function BiSolidLeftArrowSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 21a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14zM12 7v4h5v2h-5v4l-5-5 5-5z\"}}]})(props);\n};\nexport function BiSolidLeftArrow (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m4.431 12.822 13 9A1 1 0 0 0 19 21V3a1 1 0 0 0-1.569-.823l-13 9a1.003 1.003 0 0 0 0 1.645z\"}}]})(props);\n};\nexport function BiSolidLeftDownArrowCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.071 19.071c3.898-3.899 3.898-10.244 0-14.143-3.899-3.899-10.244-3.898-14.143 0-3.898 3.899-3.899 10.243 0 14.143 3.9 3.899 10.244 3.899 14.143 0zM8.464 8.464l2.829 2.829 3.535-3.536 1.414 1.414-3.535 3.536 2.828 2.829H8.464V8.464z\"}}]})(props);\n};\nexport function BiSolidLeftTopArrowCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.071 19.071c3.898-3.899 3.898-10.244 0-14.143-3.899-3.898-10.243-3.898-14.143 0-3.898 3.899-3.898 10.244 0 14.143 3.9 3.899 10.244 3.899 14.143 0zM8.465 8.464h7.07l-2.828 2.829 3.535 3.536-1.414 1.414-3.535-3.536-2.828 2.829V8.464z\"}}]})(props);\n};\nexport function BiSolidLemon (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.45 8.74A2.23 2.23 0 0 1 21.64 7a3.51 3.51 0 0 0 .24-2.47 3.55 3.55 0 0 0-2.45-2.45 3.51 3.51 0 0 0-2.43.28 2.23 2.23 0 0 1-1.7.19 10.07 10.07 0 0 0-6.53 0 9.87 9.87 0 0 0-6.23 6.18 10.07 10.07 0 0 0 0 6.53A2.23 2.23 0 0 1 2.36 17a3.51 3.51 0 0 0-.24 2.47 3.55 3.55 0 0 0 2.45 2.45A3.51 3.51 0 0 0 7 21.64a2.23 2.23 0 0 1 1.7-.19A9.83 9.83 0 0 0 12 22a10.33 10.33 0 0 0 3.27-.54 9.87 9.87 0 0 0 6.19-6.19 10.07 10.07 0 0 0-.01-6.53zM12 7a5 5 0 0 0-5 5H5a7 7 0 0 1 7-7z\"}}]})(props);\n};\nexport function BiSolidLike (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 21h1V8H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2zM20 8h-7l1.122-3.368A2 2 0 0 0 12.225 2H12L7 7.438V21h11l3.912-8.596L22 12v-2a2 2 0 0 0-2-2z\"}}]})(props);\n};\nexport function BiSolidLocationPlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 22s8.029-5.56 8-12c0-4.411-3.589-8-8-8S4 5.589 4 9.995C3.971 16.44 11.696 21.784 12 22zM8 9h3V6h2v3h3v2h-3v3h-2v-3H8V9z\"}}]})(props);\n};\nexport function BiSolidLockAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 12c0-1.103-.897-2-2-2h-1V7c0-2.757-2.243-5-5-5S7 4.243 7 7v3H6c-1.103 0-2 .897-2 2v8c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2v-8zM9 7c0-1.654 1.346-3 3-3s3 1.346 3 3v3H9V7z\"}}]})(props);\n};\nexport function BiSolidLockOpenAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 8V7c0-2.757-2.243-5-5-5S7 4.243 7 7v3H6c-1.103 0-2 .897-2 2v8c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2v-8c0-1.103-.897-2-2-2H9V7c0-1.654 1.346-3 3-3s3 1.346 3 3v1h2z\"}}]})(props);\n};\nexport function BiSolidLockOpen (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 10H9V7c0-1.654 1.346-3 3-3s3 1.346 3 3h2c0-2.757-2.243-5-5-5S7 4.243 7 7v3H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8a2 2 0 0 0-2-2zm-7.939 5.499A2.002 2.002 0 0 1 14 16a1.99 1.99 0 0 1-1 1.723V20h-2v-2.277a1.992 1.992 0 0 1-.939-2.224z\"}}]})(props);\n};\nexport function BiSolidLock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C9.243 2 7 4.243 7 7v3H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8a2 2 0 0 0-2-2h-1V7c0-2.757-2.243-5-5-5zM9 7c0-1.654 1.346-3 3-3s3 1.346 3 3v3H9V7zm4 10.723V20h-2v-2.277a1.993 1.993 0 0 1 .567-3.677A2.001 2.001 0 0 1 14 16a1.99 1.99 0 0 1-1 1.723z\"}}]})(props);\n};\nexport function BiSolidLogInCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 3c-4.625 0-8.442 3.507-8.941 8.001H10v-3l5 4-5 4v-3H3.06C3.56 17.494 7.376 21 12 21c4.963 0 9-4.037 9-9s-4.037-9-9-9z\"}}]})(props);\n};\nexport function BiSolidLogIn (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.5 2h-13a.5.5 0 0 0-.5.5V11h6V8l5 4-5 4v-3H5v8.5a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-19a.5.5 0 0 0-.5-.5z\"}}]})(props);\n};\nexport function BiSolidLogOutCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 3c-4.963 0-9 4.037-9 9v.001l5-4v3h7v2H8v3l-5-4C3.001 16.964 7.037 21 12 21s9-4.037 9-9-4.037-9-9-9z\"}}]})(props);\n};\nexport function BiSolidLogOut (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 2H6a1 1 0 0 0-1 1v9l5-4v3h6v2h-6v3l-5-4v9a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z\"}}]})(props);\n};\nexport function BiSolidLowVision (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 4.998c-1.836 0-3.356.389-4.617.971L3.707 2.293 2.293 3.707l3.315 3.315c-2.613 1.952-3.543 4.618-3.557 4.66l-.105.316.105.316C2.073 12.382 4.367 19 12 19c1.835 0 3.354-.389 4.615-.971l3.678 3.678 1.414-1.414-3.317-3.317c2.614-1.952 3.545-4.618 3.559-4.66l.105-.316-.105-.316c-.022-.068-2.316-6.686-9.949-6.686zM12.043 7H12a5 5 0 0 1 5 5 4.894 4.894 0 0 1-.852 2.734l-.721-.721A3.919 3.919 0 0 0 16 11.999c0-.474-.099-.925-.255-1.349A.985.985 0 0 1 15 11a1 1 0 0 1-1-1c0-.439.288-.802.682-.936A3.965 3.965 0 0 0 12 7.999c-.735 0-1.419.218-2.015.572l-.72-.72C10.053 7.326 10.982 7 12 7h-.043L12 6.998l.043.002zm-7.969 4.999c.103-.235.274-.586.521-.989l5.867 5.867c-4.213-.647-5.939-3.842-6.388-4.878zm9.247 4.908-7.48-7.48a8.146 8.146 0 0 1 1.188-.984l8.055 8.055a8.835 8.835 0 0 1-1.763.409z\"}}]})(props);\n};\nexport function BiSolidMagicWand (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m11 4-.5-1-.5 1-1 .125.834.708L9.5 6l1-.666 1 .666-.334-1.167.834-.708zm8.334 10.666L18.5 13l-.834 1.666-1.666.209 1.389 1.181L16.834 18l1.666-1.111L20.166 18l-.555-1.944L21 14.875zM6.667 6.333 6 5l-.667 1.333L4 6.5l1.111.944L4.667 9 6 8.111 7.333 9l-.444-1.556L8 6.5zM3.414 17c0 .534.208 1.036.586 1.414L5.586 20c.378.378.88.586 1.414.586s1.036-.208 1.414-.586L20 8.414c.378-.378.586-.88.586-1.414S20.378 5.964 20 5.586L18.414 4c-.756-.756-2.072-.756-2.828 0L4 15.586c-.378.378-.586.88-.586 1.414zM17 5.414 18.586 7 15 10.586 13.414 9 17 5.414z\"}}]})(props);\n};\nexport function BiSolidMagnet (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8 3H5a1 1 0 0 0-1 1v3h5V4a1 1 0 0 0-1-1zm7 1v3h5V4a1 1 0 0 0-1-1h-3a1 1 0 0 0-1 1zm0 10a3 3 0 0 1-6 0V9H4v5a8 8 0 0 0 16 0V9h-5v5z\"}}]})(props);\n};\nexport function BiSolidMapAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m9 6.882-7-3.5v13.236l7 3.5 6-3 7 3.5V7.382l-7-3.5-6 3zM15 15l-6 3V9l6-3v9z\"}}]})(props);\n};\nexport function BiSolidMapPin (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m12 17 1-2V9.858c1.721-.447 3-2 3-3.858 0-2.206-1.794-4-4-4S8 3.794 8 6c0 1.858 1.279 3.411 3 3.858V15l1 2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m16.267 10.563-.533 1.928C18.325 13.207 20 14.584 20 16c0 1.892-3.285 4-8 4s-8-2.108-8-4c0-1.416 1.675-2.793 4.267-3.51l-.533-1.928C4.197 11.54 2 13.623 2 16c0 3.364 4.393 6 10 6s10-2.636 10-6c0-2.377-2.197-4.46-5.733-5.437z\"}}]})(props);\n};\nexport function BiSolidMap (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C7.589 2 4 5.589 4 9.995 3.971 16.44 11.696 21.784 12 22c0 0 8.029-5.56 8-12 0-4.411-3.589-8-8-8zm0 12c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4z\"}}]})(props);\n};\nexport function BiSolidMask (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 6H5C3.346 6 2 7.346 2 9v5c0 2.206 1.794 4 4 4h1.637c1.166 0 2.28-.557 2.981-1.491.66-.879 2.104-.88 2.764.001A3.744 3.744 0 0 0 16.363 18H18c2.206 0 4-1.794 4-4V9c0-1.654-1.346-3-3-3zM7.5 13C6.119 13 5 12.328 5 11.5S6.119 10 7.5 10s2.5.672 2.5 1.5S8.881 13 7.5 13zm9 0c-1.381 0-2.5-.672-2.5-1.5s1.119-1.5 2.5-1.5 2.5.672 2.5 1.5-1.119 1.5-2.5 1.5z\"}}]})(props);\n};\nexport function BiSolidMedal (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 2h-4v4.059a8.946 8.946 0 0 1 4 1.459V2zm-6 0H7v5.518a8.946 8.946 0 0 1 4-1.459V2zm1 20a7 7 0 1 0 0-14 7 7 0 0 0 0 14zm-1.225-8.519L12 11l1.225 2.481 2.738.397-1.981 1.932.468 2.727L12 17.25l-2.449 1.287.468-2.727-1.981-1.932 2.737-.397z\"}}]})(props);\n};\nexport function BiSolidMegaphone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.664 3.478 8 8v7l.748.267-1.127 2.254a1.999 1.999 0 0 0 1.156 2.792l4.084 1.361a2.015 2.015 0 0 0 2.421-1.003l1.303-2.606 4.079 1.457A1 1 0 0 0 22 18.581V4.419a1 1 0 0 0-1.336-.941zm-7.171 16.299L9.41 18.416l1.235-2.471 4.042 1.444-1.194 2.388zM4 15h2V8H4c-1.103 0-2 .897-2 2v3c0 1.103.897 2 2 2z\"}}]})(props);\n};\nexport function BiSolidMehAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm-6 8h4v2H6v-2zm10 7H7.974v-2H16v2zm2-5h-4v-2h4v2z\"}}]})(props);\n};\nexport function BiSolidMehBlank (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zM8.5 12a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 8.5 12zm6.993-.014a1.494 1.494 0 1 1 .001-2.987 1.494 1.494 0 0 1-.001 2.987z\"}}]})(props);\n};\nexport function BiSolidMeh (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm-5 8.5a1.5 1.5 0 1 1 3.001.001A1.5 1.5 0 0 1 7 10.5zm9 6.5H7.974v-2H16v2zm-.507-5.014a1.494 1.494 0 1 1 .001-2.987 1.494 1.494 0 0 1-.001 2.987z\"}}]})(props);\n};\nexport function BiSolidMemoryCard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 2H6c-1.103 0-2 .897-2 2v16c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2V7l-5-5zm-6 8H7V6h2v4zm3 0h-2V6h2v4zm3 0h-2V6h2v4z\"}}]})(props);\n};\nexport function BiSolidMessageAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .894-2 1.992v12.016C2 17.106 2.897 18 4 18h3v4l6.351-4H20c1.103 0 2-.894 2-1.992V3.992A1.998 1.998 0 0 0 20 2zm-3 9h-4v4h-2v-4H7V9h4V5h2v4h4v2z\"}}]})(props);\n};\nexport function BiSolidMessageAltAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m8.5 18 3.5 4 3.5-4H19c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h3.5zM7 9h4V5h2v4h4v2h-4v4h-2v-4H7V9z\"}}]})(props);\n};\nexport function BiSolidMessageAltCheck (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 4v12c0 1.103.897 2 2 2h3.5l3.5 4 3.5-4H19c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2zm5.707 4.293L11 10.586l4.793-4.793 1.414 1.414L11 13.414 7.293 9.707l1.414-1.414z\"}}]})(props);\n};\nexport function BiSolidMessageAltDetail (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m8.5 18 3.5 4 3.5-4H19c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h3.5zM7 7h10v2H7V7zm0 4h7v2H7v-2z\"}}]})(props);\n};\nexport function BiSolidMessageAltDots (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 2H5c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h3.5l3.5 4 3.5-4H19c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2zM9 12a2 2 0 1 1 .001-4.001A2 2 0 0 1 9 12zm6 0a2 2 0 1 1 .001-4.001A2 2 0 0 1 15 12z\"}}]})(props);\n};\nexport function BiSolidMessageAltEdit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 2c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h3.5l3.5 4 3.5-4H19c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2H5zm4.302 11.987h-1.8v-1.799l4.978-4.97 1.798 1.799-4.976 4.97zm5.823-5.817-1.798-1.799L14.698 5l1.8 1.799-1.373 1.371z\"}}]})(props);\n};\nexport function BiSolidMessageAltError (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 4v12c0 1.103.897 2 2 2h3.5l3.5 4 3.5-4H19c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2zm8 1h2v6h-2V5zm0 8h2v2h-2v-2z\"}}]})(props);\n};\nexport function BiSolidMessageAltMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 2c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h3.5l3.5 4 3.5-4H19c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2H5zm11 9H8V9h8v2z\"}}]})(props);\n};\nexport function BiSolidMessageAltX (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m8.5 18 3.5 4 3.5-4H19c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2H5c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h3.5zM7.293 6.707l1.414-1.414L12 8.586l3.293-3.293 1.414 1.414L13.414 10l3.293 3.293-1.414 1.414L12 11.414l-3.293 3.293-1.414-1.414L10.586 10 7.293 6.707z\"}}]})(props);\n};\nexport function BiSolidMessageAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.999 2h-14c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h3.5l3.5 4 3.5-4h3.5c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2z\"}}]})(props);\n};\nexport function BiSolidMessageCheck (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .894-2 1.992v12.016C2 17.106 2.897 18 4 18h3v4l6.351-4H20c1.103 0 2-.894 2-1.992V3.992A1.998 1.998 0 0 0 20 2zm-9 11.914-3.707-3.707 1.414-1.414L11 11.086l4.793-4.793 1.414 1.414L11 13.914z\"}}]})(props);\n};\nexport function BiSolidMessageDetail (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .894-2 1.992v12.016C2 17.106 2.897 18 4 18h3v4l6.351-4H20c1.103 0 2-.894 2-1.992V3.992A1.998 1.998 0 0 0 20 2zm-6 11H7v-2h7v2zm3-4H7V7h10v2z\"}}]})(props);\n};\nexport function BiSolidMessageDots (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .894-2 1.992v12.017C2 17.106 2.897 18 4 18h3v4l6.351-4H20c1.103 0 2-.894 2-1.992V3.992A1.998 1.998 0 0 0 20 2zm-9 8a2 2 0 1 1-2-2c.086 0 .167.015.25.025.082-.014.164-.025.25-.025A1.5 1.5 0 0 1 11 9.5c0 .086-.012.168-.025.25.01.083.025.165.025.25zm4 2a2 2 0 0 1-2-2c0-.086.015-.167.025-.25A1.592 1.592 0 0 1 13 9.5 1.5 1.5 0 0 1 14.5 8c.086 0 .168.011.25.025.083-.01.164-.025.25-.025a2 2 0 0 1 0 4z\"}}]})(props);\n};\nexport function BiSolidMessageEdit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .894-2 1.992v12.016C2 17.106 2.897 18 4 18h3v4l6.351-4H20c1.103 0 2-.894 2-1.992V3.992A1.998 1.998 0 0 0 20 2zM8.999 14.999H7V13l5.53-5.522 1.998 1.999-5.529 5.522zm6.472-6.464-1.999-1.999 1.524-1.523 1.999 1.999-1.524 1.523z\"}}]})(props);\n};\nexport function BiSolidMessageError (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .894-2 1.992v12.016C2 17.106 2.897 18 4 18h3v4l6.351-4H20c1.103 0 2-.894 2-1.992V3.992A1.998 1.998 0 0 0 20 2zm-7 13h-2v-2h2v2zm0-4h-2V5h2v6z\"}}]})(props);\n};\nexport function BiSolidMessageMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .894-2 1.992v12.016C2 17.106 2.897 18 4 18h3v4l6.351-4H20c1.103 0 2-.894 2-1.992V3.992A1.998 1.998 0 0 0 20 2zm-4 9H8V9h8v2z\"}}]})(props);\n};\nexport function BiSolidMessageRoundedAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 5.589 2 10c0 2.907 1.897 5.515 5 6.934V22l5.34-4.005C17.697 17.853 22 14.32 22 10c0-4.411-4.486-8-10-8zm4 9h-3v3h-2v-3H8V9h3V6h2v3h3v2z\"}}]})(props);\n};\nexport function BiSolidMessageRoundedCheck (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 5.589 2 10c0 2.907 1.897 5.515 5 6.934V22l5.34-4.005C17.697 17.853 22 14.32 22 10c0-4.411-4.486-8-10-8zm-1 12.414-3.707-3.707 1.414-1.414L11 11.586l4.793-4.793 1.414 1.414L11 14.414z\"}}]})(props);\n};\nexport function BiSolidMessageRoundedDetail (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 5.589 2 10c0 2.907 1.897 5.515 5 6.934V22l5.34-4.005C17.697 17.853 22 14.32 22 10c0-4.411-4.486-8-10-8zm2 11H7v-2h7v2zm3-4H7V7h10v2z\"}}]})(props);\n};\nexport function BiSolidMessageRoundedDots (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 5.589 2 10c0 2.908 1.897 5.516 5 6.934V22l5.34-4.004C17.697 17.852 22 14.32 22 10c0-4.411-4.486-8-10-8zm-2.5 9a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z\"}}]})(props);\n};\nexport function BiSolidMessageRoundedEdit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 5.589 2 10c0 2.907 1.897 5.516 5 6.934V22l5.34-4.005C17.697 17.854 22 14.32 22 10c0-4.411-4.486-8-10-8zM9.302 13.986H7.503v-1.798l4.976-4.97 1.798 1.799-4.975 4.969zm5.823-5.816-1.799-1.798 1.372-1.371 1.799 1.798-1.372 1.371z\"}}]})(props);\n};\nexport function BiSolidMessageRoundedError (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 5.589 2 10c0 2.907 1.897 5.516 5 6.934V22l5.34-4.005C17.697 17.854 22 14.32 22 10c0-4.411-4.486-8-10-8zm1 12h-2v-2h2v2zm0-4h-2V5h2v5z\"}}]})(props);\n};\nexport function BiSolidMessageRoundedMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 5.589 2 10c0 2.907 1.897 5.515 5 6.934V22l5.34-4.005C17.697 17.853 22 14.32 22 10c0-4.411-4.486-8-10-8zm4 9H8V9h8v2z\"}}]})(props);\n};\nexport function BiSolidMessageRoundedX (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 5.589 2 10c0 2.907 1.897 5.515 5 6.934V22l5.34-4.005C17.697 17.853 22 14.32 22 10c0-4.411-4.486-8-10-8zm3.707 10.293-1.414 1.414L12 11.414l-2.293 2.293-1.414-1.414L10.586 10 8.293 7.707l1.414-1.414L12 8.586l2.293-2.293 1.414 1.414L13.414 10l2.293 2.293z\"}}]})(props);\n};\nexport function BiSolidMessageRounded (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 5.589 2 10c0 2.908 1.898 5.515 5 6.934V22l5.34-4.005C17.697 17.852 22 14.32 22 10c0-4.411-4.486-8-10-8z\"}}]})(props);\n};\nexport function BiSolidMessageSquareAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 2H8C4.691 2 2 4.691 2 8v13a1 1 0 0 0 1 1h13c3.309 0 6-2.691 6-6V8c0-3.309-2.691-6-6-6zm1 11h-4v4h-2v-4H7v-2h4V7h2v4h4v2z\"}}]})(props);\n};\nexport function BiSolidMessageSquareCheck (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 2H8C4.691 2 2 4.691 2 8v13a1 1 0 0 0 1 1h13c3.309 0 6-2.691 6-6V8c0-3.309-2.691-6-6-6zm-5 14.414-3.707-3.707 1.414-1.414L11 13.586l4.793-4.793 1.414 1.414L11 16.414z\"}}]})(props);\n};\nexport function BiSolidMessageSquareDetail (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 2H8C4.691 2 2 4.691 2 8v13a1 1 0 0 0 1 1h13c3.309 0 6-2.691 6-6V8c0-3.309-2.691-6-6-6zm-2 13H7v-2h7v2zm3-4H7V9h10v2z\"}}]})(props);\n};\nexport function BiSolidMessageSquareDots (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 2H8C4.691 2 2 4.691 2 8v13a1 1 0 0 0 1 1h13c3.309 0 6-2.691 6-6V8c0-3.309-2.691-6-6-6zm-5 10.5A1.5 1.5 0 0 1 9.5 14c-.086 0-.168-.011-.25-.025-.083.01-.164.025-.25.025a2 2 0 1 1 2-2c0 .085-.015.167-.025.25.013.082.025.164.025.25zm4 1.5c-.086 0-.167-.015-.25-.025a1.471 1.471 0 0 1-.25.025 1.5 1.5 0 0 1-1.5-1.5c0-.085.012-.168.025-.25-.01-.083-.025-.164-.025-.25a2 2 0 1 1 2 2z\"}}]})(props);\n};\nexport function BiSolidMessageSquareEdit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 2H8C4.691 2 2 4.691 2 8v13a1 1 0 0 0 1 1h13c3.309 0 6-2.691 6-6V8c0-3.309-2.691-6-6-6zM8.999 17H7v-1.999l5.53-5.522 1.999 1.999L8.999 17zm6.473-6.465-1.999-1.999 1.524-1.523 1.999 1.999-1.524 1.523z\"}}]})(props);\n};\nexport function BiSolidMessageSquareError (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 2H8C4.691 2 2 4.691 2 8v13a1 1 0 0 0 1 1h13c3.309 0 6-2.691 6-6V8c0-3.309-2.691-6-6-6zm-3 16h-2v-2h2v2zm0-4h-2V6h2v8z\"}}]})(props);\n};\nexport function BiSolidMessageSquareMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 2H8C4.691 2 2 4.691 2 8v13a1 1 0 0 0 1 1h13c3.309 0 6-2.691 6-6V8c0-3.309-2.691-6-6-6zm0 11H8v-2h8v2z\"}}]})(props);\n};\nexport function BiSolidMessageSquareX (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 2H8C4.691 2 2 4.691 2 8v13a1 1 0 0 0 1 1h13c3.309 0 6-2.691 6-6V8c0-3.309-2.691-6-6-6zm.706 13.293-1.414 1.414L12 13.415l-3.292 3.292-1.414-1.414 3.292-3.292-3.292-3.292 1.414-1.414L12 10.587l3.292-3.292 1.414 1.414-3.292 3.292 3.292 3.292z\"}}]})(props);\n};\nexport function BiSolidMessageSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 2H8C4.691 2 2 4.691 2 8v13a1 1 0 0 0 1 1h13c3.309 0 6-2.691 6-6V8c0-3.309-2.691-6-6-6z\"}}]})(props);\n};\nexport function BiSolidMessageX (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .894-2 1.992v12.016C2 17.106 2.897 18 4 18h3v4l6.351-4H20c1.103 0 2-.894 2-1.992V3.992A1.998 1.998 0 0 0 20 2zm-3.293 11.293-1.414 1.414L12 11.414l-3.293 3.293-1.414-1.414L10.586 10 7.293 6.707l1.414-1.414L12 8.586l3.293-3.293 1.414 1.414L13.414 10l3.293 3.293z\"}}]})(props);\n};\nexport function BiSolidMessage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.103 0-2 .894-2 1.992v12.016C2 17.106 2.897 18 4 18h3v4l6.351-4H20c1.103 0 2-.894 2-1.992V3.992A1.998 1.998 0 0 0 20 2z\"}}]})(props);\n};\nexport function BiSolidMeteor (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13.507 2.138a1 1 0 0 0-1.155.102L4.196 9.197c-2.924 2.924-2.924 7.682 0 10.606a7.472 7.472 0 0 0 5.3 2.192c1.924 0 3.85-.734 5.317-2.202l6.903-7.096A1 1 0 0 0 21 11h-3.301l4.175-7.514a1.001 1.001 0 0 0-1.359-1.36l-7.11 3.95.576-2.879a1.002 1.002 0 0 0-.474-1.059zM14 14.5a4.5 4.5 0 0 1-9 0c0-1.57.807-2.949 2.025-3.754-.01.084-.025.167-.025.254a2 2 0 1 0 3.845-.772C12.669 10.802 14 12.486 14 14.5z\"}}]})(props);\n};\nexport function BiSolidMicrochip (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7.999 22h8c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2h-8c-1.103 0-2 .897-2 2v16c0 1.103.897 2 2 2zm-5-15h2V5h-2v.5h-1v1h1zm18-2h-2v2h2v-.5h1v-1h-1zm-18 6h2V9h-2v.5h-1v1h1zm18-2h-2v2h2v-.5h1v-1h-1zm-18 6h2v-2h-2v.5h-1v1h1zm18-2h-2v2h2v-.5h1v-1h-1zm-18 6h2v-2h-2v.5h-1v1h1zm18-2h-2v2h2v-.5h1v-1h-1z\"}}]})(props);\n};\nexport function BiSolidMicrophoneAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 12H4c0 4.072 3.061 7.436 7 7.931V22h2v-2.069c3.939-.495 7-3.858 7-7.931h-2c0 3.309-2.691 6-6 6s-6-2.691-6-6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M8 12c0 2.206 1.794 4 4 4s4-1.794 4-4h-2v-2h2V8h-2V6h2c0-2.217-1.785-4.021-3.979-4.021a.933.933 0 0 0-.209.025A4.006 4.006 0 0 0 8 6h4v2H8v2h4v2H8z\"}}]})(props);\n};\nexport function BiSolidMicrophoneOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.707 20.293-3.4-3.4A7.93 7.93 0 0 0 20 12h-2a5.945 5.945 0 0 1-1.119 3.467l-1.449-1.45A3.926 3.926 0 0 0 16 12V6c0-2.217-1.785-4.021-3.979-4.021-.07 0-.14.009-.209.025A4.006 4.006 0 0 0 8 6v.586L3.707 2.293 2.293 3.707l18 18 1.414-1.414zM6 12H4c0 4.072 3.06 7.436 7 7.931V22h2v-2.069a7.935 7.935 0 0 0 2.241-.63l-1.549-1.548A5.983 5.983 0 0 1 12 18c-3.309 0-6-2.691-6-6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M8.007 12.067a3.996 3.996 0 0 0 3.926 3.926l-3.926-3.926z\"}}]})(props);\n};\nexport function BiSolidMicrophone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 16c2.206 0 4-1.794 4-4V6c0-2.217-1.785-4.021-3.979-4.021a.933.933 0 0 0-.209.025A4.006 4.006 0 0 0 8 6v6c0 2.206 1.794 4 4 4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 19.931V22h2v-2.069c3.939-.495 7-3.858 7-7.931h-2c0 3.309-2.691 6-6 6s-6-2.691-6-6H4c0 4.072 3.061 7.436 7 7.931z\"}}]})(props);\n};\nexport function BiSolidMinusCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm5 11H7v-2h10v2z\"}}]})(props);\n};\nexport function BiSolidMinusSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 3a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2H5zm12 10H7v-2h10v2z\"}}]})(props);\n};\nexport function BiSolidMobileVibration (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.535 2.808a2.003 2.003 0 0 0-2.828 0l-9.899 9.899a2.001 2.001 0 0 0 0 2.828l5.657 5.657c.39.39.902.585 1.414.585s1.024-.195 1.414-.585l9.899-9.899c.78-.779.78-2.049 0-2.828l-5.657-5.657zM8.707 16.707a.999.999 0 1 1-1.414-1.414.999.999 0 1 1 1.414 1.414zm7 5-1.414-1.414 6-6 1.414 1.415zM8.293 2.293l1.414 1.414-6 6-1.414-1.415z\"}}]})(props);\n};\nexport function BiSolidMobile (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 22c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2H8c-1.103 0-2 .897-2 2v16c0 1.103.897 2 2 2h10zm-5-5a1 1 0 1 1 0 2 1 1 0 1 1 0-2z\"}}]})(props);\n};\nexport function BiSolidMoon (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 11.807A9.002 9.002 0 0 1 10.049 2a9.942 9.942 0 0 0-5.12 2.735c-3.905 3.905-3.905 10.237 0 14.142 3.906 3.906 10.237 3.905 14.143 0a9.946 9.946 0 0 0 2.735-5.119A9.003 9.003 0 0 1 12 11.807z\"}}]})(props);\n};\nexport function BiSolidMouseAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 2v8h6V8c0-3.309-2.691-6-6-6zM5 16c0 3.309 2.691 6 6 6h2c3.309 0 6-2.691 6-6v-4H5v4zm0-8v2h6V2C7.691 2 5 4.691 5 8z\"}}]})(props);\n};\nexport function BiSolidMouse (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.975 22H12c3.859 0 7-3.14 7-7V9c0-3.841-3.127-6.974-6.981-7h-.06C8.119 2.022 5 5.157 5 9v6c0 3.86 3.129 7 6.975 7zM11 6h2v6h-2V6z\"}}]})(props);\n};\nexport function BiSolidMoviePlay (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zm.001 6c-.001 0-.001 0 0 0h-.465l-2.667-4H20l.001 4zM15.5 15 10 18v-6l5.5 3zm-.964-6-2.667-4h2.596l2.667 4h-2.596zm-2.404 0H9.536L6.869 5h2.596l2.667 4zM4 5h.465l2.667 4H4V5z\"}}]})(props);\n};\nexport function BiSolidMovie (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zm.001 6c-.001 0-.001 0 0 0h-.466l-2.667-4H20l.001 4zm-5.466 0-2.667-4h2.596l2.667 4h-2.596zm-2.404 0H9.535L6.869 5h2.596l2.666 4zM4 5h.465l2.667 4H4V5z\"}}]})(props);\n};\nexport function BiSolidMusic (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 18.573c2.206 0 4-1.794 4-4V4.428L19 7.7v7.43a3.953 3.953 0 0 0-2-.557c-2.206 0-4 1.794-4 4s1.794 4 4 4 4-1.794 4-4V7a.998.998 0 0 0-.658-.939l-11-4A.999.999 0 0 0 8 3v8.13a3.953 3.953 0 0 0-2-.557c-2.206 0-4 1.794-4 4s1.794 4 4 4z\"}}]})(props);\n};\nexport function BiSolidNavigation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2.002 9.538c-.023.411.207.794.581.966l7.504 3.442 3.442 7.503c.164.356.52.583.909.583l.057-.002a1 1 0 0 0 .894-.686l5.595-17.032c.117-.358.023-.753-.243-1.02s-.66-.358-1.02-.243L2.688 8.645a.997.997 0 0 0-.686.893z\"}}]})(props);\n};\nexport function BiSolidNetworkChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.5 3A2.502 2.502 0 0 0 17 5.5c0 .357.078.696.214 1.005l-1.955 2.199A3.977 3.977 0 0 0 13 8c-.74 0-1.424.216-2.019.566L8.707 6.293l-.023.023C8.88 5.918 9 5.475 9 5a3 3 0 1 0-3 3c.475 0 .917-.12 1.316-.316l-.023.023L9.567 9.98A3.956 3.956 0 0 0 9 12c0 .997.38 1.899.985 2.601l-2.577 2.576A2.472 2.472 0 0 0 6.5 17C5.122 17 4 18.121 4 19.5S5.122 22 6.5 22 9 20.879 9 19.5c0-.321-.066-.626-.177-.909l2.838-2.838c.421.15.867.247 1.339.247 2.206 0 4-1.794 4-4 0-.636-.163-1.229-.428-1.764l2.117-2.383c.256.088.526.147.811.147C20.879 8 22 6.879 22 5.5S20.879 3 19.5 3zM13 14c-1.103 0-2-.897-2-2s.897-2 2-2 2 .897 2 2-.897 2-2 2z\"}}]})(props);\n};\nexport function BiSolidNews (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 17a1 1 0 0 1-2 0V5a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v13a2 2 0 0 0 2 2h15c1.654 0 3-1.346 3-3V7h-2v10zM12 7h3v2h-3V7zm0 4h3v2h-3v-2zM5 7h5v6H5V7zm0 10v-2h10v2H5z\"}}]})(props);\n};\nexport function BiSolidNoEntry (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm5 12H7v-4h10v4z\"}}]})(props);\n};\nexport function BiSolidNote (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h8l8-8V5a2 2 0 0 0-2-2zm-7 16v-7h7l-7 7z\"}}]})(props);\n};\nexport function BiSolidNotepad (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 4h-3V2h-2v2h-4V2H8v2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h14c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2zm-7 10H7v-2h5v2zm5-4H7V8h10v2z\"}}]})(props);\n};\nexport function BiSolidNotificationOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"18\",\"cy\":\"6\",\"r\":\"3\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 18v-7.422A4.962 4.962 0 0 1 18 11a5 5 0 0 1-5-5c0-.712.153-1.387.422-2H6c-.178 0-.347.031-.51.076L3.707 2.293 2.293 3.707l18 18 1.414-1.414-1.783-1.783c.045-.163.076-.332.076-.51zM4 18c0 1.103.897 2 2 2h9.879L4 8.121V18z\"}}]})(props);\n};\nexport function BiSolidNotification (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"18\",\"cy\":\"6\",\"r\":\"3\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13 6c0-.712.153-1.387.422-2H6c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2v-7.422A4.962 4.962 0 0 1 18 11a5 5 0 0 1-5-5z\"}}]})(props);\n};\nexport function BiSolidObjectsHorizontalCenter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 13h-6v-2h4a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-4V2h-2v3H7a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h4v2H5a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h6v3h2v-3h6a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1z\"}}]})(props);\n};\nexport function BiSolidObjectsHorizontalLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2 2h2v20H2z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"13\",\"width\":\"16\",\"height\":\"6\",\"rx\":\"1\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"5\",\"width\":\"12\",\"height\":\"6\",\"rx\":\"1\"}}]})(props);\n};\nexport function BiSolidObjectsHorizontalRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2h2v20h-2z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"2\",\"y\":\"13\",\"width\":\"16\",\"height\":\"6\",\"rx\":\"1\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"5\",\"width\":\"12\",\"height\":\"6\",\"rx\":\"1\"}}]})(props);\n};\nexport function BiSolidObjectsVerticalBottom (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2 20h20v2H2z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"5\",\"y\":\"2\",\"width\":\"6\",\"height\":\"16\",\"rx\":\"1\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"13\",\"y\":\"6\",\"width\":\"6\",\"height\":\"12\",\"rx\":\"1\"}}]})(props);\n};\nexport function BiSolidObjectsVerticalCenter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 7a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v4h-2V5a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1v6H2v2h3v6a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1v-6h2v4a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1v-4h3v-2h-3z\"}}]})(props);\n};\nexport function BiSolidObjectsVerticalTop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2 2h20v2H2z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"5\",\"y\":\"6\",\"width\":\"6\",\"height\":\"16\",\"rx\":\"1\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"13\",\"y\":\"6\",\"width\":\"6\",\"height\":\"12\",\"rx\":\"1\"}}]})(props);\n};\nexport function BiSolidOffer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m20.749 12 1.104-1.908a1 1 0 0 0-.365-1.366l-1.91-1.104v-2.2a1 1 0 0 0-1-1h-2.199l-1.103-1.909a1.008 1.008 0 0 0-.607-.466.993.993 0 0 0-.759.1L12 3.251l-1.91-1.105a1 1 0 0 0-1.366.366L7.62 4.422H5.421a1 1 0 0 0-1 1v2.199l-1.91 1.104a.998.998 0 0 0-.365 1.367L3.25 12l-1.104 1.908a1.004 1.004 0 0 0 .364 1.367l1.91 1.104v2.199a1 1 0 0 0 1 1h2.2l1.104 1.91a1.01 1.01 0 0 0 .866.5c.174 0 .347-.046.501-.135l1.908-1.104 1.91 1.104a1.001 1.001 0 0 0 1.366-.365l1.103-1.91h2.199a1 1 0 0 0 1-1v-2.199l1.91-1.104a1 1 0 0 0 .365-1.367L20.749 12zM9.499 6.99a1.5 1.5 0 1 1-.001 3.001 1.5 1.5 0 0 1 .001-3.001zm.3 9.6-1.6-1.199 6-8 1.6 1.199-6 8zm4.7.4a1.5 1.5 0 1 1 .001-3.001 1.5 1.5 0 0 1-.001 3.001z\"}}]})(props);\n};\nexport function BiSolidPackage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.993 7.95a.96.96 0 0 0-.029-.214c-.007-.025-.021-.049-.03-.074-.021-.057-.04-.113-.07-.165-.016-.027-.038-.049-.057-.075-.032-.045-.063-.091-.102-.13-.023-.022-.053-.04-.078-.061-.039-.032-.075-.067-.12-.094-.004-.003-.009-.003-.014-.006l-.008-.006-8.979-4.99a1.002 1.002 0 0 0-.97-.001l-9.021 4.99c-.003.003-.006.007-.011.01l-.01.004c-.035.02-.061.049-.094.073-.036.027-.074.051-.106.082-.03.031-.053.067-.079.102-.027.035-.057.066-.079.104-.026.043-.04.092-.059.139-.014.033-.032.064-.041.1a.975.975 0 0 0-.029.21c-.001.017-.007.032-.007.05V16c0 .363.197.698.515.874l8.978 4.987.001.001.002.001.02.011c.043.024.09.037.135.054.032.013.063.03.097.039a1.013 1.013 0 0 0 .506 0c.033-.009.064-.026.097-.039.045-.017.092-.029.135-.054l.02-.011.002-.001.001-.001 8.978-4.987c.316-.176.513-.511.513-.874V7.998c0-.017-.006-.031-.007-.048zm-10.021 3.922L5.058 8.005 7.82 6.477l6.834 3.905-2.682 1.49zm.048-7.719L18.941 8l-2.244 1.247-6.83-3.903 2.153-1.191zM13 19.301l.002-5.679L16 11.944V15l2-1v-3.175l2-1.119v5.705l-7 3.89z\"}}]})(props);\n};\nexport function BiSolidPaintRoll (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 2H7c-1.103 0-2 .897-2 2v3c0 1.103.897 2 2 2h11c1.103 0 2-.897 2-2V4c0-1.103-.897-2-2-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13 15v-2c0-1.103-.897-2-2-2H4V5c-1.103 0-2 .897-2 2v4c0 1.103.897 2 2 2h7v2a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1z\"}}]})(props);\n};\nexport function BiSolidPaint (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.084 2.914c-1.178-1.179-3.234-1.179-4.412 0l-8.379 8.379a.999.999 0 0 0 0 1.414l3 3a.997.997 0 0 0 1.414 0l8.379-8.379a3.123 3.123 0 0 0-.002-4.414zm-1.412 3L12 13.586 10.414 12l7.672-7.672a1.146 1.146 0 0 1 1.586.002 1.123 1.123 0 0 1 0 1.584zM8 15c-1.265-.634-3.5 0-3.5 2 0 1.197.5 2-1.5 3 0 0 3.25 2.25 5.5 0 1.274-1.274 1.494-4-.5-5z\"}}]})(props);\n};\nexport function BiSolidPalette (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9.38 21.646A9.985 9.985 0 0 0 12 22l.141-.001a2.998 2.998 0 0 0 2.515-1.425c.542-.876.6-1.953.153-2.88l-.198-.415c-.453-.942-.097-1.796.388-2.281.485-.485 1.341-.841 2.28-.388h.001l.413.199a2.99 2.99 0 0 0 2.881-.153A2.997 2.997 0 0 0 22 12.141a9.926 9.926 0 0 0-.353-2.76c-1.038-3.827-4.353-6.754-8.246-7.285-3.149-.427-6.241.602-8.471 2.833S1.666 10.247 2.096 13.4c.53 3.894 3.458 7.208 7.284 8.246zM15.5 6a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3zm-5-1a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3zM9 15.506a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm-2.5-6.5a1.5 1.5 0 1 1-.001 3.001A1.5 1.5 0 0 1 6.5 9.006z\"}}]})(props);\n};\nexport function BiSolidPaperPlane (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m2.6 13.083 3.452 1.511L16 9.167l-6 7 8.6 3.916a1 1 0 0 0 1.399-.85l1-15a1.002 1.002 0 0 0-1.424-.972l-17 8a1.002 1.002 0 0 0 .025 1.822zM8 22.167l4.776-2.316L8 17.623z\"}}]})(props);\n};\nexport function BiSolidParking (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13.5 3H5v18h4v-5h4.5c3.584 0 6.5-2.916 6.5-6.5S17.084 3 13.5 3zm0 9H9V7h4.5C14.879 7 16 8.121 16 9.5S14.879 12 13.5 12z\"}}]})(props);\n};\nexport function BiSolidParty (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M23 7a8.44 8.44 0 0 0-5 1.31c-.36-.41-.73-.82-1.12-1.21l-.29-.27.14-.12a3.15 3.15 0 0 0 .9-3.49A3.9 3.9 0 0 0 14 1v2a2 2 0 0 1 1.76 1c.17.4 0 .84-.47 1.31l-.23.21a16.71 16.71 0 0 0-3.41-2.2c-2.53-1.14-3.83-.61-4.47 0a2.18 2.18 0 0 0-.46.68l-.18.53L5.1 8.87C6.24 11.71 9 16.76 15 18.94l5-1.66a1 1 0 0 0 .43-.31l.21-.18c1.43-1.44.51-4.21-1.41-6.9A6.63 6.63 0 0 1 23 9zm-3.79 8.37h-.06c-.69.37-3.55-.57-6.79-3.81-.34-.34-.66-.67-.95-1-.1-.11-.19-.23-.29-.35l-.53-.64-.28-.39c-.14-.19-.28-.38-.4-.56s-.16-.26-.24-.39-.22-.34-.31-.51-.13-.24-.19-.37-.17-.28-.23-.42-.09-.23-.14-.34-.11-.27-.15-.4S8.6 6 8.58 5.9s-.06-.24-.08-.34a2 2 0 0 1 0-.24 1.15 1.15 0 0 1 0-.26l.11-.31c.17-.18.91-.23 2.23.37a13.83 13.83 0 0 1 2.49 1.54A4.17 4.17 0 0 1 12 7v2a6.43 6.43 0 0 0 3-.94l.49.46c.44.43.83.86 1.19 1.27A5.31 5.31 0 0 0 16 13.2l2-.39a3.23 3.23 0 0 1 0-1.14c1.29 1.97 1.53 3.39 1.21 3.7zM4.4 11l-2.23 6.7A3.28 3.28 0 0 0 5.28 22a3.21 3.21 0 0 0 1-.17l6.52-2.17A18.7 18.7 0 0 1 4.4 11z\"}}]})(props);\n};\nexport function BiSolidPaste (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 4h6v2H9zm11 7h-7a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h7a2 2 0 0 0 2-2v-7a2 2 0 0 0-2-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M21 9V6a2 2 0 0 0-2-2h-2a2 2 0 0 0-2-2H9a2 2 0 0 0-2 2H5a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h4v-9a2 2 0 0 1 2-2h10zM9 6V4h6v2H9z\"}}]})(props);\n};\nexport function BiSolidPear (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10.12 22a7.71 7.71 0 0 0 6.57-5 7.23 7.23 0 0 0 .46-3.21 3.26 3.26 0 0 1 1-2.57l.61-.61A3.89 3.89 0 0 0 19.43 6l2.28-2.28-1.42-1.43L18 4.55a3.82 3.82 0 0 0-4.66.57l-.75.75a3.22 3.22 0 0 1-2.52 1 7.05 7.05 0 0 0-3.32.57A7.75 7.75 0 0 0 2 14.11 7.59 7.59 0 0 0 10.12 22zM9.5 9.25v1.5a3.75 3.75 0 0 0-3.75 3.75h-1.5A5.26 5.26 0 0 1 9.5 9.25z\"}}]})(props);\n};\nexport function BiSolidPen (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.587 6.999H7.702a2 2 0 0 0-1.88 1.316l-3.76 10.342c-.133.365-.042.774.232 1.049l.293.293 6.422-6.422c-.001-.026-.008-.052-.008-.078a1.5 1.5 0 1 1 1.5 1.5c-.026 0-.052-.007-.078-.008l-6.422 6.422.293.293a.997.997 0 0 0 1.049.232l10.342-3.761a2 2 0 0 0 1.316-1.88v-3.885L19 10.414 13.586 5l-1.999 1.999zm8.353 2.062-5-5 2.12-2.121 5 5z\"}}]})(props);\n};\nexport function BiSolidPencil (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8.707 19.707 18 10.414 13.586 6l-9.293 9.293a1.003 1.003 0 0 0-.263.464L3 21l5.242-1.03c.176-.044.337-.135.465-.263zM21 7.414a2 2 0 0 0 0-2.828L19.414 3a2 2 0 0 0-2.828 0L15 4.586 19.414 9 21 7.414z\"}}]})(props);\n};\nexport function BiSolidPhoneCall (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 10.999h2C22 5.869 18.127 2 12.99 2v2C17.052 4 20 6.943 20 10.999z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13 8c2.103 0 3 .897 3 3h2c0-3.225-1.775-5-5-5v2zm3.422 5.443a1.001 1.001 0 0 0-1.391.043l-2.393 2.461c-.576-.11-1.734-.471-2.926-1.66-1.192-1.193-1.553-2.354-1.66-2.926l2.459-2.394a1 1 0 0 0 .043-1.391L6.859 3.513a1 1 0 0 0-1.391-.087l-2.17 1.861a1 1 0 0 0-.29.649c-.015.25-.301 6.172 4.291 10.766C11.305 20.707 16.323 21 17.705 21c.202 0 .326-.006.359-.008a.992.992 0 0 0 .648-.291l1.86-2.171a1 1 0 0 0-.086-1.391l-4.064-3.696z\"}}]})(props);\n};\nexport function BiSolidPhoneIncoming (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.793 6.793 13 4v7h7l-2.793-2.793 4.5-4.5-1.414-1.414z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M16.422 13.443a1.001 1.001 0 0 0-1.391.043l-2.392 2.461c-.576-.11-1.734-.471-2.926-1.66-1.192-1.193-1.553-2.354-1.66-2.926l2.459-2.394a1 1 0 0 0 .043-1.391L6.86 3.513a1 1 0 0 0-1.391-.087l-2.17 1.861a1.001 1.001 0 0 0-.291.649c-.015.25-.301 6.172 4.291 10.766C11.305 20.707 16.324 21 17.705 21c.203 0 .326-.006.359-.008a.99.99 0 0 0 .648-.291l1.861-2.171a1.001 1.001 0 0 0-.086-1.391l-4.065-3.696z\"}}]})(props);\n};\nexport function BiSolidPhoneOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9.17 13.42a5.24 5.24 0 0 1-.93-2.06L10.7 9a1 1 0 0 0 0-1.39l-3.65-4.1a1 1 0 0 0-1.4-.08L3.48 5.29a1 1 0 0 0-.29.65 15.25 15.25 0 0 0 3.54 9.92l-4.44 4.43 1.42 1.42 18-18-1.42-1.42zm7.44.02a1 1 0 0 0-1.39.05L12.82 16a4.07 4.07 0 0 1-.51-.14l-2.66 2.61A15.46 15.46 0 0 0 17.89 21h.36a1 1 0 0 0 .65-.29l1.86-2.17a1 1 0 0 0-.09-1.39z\"}}]})(props);\n};\nexport function BiSolidPhoneOutgoing (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m16.793 5.793-4.5 4.5 1.414 1.414 4.5-4.5L21 10V3h-7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M16.422 13.446a1.001 1.001 0 0 0-1.391.043l-2.393 2.461c-.576-.11-1.734-.471-2.926-1.66-1.192-1.193-1.553-2.354-1.66-2.926l2.459-2.394a1 1 0 0 0 .043-1.391L6.859 3.516a1 1 0 0 0-1.391-.087L3.299 5.29a.996.996 0 0 0-.291.648c-.015.25-.301 6.172 4.291 10.766 4.006 4.006 9.024 4.299 10.406 4.299.202 0 .326-.006.359-.008a.992.992 0 0 0 .648-.291l1.86-2.171a1 1 0 0 0-.086-1.391l-4.064-3.696z\"}}]})(props);\n};\nexport function BiSolidPhone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m20.487 17.14-4.065-3.696a1.001 1.001 0 0 0-1.391.043l-2.393 2.461c-.576-.11-1.734-.471-2.926-1.66-1.192-1.193-1.553-2.354-1.66-2.926l2.459-2.394a1 1 0 0 0 .043-1.391L6.859 3.513a1 1 0 0 0-1.391-.087l-2.17 1.861a1 1 0 0 0-.29.649c-.015.25-.301 6.172 4.291 10.766C11.305 20.707 16.323 21 17.705 21c.202 0 .326-.006.359-.008a.992.992 0 0 0 .648-.291l1.86-2.171a.997.997 0 0 0-.085-1.39z\"}}]})(props);\n};\nexport function BiSolidPhotoAlbum (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H6c-1.206 0-3 .799-3 3v14c0 2.201 1.794 3 3 3h15v-2H6.012C5.55 19.988 5 19.806 5 19s.55-.988 1.012-1H21V3a1 1 0 0 0-1-1zM9.503 5a1.503 1.503 0 1 1 0 3.006 1.503 1.503 0 0 1 0-3.006zM12 13H7l3-3 1.5 1.399L14.5 8l3.5 5h-6z\"}}]})(props);\n};\nexport function BiSolidPiano (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5C3.346 3 2 4.346 2 6v12c0 1.654 1.346 3 3 3h14c1.654 0 3-1.346 3-3V6c0-1.654-1.346-3-3-3zm0 16H5a1 1 0 0 1-1-1v-6h2v4h2v-4h1v4h2v-4h1v4h2v-4h2v4h2v-4h2v6a1 1 0 0 1-1 1z\"}}]})(props);\n};\nexport function BiSolidPieChartAlt2 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 2.051V11h8.949c-.47-4.717-4.232-8.479-8.949-8.949zm4.969 17.953c2.189-1.637 3.694-4.14 3.98-7.004h-8.183l4.203 7.004z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 12V2.051C5.954 2.555 2 6.824 2 12c0 5.514 4.486 10 10 10a9.93 9.93 0 0 0 4.255-.964s-5.253-8.915-5.254-9.031A.02.02 0 0 0 11 12z\"}}]})(props);\n};\nexport function BiSolidPieChartAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.071 4.929A9.97 9.97 0 0 0 12 2a9.936 9.936 0 0 0-7.071 2.929C3.04 6.818 2 9.33 2 12s1.04 5.182 2.929 7.071C6.818 20.96 9.33 22 12 22s5.182-1.04 7.071-2.929A9.936 9.936 0 0 0 22 12a9.97 9.97 0 0 0-2.929-7.071zm-1.414 12.728C16.146 19.168 14.137 20 12 20s-4.146-.832-5.657-2.343C4.832 16.146 4 14.137 4 12s.832-4.146 2.343-5.657A7.948 7.948 0 0 1 12 4v8h8a7.948 7.948 0 0 1-2.343 5.657z\"}}]})(props);\n};\nexport function BiSolidPieChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 10V5c4 0 7 3 7 7h-7z\"}}]})(props);\n};\nexport function BiSolidPin (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 11.586V6h2V4a2 2 0 0 0-2-2H9a2 2 0 0 0-2 2v2h2v5.586l-2.707 1.707A.996.996 0 0 0 6 14v2a1 1 0 0 0 1 1h4v3l1 2 1-2v-3h4a1 1 0 0 0 1-1v-2a.996.996 0 0 0-.293-.707L15 11.586z\"}}]})(props);\n};\nexport function BiSolidPizza (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9.76 2.021a.995.995 0 0 0-.989.703L3.579 19.166a1 1 0 0 0 1.255 1.255l16.442-5.192a.991.991 0 0 0 .702-.988C21.6 7.666 16.334 2.4 9.76 2.021zM10 16a2 2 0 1 1 .001-4.001A2 2 0 0 1 10 16zm6-2a2 2 0 1 1 .001-4.001A2 2 0 0 1 16 14z\"}}]})(props);\n};\nexport function BiSolidPlaneAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3.414 13.778 2 15.192l4.949 2.121 2.122 4.95 1.414-1.414-.707-3.536L13.091 14l3.61 7.704 1.339-1.339-1.19-10.123 2.828-2.829a2 2 0 1 0-2.828-2.828l-2.903 2.903L3.824 6.297 2.559 7.563l7.644 3.67-3.253 3.253-3.536-.708z\"}}]})(props);\n};\nexport function BiSolidPlaneLand (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.842 15.296a1.61 1.61 0 0 0 1.892-1.189v-.001a1.609 1.609 0 0 0-1.177-1.949l-4.576-1.133L9.825 4.21l-2.224-.225 2.931 6.589-4.449-.449-2.312-3.829-1.38.31 1.24 5.52 15.211 3.17zM3 18h18v2H3z\"}}]})(props);\n};\nexport function BiSolidPlaneTakeOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 18h18v2H3zm18.509-9.473a1.61 1.61 0 0 0-2.036-1.019L15 9 7 6 5 7l6 4-4 2-4-2-1 1 4 4 14.547-5.455a1.611 1.611 0 0 0 .962-2.018z\"}}]})(props);\n};\nexport function BiSolidPlane (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 16.21v-1.895L14 8V4a2 2 0 0 0-4 0v4.105L2 14.42v1.789l8-2.81V18l-3 2v2l5-2 5 2v-2l-3-2v-4.685l8 2.895z\"}}]})(props);\n};\nexport function BiSolidPlanet (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.165 15.582c4.587-4.073 8.141-9.424 6.057-11.771-.661-.744-1.584-1.089-2.575-.983-.832.091-1.687.502-2.549 1.192a8.922 8.922 0 0 0-8.712.282 8.917 8.917 0 0 0-4.109 5.515 8.892 8.892 0 0 0 .306 5.325c-1.065 1.203-2.054 3.677-.823 5.063.517.581 1.257.841 2.147.841 2.707 0 6.808-2.399 10.258-5.464zm3.699-10.767c.358-.034.632.064.861.323.231.261.169.946-.252 1.929a9.059 9.059 0 0 0-1.617-1.853c.431-.262.776-.373 1.008-.399zM4.633 17.118a8.979 8.979 0 0 0 1.568 1.737c-1.025.303-1.714.283-1.945.021-.217-.243.002-1.069.377-1.758zm16.31-5.869c-1.215 1.797-2.906 3.671-4.778 5.333-1.934 1.719-4.066 3.208-6.05 4.202a9.082 9.082 0 0 0 1.874.212 8.986 8.986 0 0 0 4.616-1.282 8.915 8.915 0 0 0 4.338-8.465z\"}}]})(props);\n};\nexport function BiSolidPlaylist (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 16.493C13 18.427 14.573 20 16.507 20s3.507-1.573 3.507-3.507c0-.177-.027-.347-.053-.517H20V6h2V4h-3a1 1 0 0 0-1 1v8.333a3.465 3.465 0 0 0-1.493-.346A3.51 3.51 0 0 0 13 16.493zM2 5h14v2H2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M2 9h14v2H2zm0 4h9v2H2zm0 4h9v2H2z\"}}]})(props);\n};\nexport function BiSolidPlug (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 8h2v5c0 2.206 1.794 4 4 4h2v5h2v-5h2c2.206 0 4-1.794 4-4V8h2V6H3v2zm4-6h2v3H7zm8 0h2v3h-2z\"}}]})(props);\n};\nexport function BiSolidPlusCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm5 11h-4v4h-2v-4H7v-2h4V7h2v4h4v2z\"}}]})(props);\n};\nexport function BiSolidPlusSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 21h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2zm2-10h4V7h2v4h4v2h-4v4h-2v-4H7v-2z\"}}]})(props);\n};\nexport function BiSolidPointer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.978 13.21a1 1 0 0 0-.396-1.024l-14-10a.999.999 0 0 0-1.575.931l2 17a1 1 0 0 0 1.767.516l3.612-4.416 3.377 5.46 1.701-1.052-3.357-5.428 6.089-1.218a.995.995 0 0 0 .782-.769z\"}}]})(props);\n};\nexport function BiSolidPolygon (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.707 7.293-5-5A.996.996 0 0 0 16 2H8a.996.996 0 0 0-.707.293l-5 5A.996.996 0 0 0 2 8v8c0 .266.105.52.293.707l5 5A.996.996 0 0 0 8 22h8c.266 0 .52-.105.707-.293l5-5A.996.996 0 0 0 22 16V8a.996.996 0 0 0-.293-.707z\"}}]})(props);\n};\nexport function BiSolidPopsicle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4a7 7 0 0 0-9.9 0l-7.82 7.82a1 1 0 0 0 0 1.41l3.54 3.54-3.54 3.53 1.42 1.42 3.53-3.54 3.54 3.54a1 1 0 0 0 1.41 0L20 13.94A7 7 0 0 0 20 4zm-2.7 2.7a3.33 3.33 0 0 0-4.6 0l-1.06-1.06a4.76 4.76 0 0 1 6.72 0z\"}}]})(props);\n};\nexport function BiSolidPrinter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 7h-1V2H6v5H5a3 3 0 0 0-3 3v7a2 2 0 0 0 2 2h2v3h12v-3h2a2 2 0 0 0 2-2v-7a3 3 0 0 0-3-3zM8 4h8v3H8V4zm0 16v-4h8v4H8zm11-8h-4v-2h4v2z\"}}]})(props);\n};\nexport function BiSolidPurchaseTagAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.707 2.293A.996.996 0 0 0 11 2H6a.996.996 0 0 0-.707.293l-3 3A.996.996 0 0 0 2 6v5c0 .266.105.52.293.707l10 10a.997.997 0 0 0 1.414 0l8-8a.999.999 0 0 0 0-1.414l-10-10zM8.353 10a1.647 1.647 0 1 1-.001-3.293A1.647 1.647 0 0 1 8.353 10z\"}}]})(props);\n};\nexport function BiSolidPurchaseTag (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8 8a2 2 0 0 0 2.828 0l7.172-7.172a2 2 0 0 0 0-2.828l-8-8zM7 9a2 2 0 1 1 .001-4.001A2 2 0 0 1 7 9z\"}}]})(props);\n};\nexport function BiSolidPyramid (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.445 21.832a1 1 0 0 0 1.11 0l9-6A.998.998 0 0 0 21.8 14.4l-9-12c-.377-.504-1.223-.504-1.6 0l-9 12a1 1 0 0 0 .245 1.432l9 6zm8.12-7.078L12 19.798V4.667l7.565 10.087z\"}}]})(props);\n};\nexport function BiSolidQuoteAltLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6.5 10c-.223 0-.437.034-.65.065.069-.232.14-.468.254-.68.114-.308.292-.575.469-.844.148-.291.409-.488.601-.737.201-.242.475-.403.692-.604.213-.21.492-.315.714-.463.232-.133.434-.28.65-.35l.539-.222.474-.197-.485-1.938-.597.144c-.191.048-.424.104-.689.171-.271.05-.56.187-.882.312-.318.142-.686.238-1.028.466-.344.218-.741.4-1.091.692-.339.301-.748.562-1.05.945-.33.358-.656.734-.909 1.162-.293.408-.492.856-.702 1.299-.19.443-.343.896-.468 1.336-.237.882-.343 1.72-.384 2.437-.034.718-.014 1.315.028 1.747.015.204.043.402.063.539l.025.168.026-.006A4.5 4.5 0 1 0 6.5 10zm11 0c-.223 0-.437.034-.65.065.069-.232.14-.468.254-.68.114-.308.292-.575.469-.844.148-.291.409-.488.601-.737.201-.242.475-.403.692-.604.213-.21.492-.315.714-.463.232-.133.434-.28.65-.35l.539-.222.474-.197-.485-1.938-.597.144c-.191.048-.424.104-.689.171-.271.05-.56.187-.882.312-.317.143-.686.238-1.028.467-.344.218-.741.4-1.091.692-.339.301-.748.562-1.05.944-.33.358-.656.734-.909 1.162-.293.408-.492.856-.702 1.299-.19.443-.343.896-.468 1.336-.237.882-.343 1.72-.384 2.437-.034.718-.014 1.315.028 1.747.015.204.043.402.063.539l.025.168.026-.006A4.5 4.5 0 1 0 17.5 10z\"}}]})(props);\n};\nexport function BiSolidQuoteAltRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.95 8.721-.025-.168-.026.006A4.5 4.5 0 1 0 17.5 14c.223 0 .437-.034.65-.065-.069.232-.14.468-.254.68-.114.308-.292.575-.469.844-.148.291-.409.488-.601.737-.201.242-.475.403-.692.604-.213.21-.492.315-.714.463-.232.133-.434.28-.65.35l-.539.222-.474.197.484 1.939.597-.144c.191-.048.424-.104.689-.171.271-.05.56-.187.882-.312.317-.143.686-.238 1.028-.467.344-.218.741-.4 1.091-.692.339-.301.748-.562 1.05-.944.33-.358.656-.734.909-1.162.293-.408.492-.856.702-1.299.19-.443.343-.896.468-1.336.237-.882.343-1.72.384-2.437.034-.718.014-1.315-.028-1.747a7.028 7.028 0 0 0-.063-.539zm-11 0-.025-.168-.026.006A4.5 4.5 0 1 0 6.5 14c.223 0 .437-.034.65-.065-.069.232-.14.468-.254.68-.114.308-.292.575-.469.844-.148.291-.409.488-.601.737-.201.242-.475.403-.692.604-.213.21-.492.315-.714.463-.232.133-.434.28-.65.35l-.539.222c-.301.123-.473.195-.473.195l.484 1.939.597-.144c.191-.048.424-.104.689-.171.271-.05.56-.187.882-.312.317-.143.686-.238 1.028-.467.344-.218.741-.4 1.091-.692.339-.301.748-.562 1.05-.944.33-.358.656-.734.909-1.162.293-.408.492-.856.702-1.299.19-.443.343-.896.468-1.336.237-.882.343-1.72.384-2.437.034-.718.014-1.315-.028-1.747a7.571 7.571 0 0 0-.064-.537z\"}}]})(props);\n};\nexport function BiSolidQuoteLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3.691 6.292C5.094 4.771 7.217 4 10 4h1v2.819l-.804.161c-1.37.274-2.323.813-2.833 1.604A2.902 2.902 0 0 0 6.925 10H10a1 1 0 0 1 1 1v7c0 1.103-.897 2-2 2H3a1 1 0 0 1-1-1v-5l.003-2.919c-.009-.111-.199-2.741 1.688-4.789zM20 20h-6a1 1 0 0 1-1-1v-5l.003-2.919c-.009-.111-.199-2.741 1.688-4.789C16.094 4.771 18.217 4 21 4h1v2.819l-.804.161c-1.37.274-2.323.813-2.833 1.604A2.902 2.902 0 0 0 17.925 10H21a1 1 0 0 1 1 1v7c0 1.103-.897 2-2 2z\"}}]})(props);\n};\nexport function BiSolidQuoteRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.309 17.708C22.196 15.66 22.006 13.03 22 13V5a1 1 0 0 0-1-1h-6c-1.103 0-2 .897-2 2v7a1 1 0 0 0 1 1h3.078a2.89 2.89 0 0 1-.429 1.396c-.508.801-1.465 1.348-2.846 1.624l-.803.16V20h1c2.783 0 4.906-.771 6.309-2.292zm-11.007 0C11.19 15.66 10.999 13.03 10.993 13V5a1 1 0 0 0-1-1h-6c-1.103 0-2 .897-2 2v7a1 1 0 0 0 1 1h3.078a2.89 2.89 0 0 1-.429 1.396c-.508.801-1.465 1.348-2.846 1.624l-.803.16V20h1c2.783 0 4.906-.771 6.309-2.292z\"}}]})(props);\n};\nexport function BiSolidQuoteSingleLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m15.203 6.98.804-.161V4h-1c-2.784 0-4.906.771-6.309 2.292C6.81 8.34 7 10.97 7.006 11v8a1 1 0 0 0 1 1h7c1.103 0 2-.897 2-2v-7a1 1 0 0 0-1-1h-4.079c.022-.402.123-.912.429-1.396.509-.801 1.466-1.347 2.847-1.624z\"}}]})(props);\n};\nexport function BiSolidQuoteSingleRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8.804 17.02 8 17.18V20h1c2.783 0 4.906-.771 6.309-2.292C17.196 15.66 17.006 13.03 17 13V5a1 1 0 0 0-1-1H9c-1.103 0-2 .897-2 2v7a1 1 0 0 0 1 1h4.078a2.89 2.89 0 0 1-.429 1.396c-.507.801-1.464 1.347-2.845 1.624z\"}}]})(props);\n};\nexport function BiSolidRadiation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9.912 8.531 7.121 3.877a.501.501 0 0 0-.704-.166 9.982 9.982 0 0 0-4.396 7.604.505.505 0 0 0 .497.528l5.421.09a4.042 4.042 0 0 1 1.973-3.402zm8.109-4.51a.504.504 0 0 0-.729.151L14.499 8.83a4.03 4.03 0 0 1 1.546 3.112l5.419-.09a.507.507 0 0 0 .499-.53 9.986 9.986 0 0 0-3.942-7.301zm-4.067 11.511a4.015 4.015 0 0 1-1.962.526 4.016 4.016 0 0 1-1.963-.526l-2.642 4.755a.5.5 0 0 0 .207.692A9.948 9.948 0 0 0 11.992 22a9.94 9.94 0 0 0 4.396-1.021.5.5 0 0 0 .207-.692l-2.641-4.755z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"3\"}}]})(props);\n};\nexport function BiSolidRadio (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m20.249 5.025-7.897-2.962-.703 1.873L14.484 5H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V7c0-1.02-.766-1.851-1.751-1.975zM10 17H6v-2h4v2zm6.5 1a2.5 2.5 0 1 1 0-5 2.5 2.5 0 0 1 0 5zm3.5-7H4V7h16v4z\"}}]})(props);\n};\nexport function BiSolidReceipt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 12v6a1 1 0 0 1-2 0V4a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v14c0 1.654 1.346 3 3 3h14c1.654 0 3-1.346 3-3v-6h-2zm-6-1v2H6v-2h8zM6 9V7h8v2H6zm8 6v2h-3v-2h3z\"}}]})(props);\n};\nexport function BiSolidRectangle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 20h18a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1z\"}}]})(props);\n};\nexport function BiSolidRegistered (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 9h-3v2h3a1 1 0 0 0 0-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2zm2.13 15-2.67-4H10v4H8V7h5a3 3 0 0 1 .79 5.88L16.54 17z\"}}]})(props);\n};\nexport function BiSolidRename (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 5.995h-1v12h1c1.103 0 2-.897 2-2v-8c0-1.102-.897-2-2-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M17 17.995V4h2.995V2h-8v2H15v1.995H4c-1.103 0-2 .897-2 2v8c0 1.103.897 2 2 2h11V20h-3.005v2h8v-2H17v-2.005zm-11-4v-4h9v4H6z\"}}]})(props);\n};\nexport function BiSolidReport (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m20 8-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8zM9 19H7v-9h2v9zm4 0h-2v-6h2v6zm4 0h-2v-3h2v3zM14 9h-1V4l5 5h-4z\"}}]})(props);\n};\nexport function BiSolidRewindCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.485 2 12s4.486 10 10 10c5.515 0 10-4.485 10-10S17.515 2 12 2zm5 14-6-4v4l-6-4 6-4v4l6-4v8z\"}}]})(props);\n};\nexport function BiSolidRightArrowAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m19 12-7-6v5H6v2h6v5z\"}}]})(props);\n};\nexport function BiSolidRightArrowCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 15v-4H7v-2h5V7l5 5-5 5z\"}}]})(props);\n};\nexport function BiSolidRightArrowSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 5v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2zm4 6h5V7l5 5-5 5v-4H7v-2z\"}}]})(props);\n};\nexport function BiSolidRightArrow (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5.536 21.886a1.004 1.004 0 0 0 1.033-.064l13-9a1 1 0 0 0 0-1.644l-13-9A1 1 0 0 0 5 3v18a1 1 0 0 0 .536.886z\"}}]})(props);\n};\nexport function BiSolidRightDownArrowCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4.929 4.929c-3.898 3.899-3.898 10.244 0 14.143 3.899 3.898 10.243 3.898 14.143 0 3.898-3.899 3.898-10.244 0-14.143-3.9-3.899-10.244-3.899-14.143 0zm10.606 10.607h-7.07l2.828-2.829-3.535-3.536 1.414-1.414 3.535 3.536 2.828-2.829v7.072z\"}}]})(props);\n};\nexport function BiSolidRightTopArrowCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.071 4.929c-3.899-3.898-10.243-3.898-14.143 0-3.898 3.899-3.898 10.244 0 14.143 3.899 3.898 10.243 3.898 14.143 0 3.899-3.9 3.899-10.244 0-14.143zm-3.536 10.607-2.828-2.829-3.535 3.536-1.414-1.414 3.535-3.536-2.828-2.829h7.07v7.072z\"}}]})(props);\n};\nexport function BiSolidRocket (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.78 15.84S18.64 13 19.61 12c3.07-3 1.54-9.18 1.54-9.18S15 1.29 12 4.36C9.66 6.64 8.14 8.22 8.14 8.22S4.3 7.42 2 9.72L14.25 22c2.3-2.33 1.53-6.16 1.53-6.16zm-1.5-9a2 2 0 0 1 2.83 0 2 2 0 1 1-2.83 0zM3 21a7.81 7.81 0 0 0 5-2l-3-3c-2 1-2 5-2 5z\"}}]})(props);\n};\nexport function BiSolidRuler (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.875 7H3.125C1.953 7 1 7.897 1 9v6c0 1.103.953 2 2.125 2h17.75C22.047 17 23 16.103 23 15V9c0-1.103-.953-2-2.125-2zM7 12H5V9h2v3zm4 1H9V9h2v4zm4-1h-2V9h2v3zm4 1h-2V9h2v4z\"}}]})(props);\n};\nexport function BiSolidSad (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm-5 8.5a1.5 1.5 0 1 1 3.001.001A1.5 1.5 0 0 1 7 10.5zM8 17s1-3 4-3 4 3 4 3H8zm7.493-5.014a1.494 1.494 0 1 1 .001-2.987 1.494 1.494 0 0 1-.001 2.987z\"}}]})(props);\n};\nexport function BiSolidSave (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 21h14a2 2 0 0 0 2-2V8l-5-5H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2zM7 5h4v2h2V5h2v4H7V5zm0 8h10v6H7v-6z\"}}]})(props);\n};\nexport function BiSolidSchool (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 10h-2V4h1V2H4v2h1v6H3a1 1 0 0 0-1 1v9h20v-9a1 1 0 0 0-1-1zm-7 8v-4h-4v4H7V4h10v14h-3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M9 6h2v2H9zm4 0h2v2h-2zm-4 4h2v2H9zm4 0h2v2h-2z\"}}]})(props);\n};\nexport function BiSolidSearchAlt2 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 16c1.763 0 3.37-.66 4.603-1.739l1.337 2.8s.275.224.653.596c.387.363.896.854 1.384 1.367l1.358 1.392.604.646 2.121-2.121-.646-.604-1.392-1.358a35.13 35.13 0 0 1-1.367-1.384c-.372-.378-.596-.653-.596-.653l-2.8-1.337A6.967 6.967 0 0 0 16 9c0-3.859-3.141-7-7-7S2 5.141 2 9s3.141 7 7 7z\"}}]})(props);\n};\nexport function BiSolidSearch (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 2c-4.411 0-8 3.589-8 8s3.589 8 8 8a7.952 7.952 0 0 0 4.897-1.688l4.396 4.396 1.414-1.414-4.396-4.396A7.952 7.952 0 0 0 18 10c0-4.411-3.589-8-8-8z\"}}]})(props);\n};\nexport function BiSolidSelectMultiple (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm-6.933 12.481-3.274-3.274 1.414-1.414 1.726 1.726 4.299-5.159 1.537 1.281-5.702 6.84z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M4 22h11v-2H4V8H2v12c0 1.103.897 2 2 2z\"}}]})(props);\n};\nexport function BiSolidSend (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.426 11.095-17-8A1 1 0 0 0 3.03 4.242l1.212 4.849L12 12l-7.758 2.909-1.212 4.849a.998.998 0 0 0 1.396 1.147l17-8a1 1 0 0 0 0-1.81z\"}}]})(props);\n};\nexport function BiSolidServer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2zm-5 5h-2V6h2zm4 0h-2V6h2zm1 5H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2zm-5 5h-2v-2h2zm4 0h-2v-2h2z\"}}]})(props);\n};\nexport function BiSolidShapes (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.867 2.504c-.355-.624-1.381-.623-1.736 0l-3.999 7A1 1 0 0 0 13 11h8a1.001 1.001 0 0 0 .868-1.496l-4.001-7zM3 22h7a1 1 0 0 0 1-1v-7a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1zm14.5-9c-2.481 0-4.5 2.019-4.5 4.5s2.019 4.5 4.5 4.5 4.5-2.019 4.5-4.5-2.019-4.5-4.5-4.5z\"}}]})(props);\n};\nexport function BiSolidShareAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 12c0 1.654 1.346 3 3 3 .794 0 1.512-.315 2.049-.82l5.991 3.424c-.018.13-.04.26-.04.396 0 1.654 1.346 3 3 3s3-1.346 3-3-1.346-3-3-3c-.794 0-1.512.315-2.049.82L8.96 12.397c.018-.131.04-.261.04-.397s-.022-.266-.04-.397l5.991-3.423c.537.505 1.255.82 2.049.82 1.654 0 3-1.346 3-3s-1.346-3-3-3-3 1.346-3 3c0 .136.022.266.04.397L8.049 9.82A2.982 2.982 0 0 0 6 9c-1.654 0-3 1.346-3 3z\"}}]})(props);\n};\nexport function BiSolidShare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 6.914V2.586L6.293 7.293l-3.774 3.774 3.841 3.201L11 18.135V13.9c8.146-.614 11 4.1 11 4.1 0-2.937-.242-5.985-2.551-8.293C16.765 7.022 12.878 6.832 11 6.914z\"}}]})(props);\n};\nexport function BiSolidShieldAlt2 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.881 5.223a.496.496 0 0 0-.747-.412c-.672.392-1.718.898-2.643.898-.421 0-.849-.064-1.289-.198a5.712 5.712 0 0 1-.808-.309c-1.338-.639-2.567-1.767-3.696-2.889a1.008 1.008 0 0 0-.698-.29 1.008 1.008 0 0 0-.698.29c-1.129 1.122-2.358 2.25-3.696 2.889h-.001a5.655 5.655 0 0 1-.807.309c-.44.134-.869.198-1.289.198-.925 0-1.971-.507-2.643-.898a.496.496 0 0 0-.747.412c-.061 1.538-.077 4.84.688 7.444 1.399 4.763 4.48 7.976 8.91 9.292l.14.041.14-.014V22v-.014H12l.143.014.14-.041c4.43-1.316 7.511-4.529 8.91-9.292.765-2.604.748-5.906.688-7.444z\"}}]})(props);\n};\nexport function BiSolidShieldMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m20.43 5.76-8-3.56a1 1 0 0 0-.82 0l-8 3.56a1 1 0 0 0-.59.9c0 2.37.44 10.8 8.51 15.11a1 1 0 0 0 1 0c8-4.3 8.58-12.71 8.57-15.1a1 1 0 0 0-.67-.91zm-4.43 7H8v-2h8z\"}}]})(props);\n};\nexport function BiSolidShieldPlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m20.43 5.76-8-3.56a1 1 0 0 0-.82 0l-8 3.56a1 1 0 0 0-.59.9c0 2.37.44 10.8 8.51 15.11a1 1 0 0 0 1 0c8-4.3 8.58-12.71 8.57-15.1a1 1 0 0 0-.67-.91zm-4.43 7h-3v3h-2v-3H8v-2h3v-3h2v3h3z\"}}]})(props);\n};\nexport function BiSolidShieldX (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.492 21.771c.294.157.663.157.957-.001 8.012-4.304 8.581-12.713 8.574-15.104a.988.988 0 0 0-.596-.903l-8.051-3.565a1.005 1.005 0 0 0-.813.001L3.57 5.765a.988.988 0 0 0-.592.891c-.034 2.379.445 10.806 8.514 15.115zM8.293 9.707l1.414-1.414L12 10.586l2.293-2.293 1.414 1.414L13.414 12l2.293 2.293-1.414 1.414L12 13.414l-2.293 2.293-1.414-1.414L10.586 12 8.293 9.707z\"}}]})(props);\n};\nexport function BiSolidShield (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m20.496 6.106-7.973-4a.997.997 0 0 0-.895-.002l-8.027 4c-.297.15-.502.437-.544.767-.013.097-1.145 9.741 8.541 15.008a.995.995 0 0 0 .969-.009c9.307-5.259 8.514-14.573 8.476-14.967a1 1 0 0 0-.547-.797z\"}}]})(props);\n};\nexport function BiSolidShip (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.997 20c-.899 0-1.288-.311-1.876-.781-.68-.543-1.525-1.219-3.127-1.219-1.601 0-2.446.676-3.125 1.22-.587.469-.975.78-1.874.78-.897 0-1.285-.311-1.872-.78C4.444 18.676 3.601 18 2 18v2c.898 0 1.286.311 1.873.78.679.544 1.523 1.22 3.122 1.22 1.601 0 2.445-.676 3.124-1.219.588-.47.976-.781 1.875-.781.9 0 1.311.328 1.878.781.679.543 1.524 1.219 3.125 1.219s2.446-.676 3.125-1.219C20.689 20.328 21.1 20 22 20v-2c-1.602 0-2.447.676-3.127 1.219-.588.47-.977.781-1.876.781zM6 8.5 4 9l2 8h.995c1.601 0 2.445-.676 3.124-1.219.588-.47.976-.781 1.875-.781.9 0 1.311.328 1.878.781.679.543 1.524 1.219 3.125 1.219H18l.027-.107.313-1.252L20 9l-2-.5V5.001a1 1 0 0 0-.804-.981L13 3.181V2h-2v1.181l-4.196.839A1 1 0 0 0 6 5.001V8.5zm2-2.681 4-.8 4 .8V8l-4-1-4 1V5.819z\"}}]})(props);\n};\nexport function BiSolidShocked (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm-5 8.5a1.5 1.5 0 1 1 3.001.001A1.5 1.5 0 0 1 7 10.5zm5 7.5c-1.657 0-3-1.119-3-2.5s1.343-2.5 3-2.5 3 1.119 3 2.5-1.343 2.5-3 2.5zm3.493-6.014a1.494 1.494 0 1 1 .001-2.987 1.494 1.494 0 0 1-.001 2.987z\"}}]})(props);\n};\nexport function BiSolidShoppingBagAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 4H3a1 1 0 0 0-1 1v14a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V5a1 1 0 0 0-1-1zm-9 9c-3.309 0-6-2.691-6-6h2c0 2.206 1.794 4 4 4s4-1.794 4-4h2c0 3.309-2.691 6-6 6z\"}}]})(props);\n};\nexport function BiSolidShoppingBag (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 22h14a2 2 0 0 0 2-2V9a1 1 0 0 0-1-1h-3v-.777c0-2.609-1.903-4.945-4.5-5.198A5.005 5.005 0 0 0 7 7v1H4a1 1 0 0 0-1 1v11a2 2 0 0 0 2 2zm12-12v2h-2v-2h2zM9 7c0-1.654 1.346-3 3-3s3 1.346 3 3v1H9V7zm-2 3h2v2H7v-2z\"}}]})(props);\n};\nexport function BiSolidShoppingBags (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 20h2V10a1 1 0 0 1 1-1h12V7a1 1 0 0 0-1-1h-3.051c-.252-2.244-2.139-4-4.449-4S6.303 3.756 6.051 6H3a1 1 0 0 0-1 1v11a2 2 0 0 0 2 2zm6.5-16c1.207 0 2.218.86 2.45 2h-4.9c.232-1.14 1.243-2 2.45-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M21 11H9a1 1 0 0 0-1 1v8a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-8a1 1 0 0 0-1-1zm-6 7c-2.757 0-5-2.243-5-5h2c0 1.654 1.346 3 3 3s3-1.346 3-3h2c0 2.757-2.243 5-5 5z\"}}]})(props);\n};\nexport function BiSolidShow (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 5c-7.633 0-9.927 6.617-9.948 6.684L1.946 12l.105.316C2.073 12.383 4.367 19 12 19s9.927-6.617 9.948-6.684l.106-.316-.105-.316C21.927 11.617 19.633 5 12 5zm0 11c-2.206 0-4-1.794-4-4s1.794-4 4-4 4 1.794 4 4-1.794 4-4 4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 10c-1.084 0-2 .916-2 2s.916 2 2 2 2-.916 2-2-.916-2-2-2z\"}}]})(props);\n};\nexport function BiSolidShower (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 18.33A6.78 6.78 0 0 0 19.5 15a6.73 6.73 0 0 0-1.5 3.33 1.51 1.51 0 1 0 3 0zM11 20.33A6.78 6.78 0 0 0 9.5 17 6.73 6.73 0 0 0 8 20.33 1.59 1.59 0 0 0 9.5 22a1.59 1.59 0 0 0 1.5-1.67zM16 20.33A6.78 6.78 0 0 0 14.5 17a6.73 6.73 0 0 0-1.5 3.33A1.59 1.59 0 0 0 14.5 22a1.59 1.59 0 0 0 1.5-1.67zM6 18.33A6.78 6.78 0 0 0 4.5 15 6.73 6.73 0 0 0 3 18.33 1.59 1.59 0 0 0 4.5 20 1.59 1.59 0 0 0 6 18.33zM2 12h20v2H2zM13 4.07V2h-2v2.07A8 8 0 0 0 4.07 11h15.86A8 8 0 0 0 13 4.07z\"}}]})(props);\n};\nexport function BiSolidSkipNextCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm4 14h-2v-4l-6 4V8l6 4V8h2v8z\"}}]})(props);\n};\nexport function BiSolidSkipPreviousCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10c5.515 0 10-4.486 10-10S17.515 2 12 2zm4 14-6-4v4H8V8h2v4l6-4v8z\"}}]})(props);\n};\nexport function BiSolidSkull (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C5.505 2 2 6.637 2 11c0 2.129 1.009 3.979 3 5.508V21h3v-3h2v3h4v-3h2v3h3v-4.493c1.991-1.528 3-3.379 3-5.507 0-4.363-3.505-9-10-9zM8 13c-1.121 0-2-1.098-2-2.5S6.879 8 8 8s2 1.098 2 2.5S9.121 13 8 13zm8 0c-1.121 0-2-1.098-2-2.5S14.879 8 16 8s2 1.098 2 2.5-.879 2.5-2 2.5z\"}}]})(props);\n};\nexport function BiSolidSleepy (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm-4 9.01-2-.02C6.017 9.386 7.095 7 10 7v2c-1.924 0-1.998 1.805-2 2.01zM12 18c-1.657 0-3-1.119-3-2.5s1.343-2.5 3-2.5 3 1.119 3 2.5-1.343 2.5-3 2.5zm5-7-1 .008C15.992 10.536 15.826 9 14 9V7c2.935 0 4 2.393 4 4h-1z\"}}]})(props);\n};\nexport function BiSolidSlideshow (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4c-1.103 0-2 .897-2 2v10c0 1.103.897 2 2 2h7v3H8v2h8v-2h-3v-3h7c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zM10 13V7l5 3-5 3z\"}}]})(props);\n};\nexport function BiSolidSmile (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 22c5.514 0 10-4.486 10-10S17.514 2 12 2 2 6.486 2 12s4.486 10 10 10zm3.493-13a1.494 1.494 0 1 1-.001 2.987A1.494 1.494 0 0 1 15.493 9zm-4.301 6.919a4.108 4.108 0 0 0 1.616 0c.253-.052.505-.131.75-.233.234-.1.464-.224.679-.368.208-.142.407-.306.591-.489.183-.182.347-.381.489-.592l1.658 1.117a6.027 6.027 0 0 1-1.619 1.621 6.003 6.003 0 0 1-2.149.904 6.116 6.116 0 0 1-2.414-.001 5.919 5.919 0 0 1-2.148-.903 6.078 6.078 0 0 1-1.621-1.622l1.658-1.117c.143.211.307.41.488.59a3.988 3.988 0 0 0 2.022 1.093zM8.5 9a1.5 1.5 0 1 1-.001 3.001A1.5 1.5 0 0 1 8.5 9z\"}}]})(props);\n};\nexport function BiSolidSortAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6.227 11h11.547c.862 0 1.32-1.02.747-1.665L12.748 2.84a.998.998 0 0 0-1.494 0L5.479 9.335C4.906 9.98 5.364 11 6.227 11zm5.026 10.159a.998.998 0 0 0 1.494 0l5.773-6.495c.574-.644.116-1.664-.747-1.664H6.227c-.862 0-1.32 1.02-.747 1.665l5.773 6.494z\"}}]})(props);\n};\nexport function BiSolidSpa (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 16.114c-3.998-5.951-8.574-7.043-8.78-7.09L2 8.75V10c0 7.29 3.925 12 10 12 5.981 0 10-4.822 10-12V8.75l-1.22.274c-.206.047-4.782 1.139-8.78 7.09z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11.274 3.767c-1.799 1.898-2.84 3.775-3.443 5.295 1.329.784 2.781 1.943 4.159 3.685 1.364-1.76 2.826-2.925 4.17-3.709-.605-1.515-1.646-3.383-3.435-5.271L12 3l-.726.767z\"}}]})(props);\n};\nexport function BiSolidSpeaker (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"15\",\"r\":\"3\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M18 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm-6 2a2 2 0 1 1-2 2 2 2 0 0 1 2-2zm0 16a5 5 0 1 1 5-5 5 5 0 0 1-5 5z\"}}]})(props);\n};\nexport function BiSolidSprayCan (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13.003 3h2v2h-2zM16 3h2v2h-2zm0 3h2v2h-2zm3-3h2v2h-2zm0 3h2v2h-2zm0 3h2v2h-2zM4.012 12v9a1 1 0 0 0 1 1H13a1 1 0 0 0 1-1v-9a4 4 0 0 0-4-4H8.012a4 4 0 0 0-4 4zM7.003 2h4v4h-4z\"}}]})(props);\n};\nexport function BiSolidSpreadsheet (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 5v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2zm7 2h8v2h-8V7zm0 4h8v2h-8v-2zm0 4h8v2h-8v-2zM6 7h2v2H6V7zm0 4h2v2H6v-2zm0 4h2v2H6v-2z\"}}]})(props);\n};\nexport function BiSolidSquareRounded (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 2H7C4.243 2 2 4.243 2 7v10c0 2.757 2.243 5 5 5h10c2.757 0 5-2.243 5-5V7c0-2.757-2.243-5-5-5z\"}}]})(props);\n};\nexport function BiSolidSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1z\"}}]})(props);\n};\nexport function BiSolidStarHalf (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5.025 20.775A.998.998 0 0 0 6 22a1 1 0 0 0 .555-.168L12 18.202l5.445 3.63a1.001 1.001 0 0 0 1.517-1.106l-1.829-6.4 4.536-4.082a1 1 0 0 0-.59-1.74l-5.701-.454-2.467-5.461a.998.998 0 0 0-1.822-.001L8.622 8.05l-5.701.453a1 1 0 0 0-.619 1.713l4.214 4.107-1.491 6.452zM12 5.429l2.042 4.521.588.047h.001l3.972.315-3.271 2.944-.001.002-.463.416.171.597v.003l1.253 4.385L12 15.798V5.429z\"}}]})(props);\n};\nexport function BiSolidStar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.947 9.179a1.001 1.001 0 0 0-.868-.676l-5.701-.453-2.467-5.461a.998.998 0 0 0-1.822-.001L8.622 8.05l-5.701.453a1 1 0 0 0-.619 1.713l4.213 4.107-1.49 6.452a1 1 0 0 0 1.53 1.057L12 18.202l5.445 3.63a1.001 1.001 0 0 0 1.517-1.106l-1.829-6.4 4.536-4.082c.297-.268.406-.686.278-1.065z\"}}]})(props);\n};\nexport function BiSolidSticker (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.5 11c-4.136 0-7.5 3.364-7.5 7.5 0 .871.157 1.704.432 2.482l9.551-9.551A7.462 7.462 0 0 0 18.5 11z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12c0 4.583 3.158 8.585 7.563 9.69A9.431 9.431 0 0 1 9 18.5C9 13.262 13.262 9 18.5 9c1.12 0 2.191.205 3.19.563C20.585 5.158 16.583 2 12 2z\"}}]})(props);\n};\nexport function BiSolidStopwatch (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 5c-4.411 0-8 3.589-8 8s3.589 8 8 8 8-3.589 8-8-3.589-8-8-8zm1 8h-2V8h2v5zM9 2h6v2H9zm9.707 2.293 2 2-1.414 1.414-2-2z\"}}]})(props);\n};\nexport function BiSolidStoreAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 2H5C3.346 2 2 3.346 2 5v2.831c0 1.053.382 2.01 1 2.746V20a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1v-5h4v5a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-9.424c.618-.735 1-1.692 1-2.746V5c0-1.654-1.346-3-3-3zm1 3v2.831c0 1.14-.849 2.112-1.891 2.167L18 10c-1.103 0-2-.897-2-2V4h3c.552 0 1 .449 1 1zM10 8V4h4v4c0 1.103-.897 2-2 2s-2-.897-2-2zM4 5c0-.551.448-1 1-1h3v4c0 1.103-.897 2-2 2l-.109-.003C4.849 9.943 4 8.971 4 7.831V5zm6 11H6v-3h4v3z\"}}]})(props);\n};\nexport function BiSolidStore (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.999 8a.997.997 0 0 0-.143-.515L19.147 2.97A2.01 2.01 0 0 0 17.433 2H6.565c-.698 0-1.355.372-1.714.971L2.142 7.485A.997.997 0 0 0 1.999 8c0 1.005.386 1.914 1 2.618V20a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1v-5h4v5a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-9.382c.614-.704 1-1.613 1-2.618zm-2.016.251A2.002 2.002 0 0 1 17.999 10c-1.103 0-2-.897-2-2 0-.068-.025-.128-.039-.192l.02-.004L15.219 4h2.214l2.55 4.251zm-9.977-.186L10.818 4h2.361l.813 4.065C13.957 9.138 13.079 10 11.999 10s-1.958-.862-1.993-1.935zM6.565 4h2.214l-.76 3.804.02.004c-.015.064-.04.124-.04.192 0 1.103-.897 2-2 2a2.002 2.002 0 0 1-1.984-1.749L6.565 4zm3.434 12h-4v-3h4v3z\"}}]})(props);\n};\nexport function BiSolidSun (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6.995 12c0 2.761 2.246 5.007 5.007 5.007s5.007-2.246 5.007-5.007-2.246-5.007-5.007-5.007S6.995 9.239 6.995 12zM11 19h2v3h-2zm0-17h2v3h-2zm-9 9h3v2H2zm17 0h3v2h-3zM5.637 19.778l-1.414-1.414 2.121-2.121 1.414 1.414zM16.242 6.344l2.122-2.122 1.414 1.414-2.122 2.122zM6.344 7.759 4.223 5.637l1.415-1.414 2.12 2.122zm13.434 10.605-1.414 1.414-2.122-2.122 1.414-1.414z\"}}]})(props);\n};\nexport function BiSolidSushi (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"ellipse\",\"attr\":{\"cx\":\"12.07\",\"cy\":\"7\",\"rx\":\"3\",\"ry\":\"1.71\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12.07 22c4.48 0 8-2.2 8-5V7c0-2.8-3.52-5-8-5s-8 2.2-8 5v10c0 2.8 3.51 5 8 5zm0-18c3.53 0 6 1.58 6 3a2 2 0 0 1-.29.87c-.68 1-2.53 2-5 2.12h-1.39C8.88 9.83 7 8.89 6.35 7.84a2.16 2.16 0 0 1-.28-.76V7c0-1.42 2.46-3 6-3z\"}}]})(props);\n};\nexport function BiSolidTShirt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.316 4.055C19.556 3.478 15 1.985 15 2a3 3 0 1 1-6 0c0-.015-4.556 1.478-6.317 2.055A.992.992 0 0 0 2 5.003v3.716a1 1 0 0 0 1.242.97L6 9v12a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V9l2.758.689A1 1 0 0 0 22 8.719V5.003a.992.992 0 0 0-.684-.948z\"}}]})(props);\n};\nexport function BiSolidTachometer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 4C6.486 4 2 8.486 2 14a9.89 9.89 0 0 0 1.051 4.445c.17.34.516.555.895.555h16.107c.379 0 .726-.215.896-.555A9.89 9.89 0 0 0 22 14c0-5.514-4.486-10-10-10zm5.022 5.022L13.06 15.06a1.53 1.53 0 0 1-2.121.44 1.53 1.53 0 0 1 0-2.561l6.038-3.962a.033.033 0 0 1 .045.01.034.034 0 0 1 0 .035z\"}}]})(props);\n};\nexport function BiSolidTagAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.868 11.504-4-7A1 1 0 0 0 17 4H3a1 1 0 0 0-.868 1.496L5.849 12l-3.717 6.504A1 1 0 0 0 3 20h14a1 1 0 0 0 .868-.504l4-7a.998.998 0 0 0 0-.992z\"}}]})(props);\n};\nexport function BiSolidTagX (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.842 6.218a1.977 1.977 0 0 0-.424-.628A1.99 1.99 0 0 0 20 5H8c-.297 0-.578.132-.769.359l-5 6c-.309.371-.309.91 0 1.281l5 6c.191.228.472.36.769.36h12a1.977 1.977 0 0 0 1.41-.582A1.99 1.99 0 0 0 22 17V7c0-.266-.052-.525-.158-.782zm-4.135 8.075-1.414 1.414L14 13.414l-2.293 2.293-1.414-1.414L12.586 12l-2.293-2.293 1.414-1.414L14 10.586l2.293-2.293 1.414 1.414L15.414 12l2.293 2.293z\"}}]})(props);\n};\nexport function BiSolidTag (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.842 6.218a1.977 1.977 0 0 0-.424-.628A1.99 1.99 0 0 0 20 5H8c-.297 0-.578.132-.769.359l-5 6c-.309.371-.309.91 0 1.281l5 6c.191.228.472.36.769.36h12a1.977 1.977 0 0 0 1.41-.582A1.99 1.99 0 0 0 22 17V7c0-.266-.052-.525-.158-.782z\"}}]})(props);\n};\nexport function BiSolidTaxi (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m20.772 10.155-1.368-4.104A2.995 2.995 0 0 0 16.559 4H14V2h-4v2H7.441a2.995 2.995 0 0 0-2.845 2.051l-1.368 4.104A2 2 0 0 0 2 12v5c0 .738.404 1.376 1 1.723V21a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-2h12v2a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-2.277A1.99 1.99 0 0 0 22 17v-5a2 2 0 0 0-1.228-1.845zM7.441 6h9.117c.431 0 .813.274.949.684L18.613 10H5.387l1.105-3.316A1 1 0 0 1 7.441 6zM5.5 16a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 5.5 16zm13 0a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 18.5 16z\"}}]})(props);\n};\nexport function BiSolidTennisBall (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4.929 19.071a9.953 9.953 0 0 0 6.692 2.906c-.463-2.773.365-5.721 2.5-7.856 2.136-2.135 5.083-2.963 7.856-2.5-.092-2.433-1.053-4.839-2.906-6.692s-4.26-2.814-6.692-2.906c.463 2.773-.365 5.721-2.5 7.856-2.136 2.135-5.083 2.963-7.856 2.5a9.944 9.944 0 0 0 2.906 6.692z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15.535 15.535a6.996 6.996 0 0 0-1.911 6.318 9.929 9.929 0 0 0 8.229-8.229 6.999 6.999 0 0 0-6.318 1.911zm-7.07-7.07a6.996 6.996 0 0 0 1.911-6.318 9.929 9.929 0 0 0-8.23 8.229 7 7 0 0 0 6.319-1.911z\"}}]})(props);\n};\nexport function BiSolidTerminal (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2zM6.414 15.707 5 14.293 7.293 12 5 9.707l1.414-1.414L10.121 12l-3.707 3.707zM19 16h-7v-2h7v2z\"}}]})(props);\n};\nexport function BiSolidThermometer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 16a3.001 3.001 0 0 0 6 0c0-.353-.072-.686-.184-1H9.184A2.962 2.962 0 0 0 9 16z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M18 6V4h-3.185A2.995 2.995 0 0 0 12 2c-1.654 0-3 1.346-3 3v5.8A6.027 6.027 0 0 0 6 16c0 3.309 2.691 6 6 6s6-2.691 6-6a6.027 6.027 0 0 0-3-5.2V10h3V8h-3V6h3zm-4.405 6.324A4.033 4.033 0 0 1 16 16c0 2.206-1.794 4-4 4s-4-1.794-4-4c0-1.585.944-3.027 2.405-3.676l.595-.263V5a1 1 0 0 1 2 0v7.061l.595.263z\"}}]})(props);\n};\nexport function BiSolidTimeFive (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm3.293 14.707L11 12.414V6h2v5.586l3.707 3.707-1.414 1.414z\"}}]})(props);\n};\nexport function BiSolidTime (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.25 2c-5.514 0-10 4.486-10 10s4.486 10 10 10 10-4.486 10-10-4.486-10-10-10zM18 13h-6.75V6h2v5H18v2z\"}}]})(props);\n};\nexport function BiSolidTimer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 3h4v2h-4zM3 8h4v2H3zm0 8h4v2H3zm-1-4h3.99v2H2zm19.707-5.293-1.414-1.414L18.586 7A6.937 6.937 0 0 0 15 6c-3.859 0-7 3.141-7 7s3.141 7 7 7 7-3.141 7-7a6.968 6.968 0 0 0-1.855-4.73l1.562-1.563zM16 14h-2V8.958h2V14z\"}}]})(props);\n};\nexport function BiSolidTired (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm-6.447 9.105 2.459-1.229-1.567-1.044 1.109-1.664 3 2a1 1 0 0 1-.108 1.727l-4 2-.893-1.79zM8 17s1-3 4-3 4 3 4 3H8zm9.553-4.105-4-2a1 1 0 0 1-.108-1.727l3-2 1.109 1.664-1.566 1.044 2.459 1.229-.894 1.79z\"}}]})(props);\n};\nexport function BiSolidToTop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 15h4v6h6v-6h4l-7-8zM4 3h16v2H4z\"}}]})(props);\n};\nexport function BiSolidToggleLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 6H8c-3.296 0-5.982 2.682-6 5.986v.042A6.01 6.01 0 0 0 8 18h8a6.01 6.01 0 0 0 6-5.994v-.018C21.985 8.685 19.297 6 16 6zm-8 9c-1.627 0-3-1.373-3-3s1.373-3 3-3 3 1.373 3 3-1.373 3-3 3z\"}}]})(props);\n};\nexport function BiSolidToggleRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 6H8c-3.296 0-5.982 2.682-6 5.986v.042A6.01 6.01 0 0 0 8 18h8c3.309 0 6-2.691 6-6s-2.691-6-6-6zm0 9c-1.627 0-3-1.373-3-3s1.373-3 3-3 3 1.373 3 3-1.373 3-3 3z\"}}]})(props);\n};\nexport function BiSolidTone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm-1 9H4.069a7.965 7.965 0 0 1 .52-2H11v2zm0 4H4.589a7.965 7.965 0 0 1-.52-2H11v2zm0-10.931V7H5.765A7.996 7.996 0 0 1 11 4.069zM5.765 17H11v2.931A7.996 7.996 0 0 1 5.765 17z\"}}]})(props);\n};\nexport function BiSolidTorch (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8 11.648V20a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2v-8.352c1.067-.552 3-1.928 3-4.648V5H5v2c0 2.72 1.933 4.096 3 4.648zM11 11h2v3h-2v-3zM5 2h14v2H5z\"}}]})(props);\n};\nexport function BiSolidTrafficBarrier (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 6h-2V3h-2v3H7V3H5v3H3a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h2v6h2v-6h10v6h2v-6h2a1 1 0 0 0 1-1V7a1 1 0 0 0-1-1zM4.42 13l2.857-5H9.58l-2.857 5H4.42zm7.857-5h2.303l-2.857 5H9.42l2.857-5zm5 0h2.303l-2.857 5H14.42l2.857-5z\"}}]})(props);\n};\nexport function BiSolidTrafficCone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.649 16H5.352l-1.06 3H2v2h20v-2h-2.292zM6.057 14h11.886l-1.412-4H7.469zM13 2h-2a1 1 0 0 0-.943.667L8.175 8h7.65l-1.882-5.333A1 1 0 0 0 13 2z\"}}]})(props);\n};\nexport function BiSolidTraffic (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m2.958 16 .043 1.042c.005.12.142 2.255 2.999 3.338v1.12a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 .5-.5v-1.12c2.857-1.083 2.994-3.218 2.999-3.338L21.043 16H18v-1.62c2.857-1.083 2.994-3.218 2.999-3.338L21.043 10H18V8.38c2.857-1.083 2.994-3.218 2.999-3.338L21.043 4H18V2.5a.5.5 0 0 0-.5-.5h-11a.5.5 0 0 0-.5.5V4H2.958l.043 1.042c.005.12.142 2.255 2.999 3.338V10H2.958l.043 1.042c.005.12.142 2.255 2.999 3.338V16H2.958zM12 4a2 2 0 1 1-.001 4.001A2 2 0 0 1 12 4zm0 6a2 2 0 1 1-.001 4.001A2 2 0 0 1 12 10zm0 6a2 2 0 1 1-.001 4.001A2 2 0 0 1 12 16z\"}}]})(props);\n};\nexport function BiSolidTrain (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.375 2H7.621c-.224 0-1.399.065-2.503 1.351C4.031 4.616 4 5.862 4 6v11a2 2 0 0 0 2 2h1l-2 3h2.353l.667-1h8l.677 1H19l-2-3h1a2 2 0 0 0 2-2V6c.001-.188-.032-1.434-1.129-2.665C17.715 2.037 16.509 2 16.375 2zM10 4h4v2h-4V4zM7.5 17a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 7.5 17zm9 0a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 16.5 17zm1.5-5H6V8h12v4z\"}}]})(props);\n};\nexport function BiSolidTrashAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 7H5v13a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7H6zm10.618-3L15 2H9L7.382 4H3v2h18V4z\"}}]})(props);\n};\nexport function BiSolidTrash (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 7H5v13a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7H6zm4 12H8v-9h2v9zm6 0h-2v-9h2v9zm.618-15L15 2H9L7.382 4H3v2h18V4z\"}}]})(props);\n};\nexport function BiSolidTreeAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m18 10-6-8-6 8h3l-5 8h7v4h2v-4h7l-5-8h3z\"}}]})(props);\n};\nexport function BiSolidTree (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m20 18-4-5h3l-4-5h2l-5-6-5 6h2l-4 5h3l-4 5h7v4h2v-4z\"}}]})(props);\n};\nexport function BiSolidTrophy (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 4h-3V3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1v1H3a1 1 0 0 0-1 1v3c0 4.31 1.8 6.91 4.82 7A6 6 0 0 0 11 17.91V20H9v2h6v-2h-2v-2.09A6 6 0 0 0 17.18 15c3-.1 4.82-2.7 4.82-7V5a1 1 0 0 0-1-1zM4 8V6h2v6.83C4.22 12.08 4 9.3 4 8zm14 4.83V6h2v2c0 1.3-.22 4.08-2 4.83z\"}}]})(props);\n};\nexport function BiSolidTruck (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.15 8a2 2 0 0 0-1.72-1H15V5a1 1 0 0 0-1-1H4a2 2 0 0 0-2 2v10a2 2 0 0 0 1 1.73 3.49 3.49 0 0 0 7 .27h3.1a3.48 3.48 0 0 0 6.9 0 2 2 0 0 0 2-2v-3a1.07 1.07 0 0 0-.14-.52zM15 9h2.43l1.8 3H15zM6.5 19A1.5 1.5 0 1 1 8 17.5 1.5 1.5 0 0 1 6.5 19zm10 0a1.5 1.5 0 1 1 1.5-1.5 1.5 1.5 0 0 1-1.5 1.5z\"}}]})(props);\n};\nexport function BiSolidTv (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 6h-5.586l2.293-2.293-1.414-1.414L12 5.586 8.707 2.293 7.293 3.707 9.586 6H4c-1.103 0-2 .897-2 2v11c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V8c0-1.103-.897-2-2-2z\"}}]})(props);\n};\nexport function BiSolidUniversalAccess (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2zm0 3.33A1.67 1.67 0 1 1 10.33 7 1.67 1.67 0 0 1 12 5.33zm3.33 12.5-1.66.84-1.39-3.89h-.56l-1.39 3.89-1.66-.84 1.66-4.72v-1.66L7 10.33l.56-1.66 3.33 1.11h2.22l3.33-1.11.56 1.66-3.33 1.12v1.66z\"}}]})(props);\n};\nexport function BiSolidUpArrowAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 18v-6h5l-6-7-6 7h5v6z\"}}]})(props);\n};\nexport function BiSolidUpArrowCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 22c5.514 0 10-4.486 10-10S17.514 2 12 2 2 6.486 2 12s4.486 10 10 10zm0-15 5 5h-4v5h-2v-5H7l5-5z\"}}]})(props);\n};\nexport function BiSolidUpArrowSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 21h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2zm7-14 5 5h-4v5h-2v-5H7l5-5z\"}}]})(props);\n};\nexport function BiSolidUpArrow (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 19h18a1.002 1.002 0 0 0 .823-1.569l-9-13c-.373-.539-1.271-.539-1.645 0l-9 13A.999.999 0 0 0 3 19z\"}}]})(props);\n};\nexport function BiSolidUpsideDown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zM8.507 15a1.494 1.494 0 1 1 .001-2.987A1.494 1.494 0 0 1 8.507 15zm4.301-6.919a4.108 4.108 0 0 0-1.616 0 4.12 4.12 0 0 0-.751.233c-.234.1-.463.224-.678.368a4.077 4.077 0 0 0-1.08 1.082L7.024 8.646a6.026 6.026 0 0 1 2.639-2.175 6.097 6.097 0 0 1 1.128-.35 6.061 6.061 0 0 1 2.415 0 5.919 5.919 0 0 1 2.148.903 6.078 6.078 0 0 1 1.621 1.622l-1.658 1.117a3.994 3.994 0 0 0-.488-.59 3.988 3.988 0 0 0-2.021-1.092zM15.5 15a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 15.5 15z\"}}]})(props);\n};\nexport function BiSolidUpvote (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 14h4v7a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-7h4a1.001 1.001 0 0 0 .781-1.625l-8-10c-.381-.475-1.181-.475-1.562 0l-8 10A1.001 1.001 0 0 0 4 14z\"}}]})(props);\n};\nexport function BiSolidUserAccount (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm-6 2.5a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5zM19 15H9v-.25C9 12.901 11.254 11 14 11s5 1.901 5 3.75V15z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M4 8H2v12c0 1.103.897 2 2 2h12v-2H4V8z\"}}]})(props);\n};\nexport function BiSolidUserBadge (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.988 22a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h11.988zM9 5h6v2H9V5zm5.25 6.25A2.26 2.26 0 0 1 12 13.501c-1.235 0-2.25-1.015-2.25-2.251S10.765 9 12 9a2.259 2.259 0 0 1 2.25 2.25zM7.5 18.188c0-1.664 2.028-3.375 4.5-3.375s4.5 1.711 4.5 3.375v.563h-9v-.563z\"}}]})(props);\n};\nexport function BiSolidUserCheck (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8 12.052c1.995 0 3.5-1.505 3.5-3.5s-1.505-3.5-3.5-3.5-3.5 1.505-3.5 3.5 1.505 3.5 3.5 3.5zM9 13H7c-2.757 0-5 2.243-5 5v1h12v-1c0-2.757-2.243-5-5-5zm11.294-4.708-4.3 4.292-1.292-1.292-1.414 1.414 2.706 2.704 5.712-5.702z\"}}]})(props);\n};\nexport function BiSolidUserCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.579 2 2 6.579 2 12s4.579 10 10 10 10-4.579 10-10S17.421 2 12 2zm0 5c1.727 0 3 1.272 3 3s-1.273 3-3 3c-1.726 0-3-1.272-3-3s1.274-3 3-3zm-5.106 9.772c.897-1.32 2.393-2.2 4.106-2.2h2c1.714 0 3.209.88 4.106 2.2C15.828 18.14 14.015 19 12 19s-3.828-.86-5.106-2.228z\"}}]})(props);\n};\nexport function BiSolidUserDetail (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 11h7v2h-7zm1 4h6v2h-6zm-2-8h8v2h-8zM4 19h10v-1c0-2.757-2.243-5-5-5H7c-2.757 0-5 2.243-5 5v1h2zm4-7c1.995 0 3.5-1.505 3.5-3.5S9.995 5 8 5 4.5 6.505 4.5 8.5 6.005 12 8 12z\"}}]})(props);\n};\nexport function BiSolidUserMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 11h8v2h-8zM4.5 8.552c0 1.995 1.505 3.5 3.5 3.5s3.5-1.505 3.5-3.5-1.505-3.5-3.5-3.5-3.5 1.505-3.5 3.5zM4 19h10v-1c0-2.757-2.243-5-5-5H7c-2.757 0-5 2.243-5 5v1h2z\"}}]})(props);\n};\nexport function BiSolidUserPin (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 2H5a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2h4l3 3 3-3h4a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm-7 3c1.727 0 3 1.272 3 3s-1.273 3-3 3c-1.726 0-3-1.272-3-3s1.274-3 3-3zM7.177 16c.558-1.723 2.496-3 4.823-3s4.266 1.277 4.823 3H7.177z\"}}]})(props);\n};\nexport function BiSolidUserPlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4.5 8.552c0 1.995 1.505 3.5 3.5 3.5s3.5-1.505 3.5-3.5-1.505-3.5-3.5-3.5-3.5 1.505-3.5 3.5zM19 8h-2v3h-3v2h3v3h2v-3h3v-2h-3zM4 19h10v-1c0-2.757-2.243-5-5-5H7c-2.757 0-5 2.243-5 5v1h2z\"}}]})(props);\n};\nexport function BiSolidUserRectangle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 22h13a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h1zm6-17.001c1.647 0 3 1.351 3 3C15 9.647 13.647 11 12 11S9 9.647 9 7.999c0-1.649 1.353-3 3-3zM6 17.25c0-2.219 2.705-4.5 6-4.5s6 2.281 6 4.5V18H6v-.75z\"}}]})(props);\n};\nexport function BiSolidUserVoice (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8 12.052c1.995 0 3.5-1.505 3.5-3.5s-1.505-3.5-3.5-3.5-3.5 1.505-3.5 3.5 1.505 3.5 3.5 3.5zM9 13H7c-2.757 0-5 2.243-5 5v1h12v-1c0-2.757-2.243-5-5-5zm9.364-10.364L16.95 4.05C18.271 5.373 19 7.131 19 9s-.729 3.627-2.05 4.95l1.414 1.414C20.064 13.663 21 11.403 21 9s-.936-4.663-2.636-6.364z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15.535 5.464 14.121 6.88C14.688 7.445 15 8.198 15 9s-.312 1.555-.879 2.12l1.414 1.416C16.479 11.592 17 10.337 17 9s-.521-2.592-1.465-3.536z\"}}]})(props);\n};\nexport function BiSolidUserX (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8 12.052c1.995 0 3.5-1.505 3.5-3.5s-1.505-3.5-3.5-3.5-3.5 1.505-3.5 3.5 1.505 3.5 3.5 3.5zM9 13H7c-2.757 0-5 2.243-5 5v1h12v-1c0-2.757-2.243-5-5-5zm11.293-4.707L18 10.586l-2.293-2.293-1.414 1.414 2.292 2.292-2.293 2.293 1.414 1.414 2.293-2.293 2.294 2.294 1.414-1.414L19.414 12l2.293-2.293z\"}}]})(props);\n};\nexport function BiSolidUser (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7.5 6.5C7.5 8.981 9.519 11 12 11s4.5-2.019 4.5-4.5S14.481 2 12 2 7.5 4.019 7.5 6.5zM20 21h1v-1c0-3.859-3.141-7-7-7h-4c-3.86 0-7 3.141-7 7v1h17z\"}}]})(props);\n};\nexport function BiSolidVector (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.277 8c.347.596.985 1 1.723 1a2 2 0 0 0 0-4c-.738 0-1.376.404-1.723 1H16V4a1 1 0 0 0-1-1H9a1 1 0 0 0-1 1v2H5.723C5.376 5.404 4.738 5 4 5a2 2 0 0 0 0 4c.738 0 1.376-.404 1.723-1H8v.368C5.134 9.839 4.319 12.534 4.092 14H3a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1h-.877c.197-.959.718-2.406 2.085-3.418A.984.984 0 0 0 9 11h6a.98.98 0 0 0 .792-.419c1.373 1.013 1.895 2.458 2.089 3.419H17a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1h-1.092c-.227-1.466-1.042-4.161-3.908-5.632V8h2.277zM14 9h-4V5h4v4z\"}}]})(props);\n};\nexport function BiSolidVial (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 22a4.965 4.965 0 0 0 3.535-1.465l9.193-9.193.707.708 1.414-1.414-8.485-8.486-1.414 1.414.708.707-9.193 9.193C2.521 14.408 2 15.664 2 17s.521 2.592 1.465 3.535A4.965 4.965 0 0 0 7 22zM18.314 9.928 15.242 13H6.758l7.314-7.314 4.242 4.242z\"}}]})(props);\n};\nexport function BiSolidVideoOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 19h10.879L2.145 6.265A1.977 1.977 0 0 0 2 7v10c0 1.103.897 2 2 2zM18 7c0-1.103-.897-2-2-2H6.414L3.707 2.293 2.293 3.707l18 18 1.414-1.414L18 16.586v-2.919L22 17V7l-4 3.333V7z\"}}]})(props);\n};\nexport function BiSolidVideoPlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-3.333L22 17V7l-4 3.333V7zm-4 6h-3v3H9v-3H6v-2h3V8h2v3h3v2z\"}}]})(props);\n};\nexport function BiSolidVideoRecording (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 9c0-1.103-.897-2-2-2h-1.434l-2.418-4.029A2.008 2.008 0 0 0 10.434 2H5v2h5.434l1.8 3H4c-1.103 0-2 .897-2 2v9c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2v-3l4 2v-7l-4 2V9zm-7 8H5v-2h6v2z\"}}]})(props);\n};\nexport function BiSolidVideo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 7c0-1.103-.897-2-2-2H4c-1.103 0-2 .897-2 2v10c0 1.103.897 2 2 2h12c1.103 0 2-.897 2-2v-3.333L22 17V7l-4 3.333V7z\"}}]})(props);\n};\nexport function BiSolidVideos (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 8H2v12a2 2 0 0 0 2 2h12v-2H4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm-9 12V6l7 4z\"}}]})(props);\n};\nexport function BiSolidVirusBlock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.952 17.538c-.749-.749-.908-1.869-.5-2.846l.021-.049c.399-.974 1.309-1.643 2.362-1.643h.08c.638 0 1.085-.447 1.085-1s-.447-1-1-1h-.17c-1.053 0-1.958-.669-2.357-1.644l-.021-.049c-.408-.977-.249-2.097.5-2.846l.119-.119a.999.999 0 1 0-1.414-1.414l-.119.119c-.749.749-1.869.908-2.846.5l-.049-.021C13.669 5.128 13 4.218 13 3.165v-.081C13 2.447 12.553 2 12 2s-1 .447-1 1v.036c0 1.096-.66 2.084-1.673 2.503l-.006.003a2.71 2.71 0 0 1-2.953-.588l-.025-.025-2.636-2.636-1.414 1.414 18 18 1.414-1.414-2.636-2.636-.119-.119zM12 10a2 2 0 1 1 2 2c-.257 0-.501-.053-.728-.142l-1.131-1.131A1.998 1.998 0 0 1 12 10zm-4 3a1 1 0 0 1-1-1 .99.99 0 0 1 .244-.635L5.431 9.552A2.634 2.634 0 0 1 3.085 11h-.001C2.447 11 2 11.447 2 12s.447 1 1 1h.068a2.66 2.66 0 0 1 2.459 1.644l.021.049a2.69 2.69 0 0 1-.583 2.929l-.036.036a.999.999 0 1 0 1.414 1.414l.036-.036a2.689 2.689 0 0 1 2.929-.583l.143.06A2.505 2.505 0 0 1 11 20.83v.085c0 .638.447 1.085 1 1.085s1-.448 1-1v-.17c0-.976.568-1.853 1.443-2.266l-5.809-5.809A.98.98 0 0 1 8 13z\"}}]})(props);\n};\nexport function BiSolidVirus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 11h-.17c-1.053 0-1.958-.669-2.357-1.644l-.021-.049c-.408-.977-.249-2.097.5-2.846l.119-.119a.999.999 0 1 0-1.414-1.414l-.119.119c-.749.749-1.869.908-2.846.5l-.049-.021C13.669 5.128 13 4.218 13 3.165v-.081C13 2.447 12.553 2 12 2s-1 .447-1 1v.036c0 1.096-.66 2.084-1.673 2.503l-.006.003a2.71 2.71 0 0 1-2.953-.588l-.025-.025a.999.999 0 1 0-1.414 1.414l.036.036a2.69 2.69 0 0 1 .583 2.929l-.027.064A2.638 2.638 0 0 1 3.085 11h-.001C2.447 11 2 11.447 2 12s.447 1 1 1h.068a2.66 2.66 0 0 1 2.459 1.644l.021.049a2.69 2.69 0 0 1-.583 2.929l-.036.036a.999.999 0 1 0 1.414 1.414l.036-.036a2.689 2.689 0 0 1 2.929-.583l.143.06A2.505 2.505 0 0 1 11 20.83v.085c0 .638.447 1.085 1 1.085s1-.448 1-1v-.17c0-1.015.611-1.93 1.55-2.318l.252-.104a2.508 2.508 0 0 1 2.736.545l.119.119a.999.999 0 1 0 1.414-1.414l-.119-.119c-.749-.749-.908-1.869-.5-2.846l.021-.049c.399-.975 1.309-1.644 2.362-1.644h.08c.638 0 1.085-.447 1.085-1s-.447-1-1-1zM8 13a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm5 3.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm1-4.5a2 2 0 1 1 .001-4.001A2 2 0 0 1 14 12z\"}}]})(props);\n};\nexport function BiSolidVolumeFull (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 21c3.527-1.547 5.999-4.909 5.999-9S19.527 4.547 16 3v2c2.387 1.386 3.999 4.047 3.999 7S18.387 17.614 16 19v2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M16 7v10c1.225-1.1 2-3.229 2-5s-.775-3.9-2-5zM4 17h2.697L14 21.868V2.132L6.697 7H4c-1.103 0-2 .897-2 2v6c0 1.103.897 2 2 2z\"}}]})(props);\n};\nexport function BiSolidVolumeLow (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 17h2.697L14 21.868V2.132L6.697 7H4c-1.103 0-2 .897-2 2v6c0 1.103.897 2 2 2zM16 7v10c1.225-1.1 2-3.229 2-5s-.775-3.9-2-5z\"}}]})(props);\n};\nexport function BiSolidVolumeMute (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m7.727 6.313-4.02-4.02-1.414 1.414 18 18 1.414-1.414-2.02-2.02A9.578 9.578 0 0 0 21.999 12c0-4.091-2.472-7.453-5.999-9v2c2.387 1.386 3.999 4.047 3.999 7a8.13 8.13 0 0 1-1.671 4.914l-1.286-1.286C17.644 14.536 18 13.19 18 12c0-1.771-.775-3.9-2-5v7.586l-2-2V2.132L7.727 6.313zM4 17h2.697L14 21.868v-3.747L3.102 7.223A1.995 1.995 0 0 0 2 9v6c0 1.103.897 2 2 2z\"}}]})(props);\n};\nexport function BiSolidVolume (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 17h2.697L14 21.868V2.132L6.697 7H4c-1.103 0-2 .897-2 2v6c0 1.103.897 2 2 2z\"}}]})(props);\n};\nexport function BiSolidWalletAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 9h8v6h-8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H5C3.346 3 2 4.346 2 6v12c0 1.654 1.346 3 3 3h15c1.103 0 2-.897 2-2v-2h-8c-1.103 0-2-.897-2-2V9c0-1.103.897-2 2-2h8V5c0-1.103-.897-2-2-2z\"}}]})(props);\n};\nexport function BiSolidWallet (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 7V5c0-1.103-.897-2-2-2H5C3.346 3 2 4.346 2 6v12c0 2.201 1.794 3 3 3h15c1.103 0 2-.897 2-2V9c0-1.103-.897-2-2-2zm-2 9h-2v-4h2v4zM5 7a1.001 1.001 0 0 1 0-2h13v2H5z\"}}]})(props);\n};\nexport function BiSolidWasher (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 22h16a1 1 0 0 0 1-1V5c0-1.654-1.346-3-3-3H6C4.346 2 3 3.346 3 5v16a1 1 0 0 0 1 1zM18 3.924a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm-3 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zM12 7c3.309 0 6 2.691 6 6s-2.691 6-6 6-6-2.691-6-6 2.691-6 6-6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12.766 16.929c1.399-.261 2.571-1.315 3.023-2.665a3.853 3.853 0 0 0-.153-2.893.482.482 0 0 0-.544-.266c-.604.149-1.019.448-1.5.801-.786.577-1.765 1.294-3.592 1.294-.813 0-1.45-.146-1.984-.354l-.013.009a4.006 4.006 0 0 0 4.763 4.074z\"}}]})(props);\n};\nexport function BiSolidWatchAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 8c0-.909-.613-1.67-1.445-1.912l-1.31-3.443A1 1 0 0 0 14.311 2H8.689a1 1 0 0 0-.934.645l-1.31 3.443A1.996 1.996 0 0 0 5 8v8c0 .909.613 1.67 1.445 1.912l1.31 3.443a1 1 0 0 0 .934.645h5.621c.415 0 .787-.257.935-.645l1.31-3.443A1.996 1.996 0 0 0 18 16v-2h1v-4h-1V8zm-1.998 8H7V8h9l.002 8z\"}}]})(props);\n};\nexport function BiSolidWatch (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 8h-2v5h5v-2h-3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19.999 12c0-2.953-1.612-5.53-3.999-6.916V3a1 1 0 0 0-1-1H9a1 1 0 0 0-1 1v2.083C5.613 6.469 4.001 9.047 4.001 12a8.003 8.003 0 0 0 4.136 7H8v2.041a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V19h-.139a8 8 0 0 0 4.138-7zm-8 5.999A6.005 6.005 0 0 1 6.001 12a6.005 6.005 0 0 1 5.998-5.999c3.31 0 6 2.691 6 5.999a6.005 6.005 0 0 1-6 5.999z\"}}]})(props);\n};\nexport function BiSolidWebcam (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2c-4.963 0-9 4.037-9 9 0 3.328 1.82 6.232 4.513 7.79l-2.067 1.378A1 1 0 0 0 6 22h12a1 1 0 0 0 .555-1.832l-2.067-1.378C19.18 17.232 21 14.328 21 11c0-4.963-4.037-9-9-9zm0 16c-3.859 0-7-3.141-7-7s3.141-7 7-7 7 3.141 7 7-3.141 7-7 7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 6c-2.757 0-5 2.243-5 5s2.243 5 5 5 5-2.243 5-5-2.243-5-5-5zm-1.5 5a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 10.5 11z\"}}]})(props);\n};\nexport function BiSolidWidget (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 11h6a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1zm0 10h6a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1zm10 0h6a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1h-6a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1zm7.293-14.707-3.586-3.586a.999.999 0 0 0-1.414 0l-3.586 3.586a.999.999 0 0 0 0 1.414l3.586 3.586a.999.999 0 0 0 1.414 0l3.586-3.586a.999.999 0 0 0 0-1.414z\"}}]})(props);\n};\nexport function BiSolidWindowAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V5c0-1.103-.897-2-2-2zm-3 3h2v2h-2V6zm-3 0h2v2h-2V6zM4 19v-9h16.001l.001 9H4z\"}}]})(props);\n};\nexport function BiSolidWine (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 17.916V20H9v2h6v-2h-2v-2.084c3.162-.402 5.849-2.66 6.713-5.793.264-.952.312-2.03.143-3.206l-.866-6.059A1 1 0 0 0 18 2H6a1 1 0 0 0-.99.858l-.865 6.058c-.169 1.177-.121 2.255.143 3.206.863 3.134 3.55 5.392 6.712 5.794zM17.133 4l.57 4H6.296l.571-4h10.266z\"}}]})(props);\n};\nexport function BiSolidWinkSmile (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zM8.5 9a1.5 1.5 0 1 1-.001 3.001A1.5 1.5 0 0 1 8.5 9zm7.741 7.244a5.982 5.982 0 0 1-3.034 1.634 6.042 6.042 0 0 1-3.541-.349 5.997 5.997 0 0 1-2.642-2.176l1.658-1.117c.143.211.307.41.488.59a3.988 3.988 0 0 0 1.273.86c.243.102.495.181.749.232a4.108 4.108 0 0 0 1.616 0c.253-.052.505-.131.75-.233.234-.1.464-.224.679-.368.208-.142.407-.306.591-.489.183-.182.347-.381.489-.592l1.658 1.117c-.214.32-.461.62-.734.891zM13 12s.5-2 2.5-2c1.999 0 2.5 2 2.5 2h-5z\"}}]})(props);\n};\nexport function BiSolidWinkTongue (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 19v-4h-4v4c0 1.103.897 2 2 2s2-.897 2-2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12c0 4.434 2.903 8.198 6.906 9.505A3.969 3.969 0 0 1 8 19v-2.499C6.412 15.027 6 13 6 13h12s-.411 2.027-2 3.501V19c0 .953-.349 1.816-.906 2.504C19.097 20.197 22 16.434 22 12c0-5.514-4.486-10-10-10zm-3.5 9a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 8.5 11zm4.5 0s.5-2 2.5-2c1.999 0 2.5 2 2.5 2h-5z\"}}]})(props);\n};\nexport function BiSolidWrench (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.512 6.112-3.89 3.889-3.535-3.536 3.889-3.889a6.501 6.501 0 0 0-8.484 8.486l-6.276 6.275a.999.999 0 0 0 0 1.414l2.122 2.122a.999.999 0 0 0 1.414 0l6.275-6.276a6.501 6.501 0 0 0 7.071-1.414 6.504 6.504 0 0 0 1.414-7.071z\"}}]})(props);\n};\nexport function BiSolidXCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm4.207 12.793-1.414 1.414L12 13.414l-2.793 2.793-1.414-1.414L10.586 12 7.793 9.207l1.414-1.414L12 10.586l2.793-2.793 1.414 1.414L13.414 12l2.793 2.793z\"}}]})(props);\n};\nexport function BiSolidXSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5zm-4.793 9.793-1.414 1.414L12 13.414l-2.793 2.793-1.414-1.414L10.586 12 7.793 9.207l1.414-1.414L12 10.586l2.793-2.793 1.414 1.414L13.414 12l2.793 2.793z\"}}]})(props);\n};\nexport function BiSolidYinYang (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.062 4.938A9.942 9.942 0 0 0 12.016 2h-.026a9.94 9.94 0 0 0-7.071 2.938c-3.898 3.898-3.898 10.243 0 14.143 1.895 1.895 4.405 2.938 7.071 2.938s5.177-1.043 7.071-2.938c3.9-3.899 3.9-10.243.001-14.143zM13.5 15a1.5 1.5 0 1 1-.001 3.001A1.5 1.5 0 0 1 13.5 15zM6.333 6.353A7.953 7.953 0 0 1 11.99 4l.026.001c1.652.008 3.242 1.066 3.55 2.371.366 1.552-1.098 3.278-4.018 4.737-5.113 2.555-5.312 5.333-4.975 6.762l.008.021c-.082-.075-.169-.146-.249-.226-3.118-3.119-3.118-8.194.001-11.313z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"10.5\",\"cy\":\"7.5\",\"r\":\"1.5\"}}]})(props);\n};\nexport function BiSolidZap (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.98 11.802a.995.995 0 0 0-.738-.771l-6.86-1.716 2.537-5.921a.998.998 0 0 0-.317-1.192.996.996 0 0 0-1.234.024l-11 9a1 1 0 0 0 .39 1.744l6.719 1.681-3.345 5.854A1.001 1.001 0 0 0 8 22a.995.995 0 0 0 .6-.2l12-9a1 1 0 0 0 .38-.998z\"}}]})(props);\n};\nexport function BiSolidZoomIn (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 2c-4.411 0-8 3.589-8 8s3.589 8 8 8a7.952 7.952 0 0 0 4.897-1.688l4.396 4.396 1.414-1.414-4.396-4.396A7.952 7.952 0 0 0 18 10c0-4.411-3.589-8-8-8zm4 9h-3v3H9v-3H6V9h3V6h2v3h3v2z\"}}]})(props);\n};\nexport function BiSolidZoomOut (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 18a7.952 7.952 0 0 0 4.897-1.688l4.396 4.396 1.414-1.414-4.396-4.396A7.952 7.952 0 0 0 18 10c0-4.411-3.589-8-8-8s-8 3.589-8 8 3.589 8 8 8zM6 9h8v2H6V9z\"}}]})(props);\n};\nexport function BiLogo500Px (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7.379 14.791c.004.01.098.269.151.396a5.859 5.859 0 0 0 1.258 1.865 5.86 5.86 0 0 0 6.437 1.259 5.876 5.876 0 0 0 3.124-3.125 5.802 5.802 0 0 0 .461-2.285c0-.793-.153-1.563-.461-2.287a5.862 5.862 0 0 0-1.257-1.864 5.86 5.86 0 0 0-4.152-1.72 6 6 0 0 0-2.318.461c-.57.241-1.536.862-2.102 1.446l-.002.002V4.107h8.117c.295-.003.295-.417.295-.55 0-.137 0-.549-.296-.553H7.857a.387.387 0 0 0-.388.384v6.801c0 .221.273.379.527.434.496.104.61-.053.732-.222l.015-.021c.187-.275.767-.858.771-.863a4.776 4.776 0 0 1 3.406-1.403 4.76 4.76 0 0 1 3.394 1.403 4.75 4.75 0 0 1 1.408 3.385c0 1.28-.498 2.483-1.4 3.385a4.858 4.858 0 0 1-3.416 1.403 4.656 4.656 0 0 1-2.42-.668l.004-4.137c0-.552.238-1.151.64-1.604a2.351 2.351 0 0 1 1.778-.803c.667 0 1.291.254 1.754.714.46.455.714 1.064.714 1.711a2.443 2.443 0 0 1-2.474 2.466c-.268 0-.753-.117-.773-.123-.281-.084-.4.305-.439.435-.151.492.077.59.122.604.448.138.741.164 1.124.164a3.555 3.555 0 0 0 3.551-3.553c0-1.943-1.592-3.526-3.548-3.526a3.59 3.59 0 0 0-2.536 1.033c-.644.632-1.013 1.478-1.013 2.317v.021c-.004.105-.004 2.583-.005 3.398l-.005-.006c-.368-.407-.731-1.029-.973-1.668-.097-.25-.309-.206-.601-.116-.127.04-.514.159-.429.438l.002.004zm4.172-.972c.002.118.111.223.175.286l.021.019c.111.11.217.164.315.164.081 0 .13-.037.148-.054.05-.046.604-.608.658-.662l.618.618c.058.064.12.097.192.098.1 0 .207-.058.32-.174.267-.272.134-.42.069-.49l-.628-.63.655-.658c.144-.155.017-.32-.111-.446-.183-.184-.359-.23-.474-.127l-.65.652-.657-.658a.183.183 0 0 0-.128-.051c-.087 0-.191.06-.308.177-.202.201-.246.341-.141.453l.657.656-.653.655a.247.247 0 0 0-.078.172m1.434-8.891c-1.053 0-2.171.211-2.992.566a.23.23 0 0 0-.151.205c-.011.093.013.216.076.377.051.131.187.478.449.376a7.566 7.566 0 0 1 2.618-.498c.96 0 1.892.188 2.768.558.696.296 1.354.721 2.068 1.341a.243.243 0 0 0 .165.068c.138 0 .271-.137.386-.266.191-.214.321-.392.135-.569a7.674 7.674 0 0 0-2.354-1.52 8.088 8.088 0 0 0-3.168-.638m5.668 12.986c-.127-.126-.235-.199-.33-.228a.24.24 0 0 0-.247.059l-.063.062a7.07 7.07 0 0 1-5.018 2.081 7.09 7.09 0 0 1-5.02-2.081 6.794 6.794 0 0 1-1.521-2.255 7.618 7.618 0 0 1-.462-1.596c-.004-.018-.005-.031-.009-.041-.044-.232-.257-.249-.564-.202-.127.019-.517.078-.479.358l.002.006a8.104 8.104 0 0 0 2.288 4.478 8.089 8.089 0 0 0 2.59 1.747 8.093 8.093 0 0 0 3.175.642 8.062 8.062 0 0 0 3.172-.643 8.129 8.129 0 0 0 2.658-1.813c.083-.09.154-.248-.172-.574\"}}]})(props);\n};\nexport function BiLogo99Designs (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.93 10.61A2.7 2.7 0 0 0 19 10a2.74 2.74 0 0 0-1.1-.19 3.28 3.28 0 0 0-2.16.76v-.05a3.67 3.67 0 0 0-5.09-3.39 3.61 3.61 0 0 0-1.78 1.56 3.67 3.67 0 0 0-3.12-1.86 3.74 3.74 0 0 0-1.82.44 3.66 3.66 0 0 0-1.37 1.28A3.77 3.77 0 0 0 2 10.34a3.67 3.67 0 0 0 3.42 3.83l-1.6 2.76h2.39l2.65-4.59a3.63 3.63 0 0 0 2.93 1.84l-1.59 2.76h2.4l1.86-3.23a3.53 3.53 0 0 0 2.07 3.19 3.52 3.52 0 0 0 2.61.05 2.58 2.58 0 0 0 .9-.74v.73h2V7.06h-2.11zm-12.78.72a1.69 1.69 0 0 1-1.46.83 1.72 1.72 0 0 1-.86-.16 1.75 1.75 0 0 1-.62-.62 1.78 1.78 0 0 1-.21-.87 1.69 1.69 0 0 1 1.67-1.69 1.63 1.63 0 0 1 .84.23 1.58 1.58 0 0 1 .62.61 1.62 1.62 0 0 1 .23.83 1.72 1.72 0 0 1-.21.84zm6.38 0a1.58 1.58 0 0 1-.62.61 1.53 1.53 0 0 1-.84.22 1.78 1.78 0 0 1-.84-.22 1.65 1.65 0 0 1-.61-.62 1.67 1.67 0 0 1 0-1.69 1.73 1.73 0 0 1 .62-.61 1.63 1.63 0 0 1 .84-.23 1.69 1.69 0 0 1 .84.23 1.69 1.69 0 0 1 .63 2.28zm6.3 3a1.72 1.72 0 0 1-2 .85 1.72 1.72 0 0 1-1-.7 1.75 1.75 0 0 1-.29-1.15 1.77 1.77 0 0 1 .51-1.07 1.75 1.75 0 0 1 2.35-.11 1.73 1.73 0 0 1 .43 2.18z\"}}]})(props);\n};\nexport function BiLogoAdobe (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 19.966V4.034h-6.654zM3 4.034v15.932L9.658 4.034zM9.092 16.76h3.104l1.268 3.205h2.778L12.003 9.904z\"}}]})(props);\n};\nexport function BiLogoAirbnb (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.001 16.709c-1.013-1.271-1.609-2.386-1.808-3.34-.197-.769-.12-1.385.218-1.848.357-.532.89-.791 1.589-.791s1.231.259 1.589.796c.335.458.419 1.075.215 1.848-.218.974-.813 2.087-1.808 3.341l.005-.006zm7.196.855c-.14.934-.775 1.708-1.65 2.085-1.687.734-3.359-.437-4.789-2.026 2.365-2.961 2.803-5.268 1.787-6.758-.596-.855-1.449-1.271-2.544-1.271-2.206 0-3.419 1.867-2.942 4.034.276 1.173 1.013 2.506 2.186 3.996-.735.813-1.432 1.391-2.047 1.748-.478.258-.934.418-1.37.456-2.008.299-3.582-1.647-2.867-3.656.1-.259.297-.734.634-1.471l.019-.039c1.097-2.382 2.43-5.088 3.961-8.09l.039-.1.435-.836c.338-.616.477-.892 1.014-1.231.258-.157.576-.235.934-.235.715 0 1.271.418 1.511.753.118.18.259.419.436.716l.419.815.06.119c1.53 3.001 2.863 5.702 3.955 8.089l.02.019.401.915.237.573c.183.459.221.915.16 1.393l.001.002zm.913-1.791c-.139-.438-.378-.953-.675-1.569v-.022a262.99 262.99 0 0 0-3.976-8.128l-.084-.121C14.486 4.109 13.849 3.014 12 3.014c-1.827 0-2.604 1.27-3.397 2.922l-.061.119c-1.251 2.426-2.564 5.128-3.975 8.13v.039l-.418.914c-.158.378-.237.575-.259.636C2.878 18.556 4.964 21 7.489 21c.021 0 .099 0 .198-.021h.278c1.313-.159 2.664-.993 4.035-2.485 1.371 1.49 2.725 2.326 4.033 2.485h.279c.1.021.18.021.2.021 2.525.002 4.61-2.444 3.598-5.227z\"}}]})(props);\n};\nexport function BiLogoAlgolia (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.177 9.059a3.582 3.582 0 0 0-3.576 3.584 3.584 3.584 0 0 0 3.576 3.585 3.578 3.578 0 0 0 3.575-3.585 3.582 3.582 0 0 0-3.575-3.584zm2.518 2.268-2.366 1.229c-.07.039-.153-.017-.153-.093V9.791h.001c0-.06.054-.104.109-.104a2.943 2.943 0 0 1 2.452 1.492c.028.055.011.121-.043.148z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M18.578 3H5.361A2.363 2.363 0 0 0 3 5.366v13.277a2.368 2.368 0 0 0 2.361 2.371h13.217a2.367 2.367 0 0 0 2.361-2.372V5.372A2.368 2.368 0 0 0 18.578 3zm-8.112 3.404a.78.78 0 0 1 .779-.781h1.815c.43 0 .778.35.778.781v.618a.106.106 0 0 1-.131.104 5.677 5.677 0 0 0-3.106.017c-.07.016-.136-.033-.136-.104v-.635zM7.08 8.993a.78.78 0 0 1 .001-1.103l.371-.371.002-.002a.776.776 0 0 1 1.099.002l.31.311c.043.05.038.127-.017.159a5.82 5.82 0 0 0-1.296 1.3c-.044.049-.114.06-.163.011l-.306-.306-.001-.001zm5.097 8.737a5.078 5.078 0 0 1-5.074-5.087c0-2.813 2.272-5.092 5.074-5.092a5.074 5.074 0 0 1 5.074 5.086c0 2.815-2.272 5.093-5.074 5.093z\"}}]})(props);\n};\nexport function BiLogoAmazon (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2.027 17.023c.061-.098.156-.105.289-.02 3.035 1.76 6.338 2.645 9.906 2.645 2.381 0 4.73-.447 7.051-1.332l.262-.117c.115-.051.195-.084.244-.109.189-.074.326-.037.438.109.102.143.076.279-.1.4-.213.158-.5.342-.84.545-1.037.619-2.203 1.098-3.492 1.441a14.815 14.815 0 0 1-3.77.508c-1.889 0-3.68-.33-5.369-.99a14.875 14.875 0 0 1-4.531-2.797c-.084-.061-.125-.123-.125-.184 0-.039.016-.074.041-.109l-.004.01zm5.479-5.189c0-.84.207-1.555.619-2.152.414-.592.977-1.041 1.703-1.346.666-.281 1.465-.48 2.43-.602.326-.037.861-.086 1.6-.145v-.31c0-.773-.084-1.299-.248-1.564-.252-.359-.65-.541-1.203-.541h-.15c-.4.039-.746.162-1.039.383a1.51 1.51 0 0 0-.564.916c-.049.25-.172.387-.361.426l-2.105-.264c-.209-.051-.311-.15-.311-.326 0-.037.006-.074.018-.123.209-1.078.715-1.881 1.52-2.404.814-.514 1.752-.814 2.828-.875h.451c1.379 0 2.469.361 3.244 1.076.115.123.227.25.34.398.1.139.188.264.234.377.063.111.127.275.164.475.051.213.088.352.113.426.023.086.051.25.064.514.006.262.016.41.016.461v4.406c0 .314.049.602.137.865.088.26.174.451.262.563l.428.561a.598.598 0 0 1 .111.303c0 .102-.049.188-.148.26-1.002.877-1.553 1.352-1.639 1.428-.137.113-.313.125-.525.039a5.397 5.397 0 0 1-.439-.414l-.258-.291c-.051-.063-.141-.174-.266-.352l-.25-.363c-.676.74-1.338 1.205-2.002 1.393-.414.125-.914.188-1.529.188-.926 0-1.701-.285-2.303-.863-.598-.576-.9-1.389-.9-2.453l-.043-.063.001-.007zm3.131-.367c0 .475.117.852.355 1.139.236.285.563.428.965.428.035 0 .088-.008.16-.018.078-.012.111-.02.141-.02.512-.133.902-.461 1.189-.982a2.62 2.62 0 0 0 .299-.758c.076-.268.1-.494.111-.666.016-.166.016-.453.016-.84v-.451c-.703 0-1.24.049-1.604.148-1.063.303-1.604.977-1.604 2.029l-.029-.016v.007zm7.646 5.865c.025-.051.063-.092.109-.143.301-.201.596-.342.877-.416a6.597 6.597 0 0 1 1.344-.201c.117-.01.234 0 .346.025.539.051.873.141.977.273.053.078.074.191.074.328v.125c0 .426-.117.926-.348 1.502s-.553 1.041-.963 1.402c-.061.049-.115.074-.164.074-.025 0-.051 0-.074-.01-.076-.037-.09-.1-.055-.201.451-1.051.672-1.787.672-2.201 0-.127-.025-.227-.074-.289-.119-.137-.457-.217-1.02-.217a9.42 9.42 0 0 0-.727.039c-.303.041-.582.078-.834.115-.074 0-.123-.014-.15-.037-.025-.025-.031-.039-.018-.064 0-.014.006-.025.018-.053v-.049l.01-.002z\"}}]})(props);\n};\nexport function BiLogoAndroid (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.344 8.71c-.707 0-1.279.572-1.279 1.278v4.53a1.278 1.278 0 1 0 2.558 0v-4.53c0-.706-.572-1.278-1.279-1.278zm-12.688 0c-.707 0-1.279.572-1.279 1.278v4.53a1.278 1.278 0 1 0 2.558 0v-4.53A1.277 1.277 0 0 0 5.656 8.71zm8.889-3.809.768-1.388a.343.343 0 0 0-.133-.47.344.344 0 0 0-.471.135l-.789 1.42c-.588-.235-1.236-.368-1.92-.368s-1.332.132-1.92.367l-.789-1.418a.344.344 0 0 0-.471-.135.345.345 0 0 0-.133.47l.768 1.388C8.072 5.69 7.148 7.099 7.148 8.71c0 .011 0 .021.002.034-.002.006-.002.013-.002.019v.001h9.703V8.71c.001-1.611-.923-3.019-2.306-3.809zM9.76 6.869a.346.346 0 1 1 .005-.693.346.346 0 0 1-.005.693zm4.48 0a.347.347 0 0 1 0-.692.346.346 0 0 1 0 .692zM7.148 16.12c0 .646.525 1.171 1.174 1.171h.586v2.401a1.279 1.279 0 0 0 2.558 0v-2.401h1.066v2.401c0 .707.572 1.278 1.277 1.278.709 0 1.281-.571 1.281-1.278v-2.401h.586c.648 0 1.174-.524 1.174-1.171V9.028H7.148v7.092z\"}}]})(props);\n};\nexport function BiLogoAngular (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10.483 12.482h3.034L12 8.831z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 3.074 3.689 6.038l1.268 10.987 7.043 3.9 7.043-3.9 1.268-10.987L12 3.074zm5.187 13.621H15.25l-1.045-2.606h-4.41L8.75 16.695H6.813L12 5.047l5.187 11.648z\"}}]})(props);\n};\nexport function BiLogoApple (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.665 16.811a10.316 10.316 0 0 1-1.021 1.837c-.537.767-.978 1.297-1.316 1.592-.525.482-1.089.73-1.692.744-.432 0-.954-.123-1.562-.373-.61-.249-1.17-.371-1.683-.371-.537 0-1.113.122-1.73.371-.616.25-1.114.381-1.495.393-.577.025-1.154-.229-1.729-.764-.367-.32-.826-.87-1.377-1.648-.59-.829-1.075-1.794-1.455-2.891-.407-1.187-.611-2.335-.611-3.447 0-1.273.275-2.372.826-3.292a4.857 4.857 0 0 1 1.73-1.751 4.65 4.65 0 0 1 2.34-.662c.46 0 1.063.142 1.81.422s1.227.422 1.436.422c.158 0 .689-.167 1.593-.498.853-.307 1.573-.434 2.163-.384 1.6.129 2.801.759 3.6 1.895-1.43.867-2.137 2.08-2.123 3.637.012 1.213.453 2.222 1.317 3.023a4.33 4.33 0 0 0 1.315.863c-.106.307-.218.6-.336.882zM15.998 2.38c0 .95-.348 1.838-1.039 2.659-.836.976-1.846 1.541-2.941 1.452a2.955 2.955 0 0 1-.021-.36c0-.913.396-1.889 1.103-2.688.352-.404.8-.741 1.343-1.009.542-.264 1.054-.41 1.536-.435.013.128.019.255.019.381z\"}}]})(props);\n};\nexport function BiLogoAudible (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2.005 10.238v1.69l10.002 6.254 9.988-6.254v-1.69l-9.988 6.229z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m15.938 12.469 1.465-.938c-1.161-1.701-3.153-2.876-5.396-2.876-2.257 0-4.236 1.135-5.371 2.89.093-.093.146-.146.238-.211 2.811-2.336 6.86-1.808 9.064 1.135z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M9.051 13.063a2.99 2.99 0 0 1 1.78-.58c1.083 0 2.047.554 2.692 1.49l1.399-.871c-.607-.963-1.688-1.557-2.916-1.557-1.226 0-2.309.62-2.955 1.518zM5.25 9.012c4.117-3.246 9.937-2.362 13.037 1.953l.026.026 1.517-.938a9.337 9.337 0 0 0-7.823-4.235 9.35 9.35 0 0 0-7.825 4.235c.304-.342.686-.751 1.068-1.041z\"}}]})(props);\n};\nexport function BiLogoAws (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.75 11.35a4.32 4.32 0 0 1-.79-.08 3.9 3.9 0 0 1-.73-.23l-.17-.04h-.12q-.15 0-.15.21v.33a.43.43 0 0 0 0 .19.5.5 0 0 0 .21.19 3 3 0 0 0 .76.26 4.38 4.38 0 0 0 1 .12 3 3 0 0 0 1-.14 1.94 1.94 0 0 0 .73-.37 1.81 1.81 0 0 0 .49-.58 1.79 1.79 0 0 0 .17-.78 1.54 1.54 0 0 0-.3-.93 2.15 2.15 0 0 0-1-.64l-.95-.3a2 2 0 0 1-.73-.36.65.65 0 0 1-.2-.47.66.66 0 0 1 .31-.6 1.82 1.82 0 0 1 .89-.18 2.89 2.89 0 0 1 1.27.26.79.79 0 0 0 .26.08c.1 0 .15-.08.15-.22v-.36a.38.38 0 0 0-.06-.22.56.56 0 0 0-.2-.16 1.55 1.55 0 0 0-.28-.12 3.44 3.44 0 0 0-.38-.11l-.44-.1A3.4 3.4 0 0 0 19 6a2.82 2.82 0 0 0-.83.11 2.19 2.19 0 0 0-.7.35A1.61 1.61 0 0 0 17 7a1.5 1.5 0 0 0-.18.74 1.6 1.6 0 0 0 .33 1 2.08 2.08 0 0 0 1.06.68l1 .3a1.58 1.58 0 0 1 .67.34.66.66 0 0 1 .18.47.72.72 0 0 1-.35.63 1.83 1.83 0 0 1-.96.19zM12.94 6.5a.48.48 0 0 0-.13-.26.37.37 0 0 0-.26-.07H12a.43.43 0 0 0-.26.07.42.42 0 0 0-.13.26l-1 4.4-1.14-4.4a.48.48 0 0 0-.14-.26s-.13-.07-.26-.07h-.65c-.11 0-.16.06-.16.17a1.22 1.22 0 0 0 .06.27l1.56 5.14A.61.61 0 0 0 10 12a.45.45 0 0 0 .26.06h.57a.49.49 0 0 0 .27-.06.57.57 0 0 0 .12-.27l1-4.28 1 4.29a.42.42 0 0 0 .12.26.4.4 0 0 0 .27.07h.57a.41.41 0 0 0 .25-.07.44.44 0 0 0 .14-.26l1.61-5.14a.73.73 0 0 0 0-.16.52.52 0 0 0 0-.11.15.15 0 0 0-.17-.17h-.62a.45.45 0 0 0-.26.07.68.68 0 0 0-.13.26L14 11zM5.77 8.63a5.92 5.92 0 0 0-.71-.05 2.42 2.42 0 0 0-1.63.52 1.72 1.72 0 0 0-.6 1.37 1.7 1.7 0 0 0 .49 1.28 1.82 1.82 0 0 0 1.33.48 2.48 2.48 0 0 0 2-.92 3.5 3.5 0 0 0 .2.39 2.34 2.34 0 0 0 .24.31.26.26 0 0 0 .37 0l.42-.28a.28.28 0 0 0 .13-.2.27.27 0 0 0 0-.16 3.63 3.63 0 0 1-.21-.47 2 2 0 0 1-.07-.6V8.19a2.2 2.2 0 0 0-.55-1.64A2.42 2.42 0 0 0 5.33 6a3.9 3.9 0 0 0-1 .13 3.9 3.9 0 0 0-.84.3.47.47 0 0 0-.18.14.37.37 0 0 0 0 .23v.33c0 .14 0 .2.14.2a.26.26 0 0 0 .11 0l.23-.08A4.32 4.32 0 0 1 4.42 7a3 3 0 0 1 .72-.09 1.5 1.5 0 0 1 1.08.31 1.46 1.46 0 0 1 .31 1.06v.49zm.78.9v.27a2.36 2.36 0 0 1-.07.58 1.06 1.06 0 0 1-.23.43 1.38 1.38 0 0 1-.63.42 2.12 2.12 0 0 1-.68.12.94.94 0 0 1-.7-.24.92.92 0 0 1-.24-.71.92.92 0 0 1 .33-.76 1.52 1.52 0 0 1 1-.27h.62a5.67 5.67 0 0 1 .6.16zM19.76 15a19.68 19.68 0 0 1-7.55 1.54 20 20 0 0 1-9.9-2.62c-.24-.15-.43.1-.22.29A14.68 14.68 0 0 0 12 18a14.4 14.4 0 0 0 8.1-2.47c.34-.31.03-.72-.34-.53z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M18.38 14.06c-.19.14-.16.33.05.3.71-.09 2.28-.27 2.56.09s-.31 1.83-.58 2.49c-.08.2.1.28.28.13a3.9 3.9 0 0 0 1.23-3.34 3.94 3.94 0 0 0-3.54.33z\"}}]})(props);\n};\nexport function BiLogoBaidu (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6.217 12.486c1.964-.422 1.693-2.772 1.637-3.287-.096-.788-1.028-2.172-2.291-2.061-1.588.141-1.821 2.44-1.821 2.44-.216 1.06.515 3.33 2.475 2.908m3.646-3.944c1.084 0 1.959-1.251 1.959-2.792 0-1.537-.871-2.785-1.955-2.785-1.086 0-1.966 1.242-1.966 2.785s.88 2.792 1.965 2.792m4.671.186c1.454.195 2.38-1.355 2.568-2.53.188-1.166-.754-2.528-1.776-2.763-1.031-.237-2.303 1.411-2.431 2.484-.136 1.318.188 2.627 1.634 2.813m5.751 1.973c0-.562-.46-2.253-2.19-2.253-1.729 0-1.965 1.596-1.965 2.726 0 1.077.089 2.573 2.247 2.528 2.148-.052 1.913-2.438 1.913-3.002M18.1 15.626s-2.247-1.739-3.557-3.613c-1.776-2.768-4.304-1.64-5.144-.239-.845 1.418-2.153 2.306-2.339 2.544-.188.232-2.709 1.596-2.147 4.079.563 2.483 2.528 2.439 2.528 2.439s1.446.142 3.133-.234c1.686-.375 3.13.091 3.13.091s3.92 1.317 5.005-1.212c1.072-2.537-.61-3.847-.61-3.847\"}}]})(props);\n};\nexport function BiLogoBehance (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7.803 5.731c.589 0 1.119.051 1.605.155.483.103.895.273 1.243.508.343.235.611.547.804.939.187.387.28.871.28 1.443 0 .62-.14 1.138-.421 1.551-.283.414-.7.753-1.256 1.015.757.219 1.318.602 1.69 1.146.374.549.557 1.206.557 1.976 0 .625-.119 1.162-.358 1.613a3.11 3.11 0 0 1-.974 1.114 4.315 4.315 0 0 1-1.399.64 6.287 6.287 0 0 1-1.609.206H2V5.731h5.803zm-.351 4.972c.48 0 .878-.114 1.192-.345.312-.228.463-.604.463-1.119 0-.286-.051-.522-.151-.707a1.114 1.114 0 0 0-.417-.428 1.683 1.683 0 0 0-.597-.215 3.609 3.609 0 0 0-.697-.061H4.71v2.875h2.742zm.151 5.239c.267 0 .521-.023.76-.077.241-.052.455-.136.637-.261.182-.12.332-.283.44-.491.109-.206.162-.475.162-.798 0-.634-.179-1.085-.533-1.358-.355-.27-.831-.404-1.414-.404H4.71v3.39h2.893zm8.565-.041c.367.358.896.538 1.584.538.493 0 .919-.125 1.278-.373.354-.249.57-.515.653-.79h2.155c-.346 1.072-.871 1.838-1.589 2.299-.709.463-1.572.693-2.58.693-.702 0-1.334-.113-1.9-.337a4.033 4.033 0 0 1-1.439-.958 4.37 4.37 0 0 1-.905-1.485 5.433 5.433 0 0 1-.32-1.899c0-.666.111-1.289.329-1.864a4.376 4.376 0 0 1 .934-1.493c.405-.42.885-.751 1.444-.994a4.634 4.634 0 0 1 1.858-.362c.754 0 1.413.146 1.979.44a3.967 3.967 0 0 1 1.39 1.182c.363.493.622 1.058.783 1.691.161.632.217 1.292.171 1.983h-6.431c.001.704.238 1.371.606 1.729zm2.812-4.681c-.291-.322-.783-.496-1.385-.496-.391 0-.714.065-.974.199a1.97 1.97 0 0 0-.62.491 1.772 1.772 0 0 0-.328.628 2.82 2.82 0 0 0-.111.587h3.982c-.058-.624-.272-1.085-.564-1.409zm-3.918-4.663h4.989v1.215h-4.989z\"}}]})(props);\n};\nexport function BiLogoBing (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m5.71 3 3.593 1.264v12.645l5.061-2.919-2.48-1.165-1.566-3.897 7.974 2.802v4.073l-8.984 5.183-3.595-2L5.71 3z\"}}]})(props);\n};\nexport function BiLogoBitcoin (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m11.953 8.819-.547 2.19c.619.154 2.529.784 2.838-.456.322-1.291-1.673-1.579-2.291-1.734zm-.822 3.296-.603 2.415c.743.185 3.037.921 3.376-.441.355-1.422-2.029-1.789-2.773-1.974z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14.421 2.299C9.064.964 3.641 4.224 2.306 9.581.97 14.936 4.23 20.361 9.583 21.697c5.357 1.335 10.783-1.924 12.117-7.281 1.336-5.356-1.924-10.781-7.279-12.117zm1.991 8.275c-.145.974-.686 1.445-1.402 1.611.985.512 1.485 1.298 1.009 2.661-.592 1.691-1.998 1.834-3.87 1.48l-.454 1.82-1.096-.273.447-1.794a44.624 44.624 0 0 1-.875-.228l-.449 1.804-1.095-.275.454-1.823c-.257-.066-.517-.136-.782-.202L6.87 15l.546-1.256s.808.215.797.199c.311.077.448-.125.502-.261l.719-2.875.115.029a.864.864 0 0 0-.114-.037l.512-2.053c.013-.234-.066-.528-.511-.639.018-.011-.797-.198-.797-.198l.291-1.172 1.514.378-.001.005c.227.057.461.111.7.165l.449-1.802 1.097.273-.44 1.766c.294.067.591.135.879.207l.438-1.755 1.097.273-.449 1.802c1.384.479 2.396 1.195 2.198 2.525z\"}}]})(props);\n};\nexport function BiLogoBlender (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.427 13.011c.037-.667.363-1.254.856-1.671a2.855 2.855 0 0 1 1.844-.66c.71 0 1.36.25 1.845.66.492.417.819 1.005.856 1.671.038.686-.237 1.323-.721 1.795a2.829 2.829 0 0 1-1.979.782 2.83 2.83 0 0 1-1.981-.782c-.483-.472-.759-1.109-.72-1.795z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M8.124 14.361c.005.26.089.767.213 1.164a6.156 6.156 0 0 0 1.328 2.299 6.833 6.833 0 0 0 2.323 1.667 7.465 7.465 0 0 0 3.05.635 7.495 7.495 0 0 0 3.051-.645 6.913 6.913 0 0 0 2.321-1.675 6.196 6.196 0 0 0 1.326-2.303 5.76 5.76 0 0 0 .25-1.285 5.942 5.942 0 0 0-.888-3.594 6.496 6.496 0 0 0-1.545-1.703l.001-.001-6.249-4.799-.016-.014c-.411-.314-1.101-.313-1.551.002-.457.319-.508.846-.104 1.18l-.001.001 2.606 2.121-7.943.009h-.012c-.656 0-1.287.432-1.412.976-.128.555.318 1.015 1.001 1.017l-.001.003 4.027-.008-7.188 5.516-.027.021c-.677.519-.896 1.382-.47 1.929.434.556 1.354.556 2.04.002l3.922-3.209c.001 0-.056.433-.052.694zm10.078 1.45c-.808.824-1.938 1.291-3.163 1.293-1.226.002-2.356-.461-3.165-1.283a3.739 3.739 0 0 1-.864-1.352 3.503 3.503 0 0 1-.199-1.511c.044-.505.193-.987.434-1.422.236-.429.562-.815.962-1.144a4.477 4.477 0 0 1 2.832-.988 4.478 4.478 0 0 1 2.832.98c.399.326.725.711.961 1.139.24.436.39.916.434 1.421a3.52 3.52 0 0 1-.198 1.511 3.804 3.804 0 0 1-.866 1.356z\"}}]})(props);\n};\nexport function BiLogoBlogger (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.954 10.667c-.072-.322-.272-.621-.502-.745-.07-.039-.522-.088-1.004-.109-.809-.036-.898-.052-1.152-.201-.405-.237-.516-.493-.518-1.187-.002-1.327-.554-2.559-1.646-3.67-.776-.793-1.645-1.329-2.634-1.629-.236-.072-.768-.097-2.545-.118-2.787-.033-3.405.024-4.356.402-1.748.697-3.008 2.166-3.465 4.05-.087.353-.103.92-.124 4.177-.025 4.08.004 4.68.258 5.488.212.668.425 1.077.861 1.657.835 1.108 2.083 1.907 3.334 2.133.595.107 7.931.135 8.683.032 1.306-.178 2.331-.702 3.293-1.684.694-.71 1.129-1.479 1.414-2.499.117-.424.127-.63.149-3.117.017-1.878.002-2.758-.046-2.98zM8.007 8.108c.313-.316.399-.329 2.364-.329 1.764 0 1.822.004 2.081.134.375.189.538.456.538.88 0 .384-.153.653-.493.869-.184.115-.293.123-2.021.133-1.067.007-1.916-.013-2.043-.048-.669-.184-.918-1.143-.426-1.639zm7.706 8.037-.597.098-3.114.035c-2.736.033-3.511-.018-3.652-.08-.288-.124-.554-.472-.602-.78-.042-.292.104-.696.33-.9.285-.257.409-.266 3.911-.27 3.602-.002 3.583-.003 3.925.315.482.45.381 1.251-.201 1.582z\"}}]})(props);\n};\nexport function BiLogoBootstrap (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.002 2.997H5.999A3.011 3.011 0 0 0 2.997 6v12.002a3.012 3.012 0 0 0 3.002 3.001h12.003a3.012 3.012 0 0 0 3.001-3.001V6a3.012 3.012 0 0 0-3.001-3.003zm-1.64 12.647c-.152.36-.389.68-.693.927a3.594 3.594 0 0 1-1.206.614c-.49.151-1.074.229-1.75.229H7.888V6.909h5.103c.943 0 1.7.213 2.267.646.569.436.854 1.082.854 1.958 0 .528-.13.983-.389 1.357-.259.373-.63.664-1.111.868v.034c.642.135 1.137.438 1.464.912.327.473.493 1.069.493 1.789 0 .405-.078.788-.225 1.147l.02.021v.003zm-2.084-2.589c-.309-.282-.739-.419-1.297-.419H9.737v3.276h3.253c.554 0 .991-.144 1.298-.435.308-.289.464-.701.464-1.229-.005-.518-.156-.919-.464-1.193h-.014.004zm-.451-2.119c.299-.251.444-.613.444-1.084 0-.526-.131-.902-.397-1.116-.264-.214-.646-.326-1.146-.326H9.727v2.898h3.001c.436.001.81-.127 1.099-.372z\"}}]})(props);\n};\nexport function BiLogoCPlusPlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.66 7a1.51 1.51 0 0 0-.55-.57l-7.34-4.24a1.67 1.67 0 0 0-1.54 0L3.89 6.43a1.68 1.68 0 0 0-.77 1.33v8.48a1.57 1.57 0 0 0 .22.76 1.51 1.51 0 0 0 .55.57l7.34 4.24a1.67 1.67 0 0 0 1.54 0l7.34-4.24a1.51 1.51 0 0 0 .55-.57 1.57 1.57 0 0 0 .22-.76V7.76a1.57 1.57 0 0 0-.22-.76zM12 17.92A5.92 5.92 0 1 1 17.13 9L16 9.71l-.36.2-1 .61A3 3 0 0 0 9 12a2.88 2.88 0 0 0 .4 1.48 3 3 0 0 0 5.13 0l2.6 1.52A5.94 5.94 0 0 1 12 17.92zm5.92-5.59h-.66V13h-.65v-.66H16v-.66h.66V11h.65v.66h.66zm2.47 0h-.66V13h-.66v-.66h-.65v-.66h.65V11h.66v.66h.66z\"}}]})(props);\n};\nexport function BiLogoChrome (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10.742 2.04c-1.404.183-3.06.808-4.281 1.626-1.01.664-2.397 2.02-2.309 2.251.193.501 3.28 5.658 3.33 5.562.038-.067.095-.279.123-.49.25-1.385 1.425-2.704 2.897-3.253.568-.221.683-.221 5.495-.27l4.917-.047-.395-.646c-1.385-2.26-3.522-3.819-6.197-4.512-.731-.193-2.81-.318-3.58-.22z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M3.2 7.217c-.453.799-.983 2.415-1.107 3.358-.588 4.273 1.568 8.4 5.379 10.315.894.452 2.174.885 2.732.933l.356.029 1.674-2.838c.915-1.559 1.655-2.849 1.636-2.868-.02-.019-.231.039-.481.125-1.569.53-3.387.086-4.57-1.116-.424-.424-1.002-1.357-2.84-4.542C4.71 8.41 3.642 6.601 3.603 6.601c-.028 0-.211.279-.403.616z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15.15 8.804c1.222 1.242 1.655 3.003 1.116 4.59-.086.26-1.212 2.271-2.501 4.485-1.29 2.203-2.349 4.031-2.349 4.06 0 .115 1.328.057 2.175-.087 4.32-.74 7.573-4.002 8.265-8.276.26-1.558.164-2.925-.307-4.503l-.25-.837h-6.707l.557.568z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M10.608 8.563C9.598 8.987 8.905 9.7 8.53 10.71c-.173.453-.202.713-.173 1.424.03.75.068.963.347 1.511.366.75.962 1.329 1.751 1.703.462.221.654.25 1.54.25.895 0 1.077-.029 1.559-.26.712-.326 1.462-1.077 1.79-1.79.23-.48.259-.663.259-1.558 0-.886-.029-1.078-.25-1.54-.375-.788-.952-1.386-1.703-1.75-.568-.28-.742-.318-1.56-.348-.788-.019-.99.01-1.48.212z\"}}]})(props);\n};\nexport function BiLogoCodepen (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.838 8.445c0-.001-.001-.001 0 0l-.003-.004-.001-.001v-.001a.809.809 0 0 0-.235-.228l-9.164-6.08a.834.834 0 0 0-.898 0L2.371 8.214A.786.786 0 0 0 2 8.897v6.16a.789.789 0 0 0 .131.448v.001l.002.002.01.015v.002h.001l.001.001.001.001c.063.088.14.16.226.215l9.165 6.082a.787.787 0 0 0 .448.139.784.784 0 0 0 .45-.139l9.165-6.082a.794.794 0 0 0 .371-.685v-6.16a.793.793 0 0 0-.133-.452zm-9.057-4.172 6.953 4.613-3.183 2.112-3.771-2.536V4.273zm-1.592 0v4.189l-3.771 2.536-3.181-2.111 6.952-4.614zm-7.595 6.098 2.395 1.59-2.395 1.611v-3.201zm7.595 9.311-6.96-4.617 3.195-2.15 3.765 2.498v4.269zm.795-5.653-3.128-2.078 3.128-2.105 3.131 2.105-3.131 2.078zm.797 5.653v-4.27l3.766-2.498 3.193 2.15-6.959 4.618zm7.597-6.11-2.396-1.611 2.396-1.59v3.201z\"}}]})(props);\n};\nexport function BiLogoCreativeCommons (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.354 6.479a10.021 10.021 0 0 0-7.421-4.429c-3.108-.294-6.031.771-8.123 2.963C3.533 6.35 2.699 7.839 2.21 9.66c-.217.805-.247 1.104-.244 2.396.002 1.293.034 1.599.255 2.432a10.232 10.232 0 0 0 7.451 7.332c.315.078.702.16.859.182.696.097 2.381.056 3.131-.075 3.088-.538 5.832-2.531 7.24-5.258 1.644-3.181 1.426-7.222-.548-10.19zm-.41 7.688c-.808 2.99-3.263 5.272-6.361 5.912-4.831.997-9.538-2.658-9.839-7.641-.194-3.217 1.755-6.446 4.745-7.863 1.133-.536 2.045-.733 3.425-.738 1.327-.004 2.064.132 3.223.596 2.324.931 4.146 3.04 4.816 5.573.281 1.06.276 3.103-.009 4.161z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M8.042 14.955c-.915-.324-1.616-1.275-1.74-2.36-.183-1.607.422-2.856 1.654-3.415.669-.303 1.882-.296 2.603.016.438.19 1.261.933 1.261 1.139 0 .033-.284.201-.631.372l-.632.312-.337-.337c-.187-.188-.475-.363-.649-.396-.433-.082-.952.111-1.187.44-.389.546-.415 1.972-.048 2.533.191.291.512.494.813.518.635.05.796-.006 1.172-.401l.379-.398.488.269c.269.148.527.305.575.347.164.148-.592.92-1.199 1.224-.517.259-.679.293-1.358.286-.425-.006-.949-.074-1.164-.149zm5.816 0c-.901-.32-1.591-1.241-1.739-2.325-.215-1.569.419-2.888 1.654-3.45.717-.324 1.934-.3 2.661.056.45.221 1.201.911 1.201 1.104 0 .034-.295.203-.654.377l-.654.317-.341-.37c-.304-.332-.385-.369-.802-.369-.576 0-.945.225-1.145.698-.18.423-.201 1.461-.043 1.934.324.961 1.505 1.188 2.175.419l.304-.346.58.294c.32.161.582.319.582.352 0 .219-.75.918-1.256 1.17-.517.259-.679.293-1.358.287-.425-.005-.949-.073-1.165-.148z\"}}]})(props);\n};\nexport function BiLogoCss3 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4.192 3.143h15.615l-1.42 16.034-6.404 1.812-6.369-1.813L4.192 3.143zM16.9 6.424l-9.8-.002.158 1.949 7.529.002-.189 2.02H9.66l.179 1.913h4.597l-.272 2.62-2.164.598-2.197-.603-.141-1.569h-1.94l.216 2.867L12 17.484l3.995-1.137.905-9.923z\"}}]})(props);\n};\nexport function BiLogoDailymotion (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13.551 11.485a2.327 2.327 0 0 0-2.328 2.332c0 1.314 1.013 2.313 2.441 2.313l-.012.002c1.192 0 2.193-.983 2.193-2.28.001-1.349-1.001-2.367-2.294-2.367z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M3 3v18h18V3H3zm15.52 15.605h-2.682v-1.058c-.825.81-1.667 1.103-2.786 1.103-1.142 0-2.124-.371-2.947-1.114-1.086-.956-1.648-2.227-1.648-3.701 0-1.351.524-2.561 1.507-3.506.878-.859 1.946-1.298 3.139-1.298 1.14 0 2.018.385 2.647 1.192V6.118l2.77-.574v-.002l.002.003h-.002v13.06z\"}}]})(props);\n};\nexport function BiLogoDeezer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.68 5.47H22V8h-4.32zm0 3.51H22v2.53h-4.32zm0 3.51H22v2.53h-4.32zM2 16h4.32v2.53H2zm5.22 0h4.32v2.53H7.22zm5.23 0h4.32v2.53h-4.32zm5.23 0H22v2.53h-4.32zm-5.23-3.51h4.32v2.53h-4.32zm-5.23 0h4.32v2.53H7.22zm0-3.51h4.32v2.53H7.22z\"}}]})(props);\n};\nexport function BiLogoDevTo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7.826 10.083a.784.784 0 0 0-.468-.175h-.701v4.198h.701a.786.786 0 0 0 .469-.175c.155-.117.233-.292.233-.525v-2.798c.001-.233-.079-.408-.234-.525zM19.236 3H4.764C3.791 3 3.002 3.787 3 4.76v14.48c.002.973.791 1.76 1.764 1.76h14.473c.973 0 1.762-.787 1.764-1.76V4.76A1.765 1.765 0 0 0 19.236 3zM9.195 13.414c0 .755-.466 1.901-1.942 1.898H5.389V8.665h1.903c1.424 0 1.902 1.144 1.903 1.899v2.85zm4.045-3.562H11.1v1.544h1.309v1.188H11.1v1.543h2.142v1.188h-2.498a.813.813 0 0 1-.833-.792V9.497a.813.813 0 0 1 .792-.832h2.539l-.002 1.187zm4.165 4.632c-.531 1.235-1.481.99-1.906 0l-1.548-5.818h1.309l1.193 4.569 1.188-4.569h1.31l-1.546 5.818z\"}}]})(props);\n};\nexport function BiLogoDeviantart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.57 3h-3.271l-.326.33-1.544 2.942-.486.327H6.432v4.495h3.03l.27.327-3.3 6.305v3.273h3.272l.327-.33 1.543-2.943.486-.326h5.511v-4.495h-3.03l-.269-.329 3.299-6.303L17.57 3z\"}}]})(props);\n};\nexport function BiLogoDigg (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.803 8.8v6.801h3.2v.799h-3.2v1.602h5.2V8.8h-5.2zm-6 0v6.801h3.199v.799h-3.199v1.602h5.199V8.8h-5.199zM5.2 5.999V8.8H2v6.801h5.201V5.999H5.2zM10.001 8.8h-2v6.801h2V8.8zM20.003 14h-1.2v-3.601h1.2V14zM5.2 14H4v-3.601h1.2V14zm8.802 0h-1.2v-3.601h1.2V14zm-4.001-8.001h-2v2h2v-2z\"}}]})(props);\n};\nexport function BiLogoDigitalocean (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.005 21.992v-3.877c4.104 0 7.288-4.068 5.714-8.388a5.81 5.81 0 0 0-3.457-3.446c-4.319-1.563-8.389 1.61-8.389 5.714H2.008c0-6.541 6.325-11.642 13.184-9.499 2.991.94 5.383 3.321 6.313 6.313 2.141 6.858-2.96 13.183-9.5 13.183z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12.017 18.139H8.152v-3.866h3.865zm-3.865 2.959H5.193v-2.959h2.959zm-2.959-2.959H2.711v-2.483h2.482v2.483z\"}}]})(props);\n};\nexport function BiLogoDiscordAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14.82 4.26a10.14 10.14 0 0 0-.53 1.1 14.66 14.66 0 0 0-4.58 0 10.14 10.14 0 0 0-.53-1.1 16 16 0 0 0-4.13 1.3 17.33 17.33 0 0 0-3 11.59 16.6 16.6 0 0 0 5.07 2.59A12.89 12.89 0 0 0 8.23 18a9.65 9.65 0 0 1-1.71-.83 3.39 3.39 0 0 0 .42-.33 11.66 11.66 0 0 0 10.12 0q.21.18.42.33a10.84 10.84 0 0 1-1.71.84 12.41 12.41 0 0 0 1.08 1.78 16.44 16.44 0 0 0 5.06-2.59 17.22 17.22 0 0 0-3-11.59 16.09 16.09 0 0 0-4.09-1.35zM8.68 14.81a1.94 1.94 0 0 1-1.8-2 1.93 1.93 0 0 1 1.8-2 1.93 1.93 0 0 1 1.8 2 1.93 1.93 0 0 1-1.8 2zm6.64 0a1.94 1.94 0 0 1-1.8-2 1.93 1.93 0 0 1 1.8-2 1.92 1.92 0 0 1 1.8 2 1.92 1.92 0 0 1-1.8 2z\"}}]})(props);\n};\nexport function BiLogoDiscord (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9.593 10.971c-.542 0-.969.475-.969 1.055 0 .578.437 1.055.969 1.055.541 0 .968-.477.968-1.055.011-.581-.427-1.055-.968-1.055zm3.468 0c-.542 0-.969.475-.969 1.055 0 .578.437 1.055.969 1.055.541 0 .968-.477.968-1.055-.001-.581-.427-1.055-.968-1.055z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M17.678 3H4.947A1.952 1.952 0 0 0 3 4.957v12.844c0 1.083.874 1.957 1.947 1.957H15.72l-.505-1.759 1.217 1.131 1.149 1.064L19.625 22V4.957A1.952 1.952 0 0 0 17.678 3zM14.01 15.407s-.342-.408-.626-.771c1.244-.352 1.719-1.13 1.719-1.13-.39.256-.76.438-1.093.562a6.679 6.679 0 0 1-3.838.398 7.944 7.944 0 0 1-1.396-.41 5.402 5.402 0 0 1-.693-.321c-.029-.021-.057-.029-.085-.048a.117.117 0 0 1-.039-.03c-.171-.094-.266-.16-.266-.16s.456.76 1.663 1.121c-.285.36-.637.789-.637.789-2.099-.067-2.896-1.444-2.896-1.444 0-3.059 1.368-5.538 1.368-5.538 1.368-1.027 2.669-.998 2.669-.998l.095.114c-1.71.495-2.499 1.245-2.499 1.245s.21-.114.561-.275c1.016-.446 1.823-.57 2.156-.599.057-.009.105-.019.162-.019a7.756 7.756 0 0 1 4.778.893s-.751-.712-2.366-1.206l.133-.152s1.302-.029 2.669.998c0 0 1.368 2.479 1.368 5.538 0-.001-.807 1.376-2.907 1.443z\"}}]})(props);\n};\nexport function BiLogoDiscourse (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.077 3C7.149 3 3 6.96 3 11.843V21l9.075-.01c4.928 0 8.925-4.11 8.925-8.993C21 7.113 17 3 12.077 3zm3.92 12.859a5.568 5.568 0 0 1-6.102 1.043l-3.595.805 1.001-3.192a5.435 5.435 0 0 1 .11-5.415 5.55 5.55 0 0 1 4.753-2.678v.001h.006a5.533 5.533 0 0 1 5.131 3.438 5.442 5.442 0 0 1-1.304 5.998z\"}}]})(props);\n};\nexport function BiLogoDjango (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7.533 12.249c-.011 1.985 1.445 3.168 3.768 2.63V9.618c-2.352-.716-3.758.733-3.768 2.631m3.839-10.238h3.199v15.143c-3.066.501-6.004.819-8.104-.355-2.705-1.513-2.923-6.319-.782-8.46 1.085-1.085 3.271-1.85 5.616-1.351V2.225c-.006-.101-.012-.202.071-.214m8.389 3.342h-3.199V2.011h3.199v3.342z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19.761 7.044c-.003 2.356-.003 4.048-.003 6.911-.136 2.813-.104 5.052-1.135 6.398-.203.266-.634.652-.995.924-.303.228-.881.691-1.208.711-.331.021-1.18-.459-1.564-.64-.505-.237-.971-.553-1.493-.71 1.218-.754 2.372-1.32 2.844-2.844.41-1.326.355-3.247.355-5.119 0-1.849.009-3.998.009-5.63l3.19-.001z\"}}]})(props);\n};\nexport function BiLogoDocker (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.17 9.82a4.76 4.76 0 0 0-.84.07 3.12 3.12 0 0 0-1.43-2.14l-.28-.16-.19.27a3.7 3.7 0 0 0-.51 1.19 2.84 2.84 0 0 0 .33 2.22 4.11 4.11 0 0 1-1.45.35H2.63a.63.63 0 0 0-.63.62 9.6 9.6 0 0 0 .58 3.39 5 5 0 0 0 2 2.6 8.86 8.86 0 0 0 4.42.95 13.27 13.27 0 0 0 2.42-.18 10.09 10.09 0 0 0 3.19-1.15A8.9 8.9 0 0 0 16.78 16a11.94 11.94 0 0 0 2.13-3.67h.19a3.08 3.08 0 0 0 2.23-.84 2.36 2.36 0 0 0 .59-.87l.08-.22-.2-.16a2.69 2.69 0 0 0-1.63-.42z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M5.61 9.35H3.85a.16.16 0 0 0-.16.15v1.58a.16.16 0 0 0 .16.15h1.76a.16.16 0 0 0 .16-.15V9.5a.16.16 0 0 0-.16-.15zm2.44 0H6.28a.16.16 0 0 0-.16.15v1.58a.16.16 0 0 0 .16.15h1.77a.15.15 0 0 0 .15-.15V9.5a.15.15 0 0 0-.15-.15zm2.47 0H8.75a.15.15 0 0 0-.15.15v1.58a.15.15 0 0 0 .15.15h1.77a.15.15 0 0 0 .15-.15V9.5a.15.15 0 0 0-.15-.15zm.67 0a.15.15 0 0 0-.19.15v1.58a.15.15 0 0 0 .15.15H13a.15.15 0 0 0 .15-.15V9.5a.15.15 0 0 0-.15-.15zM6.28 7.09H8a.16.16 0 0 1 .16.16v1.56A.16.16 0 0 1 8 9H6.28a.15.15 0 0 1-.15-.15V7.24a.15.15 0 0 1 .15-.15zm2.47 0h1.77a.15.15 0 0 1 .15.15v1.57a.16.16 0 0 1-.16.16H8.75a.15.15 0 0 1-.15-.15V7.24a.15.15 0 0 1 .15-.15zm2.44 0H13a.15.15 0 0 1 .15.15v1.57A.15.15 0 0 1 13 9h-1.81a.16.16 0 0 1-.19-.19V7.24a.15.15 0 0 1 .19-.15z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"11.04\",\"y\":\"4.82\",\"width\":\"2.07\",\"height\":\"1.88\",\"rx\":\".15\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13.65 9.35a.15.15 0 0 0-.15.15v1.58a.15.15 0 0 0 .15.15h1.77a.15.15 0 0 0 .15-.15V9.5a.15.15 0 0 0-.15-.15z\"}}]})(props);\n};\nexport function BiLogoDribbble (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.66 6.98a9.932 9.932 0 0 0-3.641-3.64C15.486 2.447 13.813 2 12 2s-3.486.447-5.02 1.34c-1.533.893-2.747 2.107-3.64 3.64S2 10.187 2 12s.446 3.487 1.34 5.02a9.924 9.924 0 0 0 3.641 3.64C8.514 21.553 10.187 22 12 22s3.486-.447 5.02-1.34a9.932 9.932 0 0 0 3.641-3.64C21.554 15.487 22 13.813 22 12s-.446-3.487-1.34-5.02zM12 3.66c2 0 3.772.64 5.32 1.919-.92 1.174-2.286 2.14-4.1 2.9-1.002-1.813-2.088-3.327-3.261-4.54A7.715 7.715 0 0 1 12 3.66zM5.51 6.8a8.116 8.116 0 0 1 2.711-2.22c1.212 1.201 2.325 2.7 3.34 4.5-2 .6-4.114.9-6.341.9-.573 0-1.006-.013-1.3-.04A8.549 8.549 0 0 1 5.51 6.8zM3.66 12c0-.054.003-.12.01-.2.007-.08.01-.146.01-.2.254.014.641.02 1.161.02 2.666 0 5.146-.367 7.439-1.1.187.373.381.793.58 1.26-1.32.293-2.674 1.006-4.061 2.14S6.4 16.247 5.76 17.5c-1.4-1.587-2.1-3.42-2.1-5.5zM12 20.34c-1.894 0-3.594-.587-5.101-1.759.601-1.187 1.524-2.322 2.771-3.401 1.246-1.08 2.483-1.753 3.71-2.02a29.441 29.441 0 0 1 1.56 6.62 8.166 8.166 0 0 1-2.94.56zm7.08-3.96a8.351 8.351 0 0 1-2.58 2.621c-.24-2.08-.7-4.107-1.379-6.081.932-.066 1.765-.1 2.5-.1.799 0 1.686.034 2.659.1a8.098 8.098 0 0 1-1.2 3.46zm-1.24-5c-1.16 0-2.233.047-3.22.14a27.053 27.053 0 0 0-.68-1.62c2.066-.906 3.532-2.006 4.399-3.3 1.2 1.414 1.854 3.027 1.96 4.84-.812-.04-1.632-.06-2.459-.06z\"}}]})(props);\n};\nexport function BiLogoDropbox (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7.004 3.5 2 6.689l5.004 3.186 5.002-3.186zm10.005 0-5.003 3.189 5.003 3.186 5.003-3.186zM2 13.062l5.004 3.187 5.002-3.187-5.002-3.187zm15.009-3.187-5.003 3.187 5.003 3.187 5.003-3.187zM7.004 17.311l5.002 3.189 5.003-3.189-5.003-3.186z\"}}]})(props);\n};\nexport function BiLogoDrupal (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.474 14.42a3.162 3.162 0 1 0 0 6.324 3.162 3.162 0 0 0 0-6.324zm3.936-.606a5.433 5.433 0 0 1 1.513 3.769 5.441 5.441 0 0 1-2.335 4.47c2.609-.803 4.771-2.767 5.737-5.142 1.338-3.288.09-5.761-1.999-8.005.066.288.103.592.103.898a4.175 4.175 0 0 1-3.019 4.01zm-3.577-4.003c0 1.34 1.087 2.419 2.42 2.419s2.423-1.087 2.423-2.419a2.418 2.418 0 0 0-2.417-2.417 2.425 2.425 0 0 0-2.426 2.417z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7.303 21.093a5.435 5.435 0 0 1-1.276-3.51 5.441 5.441 0 0 1 4.8-5.408 4.162 4.162 0 0 1 3.99-6.492c-1.361-1.176-2.724-2.369-3.799-3.672.547 5.714-5.2 3.638-7.332 8.904-1.422 3.527-.138 7.892 3.617 10.178z\"}}]})(props);\n};\nexport function BiLogoEbay (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7.021 12.111V8.004h1.001v2.525c.493-.586 1.17-.756 1.838-.756 1.118 0 2.361.754 2.361 2.383 0 .195-.014.381-.051.559.2-.797 1.063-1.09 2.418-1.123.426-.016.914-.016 1.302-.016v-.111c0-.738-.464-1.039-1.276-1.039-.602 0-1.04.25-1.09.676H12.46c.113-1.076 1.253-1.352 2.242-1.352.889 0 1.666.225 2.017.852l-.365-.702h1.177l1.716 3.443 1.716-3.445H22l-3.105 6.098h-1.124l.894-1.703-1.945-3.656c.108.213.167.465.167.777v2.055c0 .289.009.574.034.838h-.931a5.478 5.478 0 0 1-.038-.639c-.503.613-1.103.803-1.937.803-1.236 0-1.897-.652-1.897-1.416 0-.125.013-.236.031-.338-.251 1.041-1.135 1.74-2.31 1.74-.727 0-1.414-.262-1.837-.775 0 .201-.013.412-.033.611h-.986c.018-.324.034-.713.034-1.037v-.877H2.985c.054.914.683 1.451 1.547 1.451.599 0 1.131-.25 1.309-.775h1.035c-.2 1.078-1.344 1.439-2.329 1.439-1.789.018-2.582-.973-2.582-2.301 0-1.463.819-2.428 2.602-2.428 1.409 0 2.445.738 2.454 2.342v.004zm7.627.153c-.915.027-1.479.193-1.479.793 0 .389.301.809 1.09.809 1.052 0 1.615-.574 1.615-1.514v-.109c-.376 0-.826.006-1.239.02h.011l.002.001zm-5.059 1.564c.927 0 1.566-.672 1.566-1.686s-.642-1.686-1.58-1.686c-.928 0-1.578.672-1.578 1.686s.639 1.686 1.565 1.686h.027zM5.958 11.73c-.037-.939-.714-1.291-1.44-1.291-.788 0-1.414.395-1.516 1.291h2.956z\"}}]})(props);\n};\nexport function BiLogoEdge (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.349 13.684H8.874c0 .433.063.825.195 1.178a3.334 3.334 0 0 0 1.381 1.634c.309.196.646.359 1.005.484.356.13.729.226 1.107.288.821.13 1.658.123 2.477-.021a9.79 9.79 0 0 0 2.421-.783c.393-.18.79-.376 1.201-.594v3.805a13.453 13.453 0 0 1-2.711.978c-.457.112-.92.196-1.396.246-.486.054-.975.079-1.464.079a8.185 8.185 0 0 1-1.95-.232 7.679 7.679 0 0 1-1.762-.668 7.29 7.29 0 0 1-1.51-1.062 6.67 6.67 0 0 1-1.941-3.103 6.978 6.978 0 0 1-.267-1.953c0-.737.101-1.439.303-2.11a6.718 6.718 0 0 1 2.264-3.342 7.38 7.38 0 0 1 1.847-1.066 3.891 3.891 0 0 0-.869 1.329 5.682 5.682 0 0 0-.401 1.538h6.391c0-.646-.063-1.207-.196-1.689-.131-.484-.342-.885-.637-1.201A2.64 2.64 0 0 0 13.23 6.7c-.462-.16-1.021-.241-1.675-.241-.771 0-1.543.111-2.314.344a9.804 9.804 0 0 0-2.2.955c-.695.412-1.335.897-1.919 1.452a9.167 9.167 0 0 0-1.474 1.819c.084-.742.247-1.474.485-2.18a9.304 9.304 0 0 1 .912-1.938 8.622 8.622 0 0 1 1.303-1.609 7.735 7.735 0 0 1 1.655-1.235 8.45 8.45 0 0 1 1.955-.792 10.042 10.042 0 0 1 2.233-.254c.46 0 .917.041 1.375.124.457.084.903.196 1.339.342a8.012 8.012 0 0 1 2.315 1.239 7.95 7.95 0 0 1 1.711 1.833c.463.692.813 1.459 1.055 2.292s.365 1.701.365 2.602v2.23h-.002z\"}}]})(props);\n};\nexport function BiLogoEtsy (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.139 14.058c-.438 0-.693-.294-.693-1.058v-2.696l1.456.112.074-.694-1.496.074v-1.53h-.438c-.216 1.201-.759 1.638-1.488 1.712v.364h.869v3.062c0 .836.588 1.271 1.313 1.271.585 0 1.202-.255 1.418-.763l-.217-.255c-.108.18-.402.401-.798.401zm-3.494-.803c-.294.69-.767.729-1.24.729h-1.53c-.508 0-.729-.186-.729-.62v-2.258s1.092 0 1.457.039c.291.035.438.109.546.473l.108.511h.438l-.039-1.309.074-1.278h-.434l-.147.585c-.073.399-.147.438-.546.508-.508.038-1.457.038-1.457.038V7.979c0-.112 0-.147.185-.147h2.291c.402 0 .62.326.763.98l.147.512h.399c.039-1.457.074-2.074.074-2.074s-.981.105-1.562.105H3.53L2 7.324v.399l.508.107c.367.074.475.147.475.473 0 0 .039.984.039 2.619 0 1.639-.039 2.623-.039 2.623 0 .291-.108.399-.475.473L2 14.131v.396l1.565-.035h2.623c.581 0 1.965.035 1.965.035.034-.361.216-1.964.255-2.146H8.04l-.395.874zm6.04-2.622c0-.474.437-.655.875-.655.36 0 .653.147.729.325l.255.729.361-.035c0-.364.038-.838.111-1.201-.328-.147-.983-.221-1.421-.221-.984 0-1.747.441-1.747 1.387 0 1.674 2.44 1.31 2.44 2.549 0 .399-.256.729-.876.729-.581 0-.837-.294-.945-.585l-.29-.693h-.369c.04.476.074.948 0 1.382 0 0 .767.294 1.531.294 1.022 0 1.858-.507 1.858-1.457 0-1.674-2.512-1.421-2.512-2.548zm6.369-.945v.364l.259.074c.252.07.36.178.36.363 0 .108-.034.144-.073.291-.108.291-.802 2.003-1.162 2.767a75.566 75.566 0 0 1-1.093-2.949c-.035-.073-.035-.108-.035-.146 0-.148.105-.292.361-.326l.329-.074v-.364l-1.346.073-1.096-.039v.368l.187.069c.251.074.287.11.469.512.693 1.53 1.457 3.529 1.716 4.15-.584 1.019-1.204 1.309-1.677 1.309-.291 0-.399-.147-.435-.329l-.146-.763-.4.035c-.073.477-.147.984-.255 1.383.287.182.616.294 1.053.293.691 0 1.675-.182 2.623-2.332l1.601-3.747c.145-.293.182-.329.546-.476l.183-.144v-.362l-.945.034-1.024-.034z\"}}]})(props);\n};\nexport function BiLogoFacebookCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.001 2.002c-5.522 0-9.999 4.477-9.999 9.999 0 4.99 3.656 9.126 8.437 9.879v-6.988h-2.54v-2.891h2.54V9.798c0-2.508 1.493-3.891 3.776-3.891 1.094 0 2.24.195 2.24.195v2.459h-1.264c-1.24 0-1.628.772-1.628 1.563v1.875h2.771l-.443 2.891h-2.328v6.988C18.344 21.129 22 16.992 22 12.001c0-5.522-4.477-9.999-9.999-9.999z\"}}]})(props);\n};\nexport function BiLogoFacebookSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h8.615v-6.96h-2.338v-2.725h2.338v-2c0-2.325 1.42-3.592 3.5-3.592.699-.002 1.399.034 2.095.107v2.42h-1.435c-1.128 0-1.348.538-1.348 1.325v1.735h2.697l-.35 2.725h-2.348V21H20a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1z\"}}]})(props);\n};\nexport function BiLogoFacebook (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13.397 20.997v-8.196h2.765l.411-3.209h-3.176V7.548c0-.926.258-1.56 1.587-1.56h1.684V3.127A22.336 22.336 0 0 0 14.201 3c-2.444 0-4.122 1.492-4.122 4.231v2.355H7.332v3.209h2.753v8.202h3.312z\"}}]})(props);\n};\nexport function BiLogoFigma (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.332 8.668a3.333 3.333 0 0 0 0-6.663H8.668a3.333 3.333 0 0 0 0 6.663 3.333 3.333 0 0 0 0 6.665 3.333 3.333 0 0 0 0 6.664A3.334 3.334 0 0 0 12 18.664V8.668h3.332z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15.332\",\"cy\":\"12\",\"r\":\"3.332\"}}]})(props);\n};\nexport function BiLogoFirebase (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5.239 15.063 7.21 2.381a.453.453 0 0 1 .847-.145l2.12 3.979-4.938 8.848zM19.24 18.14 17.363 6.469a.454.454 0 0 0-.766-.246L4.76 18.14l6.55 3.691c.411.23.912.23 1.323 0l6.607-3.691zM13.917 7.955 12.4 5.052a.452.452 0 0 0-.8 0L4.939 16.989l8.978-9.034z\"}}]})(props);\n};\nexport function BiLogoFirefox (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.634 11.138a2.16 2.16 0 0 0-.06-.286l-.187.236a6.354 6.354 0 0 0-.228-1.274 8.66 8.66 0 0 0-.591-1.511 5.33 5.33 0 0 0-.54-.92c-.109-.17-.203-.296-.221-.322-.362-.589-.767-.947-1.249-1.621a4.942 4.942 0 0 1-.615-1.679 6.091 6.091 0 0 0-.303 1.097c-.483-.489-.913-.846-1.168-1.08-1.267-1.183-1.113-1.79-1.113-1.79s-2.364 2.635-1.342 5.377a5.278 5.278 0 0 0 1.764 2.347c.989.813 2.052 1.452 2.609 3.101a5.2 5.2 0 0 0-1.967-2.087c.253.602.38 1.232.371 1.884a4.468 4.468 0 0 1-4.476 4.465 4.28 4.28 0 0 1-.985-.109 4.117 4.117 0 0 1-1.107-.379 4.4 4.4 0 0 1-1.334-1.226v-.007a.372.372 0 0 0 .075.024c.187.067.372.118.567.153a3.558 3.558 0 0 0 2.245-.263c.708-.396 1.139-.685 1.484-.574.348.109.608-.22.373-.565a1.853 1.853 0 0 0-1.79-.692c-.711.101-1.36.599-2.28.117-.067-.032-.117-.066-.176-.101-.06-.042.202.051.134.009a4.138 4.138 0 0 1-.582-.347c-.009-.009.145.043.126.033a2.235 2.235 0 0 1-.608-.614 1.118 1.118 0 0 1-.04-.973.844.844 0 0 1 .38-.354l.192.1s-.059-.1-.085-.151c.01-.008.019 0 .035-.008.102.042.329.159.455.236a.6.6 0 0 1 .212.186s.043-.017.009-.108a.511.511 0 0 0-.221-.263h.018c.093.051.178.102.261.167.076-.186.119-.368.112-.563a.825.825 0 0 0-.043-.313c-.035-.067.017-.093.075-.025a.545.545 0 0 0-.051-.152s.034-.051.051-.062c.043-.04.084-.082.136-.107.293-.185.599-.347.92-.474a6.52 6.52 0 0 0 .515-.228c.067-.042.127-.084.186-.136.22-.185.364-.438.413-.718.01-.04.01-.074.01-.107v-.069c-.034-.144-.279-.245-1.553-.372a1.104 1.104 0 0 1-.911-.852v.007a2.035 2.035 0 0 0-.051.146c.016-.053.033-.094.051-.146v-.007a3.257 3.257 0 0 1 1.249-1.553c.031-.025-.126.007-.093-.017.102-.051.211-.103.329-.145.059-.018-.245-.134-.515-.11a1.545 1.545 0 0 0-.473.11c.067-.049.252-.118.21-.118a2.837 2.837 0 0 0-.97.363c0-.033.01-.06.018-.083a1.474 1.474 0 0 0-.6.464v-.112a2.706 2.706 0 0 0-.295.28h-.008a3.92 3.92 0 0 0-2.205-.184l-.008-.009h.008a1.684 1.684 0 0 1-.387-.439l-.01.007-.015-.016c-.053-.068-.093-.152-.147-.246-.04-.06-.074-.136-.116-.21 0 0 0-.008-.008-.008-.01 0-.026.077-.033.049a2.668 2.668 0 0 1-.179-1.053H5.28a1.12 1.12 0 0 0-.448.589c-.041.086-.067.128-.092.179v-.028l.024-.125c-.006.009-.006.017-.017.025a1.06 1.06 0 0 0-.15.23 1.117 1.117 0 0 0-.103.243v-.042c0-.034.009-.085 0-.067l-.009.023a5.968 5.968 0 0 0-.506 1.902c-.016.118-.016.228-.016.337v.018a4.422 4.422 0 0 0-.514.683 9.703 9.703 0 0 0-1.082 2.659c.161-.354.354-.701.583-1.021a9.332 9.332 0 0 0-.659 3.454c.076-.346.169-.684.278-1.022a8.737 8.737 0 0 0 .787 4.062 9.397 9.397 0 0 0 3.738 4.229 8.052 8.052 0 0 0 2.169 1.048c.102.033.213.074.313.109-.034-.018-.059-.035-.092-.042a9.912 9.912 0 0 0 2.818.413c3.387 0 4.501-1.292 4.61-1.418.16-.151.303-.331.396-.541.068-.024.127-.05.195-.084l.041-.016c.051-.026.075-.034.075-.034a7.11 7.11 0 0 0 1.437-.896 3.475 3.475 0 0 0 1.326-1.951c.125-.286.125-.6.024-.894.05-.084.094-.161.101-.178a7.954 7.954 0 0 0 1.199-3.876v-.116a4.918 4.918 0 0 0-.072-.872z\"}}]})(props);\n};\nexport function BiLogoFlask (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13.78 18.29c0 .12.15 0 0 0zm-3.35-2.7c.39.17-.31-.6 0 0zm-5.03.28c.15.26 0-.12 0 0zm5.6.39c-.27-.42-.2.06 0 .32.48.47.18-.26 0-.32z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20.24 19.06c-.53.63-1-.07-1.63.13-1.1 0 .09-.5.06-1-.58-.45-1.24.61-1.62.9a10.75 10.75 0 0 1-2.67-.83 8 8 0 0 1-2.6-1.94 8.36 8.36 0 0 1-1.87-2.84 21.36 21.36 0 0 1-.84-5.74c.07-1.3 1.44.14 2-.33-.21-.67-1.29-.88-1.89-1.16-.58 0-.79-.55-1.4-.59 0-.73-1.13-.33-1.56-.84.42-1.08-1.37 0-1.23-.91.58-1.2-1.78-1-.8.06.95.54-.93.93-.38 1.29a.59.59 0 0 1-.53.86c-.74.07-.67 1.09.06.55.81-.25.14.11-.25.18a1.3 1.3 0 0 0-.95 1.9 35.32 35.32 0 0 1 1 3.42A16.25 16.25 0 0 0 5.84 17 9.78 9.78 0 0 0 8 19a9.89 9.89 0 0 0 2.43 1.22 18 18 0 0 0 4.73.73 16.53 16.53 0 0 0 2.9-.24c.87.09 1.49-.65 2.26-.26.48-.42 1.16-.23 1.63-.54.32-1.22-1.22-.27-1.71-.85zm-1.74-.74c-.22 0 .05-.34 0 0zm-7.63-11c-.1 0-.08-.12-.16-.15-.8-.37.39-.23.16.19zm6.76 11.39c-.35-.08.28-.25 0 0zm-2.81.11c-.23 0 .18-.14 0 0zm-1.88-1.18c-.13 0 0-.13 0 0zm-.22-.17c-.36 0-.09-.23 0 0zm-.42-.36c-.33.08 0-.34 0 0zm-6-11.66c-.53-.28.11.33-.34.32-.24 0-.69-.52-.54-.78.3.16.83.21.92.5zm-.92-.81h-.11c-.03-.27.87-.06.15.04zm-1.02-.79c-.42-.19 0-.93.44-.58.51.73-.95-.08-.44.58zm.49.69c-.27.11.16-.21 0 0zm.48.92c.6.46-.34 0-.72.29-.61.06.66-.34.72-.29zm.17.6c.35 0 1.88-.69 1.37-.07.47.55.1.37-.21 0 .28.19.06 1-.37.45s-.5-.18-.17.21C5.8 6 4.88 6.28 4.21 6.5c-.43-.04 1.13-.37 1.29-.44zM3.58 7.51c-.16.4.24.53.62.6.62-.17-.41-.28.06-.44.26 0-.82-.26.08-.38S6.09 6.77 7 6.58a8.71 8.71 0 0 1 2.35-.19c.3.35-.23.94-.77 1a8.61 8.61 0 0 1-2 .39c-.8-.1-1.37.61-2.19.7.22-.4-.18-.14-.59-.16.21.82-1.47-.21-.48-.41-.74-.26-.75.52-.67 1-.65-.91.07-1.29.93-1.4zm1.88 1.08c-.22-.05.17-.2 0 0zm-.72.88s-.34-.08-.2-.17c1 .13-.9-.33.13-.22.66-.02.44.36.07.39zm.33.17c-.12.12 0-.24 0 0zm-.71 0c-.44-.09.21-.22 0 0zm-.06 1.43c-.07.1-.1-.08 0 0zM4 10.9c-.55-.19 0-.21 0 0zm-.12 1.28c-.26-.09-.25-.5-.37-.72-.38-1.03.41.4.33.72zm.23-1.49c-.69-.08-.05-.49 0 0zm0-.34h-.09c-.76-.35.45-.17-.02 0zM4 9.56c-.61-.31.58-.36 0 0zm.21.26c-.34.06.05-.32 0 0zm-1.3.07c-.12.08 0-.23 0 0zM3 9.75c-.16 0 0-.27 0 0zm.08-1c-.4-.1.33-.25 0 0zm.26 2c-.44-.1-.12-.65 0 0zm.3 1.25c.42.51.26.79.69 1.41-.56-.35-.67-1.2-1-1.75-.41-.9.23-.01.31.34zm4.09 6.38c-.34-.07-.57-.43-.81-.66a4.88 4.88 0 0 1-1.57-1.94 12.26 12.26 0 0 1-1.46-2.38c-.41-.92.25.07.35.42.21.68.88 1.07.94 1.52.74.42.36 1.12 1 1.31.27-.14.3.84.89.64-.33.15.13.33.3.61.35-.05 1.17.82.36.52zM4.62 12c-.31-.07.33-.11 0 0zm.2.47c-.55-.14.52-.2 0 0zm1.39.47c.4-.17.16.78.55.9.76 1-.53 0-1-.07.06 0-.38-.12-.19-.16-.14-.15-.45-.66.26-.32.6.24.65.06.38-.39zm1.31 1.76c0 .15-.72.13-.06.42-.38 0-.5 0 0 .3-.22.17.43.31.21.57.66.52-.12.13-.4-.08s-.85-.35-.75-.5c.81.42.21 0-.15-.3.65.16-.51-.48.1-.31.19.05-.27-.38.33-.07-.54-.52.47-.12.72-.07zm.48-.17c-.61-.14 0-.34 0 0zm-.17 2c-.61-.26.39 0 0 0zm-.45-.17c-.71-.23.52 0 0 0zm-.09.11c-.22 0 0-.17 0 0zm-1.08-1.55c-.72-.3-.2-.33 0 0zm-.54-.35c-.58-.33-.08-.33 0 0zm0 .65c-.57-.44-.07-.25 0 0zm-.15-1.34c-.35 0 .13-.2 0 0zM8 17.38c-.51-.15 0-.14 0 0zM7.63 17h-.16c-.68-.54.31-.38.75-.14.97.14-.22.39-.59.14zm2.7 1.65c-.68-.16.16-.27 0 0zm-.17-.52c-.05 0-.1-.11 0 0zm-.86-1.34c-.59-.14.21-.19.36 0 1.02.21-.06.26-.36 0zM9.51 18H9.4l-.13-.06c-.56-.59 1.19.28.24.06zm-.28.69c-.15.06 0-.14 0 0zm.29-1.19-.16-.05c-.66-.45.84.09.16 0zm.16 1.72c-.4-.16.26-.25 0 0zm.1-.74c-.58-.14.36-.13 0 0zm.13-.61c-.44-.06.05-.21 0 0zm-.72-.88c.46.06.47.27 0 .14-.09 0-.24 0-.28-.17-.76-.5.03-.25.28-.02zm-.06 2c-.2.12 0-.22 0 0zm-.31-.51c-.53 0 .4-.26 0 0zm-.12.35c-.26-.1.17-.08 0 0zm.3-.89c-.52-.14.25-.18 0 0zm-.16-.57c-.28 0-.06-.16 0 0zm-.54-.95c-.57-.46 1.18.38 0 0zm-.06.19c0 .06-.11-.09 0 0zm3.65 3.78a9.4 9.4 0 0 1-2.56-.85l-.33-.2c-.57-.31-.5-.38.06-.07.19.16 1.59.73.93.35-.29-.07-1.9-.95-.84-.57a20.92 20.92 0 0 0 2.74 1.21 7.14 7.14 0 0 0 2.43.15c.65.33 1.33-.08 2 .21a13.05 13.05 0 0 1-4.45-.23zm-1.25-.7c-.51-.09.16-.23 0 0zm.73-1c-.58-.11.6-.23 0 0zm.84 1.31c1 .37-.6.12-.93-.09-.92-.38.72.09.93.09zm-1.06-1.1c-.81-.12.9 0 0 0zm1.52.85c-.29.23 0-.3 0 0zm.29.05c-.15.06 0-.17 0 0zm.27-.38c-.16.2 0-.23 0 0zm.31 0c-.45.17.47-.39 0 0zm.14 0c.49-.42.51-.22.5.13-.43.48-.17-.2-.44.06s-.19-.1-.06-.17zm.83.45c-.5 0 .51-.54 0 0zm0 .18c-.2.05 0-.13 0 0zm-.16-.35c-.39-.26.94-.61 0 0zm.57.09h-.08c-.03-.23.54-.27.08.02zm.15.19c-.3-.08.47-.4 0 0zm.36-.1c-.51.18.48-.4 0 0zm.22.11-.12.08c-.23-.14.71-.48.12-.07zm-.43-.53c-.54-.18-1.4-.76-2-.37-.8.51.41-.56-.24-.08-.66.79-.45-.5-1.09-.11 0-.12-.57-.16-.17-.37-.36 0-.13-.05 0-.34-.16 0-1 0-1.36-.29-.4-.52.07-.3.48-.23-.67.12.24.5.68.29-.2-.09-.43-.52-1-.9a18.83 18.83 0 0 0-2.13-1c-.84-.5.18-.18.47.08.84.37.51-.51 0-.74-.54 0-.67-.59-1.1-.56.67.11 1.14-.17.39-.85s.3.63-.11.44c-.19-.25-.05-.6-.65-.73 0 .23-.08.58-.21.1-.17 0-.36.21-.5-.28.13-.57-.56-.7-.67-1.06.6.38.87.08.45-.33s-.33-.11-.49 0c-.59.6-.06-1-.32-.56-.26 0-.11.29-.1.65-.86-.21.2.45.45.81-.39-.4-.32.31-.65 0-.11-.3-.12-.77-.67-.85.62-.22-.36-.65-.28-.67.35-.32.4-.76.82-.07-.53 0 0 .88.12.6 0-.47.22-1-.59-1.19-.24.32-.65-.63-.18-.43-.06-.63.74-.26.69-.53.42-.18-.5-.77 0-1 .38.24 1.36-.36.7-.44.42 0 .75.18.79-.24.33.07 1.24.36.42-.09a3.45 3.45 0 0 1 1.13-.25c.79-.61.63 1 .45 1.45.3-.21.24.94.14 1.37.16-.22.23.36 0 .77 0-.07.4-.13.12.35-.22-.47-.31 1-.17.32.37-.61.28 0 .39.24.08.55.32 1.06.4 1.56.35.35-.15.11-.15.59.11-.14.58.19.57.68 0-.78.09-.18.47 0a5.48 5.48 0 0 0 1 1.42c.37.43 0 .13.14.39a3.19 3.19 0 0 0 2.09 1.28 1.46 1.46 0 0 0 1.57.7c-.6.37 1.68.47.91.67-.23.16-.62-.2-1.01-.18zM8.7 15.89c-.24 0 0-.2 0 0zm.38.22c-.18 0-.12-.24 0 0zm-2.61-3.65c-.24-.07.1-.09 0 0zm-.59 0c-.26 0 0-.34 0 0zm-.3-.08c-.1.05 0-.11 0 0zm11 8.25c-.39-.07.32-.22 0 0zm.73-1.05h-.3c.06-.45 1.33-.1 1.85-.09-.16.34-1.13.04-1.55.13zm2 0c-.27 0 .12-.32 0 0zm1-.09c-.25.13 0-.3 0 0zm.48.11c-.52-.12.24-.12.4-.14.94.02 0 .16-.47.16z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M6.51 7.11c1-.2-.38-.33-.69 0 .18.13.41-.21.69 0zm-.82.13c0 .19.18-.22 0 0zm2.62-.48c.67-.11.11-.41-.09.1.07.14.11-.05.09-.1zm-.62.1c.93.36-.05-1 0 0zm-2.92.93a.51.51 0 0 1 .33.1c.75.52-.1-.84-.33-.1z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M4.81 7.43c.16.13.29-.21 0 0zm.37.01.14.12c.68.06-.11-.46-.14-.12zM10.69 16c.09.3 0-.39 0 0zm-4.78-5c.1.18.18-.18 0 0zm.09.61c.19.34 0-.51 0 0zm.21-.49c.33.21-.28-.52 0 0zm-.41-.82c.07.15.24.16.37.2 1.32.61-.95-1-.37-.2zm.54 1.43c.31.53.18-.37 0 0zm.48-.16c.37.92-.23-.12-.3-.43a2.11 2.11 0 0 0 .28 1c.34.51.19-.28.55.23-.2-.45.1-.2.06-.4s-1-1.17-.59-.4zm.36 1.78c.09.31.18 0 0 0zM5.85 9c.06.14.11 0 0 0zm.67.42c.32.41.17-.36 0 0zm-.89 1.14.14.15c.99.29-1.05-.95-.14-.15zm.7-.37c1 .41-.09-.27-.44-.2.11.13.32.07.44.2zm-.18-.44c.18.18.82.51.31.06.32-.06 0-.16-.24-.32-.44-.67.07.06-.07.26z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M5.51 10.64c-.53-.44.16.21-.06.2-.55-.4-.32-.11 0 .2.33.5.6-.3.06-.4zm2.14.64c.12.11-.06-.68 0 0zm1.02-3.5c0 .12.07-.1 0 0zM9 12.47c0 .21 0-.18 0 0zm-.29-1.22c.08.46.1-.78 0 0zm.14.22v.1c.21-.51.04-.79 0-.1zm-.1-2.7c-.14.7-.27.41-.08-.11-.05-.67-.45.41-.27.72.29.47.6-1.16.35-.61zm1.01 5.98c.13.35.11-.42 0 0zm-1.35-4.28c0 .2 0-.14 0 0zm.64 1.7c0 .26.11-.38 0 0zM9.5 14l.07.11c.14-.49-.36-.79-.07-.11zm-1.56-.52c.27.22-.13-.23 0 0zm1.23-.85c.08.29 0-.42 0 0zM8.14 9.81c.15.33-.05-.27 0 0z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M8.3 10.23c.24.34-.26-.64 0 0zm-.06 1.15c-.13-1-.42.45 0 .69.13.34.25.2.3-.19-.32 0 .08-.62-.3-.5z\"}}]})(props);\n};\nexport function BiLogoFlickrSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zM8.747 14.746A2.745 2.745 0 1 1 11.494 12a2.744 2.744 0 0 1-2.747 2.746zm6.506 0a2.746 2.746 0 1 1-.001-5.493 2.746 2.746 0 0 1 .001 5.493z\"}}]})(props);\n};\nexport function BiLogoFlickr (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.157 12a4.573 4.573 0 1 1-9.147 0 4.573 4.573 0 0 1 9.147 0zm10.833 0a4.573 4.573 0 1 1-9.147 0 4.573 4.573 0 0 1 9.147 0z\"}}]})(props);\n};\nexport function BiLogoFlutter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13.9 2.01 3.9 12l3.09 3.09 2.71-2.7L20.09 2l-6.19.01zm.82 14.6 5.39-5.38h-5.93c-.11 0-.26 0-.34.07l-2.23 2.23-3.09 3.07 3.09 3.1 2.15 2.15c.07.07.14.17.26.15h6.07z\"}}]})(props);\n};\nexport function BiLogoFoursquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m17.549 5.557-.403 2.113c-.049.229-.337.47-.605.47h-3.76c-.425 0-.729.296-.729.714v.463c0 .43.307.725.73.725h3.194c.298 0 .591.33.524.646l-.404 2.083c-.037.181-.237.475-.592.475h-2.609c-.477 0-.617.069-.936.454-.316.395-3.175 3.827-3.175 3.827-.026.033-.054.022-.054-.011V5.522c0-.271.234-.588.586-.588h7.756c.283 0 .549.269.477.618v.005zm.341 8.288c.111-.437 1.319-6.63 1.722-8.593m-1.489-2.311H8.457c-1.33 0-1.723 1.002-1.723 1.635v15.353c0 .71.381.975.596 1.062.214.087.807.161 1.163-.247 0 0 4.563-5.296 4.64-5.373.125-.118.125-.118.238-.118h2.954c1.245 0 1.438-.885 1.574-1.405.114-.429 1.325-6.622 1.721-8.595.307-1.496-.079-2.311-1.495-2.311h-.002z\"}}]})(props);\n};\nexport function BiLogoGit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.62 11.108-8.731-8.729a1.292 1.292 0 0 0-1.823 0L9.257 4.19l2.299 2.3a1.532 1.532 0 0 1 1.939 1.95l2.214 2.217a1.53 1.53 0 0 1 1.583 2.531c-.599.6-1.566.6-2.166 0a1.536 1.536 0 0 1-.337-1.662l-2.074-2.063V14.9c.146.071.286.169.407.29a1.537 1.537 0 0 1 0 2.166 1.536 1.536 0 0 1-2.174 0 1.528 1.528 0 0 1 0-2.164c.152-.15.322-.264.504-.339v-5.49a1.529 1.529 0 0 1-.83-2.008l-2.26-2.271-5.987 5.982c-.5.504-.5 1.32 0 1.824l8.731 8.729a1.286 1.286 0 0 0 1.821 0l8.69-8.689a1.284 1.284 0 0 0 .003-1.822\"}}]})(props);\n};\nexport function BiLogoGithub (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"clipRule\":\"evenodd\",\"d\":\"M12.026 2c-5.509 0-9.974 4.465-9.974 9.974 0 4.406 2.857 8.145 6.821 9.465.499.09.679-.217.679-.481 0-.237-.008-.865-.011-1.696-2.775.602-3.361-1.338-3.361-1.338-.452-1.152-1.107-1.459-1.107-1.459-.905-.619.069-.605.069-.605 1.002.07 1.527 1.028 1.527 1.028.89 1.524 2.336 1.084 2.902.829.091-.645.351-1.085.635-1.334-2.214-.251-4.542-1.107-4.542-4.93 0-1.087.389-1.979 1.024-2.675-.101-.253-.446-1.268.099-2.64 0 0 .837-.269 2.742 1.021a9.582 9.582 0 0 1 2.496-.336 9.554 9.554 0 0 1 2.496.336c1.906-1.291 2.742-1.021 2.742-1.021.545 1.372.203 2.387.099 2.64.64.696 1.024 1.587 1.024 2.675 0 3.833-2.33 4.675-4.552 4.922.355.308.675.916.675 1.846 0 1.334-.012 2.41-.012 2.737 0 .267.178.577.687.479C19.146 20.115 22 16.379 22 11.974 22 6.465 17.535 2 12.026 2z\"}}]})(props);\n};\nexport function BiLogoGitlab (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.892 9.889a.664.664 0 0 0-.025-.087l-2.104-6.479a.84.84 0 0 0-.8-.57.822.822 0 0 0-.789.575l-2.006 6.175H8.834L6.826 3.327a.823.823 0 0 0-.786-.575h-.006a.837.837 0 0 0-.795.575L3.133 9.815c0 .005-.005.01-.007.016l-1.067 3.281a1.195 1.195 0 0 0 .435 1.34l9.227 6.706c.167.121.393.12.558-.003l9.229-6.703a1.2 1.2 0 0 0 .435-1.34l-1.051-3.223zM17.97 3.936l1.809 5.566H16.16l1.81-5.566zm-11.94 0 1.812 5.566H4.228L6.03 3.936zm-2.982 9.752a.253.253 0 0 1-.093-.284l.793-2.437 5.817 7.456-6.517-4.735zm1.499-3.239h3.601l2.573 7.916-6.174-7.916zm7.452 8.794-2.856-8.798h5.718l-1.792 5.515-1.07 3.283zm1.282-.877 2.467-7.588.106-.329h3.604l-5.586 7.156-.591.761zm7.671-4.678-6.519 4.733.022-.029 5.794-7.425.792 2.436a.25.25 0 0 1-.089.285z\"}}]})(props);\n};\nexport function BiLogoGmail (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m18.73 5.41-1.28 1L12 10.46 6.55 6.37l-1.28-1A2 2 0 0 0 2 7.05v11.59A1.36 1.36 0 0 0 3.36 20h3.19v-7.72L12 16.37l5.45-4.09V20h3.19A1.36 1.36 0 0 0 22 18.64V7.05a2 2 0 0 0-3.27-1.64z\"}}]})(props);\n};\nexport function BiLogoGoLang (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3.79 10.17a.18.18 0 0 0-.11 0l-.2.27H7a.15.15 0 0 0 .1-.06l.17-.26v-.05zm-1.47.89a.14.14 0 0 0-.11 0l-.2.26v.05h4.6a.09.09 0 0 0 .09-.06l.08-.23v-.06zM4.6 12a.13.13 0 0 0-.1.06l-.13.24v.06h2.15a.08.08 0 0 0 .07-.07v-.23s0-.07-.06-.07zm15.99-3.07a3.62 3.62 0 0 0-2.78-.5 4.09 4.09 0 0 0-2.72 1.63 4 4 0 0 0-.67 1.26h-3.14a.25.25 0 0 0-.24.16c-.14.25-.37.76-.5 1.06s0 .29.18.29h1.88a2.8 2.8 0 0 1-.26.36 1.81 1.81 0 0 1-1.65.65 1.53 1.53 0 0 1-1.32-1.53 2.07 2.07 0 0 1 1-1.85 1.71 1.71 0 0 1 1.77-.15 1.36 1.36 0 0 1 .45.37c.13.15.14.14.29.1l1.63-.43c.12 0 .16-.08.1-.16a3 3 0 0 0-1.13-1.38 3.35 3.35 0 0 0-2.58-.47A4.31 4.31 0 0 0 8.16 10a3.81 3.81 0 0 0-.82 2.85A3 3 0 0 0 8.57 15a3.46 3.46 0 0 0 2.62.65A4.06 4.06 0 0 0 14 14a4.33 4.33 0 0 0 .41-.69 3 3 0 0 0 1 1.55 3.68 3.68 0 0 0 2.38.86c.25 0 .51 0 .78-.09a4.51 4.51 0 0 0 2.33-1.25A3.72 3.72 0 0 0 22 11.1a3 3 0 0 0-1.41-2.17zm-1.78 4.73a1.81 1.81 0 0 1-1.59.06 1.61 1.61 0 0 1-.9-1.84A2.12 2.12 0 0 1 18 10.19a1.59 1.59 0 0 1 2 1.29 2.91 2.91 0 0 1 0 .32 2.11 2.11 0 0 1-1.19 1.86z\"}}]})(props);\n};\nexport function BiLogoGoogleCloud (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.511 9.722a7.833 7.833 0 0 0-2.359-3.804l-.035.035.005-.042A7.81 7.81 0 0 0 4.418 9.722c.031-.013.066-.013.099-.023a5.643 5.643 0 0 0-.306 9.166l.006-.006-.006.024a5.612 5.612 0 0 0 3.407 1.134h4.321l.024.024h4.341a5.644 5.644 0 0 0 3.207-10.319zm-3.206 6.845h-4.341l-.006.006v-.031h-4.34c-.308 0-.611-.066-.892-.193l.002-.001a2.17 2.17 0 1 1 2.87-2.871l2.518-2.518a5.634 5.634 0 0 0-3.396-2.1c.018-.009.035-.024.05-.021a4.334 4.334 0 0 1 5.931-.451h.046a4.334 4.334 0 0 1 1.558 3.407v.433a2.17 2.17 0 1 1 0 4.34z\"}}]})(props);\n};\nexport function BiLogoGooglePlusCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22.014 11.974C21.996 6.462 17.521 2 12.008 2 6.493 2 2.019 6.462 2.001 11.974L2 11.948v.112l.001-.023c.017 5.513 4.491 9.977 10.007 9.977 5.514 0 9.988-4.462 10.006-9.974l.001.026v-.118l-.001.026zM9.281 16.557c-2.509 0-4.548-2.039-4.548-4.549s2.039-4.549 4.548-4.549c1.23 0 2.258.451 3.046 1.188l-1.295 1.255c-.325-.309-.899-.673-1.751-.673-1.505 0-2.733 1.251-2.733 2.785 0 1.533 1.229 2.784 2.733 2.784 1.742 0 2.384-1.206 2.502-1.92H9.279V11.18h4.255c.066.286.115.554.115.932 0 2.597-1.742 4.445-4.368 4.445zm10.458-4.095H17.92v1.819h-1.364v-1.819h-1.82v-1.364h1.82v-1.82h1.364v1.82h1.819v1.364z\"}}]})(props);\n};\nexport function BiLogoGooglePlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.545 15.025v-2.421h2.422v-1.815h-2.422V8.368H17.73v2.421h-2.421v1.815h2.421v2.421zM8.052 8.302c1.133 0 1.896.484 2.33.896l1.722-1.67c-1.048-.98-2.415-1.58-4.052-1.58C4.714 5.947 2 8.659 2 12s2.714 6.053 6.052 6.053c3.493 0 5.812-2.457 5.812-5.913 0-.503-.064-.86-.153-1.24H8.049v2.256h3.332c-.158.951-1.011 2.556-3.329 2.556-2.003 0-3.637-1.665-3.637-3.704 0-2.042 1.634-3.706 3.637-3.706z\"}}]})(props);\n};\nexport function BiLogoGoogle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.283 10.356h-8.327v3.451h4.792c-.446 2.193-2.313 3.453-4.792 3.453a5.27 5.27 0 0 1-5.279-5.28 5.27 5.27 0 0 1 5.279-5.279c1.259 0 2.397.447 3.29 1.178l2.6-2.599c-1.584-1.381-3.615-2.233-5.89-2.233a8.908 8.908 0 0 0-8.934 8.934 8.907 8.907 0 0 0 8.934 8.934c4.467 0 8.529-3.249 8.529-8.934 0-.528-.081-1.097-.202-1.625z\"}}]})(props);\n};\nexport function BiLogoGraphql (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.1 14.56a2.07 2.07 0 0 0-.47-.18V9.62a1.64 1.64 0 0 0 .48-.18 1.78 1.78 0 0 0-1.78-3.09 1.62 1.62 0 0 0-.41.32l-4.11-2.38a1.7 1.7 0 0 0 .07-.51 1.78 1.78 0 0 0-3.56 0 1.7 1.7 0 0 0 .07.51L6.28 6.66a1.58 1.58 0 0 0-.41-.31 1.78 1.78 0 0 0-1.78 3.09 1.64 1.64 0 0 0 .48.18v4.76a2.07 2.07 0 0 0-.47.18 1.78 1.78 0 1 0 1.78 3.09 1.72 1.72 0 0 0 .4-.31l4.11 2.37a1.7 1.7 0 0 0-.07.51 1.78 1.78 0 0 0 3.56 0 1.69 1.69 0 0 0-.09-.56l4.09-2.36a1.7 1.7 0 0 0 .44.35 1.78 1.78 0 1 0 1.78-3.09zM6.72 15.69a1.72 1.72 0 0 0-.19-.47 1.53 1.53 0 0 0-.31-.4l5.38-9.33a1.82 1.82 0 0 0 1 0l5.4 9.33a1.53 1.53 0 0 0-.31.4 1.72 1.72 0 0 0-.19.47zM17.5 7.4a1.81 1.81 0 0 0 .17 1.38 1.75 1.75 0 0 0 1.12.84v4.76h-.07l-5.39-9.31.05-.07zM10.82 5a.12.12 0 0 0 0 .05L5.48 14.4h-.07V9.62a1.75 1.75 0 0 0 1.12-.84A1.81 1.81 0 0 0 6.7 7.4zm2.6 14a1.78 1.78 0 0 0-1.32-.58 1.75 1.75 0 0 0-1.28.54L6.7 16.6v-.06h10.78v.11z\"}}]})(props);\n};\nexport function BiLogoHeroku (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.17 2H4.83A1.79 1.79 0 0 0 3 3.8v16.4A1.79 1.79 0 0 0 4.83 22h14.34A1.8 1.8 0 0 0 21 20.2V3.8A1.8 1.8 0 0 0 19.17 2zM20 20.2a.8.8 0 0 1-.81.8H4.83a.79.79 0 0 1-.8-.8V3.8a.79.79 0 0 1 .8-.8h14.34a.8.8 0 0 1 .81.8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m7.53 19 2.25-2-2.25-2v4zm5.69-9a12 12 0 0 0-3.75.7V5h-2v8.65L8.88 13a12.3 12.3 0 0 1 4.29-1c1 0 1.25.55 1.25 1.05v6h2V13a2.68 2.68 0 0 0-.8-2.1 3.27 3.27 0 0 0-2.4-.9zM13 8.25h2A5.89 5.89 0 0 0 16.47 5h-2A7.17 7.17 0 0 1 13 8.25z\"}}]})(props);\n};\nexport function BiLogoHtml5 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4.136 3.012h15.729l-1.431 16.15-6.451 1.826-6.414-1.826-1.433-16.15zm5.266 7.302-.173-2.035 7.533.002.173-1.963-9.87-.002.522 5.998h6.835l-.243 2.566-2.179.602-2.214-.605-.141-1.58H7.691l.247 3.123L12 17.506l4.028-1.08.558-6.111H9.402v-.001z\"}}]})(props);\n};\nexport function BiLogoImdb (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13.646 10.237c-.057-.032-.16-.048-.313-.048v3.542c.201 0 .324-.041.371-.122s.07-.301.07-.66v-2.092c0-.244-.008-.4-.023-.469a.223.223 0 0 0-.105-.151zm3.499 1.182c-.082 0-.137.031-.162.091-.025.061-.037.214-.037.46v1.426c0 .237.014.389.041.456.029.066.086.1.168.1.086 0 .199-.035.225-.103.027-.069.039-.234.039-.495V11.97c0-.228-.014-.377-.043-.447-.032-.069-.147-.104-.231-.104z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zM6.631 14.663H5.229V9.266h1.402v5.397zm4.822 0H10.23l-.006-3.643-.49 3.643h-.875L8.342 11.1l-.004 3.563H7.111V9.266H8.93c.051.327.107.71.166 1.15l.201 1.371.324-2.521h1.832v5.397zm3.664-1.601c0 .484-.027.808-.072.97a.728.728 0 0 1-.238.383.996.996 0 0 1-.422.193c-.166.037-.418.055-.754.055h-1.699V9.266h1.047c.678 0 1.07.031 1.309.093.24.062.422.164.545.306.125.142.203.3.234.475.031.174.051.516.051 1.026v1.896zm3.654.362c0 .324-.023.565-.066.723a.757.757 0 0 1-.309.413.947.947 0 0 1-.572.174c-.158 0-.365-.035-.502-.104a1.144 1.144 0 0 1-.377-.312l-.088.344h-1.262V9.266h1.35v1.755a1.09 1.09 0 0 1 .375-.289c.137-.064.344-.096.504-.096.186 0 .348.029.484.087a.716.716 0 0 1 .44.549c.016.1.023.313.023.638v1.514z\"}}]})(props);\n};\nexport function BiLogoInstagramAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.947 8.305a6.53 6.53 0 0 0-.419-2.216 4.61 4.61 0 0 0-2.633-2.633 6.606 6.606 0 0 0-2.186-.42c-.962-.043-1.267-.055-3.709-.055s-2.755 0-3.71.055a6.606 6.606 0 0 0-2.185.42 4.607 4.607 0 0 0-2.633 2.633 6.554 6.554 0 0 0-.419 2.185c-.043.963-.056 1.268-.056 3.71s0 2.754.056 3.71c.015.748.156 1.486.419 2.187a4.61 4.61 0 0 0 2.634 2.632 6.584 6.584 0 0 0 2.185.45c.963.043 1.268.056 3.71.056s2.755 0 3.71-.056a6.59 6.59 0 0 0 2.186-.419 4.615 4.615 0 0 0 2.633-2.633c.263-.7.404-1.438.419-2.187.043-.962.056-1.267.056-3.71-.002-2.442-.002-2.752-.058-3.709zm-8.953 8.297c-2.554 0-4.623-2.069-4.623-4.623s2.069-4.623 4.623-4.623a4.623 4.623 0 0 1 0 9.246zm4.807-8.339a1.077 1.077 0 0 1-1.078-1.078 1.077 1.077 0 1 1 2.155 0c0 .596-.482 1.078-1.077 1.078z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"11.994\",\"cy\":\"11.979\",\"r\":\"3.003\"}}]})(props);\n};\nexport function BiLogoInstagram (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.999 7.377a4.623 4.623 0 1 0 0 9.248 4.623 4.623 0 0 0 0-9.248zm0 7.627a3.004 3.004 0 1 1 0-6.008 3.004 3.004 0 0 1 0 6.008z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"16.806\",\"cy\":\"7.207\",\"r\":\"1.078\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20.533 6.111A4.605 4.605 0 0 0 17.9 3.479a6.606 6.606 0 0 0-2.186-.42c-.963-.042-1.268-.054-3.71-.054s-2.755 0-3.71.054a6.554 6.554 0 0 0-2.184.42 4.6 4.6 0 0 0-2.633 2.632 6.585 6.585 0 0 0-.419 2.186c-.043.962-.056 1.267-.056 3.71 0 2.442 0 2.753.056 3.71.015.748.156 1.486.419 2.187a4.61 4.61 0 0 0 2.634 2.632 6.584 6.584 0 0 0 2.185.45c.963.042 1.268.055 3.71.055s2.755 0 3.71-.055a6.615 6.615 0 0 0 2.186-.419 4.613 4.613 0 0 0 2.633-2.633c.263-.7.404-1.438.419-2.186.043-.962.056-1.267.056-3.71s0-2.753-.056-3.71a6.581 6.581 0 0 0-.421-2.217zm-1.218 9.532a5.043 5.043 0 0 1-.311 1.688 2.987 2.987 0 0 1-1.712 1.711 4.985 4.985 0 0 1-1.67.311c-.95.044-1.218.055-3.654.055-2.438 0-2.687 0-3.655-.055a4.96 4.96 0 0 1-1.669-.311 2.985 2.985 0 0 1-1.719-1.711 5.08 5.08 0 0 1-.311-1.669c-.043-.95-.053-1.218-.053-3.654 0-2.437 0-2.686.053-3.655a5.038 5.038 0 0 1 .311-1.687c.305-.789.93-1.41 1.719-1.712a5.01 5.01 0 0 1 1.669-.311c.951-.043 1.218-.055 3.655-.055s2.687 0 3.654.055a4.96 4.96 0 0 1 1.67.311 2.991 2.991 0 0 1 1.712 1.712 5.08 5.08 0 0 1 .311 1.669c.043.951.054 1.218.054 3.655 0 2.436 0 2.698-.043 3.654h-.011z\"}}]})(props);\n};\nexport function BiLogoInternetExplorer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.154 8.514c.85-2.039.906-3.738-.113-4.757-1.133-1.132-3.852-.792-6.737.565h-.341c-2.037 0-4.02.738-5.492 2.039-1.244 1.133-2.15 2.605-2.547 4.246.283-.337 1.869-2.207 3.68-3.226.058 0 .51-.283.51-.283-.057 0-.905.85-1.074 1.02-3.965 4.076-6.285 10.248-4.473 12.059 1.188 1.189 3.34.906 5.831-.452 1.075.51 2.265.735 3.565.735 1.699 0 3.285-.453 4.643-1.359 1.416-.906 2.436-2.319 3.059-3.962h-4.416c-.566 1.075-1.869 1.812-3.227 1.812-1.926 0-3.512-1.586-3.568-3.397v-.169h11.551v-.17c0-.283.057-.623.057-.848-.001-1.362-.341-2.664-.908-3.853zM4.811 19.838c-.906-.906-.621-2.662.453-4.756.51 1.416 1.359 2.662 2.435 3.567.341.282.735.565 1.133.792-1.814.963-3.285 1.133-4.021.397zm11.606-8.606H9.51v-.057c.113-1.756 1.754-3.285 3.681-3.285 1.812 0 3.284 1.416 3.397 3.285v.057h-.171zm3.454-3.171a6.948 6.948 0 0 0-1.303-1.585 8.445 8.445 0 0 0-2.718-1.699c1.813-.849 3.341-.961 4.134-.169.623.736.567 1.981-.113 3.453 0 .057 0 .057 0 0 0 .057 0 .057 0 0z\"}}]})(props);\n};\nexport function BiLogoInvision (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.361 3.008H4.638c-.901 0-1.63.729-1.63 1.63v14.724c0 .9.729 1.631 1.63 1.631h14.724c.9 0 1.631-.73 1.631-1.631V4.638a1.63 1.63 0 0 0-1.632-1.63zM9.018 6.505c.597 0 1.098.472 1.098 1.078 0 .616-.501 1.08-1.098 1.08v.022c-.604 0-1.09-.486-1.09-1.088 0-.605.486-1.092 1.09-1.092zm7.354 10.352c-1.112 0-1.651-.662-1.651-1.566 0-.26.033-.533.114-.812l.528-1.906c.068-.208.086-.405.086-.581 0-.615-.375-.984-.971-.984-.761 0-1.26.543-1.52 1.598l-1.033 4.146h-1.811l.327-1.303c-.534.873-1.271 1.412-2.183 1.412-1.102 0-1.617-.632-1.617-1.584a4.02 4.02 0 0 1 .096-.811l.826-3.366H6.285l.388-1.43h3.075l-1.216 4.804c-.08.309-.11.559-.11.738 0 .307.148.396.385.452.146.03 1.295.011 1.918-1.376l.798-3.188h-1.294l.391-1.404h2.787l-.359 1.617c.484-.899 1.452-1.762 2.406-1.762 1.012 0 1.855.728 1.855 2.111 0 .4-.063.796-.18 1.18l-.52 1.858a2.286 2.286 0 0 0-.075.492c0 .326.136.484.368.484.238 0 .553-.181.899-1.172l.708.272c-.414 1.473-1.182 2.081-2.137 2.081z\"}}]})(props);\n};\nexport function BiLogoJava (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9.37 17.51c-3.09.86 1.87 2.64 5.8 1a7.18 7.18 0 0 1-1.1-.54 11.59 11.59 0 0 1-4.16.18c-1.31-.15-.54-.64-.54-.64zm5.33-1.68a16.27 16.27 0 0 1-5.36.26c-1.31-.14-.45-.77-.45-.77-3.4 1.12 1.89 2.4 6.64 1a2.25 2.25 0 0 1-.83-.49zm1.82-9.73s-6.87 1.71-3.59 5.49a1.47 1.47 0 0 1-.25 2.12s2.46-1.27 1.33-2.86-1.86-2.22 2.51-4.75z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M18.13 19.14s.56.46-.63.82c-2.27.69-9.43.9-11.42 0-.72-.31.62-.74 1-.83a2.54 2.54 0 0 1 .69-.08c-.8-.56-5.15 1.1-2.21 1.58 8.05 1.37 14.64-.56 12.57-1.49zm-2.76-4.88a7 7 0 0 1 .92-.49s-1.51.27-3 .4a28.11 28.11 0 0 1-4.82.05C6.09 13.91 9.74 13 9.74 13a6.81 6.81 0 0 0-3.16.75c-2.06 1.03 5.09 1.48 8.79.51zm.91 2.44a.39.39 0 0 1-.08.09c5-1.32 3.18-4.65.78-3.81a.71.71 0 0 0-.33.25s.14-.05.43-.12c1.22-.25 2.92 1.63-.8 3.59zM12 13c-.74-1.67-3.26-3.14 0-5.71C16.09 4.08 14 2 14 2c.84 3.31-3 4.31-4.34 6.37-.93 1.41.47 2.92 2.34 4.63z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M16.41 21.32a29.75 29.75 0 0 1-9.14.14s.46.38 2.84.53c3.61.23 9.15-.12 9.29-1.83 0 0-.26.64-2.99 1.16z\"}}]})(props);\n};\nexport function BiLogoJavascript (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 3h18v18H3V3zm16.525 13.707c-.131-.821-.666-1.511-2.252-2.155-.552-.259-1.165-.438-1.349-.854-.068-.248-.078-.382-.034-.529.113-.484.687-.629 1.137-.495.293.09.563.315.732.676.775-.507.775-.507 1.316-.844-.203-.314-.304-.451-.439-.586-.473-.528-1.103-.798-2.126-.775l-.528.067c-.507.124-.991.395-1.283.754-.855.968-.608 2.655.427 3.354 1.023.765 2.521.933 2.712 1.653.18.878-.652 1.159-1.475 1.058-.607-.136-.945-.439-1.316-1.002l-1.372.788c.157.359.337.517.607.832 1.305 1.316 4.568 1.249 5.153-.754.021-.067.18-.528.056-1.237l.034.049zm-6.737-5.434h-1.686c0 1.453-.007 2.898-.007 4.354 0 .924.047 1.772-.104 2.033-.247.517-.886.451-1.175.359-.297-.146-.448-.349-.623-.641-.047-.078-.082-.146-.095-.146l-1.368.844c.229.473.563.879.994 1.137.641.383 1.502.507 2.404.305.588-.17 1.095-.519 1.358-1.059.384-.697.302-1.553.299-2.509.008-1.541 0-3.083 0-4.635l.003-.042z\"}}]})(props);\n};\nexport function BiLogoJoomla (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m15.539 14.059-1.874 1.875-1.777 1.777-.347.35a3.993 3.993 0 0 1-3.785 1.048A2.41 2.41 0 0 1 3 18.567c0-1.138.792-2.092 1.852-2.342a3.993 3.993 0 0 1 1.047-3.811l.135-.135 1.777 1.778-.138.135a1.48 1.48 0 0 0 0 2.092 1.462 1.462 0 0 0 2.09 0l.349-.349 1.775-1.778 1.877-1.879 1.775 1.781zm.693 4.988a3.986 3.986 0 0 1-3.996-.988l-.135-.139 1.773-1.777.135.139a1.48 1.48 0 0 0 2.09 0 1.474 1.474 0 0 0-.002-2.086l-.35-.349-1.773-1.777-1.877-1.878 1.777-1.776 1.875 1.879 1.774 1.777.349.349a3.962 3.962 0 0 1 1.058 3.766 2.407 2.407 0 0 1-.336 4.79 2.392 2.392 0 0 1-2.352-1.924l-.01-.006zm-8.001-8.962 1.881-1.879 1.777-1.777.347-.346a3.972 3.972 0 0 1 3.949-1.002 2.408 2.408 0 1 1 2.699 2.716 3.98 3.98 0 0 1-1.012 3.925l-.137.139-1.777-1.777.139-.138a1.474 1.474 0 1 0-2.086-2.085l-.347.346-1.777 1.776-1.879 1.876-1.777-1.774zm-1.99 1.984-.346-.347a3.984 3.984 0 0 1-.999-3.965 2.414 2.414 0 0 1-1.874-2.35A2.41 2.41 0 0 1 5.43 3c1.197 0 2.19.875 2.378 2.019a3.99 3.99 0 0 1 3.734 1.061l.138.14-1.778 1.776-.137-.136a1.481 1.481 0 0 0-2.088 0 1.481 1.481 0 0 0-.004 2.092l.349.35 1.777 1.777 1.879 1.879-1.775 1.777-1.883-1.879-1.778-1.777v-.01h-.001z\"}}]})(props);\n};\nexport function BiLogoJquery (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3.345 6.935c-1.756 2.523-1.538 5.806-.196 8.487l.098.19c.021.04.041.082.063.121.012.024.026.047.039.069a7.842 7.842 0 0 0 .198.344l.073.12a9.14 9.14 0 0 0 .211.33 10.179 10.179 0 0 0 .221.319l.036.049c.063.088.129.175.196.261l.074.094.182.223.069.082c.082.097.167.194.252.289l.005.005c.004.004.007.006.01.011.083.091.17.181.256.271l.083.083.205.201.084.08c.092.087.186.172.281.256l.004.004.049.041c.083.073.169.145.255.215l.105.084a11.03 11.03 0 0 0 .565.424c.029.021.057.042.087.062l.024.017c.076.053.154.103.231.153.033.022.066.045.101.067a10.975 10.975 0 0 0 .886.509c.065.034.129.068.195.101l.045.022.08.039c.102.048.205.097.308.143l.066.029c.119.052.239.102.36.149l.088.035a13.895 13.895 0 0 0 .382.142c.125.044.252.085.38.124l.092.028c.128.039.256.085.39.11 8.492 1.548 10.958-5.102 10.958-5.102-2.072 2.698-5.748 3.41-9.232 2.618-.132-.03-.261-.071-.39-.109l-.097-.029a10.929 10.929 0 0 1-.755-.264l-.093-.036c-.12-.047-.239-.097-.356-.148l-.071-.031a11.932 11.932 0 0 1-.301-.14l-.087-.042c-.078-.038-.155-.079-.232-.118-.051-.027-.104-.053-.155-.082a8.294 8.294 0 0 1-.278-.156l-.094-.052a11.4 11.4 0 0 1-.363-.223l-.098-.065a10.557 10.557 0 0 1-.259-.172l-.083-.059c-.082-.058-.164-.116-.244-.176a11.921 11.921 0 0 1-.328-.255l-.099-.079c-.092-.076-.184-.152-.274-.231a12.01 12.01 0 0 1-.319-.288c-.028-.026-.055-.051-.081-.078a7.985 7.985 0 0 1-.208-.203l-.081-.081a10.76 10.76 0 0 1-.254-.269l-.012-.012a11.75 11.75 0 0 1-.258-.293l-.067-.081a10.313 10.313 0 0 1-.254-.313 11.855 11.855 0 0 1-.215-.286C3.864 11.825 3.17 8.186 4.715 5.198\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M8.794 4.809c-1.27 1.827-1.2 4.273-.21 6.205.166.324.353.639.561.938.191.273.401.597.654.816.092.101.187.199.284.295l.076.074c.094.092.19.182.291.271l.011.01.003.002c.111.097.224.19.34.281l.078.06a8.281 8.281 0 0 0 .366.268c.053.037.108.072.161.107.026.017.051.035.078.051a7.14 7.14 0 0 0 .301.184c.076.044.155.087.233.13.026.015.055.029.082.043.055.028.108.057.163.083a9.645 9.645 0 0 0 .365.171l.074.031c.093.039.186.077.281.113l.117.044c.086.032.171.06.256.089l.117.037c.121.038.243.085.37.107 6.556 1.086 8.068-3.961 8.068-3.961-1.364 1.964-4.006 2.902-6.825 2.17a7.866 7.866 0 0 1-.743-.232l-.118-.043a7.629 7.629 0 0 1-.353-.145 8.79 8.79 0 0 1-.344-.159c-.057-.028-.113-.058-.17-.087l-.099-.051a9.352 9.352 0 0 1-.533-.313l-.08-.053a7.65 7.65 0 0 1-.602-.435c-1.234-.974-2.213-2.306-2.678-3.815-.488-1.566-.382-3.323.462-4.75\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13.379 3.221c-.749 1.102-.823 2.469-.304 3.686.548 1.292 1.671 2.304 2.981 2.785a3.85 3.85 0 0 0 .234.079c.077.024.152.053.233.067 3.62.699 4.601-1.857 4.862-2.234-.86 1.239-2.306 1.536-4.078 1.105a5.403 5.403 0 0 1-.939-.344 5.39 5.39 0 0 1-.895-.545c-1.585-1.204-2.573-3.501-1.536-5.372\"}}]})(props);\n};\nexport function BiLogoJsfiddle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.58 11.375c.008-.117.018-.231.018-.35 0-3.243-2.668-5.871-5.959-5.871A5.966 5.966 0 0 0 8.26 8.502a2.732 2.732 0 0 0-1.674-.568c-1.521 0-2.752 1.21-2.752 2.704 0 .283.043.554.125.808a3.957 3.957 0 0 0-1.98 3.418c0 2.173 1.773 3.938 3.975 3.972h11.898c.074 0 .15.012.227.012 2.178 0 3.943-1.739 3.943-3.893a3.885 3.885 0 0 0-2.432-3.579h-.01v-.001zM7.355 15.842a2.329 2.329 0 0 1-.748-1.318 2.865 2.865 0 0 1-.053-.544c0-.74.27-1.347.809-1.827.537-.48 1.221-.722 2.049-.722.854 0 1.654.32 2.363.957.176.158.352.338.514.536l.912 1.071c.158.217.324.399.5.56.471.422.977.632 1.408.632.365 0 .67-.112.912-.336.209-.19.336-.45.363-.73l.008-.123a1.054 1.054 0 0 0-.055-.347 1.275 1.275 0 0 0-1.238-.838c-.453 0-.902.153-1.396.631l-.807-.95-.088-.108c.713-.691 1.414-.95 2.367-.95.838 0 1.525.237 2.037.712l.014.014c.539.474.801 1.089.801 1.842a2.6 2.6 0 0 1-.049.528 2.38 2.38 0 0 1-.74 1.301 2.685 2.685 0 0 1-1.428.677 4.505 4.505 0 0 1-.588.038c-.863 0-1.676-.313-2.365-.938a4.866 4.866 0 0 1-.537-.576l-.914-1.065a3.58 3.58 0 0 0-.488-.563c-.463-.425-.977-.626-1.428-.626-.129 0-.26.018-.389.051a1.19 1.19 0 0 0-.523.289c-.232.216-.365.52-.365.839 0 .324.113.6.352.825l.014.013c.25.227.563.338.926.338.463 0 .914-.162 1.4-.639l.801.938.088.099c-.725.703-1.428.965-2.342.965-.838 0-1.525-.238-2.051-.713l-.046.057z\"}}]})(props);\n};\nexport function BiLogoKickstarter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m10.198 9.127 3.309-4.799c.628-.902 1.434-1.354 2.427-1.354.806 0 1.506.287 2.097.861.59.574.885 1.26.885 2.059 0 .59-.155 1.113-.469 1.563l-2.983 4.34 3.649 4.627c.363.461.547 1 .547 1.617 0 .816-.286 1.518-.86 2.105a2.81 2.81 0 0 1-2.084.879c-.895 0-1.577-.291-2.047-.873L10.2 14.574v3.074c0 .879-.152 1.561-.457 2.049-.555.885-1.356 1.328-2.417 1.328-.963 0-1.711-.328-2.24-.977-.496-.602-.744-1.396-.744-2.387V6.258c0-.936.253-1.709.755-2.318.525-.643 1.255-.965 2.186-.965.887 0 1.624.322 2.216.965.329.357.537.717.625 1.082.053.227.079.646.079 1.266v2.84h-.005z\"}}]})(props);\n};\nexport function BiLogoKubernetes (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m10.013 13.738-2.254.387a4.475 4.475 0 0 0 1.753 2.231l.865-2.095a.27.27 0 0 0 .022-.228c-.022-.18-.204-.295-.386-.295zm.865-2.914c.205 0 .387-.159.387-.364l.114-2.277-.456.091a4.516 4.516 0 0 0-2.118 1.162l1.89 1.343c.069.022.115.045.183.045zm-1.002 1.48a.366.366 0 0 0-.045-.524l-1.685-1.503a4.797 4.797 0 0 0-.661 2.778l2.209-.637c.091-.023.137-.046.182-.114zm1.457.797.616.296.614-.296.16-.661-.433-.546h-.683l-.433.546zm1.344-2.436c.114.159.341.182.5.091l1.867-1.32a4.286 4.286 0 0 0-2.573-1.23l.137 2.3a.215.215 0 0 0 .069.159z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m21.944 14.103-1.73-7.446c-.113-.364-.387-.66-.729-.842L12.541 2.49c-.182-.091-.387-.114-.569-.114s-.387 0-.569.045L4.457 5.769a1.22 1.22 0 0 0-.683.842l-1.708 7.492c-.068.387.023.774.25 1.093l4.805 5.943c.273.273.66.456 1.047.479h7.651c.41.045.797-.137 1.048-.479l4.805-5.943c.227-.319.318-.706.272-1.093zm-2.845.501c-.046 0-.068 0-.114-.023-.022-.023-.022-.023-.045-.023-.046 0-.068-.022-.092-.022-.091-.023-.159-.068-.25-.114a.32.32 0 0 1-.137-.045h-.022a3.91 3.91 0 0 0-.729-.205h-.022a.26.26 0 0 0-.182.068s0 .023-.023.023l-.183-.024a5.628 5.628 0 0 1-2.46 3.097l.068.182s-.022 0-.022.022a.264.264 0 0 0-.022.228c.091.228.205.455.364.66v.045a.396.396 0 0 1 .091.114.81.81 0 0 1 .159.228c.023.022.046.045.046.068 0 0 .022 0 .022.022a.582.582 0 0 1 .023.342.38.38 0 0 1-.205.25c-.068.022-.114.045-.183.045a.511.511 0 0 1-.433-.273c-.022 0-.022-.022-.022-.022-.022-.023-.022-.045-.046-.068-.045-.068-.068-.159-.091-.25l-.046-.137v-.022a3.816 3.816 0 0 0-.296-.706.353.353 0 0 0-.182-.137c0-.023 0-.023-.023-.023l-.091-.159c-.228.068-.479.159-.729.205-.41.114-.82.159-1.229.159a5.368 5.368 0 0 1-1.981-.364l-.091.182c0 .023 0 .023-.023.023a.35.35 0 0 0-.182.137c-.114.228-.228.455-.296.706l-.045.137c-.023.091-.068.159-.091.25-.022.023-.045.045-.045.068-.023 0-.023.022-.023.022a.508.508 0 0 1-.433.273.434.434 0 0 1-.159-.045.469.469 0 0 1-.182-.615c.023 0 .023-.023.023-.023.022-.023.022-.045.045-.068.068-.091.114-.182.159-.228s.068-.068.091-.114v-.023a3.73 3.73 0 0 0 .364-.66.268.268 0 0 0-.023-.228s-.022 0-.022-.022l.114-.16a3.578 3.578 0 0 1-.615-.41 5.493 5.493 0 0 1-1.867-2.664l-.205.022s0-.022-.023-.022a.256.256 0 0 0-.182-.068h-.022a4.015 4.015 0 0 0-.751.205h-.024c-.045 0-.091.023-.137.046-.068.022-.159.068-.25.091-.022 0-.091-.022-.091 0 0 .023 0 .023-.023.023-.045.023-.068.023-.114.023a.424.424 0 0 1-.456-.319.445.445 0 0 1 .364-.524c.023-.023.023-.023.046-.023.045 0 .068-.022.091-.022.091 0 .182-.023.273-.023.045-.022.091-.022.137-.022a4.2 4.2 0 0 0 .774-.137c.068-.046.137-.091.16-.16 0 0 .022 0 .022-.022l.182-.046c-.205-1.298.091-2.618.797-3.734.022-.045.045-.068.068-.114l-.131-.132a.106.106 0 0 1-.004.019v-.023l.004.004c.01-.065-.031-.145-.072-.186-.182-.182-.41-.319-.638-.455l-.136-.069a2.587 2.587 0 0 1-.251-.136c-.022 0-.068-.045-.068-.045s0-.023-.022-.023a.49.49 0 0 1-.092-.639c.068-.114.182-.159.319-.159a.54.54 0 0 1 .319.114l.023.023c.022.022.045.022.068.045.068.069.114.137.182.205.023.022.068.045.091.091.159.182.364.364.569.524.045.022.091.045.137.045.045 0 .068-.023.091-.023h.023l.137.091a5.426 5.426 0 0 1 2.801-1.594c.273-.046.523-.091.774-.114l.023-.182v-.045c.068-.045.091-.114.114-.182 0-.273 0-.524-.045-.774v-.023c0-.045 0-.091-.023-.137a1.129 1.129 0 0 1-.045-.273v-.113c0-.114.045-.228.137-.319.114-.114.25-.182.387-.159a.45.45 0 0 1 .387.478v.137c-.023.091-.023.182-.045.273 0 .045-.023.091-.023.136v.023c-.048.273-.048.524-.048.774.023.068.045.136.114.182v-.023l.023.182a5.84 5.84 0 0 1 2.96 1.184c.183.182.387.364.569.546l.183-.114h.022c.022.023.068.023.091.023.046 0 .091-.023.137-.045.205-.137.41-.319.569-.501.022-.023.068-.046.091-.091.046-.068.114-.137.183-.205.022 0 .045-.022.068-.045l.022-.023a.546.546 0 0 1 .318-.114c.114 0 .251.068.319.16.159.205.113.478-.091.637 0 .023.022.023 0 .046-.023.022-.046.022-.068.045-.092.045-.16.091-.251.137l-.137.068a4.104 4.104 0 0 0-.638.455c-.045.046-.068.137-.068.205v.023l-.136.137c.364.569.638 1.207.797 1.867.137.66.182 1.343.091 2.003l.182.046a.278.278 0 0 0 .16.159c.25.068.523.114.773.137h.023a.297.297 0 0 0 .137.022c.091 0 .182 0 .272.023.046 0 .092 0 .092.023 0 .022.022.022.045.022a.537.537 0 0 1 .41.479.49.49 0 0 1-.453.32z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12.085 14.718a.352.352 0 0 0-.455.091l-1.116 2.027c.456.136.957.228 1.435.228.341 0 .66-.045.979-.114.159-.045.296-.068.433-.091l-1.093-1.981c-.069-.069-.115-.115-.183-.16zm3.644-4.441-1.708 1.548a.36.36 0 0 0-.091.16c-.046.205.068.41.273.455l2.163.615a4.375 4.375 0 0 0-.092-1.435 4.63 4.63 0 0 0-.545-1.343zm-2.073 3.484a.371.371 0 0 0-.205.433l.889 2.141a4.366 4.366 0 0 0 1.366-1.366c.182-.25.318-.547.433-.865l-2.277-.387a.634.634 0 0 0-.206.044z\"}}]})(props);\n};\nexport function BiLogoLess (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.142 10.843c0-.64.098-1.018.098-1.707 0-1.067-.393-1.411-1.263-1.411h-.641v.755h.196c.444 0 .542.147.542.689 0 .509-.049 1.018-.049 1.608 0 .755.246 1.05.739 1.165v.049c-.493.116-.739.411-.739 1.166 0 .591.049 1.067.049 1.608 0 .558-.114.705-.542.705v.017h-.196v.788h.641c.87 0 1.263-.344 1.263-1.411 0-.706-.098-1.067-.098-1.707 0-.345.213-.706.854-.739v-.853c-.642-.016-.854-.377-.854-.722zm-3.299 1.001c-.493-.196-.952-.312-.952-.64 0-.246.197-.395.558-.395.361 0 .689.148 1.05.411l.657-.87c-.409-.313-.968-.641-1.724-.641-1.115 0-1.871.641-1.871 1.544 0 .804.706 1.214 1.298 1.443.508.196 1.001.361 1.001.689 0 .246-.197.41-.641.41-.41 0-.821-.164-1.263-.509l-.657.952c.492.41 1.247.689 1.871.689 1.313 0 2.019-.689 2.019-1.592-.001-.9-.707-1.277-1.346-1.491zm-11.21 1.854c-.114 0-.262-.098-.262-.41V7.725H4.039c-.886 0-1.279.344-1.279 1.411 0 .706.099 1.101.099 1.707 0 .345-.213.706-.854.739v.853c.641.017.854.378.854.723 0 .606-.099.968-.099 1.674 0 1.067.394 1.411 1.264 1.411h.64v-.755h-.197c-.411 0-.542-.164-.542-.706 0-.541.049-1.001.049-1.607 0-.756-.245-1.05-.738-1.165v-.051c.493-.114.738-.409.738-1.165 0-.59-.049-1.066-.049-1.607 0-.542.114-.689.542-.689h.442v4.711c0 1.001.345 1.657 1.346 1.657.313 0 .559-.05.739-.115l-.165-1.066c-.098.013-.146.013-.196.013zm7.238-1.854c-.509-.196-.969-.312-.969-.64 0-.246.197-.395.558-.395.361 0 .689.148 1.051.411l.656-.87c-.41-.313-.968-.641-1.723-.641-1.116 0-1.872.641-1.872 1.544 0 .804.707 1.214 1.297 1.443.51.196 1.002.361 1.002.689 0 .246-.197.41-.641.41-.41 0-.82-.164-1.264-.509l-.64.952c.492.41 1.247.689 1.871.689 1.313 0 2.019-.689 2.019-1.592.001-.9-.705-1.277-1.345-1.491zm-4.842-2.15c-1.198 0-2.347 1.001-2.314 2.577 0 1.624 1.066 2.576 2.479 2.576.591 0 1.247-.214 1.756-.558l-.492-.87c-.36.213-.706.312-1.066.312-.657 0-1.165-.312-1.297-1.066h2.971c.017-.115.049-.345.049-.607.016-1.33-.707-2.364-2.086-2.364zm-.935 2.068c.099-.655.492-.969.951-.969.592 0 .821.411.821.969H8.094z\"}}]})(props);\n};\nexport function BiLogoLinkedinSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zM8.339 18.337H5.667v-8.59h2.672v8.59zM7.003 8.574a1.548 1.548 0 1 1 0-3.096 1.548 1.548 0 0 1 0 3.096zm11.335 9.763h-2.669V14.16c0-.996-.018-2.277-1.388-2.277-1.39 0-1.601 1.086-1.601 2.207v4.248h-2.667v-8.59h2.56v1.174h.037c.355-.675 1.227-1.387 2.524-1.387 2.704 0 3.203 1.778 3.203 4.092v4.71z\"}}]})(props);\n};\nexport function BiLogoLinkedin (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"4.983\",\"cy\":\"5.009\",\"r\":\"2.188\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M9.237 8.855v12.139h3.769v-6.003c0-1.584.298-3.118 2.262-3.118 1.937 0 1.961 1.811 1.961 3.218v5.904H21v-6.657c0-3.27-.704-5.783-4.526-5.783-1.835 0-3.065 1.007-3.568 1.96h-.051v-1.66H9.237zm-6.142 0H6.87v12.139H3.095z\"}}]})(props);\n};\nexport function BiLogoMagento (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m12 22.019-3.717-2.146V9.863l2.479-1.43v10.01l1.238.753 1.238-.753V8.434l2.479 1.43v10.01L12 22.019zm8.666-15.014v10.009l-2.475 1.43V8.434L12 4.861 5.807 8.434v10.01l-2.473-1.43V7.005L12 2l8.666 5.005z\"}}]})(props);\n};\nexport function BiLogoMailchimp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.279 11.506c.132-.016.257-.018.373 0 .066-.154.078-.419.019-.708-.09-.429-.211-.688-.461-.646-.251.04-.261.35-.17.779.05.24.14.446.239.575zm-2.149.339c.18.078.29.129.331.086.029-.028.021-.084-.022-.154a1.05 1.05 0 0 0-.464-.371 1.26 1.26 0 0 0-1.228.146c-.119.088-.232.209-.218.283.007.023.023.042.065.05.099.011.444-.164.843-.188.282-.02.513.068.693.148zm-.361.205c-.232.037-.361.113-.443.187-.071.062-.113.128-.113.177l.018.042.037.014c.053 0 .171-.046.171-.046.324-.115.539-.102.752-.078.117.014.172.02.198-.02.007-.012.018-.035-.007-.074-.056-.091-.291-.24-.613-.202zm1.784.756c.159.078.333.046.39-.069.059-.115-.024-.272-.183-.349-.158-.079-.333-.049-.39.066-.057.115.026.274.183.352zm1.018-.891c-.128-.002-.234.138-.238.316-.003.177.1.321.229.322.129.002.235-.139.238-.315s-.099-.32-.229-.323zm-8.644 3.183c-.032-.04-.085-.029-.136-.015-.036.007-.076.017-.119.016a.265.265 0 0 1-.221-.111c-.059-.09-.056-.225.01-.378l.03-.069c.104-.231.275-.619.082-.988a.88.88 0 0 0-.671-.488.861.861 0 0 0-.739.267c-.284.313-.327.741-.273.893.021.056.053.071.075.074.048.007.119-.029.164-.15l.014-.038c.02-.064.057-.184.118-.278a.518.518 0 0 1 .717-.15c.2.131.275.375.19.608-.044.121-.115.351-.1.54.032.383.27.537.48.556.206.007.35-.108.387-.193.021-.053.003-.084-.008-.096z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19.821 14.397c-.009-.029-.061-.216-.13-.44l-.144-.384c.281-.423.286-.799.249-1.013a1.284 1.284 0 0 0-.372-.724c-.222-.232-.677-.472-1.315-.651l-.335-.093c-.002-.015-.018-.79-.031-1.123-.011-.24-.031-.616-.148-.986-.14-.502-.381-.938-.684-1.221.835-.864 1.355-1.817 1.354-2.634-.003-1.571-1.933-2.049-4.312-1.063l-.503.214c-.002-.002-.911-.894-.924-.905-2.714-2.366-11.192 7.06-8.48 9.349l.593.501a2.916 2.916 0 0 0-.166 1.345c.065.631.389 1.234.915 1.701.5.442 1.159.724 1.796.723 1.055 2.432 3.465 3.922 6.291 4.007 3.032.09 5.576-1.333 6.644-3.889.069-.179.365-.987.365-1.7-.001-.718-.406-1.015-.663-1.014zM7.416 16.309a1.38 1.38 0 0 1-.28.021c-.916-.026-1.905-.85-2.003-1.827-.109-1.08.443-1.912 1.421-2.108.116-.025.258-.038.41-.031.548.032 1.354.452 1.539 1.645.164 1.055-.096 2.132-1.087 2.3zm-1.021-4.562a2.325 2.325 0 0 0-1.473.94c-.197-.164-.562-.48-.626-.604-.524-.994.571-2.928 1.337-4.02 1.889-2.698 4.851-4.739 6.223-4.371.222.064.96.921.96.921s-1.37.759-2.642 1.819c-1.711 1.32-3.006 3.236-3.779 5.315zm9.611 4.158a.05.05 0 0 0 .03-.054.05.05 0 0 0-.056-.045s-1.434.212-2.789-.283c.147-.479.541-.308 1.134-.259a8.287 8.287 0 0 0 2.735-.296c.613-.177 1.419-.524 2.045-1.018.212.465.286.975.286.975s.163-.029.3.055c.13.08.224.245.16.671-.133.798-.471 1.445-1.042 2.041a4.259 4.259 0 0 1-1.249.934 5.337 5.337 0 0 1-.814.346c-2.149.701-4.349-.07-5.058-1.727a2.761 2.761 0 0 1-.142-.392c-.302-1.092-.046-2.4.755-3.226v-.001c.051-.052.102-.113.102-.191 0-.064-.042-.133-.077-.183-.28-.406-1.253-1.099-1.057-2.44.139-.964.982-1.642 1.768-1.602l.2.012c.34.02.637.063.917.076.47.019.891-.049 1.391-.465.169-.142.304-.263.532-.301.024-.006.084-.025.203-.021a.681.681 0 0 1 .343.109c.4.266.457.912.479 1.385.012.269.045.922.055 1.108.026.428.139.489.365.563.129.044.248.074.423.125.529.147.845.3 1.043.493a.637.637 0 0 1 .188.372c.065.457-.353 1.021-1.455 1.533-1.206.559-2.669.701-3.679.588l-.354-.04c-.81-.108-1.269.936-.784 1.651.313.461 1.164.761 2.017.761 1.953.002 3.455-.832 4.015-1.554l.044-.063c.026-.042.005-.063-.03-.041-.455.312-2.483 1.552-4.651 1.18 0 0-.264-.044-.504-.138-.19-.072-.591-.258-.639-.668 1.747.543 2.85.031 2.85.03zm-2.773-.327zM9.886 8.053c.672-.776 1.499-1.452 2.241-1.83.025-.014.052.015.038.038a2.125 2.125 0 0 0-.208.508c-.006.027.023.049.046.032.462-.314 1.264-.651 1.968-.693a.03.03 0 0 1 .021.055 1.66 1.66 0 0 0-.31.311c-.014.02-.001.049.024.049.494.003 1.191.175 1.644.43.03.018.008.077-.025.069-.688-.157-1.811-.277-2.979.008-1.044.254-1.84.646-2.419 1.069-.03.02-.065-.019-.041-.046z\"}}]})(props);\n};\nexport function BiLogoMarkdown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.553 18.15H3.447a1.443 1.443 0 0 1-1.442-1.441V7.291c0-.795.647-1.441 1.442-1.441h17.105c.795 0 1.442.646 1.442 1.441v9.418a1.441 1.441 0 0 1-1.441 1.441zM6.811 15.268V11.52l1.922 2.402 1.922-2.402v3.748h1.922V8.732h-1.922l-1.922 2.403-1.922-2.403H4.889v6.535h1.922zM19.688 12h-1.922V8.732h-1.923V12h-1.922l2.884 3.364L19.688 12z\"}}]})(props);\n};\nexport function BiLogoMastercard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.454 17.021c.048.041.1.082.151.122a6.173 6.173 0 0 1-3.42 1.03A6.17 6.17 0 0 1 2.01 12a6.175 6.175 0 0 1 9.592-5.144c-.05.043-.1.082-.138.126A6.633 6.633 0 0 0 9.166 12c0 1.925.833 3.755 2.288 5.021zm4.361-11.195a6.14 6.14 0 0 0-3.416 1.03c.049.043.099.082.137.126 1.462 1.263 2.299 3.094 2.299 5.018s-.835 3.753-2.288 5.021c-.049.041-.101.082-.151.122a6.162 6.162 0 0 0 3.418 1.03 6.174 6.174 0 1 0 .001-12.347zM12 7.15A6.152 6.152 0 0 0 9.644 12 6.15 6.15 0 0 0 12 16.853 6.157 6.157 0 0 0 14.357 12 6.15 6.15 0 0 0 12 7.15z\"}}]})(props);\n};\nexport function BiLogoMastodon (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 17.24c2.5-.3 4.69-1.84 5-3.25a33.59 33.59 0 0 0 .4-5.42C21.33 4.23 18.48 3 18.48 3A17.64 17.64 0 0 0 12 2a17.64 17.64 0 0 0-6.48 1S2.68 4.23 2.68 8.57v3.44c.1 4.24.78 8.42 4.7 9.46A14.73 14.73 0 0 0 12 22a9.21 9.21 0 0 0 3.54-.81l-.07-1.64A11.41 11.41 0 0 1 12 20c-1.8-.06-3.71-.19-4-2.4a4.26 4.26 0 0 1 0-.63 22.68 22.68 0 0 0 4 .54 23.6 23.6 0 0 0 4-.27zm-6.54-9.8q-1.35 0-1.35 1.62v5.1H6V8.9a3.78 3.78 0 0 1 .82-2.56 2.85 2.85 0 0 1 2.23-1 2.68 2.68 0 0 1 2.4 1.23l.52.87.52-.87a2.68 2.68 0 0 1 2.4-1.23 2.85 2.85 0 0 1 2.23 1A3.78 3.78 0 0 1 18 8.9v5.26h-2.11v-5.1q0-1.62-1.35-1.62c-1 0-1.51.64-1.51 1.92v2.79H11V9.36c0-1.28-.54-1.92-1.54-1.92z\"}}]})(props);\n};\nexport function BiLogoMediumOld (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.957 6.73a.073.073 0 0 0-.019-.097c-.004-.004-.008-.008-.012-.01l-.006-.002-6.033-3.018a.729.729 0 0 0-.292-.067.692.692 0 0 0-.586.317l-3.474 5.646 4.359 7.083 6.063-9.852zm-1.064 13.543c.611.306 1.107.092 1.107-.478V8.483l-5.809 9.439 4.702 2.351zM9.622 8.213v6.426l5.711 2.855zm-7.068 9.558 5.19 2.595a.845.845 0 0 0 .374.098c.323 0 .549-.25.549-.669V6.701a.067.067 0 0 0-.035-.059L2.739 3.697a.669.669 0 0 0-.3-.079c-.258 0-.439.199-.439.534v12.723c0 .341.25.744.554.896z\"}}]})(props);\n};\nexport function BiLogoMediumSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zm-2.046 4.265-.966.925a.28.28 0 0 0-.106.271v6.801a.28.28 0 0 0 .106.271l.942.926v.204h-4.741v-.204l.977-.948c.097-.096.097-.125.097-.271V9.742l-2.716 6.896h-.368L8.018 9.742v4.622a.644.644 0 0 0 .176.531l1.271 1.541v.203H5.861v-.203l1.271-1.541a.618.618 0 0 0 .164-.531V9.02a.468.468 0 0 0-.152-.395l-1.13-1.36v-.203H9.52l2.71 5.943 2.382-5.943h3.343v.203z\"}}]})(props);\n};\nexport function BiLogoMedium (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4.285 7.269a.733.733 0 0 0-.24-.619l-1.77-2.133v-.32h5.498l4.25 9.32 3.736-9.32H21v.319l-1.515 1.451a.45.45 0 0 0-.168.425v10.666a.448.448 0 0 0 .168.425l1.479 1.451v.319h-7.436v-.319l1.529-1.487c.152-.15.152-.195.152-.424V8.401L10.95 19.218h-.575L5.417 8.401v7.249c-.041.305.06.612.275.833L7.684 18.9v.319H2.036V18.9l1.992-2.417a.971.971 0 0 0 .257-.833V7.269z\"}}]})(props);\n};\nexport function BiLogoMessenger (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 3c-4.92 0-8.91 3.729-8.91 8.332 0 2.616 1.291 4.952 3.311 6.479V21l3.041-1.687c.811.228 1.668.35 2.559.35 4.92 0 8.91-3.73 8.91-8.331C20.91 6.729 16.92 3 12 3zm.938 11.172-2.305-2.394-4.438 2.454 4.865-5.163 2.305 2.395 4.439-2.455-4.866 5.163z\"}}]})(props);\n};\nexport function BiLogoMeta (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.26 7.8a4.82 4.82 0 0 0-3.93-2.44 3.91 3.91 0 0 0-2.54 1.09 10.58 10.58 0 0 0-1.52 1.71 11 11 0 0 0-1.63-1.72 4.39 4.39 0 0 0-2.88-1.08A5 5 0 0 0 3.7 8 11.49 11.49 0 0 0 2 14a7 7 0 0 0 .18 1.64A4.44 4.44 0 0 0 2.71 17a3.23 3.23 0 0 0 3 1.6c1.25 0 2.19-.56 3.3-2a26.4 26.4 0 0 0 2.21-3.6l.63-1.12c.06-.09.11-.18.16-.27l.15.25 1.79 3A14.77 14.77 0 0 0 16 17.63a3.38 3.38 0 0 0 2.55 1 3 3 0 0 0 2.54-1.23 2.2 2.2 0 0 0 .18-.28 4.1 4.1 0 0 0 .31-.63l.12-.35A6.53 6.53 0 0 0 22 15a9 9 0 0 0 0-1 11.15 11.15 0 0 0-1.74-6.2zm-10.12 3.56c-.64 1-1.57 2.51-2.37 3.61-1 1.37-1.51 1.51-2.07 1.51a1.29 1.29 0 0 1-1.15-.66 3.3 3.3 0 0 1-.39-1.7A9.74 9.74 0 0 1 5.54 9a2.8 2.8 0 0 1 2.19-1.47A3 3 0 0 1 10 8.74a14.07 14.07 0 0 1 1 1.31zm8.42 5.12c-.48 0-.85-.19-1.38-.83A34.87 34.87 0 0 1 14.82 12l-.52-.86c-.36-.61-.71-1.16-1-1.65a2.46 2.46 0 0 1 .17-.27c.94-1.39 1.77-2.17 2.8-2.17a3.12 3.12 0 0 1 2.49 1.66 10.17 10.17 0 0 1 1.37 5.34c-.04 1.31-.34 2.43-1.57 2.43z\"}}]})(props);\n};\nexport function BiLogoMicrosoftTeams (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"20.288\",\"cy\":\"8.344\",\"r\":\"1.707\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M18.581 11.513h3.413v3.656c0 .942-.765 1.706-1.707 1.706h-1.706v-5.362zM2.006 4.2v15.6l11.213 1.979V2.221L2.006 4.2zm8.288 5.411-1.95.049v5.752H6.881V9.757l-1.949.098V8.539l5.362-.292v1.364zm3.899.439v8.288h1.95c.808 0 1.463-.655 1.463-1.462V10.05h-3.413zm1.463-4.875c-.586 0-1.105.264-1.463.673v2.555c.357.409.877.673 1.463.673a1.95 1.95 0 0 0 0-3.901z\"}}]})(props);\n};\nexport function BiLogoMicrosoft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.55 21H3v-8.55h8.55V21zM21 21h-8.55v-8.55H21V21zm-9.45-9.45H3V3h8.55v8.55zm9.45 0h-8.55V3H21v8.55z\"}}]})(props);\n};\nexport function BiLogoMongodb (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13.74 4.23c-.84-1-1.57-2-1.71-2.22H12c-.14.21-.87 1.22-1.71 2.22-7.2 9.19 1.14 15.39 1.14 15.39l.07.05c.06.95.22 2.33.22 2.33h.62s.15-1.37.21-2.33l.07-.06s8.32-6.19 1.12-15.38zM12 19.48a3.48 3.48 0 0 1-.48-.48L12 9l.45 10a3.57 3.57 0 0 1-.45.48z\"}}]})(props);\n};\nexport function BiLogoNetlify (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.13 9.68 22 11.8v-.11c-.07-.24-.28-.45-.7-.87l-2-2-2.07.87zM12.2 7.24a1.31 1.31 0 0 1 .16.47l3 1.29a1.11 1.11 0 0 1 .29-.14l.48-3-2-2-1.95 3.3s0 .05.02.08zM10.61 7a1.1 1.1 0 0 1 1-.2h.05l2.16-3.34-.66-.66c-.42-.42-.63-.63-.87-.7a1 1 0 0 0-.63 0c-.24.07-.45.28-.87.7l-3 3c.31.14 2.5 1.06 2.78 1.19zm-3.12 5.29h.27a1.45 1.45 0 0 1 .29 0l2.38-3.68v-.06a1 1 0 0 1-.27-.95L9 7l-1.7-.73L5 8.61l2.51 3.66zm7.62-2.44v-.08a.59.59 0 0 1 0-.14l-2.86-1.27h-.05a1.05 1.05 0 0 1-.88.47h-.17s-.05 0-.06.05L8.73 12.5v.05l6.33-2.7s.05.02.05 0zm1.36-.91a.83.83 0 0 1 .26.19l2-.84-1.89-1.87-.4 2.47zm-2.29 5.54A.91.91 0 0 1 15 14v-.05l.54-3.37-.09-.08L9 13.15a2.76 2.76 0 0 1 .08.27zM2 11.95zm12.14 3.18L8.92 14v.06L13.47 21l.42-.43c.15-.92.71-4.33.78-4.72a.9.9 0 0 1-.53-.72zm1.65.32a.88.88 0 0 1-.36.27l-.64 3.94L18.43 16zm1.07-5.13a.07.07 0 0 0-.06 0 .92.92 0 0 1-.61.34v.06l-.55 3.4a.88.88 0 0 1 .34.62h.06l2.95.61 2.28-2.28a4.22 4.22 0 0 0 .65-.74zM8.3 14.59a1.27 1.27 0 0 1-.86 0l-1.22 1.9 4.69 4.68a2.68 2.68 0 0 0 .87.71 1 1 0 0 0 .63 0 1.86 1.86 0 0 0 .7-.54l-4.69-6.8zm4.71 6.82zm-6.62-7.82s.06 0 .06-.05 0 0-.06 0l-4.14-.86a7.07 7.07 0 0 0 .51.54l1.36 1.36 2.27-1zm.28-.66a1.05 1.05 0 0 1 .2-.27v-.06C6.1 11.4 5.3 10.24 4.5 9.07l-1.75 1.75c-.42.42-.63.63-.7.87A.75.75 0 0 0 2 12l4.67 1zm.17 1.33a.61.61 0 0 1-.07-.1L4.59 15l1.08 1.1 1.17-1.82s.01-.02 0-.02z\"}}]})(props);\n};\nexport function BiLogoNodejs (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 21.985c-.275 0-.532-.074-.772-.202l-2.439-1.448c-.365-.203-.182-.277-.072-.314.496-.165.588-.201 1.101-.493.056-.037.129-.02.185.017l1.87 1.12c.074.036.166.036.221 0l7.319-4.237c.074-.036.11-.11.11-.202V7.768c0-.091-.036-.165-.11-.201l-7.319-4.219c-.073-.037-.165-.037-.221 0L4.552 7.566c-.073.036-.11.129-.11.201v8.457c0 .073.037.166.11.202l2 1.157c1.082.548 1.762-.095 1.762-.735V8.502c0-.11.091-.221.22-.221h.936c.108 0 .22.092.22.221v8.347c0 1.449-.788 2.294-2.164 2.294-.422 0-.752 0-1.688-.46l-1.925-1.099a1.55 1.55 0 0 1-.771-1.34V7.786c0-.55.293-1.064.771-1.339l7.316-4.237a1.637 1.637 0 0 1 1.544 0l7.317 4.237c.479.274.771.789.771 1.339v8.458c0 .549-.293 1.063-.771 1.34l-7.317 4.236c-.241.11-.516.165-.773.165zm2.256-5.816c-3.21 0-3.87-1.468-3.87-2.714 0-.11.092-.221.22-.221h.954c.11 0 .201.073.201.184.147.971.568 1.449 2.514 1.449 1.54 0 2.202-.35 2.202-1.175 0-.477-.185-.825-2.587-1.063-1.999-.2-3.246-.643-3.246-2.238 0-1.485 1.247-2.366 3.339-2.366 2.347 0 3.503.809 3.649 2.568a.297.297 0 0 1-.056.165c-.037.036-.091.073-.146.073h-.953a.212.212 0 0 1-.202-.164c-.221-1.012-.789-1.34-2.292-1.34-1.689 0-1.891.587-1.891 1.027 0 .531.237.696 2.514.99 2.256.293 3.32.715 3.32 2.294-.02 1.615-1.339 2.531-3.67 2.531z\"}}]})(props);\n};\nexport function BiLogoOkRu (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.986 12.341c-2.825 0-5.173-2.346-5.173-5.122C6.813 4.347 9.161 2 11.987 2c2.922 0 5.173 2.346 5.173 5.219a5.142 5.142 0 0 1-5.157 5.123l-.017-.001zm0-7.324c-1.196 0-2.106 1.005-2.106 2.203 0 1.196.91 2.106 2.107 2.106 1.245 0 2.107-.91 2.107-2.106.001-1.199-.862-2.203-2.108-2.203zm2.06 11.586 2.923 2.825c.575.621.575 1.531 0 2.106-.622.621-1.581.621-2.06 0l-2.922-2.873-2.826 2.873c-.287.287-.671.43-1.103.43-.335 0-.718-.144-1.054-.43-.575-.575-.575-1.485 0-2.107l2.97-2.825a13.49 13.49 0 0 1-3.063-1.339c-.719-.383-.862-1.34-.479-2.059.479-.718 1.341-.909 2.108-.43a6.62 6.62 0 0 0 6.897 0c.767-.479 1.676-.288 2.107.43.432.719.239 1.675-.432 2.059-.909.575-1.963 1.006-3.065 1.341l-.001-.001z\"}}]})(props);\n};\nexport function BiLogoOpera (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8.71 6.366C7.604 7.67 6.888 9.602 6.838 11.765v.471c.05 2.165.766 4.094 1.872 5.397 1.434 1.865 3.564 3.046 5.948 3.046a7.218 7.218 0 0 0 4.006-1.225 9.943 9.943 0 0 1-7.139 2.533A9.995 9.995 0 0 1 2 12C2 6.477 6.478 2 12 2h.038a9.971 9.971 0 0 1 6.627 2.545c-1.173-.773-2.543-1.225-4.009-1.225-2.382 0-4.514 1.184-5.95 3.046h.004zM22 12a9.971 9.971 0 0 1-3.335 7.455c-2.564 1.25-4.954.375-5.747-.172 2.52-.553 4.422-3.6 4.422-7.283 0-3.686-1.901-6.73-4.422-7.283.792-.545 3.183-1.42 5.747-.172A9.971 9.971 0 0 1 22 12z\"}}]})(props);\n};\nexport function BiLogoPatreon (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"14.508\",\"cy\":\"9.831\",\"r\":\"6.496\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M2.996 3.335H6.17v17.33H2.996z\"}}]})(props);\n};\nexport function BiLogoPaypal (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.554 9.488c.121.563.106 1.246-.04 2.051-.582 2.978-2.477 4.466-5.683 4.466h-.442a.666.666 0 0 0-.444.166.72.72 0 0 0-.239.427l-.041.189-.553 3.479-.021.151a.706.706 0 0 1-.247.426.666.666 0 0 1-.447.166H8.874a.395.395 0 0 1-.331-.15.457.457 0 0 1-.09-.363c.061-.373.148-.938.267-1.689.117-.75.206-1.314.267-1.689s.15-.938.272-1.685c.121-.748.212-1.31.271-1.685.033-.248.179-.371.433-.371h1.316c.893.013 1.682-.057 2.375-.211 1.172-.262 2.134-.744 2.886-1.449.685-.637 1.203-1.462 1.56-2.473.162-.47.277-.917.352-1.338.006-.041.014-.066.025-.074.008-.011.022-.014.035-.011a.378.378 0 0 1 .062.035c.524.398.854.941.98 1.632zm-1.728-2.836c0 .717-.154 1.508-.465 2.374-.537 1.562-1.547 2.618-3.037 3.168-.758.269-1.602.408-2.535.425 0 .006-.301.007-.904.007l-.903-.007c-.672 0-1.067.32-1.187.964-.013.053-.298 1.83-.855 5.329-.008.066-.048.102-.121.102H4.854a.473.473 0 0 1-.369-.165.469.469 0 0 1-.115-.39L6.702 3.664a.784.784 0 0 1 .276-.483.785.785 0 0 1 .519-.19h6.014c.228 0 .555.044.979.131.428.084.801.194 1.123.321.718.274 1.266.688 1.645 1.237.379.552.568 1.207.568 1.972z\"}}]})(props);\n};\nexport function BiLogoPeriscope (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.102 21c1.406 0 6.985-6.329 6.985-10.571C19.087 6.368 15.915 3 12.102 3c-4.017 0-7.188 3.366-7.188 7.429C4.913 14.67 10.492 21 12.102 21zM10.979 5.885a4.696 4.696 0 0 1 1.143-.139c2.25 0 4.186 1.913 4.186 4.398 0 2.238-1.936 4.151-4.196 4.151-2.509 0-4.444-1.913-4.444-4.151 0-1.047.338-1.98.922-2.723v.022c0 .934.755 1.676 1.688 1.676.933.002 1.722-.764 1.722-1.697a1.68 1.68 0 0 0-1.02-1.54l-.001.003z\"}}]})(props);\n};\nexport function BiLogoPhp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2.15 16.78h1.57a.14.14 0 0 0 .14-.12l.35-1.82h1.22a4.88 4.88 0 0 0 1.51-.2A2.79 2.79 0 0 0 8 14a3.18 3.18 0 0 0 .67-.85 3.43 3.43 0 0 0 .36-1 2.43 2.43 0 0 0-.41-2.16 2.64 2.64 0 0 0-2.09-.78h-3a.16.16 0 0 0-.15.13L2 16.6a.19.19 0 0 0 0 .13.17.17 0 0 0 .15.05zM5 10.62h1a1.45 1.45 0 0 1 1.08.29c.17.18.2.52.11 1a1.81 1.81 0 0 1-.57 1.12 2.17 2.17 0 0 1-1.33.33h-.8zm9.8-.95a2.7 2.7 0 0 0-1.88-.51h-1.19l.33-1.76a.15.15 0 0 0 0-.13.16.16 0 0 0-.11 0h-1.57a.14.14 0 0 0-.14.12l-1.38 7.27a.13.13 0 0 0 0 .12.13.13 0 0 0 .11.06h1.54a.14.14 0 0 0 .14-.13l.77-4.07h1.11c.45 0 .61.1.66.16a.81.81 0 0 1 0 .62l-.61 3.24a.13.13 0 0 0 0 .12.14.14 0 0 0 .11.06h1.56a.16.16 0 0 0 .15-.13l.64-3.4a1.7 1.7 0 0 0-.24-1.64zm4.52-.51h-3.13a.14.14 0 0 0-.15.13l-1.46 7.31a.16.16 0 0 0 0 .13.14.14 0 0 0 .11.05h1.63a.14.14 0 0 0 .15-.12l.37-1.82h1.27a5.28 5.28 0 0 0 1.56-.2 3 3 0 0 0 1.18-.64 3.31 3.31 0 0 0 .7-.85 3.45 3.45 0 0 0 .37-1 2.38 2.38 0 0 0-.42-2.16 2.81 2.81 0 0 0-2.18-.83zm.62 2.77a1.83 1.83 0 0 1-.6 1.12 2.28 2.28 0 0 1-1.37.33h-.8l.54-2.76h1a1.6 1.6 0 0 1 1.13.29c.16.18.16.52.1 1.02z\"}}]})(props);\n};\nexport function BiLogoPinterestAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5.077 9.457c0-.778.136-1.513.404-2.199a5.63 5.63 0 0 1 1.121-1.802 7.614 7.614 0 0 1 1.644-1.329 7.513 7.513 0 0 1 2.002-.844 8.57 8.57 0 0 1 2.185-.281c1.139 0 2.199.241 3.182.721a6.021 6.021 0 0 1 2.391 2.094c.614.915.919 1.95.919 3.104 0 .692-.068 1.369-.207 2.031a8.28 8.28 0 0 1-.646 1.913 6.605 6.605 0 0 1-1.082 1.617 4.723 4.723 0 0 1-1.568 1.114 4.962 4.962 0 0 1-2.045.417c-.489 0-.977-.115-1.459-.346-.482-.23-.828-.546-1.036-.951-.073.281-.173.687-.306 1.218-.128.53-.214.872-.252 1.027-.04.154-.114.411-.222.767a5.183 5.183 0 0 1-.281.769l-.344.674a7.98 7.98 0 0 1-.498.838c-.181.262-.405.575-.672.935l-.149.053-.099-.108c-.107-1.133-.162-1.811-.162-2.035 0-.663.079-1.407.235-2.233.153-.825.395-1.862.72-3.109.325-1.246.511-1.979.561-2.196-.229-.467-.345-1.077-.345-1.827 0-.599.187-1.16.562-1.688.376-.526.851-.789 1.427-.789.441 0 .783.146 1.028.439.246.292.366.66.366 1.109 0 .476-.158 1.165-.476 2.066-.318.902-.476 1.575-.476 2.022 0 .453.162.832.486 1.129a1.68 1.68 0 0 0 1.179.449c.396 0 .763-.09 1.104-.271a2.46 2.46 0 0 0 .849-.733 6.123 6.123 0 0 0 1.017-2.225c.096-.422.17-.823.216-1.2.049-.379.07-.737.07-1.077 0-1.247-.396-2.219-1.183-2.915-.791-.696-1.821-1.042-3.088-1.042-1.441 0-2.646.466-3.611 1.401-.966.932-1.452 2.117-1.452 3.554 0 .317.048.623.139.919.089.295.186.53.291.704.104.171.202.338.291.492.09.154.137.264.137.33 0 .202-.053.465-.16.79-.111.325-.242.487-.4.487-.015 0-.077-.011-.185-.034a2.21 2.21 0 0 1-.979-.605 3.17 3.17 0 0 1-.659-1.022 6.986 6.986 0 0 1-.352-1.169 4.884 4.884 0 0 1-.132-1.153z\"}}]})(props);\n};\nexport function BiLogoPinterest (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.99 2C6.472 2 2 6.473 2 11.99c0 4.232 2.633 7.85 6.35 9.306-.088-.79-.166-2.006.034-2.868.182-.78 1.172-4.966 1.172-4.966s-.299-.599-.299-1.484c0-1.388.805-2.425 1.808-2.425.853 0 1.264.64 1.264 1.407 0 .858-.546 2.139-.827 3.327-.235.994.499 1.805 1.479 1.805 1.775 0 3.141-1.872 3.141-4.575 0-2.392-1.719-4.064-4.173-4.064-2.843 0-4.512 2.132-4.512 4.335 0 .858.331 1.779.744 2.28a.3.3 0 0 1 .069.286c-.076.315-.245.994-.277 1.133-.044.183-.145.222-.335.134-1.247-.581-2.027-2.405-2.027-3.871 0-3.151 2.289-6.045 6.601-6.045 3.466 0 6.159 2.469 6.159 5.77 0 3.444-2.171 6.213-5.184 6.213-1.013 0-1.964-.525-2.29-1.146l-.623 2.374c-.225.868-.834 1.956-1.241 2.62a10 10 0 0 0 2.958.445c5.517 0 9.99-4.473 9.99-9.99S17.507 2 11.99 2\"}}]})(props);\n};\nexport function BiLogoPlayStore (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m12.954 11.616 2.957-2.957L6.36 3.291c-.633-.342-1.226-.39-1.746-.016l8.34 8.341zm3.461 3.462 3.074-1.729c.6-.336.929-.812.929-1.34 0-.527-.329-1.004-.928-1.34l-2.783-1.563-3.133 3.132 2.841 2.84zM4.1 4.002c-.064.197-.1.417-.1.658v14.705c0 .381.084.709.236.97l8.097-8.098L4.1 4.002zm8.854 8.855L4.902 20.91c.154.059.32.09.495.09.312 0 .637-.092.968-.276l9.255-5.197-2.666-2.67z\"}}]})(props);\n};\nexport function BiLogoPocket (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.327 3.983H4.746c-.947 0-1.736.726-1.736 1.673v5.396c0 4.892 4.04 8.964 9.026 8.964 4.955 0 8.964-4.072 8.964-8.964V5.656c0-.947-.758-1.673-1.673-1.673zm-2.178 6.691-4.293 4.04c-.221.253-.567.348-.82.348-.315 0-.631-.095-.884-.348l-4.229-4.04c-.441-.473-.504-1.262 0-1.768.475-.441 1.263-.504 1.736 0l3.377 3.251 3.44-3.251c.441-.504 1.23-.441 1.673 0 .442.506.442 1.295 0 1.768z\"}}]})(props);\n};\nexport function BiLogoPostgresql (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10.74 12.89v-.11c.06-.15.12-.29.19-.43a5.15 5.15 0 0 0 .26-3.74.86.86 0 0 0-.66-.74 3.12 3.12 0 0 0-2.08.61v.18a11.34 11.34 0 0 1-.06 2.41 2.37 2.37 0 0 0 .62 2 2 2 0 0 0 1.43.63 8.05 8.05 0 0 1 .3-.81zM10 8.58a.36.36 0 0 1-.09-.23.19.19 0 0 1 .09-.12.74.74 0 0 1 .48-.07c.25 0 .5.16.48.34a.51.51 0 0 1-.49.33h-.06a.63.63 0 0 1-.41-.25z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7.88 11a12.58 12.58 0 0 0 .06-2.3v-.28a7 7 0 0 1 1.54-4.55c-1-.32-3.4-1-4.87.1-.9.64-1.32 1.84-1.23 3.55a24.85 24.85 0 0 0 1 4.4c.68 2.22 1.45 3.62 2.11 3.85.1 0 .41.13.86-.41.64-.76 1.23-1.41 1.5-1.7l-.19-.19A2.89 2.89 0 0 1 7.88 11zm3.5 3.4c-.16-.06-.24-.1-.42.11a2.52 2.52 0 0 0-.29.35c-.35.43-.5.58-1.51.79a2 2 0 0 0-.4.11 1 1 0 0 0 .37.16 2.21 2.21 0 0 0 2.5-.8.41.41 0 0 0 0-.35.59.59 0 0 0-.25-.37zm6.29-5.82a5.29 5.29 0 0 0 .08-.79c-.66-.08-1.42-.07-1.72.36-.58.83.56 2.88 1 3.75a4.34 4.34 0 0 1 .26.48 1.79 1.79 0 0 0 .15.31 3.72 3.72 0 0 0 .16-2.13 7.51 7.51 0 0 1-.07-1.05 6 6 0 0 1 .14-.93zm-.56-.16a.6.6 0 0 1-.32.17h-.06a.47.47 0 0 1-.44-.3c0-.14.2-.24.44-.28s.48 0 .5.15a.38.38 0 0 1-.12.26z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M17 4.88a6.06 6.06 0 0 1 1.37 2.57.71.71 0 0 1 0 .15 5.67 5.67 0 0 1-.09 1.06 7.11 7.11 0 0 0-.09.86 6.61 6.61 0 0 0 .07 1 4 4 0 0 1-.36 2.71l.07.08c2.22-3.49 3-7.54 2.29-8.43a4.77 4.77 0 0 0-3.81-1.8 7.34 7.34 0 0 0-1.63.16A6.17 6.17 0 0 1 17 4.88z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M21.65 14c-.07-.2-.37-.85-1.47-.62a6.28 6.28 0 0 1-1 .13 19.74 19.74 0 0 0 2.06-4.88c.37-1.45.66-3.39-.11-4.38A5.91 5.91 0 0 0 16.37 2a8.44 8.44 0 0 0-2.46.35 9.38 9.38 0 0 0-1.45-.14 4.8 4.8 0 0 0-2.46.62 12.22 12.22 0 0 0-1.77-.44A5.44 5.44 0 0 0 4 3.05c-1.24.87-1.81 2.39-1.71 4.52a26.28 26.28 0 0 0 1 4.67A15.76 15.76 0 0 0 4.4 15a3.39 3.39 0 0 0 1.75 1.83 1.71 1.71 0 0 0 1.69-.37 2 2 0 0 0 1 .59 3.65 3.65 0 0 0 2.35-.14v.81a8.46 8.46 0 0 0 .31 2.36 1 1 0 0 1 0 .13 3 3 0 0 0 .71 1.24 2.08 2.08 0 0 0 1.49.56 3 3 0 0 0 .7-.08 3.27 3.27 0 0 0 2.21-1.27 7.34 7.34 0 0 0 .91-4v-.26h.17a5.24 5.24 0 0 0 2.4-.4c.45-.23 1.91-1 1.56-2zm-1.81 1.47a4.7 4.7 0 0 1-1.8.34 2.62 2.62 0 0 1-.79-.1c-.1.94-.32 2.69-.45 3.42a2.47 2.47 0 0 1-2.25 2.3 3.23 3.23 0 0 1-.66.07A2 2 0 0 1 12 20a16.77 16.77 0 0 1-.28-4.06 2.56 2.56 0 0 1-1.78.66 3.94 3.94 0 0 1-.94-.13c-.09 0-.87-.23-.86-.73s.66-.59.9-.64c.86-.18.92-.25 1.19-.59a2.79 2.79 0 0 1 .19-.24 2.56 2.56 0 0 1-1.11-.3c-.23.25-.86.93-1.54 1.74a1.43 1.43 0 0 1-1.11.63 1.23 1.23 0 0 1-.35 0C5.43 16 4.6 14.55 3.84 12a25.21 25.21 0 0 1-1-4.53c-.1-1.92.4-3.28 1.47-4 1.92-1.36 5-.31 5.7-.06a4 4 0 0 1 2.41-.66 5.58 5.58 0 0 1 1.4.18 7.51 7.51 0 0 1 2.5-.4 5.35 5.35 0 0 1 4.32 2c.69.88.23 3 0 3.89a18.84 18.84 0 0 1-2.41 5.41c.16.11.65.31 2 0 .46-.1.73 0 .82.25.22.55-.7 1.13-1.21 1.37z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M17.43 13.59a4 4 0 0 1-.62-1c0-.07-.12-.24-.23-.43-.58-1-1.79-3.22-1-4.34a2.16 2.16 0 0 1 2.12-.61 6.28 6.28 0 0 0-1.13-1.94 5.41 5.41 0 0 0-4.13-2 3.34 3.34 0 0 0-2.55.95A5.82 5.82 0 0 0 8.51 7.8l.15-.08A3.7 3.7 0 0 1 10 7.3a1.45 1.45 0 0 1 1.76 1.19 5.73 5.73 0 0 1-.29 4.09 3.29 3.29 0 0 0-.17.39v.11c-.1.27-.19.52-.25.73a.94.94 0 0 1 .57.07 1.16 1.16 0 0 1 .62.74v.16a.28.28 0 0 1 0 .09 22.22 22.22 0 0 0 .22 4.9 1.5 1.5 0 0 0 2 1.09A1.92 1.92 0 0 0 16.25 19c.15-.88.45-3.35.49-3.88 0-1.06.52-1.27.84-1.36z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m18 14.33-.08-.06h-.12c-.26.07-.5.14-.47.8a1.9 1.9 0 0 0 .93.12 4.29 4.29 0 0 0 1.38-.29 3 3 0 0 0 .79-.52 3.47 3.47 0 0 1-2.43-.05z\"}}]})(props);\n};\nexport function BiLogoProductHunt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13.337 9h-2.838v3h2.838a1.501 1.501 0 1 0 0-3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm1.337 12h-2.838v3H8.501V7h4.837a3.498 3.498 0 0 1 3.499 3.499 3.499 3.499 0 0 1-3.5 3.501z\"}}]})(props);\n};\nexport function BiLogoPython (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9.585 11.692h4.328s2.432.039 2.432-2.35V5.391S16.714 3 11.936 3C7.362 3 7.647 4.983 7.647 4.983l.006 2.055h4.363v.617H5.92s-2.927-.332-2.927 4.282 2.555 4.45 2.555 4.45h1.524v-2.141s-.083-2.554 2.513-2.554zm-.056-5.74a.784.784 0 1 1 0-1.57.784.784 0 1 1 0 1.57z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M18.452 7.532h-1.524v2.141s.083 2.554-2.513 2.554h-4.328s-2.432-.04-2.432 2.35v3.951s-.369 2.391 4.409 2.391c4.573 0 4.288-1.983 4.288-1.983l-.006-2.054h-4.363v-.617h6.097s2.927.332 2.927-4.282-2.555-4.451-2.555-4.451zm-3.981 10.436a.784.784 0 1 1 0 1.57.784.784 0 1 1 0-1.57z\"}}]})(props);\n};\nexport function BiLogoQuora (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.555 17.025c-.624-1.227-1.354-2.465-2.781-2.465-.271 0-.546.046-.795.157l-.484-.967c.59-.509 1.544-.911 2.77-.911 1.908 0 2.889.922 3.667 2.094.459-1.001.678-2.354.678-4.03 0-4.188-1.308-6.336-4.366-6.336-3.014 0-4.318 2.148-4.318 6.336 0 4.164 1.305 6.291 4.318 6.291.478 0 .913-.051 1.311-.169zm.747 1.461a7.977 7.977 0 0 1-2.059.274c-4.014 0-7.941-3.202-7.941-7.858C3.303 6.203 7.229 3 11.243 3c4.081 0 7.972 3.179 7.972 7.903 0 2.628-1.226 4.763-3.007 6.143.572.861 1.157 1.436 1.988 1.436.899 0 1.261-.687 1.328-1.236h1.167c.07.73-.301 3.754-3.574 3.754-1.989 0-3.035-1.146-3.822-2.496l.007-.018z\"}}]})(props);\n};\nexport function BiLogoReact (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"11.245\",\"r\":\"1.785\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m7.002 14.794-.395-.101c-2.934-.741-4.617-2.001-4.617-3.452 0-1.452 1.684-2.711 4.617-3.452l.395-.1.111.391a19.507 19.507 0 0 0 1.136 2.983l.085.178-.085.178c-.46.963-.841 1.961-1.136 2.985l-.111.39zm-.577-6.095c-2.229.628-3.598 1.586-3.598 2.542 0 .954 1.368 1.913 3.598 2.54.273-.868.603-1.717.985-2.54a20.356 20.356 0 0 1-.985-2.542zm10.572 6.095-.11-.392a19.628 19.628 0 0 0-1.137-2.984l-.085-.177.085-.179c.46-.961.839-1.96 1.137-2.984l.11-.39.395.1c2.935.741 4.617 2 4.617 3.453 0 1.452-1.683 2.711-4.617 3.452l-.395.101zm-.41-3.553c.4.866.733 1.718.987 2.54 2.23-.627 3.599-1.586 3.599-2.54 0-.956-1.368-1.913-3.599-2.542a20.683 20.683 0 0 1-.987 2.542z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m6.419 8.695-.11-.39c-.826-2.908-.576-4.991.687-5.717 1.235-.715 3.222.13 5.303 2.265l.284.292-.284.291a19.718 19.718 0 0 0-2.02 2.474l-.113.162-.196.016a19.646 19.646 0 0 0-3.157.509l-.394.098zm1.582-5.529c-.224 0-.422.049-.589.145-.828.477-.974 2.138-.404 4.38.891-.197 1.79-.338 2.696-.417a21.058 21.058 0 0 1 1.713-2.123c-1.303-1.267-2.533-1.985-3.416-1.985zm7.997 16.984c-1.188 0-2.714-.896-4.298-2.522l-.283-.291.283-.29a19.827 19.827 0 0 0 2.021-2.477l.112-.16.194-.019a19.473 19.473 0 0 0 3.158-.507l.395-.1.111.391c.822 2.906.573 4.992-.688 5.718a1.978 1.978 0 0 1-1.005.257zm-3.415-2.82c1.302 1.267 2.533 1.986 3.415 1.986.225 0 .423-.05.589-.145.829-.478.976-2.142.404-4.384-.89.198-1.79.34-2.698.419a20.526 20.526 0 0 1-1.71 2.124z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"m17.58 8.695-.395-.099a19.477 19.477 0 0 0-3.158-.509l-.194-.017-.112-.162A19.551 19.551 0 0 0 11.7 5.434l-.283-.291.283-.29c2.08-2.134 4.066-2.979 5.303-2.265 1.262.727 1.513 2.81.688 5.717l-.111.39zm-3.287-1.421c.954.085 1.858.228 2.698.417.571-2.242.425-3.903-.404-4.381-.824-.477-2.375.253-4.004 1.841.616.67 1.188 1.378 1.71 2.123zM8.001 20.15a1.983 1.983 0 0 1-1.005-.257c-1.263-.726-1.513-2.811-.688-5.718l.108-.391.395.1c.964.243 2.026.414 3.158.507l.194.019.113.16c.604.878 1.28 1.707 2.02 2.477l.284.29-.284.291c-1.583 1.627-3.109 2.522-4.295 2.522zm-.993-5.362c-.57 2.242-.424 3.906.404 4.384.825.47 2.371-.255 4.005-1.842a21.17 21.17 0 0 1-1.713-2.123 20.692 20.692 0 0 1-2.696-.419z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 15.313c-.687 0-1.392-.029-2.1-.088l-.196-.017-.113-.162a25.697 25.697 0 0 1-1.126-1.769 26.028 26.028 0 0 1-.971-1.859l-.084-.177.084-.179c.299-.632.622-1.252.971-1.858.347-.596.726-1.192 1.126-1.77l.113-.16.196-.018a25.148 25.148 0 0 1 4.198 0l.194.019.113.16a25.136 25.136 0 0 1 2.1 3.628l.083.179-.083.177a24.742 24.742 0 0 1-2.1 3.628l-.113.162-.194.017c-.706.057-1.412.087-2.098.087zm-1.834-.904c1.235.093 2.433.093 3.667 0a24.469 24.469 0 0 0 1.832-3.168 23.916 23.916 0 0 0-1.832-3.168 23.877 23.877 0 0 0-3.667 0 23.743 23.743 0 0 0-1.832 3.168 24.82 24.82 0 0 0 1.832 3.168z\"}}]})(props);\n};\nexport function BiLogoRedbubble (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.002 2.005 12 2.004c-5.52 0-9.996 4.475-9.996 9.995 0 5.521 4.477 9.998 9.996 9.998 5.521 0 9.996-4.475 9.996-9.997 0-5.52-4.475-9.995-9.994-9.995zm.162 13.53a.267.267 0 0 1-.174.066v.001H6.455a.268.268 0 0 1-.266-.268V8.646c0-.148.119-.268.266-.268h2.589c1.612 0 2.576.87 2.576 2.327 0 .969-.486 1.729-1.272 2.039l1.842 2.413a.269.269 0 0 1-.026.378zm3.695.068h-2.665a.268.268 0 0 1-.266-.269V8.646c0-.148.119-.267.266-.267h2.472c1.853 0 2.242 1.091 2.242 2.007 0 .529-.141.949-.421 1.258.681.28 1.047.913 1.047 1.827 0 1.335-1.001 2.132-2.675 2.132z\"}}]})(props);\n};\nexport function BiLogoReddit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"9.67\",\"cy\":\"13\",\"r\":\"1.001\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14.09 15.391A3.28 3.28 0 0 1 12 16a3.271 3.271 0 0 1-2.081-.63.27.27 0 0 0-.379.38c.71.535 1.582.809 2.471.77a3.811 3.811 0 0 0 2.469-.77v.04a.284.284 0 0 0 .006-.396.28.28 0 0 0-.396-.003zm.209-3.351a1 1 0 0 0 0 2l-.008.039c.016.002.033 0 .051 0a1 1 0 0 0 .958-1.038 1 1 0 0 0-1.001-1.001z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.479 2 2 6.477 2 12c0 5.521 4.479 10 10 10s10-4.479 10-10c0-5.523-4.479-10-10-10zm5.859 11.33c.012.146.012.293 0 .439 0 2.24-2.609 4.062-5.83 4.062s-5.83-1.82-5.83-4.062a2.681 2.681 0 0 1 0-.439 1.46 1.46 0 0 1-.455-2.327 1.458 1.458 0 0 1 2.063-.063 7.145 7.145 0 0 1 3.899-1.23l.743-3.47v-.004A.313.313 0 0 1 12.82 6l2.449.49a1.001 1.001 0 1 1-.131.61L13 6.65l-.649 3.12a7.123 7.123 0 0 1 3.85 1.23 1.46 1.46 0 0 1 2.469 1c.01.563-.307 1.08-.811 1.33z\"}}]})(props);\n};\nexport function BiLogoRedux (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.661 15.549a1.315 1.315 0 0 0 1.185-1.386 1.363 1.363 0 0 0-1.35-1.302h-.048a1.352 1.352 0 0 0-1.303 1.397c.024.379.179.687.391.911-.827 1.609-2.07 2.794-3.954 3.788-1.266.663-2.604.912-3.905.734-1.089-.153-1.94-.64-2.463-1.421-.78-1.185-.852-2.462-.201-3.74a5.597 5.597 0 0 1 1.658-1.931 7.88 7.88 0 0 1-.331-1.218c-3.506 2.51-3.148 5.942-2.084 7.564.794 1.184 2.415 1.941 4.19 1.941.474 0 .972-.035 1.457-.154 3.077-.592 5.409-2.438 6.747-5.16l.011-.023z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19.887 12.589c-1.834-2.154-4.533-3.337-7.611-3.337h-.403c-.2-.438-.661-.711-1.183-.711h-.036c-.744 0-1.325.64-1.301 1.385.023.71.627 1.302 1.35 1.302h.059a1.332 1.332 0 0 0 1.183-.828h.439c1.824 0 3.551.532 5.126 1.574 1.206.792 2.072 1.834 2.557 3.077.425 1.019.402 2.013-.035 2.843-.675 1.302-1.812 1.988-3.314 1.988-.947 0-1.871-.296-2.345-.509-.283.235-.758.626-1.102.863 1.042.473 2.096.746 3.113.746 2.309 0 4.023-1.302 4.676-2.557.709-1.422.651-3.813-1.161-5.859l-.012.023z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7.647 15.975c.023.71.626 1.302 1.35 1.302h.048a1.334 1.334 0 0 0 1.302-1.397c0-.71-.616-1.301-1.338-1.301h-.048c-.048 0-.118 0-.178.022-.982-1.657-1.397-3.434-1.242-5.349.094-1.445.567-2.7 1.42-3.742.71-.888 2.048-1.326 2.96-1.35 2.556-.048 3.622 3.138 3.704 4.404l1.184.354C16.536 5.036 14.122 3 11.813 3 9.647 3 7.647 4.574 6.842 6.884c-1.102 3.077-.379 6.036.971 8.404-.118.154-.189.426-.166.687z\"}}]})(props);\n};\nexport function BiLogoSass (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2c5.522 0 10 4.478 10 10s-4.478 10-10 10S2 17.522 2 12 6.478 2 12 2zm-1.987 13.332c.146.537.13 1.039-.021 1.493l-.054.15a2.803 2.803 0 0 1-.527.821c-.582.633-1.394.872-1.742.671-.375-.219-.188-1.112.487-1.825.726-.765 1.766-1.258 1.766-1.258v-.002l.091-.05zm8.258-9.051c-.452-1.777-3.397-2.362-6.185-1.371-1.656.589-3.453 1.515-4.743 2.723-1.536 1.434-1.78 2.684-1.68 3.206.355 1.843 2.881 3.048 3.92 3.942v.005c-.307.149-2.548 1.274-3.072 2.438-.563 1.225.088 2.101.513 2.212 1.313.363 2.662-.3 3.388-1.374.699-1.051.638-2.4.337-3.063.413-.112.899-.162 1.524-.086 1.751.199 2.101 1.3 2.024 1.75-.074.449-.436.711-.561.786-.126.076-.163.101-.151.151.013.074.076.074.175.063.138-.025.914-.375.951-1.227.037-1.074-.988-2.273-2.813-2.25-.75.014-1.226.076-1.563.214a.295.295 0 0 0-.088-.088c-1.125-1.213-3.213-2.063-3.125-3.675.025-.588.237-2.137 4-4.012 3.088-1.538 5.551-1.112 5.977-.175.61 1.336-1.314 3.825-4.526 4.187-1.225.138-1.862-.337-2.026-.513-.174-.188-.198-.2-.261-.161-.101.05-.038.212 0 .313.1.249.487.688 1.163.912.587.188 2.024.299 3.75-.375 1.937-.749 3.449-2.838 3.012-4.588l.06.056z\"}}]})(props);\n};\nexport function BiLogoShopify (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m14.49 20.937 5.381-1.166S17.93 6.633 17.914 6.546c-.016-.086-.086-.144-.158-.144s-1.439-.101-1.439-.101-.949-.949-1.064-1.05c-.027-.029-.057-.043-.086-.058l-.677 15.744zm.446-15.772c-.016 0-.043.014-.057.014-.016 0-.217.059-.533.158-.318-.919-.879-1.768-1.871-1.768h-.086c-.289-.361-.633-.519-.936-.519-2.316 0-3.426 2.892-3.77 4.359-.892.275-1.538.476-1.613.505-.504.158-.517.172-.574.648-.057.344-1.367 10.489-1.367 10.489l10.117 1.899.69-15.785zm-2.635.704v.102c-.559.173-1.178.36-1.783.547.346-1.323.992-1.972 1.553-2.217.146.375.23.878.23 1.568zm-.92-2.2c.1 0 .201.028.303.102-.732.344-1.539 1.222-1.871 2.978a59.11 59.11 0 0 1-1.411.432c.389-1.339 1.325-3.512 2.979-3.512zm.402 7.812s-.604-.315-1.322-.315c-1.08 0-1.123.676-1.123.849 0 .921 2.418 1.28 2.418 3.453 0 1.712-1.08 2.806-2.547 2.806-1.756 0-2.648-1.094-2.648-1.094l.475-1.554s.922.792 1.697.792a.693.693 0 0 0 .721-.69c0-1.209-1.986-1.268-1.986-3.252 0-1.669 1.195-3.295 3.627-3.295.936 0 1.395.272 1.395.272l-.707 2.028zm.922-7.281c.518.06.85.648 1.064 1.311-.258.087-.547.173-.863.273v-.187c0-.561-.072-1.022-.201-1.397z\"}}]})(props);\n};\nexport function BiLogoSketch (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6.42 9.87 12 20.78l5.58-10.91H6.42zM5.9 4.01 2 9.24h3.62l.28-5.23zm6.1-.59L6.63 9.24h10.74L12 3.42zM2.04 9.87l9.09 10.58L5.72 9.87H2.04zM11.53 3h-.15l-4.84.51a.09.09 0 0 1 0 .05l-.27 5.15zm1.34 17.45 9.09-10.58h-3.68l-5.41 10.58zm4.58-16.87a.09.09 0 0 1 0-.05l-4-.42-1-.11 5.26 5.71zm.65.43.28 5.23H22l-2.22-2.98-1.68-2.25z\"}}]})(props);\n};\nexport function BiLogoSkype (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.857 17.417c-2.947 0-4.294-1.524-4.294-2.641 0-.266.108-.521.298-.705a.946.946 0 0 1 .71-.264c1.261 0 .931 1.92 3.286 1.92 1.203 0 1.91-.736 1.91-1.425 0-.415-.234-.889-1.028-1.079l-2.629-.673c-2.111-.545-2.479-1.737-2.479-2.842 0-2.293 2.068-3.124 4.036-3.124 1.814 0 3.97 1.016 3.97 2.391 0 .592-.488.91-1.055.91-1.078 0-.897-1.536-3.063-1.536-1.077 0-1.645.513-1.645 1.23s.839.96 1.574 1.123l1.941.445c2.126.486 2.691 1.751 2.691 2.963 0 1.865-1.423 3.305-4.226 3.305m8.139-3.942c.086-.49.128-.986.128-1.482a8.472 8.472 0 0 0-2.952-6.474 8.211 8.211 0 0 0-6.788-1.856A4.818 4.818 0 0 0 7.935 3a4.954 4.954 0 0 0-4.27 2.519 5.103 5.103 0 0 0-.015 5.011 8.51 8.51 0 0 0 2.282 7.453 8.23 8.23 0 0 0 7.333 2.355 4.823 4.823 0 0 0 2.443.662 4.954 4.954 0 0 0 4.269-2.518 5.095 5.095 0 0 0 .016-5.009\"}}]})(props);\n};\nexport function BiLogoSlackOld (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.935 12.646a1.617 1.617 0 0 0-2.022-1.034l-1.632.532c-.355-1.099-.735-2.268-1.092-3.365l.006-.002-.004-.008 1.613-.523a1.62 1.62 0 0 0 1.035-2.023 1.62 1.62 0 0 0-2.025-1.034l-1.621.527-.519-1.604a1.619 1.619 0 0 0-2.024-1.034 1.618 1.618 0 0 0-1.033 2.024l.522 1.609-3.368 1.092-.524-1.611a1.618 1.618 0 0 0-2.022-1.034 1.617 1.617 0 0 0-1.034 2.023l.524 1.616-1.662.541a1.602 1.602 0 0 0-.988 1.95c.25.856 1.152 1.373 1.979 1.092.006 0 .658-.209 1.665-.536l1.099 3.386h-.002v.002l-1.67.545a1.599 1.599 0 0 0-.987 1.949c.25.857 1.15 1.374 1.979 1.093.007 0 .659-.211 1.665-.538l.003.005a.024.024 0 0 0 .008-.002l.539 1.657a1.6 1.6 0 0 0 1.949.989c.857-.25 1.373-1.151 1.094-1.979 0-.006-.209-.654-.533-1.654l-.003-.009c1.104-.358 2.276-.739 3.376-1.098l.543 1.668a1.602 1.602 0 0 0 1.949.989c.856-.251 1.374-1.152 1.092-1.979 0-.007-.209-.659-.535-1.663l.019-.006-.003-.007 1.609-.522a1.62 1.62 0 0 0 1.035-2.024zM10.86 14.238l-1.097-3.377a.02.02 0 0 0 .005-.001v-.006c1.098-.356 2.268-.735 3.363-1.092l1.098 3.377-3.369 1.099z\"}}]})(props);\n};\nexport function BiLogoSlack (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6.194 14.644c0 1.16-.943 2.107-2.103 2.107a2.11 2.11 0 0 1-2.104-2.107 2.11 2.11 0 0 1 2.104-2.106h2.103v2.106zm1.061 0c0-1.16.944-2.106 2.104-2.106a2.11 2.11 0 0 1 2.103 2.106v5.274a2.11 2.11 0 0 1-2.103 2.106 2.108 2.108 0 0 1-2.104-2.106v-5.274zm2.104-8.455c-1.16 0-2.104-.948-2.104-2.107s.944-2.106 2.104-2.106a2.11 2.11 0 0 1 2.103 2.106v2.107H9.359zm0 1.06a2.11 2.11 0 0 1 2.103 2.107 2.11 2.11 0 0 1-2.103 2.106H4.092a2.11 2.11 0 0 1-2.104-2.106 2.11 2.11 0 0 1 2.104-2.107h5.267zm8.447 2.107c0-1.16.943-2.107 2.103-2.107a2.11 2.11 0 0 1 2.104 2.107 2.11 2.11 0 0 1-2.104 2.106h-2.103V9.356zm-1.061 0c0 1.16-.944 2.106-2.104 2.106a2.11 2.11 0 0 1-2.103-2.106V4.082a2.11 2.11 0 0 1 2.103-2.106c1.16 0 2.104.946 2.104 2.106v5.274zm-2.104 8.455c1.16 0 2.104.948 2.104 2.107s-.944 2.106-2.104 2.106a2.11 2.11 0 0 1-2.103-2.106v-2.107h2.103zm0-1.06a2.11 2.11 0 0 1-2.103-2.107 2.11 2.11 0 0 1 2.103-2.106h5.268a2.11 2.11 0 0 1 2.104 2.106 2.11 2.11 0 0 1-2.104 2.107h-5.268z\"}}]})(props);\n};\nexport function BiLogoSnapchat (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.166 3c.796 0 3.495.223 4.769 3.073.426.959.324 2.589.24 3.898l-.002.047c-.011.146-.018.278-.024.41a.62.62 0 0 0 .322.072c.241-.013.53-.096.831-.241a.81.81 0 0 1 .373-.084c.146 0 .289.023.409.072.361.12.59.385.59.674.013.361-.313.675-.975.939-.071.023-.169.061-.276.096-.363.109-.917.289-1.073.651-.072.181-.049.421.098.697l.012.013c.048.109 1.228 2.795 3.854 3.229a.401.401 0 0 1 .337.409c0 .06-.013.119-.036.181-.193.457-1.023.795-2.53 1.021-.047.073-.096.302-.132.459-.022.144-.06.289-.107.444-.061.218-.217.325-.446.325h-.024a2.45 2.45 0 0 1-.433-.059 4.799 4.799 0 0 0-1.024-.108c-.24 0-.48.012-.732.06-.483.084-.904.373-1.386.71-.687.481-1.469 1.036-2.649 1.036-.048 0-.096-.012-.146-.012h-.119c-1.181 0-1.951-.543-2.637-1.036-.481-.338-.89-.626-1.373-.711a5.507 5.507 0 0 0-.745-.06c-.435 0-.771.072-1.023.12-.17.035-.314.059-.435.059a.45.45 0 0 1-.47-.337c-.048-.154-.071-.313-.107-.456-.038-.146-.085-.396-.133-.458-1.543-.179-2.373-.517-2.565-.986a.473.473 0 0 1-.044-.181.398.398 0 0 1 .337-.409c2.625-.434 3.805-3.119 3.854-3.232l.013-.023c.145-.277.18-.52.096-.699-.156-.349-.711-.529-1.07-.65a1.759 1.759 0 0 1-.279-.096c-.89-.35-1.011-.748-.962-1.024.072-.384.541-.637.939-.637.117 0 .217.023.308.06.337.155.635.241.888.241a.742.742 0 0 0 .373-.085l-.041-.458c-.08-1.307-.182-2.935.247-3.889 1.236-2.836 3.929-3.054 4.724-3.054L12.117 3h.049z\"}}]})(props);\n};\nexport function BiLogoSoundcloud (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2.971 12.188c-.041 0-.078.038-.083.082l-.194 1.797.194 1.756c.005.049.042.082.083.082s.075-.033.084-.082l.211-1.756-.225-1.797c0-.046-.037-.082-.074-.082m-.75.691c-.051 0-.076.03-.088.079l-.138 1.109.138 1.092c0 .046.037.078.075.078.039 0 .073-.038.087-.087l.176-1.1-.176-1.112c0-.051-.037-.076-.075-.076m1.526-1.025c-.052 0-.1.039-.1.087l-.176 2.139.188 2.051c0 .049.037.1.099.1.052 0 .089-.051.102-.1l.211-2.064-.211-2.126c-.013-.049-.052-.1-.102-.1m.79-.075c-.063 0-.114.051-.126.113l-.161 2.201.177 2.123c.012.063.061.114.122.114.064 0 .113-.051.125-.124l.201-2.113-.201-2.187a.11.11 0 0 0-.111-.112l-.026-.015zm.962.301a.128.128 0 0 0-.133-.125.134.134 0 0 0-.137.125l-.182 2.026.169 2.138a.13.13 0 0 0 .132.131c.062 0 .123-.055.123-.132l.189-2.139-.189-2.036.028.012zm.674-1.426a.154.154 0 0 0-.148.15l-.176 3.3.156 2.139c0 .077.066.137.15.137.078 0 .145-.074.15-.15l.174-2.137-.173-3.313c-.007-.088-.074-.152-.15-.152m.8-.762a.178.178 0 0 0-.17.163l-.15 4.063.138 2.125c0 .1.075.174.163.174.086 0 .161-.074.174-.174l.162-2.125-.161-4.052c-.013-.1-.088-.175-.175-.175m.826-.372c-.102 0-.176.073-.188.173l-.139 4.4.139 2.102c.012.1.086.188.188.188a.193.193 0 0 0 .187-.188l.163-2.102-.164-4.4c0-.1-.087-.188-.188-.188m1.038.038a.196.196 0 0 0-.199-.199.205.205 0 0 0-.201.199l-.125 4.538.124 2.089c.015.111.101.199.214.199s.201-.088.201-.199l.136-2.089-.136-4.55-.014.012zm.625-.111c-.113 0-.213.1-.213.211l-.125 4.439.125 2.063c0 .125.1.213.213.213a.221.221 0 0 0 .214-.224l.125-2.064-.14-4.428c0-.122-.1-.225-.225-.225m.838.139a.236.236 0 0 0-.237.237l-.086 4.29.113 2.063c0 .124.1.231.236.231.125 0 .227-.1.237-.237l.101-2.038-.112-4.265c-.01-.137-.113-.238-.237-.238m.988-.786a.27.27 0 0 0-.139-.037c-.05 0-.1.013-.137.037a.25.25 0 0 0-.125.214v.05l-.086 5.044.096 2.043v.007c.006.05.024.112.06.15.05.051.12.086.196.086a.28.28 0 0 0 .175-.074.262.262 0 0 0 .076-.188l.013-.201.097-1.838-.113-5.075a.24.24 0 0 0-.111-.199l-.002-.019zm.837-.457a.155.155 0 0 0-.124-.052.283.283 0 0 0-.174.052.265.265 0 0 0-.1.201v.023l-.114 5.513.063 1.014.052.988a.274.274 0 0 0 .548-.012l.125-2.013-.125-5.536a.273.273 0 0 0-.138-.231m7.452 3.15c-.336 0-.663.072-.949.193a4.34 4.34 0 0 0-5.902-3.651c-.188.075-.227.151-.238.301v7.812a.31.31 0 0 0 .275.29h6.827a2.428 2.428 0 0 0 2.45-2.438 2.457 2.457 0 0 0-2.45-2.463\"}}]})(props);\n};\nexport function BiLogoSpotify (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.01 2.019c-5.495 0-9.991 4.496-9.991 9.991 0 5.494 4.496 9.99 9.991 9.99 5.494 0 9.99-4.496 9.99-9.99 0-5.495-4.446-9.991-9.99-9.991zm4.595 14.436c-.199.299-.549.4-.85.201-2.349-1.45-5.296-1.75-8.793-.951-.348.102-.648-.148-.748-.449-.101-.35.149-.648.45-.749 3.795-.85 7.093-.499 9.69 1.1.35.149.4.548.251.848zm1.2-2.747c-.251.349-.7.499-1.051.249-2.697-1.646-6.792-2.148-9.939-1.148-.398.101-.85-.1-.949-.498-.101-.402.1-.852.499-.952 3.646-1.098 8.143-.548 11.239 1.351.3.149.45.648.201.998zm.099-2.799c-3.197-1.897-8.542-2.097-11.59-1.146a.938.938 0 0 1-1.148-.6.937.937 0 0 1 .599-1.151c3.547-1.049 9.392-.85 13.089 1.351.449.249.599.849.349 1.298-.25.35-.849.498-1.299.248z\"}}]})(props);\n};\nexport function BiLogoSpringBoot (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.205 16.392c-2.469 3.289-7.741 2.179-11.122 2.338 0 0-.599.034-1.201.133 0 0 .228-.097.519-.198 2.374-.821 3.496-.986 4.939-1.727 2.71-1.388 5.408-4.413 5.957-7.555-1.032 3.022-4.17 5.623-7.027 6.679-1.955.722-5.492 1.424-5.493 1.424a5.28 5.28 0 0 1-.143-.076c-2.405-1.17-2.475-6.38 1.894-8.059 1.916-.736 3.747-.332 5.818-.825 2.208-.525 4.766-2.18 5.805-4.344 1.165 3.458 2.565 8.866.054 12.21zm.042-13.28a9.212 9.212 0 0 1-1.065 1.89 9.982 9.982 0 0 0-7.167-3.031C6.492 1.971 2 6.463 2 11.985a9.983 9.983 0 0 0 3.205 7.334l.22.194a.856.856 0 1 1 .001.001l.149.132A9.96 9.96 0 0 0 12.015 22c5.278 0 9.613-4.108 9.984-9.292.274-2.539-.476-5.763-1.752-9.596\"}}]})(props);\n};\nexport function BiLogoSquarespace (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.886 9.264c-1.502-1.5-3.941-1.5-5.475 0l-6.13 6.131a.981.981 0 0 0 0 1.377.982.982 0 0 0 1.376 0l6.13-6.131a1.925 1.925 0 0 1 2.722 2.723l-6.037 6.035c.751.75 1.971.75 2.723 0l4.66-4.66c1.531-1.534 1.531-3.973.031-5.475zm-2.064 2.033a.982.982 0 0 0-1.376 0l-6.134 6.162c-.751.75-1.97.75-2.72 0-.376-.375-1.002-.375-1.377 0s-.375 1.002 0 1.375c1.502 1.502 3.942 1.502 5.475 0l6.131-6.129c.375-.406.375-1.033.001-1.408zm-2.035-6.129c-1.501-1.502-3.941-1.502-5.475 0l-6.131 6.129a.98.98 0 0 0 0 1.375.98.98 0 0 0 1.377 0l6.168-6.129a1.934 1.934 0 0 1 2.727 0 .982.982 0 0 0 1.376 0c.352-.406.352-1-.024-1.375h-.018zm-2.063 2.031a.978.978 0 0 0-1.376 0l-6.131 6.164a1.933 1.933 0 0 1-2.723 0 1.927 1.927 0 0 1 0-2.723l6.037-6.039a1.928 1.928 0 0 0-2.722 0L3.118 9.264c-1.501 1.502-1.501 3.941 0 5.475 1.501 1.502 3.94 1.502 5.475 0l6.129-6.131c.377-.408.377-1.033 0-1.408h.002z\"}}]})(props);\n};\nexport function BiLogoStackOverflow (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.24 19.399v-4.804h1.6V21H4.381v-6.405h1.598v4.804H17.24zM7.582 17.8h8.055v-1.604H7.582V17.8zm.195-3.64 7.859 1.641.34-1.552-7.861-1.642-.338 1.553zm1.018-3.794 7.281 3.398.678-1.463-7.281-3.399-.678 1.454v.01zm2.037-3.589 6.166 5.142 1.018-1.216-6.162-5.14-1.016 1.213-.006.001zm3.982-3.778-1.311.969 4.803 6.454 1.313-.971-4.807-6.452h.002z\"}}]})(props);\n};\nexport function BiLogoSteam (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8.21 17.32 7 16.8a2.13 2.13 0 1 0 1.17-2.93l1.28.53a1.58 1.58 0 0 1-1.22 2.92z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2a10 10 0 0 0-10 9.34l5.38 2.21a2.31 2.31 0 0 1 .47-.24A2.62 2.62 0 0 1 9 13.1l2.44-3.56a3.8 3.8 0 1 1 3.8 3.8h-.08l-3.51 2.5a2.77 2.77 0 0 1-5.47.68l-3.77-1.6A10 10 0 1 0 12 2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M17.79 9.5a2.53 2.53 0 1 0-2.53 2.5 2.54 2.54 0 0 0 2.53-2.5zm-4.42 0a1.9 1.9 0 1 1 1.9 1.91 1.9 1.9 0 0 1-1.9-1.92z\"}}]})(props);\n};\nexport function BiLogoStripe (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13.479 9.883c-1.626-.604-2.512-1.067-2.512-1.803 0-.622.511-.977 1.423-.977 1.667 0 3.379.642 4.558 1.22l.666-4.111c-.935-.446-2.847-1.177-5.49-1.177-1.87 0-3.425.489-4.536 1.401-1.155.954-1.757 2.334-1.757 4 0 3.023 1.847 4.312 4.847 5.403 1.936.688 2.579 1.178 2.579 1.934 0 .732-.629 1.155-1.762 1.155-1.403 0-3.716-.689-5.231-1.578l-.674 4.157c1.304.732 3.705 1.488 6.197 1.488 1.976 0 3.624-.467 4.735-1.356 1.245-.977 1.89-2.422 1.89-4.289 0-3.091-1.889-4.38-4.935-5.468h.002z\"}}]})(props);\n};\nexport function BiLogoTailwindCss (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.5 9.51a4.22 4.22 0 0 1-1.91-1.34A5.77 5.77 0 0 0 12 6a4.72 4.72 0 0 0-5 4 3.23 3.23 0 0 1 3.5-1.49 4.32 4.32 0 0 1 1.91 1.35A5.77 5.77 0 0 0 17 12a4.72 4.72 0 0 0 5-4 3.2 3.2 0 0 1-3.5 1.51zm-13 4.98a4.22 4.22 0 0 1 1.91 1.34A5.77 5.77 0 0 0 12 18a4.72 4.72 0 0 0 5-4 3.23 3.23 0 0 1-3.5 1.49 4.32 4.32 0 0 1-1.91-1.35A5.8 5.8 0 0 0 7 12a4.72 4.72 0 0 0-5 4 3.2 3.2 0 0 1 3.5-1.51z\"}}]})(props);\n};\nexport function BiLogoTelegram (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m20.665 3.717-17.73 6.837c-1.21.486-1.203 1.161-.222 1.462l4.552 1.42 10.532-6.645c.498-.303.953-.14.579.192l-8.533 7.701h-.002l.002.001-.314 4.692c.46 0 .663-.211.921-.46l2.211-2.15 4.599 3.397c.848.467 1.457.227 1.668-.785l3.019-14.228c.309-1.239-.473-1.8-1.282-1.434z\"}}]})(props);\n};\nexport function BiLogoTiktok (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.59 6.69a4.83 4.83 0 0 1-3.77-4.25V2h-3.45v13.67a2.89 2.89 0 0 1-5.2 1.74 2.89 2.89 0 0 1 2.31-4.64 2.93 2.93 0 0 1 .88.13V9.4a6.84 6.84 0 0 0-1-.05A6.33 6.33 0 0 0 5 20.1a6.34 6.34 0 0 0 10.86-4.43v-7a8.16 8.16 0 0 0 4.77 1.52v-3.4a4.85 4.85 0 0 1-1-.1z\"}}]})(props);\n};\nexport function BiLogoTrello (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.75 3H5.25A2.25 2.25 0 0 0 3 5.25v13.5A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V5.25A2.25 2.25 0 0 0 18.75 3zm-7.92 13.635a1.08 1.08 0 0 1-1.08 1.08H6.42a1.08 1.08 0 0 1-1.08-1.08V6.42c0-.597.483-1.08 1.08-1.08h3.33c.596 0 1.08.483 1.08 1.08v10.215zm7.83-4.5a1.08 1.08 0 0 1-1.08 1.08h-3.33a1.08 1.08 0 0 1-1.08-1.08V6.42c0-.597.484-1.08 1.08-1.08h3.33c.597 0 1.08.483 1.08 1.08v5.715z\"}}]})(props);\n};\nexport function BiLogoTripAdvisor (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8.31 10.28a2.5 2.5 0 1 0 2.5 2.49 2.5 2.5 0 0 0-2.5-2.49zm0 3.8a1.31 1.31 0 1 1 0-2.61 1.31 1.31 0 1 1 0 2.61zm7.38-3.8a2.5 2.5 0 1 0 2.5 2.49 2.5 2.5 0 0 0-2.5-2.49zM17 12.77a1.31 1.31 0 1 1-1.31-1.3 1.31 1.31 0 0 1 1.31 1.3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2zm7.38 10.77a3.69 3.69 0 0 1-6.2 2.71L12 16.77l-1.18-1.29a3.69 3.69 0 1 1-5-5.44l-1.2-1.3H7.3a8.33 8.33 0 0 1 9.41 0h2.67l-1.2 1.31a3.71 3.71 0 0 1 1.2 2.72z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14.77 9.05a7.19 7.19 0 0 0-5.54 0A4.06 4.06 0 0 1 12 12.7a4.08 4.08 0 0 1 2.77-3.65z\"}}]})(props);\n};\nexport function BiLogoTumblr (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14.078 20.953c-2.692 0-4.699-1.385-4.699-4.7v-5.308H6.931V8.07c2.694-.699 3.821-3.017 3.95-5.023h2.796v4.558h3.263v3.34h-3.263v4.622c0 1.386.699 1.864 1.813 1.864h1.58v3.522h-2.992z\"}}]})(props);\n};\nexport function BiLogoTux (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.642 8.084c-.364.189-.79.42-1.242.42s-.81-.209-1.066-.413c-.13-.101-.234-.202-.313-.276-.137-.108-.12-.259-.064-.254.094.012.108.136.168.191.08.075.18.172.302.269.243.192.567.38.973.38s.878-.238 1.167-.4c.163-.092.371-.256.541-.381.13-.095.125-.21.232-.198.107.013.028.127-.122.258a3.404 3.404 0 0 1-.576.404z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19.649 17.77c-.142-.16-.209-.456-.281-.771s-.153-.654-.411-.874l-.002-.001a1.054 1.054 0 0 0-.317-.192c.359-1.065.219-2.126-.145-3.084-.444-1.177-1.222-2.202-1.815-2.903-.664-.838-1.313-1.633-1.301-2.808.021-1.793.197-5.118-2.958-5.122a4.66 4.66 0 0 0-.401.017c-3.526.283-2.59 4.008-2.643 5.255-.064.912-.249 1.631-.877 2.523-.736.876-1.774 2.295-2.266 3.771-.232.697-.342 1.407-.241 2.08a1.9 1.9 0 0 0-.091.089c-.216.231-.376.511-.555.699-.166.167-.403.229-.664.323s-.547.231-.721.565l-.001.002a1 1 0 0 0-.108.484c0 .154.023.311.046.461.048.313.097.609.032.81-.206.564-.232.954-.087 1.237.146.284.444.409.783.479.676.141 1.592.106 2.314.489l.062-.117-.061.118c.773.404 1.557.547 2.182.405.454-.104.821-.374 1.011-.789.489-.002 1.025-.209 1.885-.256.583-.047 1.312.207 2.149.16a1.119 1.119 0 0 0 .099.264c.324.649.928.946 1.571.896s1.329-.43 1.883-1.089l-.102-.085.102.084c.527-.64 1.403-.905 1.984-1.255.29-.175.525-.395.544-.713.018-.318-.169-.675-.599-1.152zm-7.79-11.708c-.003-.234.036-.435.126-.639s.201-.351.358-.47.312-.174.494-.176h.009c.179 0 .332.053.489.167.159.116.274.261.366.463a1.493 1.493 0 0 1 .141.636c.002.235-.038.435-.127.639a1.23 1.23 0 0 1-.18.299l-.074-.033c-.089-.038-.167-.069-.237-.096s-.124-.044-.181-.064c.041-.049.122-.108.151-.181a.943.943 0 0 0 .072-.347l.002-.016a.953.953 0 0 0-.05-.337c-.038-.113-.086-.195-.155-.263s-.139-.099-.223-.101h-.011a.324.324 0 0 0-.217.086.618.618 0 0 0-.174.25.944.944 0 0 0-.072.348l-.001.015a.992.992 0 0 0 .014.2 2.463 2.463 0 0 0-.507-.171 1.681 1.681 0 0 1-.014-.19v-.019zm-2.144.052c-.012-.202.009-.376.064-.556s.13-.311.238-.418a.516.516 0 0 1 .349-.168h.03c.118 0 .225.04.335.127a.968.968 0 0 1 .284.389c.076.171.116.343.127.545v.002a1.51 1.51 0 0 1-.002.243c-.023.006-.046.014-.068.021-.128.044-.23.093-.328.158a.845.845 0 0 0 .003-.214v-.012a.95.95 0 0 0-.068-.274.523.523 0 0 0-.138-.203c-.052-.044-.1-.065-.153-.064l-.017.001c-.061.005-.11.034-.157.092a.536.536 0 0 0-.101.223.912.912 0 0 0-.019.293l.001.012c.01.103.031.189.067.275a.528.528 0 0 0 .166.224c-.059.045-.098.078-.146.113l-.11.081a.995.995 0 0 1-.229-.342 1.528 1.528 0 0 1-.128-.546v-.002zm.155 1.228c.187-.14.315-.234.402-.298.086-.063.121-.086.148-.112h.001c.14-.132.362-.374.699-.49.115-.04.245-.065.39-.066.275-.001.608.089 1.01.348.247.16.439.174.882.363h.001c.213.087.338.202.399.321.061.12.063.25.012.387-.103.273-.429.562-.887.705h-.001c-.224.072-.418.233-.647.364a1.449 1.449 0 0 1-.842.217 1.105 1.105 0 0 1-.374-.083 1.202 1.202 0 0 1-.27-.167c-.161-.131-.303-.295-.51-.416h-.002c-.333-.19-.515-.408-.573-.598-.057-.189-.003-.351.162-.475zm.131 13.018v.001c-.047.623-.398.961-.938 1.085-.539.123-1.27 0-1.999-.381h-.001c-.808-.427-1.768-.385-2.384-.514-.308-.064-.509-.161-.602-.341-.092-.18-.094-.494.102-1.028l.001-.002.001-.002c.097-.299.025-.626-.021-.934-.047-.307-.07-.586.034-.781l.001-.002c.135-.259.332-.352.576-.439.245-.088.534-.157.764-.386l.001-.001.001-.001c.212-.223.371-.503.557-.702.157-.167.314-.279.551-.28h.009c.041 0 .085.003.132.011.314.047.588.268.853.625l.762 1.389h.001c.202.423.631.89.994 1.365.362.475.644.952.607 1.317l-.002.001zm-.063-1.01a6.721 6.721 0 0 0-.333-.469 13.467 13.467 0 0 0-.229-.293c.151 0 .28-.024.384-.072a.486.486 0 0 0 .266-.274c.09-.242 0-.583-.288-.973-.29-.39-.778-.83-1.494-1.269-.527-.328-.821-.729-.959-1.165s-.119-.907-.013-1.373c.204-.894.729-1.762 1.063-2.308.09-.066.032.123-.339.811-.332.629-.953 2.081-.103 3.214a6.722 6.722 0 0 1 .538-2.398c.472-1.067 1.456-2.919 1.534-4.395.041.029.18.123.241.158.182.106.316.262.492.403.177.142.396.264.729.283l.093.003c.343 0 .61-.112.833-.239.242-.138.436-.292.618-.351h.001c.387-.122.694-.335.869-.585.302 1.186 1.001 2.897 1.45 3.733.239.443.715 1.385.92 2.52.13-.004.273.015.427.054.537-1.393-.455-2.892-.909-3.31-.184-.178-.192-.258-.102-.254.492.436 1.139 1.311 1.374 2.3.107.451.13.925.016 1.393.056.023.113.048.171.076.862.42 1.181.785 1.027 1.283-.05-.002-.1-.001-.148 0h-.014c.125-.395-.151-.687-.889-1.02-.764-.336-1.373-.303-1.476.379a1.302 1.302 0 0 0-.017.109c-.057.02-.114.045-.172.076-.358.197-.555.553-.664.99-.108.437-.14.964-.17 1.558-.019.298-.141.702-.266 1.129-1.249.897-2.986 1.283-4.461.276zm9.628.057c-.524.317-1.456.593-2.05 1.313-.517.615-1.146.952-1.7.996-.555.044-1.033-.186-1.315-.752v-.001l-.001-.003c-.175-.333-.102-.858.045-1.412.147-.554.359-1.123.388-1.585v-.001c.03-.592.063-1.11.163-1.509.1-.399.256-.669.533-.821l.039-.02c.031.513.285 1.036.734 1.149.491.129 1.199-.292 1.498-.636.06-.002.118-.006.175-.007.262-.006.481.009.707.205v.001h.001c.173.146.255.423.326.733.071.31.128.647.342.888h.001c.41.456.542.764.531.96-.011.198-.153.344-.417.502z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11.738 6.762c.015.048.093.04.138.063.04.02.071.065.116.066.042.001.107-.015.113-.057.008-.056-.073-.091-.126-.111-.067-.026-.153-.039-.216-.004-.014.008-.03.027-.025.043zm-.46 0c-.016.048-.094.04-.139.063-.039.02-.071.065-.115.066-.042.001-.108-.015-.114-.057-.007-.056.074-.091.126-.111.067-.026.153-.039.217-.004.015.008.03.027.025.043z\"}}]})(props);\n};\nexport function BiLogoTwitch (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4.265 3 3 6.236v13.223h4.502V21l2.531.85 2.392-2.391h3.658l4.923-4.924V3H4.265zm15.052 10.691-2.813 2.814h-4.502l-2.391 2.391v-2.391H5.813V4.688h13.504v9.003zm-2.812-5.767v4.923h-1.688V7.924h1.688zm-4.502 0v4.923h-1.688V7.924h1.688z\"}}]})(props);\n};\nexport function BiLogoTwitter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.633 7.997c.013.175.013.349.013.523 0 5.325-4.053 11.461-11.46 11.461-2.282 0-4.402-.661-6.186-1.809.324.037.636.05.973.05a8.07 8.07 0 0 0 5.001-1.721 4.036 4.036 0 0 1-3.767-2.793c.249.037.499.062.761.062.361 0 .724-.05 1.061-.137a4.027 4.027 0 0 1-3.23-3.953v-.05c.537.299 1.16.486 1.82.511a4.022 4.022 0 0 1-1.796-3.354c0-.748.199-1.434.548-2.032a11.457 11.457 0 0 0 8.306 4.215c-.062-.3-.1-.611-.1-.923a4.026 4.026 0 0 1 4.028-4.028c1.16 0 2.207.486 2.943 1.272a7.957 7.957 0 0 0 2.556-.973 4.02 4.02 0 0 1-1.771 2.22 8.073 8.073 0 0 0 2.319-.624 8.645 8.645 0 0 1-2.019 2.083z\"}}]})(props);\n};\nexport function BiLogoTypescript (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.24 3H4.76A1.76 1.76 0 0 0 3 4.76v14.48A1.76 1.76 0 0 0 4.76 21h14.48A1.76 1.76 0 0 0 21 19.24V4.76A1.76 1.76 0 0 0 19.24 3zm-5.8 10h-2.25v6.44H9.4V13H7.15v-1.46h6.29zm5.8 5.28a1.71 1.71 0 0 1-.67.74 3 3 0 0 1-1 .39 5.81 5.81 0 0 1-1.2.12 7 7 0 0 1-1.23-.11 4.52 4.52 0 0 1-1-.33v-1.71l-.06-.06h.06v.07a3.41 3.41 0 0 0 1 .54 3.06 3.06 0 0 0 1.13.2 2.58 2.58 0 0 0 .6-.06 1.47 1.47 0 0 0 .42-.17.75.75 0 0 0 .25-.25.69.69 0 0 0-.06-.74 1.24 1.24 0 0 0-.35-.33 3.12 3.12 0 0 0-.53-.3l-.67-.28a3.57 3.57 0 0 1-1.37-1 2 2 0 0 1-.46-1.33 2.16 2.16 0 0 1 .24-1.06 2.09 2.09 0 0 1 .66-.71 2.88 2.88 0 0 1 1-.42 5.11 5.11 0 0 1 1.19-.13 7 7 0 0 1 1.09.07 4.53 4.53 0 0 1 .88.23v1.65a2.42 2.42 0 0 0-.42-.24 3.58 3.58 0 0 0-.49-.17 3 3 0 0 0-.49-.1 2.45 2.45 0 0 0-.46 0 2.29 2.29 0 0 0-.56.06 1.54 1.54 0 0 0-.43.16.78.78 0 0 0-.26.25.63.63 0 0 0-.09.33.62.62 0 0 0 .1.35 1.19 1.19 0 0 0 .3.29 2.15 2.15 0 0 0 .46.28l.63.28a6.56 6.56 0 0 1 .84.42 2.65 2.65 0 0 1 .64.49 1.79 1.79 0 0 1 .42.63 2.48 2.48 0 0 1 .14.85 2.68 2.68 0 0 1-.25 1.08z\"}}]})(props);\n};\nexport function BiLogoUnity (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m10.4 17.8 1.21 2.07L19.77 22 22 14.08 20.72 12 22 10l-2.23-8-8.16 2.13L10.4 6.2H8L2 12l6 5.81zm9.92-5.8-1.73 6L15 12l3.59-6zM10.6 6.54 16.84 5l-3.59 6H6.08zM13.27 13l3.59 6-6.26-1.55L6.1 13z\"}}]})(props);\n};\nexport function BiLogoUnsplash (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8.625 8.063V3h6.75v5.063h-6.75zm6.75 2.812H21V21H3V10.875h5.625v5.063h6.75v-5.063z\"}}]})(props);\n};\nexport function BiLogoUpwork (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.47 6.07a4.54 4.54 0 0 0-4.38 3.69 19.9 19.9 0 0 1-2.28-4.9H8.55v6a2.14 2.14 0 1 1-4.28 0v-6L2 4.91v6a4.4 4.4 0 1 0 8.8-.05v-1a20.55 20.55 0 0 0 1.65 2.7l-1.38 6.61h2.32l1-4.81a5.61 5.61 0 0 0 3.11.89 4.57 4.57 0 0 0 0-9.14zm0 6.83a4.09 4.09 0 0 1-2.55-1l.23-.91v-.05c.16-1 .66-2.6 2.35-2.6a2.25 2.25 0 0 1 2.27 2.24 2.41 2.41 0 0 1-2.27 2.32z\"}}]})(props);\n};\nexport function BiLogoVenmo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 3.27a7.49 7.49 0 0 1 .66 3.35c0 2.72-1.93 6.72-3.49 9.27L9.53 2.44l-6.91.65L5.79 22h7.88c3.45-4.54 7.71-11 7.71-16a7.3 7.3 0 0 0-1.06-4z\"}}]})(props);\n};\nexport function BiLogoVimeo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.062 10.414c-2.036 4.349-6.949 10.267-10.054 10.267-3.06 0-3.501-6.527-5.173-10.869-.823-2.138-1.354-1.646-2.896-.567L2 8.031c2.248-1.976 4.499-4.272 5.88-4.399 1.559-.148 2.517.916 2.873 3.193.475 2.994 1.137 7.641 2.291 7.641.9 0 3.117-3.686 3.232-5.004.203-1.93-1.421-1.989-2.828-1.387 2.228-7.295 11.494-5.95 7.614 2.339z\"}}]})(props);\n};\nexport function BiLogoVisa (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.539 9.186a4.155 4.155 0 0 0-1.451-.251c-1.6 0-2.73.806-2.738 1.963-.01.85.803 1.329 1.418 1.613.631.292.842.476.84.737-.004.397-.504.577-.969.577-.639 0-.988-.089-1.525-.312l-.199-.093-.227 1.332c.389.162 1.09.301 1.814.313 1.701 0 2.813-.801 2.826-2.032.014-.679-.426-1.192-1.352-1.616-.563-.275-.912-.459-.912-.738 0-.247.299-.511.924-.511a2.95 2.95 0 0 1 1.213.229l.15.067.227-1.287-.039.009zm4.152-.143h-1.25c-.389 0-.682.107-.852.493l-2.404 5.446h1.701l.34-.893 2.076.002c.049.209.199.891.199.891h1.5l-1.31-5.939zm-10.642-.05h1.621l-1.014 5.942H9.037l1.012-5.944v.002zm-4.115 3.275.168.825 1.584-4.05h1.717l-2.551 5.931H5.139l-1.4-5.022a.339.339 0 0 0-.149-.199 6.948 6.948 0 0 0-1.592-.589l.022-.125h2.609c.354.014.639.125.734.503l.57 2.729v-.003zm12.757.606.646-1.662c-.008.018.133-.343.215-.566l.111.513.375 1.714H18.69v.001h.001z\"}}]})(props);\n};\nexport function BiLogoVisualStudio (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m21.29 4.1-4.12-2a1.36 1.36 0 0 0-.48-.1h-.08a1.18 1.18 0 0 0-.72.24l-.14.12-7.88 7.19L4.44 7a.83.83 0 0 0-.54-.17.88.88 0 0 0-.53.17l-1.1 1a.8.8 0 0 0-.27.61.84.84 0 0 0 .27.62l3 2.71-3 2.72a.84.84 0 0 0 0 1.23l1.1 1a.89.89 0 0 0 .6.22.93.93 0 0 0 .47-.17l3.43-2.61 7.88 7.19a1.2 1.2 0 0 0 .76.36h.17a1 1 0 0 0 .49-.12l4.12-2a1.25 1.25 0 0 0 .71-1.1V5.23a1.26 1.26 0 0 0-.71-1.13zM17 16.47l-6-4.53 6-4.53z\"}}]})(props);\n};\nexport function BiLogoVk (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.579 6.855c.14-.465 0-.806-.662-.806h-2.193c-.558 0-.813.295-.953.619 0 0-1.115 2.719-2.695 4.482-.51.513-.743.675-1.021.675-.139 0-.341-.162-.341-.627V6.855c0-.558-.161-.806-.626-.806H9.642c-.348 0-.558.258-.558.504 0 .528.79.65.871 2.138v3.228c0 .707-.127.836-.407.836-.743 0-2.551-2.729-3.624-5.853-.209-.607-.42-.852-.98-.852H2.752c-.627 0-.752.295-.752.619 0 .582.743 3.462 3.461 7.271 1.812 2.601 4.363 4.011 6.687 4.011 1.393 0 1.565-.313 1.565-.853v-1.966c0-.626.133-.752.574-.752.324 0 .882.164 2.183 1.417 1.486 1.486 1.732 2.153 2.567 2.153h2.192c.626 0 .939-.313.759-.931-.197-.615-.907-1.51-1.849-2.569-.512-.604-1.277-1.254-1.51-1.579-.325-.419-.231-.604 0-.976.001.001 2.672-3.761 2.95-5.04z\"}}]})(props);\n};\nexport function BiLogoVuejs (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m12 12.765 5.592-9.437h-3.276L12 7.33v.002L9.688 3.328h-3.28z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M18.461 3.332 12 14.235 5.539 3.332H1.992L12 20.672l10.008-17.34z\"}}]})(props);\n};\nexport function BiLogoWhatsappSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.043 6.925a4.985 4.985 0 0 0-4.98 4.979c-.001.94.263 1.856.761 2.649l.118.188-.503 1.837 1.885-.494.181.108a4.97 4.97 0 0 0 2.535.693h.001a4.986 4.986 0 0 0 4.979-4.978 4.946 4.946 0 0 0-1.456-3.522 4.946 4.946 0 0 0-3.521-1.46zm2.928 7.118c-.125.35-.723.668-1.01.711a2.044 2.044 0 0 1-.943-.059 8.51 8.51 0 0 1-.853-.315c-1.502-.648-2.482-2.159-2.558-2.26-.074-.1-.61-.812-.61-1.548 0-.737.386-1.099.523-1.249a.552.552 0 0 1 .4-.186c.1 0 .199.001.287.005.092.004.215-.035.336.257.125.3.425 1.036.462 1.111.037.074.062.162.013.262-.05.101-.074.162-.15.25-.074.088-.157.195-.224.263-.075.074-.153.155-.066.305.088.149.388.64.832 1.037.572.51 1.055.667 1.204.743.15.074.237.063.325-.038.087-.101.374-.437.474-.586.1-.15.199-.125.337-.076.137.051.873.412 1.022.487.148.074.249.112.287.175.036.062.036.361-.088.711z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zm-7.96 14.896h-.002a5.98 5.98 0 0 1-2.862-.729L6 18l.85-3.104a5.991 5.991 0 0 1 5.19-8.983 5.95 5.95 0 0 1 4.238 1.757 5.95 5.95 0 0 1 1.751 4.237 5.998 5.998 0 0 1-5.989 5.989z\"}}]})(props);\n};\nexport function BiLogoWhatsapp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"clipRule\":\"evenodd\",\"d\":\"M18.403 5.633A8.919 8.919 0 0 0 12.053 3c-4.948 0-8.976 4.027-8.978 8.977 0 1.582.413 3.126 1.198 4.488L3 21.116l4.759-1.249a8.981 8.981 0 0 0 4.29 1.093h.004c4.947 0 8.975-4.027 8.977-8.977a8.926 8.926 0 0 0-2.627-6.35m-6.35 13.812h-.003a7.446 7.446 0 0 1-3.798-1.041l-.272-.162-2.824.741.753-2.753-.177-.282a7.448 7.448 0 0 1-1.141-3.971c.002-4.114 3.349-7.461 7.465-7.461a7.413 7.413 0 0 1 5.275 2.188 7.42 7.42 0 0 1 2.183 5.279c-.002 4.114-3.349 7.462-7.461 7.462m4.093-5.589c-.225-.113-1.327-.655-1.533-.73-.205-.075-.354-.112-.504.112s-.58.729-.711.879-.262.168-.486.056-.947-.349-1.804-1.113c-.667-.595-1.117-1.329-1.248-1.554s-.014-.346.099-.458c.101-.1.224-.262.336-.393.112-.131.149-.224.224-.374s.038-.281-.019-.393c-.056-.113-.505-1.217-.692-1.666-.181-.435-.366-.377-.504-.383a9.65 9.65 0 0 0-.429-.008.826.826 0 0 0-.599.28c-.206.225-.785.767-.785 1.871s.804 2.171.916 2.321c.112.15 1.582 2.415 3.832 3.387.536.231.954.369 1.279.473.537.171 1.026.146 1.413.089.431-.064 1.327-.542 1.514-1.066.187-.524.187-.973.131-1.067-.056-.094-.207-.151-.43-.263\"}}]})(props);\n};\nexport function BiLogoWikipedia (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.081 12.932c-.78 1.611-1.849 3.792-2.379 4.776-.513.896-.94.776-1.278.024-1.172-2.77-3.58-7.625-4.712-10.347-.209-.502-.367-.823-.516-.95-.151-.125-.462-.2-.936-.227-.174-.019-.26-.061-.26-.131v-.379l.043-.038c.771-.004 4.503 0 4.503 0l.042.038v.362c0 .1-.063.147-.188.147l-.47.024c-.403.026-.605.137-.605.365 0 .112.044.275.139.501.902 2.206 4.017 8.772 4.017 8.772l.114.039 2.01-4.012-.402-.89L9.82 8.285s-.265-.545-.357-.727c-.607-1.203-.593-1.265-1.206-1.347-.173-.02-.261-.042-.261-.125v-.39l.05-.037h3.578l.095.03v.376c0 .088-.063.125-.189.125l-.257.039c-.66.051-.551.318-.113 1.186l1.319 2.712 1.465-2.922c.244-.533.194-.668.093-.789-.058-.07-.255-.185-.677-.2l-.168-.018a.191.191 0 0 1-.121-.043.125.125 0 0 1-.056-.107v-.357l.051-.037c1.04-.007 3.371 0 3.371 0l.05.037v.364c0 .101-.05.148-.161.148-.539.024-.652.079-.854.366-.1.154-.313.49-.538.865l-1.919 3.563-.054.112 2.328 4.763.142.041 3.665-8.704c.129-.352.107-.602-.053-.746-.165-.144-.289-.228-.716-.246l-.35-.014a.211.211 0 0 1-.127-.037.128.128 0 0 1-.06-.1v-.361l.049-.038h4.137l.034.038v.364c0 .1-.062.15-.174.15-.541.024-.94.15-1.203.351-.263.213-.465.514-.614.89 0 0-3.371 7.72-4.524 10.289-.438.84-.878.765-1.253-.026-.477-.977-1.478-3.156-2.206-4.761l.045-.03z\"}}]})(props);\n};\nexport function BiLogoWindows (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"m3 5.557 7.357-1.002.004 7.097-7.354.042L3 5.557zm7.354 6.913.006 7.103-7.354-1.011v-6.14l7.348.048zm.892-8.046L21.001 3v8.562l-9.755.077V4.424zm9.758 8.113-.003 8.523-9.755-1.378-.014-7.161 9.772.016z\"}}]})(props);\n};\nexport function BiLogoWix (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13.444 8.256c-.4.212-.544.562-.544 1.53 0 0 .202-.194.499-.303a2.01 2.01 0 0 0 .512-.275c.338-.247.385-.562.385-1.096 0 0-.553-.016-.852.144zm-2.349.229c-.32.286-.418.739-.418.739l-1.078 4.141L8.71 9.97c-.087-.355-.246-.808-.495-1.107-.31-.378-.944-.401-1.015-.401-.068 0-.709.023-1.026.407-.246.303-.406.751-.493 1.108l-.889 3.395-1.066-4.147s-.092-.459-.418-.739c-.529-.465-1.314-.367-1.314-.367l2.048 7.764s.677.052 1.015-.126c.441-.224.659-.401.929-1.463.241-.94.912-3.704.974-3.905.029-.098.07-.332.241-.332.179 0 .214.229.241.332.064.195.729 2.965.976 3.905.268 1.055.481 1.227.929 1.463.338.178 1.015.126 1.015.126l2.048-7.759c-.002 0-.789-.099-1.315.361zm3.201.9s-.129.195-.42.367c-.188.104-.367.178-.562.271-.323.154-.414.332-.414.595v5.266s.522.063.854-.104c.436-.222.533-.435.541-1.404V9.385zm5.112 2.632 2.599-3.875s-1.096-.189-1.641.309c-.35.315-.738.885-.738.885l-.952 1.386c-.053.069-.104.15-.2.15-.099 0-.161-.075-.202-.15l-.962-1.382s-.385-.568-.74-.884c-.54-.499-1.641-.31-1.641-.31l2.603 3.865-2.603 3.858s1.146.149 1.688-.35c.35-.315.688-.837.688-.837l.95-1.383c.053-.068.104-.147.2-.147.1 0 .161.075.202.147l.952 1.383s.355.51.7.837c.538.499 1.667.35 1.667.35l-2.57-3.852z\"}}]})(props);\n};\nexport function BiLogoWordpress (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.891 7.788a8.966 8.966 0 0 1 1.099 4.313 8.986 8.986 0 0 1-4.47 7.771l2.746-7.939c.513-1.282.684-2.309.684-3.219a7.165 7.165 0 0 0-.059-.926m-6.651.087a14.14 14.14 0 0 0 1.026-.088c.485-.063.428-.775-.056-.749 0 0-1.463.112-2.4.112-.887 0-2.375-.125-2.375-.125-.487-.024-.55.713-.061.738 0 0 .449.052.938.075l1.399 3.838-1.975 5.899-3.274-9.724a17.006 17.006 0 0 0 1.028-.083c.487-.063.43-.775-.055-.747 0 0-1.455.115-2.395.115-.167 0-.365-.007-.575-.013C6.093 4.726 8.862 3.113 12 3.113c2.341 0 4.471.894 6.071 2.36-.038-.002-.076-.008-.117-.008-.883 0-1.51.77-1.51 1.596 0 .741.427 1.369.883 2.108.343.601.742 1.37.742 2.481 0 .763-.295 1.662-.685 2.899l-.896 2.987-3.25-9.675.002.014zM12 21.087a8.983 8.983 0 0 1-2.54-.364l2.697-7.838 2.763 7.572c.021.044.042.085.065.124a9.016 9.016 0 0 1-2.985.508m-8.99-8.988a8.94 8.94 0 0 1 .778-3.658l4.287 11.749a8.993 8.993 0 0 1-5.065-8.091m8.99-10c-5.513 0-10 4.487-10 10s4.487 10 10 10 10-4.487 10-10-4.487-10-10-10\"}}]})(props);\n};\nexport function BiLogoXing (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 6a.4.4 0 0 0-.38.62l2 3.38-3.06 5.4a.45.45 0 0 0 0 .45.43.43 0 0 0 .38.19h2.87a.89.89 0 0 0 .79-.55s3-5.31 3.11-5.51l-2-3.46A.91.91 0 0 0 7.92 6zm12.16-4a.84.84 0 0 0-.77.55L10 13.93l4.09 7.52a.91.91 0 0 0 .81.55h2.88a.43.43 0 0 0 .38-.18.45.45 0 0 0 0-.45l-4.07-7.43 6.36-11.31a.45.45 0 0 0 0-.45.44.44 0 0 0-.38-.18z\"}}]})(props);\n};\nexport function BiLogoYahoo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13.131 21s-.63-.114-1.138-.114c-.457 0-1.142.114-1.142.114l.143-7.646C9.933 11.52 6.814 5.933 4.868 3c.979.223 1.391.209 2.374 0l.015.025c1.239 2.194 3.135 5.254 4.736 7.905C13.575 8.325 16.064 4.258 16.74 3c.765.201 1.536.193 2.392 0-.9 1.213-4.175 6.88-6.153 10.354L13.125 21h.006z\"}}]})(props);\n};\nexport function BiLogoYelp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.824 16.675c-.105.726-1.587 2.609-2.269 2.882-.232.093-.457.07-.637-.068-.116-.09-.235-.272-1.833-2.866l-.475-.773c-.183-.277-.148-.642.078-.92.223-.27.549-.37.832-.262.016.008 1.195.397 1.195.397 2.688.883 2.775.917 2.891 1.002.17.139.249.356.214.608h.004zm-5.386-3.946c-.19-.289-.187-.63.01-.865l.746-1.019c1.642-2.235 1.732-2.353 1.843-2.431a.636.636 0 0 1 .652-.024c.651.316 1.966 2.269 2.045 3.019v.025a.623.623 0 0 1-.259.587c-.123.079-.235.125-3.291.866-.483.123-.752.19-.91.247l.021-.023c-.302.091-.64-.055-.831-.357l-.026-.025zm-1.875-1.159c-.146.046-.591.185-1.139-.702 0 0-3.694-5.813-3.78-5.992-.053-.201.011-.429.19-.613.55-.569 3.534-1.405 4.315-1.215.255.066.43.227.491.453.045.25.408 5.646.46 6.854.051 1.034-.392 1.171-.537 1.215zm.487 5.913c-.008 2.827-.015 2.922-.061 3.056-.079.211-.26.352-.51.398-.72.122-2.972-.71-3.441-1.267a.739.739 0 0 1-.157-.37c-.013-.09 0-.18.033-.259.057-.146.135-.259 2.158-2.63l.594-.706c.203-.26.563-.338.899-.204.325.124.528.405.506.708v1.259l-.021.015zm-6.13-1.808c-.222-.006-.42-.14-.535-.358-.083-.162-.142-.428-.18-.752-.102-.974.023-2.444.314-2.911.138-.214.338-.327.559-.319.146 0 .276.046 3.167 1.236l.848.337c.302.111.489.427.472.787-.022.348-.224.616-.521.696l-1.202.382c-2.689.864-2.778.888-2.919.877l-.003.025zm11.22 5.322h-.004l-.003.003.007-.003z\"}}]})(props);\n};\nexport function BiLogoYoutube (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.593 7.203a2.506 2.506 0 0 0-1.762-1.766C18.265 5.007 12 5 12 5s-6.264-.007-7.831.404a2.56 2.56 0 0 0-1.766 1.778c-.413 1.566-.417 4.814-.417 4.814s-.004 3.264.406 4.814c.23.857.905 1.534 1.763 1.765 1.582.43 7.83.437 7.83.437s6.265.007 7.831-.403a2.515 2.515 0 0 0 1.767-1.763c.414-1.565.417-4.812.417-4.812s.02-3.265-.407-4.831zM9.996 15.005l.005-6 5.207 3.005-5.212 2.995z\"}}]})(props);\n};\nexport function BiLogoZoom (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M1.984 7.506v6.74c.006 1.524 1.361 2.75 3.014 2.745h10.693c.303 0 .549-.225.549-.498v-6.74c-.008-1.523-1.363-2.75-3.014-2.744H2.531c-.302 0-.547.224-.547.497zm14.936 2.63 4.416-2.963c.383-.292.68-.219.68.309v9.036c0 .601-.363.528-.68.309L16.92 13.87v-3.734z\"}}]})(props);\n};\n","import { useState } from \"react\";\nimport { useParams } from \"../lib/params\";\nimport { none } from '@hookstate/core'\nimport { BiTrash, BiPlus, BiMinus } from 'react-icons/bi'\nimport { Surface } from \"../lib/enclosure\";\n\nconst NumberInput = ({\n label, value, min=undefined, step=1, onChange\n}: {\n label: string, value: number, min?: number, step?: number, onChange: (e: React.ChangeEvent) => void\n}) => {\n const handleKeydown = (e: React.KeyboardEvent) => {\n if(e.code === 'Enter') {\n e.currentTarget.blur()\n }\n }\n return (\n
\n \n \n
\n )\n}\n\nconst CheckBox = ({label, checked, onChange}: {label: string, checked: boolean, onChange: (e: React.ChangeEvent) => void}) => (\n
\n \n \n
\n)\n\nconst Accordian = ({children, title, active, onClick}: {children: React.ReactNode, title: string, active: boolean, onClick: () => void}) => {\n return (\n
\n

\n {title}\n \n {active ? : }\n \n

\n
\n {children}\n
\n
\n )\n}\n\nexport const ParamsForm = () => {\n const { length, width, height, floor, roof, wall, cornerRadius, wallMountScrewDiameter, \n holes, pcbMounts, wallMounts, \n waterProof, screws, screwDiameter, sealThickness, insertThickness, insertHeight, \n insertClearance } = useParams()\n\n const handleChange = (e: React.ChangeEvent, set: (v: number) => void) => {\n e.currentTarget.value && set(parseFloat(e.currentTarget.value))\n }\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault()\n document.body.click()\n }\n\n const addHole = () => {\n holes[holes.length].set({\n shape: 'circle', \n surface: 'front', \n diameter: 12.5, \n width: 10, \n length: 10, \n y: width.value/2, \n x: 6\n })\n }\n\n const addPcbMount = () => {\n pcbMounts[pcbMounts.length].set({\n x: 0,\n y: 0,\n height: 5,\n outerDiameter: 6,\n screwDiameter: 2\n })\n }\n\n const [activeTab, setActiveTab] = useState(null)\n\n const _setActiveTab = (i: number) => {\n if(activeTab === i) {\n setActiveTab(null)\n } else {\n setActiveTab(i)\n }\n }\n\n return (\n
\n\n _setActiveTab(1)}>\n handleChange(e, length.set)} />\n handleChange(e, width.set)} />\n handleChange(e, height.set)} />\n handleChange(e, floor.set)} />\n handleChange(e, wall.set)} />\n handleChange(e, roof.set)} />\n handleChange(e, cornerRadius.set)} />\n \n\n _setActiveTab(2)}>\n handleChange(e, insertThickness.set)} />\n handleChange(e, insertHeight.set)} />\n handleChange(e, insertClearance.set)} />\n \n\n _setActiveTab(3)}>\n {holes.map((hole, i) => (\n
\n \n

Hole {i+1}

\n
\n \n \n
\n
\n \n \n
\n handleChange(e, hole.x.set)} />\n handleChange(e, hole.y.set)} />\n {(hole.shape.value === 'rectangle' || hole.shape.value === 'square') &&\n handleChange(e, hole.width.set)} />\n }\n {hole.shape.value === 'rectangle' &&\n handleChange(e, hole.length.set)} />\n }\n {hole.shape.value === 'circle' &&\n handleChange(e, hole.diameter.set)} />\n }\n
\n ))\n }\n \n
\n\n _setActiveTab(4)}>\n {pcbMounts.map((mount, i) => (\n
\n \n

Mount {i+1}

\n handleChange(e, mount.x.set)} />\n handleChange(e, mount.y.set)} />\n handleChange(e, mount.height.set)} />\n handleChange(e, mount.outerDiameter.set)} />\n handleChange(e, mount.screwDiameter.set)} />\n
\n ))}\n \n
\n\n _setActiveTab(5)}>\n {\n waterProof.set(e.currentTarget.checked)\n e.currentTarget.checked && screws.set(true)\n }} />\n {\n waterProof.value &&\n handleChange(e, sealThickness.set)} />\n }\n \n\n _setActiveTab(6)}>\n {\n screws.set(e.currentTarget.checked)\n !e.currentTarget.checked && waterProof.set(false)\n }} />\n {\n screws.value &&\n handleChange(e, screwDiameter.set)} />\n }\n \n\n _setActiveTab(7)}>\n wallMounts.set(e.currentTarget.checked)} />\n {\n wallMounts.value &&\n handleChange(e, wallMountScrewDiameter.set)} />\n }\n \n\n \n\n
\n );\n};","import { useRef, useState } from \"react\";\nimport { serialize } from '@jscad/stl-serializer'\nimport { lid } from '../lib/enclosure/lid'\nimport { base } from '../lib/enclosure/base'\nimport { waterProofSeal } from '../lib/enclosure/waterproofseal'\nimport { Params, useParams } from \"../lib/params\";\nimport { Geom3 } from \"@jscad/modeling/src/geometries/types\";\nimport { union } from \"@jscad/modeling/src/operations/booleans\";\nimport { pcbMounts } from \"../lib/enclosure/pcbmount\";\nimport { saveAs } from 'file-saver'\n\nimport { BiSolidSave, BiSolidFolderOpen, BiSolidFileExport } from 'react-icons/bi'\n\nconst formattedTimestamp = () => {\n const ts = new Date()\n const y = ts.getFullYear()\n const m = ts.getMonth()+1\n const d = ts.getDate()\n const h = ts.getHours()\n const mm = ts.getMinutes()\n const s = ts.getSeconds()\n return '' + y + m + d + h + mm + s\n}\n\nexport const Tools = () => {\n const [open, setOpen] = useState(false);\n \n const params = useParams()\n\n const fileInput = useRef(null)\n\n const _export = (name: string, geometry: Geom3) => {\n const rawData = serialize({binary: false}, geometry)\n const blob = new Blob([rawData], {type: 'application/octet-stream'})\n saveAs(blob, name + '.stl')\n }\n\n const exportSTL = () => {\n const tsStr = formattedTimestamp()\n\n _export('enclosure-lid-' + tsStr, lid(params.get() as Params))\n\n if (params.pcbMounts.value.length > 0) {\n _export('enclosure-base-' + tsStr, union(\n base(params.get() as Params),\n pcbMounts(params.get() as Params)\n ))\n } else {\n _export('enclosure-base-' + tsStr, base(params.get() as Params))\n }\n \n if (params.waterProof.value)\n _export('enclosure-waterproof-seal-' + tsStr, waterProofSeal(params.get() as Params))\n\n setOpen(false)\n }\n\n const loadParamsFile = (e: React.ChangeEvent) => {\n if (!e.target.files) return;\n const fileReader = new FileReader();\n fileReader.readAsText(e.target.files[0], \"UTF-8\");\n fileReader.onload = e => {\n const data = JSON.parse(fileReader.result as string)\n params.set(data);\n };\n }\n\n const saveParamsFile = () => {\n const tsStr = formattedTimestamp()\n const data = JSON.stringify(params.get(), null, 2)\n const textFile = new Blob([data], {type: 'text/plain'})\n saveAs(textFile, 'enclosure-' + tsStr + '.json')\n }\n \n return (\n
\n \n \n \n\n \n\n
\n
\n setOpen(false)}>×\n

Multiple STL files will be exported, one for each entity (lid, base, waterproof seal etc)

\n \n
\n
\n
\n );\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import React, { PureComponent } from 'react'\n\nclass GitHubButton extends PureComponent {\n constructor (props) {\n super(props)\n this.$ = React.createRef()\n this._ = React.createRef()\n }\n render () {\n return React.createElement('span', { ref: this.$ }, React.createElement('a', { ...this.props, ref: this._ }, this.props.children))\n }\n componentDidMount () {\n this.paint()\n }\n getSnapshotBeforeUpdate () {\n this.reset()\n return null\n }\n componentDidUpdate () {\n this.paint()\n }\n componentWillUnmount () {\n this.reset()\n }\n paint () {\n const _ = this.$.current.appendChild(document.createElement('span'))\n import(/* webpackMode: \"eager\" */ 'github-buttons').then(({ render }) => {\n if (this._.current != null) {\n render(_.appendChild(this._.current), function (el) {\n try {\n _.parentNode.replaceChild(el, _)\n } catch (_) {}\n })\n }\n })\n }\n reset () {\n this.$.current.replaceChild(this._.current, this.$.current.lastChild)\n }\n}\n\nexport default GitHubButton\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import GitHubButton from 'react-github-btn'\n\nexport const Funding = () => {\n return (\n
\n \n \"Sponsor\"\n \n \n \"Buy\n \n \n Star\n \n
\n )\n}","import React from 'react';\n\nimport { Renderer } from './Renderer';\nimport { ParamsForm } from './ParamForm';\nimport { Tools } from './Tools';\nimport { Funding } from './Funding';\n\nimport '../ui/css/main.css';\nimport '../ui/css/modal.css'\nimport '../ui/css/tools.css'\nimport '../ui/css/funding.css'\nimport '../ui/css/param-form.css'\n\nfunction App() {\n return (\n <>\n \n \n \n \n \n )\n}\n\nexport default App;\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport App from './ui/App';\nimport reportWebVitals from './lib/reportWebVitals';\n\nconst root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement);\n\nroot.render(\n \n \n \n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"names":["geometries","require","convertToStl","objects","options","result","forEach","object","i","push","convertToFacets","statusCallback","progress","length","join","geom3","toPolygons","polygon","convertToFacet","vector3DtoStlString","v","concat","vertextoStlString","vertex","vertices","firstVertexStl","facet","poly3","plane","module","exports","serializeText","serializeBinary","buffer","ArrayBuffer","int32buffer","Int32Array","int8buffer","Int8Array","Error","numtriangles","numpolygons","numvertices","headerarray","Uint8Array","ar1","Uint32Array","allTrianglesBuffer","allTrianglesBufferAsInt8","triangleBuffer","triangleBufferAsInt8","triangleFloat32array","Float32Array","triangleUint16array","Uint16Array","byteoffset","index","arindex","set","_require","modifiers","_require2","flatten","toArray","mimeType","serialize","_len","arguments","Array","_key","Object","assign","binary","objects3d","filter","isA","console","warn","generalize","snap","triangulate","cssColors","s","toLowerCase","geom2","path2","color","isArray","results","map","newgeom2","clone","colorGeom2","newgeom3","colorGeom3","newpath2","colorPath2","newpoly","colorPoly3","black","silver","gray","white","maroon","red","purple","fuchsia","green","lime","olive","yellow","navy","blue","teal","aqua","aliceblue","antiquewhite","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","gainsboro","ghostwhite","gold","goldenrod","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","limegreen","linen","magenta","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","oldlace","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellowgreen","notation","replace","r","parseInt","substring","g","b","hueToColorComponent","values","h","l","q","p","Math","floor","f","t","colorize","colorNameToRgb","hexToRgb","hslToRgb","hsvToRgb","rgbToHex","rgbToHsl","rgbToHsv","Number","toString","max","min","d","lengths","bezier","_Object$assign","distance","segments","arcLengths","startIndex","endIndex","middleIndex","diff","targetIndex","lengthBefore","getPointType","points","firstPointType","point","pType","isFinite","val","getPermutations","c","permutations","factorial","out","pointType","dimensions","tangentPermutations","create","valueAt","tangentAt","arcLengthToT","distanceBetween","a","abs","sum","sqrt","previous","current","bezierTangent","n","pow","singleDimensionPoints","j","bezierFunction","mat4","vec2","geometry","isIdentity","transforms","sides","side","transform","undefined","data","created","slice","point0","fromValues","point1","equals","prevpoint","fromPoints","fromCompactBinary","reverse","toOutlines","toPoints","toSides","toCompactBinary","validate","newsides","compacted","ci","toVertexMap","vertexMap","Map","edges","unique","getUniqueVertex","key","has","get","toSharedVertices","edge","popNextSide","startSide","nextSides","pop","bestAngle","bestIndex","v0","startAngle","angleDegrees","subtract","nextSide","angle","splice","outlines","_step","_iterator","_createForOfIteratorHelper","done","_step$value","_slicedToArray","value","shift","delete","err","e","connectedVertexPoints","startVertex","nextVertex","nextPossibleSides","clear","applyTransforms","matrix","multiply","every","polygons","vec3","numberOfVertices","vi","verticesPerPolygon","listofpoints","invert","newpolygons","numberOfPolygons","reduce","count","validateManifold","edgeCount","_ref","v1","v2","nonManifold","complementEdge","split","poly2","TAU","radius","xaxisrotation","clockwise","large","endpoint","decimals","isClosed","xradius","yradius","startpoint","round","sweepFlag","newpoints","phi","cosphi","cos","sinphi","sin","minushalfdistance","scale","x","y","startTranslated","biglambda","sqrtbiglambda","multiplier1","centerTranslated","center","add","vector1","vector2","theta1","angleRadians","deltatheta","numsteps","ceil","step","theta","costheta","sintheta","appendPoints","controlPoints","lastBezierControlPoint","controlpoint","unshift","bezierOrder","factorials","fact","binomials","binomial","v3","getPointForT","tk","oneMinusTNMinusK","invOneMinusT","k","bernsteinCoefficient","derivativePoint","newpointsT","subdivideBase","maxangle","maxsinangle","dir1","normalize","dir2","sinangle","cross","t0","t1","newt0","newt1","EPS","cloned","p0","pn","paths","path","tmp","closed","apoints","bpoints","offset","unequal","close","appendArc","appendBezier","measureArea","flip","isPointInside","numverts","tx","ty","vtx0","vtx1","yflag0","insideFlag","yflag1","xflag0","xflag1","acc","arePointsInside","area","vec","poly","fromPointsAndPlane","isConvex","measureBoundingBox","measureBoundingSphere","measureSignedVolume","inverted","areVerticesConvex","normal","apply","_toConsumableArray","prevprevpos","prevpos","pos","isConvexPoint","nextpoint","crossproduct","dot","ax","ay","az","coord","vec4","cache","WeakMap","boundingSphere","minx","miny","minz","maxx","maxy","maxz","z","signedVolume","mplane","isMirroring","signedDistanceToPoint","NEPS","dist","colors","curves","maths","measurements","primitives","text","utils","booleans","expansions","extrusions","hulls","OrthoNormalBasis","rightvector","orthogonal","this","u","planeorigin","GetCartesian","xaxisid","yaxisid","planenormal","axisid","Plane","Vector3D","Z0Plane","prototype","getProjectionMatrix","getInverseProjectionMatrix","to2D","to3D","line3Dto2D","line3d","direction","plus","a2d","b2d","Line2D","line2Dto3D","line2d","origin","a3d","b3d","Line3D","matrix4x4","newplane","rightpointTransformed","originTransformed","newrighthandvector","minus","PI","spatialResolution","constants","line2","line3","line","orig","dir","vector","negate","line1","point2","closestPoint","copy","distanceToPoint","intersectPointOfLines","xAtY","solve2Linear","toFixed","org","isNaN","lpoint","ldirection","closestpoint","closest","distancevector","fromPointAndDirection","plane1","plane2","absx","absy","absz","unit","fromPlanes","intersectPointOfLineAndPlane","pnormal","pw","labda","pointPlusDirection","newpoint","newPointPlusDirection","newdirection","identity","rad","axis","_axis","lengthSquared","len","yaw","pitch","roll","sy","cy","sp","cp","sr","cr","m00","m01","m02","m03","m10","m11","m12","m13","m20","m21","m22","m23","m30","m31","m32","m33","fromRotation","source","target","sourceNormal","targetNormal","cosA","radians","fromScaling","fromTaitBryanRotation","fromTranslation","fromVectorRotation","fromXRotation","fromYRotation","fromZRotation","isOnlyTransformScale","mirrorByPlane","rotate","rotateX","rotateY","rotateZ","translate","a00","a01","a02","a03","a10","a11","a12","a13","a20","a21","a22","a23","a30","a31","a32","a33","b00","b01","b02","b03","b04","b05","b06","b07","b08","b09","b10","b11","det","isZero","num","EPSILON","_plane","nx","ny","nz","w","b0","b1","b2","b3","b12","b20","b21","b22","mat","offsets","ba","ca","vertexNormal","fromNormalAndPoint","fromPointsRandom","projectionOfPoint","ismirror","fromScalar","point3","aboutEqualNormals","interpolateBetween2DPointsForY","intersect","f1","f2","p1","p2","p3","p4","denominator","MIN_VALUE","ua","ub","invdet","rezero","atan2","fromAngleRadians","degrees","scalar","divide","fromAngleDegrees","lerp","squaredDistance","squaredLength","amount","epsilon","bx","by","bz","mag","cosine","acos","fromVec2","bV","_vector","bounds","total","measureAggregateArea","measureAggregateBoundingBox","measureAggregateEpsilon","measureAggregateVolume","measureCenter","measureCenterOfMass","measureDimensions","measureEpsilon","measureVolume","areas","vec3min","vec3max","MAX_VALUE","item","calculateEpsilonFromBounds","volumes","volume","measureAreaOfGeom2","measureAreaOfGeom3","boundingBox","minpoint","maxpoint","measureBoundingBoxOfPath2","measureBoundingBoxOfGeom2","measureBoundingBoxOfGeom3","cacheOfBoundingSpheres","centroid","numPoints","temp","measureBoundingSphereOfPath2","measureBoundingSphereOfGeom2","measureBoundingSphereOfGeom3","cacheOfCenterOfMass","centerOfMass","measureCenterOfMassGeom2","totalVolume","weightedCenter","measureCenterOfMassGeom3","measureEpsilonOfPath2","measureEpsilonOfGeom3","measureVolumeOfGeom3","vert1Indices","points3D","points2D","fromFakePolygon","scission","union","areAllShapesTheSameType","intersectGeom2","intersectGeom3","fromFakePolygons","to3DWalls","newgeometries","z0","z1","retessellate","intersectSub","newgeometry","mayOverlap","Tree","geometry1","geometry2","clipTo","addPolygons","allPolygons","bounds1","min1","max1","bounds2","min2","max2","scissionGeom3","eps","pl","indexesPerPoint","mapping","insertMapping","indexesPerPolygon","array","indexes","findMapping","sort","ary","merges","ippl","_loop","mapi","mapj","_loop2","subtractGeom2","subtractGeom3","subtractSub","to3DWall","Node","parent","_classCallCheck","front","back","polygontreenodes","_createClass","node","queue","alsoRemovecoplanarFront","stack","backnodes","frontnodes","coplanarfrontnodes","numpolygontreenodes","treenode","isRemoved","splitByPlane","numbacknodes","remove","tree","rootnode","clipPolygons","newpolygontreenodes","bestpoly","getPolygon","splitPolygonByPlane","PolygonTreeNode","children","removed","isRootNode","_this","addChild","parentschildren","indexOf","recursivelyInvalidatePolygon","invertSub","coplanarbacknodes","nodes","_splitByPlane","splane","bound","sphereradius","spherecenter","splitresult","type","frontnode","backnode","newchild","prefix","repeat","polygonTree","getPolygons","addPolygonTreeNodes","lambda","splitLineSegmentByPlane","pplane","hasfront","hasback","vertexIsBack","MINEPS","isback","frontvertices","backvertices","vertexindex","nextvertexindex","nextisback","intersectionpoint","EPS_SQUARED","prevvertex","unionGeom2","unionGeom3","unionSub","unionForNonIntersecting","expandGeom2","expandGeom3","expandPath2","offsetFromPoints","delta","corners","allsides","outline","newoutline","expandShell","expanded","_options","external","internal","externalPath","internalPath","externalSides","internalSides","createGeometryFromClosedOffsets","capSegments","e2iCap","i2eCap","eCorner","e2iStart","iCorner","i2eStart","allPoints","createGeometryFromExpandedOpenPath","fnNumberSort","sphere","unionGeom3Sub","extrudePolygon","mapPlaneToVertex","entry","mapPlaneToEdge","key0","key1","addUniqueAngle","findIndex","vertices2planes","edges2planes","extrudevector","translatedpolygon","extrudedface","planes","zbase","xbase","ybase","angles","iMax","si","co","prevp1","prevp2","numangles","startfacevertices","endfacevertices","skip","cylinder","xaxis","bestzaxis","bestzaxisorthogonality","crosslength","yaxis","zaxis","corner","axes","offsetvector","polygon1","polygon2","nexti","sideFacePolygon","expand","offsetGeom2","offsetPath2","rotation","orientation","previousSegment","newPoints","newCorners","of","n0","n1","currentSegment","ip","s0","s1","cursegment","pointIndex","line0","cornersegments","start","cornerpoints","_newPoints","level","defaults","minIndex","list","score","best","solids","holes","parents","solid","hole","directParent","filterPoints","linkedPolygon","locallyInside","splitPolygon","pointInTriangle","eliminateHole","outerNode","bridge","findHoleBridge","bridgeReverse","filteredBridge","next","m","hx","hy","qx","Infinity","stop","mx","my","tanMin","sectorContainsSector","prev","getLeftmost","leftmost","holeIndices","dim","end","steiner","eliminateHoles","removeNode","sortLinked","cureLocalIntersections","isValidDiagonal","_require3","earcutLinked","ear","triangles","minX","minY","invSize","pass","indexCurve","isEarHashed","isEar","splitEarcut","minTX","minTY","maxTX","maxTY","minZ","zOrder","maxZ","prevZ","nextZ","maxX","maxY","hasHoles","outerLen","insertNode","last","fn","numMerges","inSize","tail","pSize","qSize","again","intersects","q1","q2","o1","sign","o2","o3","o4","onSegment","signedArea","intersectsPolygon","inside","px","py","middleInside","a2","an","bp","calculatePlane","assignHoles","PolygonHierarchy","perp","basisMap","projected","roots","vector3","original","log","planeOrigin","cx","repairSlice","extrudeWalls","defaultCallback","base","baseSlice","fromSides","numberOfSlices","capStart","capEnd","repair","callback","generate","sMax","startSlice","endSlice","prevSlice","currentSlice","toEdges","endPolygons","startPolygons","extrudeFromSlices","endOffset","segmentsPerRotation","height","shapeSides","pointsWithPositiveX","calculatedSegments","step1","zRotation","xOffset","zOffset","extrudeLinearGeom2","extrudeLinearPath2","twistAngle","twistSteps","offsetv","baseSides","Zrotation","Zoffset","extrudeRectangularPath2","extrudeRectangularGeom2","size","part","mirrorX","overflow","endAngle","totalRotation","anglePerSegment","pointsWithNegativeX","rotationPerSlice","isCapped","gcd","repartitionEdges","newlength","multiple","divisor","newEdges","increment","EPSAREA","slice0","slice1","edges0","edges1","walls","edge0","edge1","poly0","poly0area","poly1","poly1area","extrudeLinear","extrudeRectangular","extrudeRotate","extrudeHelical","project","projplane","epsilonArea","projpolys","projgeoms","projectGeom3","farthestEdge","midpoint","beforeEdge","find","aedges","bedges","aedge","bedge","inKey","outKey","missingIn","missingOut","bestReplacement","bestDistance","key2","earcut","hierarchy","holesIndex","flat","getVertex","indices","tri","hullPath2","hullGeom2","hullGeom3","hull","hullPoints2","toUniquePoints","hullPoints","quickhull","skipTriangulation","face","ccw","fakeAtan2","uniquePoints","distSq","pt1","pt2","cnt","hullChain","HalfEdge","Face","outside","mark","nVertices","it","e0","e1","e2","head","minArea","computeNormal","maxEdge","maxSquaredLength","maxVector","maxLength","maxProjection","computeNormalMinArea","computeCentroid","discardedFace","opposite","oppositeEdge","oppositeFace","setOpposite","computeNormalAndCentroid","adjacentEdge","discardedFaces","adjacentEdgePrev","adjacentEdgeNext","oppositeEdgePrev","oppositeEdgeNext","connectHalfEdges","VISIBLE","NON_CONVEX","DELETED","pointLineDistance","getPlaneNormal","VertexList","Vertex","QuickHull","TypeError","tolerance","nFaces","nPoints","faces","newFaces","claimed","unclaimed","vertexPointIndices","insertBefore","removeChain","absorbingFace","faceVertices","removeAllVerticesFromFace","distanceToPlane","addVertexToFace","addAll","vertexNext","first","maxDistance","maxFace","minVertices","maxVertices","_this$computeExtremes","computeExtremes","_this$computeExtremes2","indexMax","distPO","createTriangle","getEdge","activeFaces","faceIndices","collectIndices","isEmpty","eyeVertex","eyeFace","eyePoint","crossEdge","horizon","deleteFaceVertices","computeHorizon","horizonEdge","firstSideEdge","previousSideEdge","sideEdge","addAdjoiningFace","mergeType","convex","merge","oppositeFaceDistance","mergeAdjacentFaces","removeVertexFromFace","addNewFaces","doAdjacentMerge","resolveUnclaimedPoints","createInitialSimplex","nextVertexToAdd","addVertexToHull","reindexFaceAndVertices","instance","build","collectFaces","ab","ap","distanceSquared","found","Set","addPoint","snapPolygons","mergePolygons","insertTjunctions","triangulatePolygons","generalizePath2","generalizeGeom2","simplify","generalizeGeom3","assert","getTag","addSide","sidemap","vertextag2sidestart","vertextag2sideend","vertex0","vertex1","polygonindex","starttag","endtag","newsidetag","reversesidetag","deleteSide","newsideobj","sidetag","idx","sideobjs","sideobj","vertextag","nextvertex","nextvertextag","ar","sidesToCheck","_step2","_iterator2","keys","donesomething","sidetags","from","sidetagtocheck","donewithside","directionindex","startvertex","endvertex","startvertextag","endvertextag","matchingsides","matchingsideindex","matchingsidetag","matchingside","matchingsidestartvertex","matchingsideendvertex","matchingsidestartvertextag","startpos","endpos","checkpos","insertionvertextag","insertionvertextagindex","newvertices","newpolygon","newsidetag1","newsidetag2","createEdges","insertEdge","deleteEdge","findOppositeEdge","calculateAnglesBetween","angle1","calculateAngle","d0","d1","mergeCoplanarPolygons","sourcepolygons","edgeList","edge2","mergeEdges","newedge","destpolygons","createPolygonAnd","polygonsPerPlane","element","retesselayedpolygons","insertSorted","orthobasis","polygonvertices2d","polygontopvertexindexes","topy2polygonindexes","ycoordinatetopolygonindexes","ycoordinatebins","ycoordinateBinningFactor","poly3d","vertices2d","minindex","pos2d","ycoordinatebin","newy","polygonindexes","ycoordinates","polylist","activepolygons","prevoutpolygonrow","nextycoordinate","newoutpolygonrow","ycoordinate","yindex","polygonindexeswithcorner","activepolygonindex","activepolygon","newleftvertexindex","leftvertexindex","newrightvertexindex","rightvertexindex","nextleftvertexindex","nextrightvertexindex","topleft","topright","bottomleft","bottomright","middleycoordinate","startingpolygonindexes","polygonindexKey","topvertexindex","topleftvertexindex","toprightvertexindex","newactivepolygon","el1","el2","x1","x2","activepolygonKey","outpolygon","leftline","rightline","prevoutpolygon","d2","prevcontinuedindexes","matchedindexes","thispolygon","ii","prevpolygon","v4","leftlinecontinues","rightlinecontinues","rightpoints","leftpoints","vertices3d","point2d","reTesselateCoplanarPolygons","classifyPolygons","clusters","nonCoplanar","component","maybeCoplanar","cluster","byPlaneComponent","isRetesselated","classified","destPolygons","group","reTessellateCoplanarPolygons","snapPath2","snapGeom2","snapGeom3","snapvertices","vertice","isValidPoly3","nv","triangulatePolygon","padArrayToLength","alignGeometries","modes","relativeTo","translation","mode","includes","alignVal","grouped","validateOptions","populateRelativeToFromBounds","centerGeometry","_Object$assign2","centerX","_len2","_key2","centerY","_len3","_key3","centerZ","_len4","_key4","align","mirror","mirrorY","mirrorZ","scaleX","scaleY","scaleZ","translateX","translateY","translateZ","planeOfMirror","factors","factor","isGT","isGTE","isNumberArray","makeTangent","minangle","centerv","pointArray","edgestepsize","totalsteps","ellipse","dimension","constant","cuboid","info","cylinderElliptic","startRadius","endRadius","minradius","slices","ray","axisX","axisY","prevcylinderpoint","xvector","yvector","zvector","qsegments","cylinderpoint","prevcospitch","prevsinpitch","slice2","cospitch","sinpitch","polyhedron","frequency","ti","geodesicSubDivide","s2","mix3","s3","_f","arc","circle","cube","ellipsoid","geodesicSphere","rectangle","roundedCuboid","roundedCylinder","roundedRectangle","square","star","torus","triangle","listofpolys","listofpaths","allpoints","setofpoints","findex","pindex","pswap","createCorners","positive","layersegments","layerradius","layeroffset","corner0","corner1","corner2","corner3","corner0Points","corner1Points","corner2Points","corner3Points","point3d","stitchCorners","previousCorners","currentCorners","stitchWalls","c0","c1","stitchSides","bottomCorners","topCorners","bottomPoints","topPoints","roundRadius","prevCornersPos","prevCornersNeg","cornersPos","cornersNeg","defaultnormal","getPoints","outerRadius","innerRadius","density","getRadiusRatio","outerPoints","innerPoints","_require4","innerSegments","outerSegments","innerRotation","outerRotation","innerCircle","solveAngleFromSSS","solveSAS","B","C","solveSideFromSAS","A","toUpperCase","solveAAA","solveAAS","solveASA","asin","solveSSA","solveSSS","vectorChar","vectorText","vectorParams","char","_vectorParams","yOffset","input","font","extrudeOffset","code","charCodeAt","glyph","ratio","extrudeYOffset","width","polyline","il","gx","gy","defaultsVectorParams","lineSpacing","letterSpacing","params","translateLine","segment","jl","vect","lines","output","maxWidth","lineStart","pushLine","shapes","previousType","shape","currentType","arr","degToRad","radiusToSegments","radToDeg","comparefunc","leftbound","rightbound","testindex","anArray","padding","targetLength","minimumLength","minimumAngle","ss","as","positions","nested","position","_position","bbox","gbbox","transformMat4","dia","toPerspectiveView","camera","offsetToTarget","view","lookAt","up","toPresetView","viewName","_ref2","top","bottom","left","right","fromOrthographicToPerspective","orthographicCamera","near","far","fov","viewport","zoom","projection","projectionType","fromPerspectiveToOrthographic","perspectiveCamera","aspect","fCam","cameraState","eye","cameraProps","setProjection","multiplier","ortho","perspective","update","_camera","newPosition","newView","computeBounds","controlsProps","limits","minDistance","drag","zoomToFit","auto","targets","tightness","userControl","zoomSpeed","rotateSpeed","pan","panSpeed","autoRotate","enabled","speed","autoAdjustPlanes","controlsState","thetaDelta","phiDelta","controls","curThetaDelta","curPhiDelta","curScale","dragEffect","changed","_ref2$speed","_ref3","_ref3$speed","zoomDelta","newScale","newDistance","_ref4","_ref4$speed","unproject","combinedProjView","invProjView","panStart","panEnd","unPanStart","unPanEnd","eyeDistance","_ref5","entities","entity","scaleForIdealDistance","reset","_ref6","desiredState","meshColor","geom2ToGeometries","geom3ToGeometries","path2ToGeometries","smoothNormals","smoothLighting","normalThreshold","visuals","drawCmd","show","transparent","isTransparent","useVertexColors","assembleEntities","maxIndex","numgeometries","addColor","startColor","endColor","endset","toFill","normals","polygonColor","faceColor","calculateNormal","setstart","vcount","setend","polygonIndices","prevvertice","prepareRender","drawCommands","drawGrid","drawAxis","drawMesh","drawLines","cameras","orthographic","orbit","entitiesFromSolids","regl","xColor","yColor","zColor","lineWidth","alwaysVisible","lineWidthDims","commandParams","frag","vert","uniforms","model","context","props","contet","attributes","primitive","depth","enable","xAxisModel","yAxisModel","zAxisModel","single","fadeOut","ticks","centered","halfWidth","halfLength","widthStart","widthEnd","lengthStart","lengthEnd","fogColor","cull","polygonOffset","units","random","blend","func","src","dst","drawMainGrid","drawSubGrid","subColor","hasIndices","hasNormals","hasVertexColors","ucolor","usage","elements","extras","dynamicCulling","ambientOcclusion","determinant","cullFace","modelMatrixInv","vColorToggler","unormal","modelViewMatrix","transpose","ao","cells","renderContext","renderDefaults","glOptions","onDone","drawCache2","poll","rendering","background","aTransparent","cacheId","_objectSpread","fbo","lightDirection","camNear","camFar","invertedView","lightPosition","lightView","lightProjection","lightColor","ambientLightAmount","diffuseLightAmount","specularLightAmount","uMaterialShininess","materialShininess","materialAmbient","materialDiffuse","materialSpecular","framebuffer","nth","padToLength","compareFunction","invProjectionView","viewX","viewY","viewWidth","viewHeight","lw","autoBom","test","Blob","XMLHttpRequest","open","responseType","onload","response","onerror","error","send","status","dispatchEvent","MouseEvent","document","createEvent","initMouseEvent","window","self","global","navigator","userAgent","saveAs","HTMLAnchorElement","URL","webkitURL","createElement","name","download","rel","href","location","createObjectURL","setTimeout","revokeObjectURL","msSaveOrOpenBlob","title","body","innerText","HTMLElement","safari","FileReader","onloadend","readAsDataURL","obj","createElementInDocument","tag","el","prop","setAttribute","child","appendChild","createTextNode","hasOwnProperty","call","domain","apiBaseURL","useXHR","useShadowDOM","attachShadow","onEvent","eventName","addEventListener","attachEvent","offEvent","removeEventListener","detachEvent","widgetColorSchemes","light","light_high_contrast","dark","dark_dimmed","dark_high_contrast","getColorSchemeMediaQuery","systemColorScheme","widgetColorScheme","getColorScheme","declarations","colorSchemes","str","sep","eq","decodeURIComponent","ref","parse","heights","heart","play","octicon","icon","defaultHeight","svg","queues","fetch","url","onceToken","dispatchOnce","xhr","JSON","responseText","contentWindow","_","json","meta","script","async","regex","readyState","onceReadyStateChange","getElementsByTagName","render$1","root","ownerDocument","style","cssText","styleSheet","isLarge","btn","className","innerHTML","widget","hostname","removeAttribute","pathname","property","api","html_url","devicePixelRatio","ceilPixel","render","getAttribute","anchor","option","attribute","textContent","parseOptions","host","iframe","allowtransparency","scrolling","frameBorder","border","parentNode","removeChild","offsetWidth","offsetHeight","getBoundingClientRect","boundingClientRect","onceEvent","iframeURL","encodeURIComponent","stringify","y2","z2","xx","yx","yy","zx","zy","zz","wx","wy","wz","xy","xz","yz","rl","tb","nf","adjoint","fromRotationTranslation","fromQuat","frustum","perspectiveFromFieldOfView","x0","y0","y1","eyex","eyey","eyez","upx","upy","upz","centerx","centery","centerz","lr","bt","fovy","upTan","upDegrees","downTan","downDegrees","leftTan","leftDegrees","rightTan","rightDegrees","xScale","yScale","tempA","tempB","a0","a1","stride","arg","exactEquals","sub","mul","div","scaleAndAdd","sqrDist","sqrLen","inverse","transformMat3","transformQuat","zScale","pz","sc","cc","qy","qz","qw","ix","iy","iz","iw","aa","da","ea","fa","ha","ia","ja","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","ra","sa","ta","pa","qa","oa","setAttributeNS","xlinkHref","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","Symbol","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","Ma","trim","match","Na","Oa","prepareStackTrace","defineProperty","Reflect","construct","displayName","Pa","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","getOwnPropertyDescriptor","constructor","configurable","enumerable","getValue","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","bb","cb","db","eb","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","jb","kb","lb","mb","nb","namespaceURI","valueOf","firstChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","setProperty","charAt","menuitem","br","col","embed","hr","img","keygen","link","param","track","wbr","vb","is","wb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","sibling","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","unstable_shouldYield","dc","unstable_requestPaint","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","LN2","rc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","id","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","String","fromCharCode","locale","which","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","date","datetime","email","month","number","password","range","search","tel","time","week","me","ne","oe","event","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","Be","Ce","De","Ee","Fe","He","Ie","Je","Ke","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","defaultView","getSelection","extend","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","Ub","listener","D","pf","qf","rf","sf","bind","capture","passive","J","F","tf","uf","parentWindow","vf","wf","na","xa","$a","je","ke","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","clearTimeout","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","elementType","deletions","Cg","pendingProps","treeContext","retryLane","Dg","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","defaultProps","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","memoizedValue","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","dh","K","eh","fh","gh","hh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","L","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","contextType","state","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","_owner","_stringRef","th","uh","vh","wh","xh","yh","implementation","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","M","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","P","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","baseQueue","di","ei","fi","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","destroy","deps","ui","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","message","digest","Li","Mi","Ni","Oi","Pi","Qi","Ri","getDerivedStateFromError","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","compare","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","renderingStartTime","tailMode","yj","Ej","S","Fj","Gj","wasMultiple","suppressHydrationWarning","onClick","onclick","createElementNS","autoFocus","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","Wk","mk","nk","ok","pk","Y","Z","qk","rk","sk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","pendingSuspenseBoundaries","fl","gl","hl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","ql","sl","unmount","unstable_scheduleHydration","querySelectorAll","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","version","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","createPortal","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","__self","__source","Fragment","jsx","jsxs","setState","forceUpdate","escape","_status","_result","default","Children","only","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","arr2","__esModule","arrayLikeToArray","Constructor","toPropertyKey","_defineProperties","descriptor","writable","protoProps","staticProps","unsupportedIterableToArray","o","allowArrayLike","_e","normalCompletion","didErr","_e2","iter","ownKeys","getOwnPropertySymbols","getOwnPropertyDescriptors","defineProperties","arrayWithHoles","iterableToArrayLimit","nonIterableRest","arrayWithoutHoles","iterableToArray","nonIterableSpread","_typeof","hint","prim","toPrimitive","res","minLen","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","definition","chunkId","all","promises","miniCssF","globalThis","Function","inProgress","dataWebpackPrefix","needAttach","scripts","charset","timeout","nc","onScriptComplete","doneFns","toStringTag","installedChunks","installedChunkData","promise","reject","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","_toPropertyKey","_objectSpread2","extendStatics","setPrototypeOf","__proto__","__assign","shallowEqual","objA","objB","keysA","keysB","none","__state","useHookstate","extension","parentMethods","initializer","store","StateMethodsImpl","edition","setValue_1","value_1","_a","React","StateInvalidUsageError","ErrorId","InitStateStoreSwitchover","reconstruct","subscribe","useIsomorphicLayoutEffect","onMount","onUnmount","unsubscribe","RootPath","setValue_2","value_2","_b","ind","createStore","setValue_3","_c","value_3","activate","deactivate","_super","details","__","__extends","SelfMethodsID","Store","_value","_subscribers","configuration","promiseDetector","setPromised","onSetUsedStoreStateMethods","_stateMethods","IsUnmounted","_promiseError","_promiseResolver","_promise","extensionFactory","_extension","_extensionMethods","onCreate","_d","onInit","onDestroy","SetStateWhenDestroyed","SetStateWhenPromised","prevValue","afterSet","resolver","SetStateNestedToPromised","actions","preset","onPreset","premerge","onPremerge","onSet","toMethods","toJSON","ToJson_Value","UnusedValue","valueSource","valueEdition","onSetUsed","valueUsed","selfUsed","childrenCreated","childrenUsedPrevious","valueUsedNoProxyPrevious","valueUsedNoProxy","childrenUsed","reconnect","__internalAllowPromised","noproxy","getUntracked","promiseError","GetStateWhenPromised","stealth","valueArrayImpl","valueObjectImpl","setUntrackedV4","newValue","SetStateToValueFromState","mergeUntracked","sourceValue","mergeUntrackedV4","currentValue","ad_1","ad_2","deletedIndexes_1","newPropValue","ad_3","rerender","_i","paths_1","subscribers","updated","isAffected","nextChildKey","firstDeletedIndex","childKey","nextChild","isInteger","cachedChild","GetProperty_Function","proxyWrap","SetProperty_Value","opts","ToJson_State","nestedGetter","ornull","promised","ext","SetProperty_State","targetBootstrap","targetGetter","propertyGetter","propertySetter","isValueProxy","onInvalidUsage","op","Proxy","getPrototypeOf","_target","targetReal","SetPrototypeOf_State","SetPrototypeOf_Value","isExtensible","preventExtensions","PreventExtensions_State","PreventExtensions_Value","origin_1","deleteProperty","DeleteProperty_State","DeleteProperty_Value","DefineProperty_State","DefineProperty_Value","getOwnPropertyNames","thisArg","argArray","Apply_State","Apply_Value","newTarget","Construct_State","Construct_Value","initial","InitStateToValueFromState","useEffectOrigin","useLayoutEffectOrigin","useInsertionEffectOrigin","useImperativeHandleOrigin","useMemoOrigin","useCallbackOrigin","memoOrigin","interceptDependencyListsMode","isDevelopmentMode","process","hiddenInterceptDependencyListsModeDebug","reconnectDependencies","fromIntercept","StateUsedInDependencyList","useEffectIntercept","effect","useLayoutEffectIntercept","useInsertionEffectIntercept","useImperativeHandleIntercept","init","useMemoIntercept","factory","useCallbackIntercept","memoIntercept","propsAreEqual","prevProps","nextProps","interceptReactHooks","paramState","hookstate","roof","wall","waterProof","sealThickness","insertThickness","insertHeight","insertClearance","showLid","showBase","cornerRadius","surface","diameter","pcbMounts","outerDiameter","screwDiameter","wallMounts","wallMountScrewDiameter","screws","useParams","SURFACES","surfacesFilter","holeParams","spec","rot","totalWallThickness","flange","outerWidth","SCREWCLEARANCE","RIDGEWIDTH","innerWidth","outer","inner","roundedCube","roundedCorner","clover","cornersRemoved","cloverFrame","waterProofSeal","subtracts","_wall","hollowRoundCube","cornerSpacing","flanges","waterProofSealCutout","lid","roundedFrame","mounts","mount","mountParams","orbitControls","control","lastX","lastY","rotateDelta","panDelta","pointerDown","updateView","Renderer","pcbMountParams","container","_lid","_base","_waterProofSeal","_pcbMounts","renderOptions","renderer","animationFrame","unload","updateAndRender","timestamp","_renderOptions$curren","_renderOptions$curren2","doRotatePanZoom","updates","requestAnimationFrame","SPACING","innerHeight","_jsx","onPointerMove","ev","dx","dy","onPointerDown","_container$current","setPointerCapture","onPointerUp","_container$current2","releasePointerCapture","onWheel","_arrayLikeToArray","DefaultContext","attr","IconContext","__rest","propertyIsEnumerable","Tree2Element","GenIcon","IconBase","elem","conf","svgProps","computedSize","stroke","fill","xmlns","BiMinus","BiPlus","BiTrash","BiSolidFileExport","BiSolidFolderOpen","BiSolidSave","NumberInput","label","_ref$min","_ref$step","onChange","_jsxs","onBlur","onKeyDown","blur","CheckBox","Accordian","active","ParamsForm","_useParams","handleChange","parseFloat","_useState2","activeTab","setActiveTab","_setActiveTab","onSubmit","click","formattedTimestamp","ts","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","Tools","setOpen","fileInput","_export","rawData","blob","_fileInput$current","tsStr","textFile","saveParamsFile","accept","files","fileReader","readAsText","_setPrototypeOf","_getPrototypeOf","_possibleConstructorReturn","ReferenceError","_createSuper","Derived","hasNativeReflectConstruct","sham","Boolean","Super","NewTarget","_PureComponent","subClass","superClass","_inherits","GitHubButton","$","paint","_this2","replaceChild","Funding","alt","borderRadius","_Fragment","onPerfEntry","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","getElementById","App","reportWebVitals"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/main.a0b3251a.js b/static/js/main.ad8c10bf.js similarity index 95% rename from static/js/main.a0b3251a.js rename to static/js/main.ad8c10bf.js index fea7e3d..7af7a74 100644 --- a/static/js/main.a0b3251a.js +++ b/static/js/main.ad8c10bf.js @@ -1,3 +1,3 @@ -/*! For license information please see main.a0b3251a.js.LICENSE.txt */ -!function(){var e={44815:function(e,t,r){var n=r(68928).geometries,o=function(e,t){var r=[];return e.forEach((function(n,o){r.push(a(n,t)),t.statusCallback&&t.statusCallback({progress:100*o/e.length})})),r.join("\n")},a=function(e,t){var r=[];return n.geom3.toPolygons(e).forEach((function(e,t){r.push(s(e))})),r.join("\n")},i=function(e){return"".concat(e[0]," ").concat(e[1]," ").concat(e[2])},u=function(e){return"vertex ".concat(i(e))},s=function(e){var t=[];if(e.vertices.length>=3)for(var r=u(e.vertices[0]),o=0;o=3?t-2:0,u+=1}))}));for(var s=new Uint8Array(80),l=0;l<80;l++)s[l]=65;var c=new Uint32Array(1);c[0]=i;var f=new ArrayBuffer(50*i),d=new Int8Array(f),p=new ArrayBuffer(50),h=new Int8Array(p),v=new Float32Array(p,0,12),m=new Uint16Array(p,48,1),g=0;return e.forEach((function(e){n.geom3.toPolygons(e).forEach((function(e,r){for(var o=e.vertices,a=o.length,i=n.poly3.plane(e),s=0;s0?s:0)];v[l++]=f[0],v[l++]=f[1],v[l++]=f[2]}m[0]=0,d.set(h,g),g+=50}t.statusCallback&&t.statusCallback({progress:100*r/u})}))})),t.statusCallback&&t.statusCallback({progress:100}),[s.buffer,c.buffer,f]}}},37009:function(e,t,r){var n=r(68928),o=n.geometries,a=n.modifiers,i=r(16556),u=i.flatten,s=i.toArray,l=r(86809).serializeBinary,c=r(44815).serializeText;e.exports={mimeType:"application/sla",serialize:function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n1?t-1:0),s=1;s=8?[t,r,n,parseInt(e.substring(6,8),16)/255]:[t,r,n]}},67336:function(e,t,r){var n=r(18875),o=r(91138);e.exports=function(){for(var e=arguments.length,t=new Array(e),r=0;r3?[s,l,c,t[3]]:[s,l,c]}},50452:function(e,t,r){var n=r(18875);e.exports=function(){for(var e=arguments.length,t=new Array(e),r=0;r3?[u,s,l,t[3]]:[u,s,l]}},91138:function(e){e.exports=function(e,t,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?e+6*(t-e)*r:r<.5?t:r<2/3?e+(t-e)*(2/3-r)*6:e}},19334:function(e,t,r){e.exports={colorize:r(66709),colorNameToRgb:r(89658),cssColors:r(59e3),hexToRgb:r(46510),hslToRgb:r(67336),hsvToRgb:r(50452),hueToColorComponent:r(91138),rgbToHex:r(37899),rgbToHsl:r(13341),rgbToHsv:r(70829)}},37899:function(e,t,r){var n=r(18875);e.exports=function(){for(var e=arguments.length,t=new Array(e),r=0;r3&&(u+=Number(255*t[3]).toString(16)),u}},13341:function(e,t,r){var n=r(18875);e.exports=function(){for(var e=arguments.length,t=new Array(e),r=0;r.5?d/(2-l-c):d/(l+c),l){case i:o=(u-s)/d+(u3?[o,a,f,t[3]]:[o,a,f]}},70829:function(e,t,r){var n=r(18875);e.exports=function(){for(var e=arguments.length,t=new Array(e),r=0;r3?[o,d,c,t[3]]:[o,d,c]}},91826:function(e,t,r){var n=r(1237);e.exports=function(e,t){for(var r=Object.assign({},{distance:0,segments:100},e),o=r.distance,a=r.segments,i=n(a,t),u=0,s=a;u<=s;){var l=Math.floor(u+(s-u)/2),c=i[l]-o;if(c<0)u=l+1;else{if(!(c>0)){s=l;break}s=l-1}}var f=s;if(i[f]===o)return f/a;var d=i[f];return(f+(o-d)/(i[f+1]-d))/a}},28813:function(e){var t=function(e){var t=null;return e.forEach((function(e){var r="";if(Number.isFinite(e))r="float_single";else{if(!Array.isArray(e))throw new Error("Bezier points must all be numbers or arrays of number.");e.forEach((function(e){if(!Number.isFinite(e))throw new Error("Bezier point values must all be numbers.")})),r="float_"+e.length}if(null==t)t=r;else if(t!==r)throw new Error("Bezier points must be either all numbers or all arrays of numbers of the same size.")})),t},r=function(e){for(var t=[],r=0;r<=e;r++)t.push(n(e)/(n(r)*n(e-r)));return t},n=function(e){for(var t=1,r=2;r<=e;r++)t*=r;return t};e.exports=function(e){if(!Array.isArray(e))throw new Error("Bezier points must be a valid array/");if(e.length<2)throw new Error("Bezier points must contain at least 2 values.");var n=t(e);return{points:e,pointType:n,dimensions:"float_single"===n?0:e[0].length,permutations:r(e.length-1),tangentPermutations:r(e.length-2)}}},11035:function(e,t,r){e.exports={create:r(28813),valueAt:r(84094),tangentAt:r(73033),lengths:r(1237),length:r(2514),arcLengthToT:r(91826)}},2514:function(e,t,r){var n=r(1237);e.exports=function(e,t){return n(e,t)[e]}},1237:function(e,t,r){var n=r(84094),o=function(e,t){if(Number.isFinite(e)&&Number.isFinite(t))return Math.abs(e-t);if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)throw new Error("The operands must have the same number of dimensions.");for(var r=0,n=0;n1)throw new Error("Bezier tangentAt() input must be between 0 and 1");if("float_single"===r.pointType)return t(r,r.points,e);for(var n=[],o=0;o1)throw new Error("Bezier valueAt() input must be between 0 and 1");if("float_single"===r.pointType)return t(r,r.points,e);for(var n=[],o=0;o=0&&(t.color=[e[17],e[18],e[19],e[20]]),t}},20585:function(e,t,r){var n=r(40955),o=r(28313);e.exports=function(e){if(!Array.isArray(e))throw new Error("the given points must be an array");var t=e.length;if(t<3)throw new Error("the given points must define a closed geometry with three or more points");n.equals(e[0],e[t-1])&&--t;for(var r=[],a=e[t-1],i=0;i=180&&(u-=360),(void 0===n||u>r)&&(n=t,r=u)}));var u=t[n];return t.splice(n,1),u};e.exports=function(e){for(var t=u(i(e)),r=[];;){var a,l=void 0,c=o(t);try{for(c.s();!(a=c.n()).done;){var f=n(a.value,2),d=f[0];if(l=f[1].shift())break;t.delete(d)}}catch(b){c.e(b)}finally{c.f()}if(void 0===l)break;for(var p=[],h=l[0];;){p.push(l[0]);var v=l[1];if(v===h)break;var m=t.get(v);if(!m)throw new Error("geometry is not closed at vertex ".concat(v));var g=s(l,m);0===m.length&&t.delete(v),l=g}p.length>0&&p.push(p.shift()),r.push(p)}return t.clear(),r}},85014:function(e,t,r){var n=r(36969);e.exports=function(e){var t=n(e).map((function(e){return e[0]}));return t.length>0&&t.push(t.shift()),t}},36969:function(e,t,r){var n=r(8424);e.exports=function(e){return n(e).sides}},86008:function(e,t,r){var n=r(40955),o=r(36969);e.exports=function(e){var t=o(e),r="geom2 ("+t.length+" sides):\n[\n";return t.forEach((function(e){r+=" ["+n.toString(e[0])+", "+n.toString(e[1])+"]\n"})),r+="]\n"}},78532:function(e,t,r){var n=r(60249);e.exports=function(e,t){var r=n.multiply(n.create(),e,t.transforms);return Object.assign({},t,{transforms:r})}},25095:function(e,t,r){var n=r(40955),o=r(32384),a=r(54898);e.exports=function(e){if(!o(e))throw new Error("invalid geom2 structure");if(a(e),e.sides.forEach((function(e){if(n.equals(e[0],e[1]))throw new Error("geom2 self-edge ".concat(e[0]))})),!e.transforms.every(Number.isFinite))throw new Error("geom2 invalid transforms ".concat(e.transforms))}},86065:function(e,t,r){var n=r(60249),o=r(20259);e.exports=function(e){return n.isIdentity(e.transforms)||(e.polygons=e.polygons.map((function(t){return o.transform(e.transforms,t)})),e.transforms=n.create()),e}},55542:function(e){e.exports=function(e){return Object.assign({},e)}},13038:function(e,t,r){var n=r(60249);e.exports=function(e){return void 0===e&&(e=[]),{polygons:e,transforms:n.create()}}},39146:function(e,t,r){var n=r(96440),o=r(60249),a=r(20259),i=r(13038);e.exports=function(e){if(1!==e[0])throw new Error("invalid compact binary data");var t=i();t.transforms=o.clone(e.slice(1,17));for(var r=e[21],u=22,s=e.length-3*r;s=0&&(t.color=[e[17],e[18],e[19],e[20]]),t}},73239:function(e,t,r){var n=r(20259),o=r(13038);e.exports=function(e){if(!Array.isArray(e))throw new Error("the given points must be an array");var t=e.map((function(e,t){return n.create(e)}));return o(t)}},38782:function(e,t,r){e.exports={clone:r(55542),create:r(13038),fromPoints:r(73239),fromCompactBinary:r(39146),invert:r(20773),isA:r(69766),toPoints:r(20166),toPolygons:r(25826),toString:r(82873),toCompactBinary:r(73541),transform:r(34052),validate:r(52008)}},20773:function(e,t,r){var n=r(20259),o=r(13038),a=r(25826);e.exports=function(e){var t=a(e).map((function(e){return n.invert(e)}));return o(t)}},69766:function(e){e.exports=function(e){return!!(e&&"object"===typeof e&&"polygons"in e&&"transforms"in e&&Array.isArray(e.polygons)&&"length"in e.transforms)}},73541:function(e,t,r){var n=r(20259);e.exports=function(e){var t=e.polygons,r=e.transforms,o=t.length,a=t.reduce((function(e,t){return e+t.vertices.length}),0),i=[-1,-1,-1,-1];e.color&&(i=e.color);var u=new Float32Array(22+o+3*a);u[0]=1,u[1]=r[0],u[2]=r[1],u[3]=r[2],u[4]=r[3],u[5]=r[4],u[6]=r[5],u[7]=r[6],u[8]=r[7],u[9]=r[8],u[10]=r[9],u[11]=r[10],u[12]=r[11],u[13]=r[12],u[14]=r[13],u[15]=r[14],u[16]=r[15],u[17]=i[0],u[18]=i[1],u[19]=i[2],u[20]=i[3],u[21]=a;var s=22,l=s+o;return t.forEach((function(e){var t=n.toPoints(e);u[s]=t.length,s++;for(var r=0;r "))})),r.length>0)throw new Error("non-manifold edges ".concat(r.length,"\n").concat(r.join("\n")))};e.exports=function(e){if(!o(e))throw new Error("invalid geom3 structure");if(e.polygons.forEach(n.validate),a(e),!e.transforms.every(Number.isFinite))throw new Error("geom3 invalid transforms ".concat(e.transforms))}},31356:function(e,t,r){e.exports={geom2:r(22985),geom3:r(38782),path2:r(75720),poly2:r(87905),poly3:r(20259)}},95571:function(e,t,r){var n=r(87508).TAU,o=r(40955),a=r(30457),i=r(8054);e.exports=function(e,t){var r=Object.assign({},{radius:[0,0],xaxisrotation:0,clockwise:!1,large:!1,segments:16},e),u=r.endpoint,s=r.radius,l=r.xaxisrotation,c=r.clockwise,f=r.large,d=r.segments;if(!Array.isArray(u))throw new Error("endpoint must be an array of X and Y values");if(u.length<2)throw new Error("endpoint must contain X and Y values");if(u=o.clone(u),!Array.isArray(s))throw new Error("radius must be an array of X and Y values");if(s.length<2)throw new Error("radius must contain X and Y values");if(d<4)throw new Error("segments must be four or more");var p=1e5;if(t.isClosed)throw new Error("the given path cannot be closed");var h=i(t);if(h.length<1)throw new Error("the given path must contain one or more points (as the starting point for the arc)");var v=s[0],m=s[1],g=h[h.length-1];v=Math.round(v*p)/p,m=Math.round(m*p)/p,u=o.fromValues(Math.round(u[0]*p)/p,Math.round(u[1]*p)/p);var b=!c,y=[];if(0===v||0===m)y.push(u);else{v=Math.abs(v),m=Math.abs(m);var x=l,w=Math.cos(x),k=Math.sin(x),S=o.subtract(o.create(),g,u);o.scale(S,S,.5);var E=Math.round((w*S[0]+k*S[1])*p)/p,A=Math.round((-k*S[0]+w*S[1])*p)/p,_=o.fromValues(E,A),P=_[0]*_[0]/(v*v)+_[1]*_[1]/(m*m);if(P>1){var C=Math.sqrt(P);v*=C,m*=C,v=Math.round(v*p)/p,m=Math.round(m*p)/p}var M=Math.sqrt((v*v*m*m-v*v*_[1]*_[1]-m*m*_[0]*_[0])/(v*v*_[1]*_[1]+m*m*_[0]*_[0]));b===f&&(M=-M);var O=o.fromValues(v*_[1]/m,-m*_[0]/v);o.scale(O,O,M);var T=o.fromValues(w*O[0]-k*O[1],k*O[0]+w*O[1]);T=o.add(T,T,o.scale(o.create(),o.add(o.create(),g,u),.5));var j=o.fromValues((_[0]-O[0])/v,(_[1]-O[1])/m),D=o.fromValues((-_[0]-O[0])/v,(-_[1]-O[1])/m),z=o.angleRadians(j),N=o.angleRadians(D)-z;N%=n,!b&&N>0?N-=n:b&&N<0&&(N+=n);var F=Math.ceil(Math.abs(N)/n*d)+1;F<1&&(F=1);for(var R=1;R0&&(v*=m),h.push(v);for(var g=[],b=0;b<=p;++b){var y=h[p]/(h[b]*h[p-b]);g.push(y)}for(var x=o.create(),w=o.create(),k=a.create(),S=function(e){for(var t=1,r=Math.pow(1-e,p),n=1!==e?1/(1-e):1,a=o.create(),i=0;i<=p;++i){i===p&&(r=1);var u=g[i]*t*r,l=o.scale(x,s[i],u);o.add(a,a,l),t*=e,r*=n}return a},E=[],A=[],_=p+1,P=0;P<_;++P){var C=P/(_-1),M=S(C);E.push(M),A.push(C)}for(var O=1,T=n/l,j=Math.sin(T);Oj){var F=A[O-1],R=A[O+1],L=F+1*(R-F)/3,V=F+2*(R-F)/3,I=S(L),U=S(V);E.splice(O,1,I,U),A.splice(O,1,L,V),--O<1&&(O=1)}else++O}E.shift();var B=i(E,t);return B.lastBezierControlPoint=s[s.length-2],B}},61672:function(e,t,r){var n=r(64414),o=r(95747);e.exports=function(e,t){return n(t,o(e))}},50485:function(e,t,r){var n=r(60249),o=r(40955);e.exports=function(e){return n.isIdentity(e.transforms)||(e.points=e.points.map((function(t){return o.transform(o.create(),t,e.transforms)})),e.transforms=n.create()),e}},58698:function(e){e.exports=function(e){return Object.assign({},e)}},17134:function(e,t,r){var n=r(87508).EPS,o=r(40955),a=r(58698);e.exports=function(e){if(e.isClosed)return e;var t=a(e);if(t.isClosed=!0,t.points.length>1)for(var r=t.points,i=r[0],u=r[r.length-1];o.distance(i,u)0&&i.length>0&&a(i[0],t[t.length-1])&&i.shift(),i.length>0&&e)throw new Error("Cannot concatenate to a closed path; check the ".concat(n,"th path"));e=r.isClosed,t=t.concat(i)})),n({closed:e},t)}},95747:function(e,t,r){var n=r(60249);e.exports=function(e){return void 0===e&&(e=[]),{points:e,isClosed:!1,transforms:n.create()}}},23667:function(e,t,r){var n=r(40955),o=r(8054);e.exports=function(e,t){if(e.isClosed!==t.isClosed)return!1;if(e.points.length!==t.points.length)return!1;var r=o(e),a=o(t),i=r.length,u=0;do{for(var s=!1,l=0;l=0&&(t.color=[e[18],e[19],e[20],e[21]]),t}},30457:function(e,t,r){var n=r(87508).EPS,o=r(40955),a=r(17134),i=r(95747);e.exports=function(e,t){var r=Object.assign({},{closed:!1},e).closed,u=i();if(u.points=t.map((function(e){return o.clone(e)})),u.points.length>1){var s=u.points[0],l=u.points[u.points.length-1];o.distance(s,l)1)for(var t=0;to,s=0,l=0,c=r+1;--c;){var f=i[1]>o;if(u!==f){var d=a[0]>n,p=i[0]>n;(d&&p||i[0]-(i[1]-o)*(a[0]-i[0])/(a[1]-i[1])>=n)&&(s=!s)}u=f,a=i,i=t[++l]}return s};e.exports=function(e,t){if(0===e.length)return 0;var r=t.vertices;return r.length<3?0:(n(t)<0&&(t=o(t)),e.reduce((function(e,t){return e+a(t,r)}),0)===e.length?1:0)}},76474:function(e){e.exports=function(e){return(void 0===e||e.length<3)&&(e=[]),{vertices:e}}},25076:function(e,t,r){var n=r(76474);e.exports=function(e){var t=e.vertices.slice().reverse();return n(t)}},87905:function(e,t,r){e.exports={arePointsInside:r(17754),create:r(76474),flip:r(25076),measureArea:r(68514)}},68514:function(e,t,r){var n=r(15721);e.exports=function(e){return n(e.vertices)}},94766:function(e,t,r){var n=r(73010),o=r(96440);e.exports=function(){var e,t;return 1===arguments.length?(e=n(),t=arguments.length<=0?void 0:arguments[0]):(e=arguments.length<=0?void 0:arguments[0],t=arguments.length<=1?void 0:arguments[1]),e.vertices=t.vertices.map((function(e){return o.clone(e)})),e}},73010:function(e){e.exports=function(e){return(void 0===e||e.length<3)&&(e=[]),{vertices:e}}},12460:function(e,t,r){var n=r(96440),o=r(73010);e.exports=function(e){var t=e.map((function(e){return n.clone(e)}));return o(t)}},80429:function(e,t,r){var n=r(73010);e.exports=function(e,t){var r=n(e);return r.plane=t,r}},20259:function(e,t,r){e.exports={clone:r(94766),create:r(73010),fromPoints:r(12460),fromPointsAndPlane:r(80429),invert:r(55122),isA:r(67511),isConvex:r(45065),measureArea:r(16075),measureBoundingBox:r(77079),measureBoundingSphere:r(78538),measureSignedVolume:r(94886),plane:r(91036),toPoints:r(33088),toString:r(44322),transform:r(90044),validate:r(38205)}},55122:function(e,t,r){var n=r(38268),o=r(73010);e.exports=function(e){var t=e.vertices.slice().reverse(),r=o(t);return e.plane&&(r.plane=n.flip(n.create(),e.plane)),r}},67511:function(e){e.exports=function(e){return!!(e&&"object"===typeof e&&"vertices"in e&&Array.isArray(e.vertices))}},45065:function(e,t,r){var n=r(861).default,o=r(38268),a=r(96440),i=function(e){var t=e.length;if(t>2)for(var r=o.fromPoints.apply(o,[o.create()].concat(n(e))),a=e[t-2],i=e[t-1],s=0;s=0};e.exports=function(e){return i(e.vertices)}},16075:function(e,t,r){var n=r(91036);e.exports=function(e){var t=e.vertices.length;if(t<3)return 0;var r=e.vertices,o=n(e),a=Math.abs(o[0]),i=Math.abs(o[1]),u=Math.abs(o[2]);if(a+i+u===0)return 0;var s=3;a>i&&a>u?s=1:i>u&&(s=2);var l=0,c=0,f=1,d=2;switch(s){case 1:for(f=1;fe[0]&&(i=e),u[1]>e[1]&&(u=e),s[2]>e[2]&&(s=e),l[0]3){var r=l(e);e.vertices.forEach((function(e){var t=Math.abs(n(r,e));if(t>o)throw new Error("poly3 must be coplanar: vertex ".concat(e," distance ").concat(t))}))}}},68928:function(e,t,r){e.exports={colors:r(19334),curves:r(74383),geometries:r(31356),maths:r(65789),measurements:r(7841),primitives:r(48525),text:r(24210),utils:r(69093),booleans:r(13844),expansions:r(74159),extrusions:r(85110),hulls:r(60604),modifiers:r(52639),transforms:r(83303)}},68693:function(e,t,r){var n=r(60249),o=r(40955),a=r(96440),i=function(e,t){arguments.length<2&&(t=a.orthogonal(a.create(),e)),this.v=a.normalize(a.create(),a.cross(a.create(),e,t)),this.u=a.cross(a.create(),this.v,e),this.plane=e,this.planeorigin=a.scale(a.create(),e,e[3])};i.GetCartesian=function(e,t){var r,n,o=e+"/"+t;if("X/Y"===o)r=[0,0,1],n=[1,0,0];else if("Y/-X"===o)r=[0,0,1],n=[0,1,0];else if("-X/-Y"===o)r=[0,0,1],n=[-1,0,0];else if("-Y/X"===o)r=[0,0,1],n=[0,-1,0];else if("-X/Y"===o)r=[0,0,-1],n=[-1,0,0];else if("-Y/-X"===o)r=[0,0,-1],n=[0,-1,0];else if("X/-Y"===o)r=[0,0,-1],n=[1,0,0];else if("Y/X"===o)r=[0,0,-1],n=[0,1,0];else if("X/Z"===o)r=[0,-1,0],n=[1,0,0];else if("Z/-X"===o)r=[0,-1,0],n=[0,0,1];else if("-X/-Z"===o)r=[0,-1,0],n=[-1,0,0];else if("-Z/X"===o)r=[0,-1,0],n=[0,0,-1];else if("-X/Z"===o)r=[0,1,0],n=[-1,0,0];else if("-Z/-X"===o)r=[0,1,0],n=[0,0,-1];else if("X/-Z"===o)r=[0,1,0],n=[1,0,0];else if("Z/X"===o)r=[0,1,0],n=[0,0,1];else if("Y/Z"===o)r=[1,0,0],n=[0,1,0];else if("Z/-Y"===o)r=[1,0,0],n=[0,0,1];else if("-Y/-Z"===o)r=[1,0,0],n=[0,-1,0];else if("-Z/Y"===o)r=[1,0,0],n=[0,0,-1];else if("-Y/Z"===o)r=[-1,0,0],n=[0,-1,0];else if("-Z/-Y"===o)r=[-1,0,0],n=[0,0,-1];else if("Y/-Z"===o)r=[-1,0,0],n=[0,1,0];else{if("Z/Y"!==o)throw new Error("OrthoNormalBasis.GetCartesian: invalid combination of axis identifiers. Should pass two string arguments from [X,Y,Z,-X,-Y,-Z], being two different axes.");r=[-1,0,0],n=[0,0,1]}return new i(new Plane(new Vector3D(r),0),new Vector3D(n))},i.Z0Plane=function(){var e=new Plane(new Vector3D([0,0,1]),0);return new i(e,new Vector3D([1,0,0]))},i.prototype={getProjectionMatrix:function(){return n.fromValues(this.u[0],this.v[0],this.plane[0],0,this.u[1],this.v[1],this.plane[1],0,this.u[2],this.v[2],this.plane[2],0,0,0,-this.plane[3],1)},getInverseProjectionMatrix:function(){var e=a.scale(a.create(),this.plane,this.plane[3]);return n.fromValues(this.u[0],this.u[1],this.u[2],0,this.v[0],this.v[1],this.v[2],0,this.plane[0],this.plane[1],this.plane[2],0,e[0],e[1],e[2],1)},to2D:function(e){return o.fromValues(a.dot(e,this.u),a.dot(e,this.v))},to3D:function(e){var t=a.scale(a.create(),this.u,e[0]),r=a.scale(a.create(),this.v,e[1]),n=a.add(t,t,this.planeorigin);return a.add(r,r,n)},line3Dto2D:function(e){var t=e.point,r=e.direction.plus(t),n=this.to2D(t),o=this.to2D(r);return Line2D.fromPoints(n,o)},line2Dto3D:function(e){var t=e.origin(),r=e.direction().plus(t),n=this.to3D(t),o=this.to3D(r);return Line3D.fromPoints(n,o)},transform:function(e){var t=this.plane.transform(e),r=this.u.transform(e),n=new Vector3D(0,0,0).transform(e),o=r.minus(n);return new i(t,o)}},e.exports=i},87508:function(e){var t=2*Math.PI;e.exports={EPS:1e-5,NEPS:1e-13,TAU:t,spatialResolution:1e5}},65789:function(e,t,r){e.exports={constants:r(87508),line2:r(55617),line3:r(12163),mat4:r(60249),plane:r(38268),utils:r(50660),vec2:r(40955),vec3:r(96440),vec4:r(87818)}},480:function(e,t,r){var n=r(58768);e.exports=function(e){var t=n();return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}},46372:function(e,t,r){var n=r(40955),o=r(41555),a=r(69581);e.exports=function(e,t){var r=a(e),i=o(e),u=n.subtract(n.create(),t,r),s=n.dot(u,i);return n.scale(u,i,s),n.add(u,u,r),u}},87889:function(e){e.exports=function(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}},58768:function(e){e.exports=function(){return[0,1,0]}},41555:function(e,t,r){var n=r(40955);e.exports=function(e){var t=n.normal(n.create(),e);return n.negate(t,t),t}},36042:function(e,t,r){var n=r(40955);e.exports=function(e,t){var r=n.dot(t,e);return r=Math.abs(r-e[2])}},29549:function(e){e.exports=function(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}},39962:function(e,t,r){var n=r(40955);e.exports=function(e,t,r){var o=n.subtract(n.create(),r,t);n.normal(o,o),n.normalize(o,o);var a=n.dot(t,o);return e[0]=o[0],e[1]=o[1],e[2]=a,e}},27536:function(e,t,r){var n=r(58768);e.exports=function(e,t,r){var o=n();return o[0]=e,o[1]=t,o[2]=r,o}},55617:function(e,t,r){e.exports={clone:r(480),closestPoint:r(46372),copy:r(87889),create:r(58768),direction:r(41555),distanceToPoint:r(36042),equals:r(29549),fromPoints:r(39962),fromValues:r(27536),intersectPointOfLines:r(44796),origin:r(69581),reverse:r(88855),toString:r(91973),transform:r(92339),xAtY:r(96477)}},44796:function(e,t,r){var n=r(40955),o=r(50660).solve2Linear;e.exports=function(e,t){var r=o(e[0],e[1],t[0],t[1],e[2],t[2]);return n.clone(r)}},69581:function(e,t,r){var n=r(40955);e.exports=function(e){return n.scale(n.create(),e,e[2])}},88855:function(e,t,r){var n=r(40955),o=r(87889),a=r(27536);e.exports=function(e,t){var r=n.negate(n.create(),t),i=-t[2];return o(e,a(r[0],r[1],i))}},91973:function(e){e.exports=function(e){return"line2: (".concat(e[0].toFixed(7),", ").concat(e[1].toFixed(7),", ").concat(e[2].toFixed(7),")")}},92339:function(e,t,r){var n=r(40955),o=r(39962),a=r(69581),i=r(41555);e.exports=function(e,t,r){var u=a(t),s=i(t);return n.transform(u,u,r),n.transform(s,s,r),o(e,u,s)}},96477:function(e,t,r){var n=r(69581);e.exports=function(e,t){var r=(e[2]-e[1]*t)/e[0];Number.isNaN(r)&&(r=n(e)[0]);return r}},5690:function(e,t,r){var n=r(96440),o=r(24470);e.exports=function(e){var t=o();return n.copy(t[0],e[0]),n.copy(t[1],e[1]),t}},21952:function(e,t,r){var n=r(96440);e.exports=function(e,t){var r=e[0],o=e[1],a=n.dot(n.subtract(n.create(),t,r),o)/n.dot(o,o),i=n.scale(n.create(),o,a);return n.add(i,i,r),i}},85076:function(e,t,r){var n=r(96440);e.exports=function(e,t){return n.copy(e[0],t[0]),n.copy(e[1],t[1]),e}},24470:function(e,t,r){var n=r(96440);e.exports=function(){return[n.fromValues(0,0,0),n.fromValues(0,0,1)]}},15959:function(e){e.exports=function(e){return e[1]}},56490:function(e,t,r){var n=r(96440),o=r(21952);e.exports=function(e,t){var r=o(e,t),a=n.subtract(n.create(),t,r);return n.length(a)}},87576:function(e,t,r){var n=r(96440);e.exports=function(e,t){return!!n.equals(e[1],t[1])&&!!n.equals(e[0],t[0])}},32171:function(e,t,r){var n=r(96440),o=r(50660).solve2Linear,a=r(87508).EPS,i=r(49992);e.exports=function(e,t,r){var u=n.cross(n.create(),t,r),s=n.length(u);if(s=d&&f>=p?(c=o(t[1],t[2],r[1],r[2],t[3],r[3]),l=n.fromValues(0,c[0],c[1])):d>=f&&d>=p?(c=o(t[0],t[2],r[0],r[2],t[3],r[3]),l=n.fromValues(c[0],0,c[1])):(c=o(t[0],t[1],r[0],r[1],t[3],r[3]),l=n.fromValues(c[0],c[1],0)),i(e,l,u)}},49992:function(e,t,r){var n=r(96440);e.exports=function(e,t,r){var o=n.normalize(n.create(),r);return n.copy(e[0],t),n.copy(e[1],o),e}},32805:function(e,t,r){var n=r(96440),o=r(49992);e.exports=function(e,t,r){var a=n.subtract(n.create(),r,t);return o(e,t,a)}},12163:function(e,t,r){e.exports={clone:r(5690),closestPoint:r(21952),copy:r(85076),create:r(24470),direction:r(15959),distanceToPoint:r(56490),equals:r(87576),fromPlanes:r(32171),fromPointAndDirection:r(49992),fromPoints:r(32805),intersectPointOfLineAndPlane:r(79805),origin:r(32807),reverse:r(86241),toString:r(11516),transform:r(10983)}},79805:function(e,t,r){var n=r(96440);e.exports=function(e,t){var r=t,o=t[3],a=e[0],i=e[1],u=(o-n.dot(r,a))/n.dot(r,i);return n.add(n.create(),a,n.scale(n.create(),i,u))}},32807:function(e){e.exports=function(e){return e[0]}},86241:function(e,t,r){var n=r(96440),o=r(49992);e.exports=function(e,t){var r=n.clone(t[0]),a=n.negate(n.create(),t[1]);return o(e,r,a)}},11516:function(e){e.exports=function(e){var t=e[0],r=e[1];return"line3: point: (".concat(t[0].toFixed(7),", ").concat(t[1].toFixed(7),", ").concat(t[2].toFixed(7),") direction: (").concat(r[0].toFixed(7),", ").concat(r[1].toFixed(7),", ").concat(r[2].toFixed(7),")")}},10983:function(e,t,r){var n=r(96440),o=r(49992);e.exports=function(e,t,r){var a=t[0],i=t[1],u=n.add(n.create(),a,i),s=n.transform(n.create(),a,r),l=n.transform(u,u,r),c=n.subtract(l,l,s);return o(e,s,c)}},35049:function(e){e.exports=function(e,t,r){return e[0]=t[0]+r[0],e[1]=t[1]+r[1],e[2]=t[2]+r[2],e[3]=t[3]+r[3],e[4]=t[4]+r[4],e[5]=t[5]+r[5],e[6]=t[6]+r[6],e[7]=t[7]+r[7],e[8]=t[8]+r[8],e[9]=t[9]+r[9],e[10]=t[10]+r[10],e[11]=t[11]+r[11],e[12]=t[12]+r[12],e[13]=t[13]+r[13],e[14]=t[14]+r[14],e[15]=t[15]+r[15],e}},55534:function(e,t,r){var n=r(17380);e.exports=function(e){var t=n();return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}},59272:function(e){e.exports=function(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}},17380:function(e){e.exports=function(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}},945:function(e){e.exports=function(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]}},94078:function(e,t,r){var n=r(27424).default,o=r(87508).EPS,a=r(82315),i=a.sin,u=a.cos,s=r(76570);e.exports=function(e,t,r){var a=n(r,3),l=a[0],c=a[1],f=a[2],d=l*l+c*c+f*f;if(Math.abs(d)1?t-1:0),o=1;o=a?1:a<1e-10?.5:o/a,e[0]+n*(t[0]-e[0])}},54839:function(e){e.exports=function(e,t,r,n){if(!(e[0]===t[0]&&e[1]===t[1]||r[0]===n[0]&&r[1]===n[1])){var o=(n[1]-r[1])*(t[0]-e[0])-(n[0]-r[0])*(t[1]-e[1]);if(!(Math.abs(o)1||i<0||i>1))return[e[0]+a*(t[0]-e[0]),e[1]+a*(t[1]-e[1])]}}}},21836:function(e){e.exports=function(e,t,r,n,o,a){var i=1/(e*n-t*r),u=o*n-t*a,s=-o*r+e*a;return[u*=i,s*=i]}},82315:function(e,t,r){var n=r(87508).NEPS,o=function(e){return Math.abs(e)0&&(o=1/Math.sqrt(o)),e[0]=r*o,e[1]=n*o,e}},59596:function(e){e.exports=function(e,t,r,n){var o=t[0]-r[0],a=t[1]-r[1],i=Math.cos(n),u=Math.sin(n);return e[0]=o*i-a*u+r[0],e[1]=o*u+a*i+r[1],e}},49808:function(e){e.exports=function(e,t,r){return e[0]=t[0]*r,e[1]=t[1]*r,e}},91128:function(e){e.exports=function(e,t,r){return e[0]=Math.round(t[0]/r)*r+0,e[1]=Math.round(t[1]/r)*r+0,e}},36674:function(e){e.exports=function(e,t){var r=t[0]-e[0],n=t[1]-e[1];return r*r+n*n}},20912:function(e){e.exports=function(e){var t=e[0],r=e[1];return t*t+r*r}},98080:function(e){e.exports=function(e,t,r){return e[0]=t[0]-r[0],e[1]=t[1]-r[1],e}},98861:function(e){e.exports=function(e){return"[".concat(e[0].toFixed(7),", ").concat(e[1].toFixed(7),"]")}},21370:function(e){e.exports=function(e,t,r){var n=t[0],o=t[1];return e[0]=r[0]*n+r[4]*o+r[12],e[1]=r[1]*n+r[5]*o+r[13],e}},22639:function(e){e.exports=function(e,t){return e[0]=Math.abs(t[0]),e[1]=Math.abs(t[1]),e[2]=Math.abs(t[2]),e}},41582:function(e){e.exports=function(e,t,r){return e[0]=t[0]+r[0],e[1]=t[1]+r[1],e[2]=t[2]+r[2],e}},7527:function(e,t,r){var n=r(45121);e.exports=function(e,t){var r=e[0],o=e[1],a=e[2],i=t[0],u=t[1],s=t[2],l=Math.sqrt(r*r+o*o+a*a)*Math.sqrt(i*i+u*u+s*s),c=l&&n(e,t)/l;return Math.acos(Math.min(Math.max(c,-1),1))}},28770:function(e,t,r){var n=r(14984);e.exports=function(e){var t=n();return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}},97784:function(e){e.exports=function(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}},14984:function(e){e.exports=function(){return[0,0,0]}},24555:function(e){e.exports=function(e,t,r){var n=t[0],o=t[1],a=t[2],i=r[0],u=r[1],s=r[2];return e[0]=o*s-a*u,e[1]=a*i-n*s,e[2]=n*u-o*i,e}},89540:function(e){e.exports=function(e,t){var r=t[0]-e[0],n=t[1]-e[1],o=t[2]-e[2];return Math.sqrt(r*r+n*n+o*o)}},67575:function(e){e.exports=function(e,t,r){return e[0]=t[0]/r[0],e[1]=t[1]/r[1],e[2]=t[2]/r[2],e}},45121:function(e){e.exports=function(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}},44969:function(e){e.exports=function(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}},91174:function(e){e.exports=function(e,t){return e[0]=t,e[1]=t,e[2]=t,e}},38501:function(e,t,r){var n=r(14984);e.exports=function(e,t,r){var o=n();return o[0]=e,o[1]=t,o[2]=r,o}},27967:function(e){e.exports=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return e[0]=t[0],e[1]=t[1],e[2]=r,e}},96440:function(e,t,r){e.exports={abs:r(22639),add:r(41582),angle:r(7527),clone:r(28770),copy:r(97784),create:r(14984),cross:r(24555),distance:r(89540),divide:r(67575),dot:r(45121),equals:r(44969),fromScalar:r(91174),fromValues:r(38501),fromVec2:r(27967),length:r(15621),lerp:r(71396),max:r(5365),min:r(42293),multiply:r(96877),negate:r(31587),normalize:r(15003),orthogonal:r(70230),rotateX:r(21902),rotateY:r(5891),rotateZ:r(14636),scale:r(89590),snap:r(49522),squaredDistance:r(15283),squaredLength:r(84078),subtract:r(25185),toString:r(87811),transform:r(70754)}},15621:function(e){e.exports=function(e){var t=e[0],r=e[1],n=e[2];return Math.sqrt(t*t+r*r+n*n)}},71396:function(e){e.exports=function(e,t,r,n){return e[0]=t[0]+n*(r[0]-t[0]),e[1]=t[1]+n*(r[1]-t[1]),e[2]=t[2]+n*(r[2]-t[2]),e}},5365:function(e){e.exports=function(e,t,r){return e[0]=Math.max(t[0],r[0]),e[1]=Math.max(t[1],r[1]),e[2]=Math.max(t[2],r[2]),e}},42293:function(e){e.exports=function(e,t,r){return e[0]=Math.min(t[0],r[0]),e[1]=Math.min(t[1],r[1]),e[2]=Math.min(t[2],r[2]),e}},96877:function(e){e.exports=function(e,t,r){return e[0]=t[0]*r[0],e[1]=t[1]*r[1],e[2]=t[2]*r[2],e}},31587:function(e){e.exports=function(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}},15003:function(e){e.exports=function(e,t){var r=t[0],n=t[1],o=t[2],a=r*r+n*n+o*o;return a>0&&(a=1/Math.sqrt(a)),e[0]=r*a,e[1]=n*a,e[2]=o*a,e}},70230:function(e,t,r){var n=r(22639),o=r(14984),a=r(24555);e.exports=function(e,t){var r=n(o(),t),i=0+(r[0]0){var o=l.toPoints(r[0]);a.copy(n,o[0])}var i=a.clone(n);return r.forEach((function(e){l.toPoints(e).forEach((function(e){a.min(n,n,e),a.max(i,i,e)}))})),n=[n[0],n[1],n[2]],i=[i[0],i[1],i[2]],t=[n,i],c.set(e,t),t}(e):[[0,0,0],[0,0,0]]}));return 1===f.length?f[0]:f}},26226:function(e,t,r){var n=r(18875),o=r(40955),a=r(96440),i=r(22985),u=r(38782),s=r(75720),l=r(20259),c=new WeakMap;e.exports=function(){for(var e=arguments.length,t=new Array(e),r=0;r0){var u=0,l=a.create();i.forEach((function(e){a.add(r,r,a.fromVec2(l,e,0)),u++})),a.scale(r,r,1/u),i.forEach((function(e){n=Math.max(n,o.squaredDistance(r,e))})),n=Math.sqrt(n)}return t=[r,n],c.set(e,t),t}(e):i.isA(e)?function(e){var t=c.get(e);if(void 0!==t)return t;var r=a.create(),n=0,u=i.toSides(e);if(u.length>0){var s=0,l=a.create();u.forEach((function(e){a.add(r,r,a.fromVec2(l,e[0],0)),s++})),a.scale(r,r,1/s),u.forEach((function(e){n=Math.max(n,o.squaredDistance(r,e[0]))})),n=Math.sqrt(n)}return t=[r,n],c.set(e,t),t}(e):u.isA(e)?function(e){var t=c.get(e);if(void 0!==t)return t;var r=a.create(),n=0,o=u.toPolygons(e);if(o.length>0){var i=0;o.forEach((function(e){l.toPoints(e).forEach((function(e){a.add(r,r,e),i++}))})),a.scale(r,r,1/i),o.forEach((function(e){l.toPoints(e).forEach((function(e){n=Math.max(n,a.squaredDistance(r,e))}))})),n=Math.sqrt(n)}return t=[r,n],c.set(e,t),t}(e):[[0,0,0],0]}));return 1===f.length?f[0]:f}},10503:function(e,t,r){var n=r(18875),o=r(61289);e.exports=function(){for(var e=arguments.length,t=new Array(e),r=0;r0){for(var l=0;l0&&(r.push(t),!0)}));if(2!==o.length)throw new Error("Assertion failed: fromFakePolygon: not enough points found");var a=o.map((function(t){var r=Math.round(t[0]/e)*e+0,o=Math.round(t[1]/e)*e+0;return n.fromValues(r,o)}));if(n.equals(a[0],a[1]))return null;var i=r[1]-r[0];if(1!==i&&3!==i)throw new Error("Assertion failed: fromFakePolygon: unknown index ordering");return 1===i&&a.reverse(),a}(e,t)})).filter((function(e){return null!==e}));return o.create(r)}},13844:function(e,t,r){e.exports={intersect:r(58246),scission:r(25263),subtract:r(63476),union:r(41039)}},58246:function(e,t,r){var n=r(18875),o=r(6650),a=r(22985),i=r(38782),u=r(93783),s=r(55757);e.exports=function(){for(var e=arguments.length,t=new Array(e),r=0;rn)&&(!(a[0]-l[0]>n)&&(!(s[1]-i[1]>n)&&(!(a[1]-l[1]>n)&&(!(s[2]-i[2]>n)&&!(a[2]-l[2]>n)))))}},25263:function(e,t,r){var n=r(18875),o=r(38782),a=r(48592);e.exports=function(){for(var e=arguments.length,t=new Array(e),r=0;r0){var t=new Array(i);t[p]=!0;do{c=0,t.forEach((function(e,r){var n=l[r];if(n.e>0){n.e=-1;for(var o=0;o0);e.indexes=t}},p=0;p0&&o.push({node:r.front,polygontreenodes:u});var d=i.length;if(r.back&&d>0)o.push({node:r.back,polygontreenodes:i});else for(var p=0;p0&&e.rootnode.clipPolygons(r.polygontreenodes,t),r.front&&n.push(r.front),r.back&&n.push(r.back),r=n.pop()}while(void 0!==r)}},{key:"addPolygonTreeNodes",value:function(t){var r={node:this,polygontreenodes:t},n=[];do{var o=r.node,a=r.polygontreenodes;if(0!==a.length){if(!o.plane){var u=a[Math.floor(a.length/2)].getPolygon();o.plane=i.plane(u)}for(var s=[],l=[],c=a.length,f=0;f0)o.front||(o.front=new e(o)),c===s.length&&0===l.length?o.front.polygontreenodes=s:n.push({node:o.front,polygontreenodes:s});if(l.length>0)o.back||(o.back=new e(o)),c===l.length&&0===s.length?o.back.polygontreenodes=l:n.push({node:o.back,polygontreenodes:l});r=n.pop()}else r=n.pop()}while(void 0!==r)}}]),e}();e.exports=u},71342:function(e,t,r){var n=r(56690).default,o=r(89728).default,a=r(87508).EPS,i=r(96440),u=r(20259),s=r(37033),l=function(){"use strict";function e(t,r){n(this,e),this.parent=t,this.children=[],this.polygon=r,this.removed=!1}return o(e,[{key:"addPolygons",value:function(e){if(!this.isRootNode())throw new Error("Assertion failed");var t=this;e.forEach((function(e){t.addChild(e)}))}},{key:"remove",value:function(){if(!this.removed){this.removed=!0,this.polygon=null;var e=this.parent.children,t=e.indexOf(this);if(t<0)throw new Error("Assertion failed");e.splice(t,1),this.parent.recursivelyInvalidatePolygon()}}},{key:"isRemoved",value:function(){return this.removed}},{key:"isRootNode",value:function(){return!this.parent}},{key:"invert",value:function(){if(!this.isRootNode())throw new Error("Assertion failed");this.invertSub()}},{key:"getPolygon",value:function(){if(!this.polygon)throw new Error("Assertion failed");return this.polygon}},{key:"getPolygons",value:function(e){var t,r,n,o,a=[this],i=[a];for(t=0;t0&&i.push(o.children)}},{key:"splitByPlane",value:function(e,t,r,n,o){if(this.children.length){var a,i,u,s,l,c=[this.children];for(a=0;a0?c.push(s.children):s._splitByPlane(e,t,r,n,o)}else this._splitByPlane(e,t,r,n,o)}},{key:"_splitByPlane",value:function(e,t,r,n,o){var l=this.polygon;if(l){var c=u.measureBoundingSphere(l),f=c[3]+a,d=c,p=i.dot(e,d)-e[3];if(p>f)n.push(this);else if(p<-f)o.push(this);else{var h=s(e,l);switch(h.type){case 0:t.push(this);break;case 1:r.push(this);break;case 2:n.push(this);break;case 3:o.push(this);break;case 4:if(h.front){var v=this.addChild(h.front);n.push(v)}if(h.back){var m=this.addChild(h.back);o.push(m)}}}}}},{key:"addChild",value:function(t){var r=new e(this,t);return this.children.push(r),r}},{key:"invertSub",value:function(){var e,t,r,n,o=[this],a=[o];for(e=0;e0&&a.push(n.children)}},{key:"recursivelyInvalidatePolygon",value:function(){this.polygon=null,this.parent&&this.parent.recursivelyInvalidatePolygon()}},{key:"clear",value:function(){for(var e=[this],t=[e],r=0;r0&&t.push(a.children),a.children=[]}}},{key:"toString",value:function(){var e,t,r,n,o="",a=[this],i=[a];for(e=0;e0&&i.push(n.children)}return o}}]),e}();e.exports=l},7066:function(e,t,r){var n=r(56690).default,o=r(89728).default,a=r(26724),i=r(71342),u=function(){"use strict";function e(t){n(this,e),this.polygonTree=new i,this.rootnode=new a(null),t&&this.addPolygons(t)}return o(e,[{key:"invert",value:function(){this.polygonTree.invert(),this.rootnode.invert()}},{key:"clipTo",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.rootnode.clipTo(e,t)}},{key:"allPolygons",value:function(){var e=[];return this.polygonTree.getPolygons(e),e}},{key:"addPolygons",value:function(e){for(var t=new Array(e.length),r=0;r1&&(a=1),a<0&&(a=0),n.scale(o,o,a),n.add(o,t,o),o}},37033:function(e,t,r){var n=r(87508).EPS,o=r(38268),a=r(96440),i=r(20259),u=r(13719);e.exports=function(e,t){var r={type:null,front:null,back:null},s=t.vertices,l=s.length,c=i.plane(t);if(o.equals(c,e))r.type=0;else{for(var f=!1,d=!1,p=[],h=-n,v=0;vn&&(f=!0),m=l&&(S=0);var E=p[S];if(x===E)x?y.push(k):b.push(k);else{var A=s[S],_=u(e,k,A);x?(y.push(k),y.push(_),b.push(_)):(b.push(k),b.push(_),y.push(_))}x=E}var P=n*n;if(y.length>=3)for(var C=y[y.length-1],M=0;M=3)for(var T=b[b.length-1],j=0;j=3&&(r.front=i.fromPointsAndPlane(b,c)),y.length>=3&&(r.back=i.fromPointsAndPlane(y,c))}else r.type=3;else r.type=2;else{var z=a.dot(e,c);r.type=z>=0?0:1}}return r}},41039:function(e,t,r){var n=r(18875),o=r(6650),a=r(22985),i=r(38782),u=r(41239),s=r(17236);e.exports=function(){for(var e=arguments.length,t=new Array(e),r=0;r1?t-1:0),c=1;c0)for(var p=Math.PI/c,h=u[u.length-1],v=a.angle(a.subtract(a.create(),s[s.length-1],h)),m=u[0],g=a.angle(a.subtract(a.create(),l[0],m)),b=1;b=0&&u.distance(V,M)=0){j.push(V),D.push(I);var B=[O,I,V,M],q=c.create(B);z.push(q)}M=V,O=I}}D.reverse(),z.push(c.create(j)),z.push(c.create(D));var H=l.create(z);y=p(y,H)})),x.forEach((function(e){for(var t=e[0],r=e[1],o=r[0],a=null,i=0,s=1;s.05&&d>i&&(i=d,a=l)}a||(a=u.orthogonal(k,o));var h=u.cross(k,o,a);u.normalize(h,h);var v=u.cross(S,h,o),m=f({center:[t[0],t[1],t[2]],radius:n,segments:b,axes:[o,h,v]});y=p(y,m)})),d(y)}},26970:function(e,t,r){var n=r(60249),o=r(96440),a=r(38782),i=r(20259);e.exports=function(e,t){o.dot(i.plane(t),e)>0&&(t=i.invert(t));for(var r=[t],u=i.transform(n.fromTranslation(n.create(),e),t),s=t.vertices.length,l=0;l1?t-1:0),s=1;s0&&n>=0||p<0&&n<0;n=Math.abs(n);for(var v=null,m=[],g=[],b=s.create(),y=t.length,x=0;x0&&(t-=Math.PI)>0&&(t-=Math.PI),0!==t){for(var r=t/(F=Math.floor(d*(Math.abs(t)/a))),o=s.angle(s.subtract(R,e.s0[1],e.c)),i=[],u=1;u0){var f,p=e.s0[1],v=m.findIndex((function(e){return s.equals(p,e)}));v=(v+1)%m.length,(f=m).splice.apply(f,[v,0].concat(i))}}else{var g=e.s1[0],b=m.findIndex((function(e){return s.equals(g,e)}));m.splice(b,1)}}))}return m}},72152:function(e,t,r){var n=r(22985),o=r(87905),a=r(36255);e.exports=function(e,t){var r=Object.assign({},{delta:1,corners:"edge",segments:0},e),i=r.delta,u=r.corners,s=r.segments;if("edge"!==u&&"chamfer"!==u&&"round"!==u)throw new Error('corners must be "edge", "chamfer", or "round"');var l=n.toOutlines(t),c=l.map((function(t){var r=l.reduce((function(e,r){return e+o.arePointsInside(t,o.create(r))}),0);return a(e={delta:r%2===0?i:-i,corners:u,closed:!0,segments:s},t)})).reduce((function(e,t){return e.concat(n.toSides(n.fromPoints(t)))}),[]);return n.create(c)}},24056:function(e,t,r){var n=r(75720),o=r(36255);e.exports=function(e,t){var r={delta:1,corners:"edge",closed:t.isClosed,segments:16},a=Object.assign({},r,e),i=a.delta,u=a.corners,s=a.closed,l=a.segments;if("edge"!==u&&"chamfer"!==u&&"round"!==u)throw new Error('corners must be "edge", "chamfer", or "round"');var c=o(e={delta:i,corners:u,closed:s,segments:l},n.toPoints(t));return n.fromPoints({closed:s},c)}},44174:function(e,t,r){var n=r(50660).area,o=r(22985).toOutlines,a=r(87905).arePointsInside,i=function(e,t){var r,n;return e.forEach((function(e,o){var a=t(e);(void 0===n||a0&&r.push(t)}));var s=[],l=[];return r.forEach((function(e,r){var n=t[e];s[r]=[],u.forEach((function(e,o){var i=t[e];a([i[0]],{vertices:n})&&(s[r].push(e),l[o]||(l[o]=[]),l[o].push(r))}))})),u.forEach((function(e,t){if(l[t]&&l[t].length>1){var r=i(l[t],(function(e){return s[e].length}));l[t].forEach((function(t,n){n!==r&&(s[t]=s[t].filter((function(t){return t!==e})))}))}})),s.map((function(e,n){return{solid:t[r[n]],holes:e.map((function(e){return t[e]}))}}))}},26189:function(e,t,r){var n=r(31124),o=n.filterPoints,a=n.linkedPolygon,i=n.locallyInside,u=n.splitPolygon,s=r(10957),l=s.area,c=s.pointInTriangle,f=function(e,t){var r=d(e,t);if(!r)return t;var n=u(r,e),a=o(r,r.next);return o(n,n.next),t===r?a:t},d=function(e,t){var r,n=t,o=e.x,a=e.y,u=-1/0;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){var s=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(s<=o&&s>u){if(u=s,s===o){if(a===n.y)return n;if(a===n.next.y)return n.next}r=n.x=n.x&&n.x>=f&&o!==n.x&&c(ar.x||n.x===r.x&&p(r,n)))&&(r=n,h=v)}n=n.next}while(n!==l);return r},p=function(e,t){return l(e.prev,e,t.prev)<0&&l(t.next,e,e.next)<0},h=function(e){var t=e,r=e;do{(t.x=0)return!1;for(var o=e.next.next;o!==e.prev;){if(v(t.x,t.y,r.x,r.y,n.x,n.y,o.x,o.y)&&h(o.prev,o,o.next)>=0)return!1;o=o.next}return!0},b=function(e,t,r,n){var o=e.prev,a=e,i=e.next;if(h(o,a,i)>=0)return!1;for(var u=o.xa.x?o.x>i.x?o.x:i.x:a.x>i.x?a.x:i.x,c=o.y>a.y?o.y>i.y?o.y:i.y:a.y>i.y?a.y:i.y,f=w(u,s,t,r,n),d=w(l,c,t,r,n),p=e.prevZ,m=e.nextZ;p&&p.z>=f&&m&&m.z<=d;){if(p!==e.prev&&p!==e.next&&v(o.x,o.y,a.x,a.y,i.x,i.y,p.x,p.y)&&h(p.prev,p,p.next)>=0)return!1;if(p=p.prevZ,m!==e.prev&&m!==e.next&&v(o.x,o.y,a.x,a.y,i.x,i.y,m.x,m.y)&&h(m.prev,m,m.next)>=0)return!1;m=m.nextZ}for(;p&&p.z>=f;){if(p!==e.prev&&p!==e.next&&v(o.x,o.y,a.x,a.y,i.x,i.y,p.x,p.y)&&h(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;m&&m.z<=d;){if(m!==e.prev&&m!==e.next&&v(o.x,o.y,a.x,a.y,i.x,i.y,m.x,m.y)&&h(m.prev,m,m.next)>=0)return!1;m=m.nextZ}return!0},y=function(e,t,r,n,o,a){var i=e;do{for(var u=i.next.next;u!==i.prev;){if(i.i!==u.i&&c(i,u)){var s=d(i,u);return i=l(i,i.next),s=l(s,s.next),m(i,t,r,n,o,a),void m(s,t,r,n,o,a)}u=u.next}i=i.next}while(i!==e)},x=function(e,t,r,n){var o=e;do{null===o.z&&(o.z=w(o.x,o.y,t,r,n)),o.prevZ=o.prev,o.nextZ=o.next,o=o.next}while(o!==e);o.prevZ.nextZ=null,o.prevZ=null,i(o,(function(e){return e.z}))},w=function(e,t,r,n,o){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-r)*o)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-n)*o)|t<<8))|t<<4))|t<<2))|t<<1))<<1};e.exports=function(e,t){var r,o,a,i,u,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2,l=t&&t.length,c=l?t[0]*s:e.length,d=f(e,0,c,s,!0),p=[];if(!d||d.next===d.prev)return p;if(l&&(d=n(e,t,d,s)),e.length>80*s){r=a=e[0],o=i=e[1];for(var h=s;ha&&(a=v),g>i&&(i=g)}u=0!==(u=Math.max(a-r,i-o))?1/u:0}return m(d,p,s,r,o,u),p}},49029:function(e,t,r){var n=r(89728).default,o=r(56690).default,a=r(8993),i=n((function e(t,r,n){"use strict";o(this,e),this.i=t,this.x=r,this.y=n,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}));e.exports={Node:i,insertNode:function(e,t,r,n){var o=new i(e,t,r);return n?(o.next=n.next,o.prev=n,n.next.prev=o,n.next=o):(o.prev=o,o.next=o),o},removeNode:function(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)},sortLinked:a}},8993:function(e){e.exports=function(e,t){var r,n,o,a,i,u=1;do{n=e,e=null;var s=null;for(i=0;n;){i++,o=n;var l=0;for(r=0;r0||c>0&&o;)0!==l&&(0===c||!o||t(n)<=t(o))?(a=n,n=n.nextZ,l--):(a=o,o=o.nextZ,c--),s?s.nextZ=a:e=a,a.prevZ=s,s=a;n=o}s.nextZ=null,u*=2}while(i>1);return e}},31124:function(e,t,r){var n=r(49029),o=n.Node,a=n.insertNode,i=n.removeNode,u=r(10957).area,s=function(e,t){if(!e)return e;t||(t=e);var r,n=e;do{if(r=!1,n.steiner||!p(n,n.next)&&0!==u(n.prev,n,n.next))n=n.next;else{if(i(n),(n=t=n.prev)===n.next)break;r=!0}}while(r||n!==t);return t},l=function(e,t){return u(e.prev,e,e.next)<0?u(e,t,e.next)>=0&&u(e,e.prev,t)>=0:u(e,t,e.prev)<0||u(e,e.next,t)<0},c=function(e,t,r,n){var o=Math.sign(u(e,t,r)),a=Math.sign(u(e,t,n)),i=Math.sign(u(r,n,e)),s=Math.sign(u(r,n,t));return o!==a&&i!==s||(!(0!==o||!f(e,r,t))||(!(0!==a||!f(e,n,t))||(!(0!==i||!f(r,e,n))||!(0!==s||!f(r,t,n)))))},f=function(e,t,r){return t.x<=Math.max(e.x,r.x)&&t.x>=Math.min(e.x,r.x)&&t.y<=Math.max(e.y,r.y)&&t.y>=Math.min(e.y,r.y)},d=function(e,t,r,n){for(var o=0,a=t,i=r-n;aa!==r.next.y>a&&r.next.y!==r.y&&o<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next}while(r!==e);return n}(e,t)&&(u(e.prev,e,t.prev)||u(e,t.prev,t))||p(e,t)&&u(e.prev,e,e.next)>0&&u(t.prev,t,t.next)>0)},linkedPolygon:function(e,t,r,n,o){var u;if(o===d(e,t,r,n)>0)for(var s=t;s=t;l-=n)u=a(l,e[l],e[l+1],u);return u&&p(u,u.next)&&(i(u),u=u.next),u},locallyInside:l,splitPolygon:function(e,t){var r=new o(e.i,e.x,e.y),n=new o(t.i,t.x,t.y),a=e.next,i=t.prev;return e.next=t,t.prev=e,r.next=a,a.prev=r,n.next=r,r.prev=n,i.next=n,n.prev=i,n}}},74056:function(e,t,r){var n=r(56690).default,o=r(89728).default,a=r(22985),i=r(38268),u=r(40955),s=r(96440),l=r(45432),c=r(44174),f=function(){"use strict";function e(t){var r=this;n(this,e),this.plane=l(t);var o=s.orthogonal(s.create(),this.plane),i=s.cross(s.create(),this.plane,o);this.v=s.normalize(i,i),this.u=s.cross(s.create(),this.v,this.plane),this.basisMap=new Map;var u=t.edges.map((function(e){return e.map((function(e){return r.to2D(e)}))})),f=a.create(u);this.roots=c(f)}return o(e,[{key:"to2D",value:function(e){var t=u.fromValues(s.dot(e,this.u),s.dot(e,this.v));return this.basisMap.set(t,e),t}},{key:"to3D",value:function(e){var t=this.basisMap.get(e);if(t)return t;console.log("Warning: point not in original slice");var r=s.scale(s.create(),this.u,e[0]),n=s.scale(s.create(),this.v,e[1]),o=s.scale(s.create(),i,i[3]),a=s.add(r,r,o);return s.add(n,n,a)}}]),e}();e.exports=f},10957:function(e){e.exports={area:function(e,t,r){return(t.y-e.y)*(r.x-t.x)-(t.x-e.x)*(r.y-t.y)},pointInTriangle:function(e,t,r,n,o,a,i,u){return(o-i)*(t-u)-(e-i)*(a-u)>=0&&(e-i)*(n-u)-(r-i)*(t-u)>=0&&(r-i)*(a-u)-(o-i)*(n-u)>=0}}},42089:function(e,t,r){var n=r(60249),o=r(22985),a=r(38782),i=r(20259),u=r(52972),s=r(7116),l=r(79219),c=function(e,t,r){var a=null;return o.isA(r)&&(a=u.fromSides(o.toSides(r))),i.isA(r)&&(a=u.fromPoints(i.toPoints(r))),0===e||1===e?u.transform(n.fromTranslation(n.create(),[0,0,e]),a):null};e.exports=function(e,t){var r={numberOfSlices:2,capStart:!0,capEnd:!0,close:!1,repair:!0,callback:c},n=Object.assign({},r,e),o=n.numberOfSlices,f=n.capStart,d=n.capEnd,p=n.close,h=n.repair,v=n.callback;if(o<2)throw new Error("numberOfSlices must be 2 or more");h&&(t=s(t));for(var m=o-1,g=null,b=null,y=null,x=[],w=0;w=0})),m=o.fromSides(h);0===v.length&&(m=o.reverse(m));var g,b=Math.round(d/n*Math.abs(c)),y=b>=2?b:2,x=a.create();return i({numberOfSlices:y+1,callback:function(e,t,i){var u=p+c/y*t,s=f/y*t,l=(u-p)/n*r;return a.multiply(x,a.fromTranslation(a.create(),[s,0,l*Math.sign(c)]),a.fromXRotation(a.create(),-n/4*Math.sign(c))),g=a.create(),a.multiply(g,a.fromZRotation(a.create(),u),x),o.transform(g,i)}},m)}},98289:function(e,t,r){var n=r(18875),o=r(22985),a=r(75720),i=r(30625),u=r(5170);e.exports=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),s=1;s1?t-1:0),s=1;sn?f%n:f,d=Math.abs(d)>n?d%n:d;var h=f+d;if((h=Math.abs(h)>n?h%n:h)c*g&&c++}var b=i.toSides(t);if(0===b.length)throw new Error("the given geometry cannot be empty");var y=b.filter((function(e){return e[0][0]<0})),x=b.filter((function(e){return e[0][0]>=0}));y.length>0&&x.length>0&&"cap"===p&&(y.length>x.length?(b=b.map((function(e){var t=e[0],r=e[1];return[t=[Math.min(t[0],0),t[1]],r=[Math.min(r[0],0),r[1]]]})),t=i.reverse(i.create(b)),t=a(t)):x.length>=y.length&&(b=b.map((function(e){var t=e[0],r=e[1];return[t=[Math.max(t[0],0),t[1]],r=[Math.max(r[0],0),r[1]]]})),t=i.create(b)));var w=m/c,k=Math.abs(m)l&&d.push(n);var i=a.create([e[0],r[1],r[0]]),u=a.measureArea(i);Number.isFinite(u)&&u>l&&d.push(i)})),d}},85110:function(e,t,r){e.exports={extrudeFromSlices:r(42089),extrudeLinear:r(98289),extrudeRectangular:r(53571),extrudeRotate:r(54598),extrudeHelical:r(8132),project:r(78157),slice:r(52972)}},78157:function(e,t,r){var n=r(18875),o=r(55490),a=r(38268),i=r(60249),u=r(22985),s=r(38782),l=r(20259),c=r(64874),f=r(41239);e.exports=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),d=1;di&&(r=e,i=t)}}));var u=t.find((function(e){return o.equals(e[1],r[0])}));return n.fromPoints(n.create(),u[0],r[0],r[1])}},54698:function(e,t,r){var n=r(34798),o=r(96440);e.exports=function(){var e,t;return 1===arguments.length?(e=n(),t=arguments.length<=0?void 0:arguments[0]):(e=arguments.length<=0?void 0:arguments[0],t=arguments.length<=1?void 0:arguments[1]),e.edges=t.edges.map((function(e){return[o.clone(e[0]),o.clone(e[1])]})),e}},34798:function(e){e.exports=function(e){return e||(e=[]),{edges:e}}},4053:function(e,t,r){var n=r(96440);e.exports=function(e,t){var r=e.edges,o=t.edges;return r.length===o.length&&r.reduce((function(e,t,r){var a=o[r],i=n.squaredDistance(t[0],a[0]);return e&&i0&&u.push(t)})),i.forEach((function(e){var o,a=r.get(e),i=1/0;u.forEach((function(e){var t=r.get(e),u=n.distance(a,t);u1&&o(i[t-2],i[t-1],e.point)<=Number.EPSILON;)i.pop(),t=i.length;i.push(e.point)})),i}},60604:function(e,t,r){e.exports={hull:r(71952),hullChain:r(98934)}},11746:function(e,t,r){var n=r(56690).default,o=r(89728).default,a=r(41582),i=r(97784),u=r(24555),s=r(45121),l=r(15621),c=r(15003),f=r(89590),d=r(25185),p=r(88402),h=function(){"use strict";function e(){n(this,e),this.normal=[],this.centroid=[],this.offset=0,this.outside=null,this.mark=0,this.edge=null,this.nVertices=0}return o(e,[{key:"getEdge",value:function(e){if("number"!==typeof e)throw Error("requires a number");for(var t=this.edge;e>0;)t=t.next,e-=1;for(;e<0;)t=t.prev,e+=1;return t}},{key:"computeNormal",value:function(){var e=this.edge,t=e.next,r=t.next,n=d([],t.head().point,e.head().point),o=[],s=[];for(this.nVertices=2,this.normal=[0,0,0];r!==e;)i(s,n),d(n,r.head().point,e.head().point),a(this.normal,this.normal,u(o,s,n)),r=r.next,this.nVertices+=1;this.area=l(this.normal),this.normal=f(this.normal,this.normal,1/this.area)}},{key:"computeNormalMinArea",value:function(e){if(this.computeNormal(),this.arear&&(t=n,r=o),n=n.next}while(n!==this.edge);var i=t.tail().point,u=t.head().point,l=d([],u,i),p=Math.sqrt(r);f(l,l,1/p);var h=s(this.normal,l);f(l,l,-h),a(this.normal,this.normal,l),c(this.normal,this.normal)}}},{key:"computeCentroid",value:function(){this.centroid=[0,0,0];var e=this.edge;do{a(this.centroid,this.centroid,e.head().point),e=e.next}while(e!==this.edge);f(this.centroid,this.centroid,1/this.nVertices)}},{key:"computeNormalAndCentroid",value:function(e){"undefined"!==typeof e?this.computeNormalMinArea(e):this.computeNormal(),this.computeCentroid(),this.offset=s(this.normal,this.centroid)}},{key:"distanceToPlane",value:function(e){return s(this.normal,e)-this.offset}},{key:"connectHalfEdges",value:function(e,t){var r;if(e.opposite.face===t.opposite.face){var n,o=t.opposite.face;e===this.edge&&(this.edge=t),3===o.nVertices?(n=t.opposite.prev.opposite,o.mark=2,r=o):(n=t.opposite.next,o.edge===n.prev&&(o.edge=n),n.prev=n.prev.prev,n.prev.next=n),t.prev=e.prev,t.prev.next=t,t.setOpposite(n),o.computeNormalAndCentroid()}else e.next=t,t.prev=e;return r}},{key:"mergeAdjacentFaces",value:function(e,t){var r=e.opposite,n=r.face;t.push(n),n.mark=2;for(var o,a,i=e.prev,u=e.next,s=r.prev,l=r.next;i.opposite.face===n;)i=i.prev,l=l.next;for(;u.opposite.face===n;)u=u.next,s=s.prev;for(o=l;o!==s.next;o=o.next)o.face=this;return this.edge=u,(a=this.connectHalfEdges(s,u))&&t.push(a),(a=this.connectHalfEdges(i,l))&&t.push(a),this.computeNormalAndCentroid(),t}},{key:"collectIndices",value:function(){var e=[],t=this.edge;do{e.push(t.head().index),t=t.next}while(t!==this.edge);return e}}],[{key:"createTriangle",value:function(t,r,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,a=new e,i=new p(t,a),u=new p(r,a),s=new p(n,a);return i.next=s.prev=u,u.next=i.prev=s,s.next=u.prev=i,a.edge=i,a.computeNormalAndCentroid(o),a}}]),e}();e.exports={VISIBLE:0,NON_CONVEX:1,DELETED:2,Face:h}},88402:function(e,t,r){var n=r(56690).default,o=r(89728).default,a=r(89540),i=r(15283),u=function(){"use strict";function e(t,r){n(this,e),this.vertex=t,this.face=r,this.next=null,this.prev=null,this.opposite=null}return o(e,[{key:"head",value:function(){return this.vertex}},{key:"tail",value:function(){return this.prev?this.prev.vertex:null}},{key:"length",value:function(){return this.tail()?a(this.tail().point,this.head().point):-1}},{key:"lengthSquared",value:function(){return this.tail()?i(this.tail().point,this.head().point):-1}},{key:"setOpposite",value:function(e){this.opposite=e,e.opposite=this}}]),e}();e.exports=u},42846:function(e,t,r){var n=r(27424).default,o=r(56690).default,a=r(89728).default,i=r(45121),u=r(66745),s=r(23609),l=r(10863),c=r(1947),f=r(11746),d=f.Face,p=f.VISIBLE,h=f.NON_CONVEX,v=f.DELETED,m=function(){"use strict";function e(t){if(o(this,e),!Array.isArray(t))throw TypeError("input is not a valid array");if(t.length<4)throw Error("cannot build a simplex out of <4 points");this.tolerance=-1,this.nFaces=0,this.nPoints=t.length,this.faces=[],this.newFaces=[],this.claimed=new l,this.unclaimed=new l,this.vertices=[];for(var r=0;rthis.tolerance?this.addVertexToFace(o,t):this.unclaimed.add(o)}else this.unclaimed.addAll(r)}},{key:"resolveUnclaimedPoints",value:function(e){for(var t=this.unclaimed.first(),r=t;r;r=t){t=r.next;for(var n=this.tolerance,o=void 0,a=0;an&&(n=u,o=i),n>1e3*this.tolerance)break}}o&&this.addVertexToFace(r,o)}}},{key:"computeExtremes",value:function(){var e,t,r=[],n=[],o=[],a=[];for(e=0;e<3;e+=1)o[e]=a[e]=this.vertices[0];for(e=0;e<3;e+=1)r[e]=n[e]=this.vertices[0].point[e];for(e=1;en[t]&&(n[t]=u[t],a[t]=i)}return this.tolerance=3*Number.EPSILON*(Math.max(Math.abs(r[0]),Math.abs(n[0]))+Math.max(Math.abs(r[1]),Math.abs(n[1]))+Math.max(Math.abs(r[2]),Math.abs(n[2]))),[o,a]}},{key:"createInitialSimplex",value:function(){var e,t,r,o,a=this.vertices,l=this.computeExtremes(),c=n(l,2),f=c[0],p=c[1],h=0,v=0;for(r=0;r<3;r+=1){var m=p[r].point[r]-f[r].point[r];m>h&&(h=m,v=r)}var g=f[v],b=p[v];for(h=0,r=0;rh&&(h=x,e=y)}}var w=s([],g.point,b.point,e.point),k=i(g.point,w);for(h=-1,r=0;rh&&(h=E,t=S)}}var A=[];if(i(t.point,w)-k<0)for(A.push(d.createTriangle(g,b,e),d.createTriangle(t,b,g),d.createTriangle(t,e,b),d.createTriangle(t,g,e)),r=0;r<3;r+=1){var _=(r+1)%3;A[r+1].getEdge(2).setOpposite(A[0].getEdge(_)),A[r+1].getEdge(1).setOpposite(A[_+1].getEdge(0))}else for(A.push(d.createTriangle(g,e,b),d.createTriangle(t,g,b),d.createTriangle(t,b,e),d.createTriangle(t,e,g)),r=0;r<3;r+=1){var P=(r+1)%3;A[r+1].getEdge(2).setOpposite(A[0].getEdge((3-r)%3)),A[r+1].getEdge(0).setOpposite(A[P+1].getEdge(1))}for(r=0;r<4;r+=1)this.faces.push(A[r]);for(r=0;rh&&(h=O,M=A[o])}M&&this.addVertexToFace(C,M)}}}},{key:"reindexFaceAndVertices",value:function(){for(var e=[],t=0;tr&&(r=o,e=t)}return e}}},{key:"computeHorizon",value:function(e,t,r,n){var o;this.deleteFaceVertices(r),r.mark=v,o=t?t.next:t=r.getEdge(0);do{var a=o.opposite,i=a.face;i.mark===p&&(i.distanceToPlane(e)>this.tolerance?this.computeHorizon(e,a,i,n):n.push(o)),o=o.next}while(o!==t)}},{key:"addAdjoiningFace",value:function(e,t){var r=d.createTriangle(e,t.tail(),t.head());return this.faces.push(r),r.getEdge(-1).setOpposite(t.opposite),r.getEdge(0)}},{key:"addNewFaces",value:function(e,t){var r,n;this.newFaces=[];for(var o=0;o=e.nVertices)throw Error("merge recursion limit exceeded");var a=r.opposite.face,i=!1;if(2===t?(this.oppositeFaceDistance(r)>-this.tolerance||this.oppositeFaceDistance(r.opposite)>-this.tolerance)&&(i=!0):e.area>a.area?this.oppositeFaceDistance(r)>-this.tolerance?i=!0:this.oppositeFaceDistance(r.opposite)>-this.tolerance&&(n=!1):this.oppositeFaceDistance(r.opposite)>-this.tolerance?i=!0:this.oppositeFaceDistance(r)>-this.tolerance&&(n=!1),i){for(var u=e.mergeAdjacentFaces(r,[]),s=0;s1&&void 0!==arguments[1]?arguments[1]:{},r=new n(e);return r.build(),r.collectFaces(t.skipTriangulation)}},66745:function(e,t,r){var n=r(24555),o=r(25185),a=r(84078);e.exports=function(e,t,r){return Math.sqrt(function(e,t,r){var i=[],u=[];o(i,r,t),o(u,e,t);var s=a(n([],u,i)),l=a(i);if(0===l)throw Error("a and b are the same point");return s/l}(e,t,r))}},41156:function(e,t,r){var n=r(22985),o=r(38782),a=r(75720);e.exports=function(e){var t=new Set,r=[],i=function(e){var n=e.toString();t.has(n)||(r.push(e),t.add(n))};return e.forEach((function(e){n.isA(e)?n.toPoints(e).forEach(i):o.isA(e)?o.toPoints(e).forEach((function(e){return e.forEach(i)})):a.isA(e)&&a.toPoints(e).forEach(i)})),r}},97622:function(e,t,r){var n=r(18875),o=r(64874),a=r(22985),i=r(38782),u=r(75720),s=r(73758),l=r(30618),c=r(65785),f=r(45502);e.exports=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),d=1;d=3)for(var h=d.vertices[0],v=l(h),m=0;m0){var E,A=new Map,_=new Map,P=new Map,C=o(t);try{var M=function(){var e=n(E.value,2),t=e[0],r=e[1];P.set(t,!0),r.forEach((function(e){var r=l(e.vertex0),n=l(e.vertex1);A.has(r)?A.get(r).push(t):A.set(r,[t]),_.has(n)?_.get(n).push(t):_.set(n,[t])}))};for(C.s();!(E=C.n()).done;)M()}catch(pe){C.e(pe)}finally{C.f()}for(var O=e.slice(0);0!==t.size;){var T,j=o(t.keys());try{for(j.s();!(T=j.n()).done;){var D=T.value;P.set(D,!0)}}catch(pe){j.e(pe)}finally{j.f()}for(var z=!1;;){var N=Array.from(P.keys());if(0===N.length)break;var F=N[0],R=!0;if(t.has(F)){var L=t.get(F);s;for(var V=L[0],I=0;I<2;I++){var U=0===I?V.vertex0:V.vertex1,B=0===I?V.vertex1:V.vertex0,q=l(U),H=l(B),W=[];0===I?_.has(q)&&(W=_.get(q)):A.has(q)&&(W=A.get(q));for(var Z=0;Z0&&re<1){var ne=i.scale(i.create(),te,re);if(i.add(ne,ne,K),i.squaredDistance(ne,J)0;)for(var o=r.shift(),f=i(o),d=0;d=0&&v[1]>=0){var m=h.next,g=p.next;p.prev.next=h.next,p.next.prev=h.prev,h.prev.next=p.next,h.next.prev=p.prev,p.v1=null,p.v2=null,p.next=null,p.prev=null,s(n,h),h.v1=null,h.v2=null,h.next=null,h.prev=null;var b=function(e,t,r){var n={v1:r.v1,v2:t.v2,next:t.next,prev:r.prev};r.prev.next=n,t.next.prev=n,s(e,t),t.v1=null,t.v2=null,t.next=null,t.prev=null,s(e,r),r.v1=null,r.v2=null,r.next=null,r.prev=null};0===v[0]&&b(n,m,m.prev),0===v[1]&&b(n,g,g.prev)}}else p.next&&u(n,p)}var y=[];return n.forEach((function(e){var t=function(e){for(var t,r=[];e.next;){var n=e.next;r.push(e.v1),e.v1=null,e.v2=null,e.next=null,e.prev=null,e=n}return r.length>0&&(t=a.create(r)),t}(e);t&&y.push(t)})),n.clear(),y};e.exports=function(e,t){var r=[];t.forEach((function(e){var t=r.find((function(t){return r=t[0],o=a.plane(e),Math.abs(r[3]-o[3])<15e-8&&n(r,o);var r,o}));t?t[1].push(e):r.push([a.plane(e),[e]])}));var o=[];return r.forEach((function(e){var t=e[1],r=h(t);o=o.concat(r)})),o}},74575:function(e,t,r){var n=r(87508).EPS,o=r(55617),a=r(40955),i=r(68693),u=r(75805),s=r(69093),l=s.insertSorted,c=s.fnNumberSort,f=r(20259);e.exports=function(e){if(e.length<2)return e;for(var t=[],r=e.length,s=f.plane(e[0]),d=new i(s),p=[],h=[],v=new Map,m=new Map,g=new Map,b=10/n,y=0;y0){for(var E=void 0,A=void 0,_=0;_A)&&(A=O);var T=m.get(O);T||(T={},m.set(O,T)),T[y]=!0}if(E>=A)w=[],k=0,S=-1;else{var j=v.get(E);j||(j=[],v.set(E,j)),j.push(y)}}w.reverse(),S=k-S-1,p.push(w),h.push(S)}var D=[];m.forEach((function(e,t){return D.push(t)})),D.sort(c);for(var z=[],N=[],F=function(){for(var e,r=[],i=D[R],c=m.get(i),g=0;g=w&&(E=0),x[E][1]!==i)break;k=E}var A=S-1;if(A<0&&(A=w-1),x[A][1]===i&&(S=A),k!==b.leftvertexindex&&k===S)z.splice(g,1),--g;else{b.leftvertexindex=k,b.rightvertexindex=S,b.topleft=x[k],b.topright=x[S];var _=k+1;_>=w&&(_=0),b.bottomleft=x[_];var P=S-1;P<0&&(P=w-1),b.bottomright=x[P]}}}if(R>=D.length-1)z=[],e=null;else{var C=.5*(i+(e=Number(D[R+1]))),M=v.get(i);for(var O in M){for(var T=M[O],j=p[T],F=j.length,L=h[T],V=L;;){var I=V+1;if(I>=F&&(I=0),j[I][1]!==i)break;if(I===L)break;V=I}for(var U=L;;){var B=U-1;if(B<0&&(B=F-1),j[B][1]!==i)break;if(B===V)break;U=B}var q=V+1;q>=F&&(q=0);var H=U-1;H<0&&(H=F-1);var W={polygonindex:T,leftvertexindex:V,rightvertexindex:U,topleft:j[V],topright:j[U],bottomleft:j[q],bottomright:j[H]};l(z,W,(function(e,t){var r=u(e.topleft,e.bottomleft,C),n=u(t.topleft,t.bottomleft,C);return r>n?1:r0){var ee=r[r.length-1],te=a.distance(J.topleft,ee.topright),re=a.distance(J.bottomleft,ee.bottomright);te0){for(var ne=new Set,oe=new Set,ae=0;ae=0)&&(me||he>=0)&&(ie.outpolygon=se.outpolygon,ie.leftlinecontinues=ve,ie.rightlinecontinues=me,ne.add(ue));break}}for(var ge=0;gen&&be.outpolygon.leftpoints.push(be.bottomleft),be.outpolygon.leftpoints.reverse();var ye=be.outpolygon.rightpoints.concat(be.outpolygon.leftpoints).map((function(e){return d.to3D(e)})),xe=f.fromPointsAndPlane(ye,s);xe.vertices.length&&t.push(xe)}}for(var we=0;wen&&ke.outpolygon.rightpoints.push(ke.topright))}N=r},R=0;Ro&&(i-a===1?r.push(t[a]):n.push(t.slice(a,i)),a=i);t.length-a===1?r.push(t[a]):n.push(t.slice(a))})),t=n},o=3;o>=0;o--)n(o);var a=[];return t.forEach((function(e){e[0]&&(a[e[0].index]=e)})),r.forEach((function(e){a[e.index]=e})),a},l=function(e,t){return function(r,n){return r.plane[e]-n.plane[e]>t?1:n.plane[e]-r.plane[e]>t?-1:0}};e.exports=function(e){if(e.isRetesselated)return e;var t=o.toPolygons(e).map((function(e,t){return{vertices:e.vertices,plane:a.plane(e),index:t}})),r=s(t),i=[];r.forEach((function(e){if(Array.isArray(e)){var t=u(e);i.push.apply(i,n(t))}else i.push(e)}));var l=o.create(i);return l.isRetesselated=!0,l}},56664:function(e,t,r){var n=r(18875),o=r(40955),a=r(22985),i=r(38782),u=r(75720),s=r(64874),l=r(73758);e.exports=function(){for(var e=arguments.length,t=new Array(e),r=0;re}(a,e)})),r}},45502:function(e,t,r){var n=r(96440),o=r(20259);e.exports=function(e,t){var r=[];return t.forEach((function(t){!function(e,t,r){var a=t.vertices.length;if(a>3){if(a>4){var i=[0,0,0];t.vertices.forEach((function(e){return n.add(i,i,e)})),n.snap(i,n.divide(i,i,[a,a,a]),e);for(var u=0;u1?t-1:0),i=1;i3)throw new Error("align(): modes must be an array of length <= 3");if(e.modes=o(e.modes,"none",3),3!==e.modes.filter((function(e){return["center","max","min","none"].includes(e)})).length)throw new Error('align(): all modes must be one of "center", "max" or "min"');if(!Array.isArray(e.relativeTo)||e.relativeTo.length>3)throw new Error("align(): relativeTo must be an array of length <= 3");if(e.relativeTo=o(e.relativeTo,0,3),3!==e.relativeTo.filter((function(e){return Number.isFinite(e)||null==e})).length)throw new Error("align(): all relativeTo values must be a number, or null.");if("boolean"!==typeof e.grouped)throw new Error("align(): grouped must be a boolean value.");return e}(e=Object.assign({},{modes:["center","center","min"],relativeTo:[0,0,0],grouped:!1},e)),l=s.modes,c=s.relativeTo,f=s.grouped;if(0===(r=n(r)).length)throw new Error("align(): No geometries were provided to act upon");if(c.filter((function(e){return null==e})).length){var d=a(r);c=function(e,t,r){for(var n=0;n<3;n++)null==e[n]&&("center"===t[n]?e[n]=(r[0][n]+r[1][n])/2:"max"===t[n]?e[n]=r[1][n]:"min"===t[n]&&(e[n]=r[0][n]));return e}(c,l,d)}return 1===(r=f?u(r,l,c):r.map((function(e){return u(e,l,c)}))).length?r[0]:r}},7942:function(e,t,r){var n=r(18875),o=r(22985),a=r(38782),i=r(75720),u=r(61289),s=r(51681).translate,l=function(e,t){var r=Object.assign({},{axes:[!0,!0,!0],relativeTo:[0,0,0]},e),n=r.axes,o=r.relativeTo,a=u(t),i=[0,0,0];return n[0]&&(i[0]=o[0]-(a[0][0]+(a[1][0]-a[0][0])/2)),n[1]&&(i[1]=o[1]-(a[0][1]+(a[1][1]-a[0][1])/2)),n[2]&&(i[2]=o[2]-(a[0][2]+(a[1][2]-a[0][2])/2)),s(i,t)},c=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),u=1;u1?t-1:0),l=1;l1?t-1:0),s=1;s1?t-1:0),n=1;n1?t-1:0),n=1;n1?t-1:0),n=1;n1?t-1:0),s=1;s1?t-1:0),n=1;n1?t-1:0),n=1;n1?t-1:0),n=1;n1?t-1:0),u=1;u1?t-1:0),s=1;s1?t-1:0),n=1;n1?t-1:0),n=1;n1?t-1:0),n=1;np&&(m=p+(a-d));var g,b=Math.acos((s*s+s*s-o*o)/(2*s*s)),y=i.clone(n),x=[];if(m.25&&(k=.25);for(var S=h?w+2:w,E=0;E<=S;E++){var A=E;h&&((A=(E-1)*(w-2*k)/w+k)<0&&(A=0),A>w&&(A=w));var _=d+A*(m/w);g=i.fromAngleRadians(i.create(),_),i.scale(g,g,s),i.add(g,g,y),x.push(g)}}return u.fromPoints({closed:!1},x)}},48347:function(e,t,r){var n=r(87508).TAU,o=r(31627),a=r(9315).isGTE;e.exports=function(e){var t={center:[0,0],radius:1,startAngle:0,endAngle:n,segments:32},r=Object.assign({},t,e),i=r.center,u=r.radius,s=r.startAngle,l=r.endAngle,c=r.segments;if(!a(u,0))throw new Error("radius must be positive");return o({center:i,radius:u=[u,u],startAngle:s,endAngle:l,segments:c})}},9315:function(e){e.exports={isNumberArray:function(e,t){return!!(Array.isArray(e)&&e.length>=t)&&e.every((function(e){return Number.isFinite(e)}))},isGT:function(e,t){return Number.isFinite(e)&&e>t},isGTE:function(e,t){return Number.isFinite(e)&&e>=t}}},1459:function(e,t,r){var n=r(48481),o=r(9315).isGTE;e.exports=function(e){var t=Object.assign({},{center:[0,0,0],size:2},e),r=t.center,a=t.size;if(!o(a,0))throw new Error("size must be positive");return n({center:r,size:a=[a,a,a]})}},48481:function(e,t,r){var n=r(38782),o=r(20259),a=r(9315).isNumberArray;e.exports=function(e){var t=Object.assign({},{center:[0,0,0],size:[2,2,2]},e),r=t.center,i=t.size;if(!a(r,3))throw new Error("center must be an array of X, Y and Z values");if(!a(i,3))throw new Error("size must be an array of width, depth and height values");if(!i.every((function(e){return e>=0})))throw new Error("size values must be positive");return 0===i[0]||0===i[1]||0===i[2]?n.create():n.create([[[0,4,6,2],[-1,0,0]],[[1,3,7,5],[1,0,0]],[[0,1,5,4],[0,-1,0]],[[2,6,7,3],[0,1,0]],[[0,2,3,1],[0,0,-1]],[[4,5,7,6],[0,0,1]]].map((function(e){var t=e[0].map((function(e){return[r[0]+i[0]/2*(2*!!(1&e)-1),r[1]+i[1]/2*(2*!!(2&e)-1),r[2]+i[2]/2*(2*!!(4&e)-1)]}));return o.create(t)})))}},70717:function(e,t,r){var n=r(38782),o=r(40633),a=r(9315).isGTE;e.exports=function(e){var t=Object.assign({},{center:[0,0,0],height:2,radius:1,segments:32},e),r=t.center,i=t.height,u=t.radius,s=t.segments;if(!a(u,0))throw new Error("radius must be positive");return 0===i||0===u?n.create():o({center:r,height:i,startRadius:[u,u],endRadius:[u,u],segments:s})}},40633:function(e,t,r){var n=r(87508),o=n.EPS,a=n.TAU,i=r(96440),u=r(38782),s=r(20259),l=r(82315),c=l.sin,f=l.cos,d=r(9315),p=d.isGT,h=d.isGTE,v=d.isNumberArray;e.exports=function(e){var t={center:[0,0,0],height:2,startRadius:[1,1],startAngle:0,endRadius:[1,1],endAngle:a,segments:32},r=Object.assign({},t,e),n=r.center,l=r.height,d=r.startRadius,m=r.startAngle,g=r.endRadius,b=r.endAngle,y=r.segments;if(!v(n,3))throw new Error("center must be an array of X, Y and Z values");if(!p(l,0))throw new Error("height must be greater then zero");if(!v(d,2))throw new Error("startRadius must be an array of X and Y values");if(!d.every((function(e){return e>=0})))throw new Error("startRadius values must be positive");if(!v(g,2))throw new Error("endRadius must be an array of X and Y values");if(!g.every((function(e){return e>=0})))throw new Error("endRadius values must be positive");if(g.every((function(e){return 0===e}))&&d.every((function(e){return 0===e})))throw new Error("at least one radius must be positive");if(!h(m,0))throw new Error("startAngle must be positive");if(!h(b,0))throw new Error("endAngle must be positive");if(!h(y,4))throw new Error("segments must be four or more");var x=a;(m%=a)<(b%=a)&&(x=b-m),m>b&&(x=b+(a-m));var w=Math.min(d[0],d[1],g[0],g[1]),k=Math.acos((w*w+w*w-o*o)/(2*w*w));if(x0&&d[1]>0&&z.push(D(E,j(0,R,d),j(0,F,d))),(d[0]>0||d[1]>0)&&z.push(D(j(0,F,d),j(0,R,d),j(1,F,g))),g[0]>0&&g[1]>0&&z.push(D(A,j(1,F,g),j(1,R,g))),(g[0]>0||g[1]>0)&&z.push(D(j(1,F,g),j(0,R,d),j(1,R,g))))}return x=0})))throw new Error("radius values must be positive");if(!d(f,0))throw new Error("startAngle must be positive");if(!d(h,0))throw new Error("endAngle must be positive");if(!d(v,3))throw new Error("segments must be three or more");if(0===s[0]||0===s[1])return u.create();var m=a;(f%=a)<(h%=a)&&(m=h-f),f>h&&(m=h+(a-f));var g=Math.min(s[0],s[1]);if(m=0})))throw new Error("radius values must be positive");if(!f(c,4))throw new Error("segments must be four or more");if(0===u[0]||0===u[1]||0===u[2])return a.create();for(var h,v=o.scale(o.create(),o.normalize(o.create(),p[0]),u[0]),m=o.scale(o.create(),o.normalize(o.create(),p[1]),u[1]),g=o.scale(o.create(),o.normalize(o.create(),p[2]),u[2]),b=Math.round(c/4),y=[],x=o.create(),w=o.create(),k=0;k<=c;k++){var S=n*k/c,E=o.add(o.create(),o.scale(x,v,l(S)),o.scale(w,m,s(S)));if(k>0)for(var A=void 0,_=void 0,P=0;P<=b;P++){var C=n/4*P/b,M=l(C),O=s(C);if(P>0){var T=[],j=void 0;j=o.subtract(o.create(),o.scale(x,h,A),o.scale(w,g,_)),T.push(o.add(j,j,r)),j=o.subtract(o.create(),o.scale(x,E,A),o.scale(w,g,_)),T.push(o.add(j,j,r)),P=0})))throw new Error("size values must be positive");if(0===i[0]||0===i[1])return o.create();var u=[i[0]/2,i[1]/2],s=[u[0],-u[1]],l=[n.subtract(n.create(),r,u),n.add(n.create(),r,s),n.add(n.create(),r,u),n.subtract(n.create(),r,s)];return o.fromPoints(l)}},14227:function(e,t,r){var n=r(87508),o=n.EPS,a=n.TAU,i=r(40955),u=r(96440),s=r(38782),l=r(20259),c=r(82315),f=c.sin,d=c.cos,p=r(9315),h=p.isGTE,v=p.isNumberArray,m=r(48481),g=function(e,t,r,n,s,l){var c=a/4*s/n,p=d(c),h=f(c),v=n-s,m=r*p,g=t[2]-(r-r*h);l||(g=r-r*h-t[2]),m=m>o?m:0;for(var b=u.add(u.create(),e,[t[0]-r,t[1]-r,g]),y=u.add(u.create(),e,[r-t[0],t[1]-r,g]),x=u.add(u.create(),e,[r-t[0],r-t[1],g]),w=u.add(u.create(),e,[t[0]-r,r-t[1],g]),k=[],S=[],E=[],A=[],_=0;_<=v;_++){var P=v>0?a/4*_/v:0,C=i.fromAngleRadians(i.create(),P);i.scale(C,C,m);var M=u.fromVec2(u.create(),C);k.push(u.add(u.create(),b,M)),u.rotateZ(M,M,[0,0,0],a/4),S.push(u.add(u.create(),y,M)),u.rotateZ(M,M,[0,0,0],a/4),E.push(u.add(u.create(),x,M)),u.rotateZ(M,M,[0,0,0],a/4),A.push(u.add(u.create(),w,M))}return l?[k,S,E,A]:(k.reverse(),S.reverse(),E.reverse(),A.reverse(),[A,E,S,k])},b=function(e,t){for(var r=[],n=0;n=0})))throw new Error("size values must be positive");if(!h(a,0))throw new Error("roundRadius must be positive");if(!h(i,4))throw new Error("segments must be four or more");if(0===n[0]||0===n[1]||0===n[2])return s.create();if(0===a)return m({center:r,size:n});if(a>(n=n.map((function(e){return e/2})))[0]-o||a>n[1]-o||a>n[2]-o)throw new Error("roundRadius must be smaller then the radius of all dimensions");i=Math.floor(i/4);for(var u=null,c=null,f=[],d=0;d<=i;d++){var p=g(r,n,a,i,d,!0),w=g(r,n,a,i,d,!1);if(0===d&&(f=f.concat(x(w,p))),u&&(f=f.concat(b(u,p),y(u,p))),c&&(f=f.concat(b(c,w),y(c,w))),d===i){var k=p.map((function(e){return e[0]}));f.push(l.create(k)),k=w.map((function(e){return e[0]})),f.push(l.create(k))}u=p,c=w}return s.create(f)}},60392:function(e,t,r){var n=r(87508),o=n.EPS,a=n.TAU,i=r(96440),u=r(38782),s=r(20259),l=r(82315),c=l.sin,f=l.cos,d=r(9315),p=d.isGTE,h=d.isNumberArray,v=r(70717);e.exports=function(e){var t=Object.assign({},{center:[0,0,0],height:2,radius:1,roundRadius:.2,segments:32},e),r=t.center,n=t.height,l=t.radius,d=t.roundRadius,m=t.segments;if(!h(r,3))throw new Error("center must be an array of X, Y and Z values");if(!p(n,0))throw new Error("height must be positive");if(!p(l,0))throw new Error("radius must be positive");if(!p(d,0))throw new Error("roundRadius must be positive");if(d>l)throw new Error("roundRadius must be smaller then the radius");if(!p(m,4))throw new Error("segments must be four or more");if(0===n||0===l)return u.create();if(0===d)return v({center:r,height:n,radius:l});var g,b=[0,0,-n/2],y=[0,0,n/2],x=i.subtract(i.create(),y,b);if(2*d>i.length(x)-o)throw new Error("height must be larger than twice roundRadius");g=Math.abs(x[0])>Math.abs(x[1])?i.fromValues(0,1,0):i.fromValues(1,0,0);var w=i.scale(i.create(),i.normalize(i.create(),x),d),k=i.scale(i.create(),i.normalize(i.create(),i.cross(i.create(),w,g)),l),S=i.scale(i.create(),i.normalize(i.create(),i.cross(i.create(),k,w)),l);i.add(b,b,w),i.subtract(y,y,w);for(var E,A=Math.floor(.25*m),_=function(e){var t=e.map((function(e){return i.add(e,e,r)}));return s.create(t)},P=[],C=i.create(),M=i.create(),O=0;O<=m;O++){var T=a*O/m,j=i.add(i.create(),i.scale(C,k,f(T)),i.scale(M,S,c(T)));if(O>0){var D=[];D.push(i.add(i.create(),b,j)),D.push(i.add(i.create(),b,E)),D.push(i.add(i.create(),y,E)),D.push(i.add(i.create(),y,j)),P.push(_(D));for(var z=void 0,N=void 0,F=0;F<=A;F++){var R=a/4*F/A,L=f(R),V=c(R);if(F>0){D=[];var I=void 0;I=i.add(i.create(),b,i.subtract(C,i.scale(C,E,z),i.scale(M,w,N))),D.push(I),I=i.add(i.create(),b,i.subtract(C,i.scale(C,j,z),i.scale(M,w,N))),D.push(I),F=0})))throw new Error("size values must be positive");if(!l(s,0))throw new Error("roundRadius must be positive");if(!l(d,4))throw new Error("segments must be four or more");if(0===n[0]||0===n[1])return u.create();if(0===s)return f({center:r,size:n});if(s>(n=n.map((function(e){return e/2})))[0]-o||s>n[1]-o)throw new Error("roundRadius must be smaller then the radius of all dimensions");for(var p=Math.floor(d/4),h=i.add(i.create(),r,[n[0]-s,n[1]-s]),v=i.add(i.create(),r,[s-n[0],n[1]-s]),m=i.add(i.create(),r,[s-n[0],s-n[1]]),g=i.add(i.create(),r,[n[0]-s,s-n[1]]),b=[],y=[],x=[],w=[],k=0;k<=p;k++){var S=a/4*k/p,E=i.fromAngleRadians(i.create(),S);i.scale(E,E,s),b.push(i.add(i.create(),h,E)),i.rotate(E,E,i.create(),a/4),y.push(i.add(i.create(),v,E)),i.rotate(E,E,i.create(),a/4),x.push(i.add(i.create(),m,E)),i.rotate(E,E,i.create(),a/4),w.push(i.add(i.create(),g,E))}return u.fromPoints(b.concat(y,x,w))}},7402:function(e,t,r){var n=r(35565),o=r(9315).isGTE;e.exports=function(e){var t=Object.assign({},{center:[0,0,0],radius:1,segments:32,axes:[[1,0,0],[0,-1,0],[0,0,1]]},e),r=t.center,a=t.radius,i=t.segments,u=t.axes;if(!o(a,0))throw new Error("radius must be positive");return n({center:r,radius:a=[a,a,a],segments:i,axes:u})}},59057:function(e,t,r){var n=r(68326),o=r(9315).isGTE;e.exports=function(e){var t=Object.assign({},{center:[0,0],size:2},e),r=t.center,a=t.size;if(!o(a,0))throw new Error("size must be positive");return n({center:r,size:a=[a,a]})}},89384:function(e,t,r){var n=r(87508).TAU,o=r(40955),a=r(22985),i=r(9315),u=i.isGT,s=i.isGTE,l=i.isNumberArray,c=function(e,t,r,a){for(var i=n/e,u=[],s=0;s0&&t>1&&t=d)throw new Error("inner circle is two large to rotate about the outer circle");var g=u({radius:s,segments:f});return 0!==h&&(g=a([0,0,h],g)),g=i([d,0],g),o({startAngle:v,angle:m,segments:p},g)}},64079:function(e,t,r){var n=r(87508).NEPS,o=r(40955),a=r(22985),i=r(9315).isNumberArray,u=function(e,t,r){return Math.acos((e*e+t*t-r*r)/(2*e*t))},s=function(e){var t=e[0],r=e[1],o=e[2],a=function(e,t,r){return t>n?Math.sqrt(e*e+r*r-2*e*r*Math.cos(t)):Math.sqrt((e-r)*(e-r)+e*r*t*t*(1-t*t/12))}(t,r,o),i=u(a,t,o),s=Math.PI-i-r;return l(i,r,s,o,a,t)},l=function(e,t,r,n,i,u){var s=o.fromValues(0,0),l=o.fromValues(u,0),c=o.fromValues(n,0);return o.add(c,o.rotate(c,c,[0,0],Math.PI-t),l),a.fromPoints([s,l,c])};e.exports=function(e){var t=Object.assign({},{type:"SSS",values:[1,1,1]},e),r=t.type,o=t.values;if("string"!==typeof r)throw new Error("triangle type must be a string");if("A"!==(r=r.toUpperCase())[0]&&"S"!==r[0]||"A"!==r[1]&&"S"!==r[1]||"A"!==r[2]&&"S"!==r[2])throw new Error("triangle type must contain three letters; A or S");if(!i(o,3))throw new Error("triangle values must contain three values");if(!o.every((function(e){return e>0})))throw new Error("triangle values must be greater than zero");switch(r){case"AAA":return function(e){if(Math.abs(e[0]+e[1]+e[2]-Math.PI)>n)throw new Error("AAA triangles require angles that sum to PI");var t=e[0],r=e[1],o=Math.PI-t-r,a=1/Math.sin(o)*Math.sin(t),i=1/Math.sin(o)*Math.sin(r);return l(t,r,o,a,i,1)}(o);case"AAS":return function(e){var t=e[0],r=e[1],o=Math.PI+n-t-r;if(oS.width&&(c=_-S.width,"right"===g?S=a({x:c},S):"center"===g&&(S=a({x:c/2},S))),A=A.concat(S.segments);return A}},6650:function(e,t,r){var n=r(74704).default,o=r(22985),a=r(38782),i=r(75720);e.exports=function(e){var t,r,u=n(e);try{for(u.s();!(r=u.n()).done;){var s=r.value,l=0;if(o.isA(s)&&(l=1),a.isA(s)&&(l=2),i.isA(s)&&(l=3),t&&l!==t)return!1;t=l}}catch(c){u.e(c)}finally{u.f()}return!0}},49187:function(e){e.exports=function(e){return.017453292519943295*e}},18875:function(e){e.exports=function e(t){return t.reduce((function(t,r){return Array.isArray(r)?t.concat(e(r)):t.concat(r)}),[])}},69562:function(e){e.exports=function(e,t){return e-t}},69093:function(e,t,r){e.exports={areAllShapesTheSameType:r(6650),degToRad:r(49187),flatten:r(18875),fnNumberSort:r(69562),insertSorted:r(36096),radiusToSegments:r(65222),radToDeg:r(44108)}},36096:function(e){e.exports=function(e,t,r){for(var n=0,o=e.length;o>n;){var a=Math.floor((n+o)/2);r(t,e[a])>0?n=a+1:o=a}e.splice(n,0,t)}},92411:function(e){e.exports=function(e,t,r){for(e=e.slice();e.length0?e*n/t:0,a=r>0?n/r:0;return Math.ceil(Math.max(o,a,4))}},50406:function(e){e.exports=function(e){if(0===e.length)return[[0,0,0],[0,0,0]];for(var t=Array.isArray(e)&&Array.isArray(e[0]),r=t?e[0].length:3,n=new Array(r),o=new Array(r),a=0;ao[a]?i:o[a],n[a]=io[u]?s:o[u],n[u]=s.001},camera:{position:A,view:_}}},rotate:function(e,t){var r=e.controls,n=e.camera,o=e.speed,a=void 0===o?1:o,i=r.thetaDelta,u=r.phiDelta;return r.userControl.rotate&&(i+=t[0]*a,u+=t[1]*a),{controls:{thetaDelta:i,phiDelta:u},camera:n}},zoom:function(e){var t=e.controls,o=e.camera,a=e.speed,i=void 0===a?1:a,u=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,s=t.scale;if(t.userControl.zoom&&o&&void 0!==u&&0!==u&&!isNaN(u)){var l=(u=u/u*(0===Math.sign(u)?1:Math.sign(u))*i)+t.scale,c=n.distance(o.position,o.target)*l;if(c>t.limits.minDistance&&c1?t-1:0),o=1;o0)for(var g=h.length,b=0;b65535);d++)f++;for(var p=[],h=[],v=[],m=[],g=r[3]<1,b=l;be.limits.lineWidthDims[1]&&(s=e.limits.lineWidthDims[1]);var c=[0,0,0,o,0,0],f={frag:"precision mediump float;\n uniform vec4 color;\n void main() {\n gl_FragColor = color;\n }",vert:"\n precision mediump float;\n attribute vec3 position;\n uniform mat4 model, view, projection;\n void main() {\n gl_Position = projection * view * model * vec4(position, 1);\n }",uniforms:{model:function(e,t){return t&&t.model?t.model:n.identity([])},color:function(e,t){return t.color},angle:function(e,t){return t.angle}},attributes:{position:c},count:c.length/3,primitive:"line loop",lineWidth:s,depth:{enable:!l}},d=n.identity([]),p=n.rotateZ(n.create(),n.identity([]),Math.PI/2),h=n.rotateY(n.create(),n.identity([]),-Math.PI/2),v=e(f);return function(e){var t={model:n.identity([])};return e=Object.assign({},t,e),v([{color:a,model:n.multiply(n.create(),e.model,d)},{color:i,model:n.multiply(n.create(),e.model,p)},{color:u,model:n.multiply(n.create(),e.model,h)}])}}},33794:function(e,t,r){var n=r(4496);e.exports=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=[],o={visuals:{color:[0,0,1,1],fadeOut:!1},ticks:1,size:[16,16],centered:!1,lineWidth:2},a=Object.assign({},o.visuals,t.visuals||{}),i=a.fadeOut,u=a.color,s=Object.assign({},o,t),l=s.size,c=s.ticks,f=s.centered,d=s.lineWidth,p=l[0],h=l[1];if(f){for(var v=.5*p,m=.5*h,g=-v+v%c,b=-g,y=-m+m%c,x=-y,w=g,k=0;w<=b;w+=c,k+=1)k%0!==0&&(r.push(y,w,0),r.push(x,w,0),r.push(y,w,0));for(var S=y,E=0;S<=x;S+=c,E+=1)E%0!==0&&(r.push(S,g,0),r.push(S,b,0),r.push(S,g,0))}else{for(var A=.5*-p;A<=.5*p;A+=c)r.push(.5*-h,A,0),r.push(.5*h,A,0),r.push(.5*-h,A,0);for(var _=.5*-h;_<=.5*h;_+=c)r.push(_,.5*-p,0),r.push(_,.5*p,0),r.push(_,.5*-p,0)}return e({vert:"precision mediump float;\n\n uniform float camNear, camFar;\n uniform mat4 model, view, projection;\n\n attribute vec3 position;\n varying vec3 fragNormal, fragPosition;\n varying vec4 worldPosition;\n\n void main() {\n fragPosition = position;\n worldPosition = model * vec4(position, 1);\n vec4 glPosition = projection * view * worldPosition;\n gl_Position = glPosition;\n }",frag:"precision mediump float;\n uniform vec4 color;\n varying vec3 fragNormal, fragPosition;\n varying vec4 worldPosition;\n\n uniform vec4 fogColor;\n uniform bool fadeOut;\n void main() {\n float dist = .5;\n if(fadeOut){\n dist = distance( vec2(0.,0.), vec2(worldPosition.x, worldPosition.y));\n dist *= 0.0025;\n dist = sqrt(dist);\n }\n\n gl_FragColor = mix(color, fogColor, dist);\n }\n ",attributes:{position:e.buffer(r)},count:r.length/3,uniforms:{model:function(e,t){return t&&t.model?t.model:n.identity([])},color:function(e,t){return t&&t.color?t.color:u},fogColor:function(e,t){return t&&t.color?[t.color[0],t.color[1],t.color[2],0]:[u[0],u[1],u[2],0]},fadeOut:function(e,t){return t&&void 0!==t.fadeOut?t.fadeOut:i}},lineWidth:function(t,r){return Math.min(r&&r.lineWidth?r.lineWidth:d,e.limits.lineWidthDims[1])},primitive:"lines",cull:{enable:!0,face:"front"},polygonOffset:{enable:!0,offset:{factor:1,units:10*Math.random()}},blend:{enable:!0,func:{src:"src alpha",dst:"one minus src alpha"}}})}},50653:function(e,t,r){e.exports=function(e,t){var n=Object.assign({},{size:[50,50],ticks:[10,1]},t),o=n.size,a=n.ticks,i=r(33794)(e,{size:o,ticks:a[0]}),u=r(33794)(e,{size:o,ticks:a[1]});return function(e){i(e),u({color:e.subColor,fadeOut:e.fadeOut})}}},10184:function(e){e.exports={frag:"\nprecision mediump float;\nuniform vec4 ucolor;\n\nvoid main () {\n gl_FragColor = ucolor;\n}\n"}},50562:function(e,t,r){var n=r(4496),o=r(8547).meshColor;e.exports=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a={color:o,geometry:void 0},i=Object.assign({},a,t),u=i.geometry,s=i.color,l=i.transparent;"color"in u&&(s=u.color);var c=!!(u.indices&&u.indices.length>0),f=!!(u.normals&&u.normals.length>0),d=!!(u.colors&&u.colors.length>0),p={primitive:"lines",vert:d?r(52506).vert:r(25540).vert,frag:d?r(52506).frag:r(10184).frag,uniforms:{model:function(e,t){return t.model||u.transforms||n.create()},ucolor:function(e,t){return t&&t.color?t.color:s}},attributes:{position:e.buffer({usage:"static",type:"float",data:u.positions})}};return l&&(p.blend={enable:!0,func:{src:"src alpha",dst:"one minus src alpha"}}),d&&(p.attributes.color=e.buffer({usage:"static",type:"float",data:u.colors})),c&&(p.elements=e.elements({usage:"static",type:"uint16",data:u.indices})),f&&(p.attributes.normal=e.buffer({usage:"static",type:"float",data:u.normals})),e(p)}},25540:function(e){e.exports={vert:"\nprecision mediump float;\n\nuniform float camNear, camFar;\nuniform mat4 model, view, projection;\n\nattribute vec3 position, normal;\n\n\nvarying vec3 surfaceNormal, surfacePosition;\nvarying vec4 _worldSpacePosition;\n\n\nvoid main() {\n\n\n surfacePosition = position;\n surfaceNormal = normal;\n vec4 worldSpacePosition = model * vec4(position, 1);\n _worldSpacePosition = worldSpacePosition;\n\n vec4 glPosition = projection * view * model * vec4(position, 1);\n gl_Position = glPosition;\n}\n",frag:"\nprecision mediump float;\nvarying vec3 surfaceNormal;\nuniform float ambientLightAmount;\nuniform float diffuseLightAmount;\nuniform vec4 ucolor;\nuniform vec3 lightDirection;\nuniform vec3 opacity;\n\nvarying vec4 _worldSpacePosition;\n\nuniform vec2 printableArea;\n\nvec4 errorColor = vec4(0.15, 0.15, 0.15, 0.3);\n\nvoid main () {\n vec4 depth = gl_FragCoord;\n\n float v = 0.8; // shadow value\n vec4 endColor = ucolor;\n\n vec3 ambient = ambientLightAmount * endColor.rgb;\n float cosTheta = dot(surfaceNormal, lightDirection);\n vec3 diffuse = diffuseLightAmount * endColor.rgb * clamp(cosTheta , 0.0, 1.0 );\n\n float cosTheta2 = dot(surfaceNormal, vec3(-lightDirection.x, -lightDirection.y, lightDirection.z));\n vec3 diffuse2 = diffuseLightAmount * endColor.rgb * clamp(cosTheta2 , 0.0, 1.0 );\n\n gl_FragColor = vec4((ambient + diffuse + diffuse2 * v), endColor.a);\n}"}},52506:function(e){e.exports={frag:"\nprecision mediump float;\nvarying vec4 vColor;\n\nvoid main () {\n gl_FragColor = vColor;\n}\n",vert:"\nprecision mediump float;\n\nuniform float camNear, camFar;\nuniform mat4 model, view, projection;\n\nattribute vec3 position, normal;\nattribute vec4 color;\n\nvarying vec3 surfaceNormal, surfacePosition;\nvarying vec4 _worldSpacePosition;\nvarying vec4 vColor;\n\nvoid main() {\n vColor = color;\n\n surfacePosition = position;\n surfaceNormal = normal;\n vec4 worldSpacePosition = model * vec4(position, 1);\n _worldSpacePosition = worldSpacePosition;\n\n vec4 glPosition = projection * view * model * vec4(position, 1);\n gl_Position = glPosition;\n}\n"}},6995:function(e,t,r){var n=r(4496),o=r(8547).meshColor;e.exports=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{extras:{}},a={useVertexColors:!0,dynamicCulling:!0,geometry:void 0,color:o,visuals:{}},i=Object.assign({},a,t),u=i.geometry,s=i.dynamicCulling,l=i.useVertexColors,c=i.color,f=i.visuals,d=e.buffer([]),p=!!(u.indices&&u.indices.length>0),h=!!(u.normals&&u.normals.length>0),v="transparent"in f&&f.transparent,m=!!(l&&u.colors&&u.colors.length>0),g=u.transforms||n.create(),b=n.determinant(g)<0,y=s&&b?"front":"back",x=m?r(94467).vert:r(98093).vert,w=m?r(94467).frag:r(98093).frag,k=n.invert(n.create(),g),S={primitive:"triangles",vert:x,frag:w,uniforms:{model:function(e,t){return g},ucolor:function(e,t){return t&&t.color?t.color:c},vColorToggler:function(e,t){return t&&t.useVertexColors&&!0===t.useVertexColors?1:0},unormal:function(e,t){var r=n.invert(n.create(),t.camera.view);return n.multiply(r,k,r),n.transpose(r,r),r}},attributes:{position:e.buffer({usage:"static",type:"float",data:u.positions}),ao:d},cull:{enable:!0,face:y}};return v&&(S.blend={enable:!0,func:{src:"src alpha",dst:"one minus src alpha"}}),u.cells?S.elements=u.cells:p?S.elements=e.elements({usage:"static",type:"uint16",data:u.indices}):u.triangles?S.elements=u.triangles:S.count=u.positions.length/3,h&&(S.attributes.normal=e.buffer({usage:"static",type:"float",data:u.normals})),m&&(S.attributes.color=e.buffer({usage:"static",type:"float",data:u.colors})),e(S=Object.assign({},S,t.extras))}},98093:function(e){e.exports={vert:"\nprecision mediump float;\n\nuniform float camNear, camFar;\nuniform mat4 model, view, projection;\n\nattribute vec3 position, normal;\n\nvarying vec3 surfaceNormal, surfacePosition;\nvarying vec4 _worldSpacePosition;\n\nvoid main() {\n surfacePosition = position;\n surfaceNormal = normal;\n vec4 worldSpacePosition = model * vec4(position, 1);\n _worldSpacePosition = worldSpacePosition;\n\n vec4 glPosition = projection * view * model * vec4(position, 1);\n gl_Position = glPosition;\n}\n",frag:"\nprecision mediump float;\nvarying vec3 surfaceNormal;\nuniform float ambientLightAmount;\nuniform float diffuseLightAmount;\nuniform vec4 ucolor;\nuniform vec3 lightDirection;\nuniform vec3 opacity;\n\nvarying vec4 _worldSpacePosition;\n\nuniform vec2 printableArea;\n\nvec4 errorColor = vec4(0.15, 0.15, 0.15, 0.3);\n\nvoid main () {\n vec4 depth = gl_FragCoord;\n\n float v = 0.8; // shadow value\n vec4 endColor = ucolor;\n\n vec3 ambient = ambientLightAmount * endColor.rgb;\n float cosTheta = dot(surfaceNormal, lightDirection);\n vec3 diffuse = diffuseLightAmount * endColor.rgb * clamp(cosTheta , 0.0, 1.0 );\n\n float cosTheta2 = dot(surfaceNormal, vec3(-lightDirection.x, -lightDirection.y, lightDirection.z));\n vec3 diffuse2 = diffuseLightAmount * endColor.rgb * clamp(cosTheta2 , 0.0, 1.0 );\n\n gl_FragColor = vec4((ambient + diffuse + diffuse2 * v), endColor.a);\n}"}},94467:function(e){e.exports={frag:"\nprecision mediump float;\nvarying vec3 surfaceNormal, surfacePosition;\n\nuniform float ambientLightAmount;\nuniform float diffuseLightAmount;\nuniform float specularLightAmount;\n\nuniform vec3 lightDirection;\nuniform vec4 lightColor;\nuniform vec3 opacity;\nuniform float uMaterialShininess;\n\nvarying vec4 vColor;\nuniform vec4 ucolor;\nuniform float vColorToggler;\n\nuniform vec2 printableArea;\nvec4 errorColor = vec4(0.15, 0.15, 0.15, 0.3);//vec4(0.15, 0.15, 0.15, 0.3);\nvarying vec4 _worldSpacePosition;\nvarying float ambientAo;\n\nvoid main () {\n vec4 depth = gl_FragCoord;\n vec4 endColor = vColor * vColorToggler + ucolor * (1.0 - vColorToggler);\n\n vec3 ambient = ambientLightAmount * endColor.rgb ; //ambientAo * \n\n float diffuseWeight = dot(surfaceNormal, lightDirection);\n vec3 diffuse = diffuseLightAmount * endColor.rgb * clamp(diffuseWeight , 0.0, 1.0 );\n\n //specular\n \n vec4 specularColor = vec4(lightColor);\n vec3 eyeDirection = normalize(surfacePosition.xyz);\n vec3 reflectionDirection = reflect(-lightDirection, -surfaceNormal);\n float specularLightWeight = pow(max(dot(reflectionDirection, eyeDirection), 0.0), uMaterialShininess);\n vec3 specular = specularColor.rgb * specularLightWeight * specularLightAmount;\n\n gl_FragColor = vec4((ambient + diffuse + specular), endColor.a);\n}\n",vert:"\nprecision mediump float;\n\nuniform float camNear, camFar;\nuniform mat4 model, view, projection, unormal;\n\nattribute vec3 position, normal;\nattribute vec4 color;\n\nattribute float ao;\nvarying float ambientAo;\n\nvarying vec3 surfaceNormal, surfacePosition;\nvarying vec4 _worldSpacePosition;\nvarying vec4 vColor;\n\nvoid main() {\n surfacePosition = (unormal * vec4(position, 1.0)).xyz;\n surfaceNormal = normalize((unormal * vec4(normal, 1.0)).xyz); //vec4 transformedNormal = uNormalMatrix * vec4(aVertexNormal, 1.0);\n vec4 worldSpacePosition = model * vec4(position, 1);\n _worldSpacePosition = worldSpacePosition;\n //gl_Position = projection * view * worldSpacePosition;\n\n vColor = color;\n\n //ambientAo = (1. - ao) * (0.5 * max(normal.x, 0.) + 0.5);\n\n vec4 glPosition = projection * view * model * vec4(position, 1);\n gl_Position = glPosition;\n //gl_Position = zBufferAdjust(glPosition, camNear, camFar);\n}\n"}},1222:function(e,t,r){var n=r(42122).default,o=r(9284),a=r(8547);e.exports=function(e){var t=Object.assign({},{},e.glOptions,{onDone:function(e,t){if(e)throw e}}),i=r(39084)(t),u=new Map;return function(e){var t;i.poll(),(t=e).rendering=Object.assign({},a,t.rendering),o(i)(t,(function(e){i.clear({color:t.rendering.background,depth:1}),t.entities&&t.entities.sort((function(e,t){var r="transparent"in e.visuals&&e.visuals.transparent;return r===("transparent"in t.visuals&&t.visuals.transparent)?0:r?1:-1})).forEach((function(e){var r,o=e.visuals;(!("show"in o)||o.show)&&o.drawCmd&&t.drawCommands[o.drawCmd]&&(o.cacheId?r=u.get(o.cacheId):(o.cacheId=u.size,r=t.drawCommands[o.drawCmd](i,e),u.set(o.cacheId,r)),r(n(n(n({},e),o),{},{camera:t.camera})))}))}))}}},9284:function(e,t,r){var n=r(4496);e.exports=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.fbo,o={cull:{enable:!0},context:{lightDirection:[.2,.2,1]},uniforms:{view:function(e,t){return t.camera.view},eye:function(e,t){return t.camera.position},projection:function(e,t){return t.camera.projection},camNear:function(e,t){return t.camera.near},camFar:function(e,t){return t.camera.far},invertedView:function(e,t){return n.invert([],t.camera.view)},lightPosition:function(e,t){return t&&t.rendering&&t.rendering.lightPosition?t.rendering.lightPosition:[100,200,100]},lightDirection:function(e,t){return t&&t.rendering&&t.rendering.lightDirection?t.rendering.lightDirection:e.lightDirection||[0,0,0]},lightView:function(e){return n.lookAt([],e.lightDirection,[0,0,0],[0,0,1])},lightProjection:n.ortho([],-25,-25,-20,20,-25,25),lightColor:function(e,t){return t&&t.rendering&&t.rendering.lightColor?t.rendering.lightColor:[1,.8,0]},ambientLightAmount:function(e,t){return t&&t.rendering&&t.rendering.ambientLightAmount?t.rendering.ambientLightAmount:.3},diffuseLightAmount:function(e,t){return t&&t.rendering&&t.rendering.diffuseLightAmount?t&&t.rendering&&t.rendering.diffuseLightAmount:.89},specularLightAmount:function(e,t){return t&&t.rendering&&t.rendering.specularLightAmount?t.rendering.specularLightAmount:.16},uMaterialShininess:function(e,t){return t&&t.rendering&&t.rendering.materialShininess?t.rendering.materialShininess:8},materialAmbient:[.5,.8,.3],materialDiffuse:[.5,.8,.3],materialSpecular:[.5,.8,.3]},framebuffer:r};return e(Object.assign({},o,t.extras))}},8547:function(e){e.exports={background:[1,1,1,1],meshColor:[0,.6,1,1],lightColor:[1,1,1,1],lightDirection:[.2,.2,1],lightPosition:[100,200,100],ambientLightAmount:.3,diffuseLightAmount:.89,specularLightAmount:.16,materialShininess:8}},79511:function(e){e.exports=function e(t){return t.reduce((function(t,r){return Array.isArray(r)?t.concat(e(r)):t.concat(r)}),[])}},14296:function(e){e.exports=function(e,t){return e-t}},8414:function(e){e.exports=function(e){if(Array.isArray(e)&&0!==e.length)return e[0]}},16556:function(e,t,r){e.exports={flatten:r(79511),fnNumberSort:r(14296),head:r(8414),insertSorted:r(10175),nth:r(58578),padToLength:r(38781),toArray:r(1168)}},10175:function(e){e.exports=function(e,t,r){for(var n=0,o=e.length;o>n;){var a=Math.floor((n+o)/2);r(t,e[a])>0?n=a+1:o=a}return e.splice(n,0,t),e}},58578:function(e){e.exports=function(e,t){if(Array.isArray(e)&&!(e.length=t.status}function a(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(n){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var i="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof r.g&&r.g.global===r.g?r.g:void 0,u=i.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),s=i.saveAs||("object"!=typeof window||window!==i?function(){}:"download"in HTMLAnchorElement.prototype&&!u?function(e,t,r){var u=i.URL||i.webkitURL,s=document.createElement("a");t=t||e.name||"download",s.download=t,s.rel="noopener","string"==typeof e?(s.href=e,s.origin===location.origin?a(s):o(s.href)?n(e,t,r):a(s,s.target="_blank")):(s.href=u.createObjectURL(e),setTimeout((function(){u.revokeObjectURL(s.href)}),4e4),setTimeout((function(){a(s)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,r,i){if(r=r||e.name||"download","string"!=typeof e)navigator.msSaveOrOpenBlob(t(e,i),r);else if(o(e))n(e,r,i);else{var u=document.createElement("a");u.href=e,u.target="_blank",setTimeout((function(){a(u)}))}}:function(e,t,r,o){if((o=o||open("","_blank"))&&(o.document.title=o.document.body.innerText="downloading..."),"string"==typeof e)return n(e,t,r);var a="application/octet-stream"===e.type,s=/constructor/i.test(i.HTMLElement)||i.safari,l=/CriOS\/[\d]+/.test(navigator.userAgent);if((l||a&&s||u)&&"undefined"!=typeof FileReader){var c=new FileReader;c.onloadend=function(){var e=c.result;e=l?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),o?o.location.href=e:location=e,o=null},c.readAsDataURL(e)}else{var f=i.URL||i.webkitURL,d=f.createObjectURL(e);o?o.location=d:location.href=d,o=null,setTimeout((function(){f.revokeObjectURL(d)}),4e4)}});i.saveAs=s.saveAs=s,e.exports=s})?n.apply(t,o):n)||(e.exports=a)},36753:function(e,t,r){"use strict";r.r(t),r.d(t,{render:function(){return M}});var n=window.document,o=window.Math,a=window.HTMLElement,i=window.XMLHttpRequest,u=function(e,t){for(var r=0,n=e.length;r'}}},download:{heights:{16:{width:16,path:''}}},eye:{heights:{16:{width:16,path:''}}},heart:{heights:{16:{width:16,path:''}}},"issue-opened":{heights:{16:{width:16,path:''}}},"mark-github":{heights:{16:{width:16,path:''}}},package:{heights:{16:{width:16,path:''}}},play:{heights:{16:{width:16,path:''}}},"repo-forked":{heights:{16:{width:16,path:''}}},"repo-template":{heights:{16:{width:16,path:''}}},star:{heights:{16:{width:16,path:''}}}},k=function(e,t){e=f(e).replace(/^octicon-/,""),c(w,e)||(e="mark-github");var r=t>=24&&24 in w[e].heights?24:16,n=w[e].heights[r];return'"},S={},E=function(e,t){var r=S[e]||(S[e]=[]);if(!(r.push(t)>1)){var n=function(e){var t;return function(){t||(t=1,e.apply(this,arguments))}}((function(){for(delete S[e];t=r.shift();)t.apply(null,arguments)}));if(h){var o=new i;m(o,"abort",n),m(o,"error",n),m(o,"load",(function(){var e;try{e=JSON.parse(this.responseText)}catch(t){return void n(t)}n(200!==this.status,e)})),o.open("GET",e),o.send()}else{var a=this||window;a._=function(e){a._=null,n(200!==e.meta.status,e.data)};var u=s(a.document)("script",{async:!0,src:e+(-1!==e.indexOf("?")?"&":"?")+"callback=_"}),l=function(){a._&&a._({meta:{}})};m(u,"load",l),m(u,"error",l),function(e,t,r){if(null!=e.readyState){var n="readystatechange";m(e,n,(function o(){if(t.test(e.readyState))return g(e,n,o),r.apply(this,arguments)}))}}(u,/de|m/,l),a.document.getElementsByTagName("head")[0].appendChild(u)}}},A=function(e,t,r){var n=s(e.ownerDocument),o=e.appendChild(n("style",{type:"text/css"})),a="body{margin:0}a{text-decoration:none;outline:0}.widget{display:inline-block;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;font-size:0;line-height:0;white-space:nowrap}.btn,.social-count{position:relative;display:inline-block;display:inline-flex;height:14px;padding:2px 5px;font-size:11px;font-weight:600;line-height:14px;vertical-align:bottom;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-repeat:repeat-x;background-position:-1px -1px;background-size:110% 110%;border:1px solid}.btn{border-radius:.25em}.btn:not(:last-child){border-radius:.25em 0 0 .25em}.social-count{border-left:0;border-radius:0 .25em .25em 0}.widget-lg .btn,.widget-lg .social-count{height:16px;padding:5px 10px;font-size:12px;line-height:16px}.octicon{display:inline-block;vertical-align:text-top;fill:currentColor;overflow:visible}"+x(t["data-color-scheme"]);o.styleSheet?o.styleSheet.cssText=a:o.appendChild(e.ownerDocument.createTextNode(a));var i="large"===f(t["data-size"]),u=n("a",{className:"btn",href:t.href,rel:"noopener",target:"_blank",title:t.title||void 0,"aria-label":t["aria-label"]||void 0,innerHTML:k(t["data-icon"],i?16:14)+" "},[n("span",{},[t["data-text"]||""])]),l=e.appendChild(n("div",{className:"widget"+(i?" widget-lg":"")},[u])),c=u.hostname.replace(/\.$/,"");if(("."+c).substring(c.length-10)!=="."+d)return u.removeAttribute("href"),void r(l);var h=(" /"+u.pathname).split(/\/+/);if(((c===d||c==="gist."+d)&&"archive"===h[3]||c===d&&"releases"===h[3]&&("download"===h[4]||"latest"===h[4]&&"download"===h[5])||c==="codeload."+d)&&(u.target="_top"),"true"===f(t["data-show-count"])&&c===d&&"marketplace"!==h[1]&&"sponsors"!==h[1]&&"orgs"!==h[1]&&"users"!==h[1]&&"-"!==h[1]){var v,m;if(!h[2]&&h[1])m="followers",v="?tab=followers";else if(!h[3]&&h[2])m="stargazers_count",v="/stargazers";else if(h[4]||"subscription"!==h[3])if(h[4]||"fork"!==h[3]){if("issues"!==h[3])return void r(l);m="open_issues_count",v="/issues"}else m="forks_count",v="/forks";else m="subscribers_count",v="/watchers";var g=h[2]?"/repos/"+h[1]+"/"+h[2]:"/users/"+h[1];E.call(this,p+g,(function(e,t){if(!e){var o=t[m];l.appendChild(n("a",{className:"social-count",href:t.html_url+v,rel:"noopener",target:"_blank","aria-label":o+" "+m.replace(/_count$/,"").replace("_"," ").slice(0,o<2?-1:void 0)+" on GitHub"},[(""+o).replace(/\B(?=(\d{3})+(?!\d))/g,",")]))}r(l)}))}else r(l)},_=window.devicePixelRatio||1,P=function(e){return(_>1?o.ceil(o.round(e*_)/_*2)/2:o.ceil(e))||0},C=function(e,t){e.style.width=t[0]+"px",e.style.height=t[1]+"px"},M=function(e,t){if(null!=e&&null!=t)if(e.getAttribute&&(e=function(e){var t={href:e.href,title:e.title,"aria-label":e.getAttribute("aria-label")};return u(["icon","color-scheme","text","size","show-count"],(function(r){var n="data-"+r;t[n]=e.getAttribute(n)})),null==t["data-text"]&&(t["data-text"]=e.textContent||e.innerText),t}(e)),v){var r=l("span");A(r.attachShadow({mode:"closed"}),e,(function(){t(r)}))}else{var a=l("iframe",{src:"javascript:0",title:e.title||void 0,allowtransparency:!0,scrolling:"no",frameBorder:0});C(a,[0,0]),a.style.border="none";m(a,"load",(function r(){var i,u=a.contentWindow;try{i=u.document.body}catch(s){return void n.body.appendChild(a.parentNode.removeChild(a))}g(a,"load",r),A.call(u,i,e,(function(r){var n=function(e){var t=e.offsetWidth,r=e.offsetHeight;if(e.getBoundingClientRect){var n=e.getBoundingClientRect();t=o.max(t,P(n.width)),r=o.max(r,P(n.height))}return[t,r]}(r);a.parentNode.removeChild(a),function(e,t,r){m(e,t,(function n(){return g(e,t,n),r.apply(this,arguments)}))}(a,"load",(function(){C(a,n)})),a.src="https://unpkg.com/github-buttons@2.27.0/dist/buttons.html#"+(a.name=function(e,t,r,n){null==t&&(t="&"),null==r&&(r="="),null==n&&(n=window.encodeURIComponent);var o=[];for(var a in e){var i=e[a];null!=i&&o.push(n(a)+r+n(i))}return o.join(t)}(e)),t(a)}))})),n.body.appendChild(a)}}},33494:function(e){e.exports=function(e,t){var r=t[0],n=t[1],o=t[2],a=t[3],i=t[4],u=t[5],s=t[6],l=t[7],c=t[8],f=t[9],d=t[10],p=t[11],h=t[12],v=t[13],m=t[14],g=t[15];return e[0]=u*(d*g-p*m)-f*(s*g-l*m)+v*(s*p-l*d),e[1]=-(n*(d*g-p*m)-f*(o*g-a*m)+v*(o*p-a*d)),e[2]=n*(s*g-l*m)-u*(o*g-a*m)+v*(o*l-a*s),e[3]=-(n*(s*p-l*d)-u*(o*p-a*d)+f*(o*l-a*s)),e[4]=-(i*(d*g-p*m)-c*(s*g-l*m)+h*(s*p-l*d)),e[5]=r*(d*g-p*m)-c*(o*g-a*m)+h*(o*p-a*d),e[6]=-(r*(s*g-l*m)-i*(o*g-a*m)+h*(o*l-a*s)),e[7]=r*(s*p-l*d)-i*(o*p-a*d)+c*(o*l-a*s),e[8]=i*(f*g-p*v)-c*(u*g-l*v)+h*(u*p-l*f),e[9]=-(r*(f*g-p*v)-c*(n*g-a*v)+h*(n*p-a*f)),e[10]=r*(u*g-l*v)-i*(n*g-a*v)+h*(n*l-a*u),e[11]=-(r*(u*p-l*f)-i*(n*p-a*f)+c*(n*l-a*u)),e[12]=-(i*(f*m-d*v)-c*(u*m-s*v)+h*(u*d-s*f)),e[13]=r*(f*m-d*v)-c*(n*m-o*v)+h*(n*d-o*f),e[14]=-(r*(u*m-s*v)-i*(n*m-o*v)+h*(n*s-o*u)),e[15]=r*(u*d-s*f)-i*(n*d-o*f)+c*(n*s-o*u),e}},46477:function(e){e.exports=function(e){var t=new Float32Array(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}},72614:function(e){e.exports=function(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}},77912:function(e){e.exports=function(){var e=new Float32Array(16);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}},68775:function(e){e.exports=function(e){var t=e[0],r=e[1],n=e[2],o=e[3],a=e[4],i=e[5],u=e[6],s=e[7],l=e[8],c=e[9],f=e[10],d=e[11],p=e[12],h=e[13],v=e[14],m=e[15];return(t*i-r*a)*(f*m-d*v)-(t*u-n*a)*(c*m-d*h)+(t*s-o*a)*(c*v-f*h)+(r*u-n*i)*(l*m-d*p)-(r*s-o*i)*(l*v-f*p)+(n*s-o*u)*(l*h-c*p)}},79382:function(e){e.exports=function(e,t){var r=t[0],n=t[1],o=t[2],a=t[3],i=r+r,u=n+n,s=o+o,l=r*i,c=n*i,f=n*u,d=o*i,p=o*u,h=o*s,v=a*i,m=a*u,g=a*s;return e[0]=1-f-h,e[1]=c+g,e[2]=d-m,e[3]=0,e[4]=c-g,e[5]=1-l-h,e[6]=p+v,e[7]=0,e[8]=d+m,e[9]=p-v,e[10]=1-l-f,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}},10679:function(e){e.exports=function(e,t,r){var n,o,a,i=r[0],u=r[1],s=r[2],l=Math.sqrt(i*i+u*u+s*s);if(Math.abs(l)<1e-6)return null;return i*=l=1/l,u*=l,s*=l,n=Math.sin(t),o=Math.cos(t),a=1-o,e[0]=i*i*a+o,e[1]=u*i*a+s*n,e[2]=s*i*a-u*n,e[3]=0,e[4]=i*u*a-s*n,e[5]=u*u*a+o,e[6]=s*u*a+i*n,e[7]=0,e[8]=i*s*a+u*n,e[9]=u*s*a-i*n,e[10]=s*s*a+o,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}},3239:function(e){e.exports=function(e,t,r){var n=t[0],o=t[1],a=t[2],i=t[3],u=n+n,s=o+o,l=a+a,c=n*u,f=n*s,d=n*l,p=o*s,h=o*l,v=a*l,m=i*u,g=i*s,b=i*l;return e[0]=1-(p+v),e[1]=f+b,e[2]=d-g,e[3]=0,e[4]=f-b,e[5]=1-(c+v),e[6]=h+m,e[7]=0,e[8]=d+g,e[9]=h-m,e[10]=1-(c+p),e[11]=0,e[12]=r[0],e[13]=r[1],e[14]=r[2],e[15]=1,e}},70386:function(e){e.exports=function(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}},60136:function(e){e.exports=function(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}},78491:function(e){e.exports=function(e,t){var r=Math.sin(t),n=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=n,e[6]=r,e[7]=0,e[8]=0,e[9]=-r,e[10]=n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}},8934:function(e){e.exports=function(e,t){var r=Math.sin(t),n=Math.cos(t);return e[0]=n,e[1]=0,e[2]=-r,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=r,e[9]=0,e[10]=n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}},98411:function(e){e.exports=function(e,t){var r=Math.sin(t),n=Math.cos(t);return e[0]=n,e[1]=r,e[2]=0,e[3]=0,e[4]=-r,e[5]=n,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}},78379:function(e){e.exports=function(e,t,r,n,o,a,i){var u=1/(r-t),s=1/(o-n),l=1/(a-i);return e[0]=2*a*u,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=2*a*s,e[6]=0,e[7]=0,e[8]=(r+t)*u,e[9]=(o+n)*s,e[10]=(i+a)*l,e[11]=-1,e[12]=0,e[13]=0,e[14]=i*a*2*l,e[15]=0,e}},1608:function(e){e.exports=function(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}},4496:function(e,t,r){e.exports={create:r(77912),clone:r(46477),copy:r(72614),identity:r(1608),transpose:r(49050),invert:r(59248),adjoint:r(33494),determinant:r(68775),multiply:r(15403),translate:r(91696),scale:r(98056),rotate:r(33113),rotateX:r(87874),rotateY:r(60668),rotateZ:r(55040),fromRotation:r(10679),fromRotationTranslation:r(3239),fromScaling:r(70386),fromTranslation:r(60136),fromXRotation:r(78491),fromYRotation:r(8934),fromZRotation:r(98411),fromQuat:r(79382),frustum:r(78379),perspective:r(99789),perspectiveFromFieldOfView:r(81495),ortho:r(6004),lookAt:r(62319),str:r(32165)}},59248:function(e){e.exports=function(e,t){var r=t[0],n=t[1],o=t[2],a=t[3],i=t[4],u=t[5],s=t[6],l=t[7],c=t[8],f=t[9],d=t[10],p=t[11],h=t[12],v=t[13],m=t[14],g=t[15],b=r*u-n*i,y=r*s-o*i,x=r*l-a*i,w=n*s-o*u,k=n*l-a*u,S=o*l-a*s,E=c*v-f*h,A=c*m-d*h,_=c*g-p*h,P=f*m-d*v,C=f*g-p*v,M=d*g-p*m,O=b*M-y*C+x*P+w*_-k*A+S*E;if(!O)return null;return O=1/O,e[0]=(u*M-s*C+l*P)*O,e[1]=(o*C-n*M-a*P)*O,e[2]=(v*S-m*k+g*w)*O,e[3]=(d*k-f*S-p*w)*O,e[4]=(s*_-i*M-l*A)*O,e[5]=(r*M-o*_+a*A)*O,e[6]=(m*x-h*S-g*y)*O,e[7]=(c*S-d*x+p*y)*O,e[8]=(i*C-u*_+l*E)*O,e[9]=(n*_-r*C-a*E)*O,e[10]=(h*k-v*x+g*b)*O,e[11]=(f*x-c*k-p*b)*O,e[12]=(u*A-i*P-s*E)*O,e[13]=(r*P-n*A+o*E)*O,e[14]=(v*y-h*w-m*b)*O,e[15]=(c*w-f*y+d*b)*O,e}},62319:function(e,t,r){var n=r(1608);e.exports=function(e,t,r,o){var a,i,u,s,l,c,f,d,p,h,v=t[0],m=t[1],g=t[2],b=o[0],y=o[1],x=o[2],w=r[0],k=r[1],S=r[2];if(Math.abs(v-w)<1e-6&&Math.abs(m-k)<1e-6&&Math.abs(g-S)<1e-6)return n(e);f=v-w,d=m-k,p=g-S,h=1/Math.sqrt(f*f+d*d+p*p),a=y*(p*=h)-x*(d*=h),i=x*(f*=h)-b*p,u=b*d-y*f,(h=Math.sqrt(a*a+i*i+u*u))?(a*=h=1/h,i*=h,u*=h):(a=0,i=0,u=0);s=d*u-p*i,l=p*a-f*u,c=f*i-d*a,(h=Math.sqrt(s*s+l*l+c*c))?(s*=h=1/h,l*=h,c*=h):(s=0,l=0,c=0);return e[0]=a,e[1]=s,e[2]=f,e[3]=0,e[4]=i,e[5]=l,e[6]=d,e[7]=0,e[8]=u,e[9]=c,e[10]=p,e[11]=0,e[12]=-(a*v+i*m+u*g),e[13]=-(s*v+l*m+c*g),e[14]=-(f*v+d*m+p*g),e[15]=1,e}},15403:function(e){e.exports=function(e,t,r){var n=t[0],o=t[1],a=t[2],i=t[3],u=t[4],s=t[5],l=t[6],c=t[7],f=t[8],d=t[9],p=t[10],h=t[11],v=t[12],m=t[13],g=t[14],b=t[15],y=r[0],x=r[1],w=r[2],k=r[3];return e[0]=y*n+x*u+w*f+k*v,e[1]=y*o+x*s+w*d+k*m,e[2]=y*a+x*l+w*p+k*g,e[3]=y*i+x*c+w*h+k*b,y=r[4],x=r[5],w=r[6],k=r[7],e[4]=y*n+x*u+w*f+k*v,e[5]=y*o+x*s+w*d+k*m,e[6]=y*a+x*l+w*p+k*g,e[7]=y*i+x*c+w*h+k*b,y=r[8],x=r[9],w=r[10],k=r[11],e[8]=y*n+x*u+w*f+k*v,e[9]=y*o+x*s+w*d+k*m,e[10]=y*a+x*l+w*p+k*g,e[11]=y*i+x*c+w*h+k*b,y=r[12],x=r[13],w=r[14],k=r[15],e[12]=y*n+x*u+w*f+k*v,e[13]=y*o+x*s+w*d+k*m,e[14]=y*a+x*l+w*p+k*g,e[15]=y*i+x*c+w*h+k*b,e}},6004:function(e){e.exports=function(e,t,r,n,o,a,i){var u=1/(t-r),s=1/(n-o),l=1/(a-i);return e[0]=-2*u,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*s,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+r)*u,e[13]=(o+n)*s,e[14]=(i+a)*l,e[15]=1,e}},99789:function(e){e.exports=function(e,t,r,n,o){var a=1/Math.tan(t/2),i=1/(n-o);return e[0]=a/r,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=(o+n)*i,e[11]=-1,e[12]=0,e[13]=0,e[14]=2*o*n*i,e[15]=0,e}},81495:function(e){e.exports=function(e,t,r,n){var o=Math.tan(t.upDegrees*Math.PI/180),a=Math.tan(t.downDegrees*Math.PI/180),i=Math.tan(t.leftDegrees*Math.PI/180),u=Math.tan(t.rightDegrees*Math.PI/180),s=2/(i+u),l=2/(o+a);return e[0]=s,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=l,e[6]=0,e[7]=0,e[8]=-(i-u)*s*.5,e[9]=(o-a)*l*.5,e[10]=n/(r-n),e[11]=-1,e[12]=0,e[13]=0,e[14]=n*r/(r-n),e[15]=0,e}},33113:function(e){e.exports=function(e,t,r,n){var o,a,i,u,s,l,c,f,d,p,h,v,m,g,b,y,x,w,k,S,E,A,_,P,C=n[0],M=n[1],O=n[2],T=Math.sqrt(C*C+M*M+O*O);if(Math.abs(T)<1e-6)return null;C*=T=1/T,M*=T,O*=T,o=Math.sin(r),a=Math.cos(r),i=1-a,u=t[0],s=t[1],l=t[2],c=t[3],f=t[4],d=t[5],p=t[6],h=t[7],v=t[8],m=t[9],g=t[10],b=t[11],y=C*C*i+a,x=M*C*i+O*o,w=O*C*i-M*o,k=C*M*i-O*o,S=M*M*i+a,E=O*M*i+C*o,A=C*O*i+M*o,_=M*O*i-C*o,P=O*O*i+a,e[0]=u*y+f*x+v*w,e[1]=s*y+d*x+m*w,e[2]=l*y+p*x+g*w,e[3]=c*y+h*x+b*w,e[4]=u*k+f*S+v*E,e[5]=s*k+d*S+m*E,e[6]=l*k+p*S+g*E,e[7]=c*k+h*S+b*E,e[8]=u*A+f*_+v*P,e[9]=s*A+d*_+m*P,e[10]=l*A+p*_+g*P,e[11]=c*A+h*_+b*P,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]);return e}},87874:function(e){e.exports=function(e,t,r){var n=Math.sin(r),o=Math.cos(r),a=t[4],i=t[5],u=t[6],s=t[7],l=t[8],c=t[9],f=t[10],d=t[11];t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]);return e[4]=a*o+l*n,e[5]=i*o+c*n,e[6]=u*o+f*n,e[7]=s*o+d*n,e[8]=l*o-a*n,e[9]=c*o-i*n,e[10]=f*o-u*n,e[11]=d*o-s*n,e}},60668:function(e){e.exports=function(e,t,r){var n=Math.sin(r),o=Math.cos(r),a=t[0],i=t[1],u=t[2],s=t[3],l=t[8],c=t[9],f=t[10],d=t[11];t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]);return e[0]=a*o-l*n,e[1]=i*o-c*n,e[2]=u*o-f*n,e[3]=s*o-d*n,e[8]=a*n+l*o,e[9]=i*n+c*o,e[10]=u*n+f*o,e[11]=s*n+d*o,e}},55040:function(e){e.exports=function(e,t,r){var n=Math.sin(r),o=Math.cos(r),a=t[0],i=t[1],u=t[2],s=t[3],l=t[4],c=t[5],f=t[6],d=t[7];t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]);return e[0]=a*o+l*n,e[1]=i*o+c*n,e[2]=u*o+f*n,e[3]=s*o+d*n,e[4]=l*o-a*n,e[5]=c*o-i*n,e[6]=f*o-u*n,e[7]=d*o-s*n,e}},98056:function(e){e.exports=function(e,t,r){var n=r[0],o=r[1],a=r[2];return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e[4]=t[4]*o,e[5]=t[5]*o,e[6]=t[6]*o,e[7]=t[7]*o,e[8]=t[8]*a,e[9]=t[9]*a,e[10]=t[10]*a,e[11]=t[11]*a,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}},32165:function(e){e.exports=function(e){return"mat4("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+", "+e[4]+", "+e[5]+", "+e[6]+", "+e[7]+", "+e[8]+", "+e[9]+", "+e[10]+", "+e[11]+", "+e[12]+", "+e[13]+", "+e[14]+", "+e[15]+")"}},91696:function(e){e.exports=function(e,t,r){var n,o,a,i,u,s,l,c,f,d,p,h,v=r[0],m=r[1],g=r[2];t===e?(e[12]=t[0]*v+t[4]*m+t[8]*g+t[12],e[13]=t[1]*v+t[5]*m+t[9]*g+t[13],e[14]=t[2]*v+t[6]*m+t[10]*g+t[14],e[15]=t[3]*v+t[7]*m+t[11]*g+t[15]):(n=t[0],o=t[1],a=t[2],i=t[3],u=t[4],s=t[5],l=t[6],c=t[7],f=t[8],d=t[9],p=t[10],h=t[11],e[0]=n,e[1]=o,e[2]=a,e[3]=i,e[4]=u,e[5]=s,e[6]=l,e[7]=c,e[8]=f,e[9]=d,e[10]=p,e[11]=h,e[12]=n*v+u*m+f*g+t[12],e[13]=o*v+s*m+d*g+t[13],e[14]=a*v+l*m+p*g+t[14],e[15]=i*v+c*m+h*g+t[15]);return e}},49050:function(e){e.exports=function(e,t){if(e===t){var r=t[1],n=t[2],o=t[3],a=t[6],i=t[7],u=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=r,e[6]=t[9],e[7]=t[13],e[8]=n,e[9]=a,e[11]=t[14],e[12]=o,e[13]=i,e[14]=u}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}},19714:function(e){e.exports=function(e,t,r){return e[0]=t[0]+r[0],e[1]=t[1]+r[1],e[2]=t[2]+r[2],e}},82491:function(e,t,r){e.exports=function(e,t){var r=n(e[0],e[1],e[2]),i=n(t[0],t[1],t[2]);o(r,r),o(i,i);var u=a(r,i);return u>1?0:Math.acos(u)};var n=r(17996),o=r(11323),a=r(55232)},73508:function(e){e.exports=function(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}},16387:function(e){e.exports=function(e){var t=new Float32Array(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}},88499:function(e){e.exports=function(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}},1026:function(e){e.exports=function(){var e=new Float32Array(3);return e[0]=0,e[1]=0,e[2]=0,e}},11600:function(e){e.exports=function(e,t,r){var n=t[0],o=t[1],a=t[2],i=r[0],u=r[1],s=r[2];return e[0]=o*s-a*u,e[1]=a*i-n*s,e[2]=n*u-o*i,e}},38945:function(e,t,r){e.exports=r(35922)},35922:function(e){e.exports=function(e,t){var r=t[0]-e[0],n=t[1]-e[1],o=t[2]-e[2];return Math.sqrt(r*r+n*n+o*o)}},64651:function(e,t,r){e.exports=r(69678)},69678:function(e){e.exports=function(e,t,r){return e[0]=t[0]/r[0],e[1]=t[1]/r[1],e[2]=t[2]/r[2],e}},55232:function(e){e.exports=function(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}},68728:function(e){e.exports=1e-6},11574:function(e,t,r){e.exports=function(e,t){var r=e[0],o=e[1],a=e[2],i=t[0],u=t[1],s=t[2];return Math.abs(r-i)<=n*Math.max(1,Math.abs(r),Math.abs(i))&&Math.abs(o-u)<=n*Math.max(1,Math.abs(o),Math.abs(u))&&Math.abs(a-s)<=n*Math.max(1,Math.abs(a),Math.abs(s))};var n=r(68728)},68124:function(e){e.exports=function(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}},10250:function(e){e.exports=function(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}},79223:function(e,t,r){e.exports=function(e,t,r,o,a,i){var u,s;t||(t=3);r||(r=0);s=o?Math.min(o*t+r,e.length):e.length;for(u=r;u0&&(a=1/Math.sqrt(a),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a);return e}},10482:function(e){e.exports=function(e,t){t=t||1;var r=2*Math.random()*Math.PI,n=2*Math.random()-1,o=Math.sqrt(1-n*n)*t;return e[0]=Math.cos(r)*o,e[1]=Math.sin(r)*o,e[2]=n*t,e}},32996:function(e){e.exports=function(e,t,r,n){var o=r[1],a=r[2],i=t[1]-o,u=t[2]-a,s=Math.sin(n),l=Math.cos(n);return e[0]=t[0],e[1]=o+i*l-u*s,e[2]=a+i*s+u*l,e}},69218:function(e){e.exports=function(e,t,r,n){var o=r[0],a=r[2],i=t[0]-o,u=t[2]-a,s=Math.sin(n),l=Math.cos(n);return e[0]=o+u*s+i*l,e[1]=t[1],e[2]=a+u*l-i*s,e}},43115:function(e){e.exports=function(e,t,r,n){var o=r[0],a=r[1],i=t[0]-o,u=t[1]-a,s=Math.sin(n),l=Math.cos(n);return e[0]=o+i*l-u*s,e[1]=a+i*s+u*l,e[2]=t[2],e}},27597:function(e){e.exports=function(e,t){return e[0]=Math.round(t[0]),e[1]=Math.round(t[1]),e[2]=Math.round(t[2]),e}},64149:function(e){e.exports=function(e,t,r){return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e}},67433:function(e){e.exports=function(e,t,r,n){return e[0]=t[0]+r[0]*n,e[1]=t[1]+r[1]*n,e[2]=t[2]+r[2]*n,e}},92433:function(e){e.exports=function(e,t,r,n){return e[0]=t,e[1]=r,e[2]=n,e}},45631:function(e,t,r){e.exports=r(32861)},34827:function(e,t,r){e.exports=r(80757)},32861:function(e){e.exports=function(e,t){var r=t[0]-e[0],n=t[1]-e[1],o=t[2]-e[2];return r*r+n*n+o*o}},80757:function(e){e.exports=function(e){var t=e[0],r=e[1],n=e[2];return t*t+r*r+n*n}},97045:function(e,t,r){e.exports=r(28361)},28361:function(e){e.exports=function(e,t,r){return e[0]=t[0]-r[0],e[1]=t[1]-r[1],e[2]=t[2]-r[2],e}},5069:function(e){e.exports=function(e,t,r){var n=t[0],o=t[1],a=t[2];return e[0]=n*r[0]+o*r[3]+a*r[6],e[1]=n*r[1]+o*r[4]+a*r[7],e[2]=n*r[2]+o*r[5]+a*r[8],e}},8224:function(e){e.exports=function(e,t,r){var n=t[0],o=t[1],a=t[2],i=r[3]*n+r[7]*o+r[11]*a+r[15];return i=i||1,e[0]=(r[0]*n+r[4]*o+r[8]*a+r[12])/i,e[1]=(r[1]*n+r[5]*o+r[9]*a+r[13])/i,e[2]=(r[2]*n+r[6]*o+r[10]*a+r[14])/i,e}},47545:function(e){e.exports=function(e,t,r){var n=t[0],o=t[1],a=t[2],i=r[0],u=r[1],s=r[2],l=r[3],c=l*n+u*a-s*o,f=l*o+s*n-i*a,d=l*a+i*o-u*n,p=-i*n-u*o-s*a;return e[0]=c*l+p*-i+f*-s-d*-u,e[1]=f*l+p*-u+d*-i-c*-s,e[2]=d*l+p*-s+c*-u-f*-i,e}},34463:function(e,t,r){"use strict";var n=r(72791),o=r(45296);function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;r