PolylinePipeline-25d1e129.js.map 34 KB

1
  1. {"version":3,"file":"PolylinePipeline-25d1e129.js","sources":["../../../../Source/Core/PolylinePipeline.js"],"sourcesContent":["import Cartesian3 from \"./Cartesian3.js\";\nimport Cartographic from \"./Cartographic.js\";\nimport defaultValue from \"./defaultValue.js\";\nimport defined from \"./defined.js\";\nimport DeveloperError from \"./DeveloperError.js\";\nimport Ellipsoid from \"./Ellipsoid.js\";\nimport EllipsoidGeodesic from \"./EllipsoidGeodesic.js\";\nimport EllipsoidRhumbLine from \"./EllipsoidRhumbLine.js\";\nimport IntersectionTests from \"./IntersectionTests.js\";\nimport CesiumMath from \"./Math.js\";\nimport Matrix4 from \"./Matrix4.js\";\nimport Plane from \"./Plane.js\";\n\n/**\n * @private\n */\nvar PolylinePipeline = {};\n\nPolylinePipeline.numberOfPoints = function (p0, p1, minDistance) {\n var distance = Cartesian3.distance(p0, p1);\n return Math.ceil(distance / minDistance);\n};\n\nPolylinePipeline.numberOfPointsRhumbLine = function (p0, p1, granularity) {\n var radiansDistanceSquared =\n Math.pow(p0.longitude - p1.longitude, 2) +\n Math.pow(p0.latitude - p1.latitude, 2);\n\n return Math.max(\n 1,\n Math.ceil(Math.sqrt(radiansDistanceSquared / (granularity * granularity)))\n );\n};\n\nvar cartoScratch = new Cartographic();\nPolylinePipeline.extractHeights = function (positions, ellipsoid) {\n var length = positions.length;\n var heights = new Array(length);\n for (var i = 0; i < length; i++) {\n var p = positions[i];\n heights[i] = ellipsoid.cartesianToCartographic(p, cartoScratch).height;\n }\n return heights;\n};\n\nvar wrapLongitudeInversMatrix = new Matrix4();\nvar wrapLongitudeOrigin = new Cartesian3();\nvar wrapLongitudeXZNormal = new Cartesian3();\nvar wrapLongitudeXZPlane = new Plane(Cartesian3.UNIT_X, 0.0);\nvar wrapLongitudeYZNormal = new Cartesian3();\nvar wrapLongitudeYZPlane = new Plane(Cartesian3.UNIT_X, 0.0);\nvar wrapLongitudeIntersection = new Cartesian3();\nvar wrapLongitudeOffset = new Cartesian3();\n\nvar subdivideHeightsScratchArray = [];\n\nfunction subdivideHeights(numPoints, h0, h1) {\n var heights = subdivideHeightsScratchArray;\n heights.length = numPoints;\n\n var i;\n if (h0 === h1) {\n for (i = 0; i < numPoints; i++) {\n heights[i] = h0;\n }\n return heights;\n }\n\n var dHeight = h1 - h0;\n var heightPerVertex = dHeight / numPoints;\n\n for (i = 0; i < numPoints; i++) {\n var h = h0 + i * heightPerVertex;\n heights[i] = h;\n }\n\n return heights;\n}\n\nvar carto1 = new Cartographic();\nvar carto2 = new Cartographic();\nvar cartesian = new Cartesian3();\nvar scaleFirst = new Cartesian3();\nvar scaleLast = new Cartesian3();\nvar ellipsoidGeodesic = new EllipsoidGeodesic();\nvar ellipsoidRhumb = new EllipsoidRhumbLine();\n\n//Returns subdivided line scaled to ellipsoid surface starting at p1 and ending at p2.\n//Result includes p1, but not include p2. This function is called for a sequence of line segments,\n//and this prevents duplication of end point.\nfunction generateCartesianArc(\n p0,\n p1,\n minDistance,\n ellipsoid,\n h0,\n h1,\n array,\n offset\n) {\n var first = ellipsoid.scaleToGeodeticSurface(p0, scaleFirst);\n var last = ellipsoid.scaleToGeodeticSurface(p1, scaleLast);\n var numPoints = PolylinePipeline.numberOfPoints(p0, p1, minDistance);\n var start = ellipsoid.cartesianToCartographic(first, carto1);\n var end = ellipsoid.cartesianToCartographic(last, carto2);\n var heights = subdivideHeights(numPoints, h0, h1);\n\n ellipsoidGeodesic.setEndPoints(start, end);\n var surfaceDistanceBetweenPoints =\n ellipsoidGeodesic.surfaceDistance / numPoints;\n\n var index = offset;\n start.height = h0;\n var cart = ellipsoid.cartographicToCartesian(start, cartesian);\n Cartesian3.pack(cart, array, index);\n index += 3;\n\n for (var i = 1; i < numPoints; i++) {\n var carto = ellipsoidGeodesic.interpolateUsingSurfaceDistance(\n i * surfaceDistanceBetweenPoints,\n carto2\n );\n carto.height = heights[i];\n cart = ellipsoid.cartographicToCartesian(carto, cartesian);\n Cartesian3.pack(cart, array, index);\n index += 3;\n }\n\n return index;\n}\n\n//Returns subdivided line scaled to ellipsoid surface starting at p1 and ending at p2.\n//Result includes p1, but not include p2. This function is called for a sequence of line segments,\n//and this prevents duplication of end point.\nfunction generateCartesianRhumbArc(\n p0,\n p1,\n granularity,\n ellipsoid,\n h0,\n h1,\n array,\n offset\n) {\n var start = ellipsoid.cartesianToCartographic(p0, carto1);\n var end = ellipsoid.cartesianToCartographic(p1, carto2);\n var numPoints = PolylinePipeline.numberOfPointsRhumbLine(\n start,\n end,\n granularity\n );\n start.height = 0.0;\n end.height = 0.0;\n var heights = subdivideHeights(numPoints, h0, h1);\n\n if (!ellipsoidRhumb.ellipsoid.equals(ellipsoid)) {\n ellipsoidRhumb = new EllipsoidRhumbLine(undefined, undefined, ellipsoid);\n }\n ellipsoidRhumb.setEndPoints(start, end);\n var surfaceDistanceBetweenPoints = ellipsoidRhumb.surfaceDistance / numPoints;\n\n var index = offset;\n start.height = h0;\n var cart = ellipsoid.cartographicToCartesian(start, cartesian);\n Cartesian3.pack(cart, array, index);\n index += 3;\n\n for (var i = 1; i < numPoints; i++) {\n var carto = ellipsoidRhumb.interpolateUsingSurfaceDistance(\n i * surfaceDistanceBetweenPoints,\n carto2\n );\n carto.height = heights[i];\n cart = ellipsoid.cartographicToCartesian(carto, cartesian);\n Cartesian3.pack(cart, array, index);\n index += 3;\n }\n\n return index;\n}\n\n/**\n * Breaks a {@link Polyline} into segments such that it does not cross the &plusmn;180 degree meridian of an ellipsoid.\n *\n * @param {Cartesian3[]} positions The polyline's Cartesian positions.\n * @param {Matrix4} [modelMatrix=Matrix4.IDENTITY] The polyline's model matrix. Assumed to be an affine\n * transformation matrix, where the upper left 3x3 elements are a rotation matrix, and\n * the upper three elements in the fourth column are the translation. The bottom row is assumed to be [0, 0, 0, 1].\n * The matrix is not verified to be in the proper form.\n * @returns {Object} An object with a <code>positions</code> property that is an array of positions and a\n * <code>segments</code> property.\n *\n *\n * @example\n * var polylines = new Cesium.PolylineCollection();\n * var polyline = polylines.add(...);\n * var positions = polyline.positions;\n * var modelMatrix = polylines.modelMatrix;\n * var segments = Cesium.PolylinePipeline.wrapLongitude(positions, modelMatrix);\n *\n * @see PolygonPipeline.wrapLongitude\n * @see Polyline\n * @see PolylineCollection\n */\nPolylinePipeline.wrapLongitude = function (positions, modelMatrix) {\n var cartesians = [];\n var segments = [];\n\n if (defined(positions) && positions.length > 0) {\n modelMatrix = defaultValue(modelMatrix, Matrix4.IDENTITY);\n var inverseModelMatrix = Matrix4.inverseTransformation(\n modelMatrix,\n wrapLongitudeInversMatrix\n );\n\n var origin = Matrix4.multiplyByPoint(\n inverseModelMatrix,\n Cartesian3.ZERO,\n wrapLongitudeOrigin\n );\n var xzNormal = Cartesian3.normalize(\n Matrix4.multiplyByPointAsVector(\n inverseModelMatrix,\n Cartesian3.UNIT_Y,\n wrapLongitudeXZNormal\n ),\n wrapLongitudeXZNormal\n );\n var xzPlane = Plane.fromPointNormal(origin, xzNormal, wrapLongitudeXZPlane);\n var yzNormal = Cartesian3.normalize(\n Matrix4.multiplyByPointAsVector(\n inverseModelMatrix,\n Cartesian3.UNIT_X,\n wrapLongitudeYZNormal\n ),\n wrapLongitudeYZNormal\n );\n var yzPlane = Plane.fromPointNormal(origin, yzNormal, wrapLongitudeYZPlane);\n\n var count = 1;\n cartesians.push(Cartesian3.clone(positions[0]));\n var prev = cartesians[0];\n\n var length = positions.length;\n for (var i = 1; i < length; ++i) {\n var cur = positions[i];\n\n // intersects the IDL if either endpoint is on the negative side of the yz-plane\n if (\n Plane.getPointDistance(yzPlane, prev) < 0.0 ||\n Plane.getPointDistance(yzPlane, cur) < 0.0\n ) {\n // and intersects the xz-plane\n var intersection = IntersectionTests.lineSegmentPlane(\n prev,\n cur,\n xzPlane,\n wrapLongitudeIntersection\n );\n if (defined(intersection)) {\n // move point on the xz-plane slightly away from the plane\n var offset = Cartesian3.multiplyByScalar(\n xzNormal,\n 5.0e-9,\n wrapLongitudeOffset\n );\n if (Plane.getPointDistance(xzPlane, prev) < 0.0) {\n Cartesian3.negate(offset, offset);\n }\n\n cartesians.push(\n Cartesian3.add(intersection, offset, new Cartesian3())\n );\n segments.push(count + 1);\n\n Cartesian3.negate(offset, offset);\n cartesians.push(\n Cartesian3.add(intersection, offset, new Cartesian3())\n );\n count = 1;\n }\n }\n\n cartesians.push(Cartesian3.clone(positions[i]));\n count++;\n\n prev = cur;\n }\n\n segments.push(count);\n }\n\n return {\n positions: cartesians,\n lengths: segments,\n };\n};\n\n/**\n * Subdivides polyline and raises all points to the specified height. Returns an array of numbers to represent the positions.\n * @param {Object} options Object with the following properties:\n * @param {Cartesian3[]} options.positions The array of type {Cartesian3} representing positions.\n * @param {Number|Number[]} [options.height=0.0] A number or array of numbers representing the heights of each position.\n * @param {Number} [options.granularity = CesiumMath.RADIANS_PER_DEGREE] The distance, in radians, between each latitude and longitude. Determines the number of positions in the buffer.\n * @param {Ellipsoid} [options.ellipsoid=Ellipsoid.WGS84] The ellipsoid on which the positions lie.\n * @returns {Number[]} A new array of positions of type {Number} that have been subdivided and raised to the surface of the ellipsoid.\n *\n * @example\n * var positions = Cesium.Cartesian3.fromDegreesArray([\n * -105.0, 40.0,\n * -100.0, 38.0,\n * -105.0, 35.0,\n * -100.0, 32.0\n * ]);\n * var surfacePositions = Cesium.PolylinePipeline.generateArc({\n * positons: positions\n * });\n */\nPolylinePipeline.generateArc = function (options) {\n if (!defined(options)) {\n options = {};\n }\n var positions = options.positions;\n //>>includeStart('debug', pragmas.debug);\n if (!defined(positions)) {\n throw new DeveloperError(\"options.positions is required.\");\n }\n //>>includeEnd('debug');\n\n var length = positions.length;\n var ellipsoid = defaultValue(options.ellipsoid, Ellipsoid.WGS84);\n var height = defaultValue(options.height, 0);\n var hasHeightArray = Array.isArray(height);\n\n if (length < 1) {\n return [];\n } else if (length === 1) {\n var p = ellipsoid.scaleToGeodeticSurface(positions[0], scaleFirst);\n height = hasHeightArray ? height[0] : height;\n if (height !== 0) {\n var n = ellipsoid.geodeticSurfaceNormal(p, cartesian);\n Cartesian3.multiplyByScalar(n, height, n);\n Cartesian3.add(p, n, p);\n }\n\n return [p.x, p.y, p.z];\n }\n\n var minDistance = options.minDistance;\n if (!defined(minDistance)) {\n var granularity = defaultValue(\n options.granularity,\n CesiumMath.RADIANS_PER_DEGREE\n );\n minDistance = CesiumMath.chordLength(granularity, ellipsoid.maximumRadius);\n }\n\n var numPoints = 0;\n var i;\n\n for (i = 0; i < length - 1; i++) {\n numPoints += PolylinePipeline.numberOfPoints(\n positions[i],\n positions[i + 1],\n minDistance\n );\n }\n\n var arrayLength = (numPoints + 1) * 3;\n var newPositions = new Array(arrayLength);\n var offset = 0;\n\n for (i = 0; i < length - 1; i++) {\n var p0 = positions[i];\n var p1 = positions[i + 1];\n\n var h0 = hasHeightArray ? height[i] : height;\n var h1 = hasHeightArray ? height[i + 1] : height;\n\n offset = generateCartesianArc(\n p0,\n p1,\n minDistance,\n ellipsoid,\n h0,\n h1,\n newPositions,\n offset\n );\n }\n\n subdivideHeightsScratchArray.length = 0;\n\n var lastPoint = positions[length - 1];\n var carto = ellipsoid.cartesianToCartographic(lastPoint, carto1);\n carto.height = hasHeightArray ? height[length - 1] : height;\n var cart = ellipsoid.cartographicToCartesian(carto, cartesian);\n Cartesian3.pack(cart, newPositions, arrayLength - 3);\n\n return newPositions;\n};\n\nvar scratchCartographic0 = new Cartographic();\nvar scratchCartographic1 = new Cartographic();\n\n/**\n * Subdivides polyline and raises all points to the specified height using Rhumb lines. Returns an array of numbers to represent the positions.\n * @param {Object} options Object with the following properties:\n * @param {Cartesian3[]} options.positions The array of type {Cartesian3} representing positions.\n * @param {Number|Number[]} [options.height=0.0] A number or array of numbers representing the heights of each position.\n * @param {Number} [options.granularity = CesiumMath.RADIANS_PER_DEGREE] The distance, in radians, between each latitude and longitude. Determines the number of positions in the buffer.\n * @param {Ellipsoid} [options.ellipsoid=Ellipsoid.WGS84] The ellipsoid on which the positions lie.\n * @returns {Number[]} A new array of positions of type {Number} that have been subdivided and raised to the surface of the ellipsoid.\n *\n * @example\n * var positions = Cesium.Cartesian3.fromDegreesArray([\n * -105.0, 40.0,\n * -100.0, 38.0,\n * -105.0, 35.0,\n * -100.0, 32.0\n * ]);\n * var surfacePositions = Cesium.PolylinePipeline.generateRhumbArc({\n * positons: positions\n * });\n */\nPolylinePipeline.generateRhumbArc = function (options) {\n if (!defined(options)) {\n options = {};\n }\n var positions = options.positions;\n //>>includeStart('debug', pragmas.debug);\n if (!defined(positions)) {\n throw new DeveloperError(\"options.positions is required.\");\n }\n //>>includeEnd('debug');\n\n var length = positions.length;\n var ellipsoid = defaultValue(options.ellipsoid, Ellipsoid.WGS84);\n var height = defaultValue(options.height, 0);\n var hasHeightArray = Array.isArray(height);\n\n if (length < 1) {\n return [];\n } else if (length === 1) {\n var p = ellipsoid.scaleToGeodeticSurface(positions[0], scaleFirst);\n height = hasHeightArray ? height[0] : height;\n if (height !== 0) {\n var n = ellipsoid.geodeticSurfaceNormal(p, cartesian);\n Cartesian3.multiplyByScalar(n, height, n);\n Cartesian3.add(p, n, p);\n }\n\n return [p.x, p.y, p.z];\n }\n\n var granularity = defaultValue(\n options.granularity,\n CesiumMath.RADIANS_PER_DEGREE\n );\n\n var numPoints = 0;\n var i;\n\n var c0 = ellipsoid.cartesianToCartographic(\n positions[0],\n scratchCartographic0\n );\n var c1;\n for (i = 0; i < length - 1; i++) {\n c1 = ellipsoid.cartesianToCartographic(\n positions[i + 1],\n scratchCartographic1\n );\n numPoints += PolylinePipeline.numberOfPointsRhumbLine(c0, c1, granularity);\n c0 = Cartographic.clone(c1, scratchCartographic0);\n }\n\n var arrayLength = (numPoints + 1) * 3;\n var newPositions = new Array(arrayLength);\n var offset = 0;\n\n for (i = 0; i < length - 1; i++) {\n var p0 = positions[i];\n var p1 = positions[i + 1];\n\n var h0 = hasHeightArray ? height[i] : height;\n var h1 = hasHeightArray ? height[i + 1] : height;\n\n offset = generateCartesianRhumbArc(\n p0,\n p1,\n granularity,\n ellipsoid,\n h0,\n h1,\n newPositions,\n offset\n );\n }\n\n subdivideHeightsScratchArray.length = 0;\n\n var lastPoint = positions[length - 1];\n var carto = ellipsoid.cartesianToCartographic(lastPoint, carto1);\n carto.height = hasHeightArray ? height[length - 1] : height;\n var cart = ellipsoid.cartographicToCartesian(carto, cartesian);\n Cartesian3.pack(cart, newPositions, arrayLength - 3);\n\n return newPositions;\n};\n\n/**\n * Subdivides polyline and raises all points to the specified height. Returns an array of new {Cartesian3} positions.\n * @param {Object} options Object with the following properties:\n * @param {Cartesian3[]} options.positions The array of type {Cartesian3} representing positions.\n * @param {Number|Number[]} [options.height=0.0] A number or array of numbers representing the heights of each position.\n * @param {Number} [options.granularity = CesiumMath.RADIANS_PER_DEGREE] The distance, in radians, between each latitude and longitude. Determines the number of positions in the buffer.\n * @param {Ellipsoid} [options.ellipsoid=Ellipsoid.WGS84] The ellipsoid on which the positions lie.\n * @returns {Cartesian3[]} A new array of cartesian3 positions that have been subdivided and raised to the surface of the ellipsoid.\n *\n * @example\n * var positions = Cesium.Cartesian3.fromDegreesArray([\n * -105.0, 40.0,\n * -100.0, 38.0,\n * -105.0, 35.0,\n * -100.0, 32.0\n * ]);\n * var surfacePositions = Cesium.PolylinePipeline.generateCartesianArc({\n * positons: positions\n * });\n */\nPolylinePipeline.generateCartesianArc = function (options) {\n var numberArray = PolylinePipeline.generateArc(options);\n var size = numberArray.length / 3;\n var newPositions = new Array(size);\n for (var i = 0; i < size; i++) {\n newPositions[i] = Cartesian3.unpack(numberArray, i * 3);\n }\n return newPositions;\n};\n\n/**\n * Subdivides polyline and raises all points to the specified height using Rhumb Lines. Returns an array of new {Cartesian3} positions.\n * @param {Object} options Object with the following properties:\n * @param {Cartesian3[]} options.positions The array of type {Cartesian3} representing positions.\n * @param {Number|Number[]} [options.height=0.0] A number or array of numbers representing the heights of each position.\n * @param {Number} [options.granularity = CesiumMath.RADIANS_PER_DEGREE] The distance, in radians, between each latitude and longitude. Determines the number of positions in the buffer.\n * @param {Ellipsoid} [options.ellipsoid=Ellipsoid.WGS84] The ellipsoid on which the positions lie.\n * @returns {Cartesian3[]} A new array of cartesian3 positions that have been subdivided and raised to the surface of the ellipsoid.\n *\n * @example\n * var positions = Cesium.Cartesian3.fromDegreesArray([\n * -105.0, 40.0,\n * -100.0, 38.0,\n * -105.0, 35.0,\n * -100.0, 32.0\n * ]);\n * var surfacePositions = Cesium.PolylinePipeline.generateCartesianRhumbArc({\n * positons: positions\n * });\n */\nPolylinePipeline.generateCartesianRhumbArc = function (options) {\n var numberArray = PolylinePipeline.generateRhumbArc(options);\n var size = numberArray.length / 3;\n var newPositions = new Array(size);\n for (var i = 0; i < size; i++) {\n newPositions[i] = Cartesian3.unpack(numberArray, i * 3);\n }\n return newPositions;\n};\nexport default PolylinePipeline;\n"],"names":["Cartesian3","Cartographic","Matrix4","Plane","EllipsoidGeodesic","EllipsoidRhumbLine","defined","defaultValue","IntersectionTests","DeveloperError","Ellipsoid","CesiumMath"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;EAaA;EACA;EACA;AACG,MAAC,gBAAgB,GAAG,GAAG;AAC1B;EACA,gBAAgB,CAAC,cAAc,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE;EACjE,EAAE,IAAI,QAAQ,GAAGA,qBAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC7C,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,CAAC;EAC3C,CAAC,CAAC;AACF;EACA,gBAAgB,CAAC,uBAAuB,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE;EAC1E,EAAE,IAAI,sBAAsB;EAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;EAC5C,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC3C;EACA,EAAE,OAAO,IAAI,CAAC,GAAG;EACjB,IAAI,CAAC;EACL,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,IAAI,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC;EAC9E,GAAG,CAAC;EACJ,CAAC,CAAC;AACF;EACA,IAAI,YAAY,GAAG,IAAIC,uBAAY,EAAE,CAAC;EACtC,gBAAgB,CAAC,cAAc,GAAG,UAAU,SAAS,EAAE,SAAS,EAAE;EAClE,EAAE,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;EAChC,EAAE,IAAI,OAAO,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;EAClC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;EACnC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;EACzB,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,uBAAuB,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC;EAC3E,GAAG;EACH,EAAE,OAAO,OAAO,CAAC;EACjB,CAAC,CAAC;AACF;EACA,IAAI,yBAAyB,GAAG,IAAIC,kBAAO,EAAE,CAAC;EAC9C,IAAI,mBAAmB,GAAG,IAAIF,qBAAU,EAAE,CAAC;EAC3C,IAAI,qBAAqB,GAAG,IAAIA,qBAAU,EAAE,CAAC;EAC7C,IAAI,oBAAoB,GAAG,IAAIG,WAAK,CAACH,qBAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;EAC7D,IAAI,qBAAqB,GAAG,IAAIA,qBAAU,EAAE,CAAC;EAC7C,IAAI,oBAAoB,GAAG,IAAIG,WAAK,CAACH,qBAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;EAC7D,IAAI,yBAAyB,GAAG,IAAIA,qBAAU,EAAE,CAAC;EACjD,IAAI,mBAAmB,GAAG,IAAIA,qBAAU,EAAE,CAAC;AAC3C;EACA,IAAI,4BAA4B,GAAG,EAAE,CAAC;AACtC;EACA,SAAS,gBAAgB,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE;EAC7C,EAAE,IAAI,OAAO,GAAG,4BAA4B,CAAC;EAC7C,EAAE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;AAC7B;EACA,EAAE,IAAI,CAAC,CAAC;EACR,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;EACjB,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;EACpC,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACtB,KAAK;EACL,IAAI,OAAO,OAAO,CAAC;EACnB,GAAG;AACH;EACA,EAAE,IAAI,OAAO,GAAG,EAAE,GAAG,EAAE,CAAC;EACxB,EAAE,IAAI,eAAe,GAAG,OAAO,GAAG,SAAS,CAAC;AAC5C;EACA,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;EAClC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,eAAe,CAAC;EACrC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACnB,GAAG;AACH;EACA,EAAE,OAAO,OAAO,CAAC;EACjB,CAAC;AACD;EACA,IAAI,MAAM,GAAG,IAAIC,uBAAY,EAAE,CAAC;EAChC,IAAI,MAAM,GAAG,IAAIA,uBAAY,EAAE,CAAC;EAChC,IAAI,SAAS,GAAG,IAAID,qBAAU,EAAE,CAAC;EACjC,IAAI,UAAU,GAAG,IAAIA,qBAAU,EAAE,CAAC;EAClC,IAAI,SAAS,GAAG,IAAIA,qBAAU,EAAE,CAAC;EACjC,IAAI,iBAAiB,GAAG,IAAII,mCAAiB,EAAE,CAAC;EAChD,IAAI,cAAc,GAAG,IAAIC,qCAAkB,EAAE,CAAC;AAC9C;EACA;EACA;EACA;EACA,SAAS,oBAAoB;EAC7B,EAAE,EAAE;EACJ,EAAE,EAAE;EACJ,EAAE,WAAW;EACb,EAAE,SAAS;EACX,EAAE,EAAE;EACJ,EAAE,EAAE;EACJ,EAAE,KAAK;EACP,EAAE,MAAM;EACR,EAAE;EACF,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,sBAAsB,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;EAC/D,EAAE,IAAI,IAAI,GAAG,SAAS,CAAC,sBAAsB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;EAC7D,EAAE,IAAI,SAAS,GAAG,gBAAgB,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;EACvE,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;EAC/D,EAAE,IAAI,GAAG,GAAG,SAAS,CAAC,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;EAC5D,EAAE,IAAI,OAAO,GAAG,gBAAgB,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACpD;EACA,EAAE,iBAAiB,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;EAC7C,EAAE,IAAI,4BAA4B;EAClC,IAAI,iBAAiB,CAAC,eAAe,GAAG,SAAS,CAAC;AAClD;EACA,EAAE,IAAI,KAAK,GAAG,MAAM,CAAC;EACrB,EAAE,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;EACpB,EAAE,IAAI,IAAI,GAAG,SAAS,CAAC,uBAAuB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;EACjE,EAAEL,qBAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;EACtC,EAAE,KAAK,IAAI,CAAC,CAAC;AACb;EACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;EACtC,IAAI,IAAI,KAAK,GAAG,iBAAiB,CAAC,+BAA+B;EACjE,MAAM,CAAC,GAAG,4BAA4B;EACtC,MAAM,MAAM;EACZ,KAAK,CAAC;EACN,IAAI,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;EAC9B,IAAI,IAAI,GAAG,SAAS,CAAC,uBAAuB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;EAC/D,IAAIA,qBAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;EACxC,IAAI,KAAK,IAAI,CAAC,CAAC;EACf,GAAG;AACH;EACA,EAAE,OAAO,KAAK,CAAC;EACf,CAAC;AACD;EACA;EACA;EACA;EACA,SAAS,yBAAyB;EAClC,EAAE,EAAE;EACJ,EAAE,EAAE;EACJ,EAAE,WAAW;EACb,EAAE,SAAS;EACX,EAAE,EAAE;EACJ,EAAE,EAAE;EACJ,EAAE,KAAK;EACP,EAAE,MAAM;EACR,EAAE;EACF,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,uBAAuB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;EAC5D,EAAE,IAAI,GAAG,GAAG,SAAS,CAAC,uBAAuB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;EAC1D,EAAE,IAAI,SAAS,GAAG,gBAAgB,CAAC,uBAAuB;EAC1D,IAAI,KAAK;EACT,IAAI,GAAG;EACP,IAAI,WAAW;EACf,GAAG,CAAC;EACJ,EAAE,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;EACrB,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;EACnB,EAAE,IAAI,OAAO,GAAG,gBAAgB,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACpD;EACA,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;EACnD,IAAI,cAAc,GAAG,IAAIK,qCAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;EAC7E,GAAG;EACH,EAAE,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;EAC1C,EAAE,IAAI,4BAA4B,GAAG,cAAc,CAAC,eAAe,GAAG,SAAS,CAAC;AAChF;EACA,EAAE,IAAI,KAAK,GAAG,MAAM,CAAC;EACrB,EAAE,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;EACpB,EAAE,IAAI,IAAI,GAAG,SAAS,CAAC,uBAAuB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;EACjE,EAAEL,qBAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;EACtC,EAAE,KAAK,IAAI,CAAC,CAAC;AACb;EACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;EACtC,IAAI,IAAI,KAAK,GAAG,cAAc,CAAC,+BAA+B;EAC9D,MAAM,CAAC,GAAG,4BAA4B;EACtC,MAAM,MAAM;EACZ,KAAK,CAAC;EACN,IAAI,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;EAC9B,IAAI,IAAI,GAAG,SAAS,CAAC,uBAAuB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;EAC/D,IAAIA,qBAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;EACxC,IAAI,KAAK,IAAI,CAAC,CAAC;EACf,GAAG;AACH;EACA,EAAE,OAAO,KAAK,CAAC;EACf,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,gBAAgB,CAAC,aAAa,GAAG,UAAU,SAAS,EAAE,WAAW,EAAE;EACnE,EAAE,IAAI,UAAU,GAAG,EAAE,CAAC;EACtB,EAAE,IAAI,QAAQ,GAAG,EAAE,CAAC;AACpB;EACA,EAAE,IAAIM,YAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;EAClD,IAAI,WAAW,GAAGC,iBAAY,CAAC,WAAW,EAAEL,kBAAO,CAAC,QAAQ,CAAC,CAAC;EAC9D,IAAI,IAAI,kBAAkB,GAAGA,kBAAO,CAAC,qBAAqB;EAC1D,MAAM,WAAW;EACjB,MAAM,yBAAyB;EAC/B,KAAK,CAAC;AACN;EACA,IAAI,IAAI,MAAM,GAAGA,kBAAO,CAAC,eAAe;EACxC,MAAM,kBAAkB;EACxB,MAAMF,qBAAU,CAAC,IAAI;EACrB,MAAM,mBAAmB;EACzB,KAAK,CAAC;EACN,IAAI,IAAI,QAAQ,GAAGA,qBAAU,CAAC,SAAS;EACvC,MAAME,kBAAO,CAAC,uBAAuB;EACrC,QAAQ,kBAAkB;EAC1B,QAAQF,qBAAU,CAAC,MAAM;EACzB,QAAQ,qBAAqB;EAC7B,OAAO;EACP,MAAM,qBAAqB;EAC3B,KAAK,CAAC;EACN,IAAI,IAAI,OAAO,GAAGG,WAAK,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;EAChF,IAAI,IAAI,QAAQ,GAAGH,qBAAU,CAAC,SAAS;EACvC,MAAME,kBAAO,CAAC,uBAAuB;EACrC,QAAQ,kBAAkB;EAC1B,QAAQF,qBAAU,CAAC,MAAM;EACzB,QAAQ,qBAAqB;EAC7B,OAAO;EACP,MAAM,qBAAqB;EAC3B,KAAK,CAAC;EACN,IAAI,IAAI,OAAO,GAAGG,WAAK,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;AAChF;EACA,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,IAAI,UAAU,CAAC,IAAI,CAACH,qBAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACpD,IAAI,IAAI,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAC7B;EACA,IAAI,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;EAClC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;EACrC,MAAM,IAAI,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7B;EACA;EACA,MAAM;EACN,QAAQG,WAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,GAAG;EACnD,QAAQA,WAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,GAAG;EAClD,QAAQ;EACR;EACA,QAAQ,IAAI,YAAY,GAAGK,mCAAiB,CAAC,gBAAgB;EAC7D,UAAU,IAAI;EACd,UAAU,GAAG;EACb,UAAU,OAAO;EACjB,UAAU,yBAAyB;EACnC,SAAS,CAAC;EACV,QAAQ,IAAIF,YAAO,CAAC,YAAY,CAAC,EAAE;EACnC;EACA,UAAU,IAAI,MAAM,GAAGN,qBAAU,CAAC,gBAAgB;EAClD,YAAY,QAAQ;EACpB,YAAY,MAAM;EAClB,YAAY,mBAAmB;EAC/B,WAAW,CAAC;EACZ,UAAU,IAAIG,WAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE;EAC3D,YAAYH,qBAAU,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;EAC9C,WAAW;AACX;EACA,UAAU,UAAU,CAAC,IAAI;EACzB,YAAYA,qBAAU,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,IAAIA,qBAAU,EAAE,CAAC;EAClE,WAAW,CAAC;EACZ,UAAU,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACnC;EACA,UAAUA,qBAAU,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;EAC5C,UAAU,UAAU,CAAC,IAAI;EACzB,YAAYA,qBAAU,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,IAAIA,qBAAU,EAAE,CAAC;EAClE,WAAW,CAAC;EACZ,UAAU,KAAK,GAAG,CAAC,CAAC;EACpB,SAAS;EACT,OAAO;AACP;EACA,MAAM,UAAU,CAAC,IAAI,CAACA,qBAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACtD,MAAM,KAAK,EAAE,CAAC;AACd;EACA,MAAM,IAAI,GAAG,GAAG,CAAC;EACjB,KAAK;AACL;EACA,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACzB,GAAG;AACH;EACA,EAAE,OAAO;EACT,IAAI,SAAS,EAAE,UAAU;EACzB,IAAI,OAAO,EAAE,QAAQ;EACrB,GAAG,CAAC;EACJ,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,gBAAgB,CAAC,WAAW,GAAG,UAAU,OAAO,EAAE;EAClD,EAAE,IAAI,CAACM,YAAO,CAAC,OAAO,CAAC,EAAE;EACzB,IAAI,OAAO,GAAG,EAAE,CAAC;EACjB,GAAG;EACH,EAAE,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;EACpC;EACA,EAAE,IAAI,CAACA,YAAO,CAAC,SAAS,CAAC,EAAE;EAC3B,IAAI,MAAM,IAAIG,oBAAc,CAAC,gCAAgC,CAAC,CAAC;EAC/D,GAAG;EACH;AACA;EACA,EAAE,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;EAChC,EAAE,IAAI,SAAS,GAAGF,iBAAY,CAAC,OAAO,CAAC,SAAS,EAAEG,oBAAS,CAAC,KAAK,CAAC,CAAC;EACnE,EAAE,IAAI,MAAM,GAAGH,iBAAY,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;EAC/C,EAAE,IAAI,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7C;EACA,EAAE,IAAI,MAAM,GAAG,CAAC,EAAE;EAClB,IAAI,OAAO,EAAE,CAAC;EACd,GAAG,MAAM,IAAI,MAAM,KAAK,CAAC,EAAE;EAC3B,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;EACvE,IAAI,MAAM,GAAG,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;EACjD,IAAI,IAAI,MAAM,KAAK,CAAC,EAAE;EACtB,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC,qBAAqB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;EAC5D,MAAMP,qBAAU,CAAC,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;EAChD,MAAMA,qBAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAC9B,KAAK;AACL;EACA,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;EAC3B,GAAG;AACH;EACA,EAAE,IAAI,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;EACxC,EAAE,IAAI,CAACM,YAAO,CAAC,WAAW,CAAC,EAAE;EAC7B,IAAI,IAAI,WAAW,GAAGC,iBAAY;EAClC,MAAM,OAAO,CAAC,WAAW;EACzB,MAAMI,gBAAU,CAAC,kBAAkB;EACnC,KAAK,CAAC;EACN,IAAI,WAAW,GAAGA,gBAAU,CAAC,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;EAC/E,GAAG;AACH;EACA,EAAE,IAAI,SAAS,GAAG,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,CAAC;AACR;EACA,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EACnC,IAAI,SAAS,IAAI,gBAAgB,CAAC,cAAc;EAChD,MAAM,SAAS,CAAC,CAAC,CAAC;EAClB,MAAM,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC;EACtB,MAAM,WAAW;EACjB,KAAK,CAAC;EACN,GAAG;AACH;EACA,EAAE,IAAI,WAAW,GAAG,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,EAAE,IAAI,YAAY,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;EAC5C,EAAE,IAAI,MAAM,GAAG,CAAC,CAAC;AACjB;EACA,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EACnC,IAAI,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;EAC1B,IAAI,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9B;EACA,IAAI,IAAI,EAAE,GAAG,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;EACjD,IAAI,IAAI,EAAE,GAAG,cAAc,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;AACrD;EACA,IAAI,MAAM,GAAG,oBAAoB;EACjC,MAAM,EAAE;EACR,MAAM,EAAE;EACR,MAAM,WAAW;EACjB,MAAM,SAAS;EACf,MAAM,EAAE;EACR,MAAM,EAAE;EACR,MAAM,YAAY;EAClB,MAAM,MAAM;EACZ,KAAK,CAAC;EACN,GAAG;AACH;EACA,EAAE,4BAA4B,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1C;EACA,EAAE,IAAI,SAAS,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EACxC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,uBAAuB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;EACnE,EAAE,KAAK,CAAC,MAAM,GAAG,cAAc,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;EAC9D,EAAE,IAAI,IAAI,GAAG,SAAS,CAAC,uBAAuB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;EACjE,EAAEX,qBAAU,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;AACvD;EACA,EAAE,OAAO,YAAY,CAAC;EACtB,CAAC,CAAC;AACF;EACA,IAAI,oBAAoB,GAAG,IAAIC,uBAAY,EAAE,CAAC;EAC9C,IAAI,oBAAoB,GAAG,IAAIA,uBAAY,EAAE,CAAC;AAC9C;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,gBAAgB,CAAC,gBAAgB,GAAG,UAAU,OAAO,EAAE;EACvD,EAAE,IAAI,CAACK,YAAO,CAAC,OAAO,CAAC,EAAE;EACzB,IAAI,OAAO,GAAG,EAAE,CAAC;EACjB,GAAG;EACH,EAAE,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;EACpC;EACA,EAAE,IAAI,CAACA,YAAO,CAAC,SAAS,CAAC,EAAE;EAC3B,IAAI,MAAM,IAAIG,oBAAc,CAAC,gCAAgC,CAAC,CAAC;EAC/D,GAAG;EACH;AACA;EACA,EAAE,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;EAChC,EAAE,IAAI,SAAS,GAAGF,iBAAY,CAAC,OAAO,CAAC,SAAS,EAAEG,oBAAS,CAAC,KAAK,CAAC,CAAC;EACnE,EAAE,IAAI,MAAM,GAAGH,iBAAY,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;EAC/C,EAAE,IAAI,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7C;EACA,EAAE,IAAI,MAAM,GAAG,CAAC,EAAE;EAClB,IAAI,OAAO,EAAE,CAAC;EACd,GAAG,MAAM,IAAI,MAAM,KAAK,CAAC,EAAE;EAC3B,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;EACvE,IAAI,MAAM,GAAG,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;EACjD,IAAI,IAAI,MAAM,KAAK,CAAC,EAAE;EACtB,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC,qBAAqB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;EAC5D,MAAMP,qBAAU,CAAC,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;EAChD,MAAMA,qBAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAC9B,KAAK;AACL;EACA,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;EAC3B,GAAG;AACH;EACA,EAAE,IAAI,WAAW,GAAGO,iBAAY;EAChC,IAAI,OAAO,CAAC,WAAW;EACvB,IAAII,gBAAU,CAAC,kBAAkB;EACjC,GAAG,CAAC;AACJ;EACA,EAAE,IAAI,SAAS,GAAG,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,CAAC;AACR;EACA,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,uBAAuB;EAC5C,IAAI,SAAS,CAAC,CAAC,CAAC;EAChB,IAAI,oBAAoB;EACxB,GAAG,CAAC;EACJ,EAAE,IAAI,EAAE,CAAC;EACT,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EACnC,IAAI,EAAE,GAAG,SAAS,CAAC,uBAAuB;EAC1C,MAAM,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC;EACtB,MAAM,oBAAoB;EAC1B,KAAK,CAAC;EACN,IAAI,SAAS,IAAI,gBAAgB,CAAC,uBAAuB,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;EAC/E,IAAI,EAAE,GAAGV,uBAAY,CAAC,KAAK,CAAC,EAAE,EAAE,oBAAoB,CAAC,CAAC;EACtD,GAAG;AACH;EACA,EAAE,IAAI,WAAW,GAAG,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,EAAE,IAAI,YAAY,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;EAC5C,EAAE,IAAI,MAAM,GAAG,CAAC,CAAC;AACjB;EACA,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EACnC,IAAI,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;EAC1B,IAAI,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9B;EACA,IAAI,IAAI,EAAE,GAAG,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;EACjD,IAAI,IAAI,EAAE,GAAG,cAAc,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;AACrD;EACA,IAAI,MAAM,GAAG,yBAAyB;EACtC,MAAM,EAAE;EACR,MAAM,EAAE;EACR,MAAM,WAAW;EACjB,MAAM,SAAS;EACf,MAAM,EAAE;EACR,MAAM,EAAE;EACR,MAAM,YAAY;EAClB,MAAM,MAAM;EACZ,KAAK,CAAC;EACN,GAAG;AACH;EACA,EAAE,4BAA4B,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1C;EACA,EAAE,IAAI,SAAS,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EACxC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,uBAAuB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;EACnE,EAAE,KAAK,CAAC,MAAM,GAAG,cAAc,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;EAC9D,EAAE,IAAI,IAAI,GAAG,SAAS,CAAC,uBAAuB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;EACjE,EAAED,qBAAU,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;AACvD;EACA,EAAE,OAAO,YAAY,CAAC;EACtB,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,gBAAgB,CAAC,oBAAoB,GAAG,UAAU,OAAO,EAAE;EAC3D,EAAE,IAAI,WAAW,GAAG,gBAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;EAC1D,EAAE,IAAI,IAAI,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;EACpC,EAAE,IAAI,YAAY,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;EACrC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;EACjC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAGA,qBAAU,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;EAC5D,GAAG;EACH,EAAE,OAAO,YAAY,CAAC;EACtB,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,gBAAgB,CAAC,yBAAyB,GAAG,UAAU,OAAO,EAAE;EAChE,EAAE,IAAI,WAAW,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;EAC/D,EAAE,IAAI,IAAI,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;EACpC,EAAE,IAAI,YAAY,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;EACrC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;EACjC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAGA,qBAAU,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;EAC5D,GAAG;EACH,EAAE,OAAO,YAAY,CAAC;EACtB,CAAC;;;;;;;;"}