{"version":3,"file":"EllipseOutlineGeometry-7293c691.js","sources":["../../../../Source/Core/EllipseOutlineGeometry.js"],"sourcesContent":["import arrayFill from \"./arrayFill.js\";\nimport BoundingSphere from \"./BoundingSphere.js\";\nimport Cartesian3 from \"./Cartesian3.js\";\nimport ComponentDatatype from \"./ComponentDatatype.js\";\nimport defaultValue from \"./defaultValue.js\";\nimport defined from \"./defined.js\";\nimport DeveloperError from \"./DeveloperError.js\";\nimport EllipseGeometryLibrary from \"./EllipseGeometryLibrary.js\";\nimport Ellipsoid from \"./Ellipsoid.js\";\nimport Geometry from \"./Geometry.js\";\nimport GeometryAttribute from \"./GeometryAttribute.js\";\nimport GeometryAttributes from \"./GeometryAttributes.js\";\nimport GeometryOffsetAttribute from \"./GeometryOffsetAttribute.js\";\nimport IndexDatatype from \"./IndexDatatype.js\";\nimport CesiumMath from \"./Math.js\";\nimport PrimitiveType from \"./PrimitiveType.js\";\n\nconst scratchCartesian1 = new Cartesian3();\nlet boundingSphereCenter = new Cartesian3();\n\nfunction computeEllipse(options) {\n const center = options.center;\n boundingSphereCenter = Cartesian3.multiplyByScalar(\n options.ellipsoid.geodeticSurfaceNormal(center, boundingSphereCenter),\n options.height,\n boundingSphereCenter\n );\n boundingSphereCenter = Cartesian3.add(\n center,\n boundingSphereCenter,\n boundingSphereCenter\n );\n const boundingSphere = new BoundingSphere(\n boundingSphereCenter,\n options.semiMajorAxis\n );\n const positions = EllipseGeometryLibrary.computeEllipsePositions(\n options,\n false,\n true\n ).outerPositions;\n\n const attributes = new GeometryAttributes({\n position: new GeometryAttribute({\n componentDatatype: ComponentDatatype.DOUBLE,\n componentsPerAttribute: 3,\n values: EllipseGeometryLibrary.raisePositionsToHeight(\n positions,\n options,\n false\n ),\n }),\n });\n\n const length = positions.length / 3;\n const indices = IndexDatatype.createTypedArray(length, length * 2);\n let index = 0;\n for (let i = 0; i < length; ++i) {\n indices[index++] = i;\n indices[index++] = (i + 1) % length;\n }\n\n return {\n boundingSphere: boundingSphere,\n attributes: attributes,\n indices: indices,\n };\n}\n\nconst topBoundingSphere = new BoundingSphere();\nconst bottomBoundingSphere = new BoundingSphere();\nfunction computeExtrudedEllipse(options) {\n const center = options.center;\n const ellipsoid = options.ellipsoid;\n const semiMajorAxis = options.semiMajorAxis;\n let scaledNormal = Cartesian3.multiplyByScalar(\n ellipsoid.geodeticSurfaceNormal(center, scratchCartesian1),\n options.height,\n scratchCartesian1\n );\n topBoundingSphere.center = Cartesian3.add(\n center,\n scaledNormal,\n topBoundingSphere.center\n );\n topBoundingSphere.radius = semiMajorAxis;\n\n scaledNormal = Cartesian3.multiplyByScalar(\n ellipsoid.geodeticSurfaceNormal(center, scaledNormal),\n options.extrudedHeight,\n scaledNormal\n );\n bottomBoundingSphere.center = Cartesian3.add(\n center,\n scaledNormal,\n bottomBoundingSphere.center\n );\n bottomBoundingSphere.radius = semiMajorAxis;\n\n let positions = EllipseGeometryLibrary.computeEllipsePositions(\n options,\n false,\n true\n ).outerPositions;\n const attributes = new GeometryAttributes({\n position: new GeometryAttribute({\n componentDatatype: ComponentDatatype.DOUBLE,\n componentsPerAttribute: 3,\n values: EllipseGeometryLibrary.raisePositionsToHeight(\n positions,\n options,\n true\n ),\n }),\n });\n\n positions = attributes.position.values;\n const boundingSphere = BoundingSphere.union(\n topBoundingSphere,\n bottomBoundingSphere\n );\n let length = positions.length / 3;\n\n if (defined(options.offsetAttribute)) {\n let applyOffset = new Uint8Array(length);\n if (options.offsetAttribute === GeometryOffsetAttribute.TOP) {\n applyOffset = arrayFill(applyOffset, 1, 0, length / 2);\n } else {\n const offsetValue =\n options.offsetAttribute === GeometryOffsetAttribute.NONE ? 0 : 1;\n applyOffset = arrayFill(applyOffset, offsetValue);\n }\n\n attributes.applyOffset = new GeometryAttribute({\n componentDatatype: ComponentDatatype.UNSIGNED_BYTE,\n componentsPerAttribute: 1,\n values: applyOffset,\n });\n }\n\n let numberOfVerticalLines = defaultValue(options.numberOfVerticalLines, 16);\n numberOfVerticalLines = CesiumMath.clamp(\n numberOfVerticalLines,\n 0,\n length / 2\n );\n\n const indices = IndexDatatype.createTypedArray(\n length,\n length * 2 + numberOfVerticalLines * 2\n );\n\n length /= 2;\n let index = 0;\n let i;\n for (i = 0; i < length; ++i) {\n indices[index++] = i;\n indices[index++] = (i + 1) % length;\n indices[index++] = i + length;\n indices[index++] = ((i + 1) % length) + length;\n }\n\n let numSide;\n if (numberOfVerticalLines > 0) {\n const numSideLines = Math.min(numberOfVerticalLines, length);\n numSide = Math.round(length / numSideLines);\n\n const maxI = Math.min(numSide * numberOfVerticalLines, length);\n for (i = 0; i < maxI; i += numSide) {\n indices[index++] = i;\n indices[index++] = i + length;\n }\n }\n\n return {\n boundingSphere: boundingSphere,\n attributes: attributes,\n indices: indices,\n };\n}\n\n/**\n * A description of the outline of an ellipse on an ellipsoid.\n *\n * @alias EllipseOutlineGeometry\n * @constructor\n *\n * @param {Object} options Object with the following properties:\n * @param {Cartesian3} options.center The ellipse's center point in the fixed frame.\n * @param {Number} options.semiMajorAxis The length of the ellipse's semi-major axis in meters.\n * @param {Number} options.semiMinorAxis The length of the ellipse's semi-minor axis in meters.\n * @param {Ellipsoid} [options.ellipsoid=Ellipsoid.WGS84] The ellipsoid the ellipse will be on.\n * @param {Number} [options.height=0.0] The distance in meters between the ellipse and the ellipsoid surface.\n * @param {Number} [options.extrudedHeight] The distance in meters between the ellipse's extruded face and the ellipsoid surface.\n * @param {Number} [options.rotation=0.0] The angle from north (counter-clockwise) in radians.\n * @param {Number} [options.granularity=0.02] The angular distance between points on the ellipse in radians.\n * @param {Number} [options.numberOfVerticalLines=16] Number of lines to draw between the top and bottom surface of an extruded ellipse.\n *\n * @exception {DeveloperError} semiMajorAxis and semiMinorAxis must be greater than zero.\n * @exception {DeveloperError} semiMajorAxis must be greater than or equal to the semiMinorAxis.\n * @exception {DeveloperError} granularity must be greater than zero.\n *\n * @see EllipseOutlineGeometry.createGeometry\n *\n * @example\n * const ellipse = new Cesium.EllipseOutlineGeometry({\n * center : Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883),\n * semiMajorAxis : 500000.0,\n * semiMinorAxis : 300000.0,\n * rotation : Cesium.Math.toRadians(60.0)\n * });\n * const geometry = Cesium.EllipseOutlineGeometry.createGeometry(ellipse);\n */\nfunction EllipseOutlineGeometry(options) {\n options = defaultValue(options, defaultValue.EMPTY_OBJECT);\n\n const center = options.center;\n const ellipsoid = defaultValue(options.ellipsoid, Ellipsoid.WGS84);\n const semiMajorAxis = options.semiMajorAxis;\n const semiMinorAxis = options.semiMinorAxis;\n const granularity = defaultValue(\n options.granularity,\n CesiumMath.RADIANS_PER_DEGREE\n );\n\n //>>includeStart('debug', pragmas.debug);\n if (!defined(center)) {\n throw new DeveloperError(\"center is required.\");\n }\n if (!defined(semiMajorAxis)) {\n throw new DeveloperError(\"semiMajorAxis is required.\");\n }\n if (!defined(semiMinorAxis)) {\n throw new DeveloperError(\"semiMinorAxis is required.\");\n }\n if (semiMajorAxis < semiMinorAxis) {\n throw new DeveloperError(\n \"semiMajorAxis must be greater than or equal to the semiMinorAxis.\"\n );\n }\n if (granularity <= 0.0) {\n throw new DeveloperError(\"granularity must be greater than zero.\");\n }\n //>>includeEnd('debug');\n\n const height = defaultValue(options.height, 0.0);\n const extrudedHeight = defaultValue(options.extrudedHeight, height);\n\n this._center = Cartesian3.clone(center);\n this._semiMajorAxis = semiMajorAxis;\n this._semiMinorAxis = semiMinorAxis;\n this._ellipsoid = Ellipsoid.clone(ellipsoid);\n this._rotation = defaultValue(options.rotation, 0.0);\n this._height = Math.max(extrudedHeight, height);\n this._granularity = granularity;\n this._extrudedHeight = Math.min(extrudedHeight, height);\n this._numberOfVerticalLines = Math.max(\n defaultValue(options.numberOfVerticalLines, 16),\n 0\n );\n this._offsetAttribute = options.offsetAttribute;\n this._workerName = \"createEllipseOutlineGeometry\";\n}\n\n/**\n * The number of elements used to pack the object into an array.\n * @type {Number}\n */\nEllipseOutlineGeometry.packedLength =\n Cartesian3.packedLength + Ellipsoid.packedLength + 8;\n\n/**\n * Stores the provided instance into the provided array.\n *\n * @param {EllipseOutlineGeometry} value The value to pack.\n * @param {Number[]} array The array to pack into.\n * @param {Number} [startingIndex=0] The index into the array at which to start packing the elements.\n *\n * @returns {Number[]} The array that was packed into\n */\nEllipseOutlineGeometry.pack = function (value, array, startingIndex) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(value)) {\n throw new DeveloperError(\"value is required\");\n }\n if (!defined(array)) {\n throw new DeveloperError(\"array is required\");\n }\n //>>includeEnd('debug');\n\n startingIndex = defaultValue(startingIndex, 0);\n\n Cartesian3.pack(value._center, array, startingIndex);\n startingIndex += Cartesian3.packedLength;\n\n Ellipsoid.pack(value._ellipsoid, array, startingIndex);\n startingIndex += Ellipsoid.packedLength;\n\n array[startingIndex++] = value._semiMajorAxis;\n array[startingIndex++] = value._semiMinorAxis;\n array[startingIndex++] = value._rotation;\n array[startingIndex++] = value._height;\n array[startingIndex++] = value._granularity;\n array[startingIndex++] = value._extrudedHeight;\n array[startingIndex++] = value._numberOfVerticalLines;\n array[startingIndex] = defaultValue(value._offsetAttribute, -1);\n\n return array;\n};\n\nconst scratchCenter = new Cartesian3();\nconst scratchEllipsoid = new Ellipsoid();\nconst scratchOptions = {\n center: scratchCenter,\n ellipsoid: scratchEllipsoid,\n semiMajorAxis: undefined,\n semiMinorAxis: undefined,\n rotation: undefined,\n height: undefined,\n granularity: undefined,\n extrudedHeight: undefined,\n numberOfVerticalLines: undefined,\n offsetAttribute: undefined,\n};\n\n/**\n * Retrieves an instance from a packed array.\n *\n * @param {Number[]} array The packed array.\n * @param {Number} [startingIndex=0] The starting index of the element to be unpacked.\n * @param {EllipseOutlineGeometry} [result] The object into which to store the result.\n * @returns {EllipseOutlineGeometry} The modified result parameter or a new EllipseOutlineGeometry instance if one was not provided.\n */\nEllipseOutlineGeometry.unpack = function (array, startingIndex, result) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(array)) {\n throw new DeveloperError(\"array is required\");\n }\n //>>includeEnd('debug');\n\n startingIndex = defaultValue(startingIndex, 0);\n\n const center = Cartesian3.unpack(array, startingIndex, scratchCenter);\n startingIndex += Cartesian3.packedLength;\n\n const ellipsoid = Ellipsoid.unpack(array, startingIndex, scratchEllipsoid);\n startingIndex += Ellipsoid.packedLength;\n\n const semiMajorAxis = array[startingIndex++];\n const semiMinorAxis = array[startingIndex++];\n const rotation = array[startingIndex++];\n const height = array[startingIndex++];\n const granularity = array[startingIndex++];\n const extrudedHeight = array[startingIndex++];\n const numberOfVerticalLines = array[startingIndex++];\n const offsetAttribute = array[startingIndex];\n\n if (!defined(result)) {\n scratchOptions.height = height;\n scratchOptions.extrudedHeight = extrudedHeight;\n scratchOptions.granularity = granularity;\n scratchOptions.rotation = rotation;\n scratchOptions.semiMajorAxis = semiMajorAxis;\n scratchOptions.semiMinorAxis = semiMinorAxis;\n scratchOptions.numberOfVerticalLines = numberOfVerticalLines;\n scratchOptions.offsetAttribute =\n offsetAttribute === -1 ? undefined : offsetAttribute;\n\n return new EllipseOutlineGeometry(scratchOptions);\n }\n\n result._center = Cartesian3.clone(center, result._center);\n result._ellipsoid = Ellipsoid.clone(ellipsoid, result._ellipsoid);\n result._semiMajorAxis = semiMajorAxis;\n result._semiMinorAxis = semiMinorAxis;\n result._rotation = rotation;\n result._height = height;\n result._granularity = granularity;\n result._extrudedHeight = extrudedHeight;\n result._numberOfVerticalLines = numberOfVerticalLines;\n result._offsetAttribute =\n offsetAttribute === -1 ? undefined : offsetAttribute;\n\n return result;\n};\n\n/**\n * Computes the geometric representation of an outline of an ellipse on an ellipsoid, including its vertices, indices, and a bounding sphere.\n *\n * @param {EllipseOutlineGeometry} ellipseGeometry A description of the ellipse.\n * @returns {Geometry|undefined} The computed vertices and indices.\n */\nEllipseOutlineGeometry.createGeometry = function (ellipseGeometry) {\n if (\n ellipseGeometry._semiMajorAxis <= 0.0 ||\n ellipseGeometry._semiMinorAxis <= 0.0\n ) {\n return;\n }\n\n const height = ellipseGeometry._height;\n const extrudedHeight = ellipseGeometry._extrudedHeight;\n const extrude = !CesiumMath.equalsEpsilon(\n height,\n extrudedHeight,\n 0,\n CesiumMath.EPSILON2\n );\n\n ellipseGeometry._center = ellipseGeometry._ellipsoid.scaleToGeodeticSurface(\n ellipseGeometry._center,\n ellipseGeometry._center\n );\n const options = {\n center: ellipseGeometry._center,\n semiMajorAxis: ellipseGeometry._semiMajorAxis,\n semiMinorAxis: ellipseGeometry._semiMinorAxis,\n ellipsoid: ellipseGeometry._ellipsoid,\n rotation: ellipseGeometry._rotation,\n height: height,\n granularity: ellipseGeometry._granularity,\n numberOfVerticalLines: ellipseGeometry._numberOfVerticalLines,\n };\n let geometry;\n if (extrude) {\n options.extrudedHeight = extrudedHeight;\n options.offsetAttribute = ellipseGeometry._offsetAttribute;\n geometry = computeExtrudedEllipse(options);\n } else {\n geometry = computeEllipse(options);\n\n if (defined(ellipseGeometry._offsetAttribute)) {\n const length = geometry.attributes.position.values.length;\n const applyOffset = new Uint8Array(length / 3);\n const offsetValue =\n ellipseGeometry._offsetAttribute === GeometryOffsetAttribute.NONE\n ? 0\n : 1;\n arrayFill(applyOffset, offsetValue);\n geometry.attributes.applyOffset = new GeometryAttribute({\n componentDatatype: ComponentDatatype.UNSIGNED_BYTE,\n componentsPerAttribute: 1,\n values: applyOffset,\n });\n }\n }\n\n return new Geometry({\n attributes: geometry.attributes,\n indices: geometry.indices,\n primitiveType: PrimitiveType.LINES,\n boundingSphere: geometry.boundingSphere,\n offsetAttribute: ellipseGeometry._offsetAttribute,\n });\n};\nexport default EllipseOutlineGeometry;\n"],"names":["Cartesian3","BoundingSphere","EllipseGeometryLibrary","GeometryAttributes","GeometryAttribute","ComponentDatatype","IndexDatatype","defined","GeometryOffsetAttribute","arrayFill","defaultValue","CesiumMath","Ellipsoid","DeveloperError","Geometry","PrimitiveType"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;EAiBA,MAAM,iBAAiB,GAAG,IAAIA,kBAAU,EAAE,CAAC;EAC3C,IAAI,oBAAoB,GAAG,IAAIA,kBAAU,EAAE,CAAC;AAC5C;EACA,SAAS,cAAc,CAAC,OAAO,EAAE;EACjC,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;EAChC,EAAE,oBAAoB,GAAGA,kBAAU,CAAC,gBAAgB;EACpD,IAAI,OAAO,CAAC,SAAS,CAAC,qBAAqB,CAAC,MAAM,EAAE,oBAAoB,CAAC;EACzE,IAAI,OAAO,CAAC,MAAM;EAClB,IAAI,oBAAoB;EACxB,GAAG,CAAC;EACJ,EAAE,oBAAoB,GAAGA,kBAAU,CAAC,GAAG;EACvC,IAAI,MAAM;EACV,IAAI,oBAAoB;EACxB,IAAI,oBAAoB;EACxB,GAAG,CAAC;EACJ,EAAE,MAAM,cAAc,GAAG,IAAIC,yBAAc;EAC3C,IAAI,oBAAoB;EACxB,IAAI,OAAO,CAAC,aAAa;EACzB,GAAG,CAAC;EACJ,EAAE,MAAM,SAAS,GAAGC,6CAAsB,CAAC,uBAAuB;EAClE,IAAI,OAAO;EACX,IAAI,KAAK;EACT,IAAI,IAAI;EACR,GAAG,CAAC,cAAc,CAAC;AACnB;EACA,EAAE,MAAM,UAAU,GAAG,IAAIC,qCAAkB,CAAC;EAC5C,IAAI,QAAQ,EAAE,IAAIC,mCAAiB,CAAC;EACpC,MAAM,iBAAiB,EAAEC,mCAAiB,CAAC,MAAM;EACjD,MAAM,sBAAsB,EAAE,CAAC;EAC/B,MAAM,MAAM,EAAEH,6CAAsB,CAAC,sBAAsB;EAC3D,QAAQ,SAAS;EACjB,QAAQ,OAAO;EACf,QAAQ,KAAK;EACb,OAAO;EACP,KAAK,CAAC;EACN,GAAG,CAAC,CAAC;AACL;EACA,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;EACtC,EAAE,MAAM,OAAO,GAAGI,2BAAa,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;EACrE,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;EAChB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;EACnC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;EACzB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC;EACxC,GAAG;AACH;EACA,EAAE,OAAO;EACT,IAAI,cAAc,EAAE,cAAc;EAClC,IAAI,UAAU,EAAE,UAAU;EAC1B,IAAI,OAAO,EAAE,OAAO;EACpB,GAAG,CAAC;EACJ,CAAC;AACD;EACA,MAAM,iBAAiB,GAAG,IAAIL,yBAAc,EAAE,CAAC;EAC/C,MAAM,oBAAoB,GAAG,IAAIA,yBAAc,EAAE,CAAC;EAClD,SAAS,sBAAsB,CAAC,OAAO,EAAE;EACzC,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;EAChC,EAAE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;EACtC,EAAE,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;EAC9C,EAAE,IAAI,YAAY,GAAGD,kBAAU,CAAC,gBAAgB;EAChD,IAAI,SAAS,CAAC,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,CAAC;EAC9D,IAAI,OAAO,CAAC,MAAM;EAClB,IAAI,iBAAiB;EACrB,GAAG,CAAC;EACJ,EAAE,iBAAiB,CAAC,MAAM,GAAGA,kBAAU,CAAC,GAAG;EAC3C,IAAI,MAAM;EACV,IAAI,YAAY;EAChB,IAAI,iBAAiB,CAAC,MAAM;EAC5B,GAAG,CAAC;EACJ,EAAE,iBAAiB,CAAC,MAAM,GAAG,aAAa,CAAC;AAC3C;EACA,EAAE,YAAY,GAAGA,kBAAU,CAAC,gBAAgB;EAC5C,IAAI,SAAS,CAAC,qBAAqB,CAAC,MAAM,EAAE,YAAY,CAAC;EACzD,IAAI,OAAO,CAAC,cAAc;EAC1B,IAAI,YAAY;EAChB,GAAG,CAAC;EACJ,EAAE,oBAAoB,CAAC,MAAM,GAAGA,kBAAU,CAAC,GAAG;EAC9C,IAAI,MAAM;EACV,IAAI,YAAY;EAChB,IAAI,oBAAoB,CAAC,MAAM;EAC/B,GAAG,CAAC;EACJ,EAAE,oBAAoB,CAAC,MAAM,GAAG,aAAa,CAAC;AAC9C;EACA,EAAE,IAAI,SAAS,GAAGE,6CAAsB,CAAC,uBAAuB;EAChE,IAAI,OAAO;EACX,IAAI,KAAK;EACT,IAAI,IAAI;EACR,GAAG,CAAC,cAAc,CAAC;EACnB,EAAE,MAAM,UAAU,GAAG,IAAIC,qCAAkB,CAAC;EAC5C,IAAI,QAAQ,EAAE,IAAIC,mCAAiB,CAAC;EACpC,MAAM,iBAAiB,EAAEC,mCAAiB,CAAC,MAAM;EACjD,MAAM,sBAAsB,EAAE,CAAC;EAC/B,MAAM,MAAM,EAAEH,6CAAsB,CAAC,sBAAsB;EAC3D,QAAQ,SAAS;EACjB,QAAQ,OAAO;EACf,QAAQ,IAAI;EACZ,OAAO;EACP,KAAK,CAAC;EACN,GAAG,CAAC,CAAC;AACL;EACA,EAAE,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;EACzC,EAAE,MAAM,cAAc,GAAGD,yBAAc,CAAC,KAAK;EAC7C,IAAI,iBAAiB;EACrB,IAAI,oBAAoB;EACxB,GAAG,CAAC;EACJ,EAAE,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AACpC;EACA,EAAE,IAAIM,YAAO,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;EACxC,IAAI,IAAI,WAAW,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;EAC7C,IAAI,IAAI,OAAO,CAAC,eAAe,KAAKC,+CAAuB,CAAC,GAAG,EAAE;EACjE,MAAM,WAAW,GAAGC,iCAAS,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;EAC7D,KAAK,MAAM;EACX,MAAM,MAAM,WAAW;EACvB,QAAQ,OAAO,CAAC,eAAe,KAAKD,+CAAuB,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;EACzE,MAAM,WAAW,GAAGC,iCAAS,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;EACxD,KAAK;AACL;EACA,IAAI,UAAU,CAAC,WAAW,GAAG,IAAIL,mCAAiB,CAAC;EACnD,MAAM,iBAAiB,EAAEC,mCAAiB,CAAC,aAAa;EACxD,MAAM,sBAAsB,EAAE,CAAC;EAC/B,MAAM,MAAM,EAAE,WAAW;EACzB,KAAK,CAAC,CAAC;EACP,GAAG;AACH;EACA,EAAE,IAAI,qBAAqB,GAAGK,iBAAY,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;EAC9E,EAAE,qBAAqB,GAAGC,4BAAU,CAAC,KAAK;EAC1C,IAAI,qBAAqB;EACzB,IAAI,CAAC;EACL,IAAI,MAAM,GAAG,CAAC;EACd,GAAG,CAAC;AACJ;EACA,EAAE,MAAM,OAAO,GAAGL,2BAAa,CAAC,gBAAgB;EAChD,IAAI,MAAM;EACV,IAAI,MAAM,GAAG,CAAC,GAAG,qBAAqB,GAAG,CAAC;EAC1C,GAAG,CAAC;AACJ;EACA,EAAE,MAAM,IAAI,CAAC,CAAC;EACd,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;EAChB,EAAE,IAAI,CAAC,CAAC;EACR,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;EAC/B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;EACzB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC;EACxC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;EAClC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,IAAI,MAAM,CAAC;EACnD,GAAG;AACH;EACA,EAAE,IAAI,OAAO,CAAC;EACd,EAAE,IAAI,qBAAqB,GAAG,CAAC,EAAE;EACjC,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;EACjE,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC;AAChD;EACA,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,qBAAqB,EAAE,MAAM,CAAC,CAAC;EACnE,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,OAAO,EAAE;EACxC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;EAC3B,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;EACpC,KAAK;EACL,GAAG;AACH;EACA,EAAE,OAAO;EACT,IAAI,cAAc,EAAE,cAAc;EAClC,IAAI,UAAU,EAAE,UAAU;EAC1B,IAAI,OAAO,EAAE,OAAO;EACpB,GAAG,CAAC;EACJ,CAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAAS,sBAAsB,CAAC,OAAO,EAAE;EACzC,EAAE,OAAO,GAAGI,iBAAY,CAAC,OAAO,EAAEA,iBAAY,CAAC,YAAY,CAAC,CAAC;AAC7D;EACA,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;EAChC,EAAE,MAAM,SAAS,GAAGA,iBAAY,CAAC,OAAO,CAAC,SAAS,EAAEE,iBAAS,CAAC,KAAK,CAAC,CAAC;EACrE,EAAE,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;EAC9C,EAAE,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;EAC9C,EAAE,MAAM,WAAW,GAAGF,iBAAY;EAClC,IAAI,OAAO,CAAC,WAAW;EACvB,IAAIC,4BAAU,CAAC,kBAAkB;EACjC,GAAG,CAAC;AACJ;EACA;EACA,EAAE,IAAI,CAACJ,YAAO,CAAC,MAAM,CAAC,EAAE;EACxB,IAAI,MAAM,IAAIM,2BAAc,CAAC,qBAAqB,CAAC,CAAC;EACpD,GAAG;EACH,EAAE,IAAI,CAACN,YAAO,CAAC,aAAa,CAAC,EAAE;EAC/B,IAAI,MAAM,IAAIM,2BAAc,CAAC,4BAA4B,CAAC,CAAC;EAC3D,GAAG;EACH,EAAE,IAAI,CAACN,YAAO,CAAC,aAAa,CAAC,EAAE;EAC/B,IAAI,MAAM,IAAIM,2BAAc,CAAC,4BAA4B,CAAC,CAAC;EAC3D,GAAG;EACH,EAAE,IAAI,aAAa,GAAG,aAAa,EAAE;EACrC,IAAI,MAAM,IAAIA,2BAAc;EAC5B,MAAM,mEAAmE;EACzE,KAAK,CAAC;EACN,GAAG;EACH,EAAE,IAAI,WAAW,IAAI,GAAG,EAAE;EAC1B,IAAI,MAAM,IAAIA,2BAAc,CAAC,wCAAwC,CAAC,CAAC;EACvE,GAAG;EACH;AACA;EACA,EAAE,MAAM,MAAM,GAAGH,iBAAY,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;EACnD,EAAE,MAAM,cAAc,GAAGA,iBAAY,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AACtE;EACA,EAAE,IAAI,CAAC,OAAO,GAAGV,kBAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;EAC1C,EAAE,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;EACtC,EAAE,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;EACtC,EAAE,IAAI,CAAC,UAAU,GAAGY,iBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;EAC/C,EAAE,IAAI,CAAC,SAAS,GAAGF,iBAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;EACvD,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;EAClD,EAAE,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;EAClC,EAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;EAC1D,EAAE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,GAAG;EACxC,IAAIA,iBAAY,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC;EACnD,IAAI,CAAC;EACL,GAAG,CAAC;EACJ,EAAE,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;EAClD,EAAE,IAAI,CAAC,WAAW,GAAG,8BAA8B,CAAC;EACpD,CAAC;AACD;EACA;EACA;EACA;EACA;EACA,sBAAsB,CAAC,YAAY;EACnC,EAAEV,kBAAU,CAAC,YAAY,GAAGY,iBAAS,CAAC,YAAY,GAAG,CAAC,CAAC;AACvD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,sBAAsB,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE;EACrE;EACA,EAAE,IAAI,CAACL,YAAO,CAAC,KAAK,CAAC,EAAE;EACvB,IAAI,MAAM,IAAIM,2BAAc,CAAC,mBAAmB,CAAC,CAAC;EAClD,GAAG;EACH,EAAE,IAAI,CAACN,YAAO,CAAC,KAAK,CAAC,EAAE;EACvB,IAAI,MAAM,IAAIM,2BAAc,CAAC,mBAAmB,CAAC,CAAC;EAClD,GAAG;EACH;AACA;EACA,EAAE,aAAa,GAAGH,iBAAY,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;AACjD;EACA,EAAEV,kBAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;EACvD,EAAE,aAAa,IAAIA,kBAAU,CAAC,YAAY,CAAC;AAC3C;EACA,EAAEY,iBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;EACzD,EAAE,aAAa,IAAIA,iBAAS,CAAC,YAAY,CAAC;AAC1C;EACA,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC;EAChD,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC;EAChD,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;EAC3C,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;EACzC,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC;EAC9C,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC;EACjD,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,GAAG,KAAK,CAAC,sBAAsB,CAAC;EACxD,EAAE,KAAK,CAAC,aAAa,CAAC,GAAGF,iBAAY,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC;AAClE;EACA,EAAE,OAAO,KAAK,CAAC;EACf,CAAC,CAAC;AACF;EACA,MAAM,aAAa,GAAG,IAAIV,kBAAU,EAAE,CAAC;EACvC,MAAM,gBAAgB,GAAG,IAAIY,iBAAS,EAAE,CAAC;EACzC,MAAM,cAAc,GAAG;EACvB,EAAE,MAAM,EAAE,aAAa;EACvB,EAAE,SAAS,EAAE,gBAAgB;EAC7B,EAAE,aAAa,EAAE,SAAS;EAC1B,EAAE,aAAa,EAAE,SAAS;EAC1B,EAAE,QAAQ,EAAE,SAAS;EACrB,EAAE,MAAM,EAAE,SAAS;EACnB,EAAE,WAAW,EAAE,SAAS;EACxB,EAAE,cAAc,EAAE,SAAS;EAC3B,EAAE,qBAAqB,EAAE,SAAS;EAClC,EAAE,eAAe,EAAE,SAAS;EAC5B,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,sBAAsB,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE;EACxE;EACA,EAAE,IAAI,CAACL,YAAO,CAAC,KAAK,CAAC,EAAE;EACvB,IAAI,MAAM,IAAIM,2BAAc,CAAC,mBAAmB,CAAC,CAAC;EAClD,GAAG;EACH;AACA;EACA,EAAE,aAAa,GAAGH,iBAAY,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;AACjD;EACA,EAAE,MAAM,MAAM,GAAGV,kBAAU,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;EACxE,EAAE,aAAa,IAAIA,kBAAU,CAAC,YAAY,CAAC;AAC3C;EACA,EAAE,MAAM,SAAS,GAAGY,iBAAS,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;EAC7E,EAAE,aAAa,IAAIA,iBAAS,CAAC,YAAY,CAAC;AAC1C;EACA,EAAE,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;EAC/C,EAAE,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;EAC/C,EAAE,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;EAC1C,EAAE,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;EACxC,EAAE,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;EAC7C,EAAE,MAAM,cAAc,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;EAChD,EAAE,MAAM,qBAAqB,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;EACvD,EAAE,MAAM,eAAe,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;AAC/C;EACA,EAAE,IAAI,CAACL,YAAO,CAAC,MAAM,CAAC,EAAE;EACxB,IAAI,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC;EACnC,IAAI,cAAc,CAAC,cAAc,GAAG,cAAc,CAAC;EACnD,IAAI,cAAc,CAAC,WAAW,GAAG,WAAW,CAAC;EAC7C,IAAI,cAAc,CAAC,QAAQ,GAAG,QAAQ,CAAC;EACvC,IAAI,cAAc,CAAC,aAAa,GAAG,aAAa,CAAC;EACjD,IAAI,cAAc,CAAC,aAAa,GAAG,aAAa,CAAC;EACjD,IAAI,cAAc,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;EACjE,IAAI,cAAc,CAAC,eAAe;EAClC,MAAM,eAAe,KAAK,CAAC,CAAC,GAAG,SAAS,GAAG,eAAe,CAAC;AAC3D;EACA,IAAI,OAAO,IAAI,sBAAsB,CAAC,cAAc,CAAC,CAAC;EACtD,GAAG;AACH;EACA,EAAE,MAAM,CAAC,OAAO,GAAGP,kBAAU,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;EAC5D,EAAE,MAAM,CAAC,UAAU,GAAGY,iBAAS,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;EACpE,EAAE,MAAM,CAAC,cAAc,GAAG,aAAa,CAAC;EACxC,EAAE,MAAM,CAAC,cAAc,GAAG,aAAa,CAAC;EACxC,EAAE,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC;EAC9B,EAAE,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC;EAC1B,EAAE,MAAM,CAAC,YAAY,GAAG,WAAW,CAAC;EACpC,EAAE,MAAM,CAAC,eAAe,GAAG,cAAc,CAAC;EAC1C,EAAE,MAAM,CAAC,sBAAsB,GAAG,qBAAqB,CAAC;EACxD,EAAE,MAAM,CAAC,gBAAgB;EACzB,IAAI,eAAe,KAAK,CAAC,CAAC,GAAG,SAAS,GAAG,eAAe,CAAC;AACzD;EACA,EAAE,OAAO,MAAM,CAAC;EAChB,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA,sBAAsB,CAAC,cAAc,GAAG,UAAU,eAAe,EAAE;EACnE,EAAE;EACF,IAAI,eAAe,CAAC,cAAc,IAAI,GAAG;EACzC,IAAI,eAAe,CAAC,cAAc,IAAI,GAAG;EACzC,IAAI;EACJ,IAAI,OAAO;EACX,GAAG;AACH;EACA,EAAE,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC;EACzC,EAAE,MAAM,cAAc,GAAG,eAAe,CAAC,eAAe,CAAC;EACzD,EAAE,MAAM,OAAO,GAAG,CAACD,4BAAU,CAAC,aAAa;EAC3C,IAAI,MAAM;EACV,IAAI,cAAc;EAClB,IAAI,CAAC;EACL,IAAIA,4BAAU,CAAC,QAAQ;EACvB,GAAG,CAAC;AACJ;EACA,EAAE,eAAe,CAAC,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,sBAAsB;EAC7E,IAAI,eAAe,CAAC,OAAO;EAC3B,IAAI,eAAe,CAAC,OAAO;EAC3B,GAAG,CAAC;EACJ,EAAE,MAAM,OAAO,GAAG;EAClB,IAAI,MAAM,EAAE,eAAe,CAAC,OAAO;EACnC,IAAI,aAAa,EAAE,eAAe,CAAC,cAAc;EACjD,IAAI,aAAa,EAAE,eAAe,CAAC,cAAc;EACjD,IAAI,SAAS,EAAE,eAAe,CAAC,UAAU;EACzC,IAAI,QAAQ,EAAE,eAAe,CAAC,SAAS;EACvC,IAAI,MAAM,EAAE,MAAM;EAClB,IAAI,WAAW,EAAE,eAAe,CAAC,YAAY;EAC7C,IAAI,qBAAqB,EAAE,eAAe,CAAC,sBAAsB;EACjE,GAAG,CAAC;EACJ,EAAE,IAAI,QAAQ,CAAC;EACf,EAAE,IAAI,OAAO,EAAE;EACf,IAAI,OAAO,CAAC,cAAc,GAAG,cAAc,CAAC;EAC5C,IAAI,OAAO,CAAC,eAAe,GAAG,eAAe,CAAC,gBAAgB,CAAC;EAC/D,IAAI,QAAQ,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;EAC/C,GAAG,MAAM;EACT,IAAI,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;AACvC;EACA,IAAI,IAAIJ,YAAO,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE;EACnD,MAAM,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;EAChE,MAAM,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EACrD,MAAM,MAAM,WAAW;EACvB,QAAQ,eAAe,CAAC,gBAAgB,KAAKC,+CAAuB,CAAC,IAAI;EACzE,YAAY,CAAC;EACb,YAAY,CAAC,CAAC;EACd,MAAMC,iCAAS,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;EAC1C,MAAM,QAAQ,CAAC,UAAU,CAAC,WAAW,GAAG,IAAIL,mCAAiB,CAAC;EAC9D,QAAQ,iBAAiB,EAAEC,mCAAiB,CAAC,aAAa;EAC1D,QAAQ,sBAAsB,EAAE,CAAC;EACjC,QAAQ,MAAM,EAAE,WAAW;EAC3B,OAAO,CAAC,CAAC;EACT,KAAK;EACL,GAAG;AACH;EACA,EAAE,OAAO,IAAIS,0BAAQ,CAAC;EACtB,IAAI,UAAU,EAAE,QAAQ,CAAC,UAAU;EACnC,IAAI,OAAO,EAAE,QAAQ,CAAC,OAAO;EAC7B,IAAI,aAAa,EAAEC,+BAAa,CAAC,KAAK;EACtC,IAAI,cAAc,EAAE,QAAQ,CAAC,cAAc;EAC3C,IAAI,eAAe,EAAE,eAAe,CAAC,gBAAgB;EACrD,GAAG,CAAC,CAAC;EACL,CAAC;;;;;;;;"}