From 17b77b15e27198c8026de41da0c6b8952bd9e7e5 Mon Sep 17 00:00:00 2001
From: Frederic Junod Special cases:\n * \n *
\n *
value
.\n */ $06f1857ea76fc69e$var$CesiumMath.sinh = (0, $8w8ZH.default)(Math.sinh, function sinh(value) {\n return (Math.exp(value) - Math.exp(-value)) / 2.0;\n});\n/**\n * Returns the hyperbolic cosine of a number.\n * The hyperbolic cosine of value is defined to be\n * (ex + e-x)/2.0\n * where e is Euler's number, approximately 2.71828183.\n *\n * Special cases:\n *
value
.\n */ $06f1857ea76fc69e$var$CesiumMath.cosh = (0, $8w8ZH.default)(Math.cosh, function cosh(value) {\n return (Math.exp(value) + Math.exp(-value)) / 2.0;\n});\n/**\n * Computes the linear interpolation of two values.\n *\n * @param {number} p The start value to interpolate.\n * @param {number} q The end value to interpolate.\n * @param {number} time The time of interpolation generally in the range [0.0, 1.0]
.\n * @returns {number} The linearly interpolated value.\n *\n * @example\n * const n = Cesium.Math.lerp(0.0, 2.0, 0.5); // returns 1.0\n */ $06f1857ea76fc69e$var$CesiumMath.lerp = function(p, q, time) {\n return (1.0 - time) * p + time * q;\n};\n/**\n * pi\n *\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.PI = Math.PI;\n/**\n * 1/pi\n *\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.ONE_OVER_PI = 1.0 / Math.PI;\n/**\n * pi/2\n *\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.PI_OVER_TWO = Math.PI / 2.0;\n/**\n * pi/3\n *\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.PI_OVER_THREE = Math.PI / 3.0;\n/**\n * pi/4\n *\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.PI_OVER_FOUR = Math.PI / 4.0;\n/**\n * pi/6\n *\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.PI_OVER_SIX = Math.PI / 6.0;\n/**\n * 3pi/2\n *\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.THREE_PI_OVER_TWO = 3.0 * Math.PI / 2.0;\n/**\n * 2pi\n *\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.TWO_PI = 2.0 * Math.PI;\n/**\n * 1/2pi\n *\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.ONE_OVER_TWO_PI = 1.0 / (2.0 * Math.PI);\n/**\n * The number of radians in a degree.\n *\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.RADIANS_PER_DEGREE = Math.PI / 180.0;\n/**\n * The number of degrees in a radian.\n *\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.DEGREES_PER_RADIAN = 180.0 / Math.PI;\n/**\n * The number of radians in an arc second.\n *\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.RADIANS_PER_ARCSECOND = $06f1857ea76fc69e$var$CesiumMath.RADIANS_PER_DEGREE / 3600.0;\n/**\n * Converts degrees to radians.\n * @param {number} degrees The angle to convert in degrees.\n * @returns {number} The corresponding angle in radians.\n */ $06f1857ea76fc69e$var$CesiumMath.toRadians = function(degrees) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(degrees)) throw new (0, $1vHsR.default)(\"degrees is required.\");\n //>>includeEnd('debug');\n return degrees * $06f1857ea76fc69e$var$CesiumMath.RADIANS_PER_DEGREE;\n};\n/**\n * Converts radians to degrees.\n * @param {number} radians The angle to convert in radians.\n * @returns {number} The corresponding angle in degrees.\n */ $06f1857ea76fc69e$var$CesiumMath.toDegrees = function(radians) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(radians)) throw new (0, $1vHsR.default)(\"radians is required.\");\n //>>includeEnd('debug');\n return radians * $06f1857ea76fc69e$var$CesiumMath.DEGREES_PER_RADIAN;\n};\n/**\n * Converts a longitude value, in radians, to the range [-Math.PI
, Math.PI
).\n *\n * @param {number} angle The longitude value, in radians, to convert to the range [-Math.PI
, Math.PI
).\n * @returns {number} The equivalent longitude value in the range [-Math.PI
, Math.PI
).\n *\n * @example\n * // Convert 270 degrees to -90 degrees longitude\n * const longitude = Cesium.Math.convertLongitudeRange(Cesium.Math.toRadians(270.0));\n */ $06f1857ea76fc69e$var$CesiumMath.convertLongitudeRange = function(angle) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(angle)) throw new (0, $1vHsR.default)(\"angle is required.\");\n //>>includeEnd('debug');\n const twoPi = $06f1857ea76fc69e$var$CesiumMath.TWO_PI;\n const simplified = angle - Math.floor(angle / twoPi) * twoPi;\n if (simplified < -Math.PI) return simplified + twoPi;\n if (simplified >= Math.PI) return simplified - twoPi;\n return simplified;\n};\n/**\n * Convenience function that clamps a latitude value, in radians, to the range [-Math.PI/2
, Math.PI/2
).\n * Useful for sanitizing data before use in objects requiring correct range.\n *\n * @param {number} angle The latitude value, in radians, to clamp to the range [-Math.PI/2
, Math.PI/2
).\n * @returns {number} The latitude value clamped to the range [-Math.PI/2
, Math.PI/2
).\n *\n * @example\n * // Clamp 108 degrees latitude to 90 degrees latitude\n * const latitude = Cesium.Math.clampToLatitudeRange(Cesium.Math.toRadians(108.0));\n */ $06f1857ea76fc69e$var$CesiumMath.clampToLatitudeRange = function(angle) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(angle)) throw new (0, $1vHsR.default)(\"angle is required.\");\n //>>includeEnd('debug');\n return $06f1857ea76fc69e$var$CesiumMath.clamp(angle, -1 * $06f1857ea76fc69e$var$CesiumMath.PI_OVER_TWO, $06f1857ea76fc69e$var$CesiumMath.PI_OVER_TWO);\n};\n/**\n * Produces an angle in the range -Pi <= angle <= Pi which is equivalent to the provided angle.\n *\n * @param {number} angle in radians\n * @returns {number} The angle in the range [-CesiumMath.PI
, CesiumMath.PI
].\n */ $06f1857ea76fc69e$var$CesiumMath.negativePiToPi = function(angle) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(angle)) throw new (0, $1vHsR.default)(\"angle is required.\");\n //>>includeEnd('debug');\n if (angle >= -$06f1857ea76fc69e$var$CesiumMath.PI && angle <= $06f1857ea76fc69e$var$CesiumMath.PI) // Early exit if the input is already inside the range. This avoids\n // unnecessary math which could introduce floating point error.\n return angle;\n return $06f1857ea76fc69e$var$CesiumMath.zeroToTwoPi(angle + $06f1857ea76fc69e$var$CesiumMath.PI) - $06f1857ea76fc69e$var$CesiumMath.PI;\n};\n/**\n * Produces an angle in the range 0 <= angle <= 2Pi which is equivalent to the provided angle.\n *\n * @param {number} angle in radians\n * @returns {number} The angle in the range [0, CesiumMath.TWO_PI
].\n */ $06f1857ea76fc69e$var$CesiumMath.zeroToTwoPi = function(angle) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(angle)) throw new (0, $1vHsR.default)(\"angle is required.\");\n //>>includeEnd('debug');\n if (angle >= 0 && angle <= $06f1857ea76fc69e$var$CesiumMath.TWO_PI) // Early exit if the input is already inside the range. This avoids\n // unnecessary math which could introduce floating point error.\n return angle;\n const mod = $06f1857ea76fc69e$var$CesiumMath.mod(angle, $06f1857ea76fc69e$var$CesiumMath.TWO_PI);\n if (Math.abs(mod) < $06f1857ea76fc69e$var$CesiumMath.EPSILON14 && Math.abs(angle) > $06f1857ea76fc69e$var$CesiumMath.EPSILON14) return $06f1857ea76fc69e$var$CesiumMath.TWO_PI;\n return mod;\n};\n/**\n * The modulo operation that also works for negative dividends.\n *\n * @param {number} m The dividend.\n * @param {number} n The divisor.\n * @returns {number} The remainder.\n */ $06f1857ea76fc69e$var$CesiumMath.mod = function(m, n) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(m)) throw new (0, $1vHsR.default)(\"m is required.\");\n if (!(0, $jQJji.default)(n)) throw new (0, $1vHsR.default)(\"n is required.\");\n if (n === 0.0) throw new (0, $1vHsR.default)(\"divisor cannot be 0.\");\n //>>includeEnd('debug');\n if ($06f1857ea76fc69e$var$CesiumMath.sign(m) === $06f1857ea76fc69e$var$CesiumMath.sign(n) && Math.abs(m) < Math.abs(n)) // Early exit if the input does not need to be modded. This avoids\n // unnecessary math which could introduce floating point error.\n return m;\n return (m % n + n) % n;\n};\n/**\n * Determines if two values are equal using an absolute or relative tolerance test. This is useful\n * to avoid problems due to roundoff error when comparing floating-point values directly. The values are\n * first compared using an absolute tolerance test. If that fails, a relative tolerance test is performed.\n * Use this test if you are unsure of the magnitudes of left and right.\n *\n * @param {number} left The first value to compare.\n * @param {number} right The other value to compare.\n * @param {number} [relativeEpsilon=0] The maximum inclusive delta between left
and right
for the relative tolerance test.\n * @param {number} [absoluteEpsilon=relativeEpsilon] The maximum inclusive delta between left
and right
for the absolute tolerance test.\n * @returns {boolean} true
if the values are equal within the epsilon; otherwise, false
.\n *\n * @example\n * const a = Cesium.Math.equalsEpsilon(0.0, 0.01, Cesium.Math.EPSILON2); // true\n * const b = Cesium.Math.equalsEpsilon(0.0, 0.1, Cesium.Math.EPSILON2); // false\n * const c = Cesium.Math.equalsEpsilon(3699175.1634344, 3699175.2, Cesium.Math.EPSILON7); // true\n * const d = Cesium.Math.equalsEpsilon(3699175.1634344, 3699175.2, Cesium.Math.EPSILON9); // false\n */ $06f1857ea76fc69e$var$CesiumMath.equalsEpsilon = function(left, right, relativeEpsilon, absoluteEpsilon) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(left)) throw new (0, $1vHsR.default)(\"left is required.\");\n if (!(0, $jQJji.default)(right)) throw new (0, $1vHsR.default)(\"right is required.\");\n //>>includeEnd('debug');\n relativeEpsilon = (0, $8w8ZH.default)(relativeEpsilon, 0.0);\n absoluteEpsilon = (0, $8w8ZH.default)(absoluteEpsilon, relativeEpsilon);\n const absDiff = Math.abs(left - right);\n return absDiff <= absoluteEpsilon || absDiff <= relativeEpsilon * Math.max(Math.abs(left), Math.abs(right));\n};\n/**\n * Determines if the left value is less than the right value. If the two values are within\n * absoluteEpsilon
of each other, they are considered equal and this function returns false.\n *\n * @param {number} left The first number to compare.\n * @param {number} right The second number to compare.\n * @param {number} absoluteEpsilon The absolute epsilon to use in comparison.\n * @returns {boolean} true
if left
is less than right
by more than\n * absoluteEpsilon. false
if left
is greater or if the two\n * values are nearly equal.\n */ $06f1857ea76fc69e$var$CesiumMath.lessThan = function(left, right, absoluteEpsilon) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(left)) throw new (0, $1vHsR.default)(\"first is required.\");\n if (!(0, $jQJji.default)(right)) throw new (0, $1vHsR.default)(\"second is required.\");\n if (!(0, $jQJji.default)(absoluteEpsilon)) throw new (0, $1vHsR.default)(\"absoluteEpsilon is required.\");\n //>>includeEnd('debug');\n return left - right < -absoluteEpsilon;\n};\n/**\n * Determines if the left value is less than or equal to the right value. If the two values are within\n * absoluteEpsilon
of each other, they are considered equal and this function returns true.\n *\n * @param {number} left The first number to compare.\n * @param {number} right The second number to compare.\n * @param {number} absoluteEpsilon The absolute epsilon to use in comparison.\n * @returns {boolean} true
if left
is less than right
or if the\n * the values are nearly equal.\n */ $06f1857ea76fc69e$var$CesiumMath.lessThanOrEquals = function(left, right, absoluteEpsilon) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(left)) throw new (0, $1vHsR.default)(\"first is required.\");\n if (!(0, $jQJji.default)(right)) throw new (0, $1vHsR.default)(\"second is required.\");\n if (!(0, $jQJji.default)(absoluteEpsilon)) throw new (0, $1vHsR.default)(\"absoluteEpsilon is required.\");\n //>>includeEnd('debug');\n return left - right < absoluteEpsilon;\n};\n/**\n * Determines if the left value is greater the right value. If the two values are within\n * absoluteEpsilon
of each other, they are considered equal and this function returns false.\n *\n * @param {number} left The first number to compare.\n * @param {number} right The second number to compare.\n * @param {number} absoluteEpsilon The absolute epsilon to use in comparison.\n * @returns {boolean} true
if left
is greater than right
by more than\n * absoluteEpsilon. false
if left
is less or if the two\n * values are nearly equal.\n */ $06f1857ea76fc69e$var$CesiumMath.greaterThan = function(left, right, absoluteEpsilon) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(left)) throw new (0, $1vHsR.default)(\"first is required.\");\n if (!(0, $jQJji.default)(right)) throw new (0, $1vHsR.default)(\"second is required.\");\n if (!(0, $jQJji.default)(absoluteEpsilon)) throw new (0, $1vHsR.default)(\"absoluteEpsilon is required.\");\n //>>includeEnd('debug');\n return left - right > absoluteEpsilon;\n};\n/**\n * Determines if the left value is greater than or equal to the right value. If the two values are within\n * absoluteEpsilon
of each other, they are considered equal and this function returns true.\n *\n * @param {number} left The first number to compare.\n * @param {number} right The second number to compare.\n * @param {number} absoluteEpsilon The absolute epsilon to use in comparison.\n * @returns {boolean} true
if left
is greater than right
or if the\n * the values are nearly equal.\n */ $06f1857ea76fc69e$var$CesiumMath.greaterThanOrEquals = function(left, right, absoluteEpsilon) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(left)) throw new (0, $1vHsR.default)(\"first is required.\");\n if (!(0, $jQJji.default)(right)) throw new (0, $1vHsR.default)(\"second is required.\");\n if (!(0, $jQJji.default)(absoluteEpsilon)) throw new (0, $1vHsR.default)(\"absoluteEpsilon is required.\");\n //>>includeEnd('debug');\n return left - right > -absoluteEpsilon;\n};\nconst $06f1857ea76fc69e$var$factorials = [\n 1\n];\n/**\n * Computes the factorial of the provided number.\n *\n * @param {number} n The number whose factorial is to be computed.\n * @returns {number} The factorial of the provided number or undefined if the number is less than 0.\n *\n * @exception {DeveloperError} A number greater than or equal to 0 is required.\n *\n *\n * @example\n * //Compute 7!, which is equal to 5040\n * const computedFactorial = Cesium.Math.factorial(7);\n *\n * @see {@link http://en.wikipedia.org/wiki/Factorial|Factorial on Wikipedia}\n */ $06f1857ea76fc69e$var$CesiumMath.factorial = function(n) {\n //>>includeStart('debug', pragmas.debug);\n if (typeof n !== \"number\" || n < 0) throw new (0, $1vHsR.default)(\"A number greater than or equal to 0 is required.\");\n //>>includeEnd('debug');\n const length = $06f1857ea76fc69e$var$factorials.length;\n if (n >= length) {\n let sum = $06f1857ea76fc69e$var$factorials[length - 1];\n for(let i = length; i <= n; i++){\n const next = sum * i;\n $06f1857ea76fc69e$var$factorials.push(next);\n sum = next;\n }\n }\n return $06f1857ea76fc69e$var$factorials[n];\n};\n/**\n * Increments a number with a wrapping to a minimum value if the number exceeds the maximum value.\n *\n * @param {number} [n] The number to be incremented.\n * @param {number} [maximumValue] The maximum incremented value before rolling over to the minimum value.\n * @param {number} [minimumValue=0.0] The number reset to after the maximum value has been exceeded.\n * @returns {number} The incremented number.\n *\n * @exception {DeveloperError} Maximum value must be greater than minimum value.\n *\n * @example\n * const n = Cesium.Math.incrementWrap(5, 10, 0); // returns 6\n * const m = Cesium.Math.incrementWrap(10, 10, 0); // returns 0\n */ $06f1857ea76fc69e$var$CesiumMath.incrementWrap = function(n, maximumValue, minimumValue) {\n minimumValue = (0, $8w8ZH.default)(minimumValue, 0.0);\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(n)) throw new (0, $1vHsR.default)(\"n is required.\");\n if (maximumValue <= minimumValue) throw new (0, $1vHsR.default)(\"maximumValue must be greater than minimumValue.\");\n //>>includeEnd('debug');\n ++n;\n if (n > maximumValue) n = minimumValue;\n return n;\n};\n/**\n * Determines if a non-negative integer is a power of two.\n * The maximum allowed input is (2^32)-1 due to 32-bit bitwise operator limitation in Javascript.\n *\n * @param {number} n The integer to test in the range [0, (2^32)-1].\n * @returns {boolean} true
if the number if a power of two; otherwise, false
.\n *\n * @exception {DeveloperError} A number between 0 and (2^32)-1 is required.\n *\n * @example\n * const t = Cesium.Math.isPowerOfTwo(16); // true\n * const f = Cesium.Math.isPowerOfTwo(20); // false\n */ $06f1857ea76fc69e$var$CesiumMath.isPowerOfTwo = function(n) {\n //>>includeStart('debug', pragmas.debug);\n if (typeof n !== \"number\" || n < 0 || n > 4294967295) throw new (0, $1vHsR.default)(\"A number between 0 and (2^32)-1 is required.\");\n //>>includeEnd('debug');\n return n !== 0 && (n & n - 1) === 0;\n};\n/**\n * Computes the next power-of-two integer greater than or equal to the provided non-negative integer.\n * The maximum allowed input is 2^31 due to 32-bit bitwise operator limitation in Javascript.\n *\n * @param {number} n The integer to test in the range [0, 2^31].\n * @returns {number} The next power-of-two integer.\n *\n * @exception {DeveloperError} A number between 0 and 2^31 is required.\n *\n * @example\n * const n = Cesium.Math.nextPowerOfTwo(29); // 32\n * const m = Cesium.Math.nextPowerOfTwo(32); // 32\n */ $06f1857ea76fc69e$var$CesiumMath.nextPowerOfTwo = function(n) {\n //>>includeStart('debug', pragmas.debug);\n if (typeof n !== \"number\" || n < 0 || n > 2147483648) throw new (0, $1vHsR.default)(\"A number between 0 and 2^31 is required.\");\n //>>includeEnd('debug');\n // From http://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2\n --n;\n n |= n >> 1;\n n |= n >> 2;\n n |= n >> 4;\n n |= n >> 8;\n n |= n >> 16;\n ++n;\n return n;\n};\n/**\n * Computes the previous power-of-two integer less than or equal to the provided non-negative integer.\n * The maximum allowed input is (2^32)-1 due to 32-bit bitwise operator limitation in Javascript.\n *\n * @param {number} n The integer to test in the range [0, (2^32)-1].\n * @returns {number} The previous power-of-two integer.\n *\n * @exception {DeveloperError} A number between 0 and (2^32)-1 is required.\n *\n * @example\n * const n = Cesium.Math.previousPowerOfTwo(29); // 16\n * const m = Cesium.Math.previousPowerOfTwo(32); // 32\n */ $06f1857ea76fc69e$var$CesiumMath.previousPowerOfTwo = function(n) {\n //>>includeStart('debug', pragmas.debug);\n if (typeof n !== \"number\" || n < 0 || n > 4294967295) throw new (0, $1vHsR.default)(\"A number between 0 and (2^32)-1 is required.\");\n //>>includeEnd('debug');\n n |= n >> 1;\n n |= n >> 2;\n n |= n >> 4;\n n |= n >> 8;\n n |= n >> 16;\n n |= n >> 32;\n // The previous bitwise operations implicitly convert to signed 32-bit. Use `>>>` to convert to unsigned\n n = (n >>> 0) - (n >>> 1);\n return n;\n};\n/**\n * Constraint a value to lie between two values.\n *\n * @param {number} value The value to clamp.\n * @param {number} min The minimum value.\n * @param {number} max The maximum value.\n * @returns {number} The clamped value such that min <= result <= max.\n */ $06f1857ea76fc69e$var$CesiumMath.clamp = function(value, min, max) {\n //>>includeStart('debug', pragmas.debug);\n (0, $3pzcG.default).typeOf.number(\"value\", value);\n (0, $3pzcG.default).typeOf.number(\"min\", min);\n (0, $3pzcG.default).typeOf.number(\"max\", max);\n //>>includeEnd('debug');\n return value < min ? min : value > max ? max : value;\n};\nlet $06f1857ea76fc69e$var$randomNumberGenerator = new (0, (/*@__PURE__*/$parcel$interopDefault($bnB1j)))();\n/**\n * Sets the seed used by the random number generator\n * in {@link CesiumMath#nextRandomNumber}.\n *\n * @param {number} seed An integer used as the seed.\n */ $06f1857ea76fc69e$var$CesiumMath.setRandomNumberSeed = function(seed) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(seed)) throw new (0, $1vHsR.default)(\"seed is required.\");\n //>>includeEnd('debug');\n $06f1857ea76fc69e$var$randomNumberGenerator = new (0, (/*@__PURE__*/$parcel$interopDefault($bnB1j)))(seed);\n};\n/**\n * Generates a random floating point number in the range of [0.0, 1.0)\n * using a Mersenne twister.\n *\n * @returns {number} A random number in the range of [0.0, 1.0).\n *\n * @see CesiumMath.setRandomNumberSeed\n * @see {@link http://en.wikipedia.org/wiki/Mersenne_twister|Mersenne twister on Wikipedia}\n */ $06f1857ea76fc69e$var$CesiumMath.nextRandomNumber = function() {\n return $06f1857ea76fc69e$var$randomNumberGenerator.random();\n};\n/**\n * Generates a random number between two numbers.\n *\n * @param {number} min The minimum value.\n * @param {number} max The maximum value.\n * @returns {number} A random number between the min and max.\n */ $06f1857ea76fc69e$var$CesiumMath.randomBetween = function(min, max) {\n return $06f1857ea76fc69e$var$CesiumMath.nextRandomNumber() * (max - min) + min;\n};\n/**\n * Computes Math.acos(value)
, but first clamps value
to the range [-1.0, 1.0]\n * so that the function will never return NaN.\n *\n * @param {number} value The value for which to compute acos.\n * @returns {number} The acos of the value if the value is in the range [-1.0, 1.0], or the acos of -1.0 or 1.0,\n * whichever is closer, if the value is outside the range.\n */ $06f1857ea76fc69e$var$CesiumMath.acosClamped = function(value) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(value)) throw new (0, $1vHsR.default)(\"value is required.\");\n //>>includeEnd('debug');\n return Math.acos($06f1857ea76fc69e$var$CesiumMath.clamp(value, -1, 1.0));\n};\n/**\n * Computes Math.asin(value)
, but first clamps value
to the range [-1.0, 1.0]\n * so that the function will never return NaN.\n *\n * @param {number} value The value for which to compute asin.\n * @returns {number} The asin of the value if the value is in the range [-1.0, 1.0], or the asin of -1.0 or 1.0,\n * whichever is closer, if the value is outside the range.\n */ $06f1857ea76fc69e$var$CesiumMath.asinClamped = function(value) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(value)) throw new (0, $1vHsR.default)(\"value is required.\");\n //>>includeEnd('debug');\n return Math.asin($06f1857ea76fc69e$var$CesiumMath.clamp(value, -1, 1.0));\n};\n/**\n * Finds the chord length between two points given the circle's radius and the angle between the points.\n *\n * @param {number} angle The angle between the two points.\n * @param {number} radius The radius of the circle.\n * @returns {number} The chord length.\n */ $06f1857ea76fc69e$var$CesiumMath.chordLength = function(angle, radius) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(angle)) throw new (0, $1vHsR.default)(\"angle is required.\");\n if (!(0, $jQJji.default)(radius)) throw new (0, $1vHsR.default)(\"radius is required.\");\n //>>includeEnd('debug');\n return 2.0 * radius * Math.sin(angle * 0.5);\n};\n/**\n * Finds the logarithm of a number to a base.\n *\n * @param {number} number The number.\n * @param {number} base The base.\n * @returns {number} The result.\n */ $06f1857ea76fc69e$var$CesiumMath.logBase = function(number, base) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(number)) throw new (0, $1vHsR.default)(\"number is required.\");\n if (!(0, $jQJji.default)(base)) throw new (0, $1vHsR.default)(\"base is required.\");\n //>>includeEnd('debug');\n return Math.log(number) / Math.log(base);\n};\n/**\n * Finds the cube root of a number.\n * Returns NaN if number
is not provided.\n *\n * @function\n * @param {number} [number] The number.\n * @returns {number} The result.\n */ $06f1857ea76fc69e$var$CesiumMath.cbrt = (0, $8w8ZH.default)(Math.cbrt, function cbrt(number) {\n const result = Math.pow(Math.abs(number), 1.0 / 3.0);\n return number < 0.0 ? -result : result;\n});\n/**\n * Finds the base 2 logarithm of a number.\n *\n * @function\n * @param {number} number The number.\n * @returns {number} The result.\n */ $06f1857ea76fc69e$var$CesiumMath.log2 = (0, $8w8ZH.default)(Math.log2, function log2(number) {\n return Math.log(number) * Math.LOG2E;\n});\n/**\n * Calculate the fog impact at a given distance. Useful for culling.\n * Matches the equation in `fog.glsl`\n * @private\n */ $06f1857ea76fc69e$var$CesiumMath.fog = function(distanceToCamera, density) {\n const scalar = distanceToCamera * density;\n return 1.0 - Math.exp(-(scalar * scalar));\n};\n/**\n * Computes a fast approximation of Atan for input in the range [-1, 1].\n *\n * Based on Michal Drobot's approximation from ShaderFastLibs,\n * which in turn is based on \"Efficient approximations for the arctangent function,\"\n * Rajan, S. Sichun Wang Inkol, R. Joyal, A., May 2006.\n * Adapted from ShaderFastLibs under MIT License.\n *\n * @param {number} x An input number in the range [-1, 1]\n * @returns {number} An approximation of atan(x)\n */ $06f1857ea76fc69e$var$CesiumMath.fastApproximateAtan = function(x) {\n //>>includeStart('debug', pragmas.debug);\n (0, $3pzcG.default).typeOf.number(\"x\", x);\n //>>includeEnd('debug');\n return x * (-0.1784 * Math.abs(x) - 0.0663 * x * x + 1.0301);\n};\n/**\n * Computes a fast approximation of Atan2(x, y) for arbitrary input scalars.\n *\n * Range reduction math based on nvidia's cg reference implementation: http://developer.download.nvidia.com/cg/atan2.html\n *\n * @param {number} x An input number that isn't zero if y is zero.\n * @param {number} y An input number that isn't zero if x is zero.\n * @returns {number} An approximation of atan2(x, y)\n */ $06f1857ea76fc69e$var$CesiumMath.fastApproximateAtan2 = function(x, y) {\n //>>includeStart('debug', pragmas.debug);\n (0, $3pzcG.default).typeOf.number(\"x\", x);\n (0, $3pzcG.default).typeOf.number(\"y\", y);\n //>>includeEnd('debug');\n // atan approximations are usually only reliable over [-1, 1]\n // So reduce the range by flipping whether x or y is on top based on which is bigger.\n let opposite;\n let t = Math.abs(x); // t used as swap and atan result.\n opposite = Math.abs(y);\n const adjacent = Math.max(t, opposite);\n opposite = Math.min(t, opposite);\n const oppositeOverAdjacent = opposite / adjacent;\n //>>includeStart('debug', pragmas.debug);\n if (isNaN(oppositeOverAdjacent)) throw new (0, $1vHsR.default)(\"either x or y must be nonzero\");\n //>>includeEnd('debug');\n t = $06f1857ea76fc69e$var$CesiumMath.fastApproximateAtan(oppositeOverAdjacent);\n // Undo range reduction\n t = Math.abs(y) > Math.abs(x) ? $06f1857ea76fc69e$var$CesiumMath.PI_OVER_TWO - t : t;\n t = x < 0.0 ? $06f1857ea76fc69e$var$CesiumMath.PI - t : t;\n t = y < 0.0 ? -t : t;\n return t;\n};\nvar $06f1857ea76fc69e$export$2e2bcd8739ae039 = $06f1857ea76fc69e$var$CesiumMath;\n\n});\nparcelRegister(\"bnB1j\", function(module, exports) {\n/*\n https://github.com/banksean wrapped Makoto Matsumoto and Takuji Nishimura's code in a namespace\n so it's better encapsulated. Now you can have multiple random number generators\n and they won't stomp all over eachother's state.\n\n If you want to use this as a substitute for Math.random(), use the random()\n method like so:\n\n var m = new MersenneTwister();\n var randomNumber = m.random();\n\n You can also call the other genrand_{foo}() methods on the instance.\n\n If you want to use a specific seed in order to get a repeatable random\n sequence, pass an integer into the constructor:\n\n var m = new MersenneTwister(123);\n\n and that will always produce the same random sequence.\n\n Sean McCullough (banksean@gmail.com)\n*/ /*\n A C-program for MT19937, with initialization improved 2002/1/26.\n Coded by Takuji Nishimura and Makoto Matsumoto.\n\n Before using, initialize the state by using init_seed(seed)\n or init_by_array(init_key, key_length).\n\n Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,\n All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions\n are met:\n\n 1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. The names of its contributors may not be used to endorse or promote\n products derived from this software without specific prior written\n permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\n Any feedback is very welcome.\n http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html\n email: m-mat @ math.sci.hiroshima-u.ac.jp (remove space)\n*/ var $848e8f2059b51b3f$var$MersenneTwister = function(seed) {\n if (seed == undefined) seed = new Date().getTime();\n /* Period parameters */ this.N = 624;\n this.M = 397;\n this.MATRIX_A = 0x9908b0df; /* constant vector a */ \n this.UPPER_MASK = 0x80000000; /* most significant w-r bits */ \n this.LOWER_MASK = 0x7fffffff; /* least significant r bits */ \n this.mt = new Array(this.N); /* the array for the state vector */ \n this.mti = this.N + 1; /* mti==N+1 means mt[N] is not initialized */ \n if (seed.constructor == Array) this.init_by_array(seed, seed.length);\n else this.init_seed(seed);\n};\n/* initializes mt[N] with a seed */ /* origin name init_genrand */ $848e8f2059b51b3f$var$MersenneTwister.prototype.init_seed = function(s) {\n this.mt[0] = s >>> 0;\n for(this.mti = 1; this.mti < this.N; this.mti++){\n var s = this.mt[this.mti - 1] ^ this.mt[this.mti - 1] >>> 30;\n this.mt[this.mti] = (((s & 0xffff0000) >>> 16) * 1812433253 << 16) + (s & 0x0000ffff) * 1812433253 + this.mti;\n /* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */ /* In the previous versions, MSBs of the seed affect */ /* only MSBs of the array mt[]. */ /* 2002/01/09 modified by Makoto Matsumoto */ this.mt[this.mti] >>>= 0;\n /* for >32 bit machines */ }\n};\n/* initialize by an array with array-length */ /* init_key is the array for initializing keys */ /* key_length is its length */ /* slight change for C++, 2004/2/26 */ $848e8f2059b51b3f$var$MersenneTwister.prototype.init_by_array = function(init_key, key_length) {\n var i, j, k;\n this.init_seed(19650218);\n i = 1;\n j = 0;\n k = this.N > key_length ? this.N : key_length;\n for(; k; k--){\n var s = this.mt[i - 1] ^ this.mt[i - 1] >>> 30;\n this.mt[i] = (this.mt[i] ^ (((s & 0xffff0000) >>> 16) * 1664525 << 16) + (s & 0x0000ffff) * 1664525) + init_key[j] + j; /* non linear */ \n this.mt[i] >>>= 0; /* for WORDSIZE > 32 machines */ \n i++;\n j++;\n if (i >= this.N) {\n this.mt[0] = this.mt[this.N - 1];\n i = 1;\n }\n if (j >= key_length) j = 0;\n }\n for(k = this.N - 1; k; k--){\n var s = this.mt[i - 1] ^ this.mt[i - 1] >>> 30;\n this.mt[i] = (this.mt[i] ^ (((s & 0xffff0000) >>> 16) * 1566083941 << 16) + (s & 0x0000ffff) * 1566083941) - i; /* non linear */ \n this.mt[i] >>>= 0; /* for WORDSIZE > 32 machines */ \n i++;\n if (i >= this.N) {\n this.mt[0] = this.mt[this.N - 1];\n i = 1;\n }\n }\n this.mt[0] = 0x80000000; /* MSB is 1; assuring non-zero initial array */ \n};\n/* generates a random number on [0,0xffffffff]-interval */ /* origin name genrand_int32 */ $848e8f2059b51b3f$var$MersenneTwister.prototype.random_int = function() {\n var y;\n var mag01 = new Array(0x0, this.MATRIX_A);\n /* mag01[x] = x * MATRIX_A for x=0,1 */ if (this.mti >= this.N) {\n var kk;\n if (this.mti == this.N + 1) /* if init_seed() has not been called, */ this.init_seed(5489); /* a default initial seed is used */ \n for(kk = 0; kk < this.N - this.M; kk++){\n y = this.mt[kk] & this.UPPER_MASK | this.mt[kk + 1] & this.LOWER_MASK;\n this.mt[kk] = this.mt[kk + this.M] ^ y >>> 1 ^ mag01[y & 0x1];\n }\n for(; kk < this.N - 1; kk++){\n y = this.mt[kk] & this.UPPER_MASK | this.mt[kk + 1] & this.LOWER_MASK;\n this.mt[kk] = this.mt[kk + (this.M - this.N)] ^ y >>> 1 ^ mag01[y & 0x1];\n }\n y = this.mt[this.N - 1] & this.UPPER_MASK | this.mt[0] & this.LOWER_MASK;\n this.mt[this.N - 1] = this.mt[this.M - 1] ^ y >>> 1 ^ mag01[y & 0x1];\n this.mti = 0;\n }\n y = this.mt[this.mti++];\n /* Tempering */ y ^= y >>> 11;\n y ^= y << 7 & 0x9d2c5680;\n y ^= y << 15 & 0xefc60000;\n y ^= y >>> 18;\n return y >>> 0;\n};\n/* generates a random number on [0,0x7fffffff]-interval */ /* origin name genrand_int31 */ $848e8f2059b51b3f$var$MersenneTwister.prototype.random_int31 = function() {\n return this.random_int() >>> 1;\n};\n/* generates a random number on [0,1]-real-interval */ /* origin name genrand_real1 */ $848e8f2059b51b3f$var$MersenneTwister.prototype.random_incl = function() {\n return this.random_int() * (1.0 / 4294967295.0);\n/* divided by 2^32-1 */ };\n/* generates a random number on [0,1)-real-interval */ $848e8f2059b51b3f$var$MersenneTwister.prototype.random = function() {\n return this.random_int() * (1.0 / 4294967296.0);\n/* divided by 2^32 */ };\n/* generates a random number on (0,1)-real-interval */ /* origin name genrand_real3 */ $848e8f2059b51b3f$var$MersenneTwister.prototype.random_excl = function() {\n return (this.random_int() + 0.5) * (1.0 / 4294967296.0);\n/* divided by 2^32 */ };\n/* generates a random number on [0,1) with 53-bit resolution*/ /* origin name genrand_res53 */ $848e8f2059b51b3f$var$MersenneTwister.prototype.random_long = function() {\n var a = this.random_int() >>> 5, b = this.random_int() >>> 6;\n return (a * 67108864.0 + b) * (1.0 / 9007199254740992.0);\n};\n/* These real versions are due to Isaku Wada, 2002/01/09 added */ module.exports = $848e8f2059b51b3f$var$MersenneTwister;\n\n});\n\nparcelRegister(\"3pzcG\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $27bf03924417ee9b$export$2e2bcd8739ae039);\n\nvar $jQJji = parcelRequire(\"jQJji\");\n\nvar $1vHsR = parcelRequire(\"1vHsR\");\n/**\n * Contains functions for checking that supplied arguments are of a specified type\n * or meet specified conditions\n */ const $27bf03924417ee9b$var$Check = {};\n/**\n * Contains type checking functions, all using the typeof operator\n */ $27bf03924417ee9b$var$Check.typeOf = {};\nfunction $27bf03924417ee9b$var$getUndefinedErrorMessage(name) {\n return `${name} is required, actual value was undefined`;\n}\nfunction $27bf03924417ee9b$var$getFailedTypeErrorMessage(actual, expected, name) {\n return `Expected ${name} to be typeof ${expected}, actual typeof was ${actual}`;\n}\n/**\n * Throws if test is not defined\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value that is to be checked\n * @exception {DeveloperError} test must be defined\n */ $27bf03924417ee9b$var$Check.defined = function(name, test) {\n if (!(0, $jQJji.default)(test)) throw new (0, $1vHsR.default)($27bf03924417ee9b$var$getUndefinedErrorMessage(name));\n};\n/**\n * Throws if test is not typeof 'function'\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'function'\n */ $27bf03924417ee9b$var$Check.typeOf.func = function(name, test) {\n if (typeof test !== \"function\") throw new (0, $1vHsR.default)($27bf03924417ee9b$var$getFailedTypeErrorMessage(typeof test, \"function\", name));\n};\n/**\n * Throws if test is not typeof 'string'\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'string'\n */ $27bf03924417ee9b$var$Check.typeOf.string = function(name, test) {\n if (typeof test !== \"string\") throw new (0, $1vHsR.default)($27bf03924417ee9b$var$getFailedTypeErrorMessage(typeof test, \"string\", name));\n};\n/**\n * Throws if test is not typeof 'number'\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'number'\n */ $27bf03924417ee9b$var$Check.typeOf.number = function(name, test) {\n if (typeof test !== \"number\") throw new (0, $1vHsR.default)($27bf03924417ee9b$var$getFailedTypeErrorMessage(typeof test, \"number\", name));\n};\n/**\n * Throws if test is not typeof 'number' and less than limit\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @param {number} limit The limit value to compare against\n * @exception {DeveloperError} test must be typeof 'number' and less than limit\n */ $27bf03924417ee9b$var$Check.typeOf.number.lessThan = function(name, test, limit) {\n $27bf03924417ee9b$var$Check.typeOf.number(name, test);\n if (test >= limit) throw new (0, $1vHsR.default)(`Expected ${name} to be less than ${limit}, actual value was ${test}`);\n};\n/**\n * Throws if test is not typeof 'number' and less than or equal to limit\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @param {number} limit The limit value to compare against\n * @exception {DeveloperError} test must be typeof 'number' and less than or equal to limit\n */ $27bf03924417ee9b$var$Check.typeOf.number.lessThanOrEquals = function(name, test, limit) {\n $27bf03924417ee9b$var$Check.typeOf.number(name, test);\n if (test > limit) throw new (0, $1vHsR.default)(`Expected ${name} to be less than or equal to ${limit}, actual value was ${test}`);\n};\n/**\n * Throws if test is not typeof 'number' and greater than limit\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @param {number} limit The limit value to compare against\n * @exception {DeveloperError} test must be typeof 'number' and greater than limit\n */ $27bf03924417ee9b$var$Check.typeOf.number.greaterThan = function(name, test, limit) {\n $27bf03924417ee9b$var$Check.typeOf.number(name, test);\n if (test <= limit) throw new (0, $1vHsR.default)(`Expected ${name} to be greater than ${limit}, actual value was ${test}`);\n};\n/**\n * Throws if test is not typeof 'number' and greater than or equal to limit\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @param {number} limit The limit value to compare against\n * @exception {DeveloperError} test must be typeof 'number' and greater than or equal to limit\n */ $27bf03924417ee9b$var$Check.typeOf.number.greaterThanOrEquals = function(name, test, limit) {\n $27bf03924417ee9b$var$Check.typeOf.number(name, test);\n if (test < limit) throw new (0, $1vHsR.default)(`Expected ${name} to be greater than or equal to ${limit}, actual value was ${test}`);\n};\n/**\n * Throws if test is not typeof 'object'\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'object'\n */ $27bf03924417ee9b$var$Check.typeOf.object = function(name, test) {\n if (typeof test !== \"object\") throw new (0, $1vHsR.default)($27bf03924417ee9b$var$getFailedTypeErrorMessage(typeof test, \"object\", name));\n};\n/**\n * Throws if test is not typeof 'boolean'\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'boolean'\n */ $27bf03924417ee9b$var$Check.typeOf.bool = function(name, test) {\n if (typeof test !== \"boolean\") throw new (0, $1vHsR.default)($27bf03924417ee9b$var$getFailedTypeErrorMessage(typeof test, \"boolean\", name));\n};\n/**\n * Throws if test is not typeof 'bigint'\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'bigint'\n */ $27bf03924417ee9b$var$Check.typeOf.bigint = function(name, test) {\n if (typeof test !== \"bigint\") throw new (0, $1vHsR.default)($27bf03924417ee9b$var$getFailedTypeErrorMessage(typeof test, \"bigint\", name));\n};\n/**\n * Throws if test1 and test2 is not typeof 'number' and not equal in value\n *\n * @param {string} name1 The name of the first variable being tested\n * @param {string} name2 The name of the second variable being tested against\n * @param {*} test1 The value to test\n * @param {*} test2 The value to test against\n * @exception {DeveloperError} test1 and test2 should be type of 'number' and be equal in value\n */ $27bf03924417ee9b$var$Check.typeOf.number.equals = function(name1, name2, test1, test2) {\n $27bf03924417ee9b$var$Check.typeOf.number(name1, test1);\n $27bf03924417ee9b$var$Check.typeOf.number(name2, test2);\n if (test1 !== test2) throw new (0, $1vHsR.default)(`${name1} must be equal to ${name2}, the actual values are ${test1} and ${test2}`);\n};\nvar $27bf03924417ee9b$export$2e2bcd8739ae039 = $27bf03924417ee9b$var$Check;\n\n});\nparcelRegister(\"jQJji\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $e736054cd130cc46$export$2e2bcd8739ae039);\n/**\n * @function\n *\n * @param {*} value The object.\n * @returns {boolean} Returns true if the object is defined, returns false otherwise.\n *\n * @example\n * if (Cesium.defined(positions)) {\n * doSomething();\n * } else {\n * doSomethingElse();\n * }\n */ function $e736054cd130cc46$var$defined(value) {\n return value !== undefined && value !== null;\n}\nvar $e736054cd130cc46$export$2e2bcd8739ae039 = $e736054cd130cc46$var$defined;\n\n});\n\nparcelRegister(\"1vHsR\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $119a66d9b8a89652$export$2e2bcd8739ae039);\n\nvar $jQJji = parcelRequire(\"jQJji\");\n/**\n * Constructs an exception object that is thrown due to a developer error, e.g., invalid argument,\n * argument out of range, etc. This exception should only be thrown during development;\n * it usually indicates a bug in the calling code. This exception should never be\n * caught; instead the calling code should strive not to generate it.\n *
\n * On the other hand, a {@link RuntimeError} indicates an exception that may\n * be thrown at runtime, e.g., out of memory, that the calling code should be prepared\n * to catch.\n *\n * @alias DeveloperError\n * @constructor\n * @extends Error\n *\n * @param {string} [message] The error message for this exception.\n *\n * @see RuntimeError\n */ function $119a66d9b8a89652$var$DeveloperError(message) {\n /**\n * 'DeveloperError' indicating that this exception was thrown due to a developer error.\n * @type {string}\n * @readonly\n */ this.name = \"DeveloperError\";\n /**\n * The explanation for why this exception was thrown.\n * @type {string}\n * @readonly\n */ this.message = message;\n //Browsers such as IE don't have a stack property until you actually throw the error.\n let stack;\n try {\n throw new Error();\n } catch (e) {\n stack = e.stack;\n }\n /**\n * The stack trace of this exception, if available.\n * @type {string}\n * @readonly\n */ this.stack = stack;\n}\nif ((0, $jQJji.default)(Object.create)) {\n $119a66d9b8a89652$var$DeveloperError.prototype = Object.create(Error.prototype);\n $119a66d9b8a89652$var$DeveloperError.prototype.constructor = $119a66d9b8a89652$var$DeveloperError;\n}\n$119a66d9b8a89652$var$DeveloperError.prototype.toString = function() {\n let str = `${this.name}: ${this.message}`;\n if ((0, $jQJji.default)(this.stack)) str += `\\n${this.stack.toString()}`;\n return str;\n};\n/**\n * @private\n */ $119a66d9b8a89652$var$DeveloperError.throwInstantiationError = function() {\n throw new $119a66d9b8a89652$var$DeveloperError(\"This function defines an interface and should not be called directly.\");\n};\nvar $119a66d9b8a89652$export$2e2bcd8739ae039 = $119a66d9b8a89652$var$DeveloperError;\n\n});\n\n\nparcelRegister(\"8w8ZH\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $633849ec333ae991$export$2e2bcd8739ae039);\n/**\n * Returns the first parameter if not undefined, otherwise the second parameter.\n * Useful for setting a default value for a parameter.\n *\n * @function\n *\n * @param {*} a\n * @param {*} b\n * @returns {*} Returns the first parameter if not undefined, otherwise the second parameter.\n *\n * @example\n * param = Cesium.defaultValue(param, 'default');\n */ function $633849ec333ae991$var$defaultValue(a, b) {\n if (a !== undefined && a !== null) return a;\n return b;\n}\n/**\n * A frozen empty object that can be used as the default value for options passed as\n * an object literal.\n * @type {object}\n * @memberof defaultValue\n */ $633849ec333ae991$var$defaultValue.EMPTY_OBJECT = Object.freeze({});\nvar $633849ec333ae991$export$2e2bcd8739ae039 = $633849ec333ae991$var$defaultValue;\n\n});\n\n\n\n//# sourceMappingURL=cesium-binoculars.b863545a.js.map\n","import MersenneTwister from \"mersenne-twister\";\nimport Check from \"./Check.js\";\nimport defaultValue from \"./defaultValue.js\";\nimport defined from \"./defined.js\";\nimport DeveloperError from \"./DeveloperError.js\";\n\n/**\n * Math functions.\n *\n * @exports CesiumMath\n * @alias Math\n */\nconst CesiumMath = {};\n\n/**\n * 0.1\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON1 = 0.1;\n\n/**\n * 0.01\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON2 = 0.01;\n\n/**\n * 0.001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON3 = 0.001;\n\n/**\n * 0.0001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON4 = 0.0001;\n\n/**\n * 0.00001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON5 = 0.00001;\n\n/**\n * 0.000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON6 = 0.000001;\n\n/**\n * 0.0000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON7 = 0.0000001;\n\n/**\n * 0.00000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON8 = 0.00000001;\n\n/**\n * 0.000000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON9 = 0.000000001;\n\n/**\n * 0.0000000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON10 = 0.0000000001;\n\n/**\n * 0.00000000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON11 = 0.00000000001;\n\n/**\n * 0.000000000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON12 = 0.000000000001;\n\n/**\n * 0.0000000000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON13 = 0.0000000000001;\n\n/**\n * 0.00000000000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON14 = 0.00000000000001;\n\n/**\n * 0.000000000000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON15 = 0.000000000000001;\n\n/**\n * 0.0000000000000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON16 = 0.0000000000000001;\n\n/**\n * 0.00000000000000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON17 = 0.00000000000000001;\n\n/**\n * 0.000000000000000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON18 = 0.000000000000000001;\n\n/**\n * 0.0000000000000000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON19 = 0.0000000000000000001;\n\n/**\n * 0.00000000000000000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON20 = 0.00000000000000000001;\n\n/**\n * 0.000000000000000000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON21 = 0.000000000000000000001;\n\n/**\n * The gravitational parameter of the Earth in meters cubed\n * per second squared as defined by the WGS84 model: 3.986004418e14\n * @type {number}\n * @constant\n */\nCesiumMath.GRAVITATIONALPARAMETER = 3.986004418e14;\n\n/**\n * Radius of the sun in meters: 6.955e8\n * @type {number}\n * @constant\n */\nCesiumMath.SOLAR_RADIUS = 6.955e8;\n\n/**\n * The mean radius of the moon, according to the \"Report of the IAU/IAG Working Group on\n * Cartographic Coordinates and Rotational Elements of the Planets and satellites: 2000\",\n * Celestial Mechanics 82: 83-110, 2002.\n * @type {number}\n * @constant\n */\nCesiumMath.LUNAR_RADIUS = 1737400.0;\n\n/**\n * 64 * 1024\n * @type {number}\n * @constant\n */\nCesiumMath.SIXTY_FOUR_KILOBYTES = 64 * 1024;\n\n/**\n * 4 * 1024 * 1024 * 1024\n * @type {number}\n * @constant\n */\nCesiumMath.FOUR_GIGABYTES = 4 * 1024 * 1024 * 1024;\n\n/**\n * Returns the sign of the value; 1 if the value is positive, -1 if the value is\n * negative, or 0 if the value is 0.\n *\n * @function\n * @param {number} value The value to return the sign of.\n * @returns {number} The sign of value.\n */\nCesiumMath.sign = defaultValue(Math.sign, function sign(value) {\n value = +value; // coerce to number\n if (value === 0 || value !== value) {\n // zero or NaN\n return value;\n }\n return value > 0 ? 1 : -1;\n});\n\n/**\n * Returns 1.0 if the given value is positive or zero, and -1.0 if it is negative.\n * This is similar to {@link CesiumMath#sign} except that returns 1.0 instead of\n * 0.0 when the input value is 0.0.\n * @param {number} value The value to return the sign of.\n * @returns {number} The sign of value.\n */\nCesiumMath.signNotZero = function (value) {\n return value < 0.0 ? -1.0 : 1.0;\n};\n\n/**\n * Converts a scalar value in the range [-1.0, 1.0] to a SNORM in the range [0, rangeMaximum]\n * @param {number} value The scalar value in the range [-1.0, 1.0]\n * @param {number} [rangeMaximum=255] The maximum value in the mapped range, 255 by default.\n * @returns {number} A SNORM value, where 0 maps to -1.0 and rangeMaximum maps to 1.0.\n *\n * @see CesiumMath.fromSNorm\n */\nCesiumMath.toSNorm = function (value, rangeMaximum) {\n rangeMaximum = defaultValue(rangeMaximum, 255);\n return Math.round(\n (CesiumMath.clamp(value, -1.0, 1.0) * 0.5 + 0.5) * rangeMaximum,\n );\n};\n\n/**\n * Converts a SNORM value in the range [0, rangeMaximum] to a scalar in the range [-1.0, 1.0].\n * @param {number} value SNORM value in the range [0, rangeMaximum]\n * @param {number} [rangeMaximum=255] The maximum value in the SNORM range, 255 by default.\n * @returns {number} Scalar in the range [-1.0, 1.0].\n *\n * @see CesiumMath.toSNorm\n */\nCesiumMath.fromSNorm = function (value, rangeMaximum) {\n rangeMaximum = defaultValue(rangeMaximum, 255);\n return (\n (CesiumMath.clamp(value, 0.0, rangeMaximum) / rangeMaximum) * 2.0 - 1.0\n );\n};\n\n/**\n * Converts a scalar value in the range [rangeMinimum, rangeMaximum] to a scalar in the range [0.0, 1.0]\n * @param {number} value The scalar value in the range [rangeMinimum, rangeMaximum]\n * @param {number} rangeMinimum The minimum value in the mapped range.\n * @param {number} rangeMaximum The maximum value in the mapped range.\n * @returns {number} A scalar value, where rangeMinimum maps to 0.0 and rangeMaximum maps to 1.0.\n */\nCesiumMath.normalize = function (value, rangeMinimum, rangeMaximum) {\n rangeMaximum = Math.max(rangeMaximum - rangeMinimum, 0.0);\n return rangeMaximum === 0.0\n ? 0.0\n : CesiumMath.clamp((value - rangeMinimum) / rangeMaximum, 0.0, 1.0);\n};\n\n/**\n * Returns the hyperbolic sine of a number.\n * The hyperbolic sine of value is defined to be\n * (ex - e-x)/2.0\n * where e is Euler's number, approximately 2.71828183.\n *\n * Special cases:\n *
\n * - If the argument is NaN, then the result is NaN.
\n *\n * - If the argument is infinite, then the result is an infinity\n * with the same sign as the argument.
\n *\n * - If the argument is zero, then the result is a zero with the\n * same sign as the argument.
\n *
\n *\n *\n * @function\n * @param {number} value The number whose hyperbolic sine is to be returned.\n * @returns {number} The hyperbolic sine of value
.\n */\nCesiumMath.sinh = defaultValue(Math.sinh, function sinh(value) {\n return (Math.exp(value) - Math.exp(-value)) / 2.0;\n});\n\n/**\n * Returns the hyperbolic cosine of a number.\n * The hyperbolic cosine of value is defined to be\n * (ex + e-x)/2.0\n * where e is Euler's number, approximately 2.71828183.\n *\n * Special cases:\n *
\n * - If the argument is NaN, then the result is NaN.
\n *\n * - If the argument is infinite, then the result is positive infinity.
\n *\n * - If the argument is zero, then the result is 1.0.
\n *
\n *\n *\n * @function\n * @param {number} value The number whose hyperbolic cosine is to be returned.\n * @returns {number} The hyperbolic cosine of value
.\n */\nCesiumMath.cosh = defaultValue(Math.cosh, function cosh(value) {\n return (Math.exp(value) + Math.exp(-value)) / 2.0;\n});\n\n/**\n * Computes the linear interpolation of two values.\n *\n * @param {number} p The start value to interpolate.\n * @param {number} q The end value to interpolate.\n * @param {number} time The time of interpolation generally in the range [0.0, 1.0]
.\n * @returns {number} The linearly interpolated value.\n *\n * @example\n * const n = Cesium.Math.lerp(0.0, 2.0, 0.5); // returns 1.0\n */\nCesiumMath.lerp = function (p, q, time) {\n return (1.0 - time) * p + time * q;\n};\n\n/**\n * pi\n *\n * @type {number}\n * @constant\n */\nCesiumMath.PI = Math.PI;\n\n/**\n * 1/pi\n *\n * @type {number}\n * @constant\n */\nCesiumMath.ONE_OVER_PI = 1.0 / Math.PI;\n\n/**\n * pi/2\n *\n * @type {number}\n * @constant\n */\nCesiumMath.PI_OVER_TWO = Math.PI / 2.0;\n\n/**\n * pi/3\n *\n * @type {number}\n * @constant\n */\nCesiumMath.PI_OVER_THREE = Math.PI / 3.0;\n\n/**\n * pi/4\n *\n * @type {number}\n * @constant\n */\nCesiumMath.PI_OVER_FOUR = Math.PI / 4.0;\n\n/**\n * pi/6\n *\n * @type {number}\n * @constant\n */\nCesiumMath.PI_OVER_SIX = Math.PI / 6.0;\n\n/**\n * 3pi/2\n *\n * @type {number}\n * @constant\n */\nCesiumMath.THREE_PI_OVER_TWO = (3.0 * Math.PI) / 2.0;\n\n/**\n * 2pi\n *\n * @type {number}\n * @constant\n */\nCesiumMath.TWO_PI = 2.0 * Math.PI;\n\n/**\n * 1/2pi\n *\n * @type {number}\n * @constant\n */\nCesiumMath.ONE_OVER_TWO_PI = 1.0 / (2.0 * Math.PI);\n\n/**\n * The number of radians in a degree.\n *\n * @type {number}\n * @constant\n */\nCesiumMath.RADIANS_PER_DEGREE = Math.PI / 180.0;\n\n/**\n * The number of degrees in a radian.\n *\n * @type {number}\n * @constant\n */\nCesiumMath.DEGREES_PER_RADIAN = 180.0 / Math.PI;\n\n/**\n * The number of radians in an arc second.\n *\n * @type {number}\n * @constant\n */\nCesiumMath.RADIANS_PER_ARCSECOND = CesiumMath.RADIANS_PER_DEGREE / 3600.0;\n\n/**\n * Converts degrees to radians.\n * @param {number} degrees The angle to convert in degrees.\n * @returns {number} The corresponding angle in radians.\n */\nCesiumMath.toRadians = function (degrees) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(degrees)) {\n throw new DeveloperError(\"degrees is required.\");\n }\n //>>includeEnd('debug');\n return degrees * CesiumMath.RADIANS_PER_DEGREE;\n};\n\n/**\n * Converts radians to degrees.\n * @param {number} radians The angle to convert in radians.\n * @returns {number} The corresponding angle in degrees.\n */\nCesiumMath.toDegrees = function (radians) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(radians)) {\n throw new DeveloperError(\"radians is required.\");\n }\n //>>includeEnd('debug');\n return radians * CesiumMath.DEGREES_PER_RADIAN;\n};\n\n/**\n * Converts a longitude value, in radians, to the range [-Math.PI
, Math.PI
).\n *\n * @param {number} angle The longitude value, in radians, to convert to the range [-Math.PI
, Math.PI
).\n * @returns {number} The equivalent longitude value in the range [-Math.PI
, Math.PI
).\n *\n * @example\n * // Convert 270 degrees to -90 degrees longitude\n * const longitude = Cesium.Math.convertLongitudeRange(Cesium.Math.toRadians(270.0));\n */\nCesiumMath.convertLongitudeRange = function (angle) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(angle)) {\n throw new DeveloperError(\"angle is required.\");\n }\n //>>includeEnd('debug');\n const twoPi = CesiumMath.TWO_PI;\n\n const simplified = angle - Math.floor(angle / twoPi) * twoPi;\n\n if (simplified < -Math.PI) {\n return simplified + twoPi;\n }\n if (simplified >= Math.PI) {\n return simplified - twoPi;\n }\n\n return simplified;\n};\n\n/**\n * Convenience function that clamps a latitude value, in radians, to the range [-Math.PI/2
, Math.PI/2
).\n * Useful for sanitizing data before use in objects requiring correct range.\n *\n * @param {number} angle The latitude value, in radians, to clamp to the range [-Math.PI/2
, Math.PI/2
).\n * @returns {number} The latitude value clamped to the range [-Math.PI/2
, Math.PI/2
).\n *\n * @example\n * // Clamp 108 degrees latitude to 90 degrees latitude\n * const latitude = Cesium.Math.clampToLatitudeRange(Cesium.Math.toRadians(108.0));\n */\nCesiumMath.clampToLatitudeRange = function (angle) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(angle)) {\n throw new DeveloperError(\"angle is required.\");\n }\n //>>includeEnd('debug');\n\n return CesiumMath.clamp(\n angle,\n -1 * CesiumMath.PI_OVER_TWO,\n CesiumMath.PI_OVER_TWO,\n );\n};\n\n/**\n * Produces an angle in the range -Pi <= angle <= Pi which is equivalent to the provided angle.\n *\n * @param {number} angle in radians\n * @returns {number} The angle in the range [-CesiumMath.PI
, CesiumMath.PI
].\n */\nCesiumMath.negativePiToPi = function (angle) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(angle)) {\n throw new DeveloperError(\"angle is required.\");\n }\n //>>includeEnd('debug');\n if (angle >= -CesiumMath.PI && angle <= CesiumMath.PI) {\n // Early exit if the input is already inside the range. This avoids\n // unnecessary math which could introduce floating point error.\n return angle;\n }\n return CesiumMath.zeroToTwoPi(angle + CesiumMath.PI) - CesiumMath.PI;\n};\n\n/**\n * Produces an angle in the range 0 <= angle <= 2Pi which is equivalent to the provided angle.\n *\n * @param {number} angle in radians\n * @returns {number} The angle in the range [0, CesiumMath.TWO_PI
].\n */\nCesiumMath.zeroToTwoPi = function (angle) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(angle)) {\n throw new DeveloperError(\"angle is required.\");\n }\n //>>includeEnd('debug');\n if (angle >= 0 && angle <= CesiumMath.TWO_PI) {\n // Early exit if the input is already inside the range. This avoids\n // unnecessary math which could introduce floating point error.\n return angle;\n }\n const mod = CesiumMath.mod(angle, CesiumMath.TWO_PI);\n if (\n Math.abs(mod) < CesiumMath.EPSILON14 &&\n Math.abs(angle) > CesiumMath.EPSILON14\n ) {\n return CesiumMath.TWO_PI;\n }\n return mod;\n};\n\n/**\n * The modulo operation that also works for negative dividends.\n *\n * @param {number} m The dividend.\n * @param {number} n The divisor.\n * @returns {number} The remainder.\n */\nCesiumMath.mod = function (m, n) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(m)) {\n throw new DeveloperError(\"m is required.\");\n }\n if (!defined(n)) {\n throw new DeveloperError(\"n is required.\");\n }\n if (n === 0.0) {\n throw new DeveloperError(\"divisor cannot be 0.\");\n }\n //>>includeEnd('debug');\n if (CesiumMath.sign(m) === CesiumMath.sign(n) && Math.abs(m) < Math.abs(n)) {\n // Early exit if the input does not need to be modded. This avoids\n // unnecessary math which could introduce floating point error.\n return m;\n }\n\n return ((m % n) + n) % n;\n};\n\n/**\n * Determines if two values are equal using an absolute or relative tolerance test. This is useful\n * to avoid problems due to roundoff error when comparing floating-point values directly. The values are\n * first compared using an absolute tolerance test. If that fails, a relative tolerance test is performed.\n * Use this test if you are unsure of the magnitudes of left and right.\n *\n * @param {number} left The first value to compare.\n * @param {number} right The other value to compare.\n * @param {number} [relativeEpsilon=0] The maximum inclusive delta between left
and right
for the relative tolerance test.\n * @param {number} [absoluteEpsilon=relativeEpsilon] The maximum inclusive delta between left
and right
for the absolute tolerance test.\n * @returns {boolean} true
if the values are equal within the epsilon; otherwise, false
.\n *\n * @example\n * const a = Cesium.Math.equalsEpsilon(0.0, 0.01, Cesium.Math.EPSILON2); // true\n * const b = Cesium.Math.equalsEpsilon(0.0, 0.1, Cesium.Math.EPSILON2); // false\n * const c = Cesium.Math.equalsEpsilon(3699175.1634344, 3699175.2, Cesium.Math.EPSILON7); // true\n * const d = Cesium.Math.equalsEpsilon(3699175.1634344, 3699175.2, Cesium.Math.EPSILON9); // false\n */\nCesiumMath.equalsEpsilon = function (\n left,\n right,\n relativeEpsilon,\n absoluteEpsilon,\n) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(left)) {\n throw new DeveloperError(\"left is required.\");\n }\n if (!defined(right)) {\n throw new DeveloperError(\"right is required.\");\n }\n //>>includeEnd('debug');\n\n relativeEpsilon = defaultValue(relativeEpsilon, 0.0);\n absoluteEpsilon = defaultValue(absoluteEpsilon, relativeEpsilon);\n const absDiff = Math.abs(left - right);\n return (\n absDiff <= absoluteEpsilon ||\n absDiff <= relativeEpsilon * Math.max(Math.abs(left), Math.abs(right))\n );\n};\n\n/**\n * Determines if the left value is less than the right value. If the two values are within\n * absoluteEpsilon
of each other, they are considered equal and this function returns false.\n *\n * @param {number} left The first number to compare.\n * @param {number} right The second number to compare.\n * @param {number} absoluteEpsilon The absolute epsilon to use in comparison.\n * @returns {boolean} true
if left
is less than right
by more than\n * absoluteEpsilon. false
if left
is greater or if the two\n * values are nearly equal.\n */\nCesiumMath.lessThan = function (left, right, absoluteEpsilon) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(left)) {\n throw new DeveloperError(\"first is required.\");\n }\n if (!defined(right)) {\n throw new DeveloperError(\"second is required.\");\n }\n if (!defined(absoluteEpsilon)) {\n throw new DeveloperError(\"absoluteEpsilon is required.\");\n }\n //>>includeEnd('debug');\n return left - right < -absoluteEpsilon;\n};\n\n/**\n * Determines if the left value is less than or equal to the right value. If the two values are within\n * absoluteEpsilon
of each other, they are considered equal and this function returns true.\n *\n * @param {number} left The first number to compare.\n * @param {number} right The second number to compare.\n * @param {number} absoluteEpsilon The absolute epsilon to use in comparison.\n * @returns {boolean} true
if left
is less than right
or if the\n * the values are nearly equal.\n */\nCesiumMath.lessThanOrEquals = function (left, right, absoluteEpsilon) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(left)) {\n throw new DeveloperError(\"first is required.\");\n }\n if (!defined(right)) {\n throw new DeveloperError(\"second is required.\");\n }\n if (!defined(absoluteEpsilon)) {\n throw new DeveloperError(\"absoluteEpsilon is required.\");\n }\n //>>includeEnd('debug');\n return left - right < absoluteEpsilon;\n};\n\n/**\n * Determines if the left value is greater the right value. If the two values are within\n * absoluteEpsilon
of each other, they are considered equal and this function returns false.\n *\n * @param {number} left The first number to compare.\n * @param {number} right The second number to compare.\n * @param {number} absoluteEpsilon The absolute epsilon to use in comparison.\n * @returns {boolean} true
if left
is greater than right
by more than\n * absoluteEpsilon. false
if left
is less or if the two\n * values are nearly equal.\n */\nCesiumMath.greaterThan = function (left, right, absoluteEpsilon) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(left)) {\n throw new DeveloperError(\"first is required.\");\n }\n if (!defined(right)) {\n throw new DeveloperError(\"second is required.\");\n }\n if (!defined(absoluteEpsilon)) {\n throw new DeveloperError(\"absoluteEpsilon is required.\");\n }\n //>>includeEnd('debug');\n return left - right > absoluteEpsilon;\n};\n\n/**\n * Determines if the left value is greater than or equal to the right value. If the two values are within\n * absoluteEpsilon
of each other, they are considered equal and this function returns true.\n *\n * @param {number} left The first number to compare.\n * @param {number} right The second number to compare.\n * @param {number} absoluteEpsilon The absolute epsilon to use in comparison.\n * @returns {boolean} true
if left
is greater than right
or if the\n * the values are nearly equal.\n */\nCesiumMath.greaterThanOrEquals = function (left, right, absoluteEpsilon) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(left)) {\n throw new DeveloperError(\"first is required.\");\n }\n if (!defined(right)) {\n throw new DeveloperError(\"second is required.\");\n }\n if (!defined(absoluteEpsilon)) {\n throw new DeveloperError(\"absoluteEpsilon is required.\");\n }\n //>>includeEnd('debug');\n return left - right > -absoluteEpsilon;\n};\n\nconst factorials = [1];\n\n/**\n * Computes the factorial of the provided number.\n *\n * @param {number} n The number whose factorial is to be computed.\n * @returns {number} The factorial of the provided number or undefined if the number is less than 0.\n *\n * @exception {DeveloperError} A number greater than or equal to 0 is required.\n *\n *\n * @example\n * //Compute 7!, which is equal to 5040\n * const computedFactorial = Cesium.Math.factorial(7);\n *\n * @see {@link http://en.wikipedia.org/wiki/Factorial|Factorial on Wikipedia}\n */\nCesiumMath.factorial = function (n) {\n //>>includeStart('debug', pragmas.debug);\n if (typeof n !== \"number\" || n < 0) {\n throw new DeveloperError(\n \"A number greater than or equal to 0 is required.\",\n );\n }\n //>>includeEnd('debug');\n\n const length = factorials.length;\n if (n >= length) {\n let sum = factorials[length - 1];\n for (let i = length; i <= n; i++) {\n const next = sum * i;\n factorials.push(next);\n sum = next;\n }\n }\n return factorials[n];\n};\n\n/**\n * Increments a number with a wrapping to a minimum value if the number exceeds the maximum value.\n *\n * @param {number} [n] The number to be incremented.\n * @param {number} [maximumValue] The maximum incremented value before rolling over to the minimum value.\n * @param {number} [minimumValue=0.0] The number reset to after the maximum value has been exceeded.\n * @returns {number} The incremented number.\n *\n * @exception {DeveloperError} Maximum value must be greater than minimum value.\n *\n * @example\n * const n = Cesium.Math.incrementWrap(5, 10, 0); // returns 6\n * const m = Cesium.Math.incrementWrap(10, 10, 0); // returns 0\n */\nCesiumMath.incrementWrap = function (n, maximumValue, minimumValue) {\n minimumValue = defaultValue(minimumValue, 0.0);\n\n //>>includeStart('debug', pragmas.debug);\n if (!defined(n)) {\n throw new DeveloperError(\"n is required.\");\n }\n if (maximumValue <= minimumValue) {\n throw new DeveloperError(\"maximumValue must be greater than minimumValue.\");\n }\n //>>includeEnd('debug');\n\n ++n;\n if (n > maximumValue) {\n n = minimumValue;\n }\n return n;\n};\n\n/**\n * Determines if a non-negative integer is a power of two.\n * The maximum allowed input is (2^32)-1 due to 32-bit bitwise operator limitation in Javascript.\n *\n * @param {number} n The integer to test in the range [0, (2^32)-1].\n * @returns {boolean} true
if the number if a power of two; otherwise, false
.\n *\n * @exception {DeveloperError} A number between 0 and (2^32)-1 is required.\n *\n * @example\n * const t = Cesium.Math.isPowerOfTwo(16); // true\n * const f = Cesium.Math.isPowerOfTwo(20); // false\n */\nCesiumMath.isPowerOfTwo = function (n) {\n //>>includeStart('debug', pragmas.debug);\n if (typeof n !== \"number\" || n < 0 || n > 4294967295) {\n throw new DeveloperError(\"A number between 0 and (2^32)-1 is required.\");\n }\n //>>includeEnd('debug');\n\n return n !== 0 && (n & (n - 1)) === 0;\n};\n\n/**\n * Computes the next power-of-two integer greater than or equal to the provided non-negative integer.\n * The maximum allowed input is 2^31 due to 32-bit bitwise operator limitation in Javascript.\n *\n * @param {number} n The integer to test in the range [0, 2^31].\n * @returns {number} The next power-of-two integer.\n *\n * @exception {DeveloperError} A number between 0 and 2^31 is required.\n *\n * @example\n * const n = Cesium.Math.nextPowerOfTwo(29); // 32\n * const m = Cesium.Math.nextPowerOfTwo(32); // 32\n */\nCesiumMath.nextPowerOfTwo = function (n) {\n //>>includeStart('debug', pragmas.debug);\n if (typeof n !== \"number\" || n < 0 || n > 2147483648) {\n throw new DeveloperError(\"A number between 0 and 2^31 is required.\");\n }\n //>>includeEnd('debug');\n\n // From http://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2\n --n;\n n |= n >> 1;\n n |= n >> 2;\n n |= n >> 4;\n n |= n >> 8;\n n |= n >> 16;\n ++n;\n\n return n;\n};\n\n/**\n * Computes the previous power-of-two integer less than or equal to the provided non-negative integer.\n * The maximum allowed input is (2^32)-1 due to 32-bit bitwise operator limitation in Javascript.\n *\n * @param {number} n The integer to test in the range [0, (2^32)-1].\n * @returns {number} The previous power-of-two integer.\n *\n * @exception {DeveloperError} A number between 0 and (2^32)-1 is required.\n *\n * @example\n * const n = Cesium.Math.previousPowerOfTwo(29); // 16\n * const m = Cesium.Math.previousPowerOfTwo(32); // 32\n */\nCesiumMath.previousPowerOfTwo = function (n) {\n //>>includeStart('debug', pragmas.debug);\n if (typeof n !== \"number\" || n < 0 || n > 4294967295) {\n throw new DeveloperError(\"A number between 0 and (2^32)-1 is required.\");\n }\n //>>includeEnd('debug');\n\n n |= n >> 1;\n n |= n >> 2;\n n |= n >> 4;\n n |= n >> 8;\n n |= n >> 16;\n n |= n >> 32;\n\n // The previous bitwise operations implicitly convert to signed 32-bit. Use `>>>` to convert to unsigned\n n = (n >>> 0) - (n >>> 1);\n\n return n;\n};\n\n/**\n * Constraint a value to lie between two values.\n *\n * @param {number} value The value to clamp.\n * @param {number} min The minimum value.\n * @param {number} max The maximum value.\n * @returns {number} The clamped value such that min <= result <= max.\n */\nCesiumMath.clamp = function (value, min, max) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.number(\"value\", value);\n Check.typeOf.number(\"min\", min);\n Check.typeOf.number(\"max\", max);\n //>>includeEnd('debug');\n\n return value < min ? min : value > max ? max : value;\n};\n\nlet randomNumberGenerator = new MersenneTwister();\n\n/**\n * Sets the seed used by the random number generator\n * in {@link CesiumMath#nextRandomNumber}.\n *\n * @param {number} seed An integer used as the seed.\n */\nCesiumMath.setRandomNumberSeed = function (seed) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(seed)) {\n throw new DeveloperError(\"seed is required.\");\n }\n //>>includeEnd('debug');\n\n randomNumberGenerator = new MersenneTwister(seed);\n};\n\n/**\n * Generates a random floating point number in the range of [0.0, 1.0)\n * using a Mersenne twister.\n *\n * @returns {number} A random number in the range of [0.0, 1.0).\n *\n * @see CesiumMath.setRandomNumberSeed\n * @see {@link http://en.wikipedia.org/wiki/Mersenne_twister|Mersenne twister on Wikipedia}\n */\nCesiumMath.nextRandomNumber = function () {\n return randomNumberGenerator.random();\n};\n\n/**\n * Generates a random number between two numbers.\n *\n * @param {number} min The minimum value.\n * @param {number} max The maximum value.\n * @returns {number} A random number between the min and max.\n */\nCesiumMath.randomBetween = function (min, max) {\n return CesiumMath.nextRandomNumber() * (max - min) + min;\n};\n\n/**\n * Computes Math.acos(value)
, but first clamps value
to the range [-1.0, 1.0]\n * so that the function will never return NaN.\n *\n * @param {number} value The value for which to compute acos.\n * @returns {number} The acos of the value if the value is in the range [-1.0, 1.0], or the acos of -1.0 or 1.0,\n * whichever is closer, if the value is outside the range.\n */\nCesiumMath.acosClamped = function (value) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(value)) {\n throw new DeveloperError(\"value is required.\");\n }\n //>>includeEnd('debug');\n return Math.acos(CesiumMath.clamp(value, -1.0, 1.0));\n};\n\n/**\n * Computes Math.asin(value)
, but first clamps value
to the range [-1.0, 1.0]\n * so that the function will never return NaN.\n *\n * @param {number} value The value for which to compute asin.\n * @returns {number} The asin of the value if the value is in the range [-1.0, 1.0], or the asin of -1.0 or 1.0,\n * whichever is closer, if the value is outside the range.\n */\nCesiumMath.asinClamped = function (value) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(value)) {\n throw new DeveloperError(\"value is required.\");\n }\n //>>includeEnd('debug');\n return Math.asin(CesiumMath.clamp(value, -1.0, 1.0));\n};\n\n/**\n * Finds the chord length between two points given the circle's radius and the angle between the points.\n *\n * @param {number} angle The angle between the two points.\n * @param {number} radius The radius of the circle.\n * @returns {number} The chord length.\n */\nCesiumMath.chordLength = function (angle, radius) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(angle)) {\n throw new DeveloperError(\"angle is required.\");\n }\n if (!defined(radius)) {\n throw new DeveloperError(\"radius is required.\");\n }\n //>>includeEnd('debug');\n return 2.0 * radius * Math.sin(angle * 0.5);\n};\n\n/**\n * Finds the logarithm of a number to a base.\n *\n * @param {number} number The number.\n * @param {number} base The base.\n * @returns {number} The result.\n */\nCesiumMath.logBase = function (number, base) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(number)) {\n throw new DeveloperError(\"number is required.\");\n }\n if (!defined(base)) {\n throw new DeveloperError(\"base is required.\");\n }\n //>>includeEnd('debug');\n return Math.log(number) / Math.log(base);\n};\n\n/**\n * Finds the cube root of a number.\n * Returns NaN if number
is not provided.\n *\n * @function\n * @param {number} [number] The number.\n * @returns {number} The result.\n */\nCesiumMath.cbrt = defaultValue(Math.cbrt, function cbrt(number) {\n const result = Math.pow(Math.abs(number), 1.0 / 3.0);\n return number < 0.0 ? -result : result;\n});\n\n/**\n * Finds the base 2 logarithm of a number.\n *\n * @function\n * @param {number} number The number.\n * @returns {number} The result.\n */\nCesiumMath.log2 = defaultValue(Math.log2, function log2(number) {\n return Math.log(number) * Math.LOG2E;\n});\n\n/**\n * Calculate the fog impact at a given distance. Useful for culling.\n * Matches the equation in `fog.glsl`\n * @private\n */\nCesiumMath.fog = function (distanceToCamera, density) {\n const scalar = distanceToCamera * density;\n return 1.0 - Math.exp(-(scalar * scalar));\n};\n\n/**\n * Computes a fast approximation of Atan for input in the range [-1, 1].\n *\n * Based on Michal Drobot's approximation from ShaderFastLibs,\n * which in turn is based on \"Efficient approximations for the arctangent function,\"\n * Rajan, S. Sichun Wang Inkol, R. Joyal, A., May 2006.\n * Adapted from ShaderFastLibs under MIT License.\n *\n * @param {number} x An input number in the range [-1, 1]\n * @returns {number} An approximation of atan(x)\n */\nCesiumMath.fastApproximateAtan = function (x) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.number(\"x\", x);\n //>>includeEnd('debug');\n\n return x * (-0.1784 * Math.abs(x) - 0.0663 * x * x + 1.0301);\n};\n\n/**\n * Computes a fast approximation of Atan2(x, y) for arbitrary input scalars.\n *\n * Range reduction math based on nvidia's cg reference implementation: http://developer.download.nvidia.com/cg/atan2.html\n *\n * @param {number} x An input number that isn't zero if y is zero.\n * @param {number} y An input number that isn't zero if x is zero.\n * @returns {number} An approximation of atan2(x, y)\n */\nCesiumMath.fastApproximateAtan2 = function (x, y) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.number(\"x\", x);\n Check.typeOf.number(\"y\", y);\n //>>includeEnd('debug');\n\n // atan approximations are usually only reliable over [-1, 1]\n // So reduce the range by flipping whether x or y is on top based on which is bigger.\n let opposite;\n let t = Math.abs(x); // t used as swap and atan result.\n opposite = Math.abs(y);\n const adjacent = Math.max(t, opposite);\n opposite = Math.min(t, opposite);\n\n const oppositeOverAdjacent = opposite / adjacent;\n //>>includeStart('debug', pragmas.debug);\n if (isNaN(oppositeOverAdjacent)) {\n throw new DeveloperError(\"either x or y must be nonzero\");\n }\n //>>includeEnd('debug');\n t = CesiumMath.fastApproximateAtan(oppositeOverAdjacent);\n\n // Undo range reduction\n t = Math.abs(y) > Math.abs(x) ? CesiumMath.PI_OVER_TWO - t : t;\n t = x < 0.0 ? CesiumMath.PI - t : t;\n t = y < 0.0 ? -t : t;\n return t;\n};\nexport default CesiumMath;\n","/*\n https://github.com/banksean wrapped Makoto Matsumoto and Takuji Nishimura's code in a namespace\n so it's better encapsulated. Now you can have multiple random number generators\n and they won't stomp all over eachother's state.\n\n If you want to use this as a substitute for Math.random(), use the random()\n method like so:\n\n var m = new MersenneTwister();\n var randomNumber = m.random();\n\n You can also call the other genrand_{foo}() methods on the instance.\n\n If you want to use a specific seed in order to get a repeatable random\n sequence, pass an integer into the constructor:\n\n var m = new MersenneTwister(123);\n\n and that will always produce the same random sequence.\n\n Sean McCullough (banksean@gmail.com)\n*/\n\n/*\n A C-program for MT19937, with initialization improved 2002/1/26.\n Coded by Takuji Nishimura and Makoto Matsumoto.\n\n Before using, initialize the state by using init_seed(seed)\n or init_by_array(init_key, key_length).\n\n Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,\n All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions\n are met:\n\n 1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. The names of its contributors may not be used to endorse or promote\n products derived from this software without specific prior written\n permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\n Any feedback is very welcome.\n http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html\n email: m-mat @ math.sci.hiroshima-u.ac.jp (remove space)\n*/\n\nvar MersenneTwister = function(seed) {\n\tif (seed == undefined) {\n\t\tseed = new Date().getTime();\n\t}\n\n\t/* Period parameters */\n\tthis.N = 624;\n\tthis.M = 397;\n\tthis.MATRIX_A = 0x9908b0df; /* constant vector a */\n\tthis.UPPER_MASK = 0x80000000; /* most significant w-r bits */\n\tthis.LOWER_MASK = 0x7fffffff; /* least significant r bits */\n\n\tthis.mt = new Array(this.N); /* the array for the state vector */\n\tthis.mti=this.N+1; /* mti==N+1 means mt[N] is not initialized */\n\n\tif (seed.constructor == Array) {\n\t\tthis.init_by_array(seed, seed.length);\n\t}\n\telse {\n\t\tthis.init_seed(seed);\n\t}\n}\n\n/* initializes mt[N] with a seed */\n/* origin name init_genrand */\nMersenneTwister.prototype.init_seed = function(s) {\n\tthis.mt[0] = s >>> 0;\n\tfor (this.mti=1; this.mti>> 30);\n\t\tthis.mt[this.mti] = (((((s & 0xffff0000) >>> 16) * 1812433253) << 16) + (s & 0x0000ffff) * 1812433253)\n\t\t+ this.mti;\n\t\t/* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */\n\t\t/* In the previous versions, MSBs of the seed affect */\n\t\t/* only MSBs of the array mt[]. */\n\t\t/* 2002/01/09 modified by Makoto Matsumoto */\n\t\tthis.mt[this.mti] >>>= 0;\n\t\t/* for >32 bit machines */\n\t}\n}\n\n/* initialize by an array with array-length */\n/* init_key is the array for initializing keys */\n/* key_length is its length */\n/* slight change for C++, 2004/2/26 */\nMersenneTwister.prototype.init_by_array = function(init_key, key_length) {\n\tvar i, j, k;\n\tthis.init_seed(19650218);\n\ti=1; j=0;\n\tk = (this.N>key_length ? this.N : key_length);\n\tfor (; k; k--) {\n\t\tvar s = this.mt[i-1] ^ (this.mt[i-1] >>> 30)\n\t\tthis.mt[i] = (this.mt[i] ^ (((((s & 0xffff0000) >>> 16) * 1664525) << 16) + ((s & 0x0000ffff) * 1664525)))\n\t\t+ init_key[j] + j; /* non linear */\n\t\tthis.mt[i] >>>= 0; /* for WORDSIZE > 32 machines */\n\t\ti++; j++;\n\t\tif (i>=this.N) { this.mt[0] = this.mt[this.N-1]; i=1; }\n\t\tif (j>=key_length) j=0;\n\t}\n\tfor (k=this.N-1; k; k--) {\n\t\tvar s = this.mt[i-1] ^ (this.mt[i-1] >>> 30);\n\t\tthis.mt[i] = (this.mt[i] ^ (((((s & 0xffff0000) >>> 16) * 1566083941) << 16) + (s & 0x0000ffff) * 1566083941))\n\t\t- i; /* non linear */\n\t\tthis.mt[i] >>>= 0; /* for WORDSIZE > 32 machines */\n\t\ti++;\n\t\tif (i>=this.N) { this.mt[0] = this.mt[this.N-1]; i=1; }\n\t}\n\n\tthis.mt[0] = 0x80000000; /* MSB is 1; assuring non-zero initial array */\n}\n\n/* generates a random number on [0,0xffffffff]-interval */\n/* origin name genrand_int32 */\nMersenneTwister.prototype.random_int = function() {\n\tvar y;\n\tvar mag01 = new Array(0x0, this.MATRIX_A);\n\t/* mag01[x] = x * MATRIX_A for x=0,1 */\n\n\tif (this.mti >= this.N) { /* generate N words at one time */\n\t\tvar kk;\n\n\t\tif (this.mti == this.N+1) /* if init_seed() has not been called, */\n\t\t\tthis.init_seed(5489); /* a default initial seed is used */\n\n\t\tfor (kk=0;kk>> 1) ^ mag01[y & 0x1];\n\t\t}\n\t\tfor (;kk>> 1) ^ mag01[y & 0x1];\n\t\t}\n\t\ty = (this.mt[this.N-1]&this.UPPER_MASK)|(this.mt[0]&this.LOWER_MASK);\n\t\tthis.mt[this.N-1] = this.mt[this.M-1] ^ (y >>> 1) ^ mag01[y & 0x1];\n\n\t\tthis.mti = 0;\n\t}\n\n\ty = this.mt[this.mti++];\n\n\t/* Tempering */\n\ty ^= (y >>> 11);\n\ty ^= (y << 7) & 0x9d2c5680;\n\ty ^= (y << 15) & 0xefc60000;\n\ty ^= (y >>> 18);\n\n\treturn y >>> 0;\n}\n\n/* generates a random number on [0,0x7fffffff]-interval */\n/* origin name genrand_int31 */\nMersenneTwister.prototype.random_int31 = function() {\n\treturn (this.random_int()>>>1);\n}\n\n/* generates a random number on [0,1]-real-interval */\n/* origin name genrand_real1 */\nMersenneTwister.prototype.random_incl = function() {\n\treturn this.random_int()*(1.0/4294967295.0);\n\t/* divided by 2^32-1 */\n}\n\n/* generates a random number on [0,1)-real-interval */\nMersenneTwister.prototype.random = function() {\n\treturn this.random_int()*(1.0/4294967296.0);\n\t/* divided by 2^32 */\n}\n\n/* generates a random number on (0,1)-real-interval */\n/* origin name genrand_real3 */\nMersenneTwister.prototype.random_excl = function() {\n\treturn (this.random_int() + 0.5)*(1.0/4294967296.0);\n\t/* divided by 2^32 */\n}\n\n/* generates a random number on [0,1) with 53-bit resolution*/\n/* origin name genrand_res53 */\nMersenneTwister.prototype.random_long = function() {\n\tvar a=this.random_int()>>>5, b=this.random_int()>>>6;\n\treturn(a*67108864.0+b)*(1.0/9007199254740992.0);\n}\n\n/* These real versions are due to Isaku Wada, 2002/01/09 added */\n\nmodule.exports = MersenneTwister;\n","import defined from \"./defined.js\";\nimport DeveloperError from \"./DeveloperError.js\";\n\n/**\n * Contains functions for checking that supplied arguments are of a specified type\n * or meet specified conditions\n */\nconst Check = {};\n\n/**\n * Contains type checking functions, all using the typeof operator\n */\nCheck.typeOf = {};\n\nfunction getUndefinedErrorMessage(name) {\n return `${name} is required, actual value was undefined`;\n}\n\nfunction getFailedTypeErrorMessage(actual, expected, name) {\n return `Expected ${name} to be typeof ${expected}, actual typeof was ${actual}`;\n}\n\n/**\n * Throws if test is not defined\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value that is to be checked\n * @exception {DeveloperError} test must be defined\n */\nCheck.defined = function (name, test) {\n if (!defined(test)) {\n throw new DeveloperError(getUndefinedErrorMessage(name));\n }\n};\n\n/**\n * Throws if test is not typeof 'function'\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'function'\n */\nCheck.typeOf.func = function (name, test) {\n if (typeof test !== \"function\") {\n throw new DeveloperError(\n getFailedTypeErrorMessage(typeof test, \"function\", name),\n );\n }\n};\n\n/**\n * Throws if test is not typeof 'string'\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'string'\n */\nCheck.typeOf.string = function (name, test) {\n if (typeof test !== \"string\") {\n throw new DeveloperError(\n getFailedTypeErrorMessage(typeof test, \"string\", name),\n );\n }\n};\n\n/**\n * Throws if test is not typeof 'number'\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'number'\n */\nCheck.typeOf.number = function (name, test) {\n if (typeof test !== \"number\") {\n throw new DeveloperError(\n getFailedTypeErrorMessage(typeof test, \"number\", name),\n );\n }\n};\n\n/**\n * Throws if test is not typeof 'number' and less than limit\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @param {number} limit The limit value to compare against\n * @exception {DeveloperError} test must be typeof 'number' and less than limit\n */\nCheck.typeOf.number.lessThan = function (name, test, limit) {\n Check.typeOf.number(name, test);\n if (test >= limit) {\n throw new DeveloperError(\n `Expected ${name} to be less than ${limit}, actual value was ${test}`,\n );\n }\n};\n\n/**\n * Throws if test is not typeof 'number' and less than or equal to limit\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @param {number} limit The limit value to compare against\n * @exception {DeveloperError} test must be typeof 'number' and less than or equal to limit\n */\nCheck.typeOf.number.lessThanOrEquals = function (name, test, limit) {\n Check.typeOf.number(name, test);\n if (test > limit) {\n throw new DeveloperError(\n `Expected ${name} to be less than or equal to ${limit}, actual value was ${test}`,\n );\n }\n};\n\n/**\n * Throws if test is not typeof 'number' and greater than limit\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @param {number} limit The limit value to compare against\n * @exception {DeveloperError} test must be typeof 'number' and greater than limit\n */\nCheck.typeOf.number.greaterThan = function (name, test, limit) {\n Check.typeOf.number(name, test);\n if (test <= limit) {\n throw new DeveloperError(\n `Expected ${name} to be greater than ${limit}, actual value was ${test}`,\n );\n }\n};\n\n/**\n * Throws if test is not typeof 'number' and greater than or equal to limit\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @param {number} limit The limit value to compare against\n * @exception {DeveloperError} test must be typeof 'number' and greater than or equal to limit\n */\nCheck.typeOf.number.greaterThanOrEquals = function (name, test, limit) {\n Check.typeOf.number(name, test);\n if (test < limit) {\n throw new DeveloperError(\n `Expected ${name} to be greater than or equal to ${limit}, actual value was ${test}`,\n );\n }\n};\n\n/**\n * Throws if test is not typeof 'object'\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'object'\n */\nCheck.typeOf.object = function (name, test) {\n if (typeof test !== \"object\") {\n throw new DeveloperError(\n getFailedTypeErrorMessage(typeof test, \"object\", name),\n );\n }\n};\n\n/**\n * Throws if test is not typeof 'boolean'\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'boolean'\n */\nCheck.typeOf.bool = function (name, test) {\n if (typeof test !== \"boolean\") {\n throw new DeveloperError(\n getFailedTypeErrorMessage(typeof test, \"boolean\", name),\n );\n }\n};\n\n/**\n * Throws if test is not typeof 'bigint'\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'bigint'\n */\nCheck.typeOf.bigint = function (name, test) {\n if (typeof test !== \"bigint\") {\n throw new DeveloperError(\n getFailedTypeErrorMessage(typeof test, \"bigint\", name),\n );\n }\n};\n\n/**\n * Throws if test1 and test2 is not typeof 'number' and not equal in value\n *\n * @param {string} name1 The name of the first variable being tested\n * @param {string} name2 The name of the second variable being tested against\n * @param {*} test1 The value to test\n * @param {*} test2 The value to test against\n * @exception {DeveloperError} test1 and test2 should be type of 'number' and be equal in value\n */\nCheck.typeOf.number.equals = function (name1, name2, test1, test2) {\n Check.typeOf.number(name1, test1);\n Check.typeOf.number(name2, test2);\n if (test1 !== test2) {\n throw new DeveloperError(\n `${name1} must be equal to ${name2}, the actual values are ${test1} and ${test2}`,\n );\n }\n};\nexport default Check;\n","/**\n * @function\n *\n * @param {*} value The object.\n * @returns {boolean} Returns true if the object is defined, returns false otherwise.\n *\n * @example\n * if (Cesium.defined(positions)) {\n * doSomething();\n * } else {\n * doSomethingElse();\n * }\n */\nfunction defined(value) {\n return value !== undefined && value !== null;\n}\nexport default defined;\n","import defined from \"./defined.js\";\n\n/**\n * Constructs an exception object that is thrown due to a developer error, e.g., invalid argument,\n * argument out of range, etc. This exception should only be thrown during development;\n * it usually indicates a bug in the calling code. This exception should never be\n * caught; instead the calling code should strive not to generate it.\n *
\n * On the other hand, a {@link RuntimeError} indicates an exception that may\n * be thrown at runtime, e.g., out of memory, that the calling code should be prepared\n * to catch.\n *\n * @alias DeveloperError\n * @constructor\n * @extends Error\n *\n * @param {string} [message] The error message for this exception.\n *\n * @see RuntimeError\n */\nfunction DeveloperError(message) {\n /**\n * 'DeveloperError' indicating that this exception was thrown due to a developer error.\n * @type {string}\n * @readonly\n */\n this.name = \"DeveloperError\";\n\n /**\n * The explanation for why this exception was thrown.\n * @type {string}\n * @readonly\n */\n this.message = message;\n\n //Browsers such as IE don't have a stack property until you actually throw the error.\n let stack;\n try {\n throw new Error();\n } catch (e) {\n stack = e.stack;\n }\n\n /**\n * The stack trace of this exception, if available.\n * @type {string}\n * @readonly\n */\n this.stack = stack;\n}\n\nif (defined(Object.create)) {\n DeveloperError.prototype = Object.create(Error.prototype);\n DeveloperError.prototype.constructor = DeveloperError;\n}\n\nDeveloperError.prototype.toString = function () {\n let str = `${this.name}: ${this.message}`;\n\n if (defined(this.stack)) {\n str += `\\n${this.stack.toString()}`;\n }\n\n return str;\n};\n\n/**\n * @private\n */\nDeveloperError.throwInstantiationError = function () {\n throw new DeveloperError(\n \"This function defines an interface and should not be called directly.\",\n );\n};\nexport default DeveloperError;\n","/**\n * Returns the first parameter if not undefined, otherwise the second parameter.\n * Useful for setting a default value for a parameter.\n *\n * @function\n *\n * @param {*} a\n * @param {*} b\n * @returns {*} Returns the first parameter if not undefined, otherwise the second parameter.\n *\n * @example\n * param = Cesium.defaultValue(param, 'default');\n */\nfunction defaultValue(a, b) {\n if (a !== undefined && a !== null) {\n return a;\n }\n return b;\n}\n\n/**\n * A frozen empty object that can be used as the default value for options passed as\n * an object literal.\n * @type {object}\n * @memberof defaultValue\n */\ndefaultValue.EMPTY_OBJECT = Object.freeze({});\n\nexport default defaultValue;\n"],"names":["$parcel$interopDefault","a","__esModule","default","$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","parcelRegister","$06f1857ea76fc69e$export$2e2bcd8739ae039","$bnB1j","$3pzcG","$8w8ZH","$jQJji","$1vHsR","$06f1857ea76fc69e$var$CesiumMath","EPSILON1","EPSILON2","EPSILON3","EPSILON4","EPSILON5","EPSILON6","EPSILON7","EPSILON8","EPSILON9","EPSILON10","EPSILON11","EPSILON12","EPSILON13","EPSILON14","EPSILON15","EPSILON16","EPSILON17","EPSILON18","EPSILON19","EPSILON20","EPSILON21","GRAVITATIONALPARAMETER","SOLAR_RADIUS","LUNAR_RADIUS","SIXTY_FOUR_KILOBYTES","FOUR_GIGABYTES","sign","Math","value","signNotZero","toSNorm","rangeMaximum","round","clamp","fromSNorm","normalize","rangeMinimum","max","sinh","exp","cosh","lerp","p","q","time","PI","ONE_OVER_PI","PI_OVER_TWO","PI_OVER_THREE","PI_OVER_FOUR","PI_OVER_SIX","THREE_PI_OVER_TWO","TWO_PI","ONE_OVER_TWO_PI","RADIANS_PER_DEGREE","DEGREES_PER_RADIAN","RADIANS_PER_ARCSECOND","toRadians","degrees","toDegrees","radians","convertLongitudeRange","angle","twoPi","simplified","floor","clampToLatitudeRange","negativePiToPi","zeroToTwoPi","mod","abs","m","equalsEpsilon","left","right","relativeEpsilon","absoluteEpsilon","absDiff","lessThan","lessThanOrEquals","greaterThan","greaterThanOrEquals","$06f1857ea76fc69e$var$factorials","factorial","length","sum","i","next","push","incrementWrap","maximumValue","minimumValue","isPowerOfTwo","nextPowerOfTwo","previousPowerOfTwo","min","typeOf","number","$06f1857ea76fc69e$var$randomNumberGenerator","setRandomNumberSeed","seed","nextRandomNumber","random","randomBetween","acosClamped","acos","asinClamped","asin","chordLength","radius","sin","logBase","base","log","cbrt","result","pow","log2","LOG2E","fog","distanceToCamera","density","scalar","fastApproximateAtan","x","fastApproximateAtan2","y","opposite","t","adjacent","oppositeOverAdjacent","isNaN","$848e8f2059b51b3f$var$MersenneTwister","undefined","Date","getTime","N","M","MATRIX_A","UPPER_MASK","LOWER_MASK","mt","Array","mti","constructor","init_by_array","init_seed","prototype","init_key","key_length","j","k","random_int","kk","mag01","random_int31","random_incl","random_excl","random_long","b","$27bf03924417ee9b$export$2e2bcd8739ae039","$27bf03924417ee9b$var$Check","$27bf03924417ee9b$var$getFailedTypeErrorMessage","actual","expected","name","defined","test","func","string","limit","object","bool","bigint","equals","name1","name2","test1","test2","$e736054cd130cc46$export$2e2bcd8739ae039","$119a66d9b8a89652$export$2e2bcd8739ae039","$119a66d9b8a89652$var$DeveloperError","message","stack","create","toString","str","throwInstantiationError","$633849ec333ae991$var$defaultValue","$633849ec333ae991$export$2e2bcd8739ae039","EMPTY_OBJECT","freeze"],"version":3,"file":"cesium-binoculars.b863545a.js.map"}
\ No newline at end of file
+{"mappings":"A,S,E,C,E,O,G,E,U,C,E,O,C,C,C,S,E,C,C,C,C,C,C,C,E,O,c,C,E,E,C,I,E,I,E,W,C,E,a,C,C,E,C,I,E,W,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,I,E,E,Q,C,E,Q,S,C,C,C,E,E,E,O,C,U,I,G,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SCYA,IAAM,EAAa,CAAC,CAOpB,CAAA,EAAW,QAAQ,CAAG,GAOtB,EAAW,QAAQ,CAAG,IAOtB,EAAW,QAAQ,CAAG,KAOtB,EAAW,QAAQ,CAAG,KAOtB,EAAW,QAAQ,CAAG,KAOtB,EAAW,QAAQ,CAAG,KAOtB,EAAW,QAAQ,CAAG,KAOtB,EAAW,QAAQ,CAAG,KAOtB,EAAW,QAAQ,CAAG,KAOtB,EAAW,SAAS,CAAG,MAOvB,EAAW,SAAS,CAAG,MAOvB,EAAW,SAAS,CAAG,MAOvB,EAAW,SAAS,CAAG,MAOvB,EAAW,SAAS,CAAG,MAOvB,EAAW,SAAS,CAAG,MAOvB,EAAW,SAAS,CAAG,MAOvB,EAAW,SAAS,CAAG,MAOvB,EAAW,SAAS,CAAG,MAOvB,EAAW,SAAS,CAAG,MAOvB,EAAW,SAAS,CAAG,MAOvB,EAAW,SAAS,CAAG,MAQvB,EAAW,sBAAsB,CAAG,aAOpC,EAAW,YAAY,CAAG,OAS1B,EAAW,YAAY,CAAG,QAO1B,EAAW,oBAAoB,CAAG,MAOlC,EAAW,cAAc,CAAG,YAU5B,EAAW,IAAI,CAAG,AAAA,CAAA,EAAA,EAAA,OAAW,AAAX,EAAa,KAAK,IAAI,CAAE,SAAc,CAAK,SAE3D,AAAI,AAAU,GADd,CAAA,EAAQ,CAAC,CAAA,GACU,GAAU,EAEpB,EAEF,EAAQ,EAAI,EAAI,EACzB,GASA,EAAW,WAAW,CAAG,SAAU,CAAK,EACtC,OAAO,EAAQ,EAAM,GAAO,CAC9B,EAUA,EAAW,OAAO,CAAG,SAAU,CA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","sources":["","node_modules/@cesium/engine/Source/Core/Math.js","node_modules/mersenne-twister/src/mersenne-twister.js","node_modules/@cesium/engine/Source/Core/Check.js","node_modules/@cesium/engine/Source/Core/defined.js","node_modules/@cesium/engine/Source/Core/DeveloperError.js","node_modules/@cesium/engine/Source/Core/defaultValue.js"],"sourcesContent":["\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\n\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequire94c2\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequire94c2\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\nparcelRegister(\"AXvpI\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $06f1857ea76fc69e$export$2e2bcd8739ae039);\n\nvar $bnB1j = parcelRequire(\"bnB1j\");\n\nvar $3pzcG = parcelRequire(\"3pzcG\");\n\nvar $8w8ZH = parcelRequire(\"8w8ZH\");\n\nvar $jQJji = parcelRequire(\"jQJji\");\n\nvar $1vHsR = parcelRequire(\"1vHsR\");\n/**\n * Math functions.\n *\n * @exports CesiumMath\n * @alias Math\n */ const $06f1857ea76fc69e$var$CesiumMath = {};\n/**\n * 0.1\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.EPSILON1 = 0.1;\n/**\n * 0.01\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.EPSILON2 = 0.01;\n/**\n * 0.001\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.EPSILON3 = 0.001;\n/**\n * 0.0001\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.EPSILON4 = 0.0001;\n/**\n * 0.00001\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.EPSILON5 = 0.00001;\n/**\n * 0.000001\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.EPSILON6 = 0.000001;\n/**\n * 0.0000001\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.EPSILON7 = 0.0000001;\n/**\n * 0.00000001\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.EPSILON8 = 0.00000001;\n/**\n * 0.000000001\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.EPSILON9 = 0.000000001;\n/**\n * 0.0000000001\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.EPSILON10 = 0.0000000001;\n/**\n * 0.00000000001\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.EPSILON11 = 0.00000000001;\n/**\n * 0.000000000001\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.EPSILON12 = 0.000000000001;\n/**\n * 0.0000000000001\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.EPSILON13 = 0.0000000000001;\n/**\n * 0.00000000000001\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.EPSILON14 = 0.00000000000001;\n/**\n * 0.000000000000001\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.EPSILON15 = 0.000000000000001;\n/**\n * 0.0000000000000001\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.EPSILON16 = 0.0000000000000001;\n/**\n * 0.00000000000000001\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.EPSILON17 = 0.00000000000000001;\n/**\n * 0.000000000000000001\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.EPSILON18 = 0.000000000000000001;\n/**\n * 0.0000000000000000001\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.EPSILON19 = 0.0000000000000000001;\n/**\n * 0.00000000000000000001\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.EPSILON20 = 0.00000000000000000001;\n/**\n * 0.000000000000000000001\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.EPSILON21 = 0.000000000000000000001;\n/**\n * The gravitational parameter of the Earth in meters cubed\n * per second squared as defined by the WGS84 model: 3.986004418e14\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.GRAVITATIONALPARAMETER = 3.986004418e14;\n/**\n * Radius of the sun in meters: 6.955e8\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.SOLAR_RADIUS = 6.955e8;\n/**\n * The mean radius of the moon, according to the \"Report of the IAU/IAG Working Group on\n * Cartographic Coordinates and Rotational Elements of the Planets and satellites: 2000\",\n * Celestial Mechanics 82: 83-110, 2002.\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.LUNAR_RADIUS = 1737400.0;\n/**\n * 64 * 1024\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.SIXTY_FOUR_KILOBYTES = 65536;\n/**\n * 4 * 1024 * 1024 * 1024\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.FOUR_GIGABYTES = 4294967296;\n/**\n * Returns the sign of the value; 1 if the value is positive, -1 if the value is\n * negative, or 0 if the value is 0.\n *\n * @function\n * @param {number} value The value to return the sign of.\n * @returns {number} The sign of value.\n */ $06f1857ea76fc69e$var$CesiumMath.sign = (0, $8w8ZH.default)(Math.sign, function sign(value) {\n value = +value; // coerce to number\n if (value === 0 || value !== value) // zero or NaN\n return value;\n return value > 0 ? 1 : -1;\n});\n/**\n * Returns 1.0 if the given value is positive or zero, and -1.0 if it is negative.\n * This is similar to {@link CesiumMath#sign} except that returns 1.0 instead of\n * 0.0 when the input value is 0.0.\n * @param {number} value The value to return the sign of.\n * @returns {number} The sign of value.\n */ $06f1857ea76fc69e$var$CesiumMath.signNotZero = function(value) {\n return value < 0.0 ? -1 : 1.0;\n};\n/**\n * Converts a scalar value in the range [-1.0, 1.0] to a SNORM in the range [0, rangeMaximum]\n * @param {number} value The scalar value in the range [-1.0, 1.0]\n * @param {number} [rangeMaximum=255] The maximum value in the mapped range, 255 by default.\n * @returns {number} A SNORM value, where 0 maps to -1.0 and rangeMaximum maps to 1.0.\n *\n * @see CesiumMath.fromSNorm\n */ $06f1857ea76fc69e$var$CesiumMath.toSNorm = function(value, rangeMaximum) {\n rangeMaximum = (0, $8w8ZH.default)(rangeMaximum, 255);\n return Math.round(($06f1857ea76fc69e$var$CesiumMath.clamp(value, -1, 1.0) * 0.5 + 0.5) * rangeMaximum);\n};\n/**\n * Converts a SNORM value in the range [0, rangeMaximum] to a scalar in the range [-1.0, 1.0].\n * @param {number} value SNORM value in the range [0, rangeMaximum]\n * @param {number} [rangeMaximum=255] The maximum value in the SNORM range, 255 by default.\n * @returns {number} Scalar in the range [-1.0, 1.0].\n *\n * @see CesiumMath.toSNorm\n */ $06f1857ea76fc69e$var$CesiumMath.fromSNorm = function(value, rangeMaximum) {\n rangeMaximum = (0, $8w8ZH.default)(rangeMaximum, 255);\n return $06f1857ea76fc69e$var$CesiumMath.clamp(value, 0.0, rangeMaximum) / rangeMaximum * 2.0 - 1.0;\n};\n/**\n * Converts a scalar value in the range [rangeMinimum, rangeMaximum] to a scalar in the range [0.0, 1.0]\n * @param {number} value The scalar value in the range [rangeMinimum, rangeMaximum]\n * @param {number} rangeMinimum The minimum value in the mapped range.\n * @param {number} rangeMaximum The maximum value in the mapped range.\n * @returns {number} A scalar value, where rangeMinimum maps to 0.0 and rangeMaximum maps to 1.0.\n */ $06f1857ea76fc69e$var$CesiumMath.normalize = function(value, rangeMinimum, rangeMaximum) {\n rangeMaximum = Math.max(rangeMaximum - rangeMinimum, 0.0);\n return rangeMaximum === 0.0 ? 0.0 : $06f1857ea76fc69e$var$CesiumMath.clamp((value - rangeMinimum) / rangeMaximum, 0.0, 1.0);\n};\n/**\n * Returns the hyperbolic sine of a number.\n * The hyperbolic sine of value is defined to be\n * (ex - e-x)/2.0\n * where e is Euler's number, approximately 2.71828183.\n *\n * Special cases:\n *
\n * - If the argument is NaN, then the result is NaN.
\n *\n * - If the argument is infinite, then the result is an infinity\n * with the same sign as the argument.
\n *\n * - If the argument is zero, then the result is a zero with the\n * same sign as the argument.
\n *
\n *\n *\n * @function\n * @param {number} value The number whose hyperbolic sine is to be returned.\n * @returns {number} The hyperbolic sine of value
.\n */ $06f1857ea76fc69e$var$CesiumMath.sinh = (0, $8w8ZH.default)(Math.sinh, function sinh(value) {\n return (Math.exp(value) - Math.exp(-value)) / 2.0;\n});\n/**\n * Returns the hyperbolic cosine of a number.\n * The hyperbolic cosine of value is defined to be\n * (ex + e-x)/2.0\n * where e is Euler's number, approximately 2.71828183.\n *\n * Special cases:\n *
\n * - If the argument is NaN, then the result is NaN.
\n *\n * - If the argument is infinite, then the result is positive infinity.
\n *\n * - If the argument is zero, then the result is 1.0.
\n *
\n *\n *\n * @function\n * @param {number} value The number whose hyperbolic cosine is to be returned.\n * @returns {number} The hyperbolic cosine of value
.\n */ $06f1857ea76fc69e$var$CesiumMath.cosh = (0, $8w8ZH.default)(Math.cosh, function cosh(value) {\n return (Math.exp(value) + Math.exp(-value)) / 2.0;\n});\n/**\n * Computes the linear interpolation of two values.\n *\n * @param {number} p The start value to interpolate.\n * @param {number} q The end value to interpolate.\n * @param {number} time The time of interpolation generally in the range [0.0, 1.0]
.\n * @returns {number} The linearly interpolated value.\n *\n * @example\n * const n = Cesium.Math.lerp(0.0, 2.0, 0.5); // returns 1.0\n */ $06f1857ea76fc69e$var$CesiumMath.lerp = function(p, q, time) {\n return (1.0 - time) * p + time * q;\n};\n/**\n * pi\n *\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.PI = Math.PI;\n/**\n * 1/pi\n *\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.ONE_OVER_PI = 1.0 / Math.PI;\n/**\n * pi/2\n *\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.PI_OVER_TWO = Math.PI / 2.0;\n/**\n * pi/3\n *\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.PI_OVER_THREE = Math.PI / 3.0;\n/**\n * pi/4\n *\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.PI_OVER_FOUR = Math.PI / 4.0;\n/**\n * pi/6\n *\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.PI_OVER_SIX = Math.PI / 6.0;\n/**\n * 3pi/2\n *\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.THREE_PI_OVER_TWO = 3.0 * Math.PI / 2.0;\n/**\n * 2pi\n *\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.TWO_PI = 2.0 * Math.PI;\n/**\n * 1/2pi\n *\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.ONE_OVER_TWO_PI = 1.0 / (2.0 * Math.PI);\n/**\n * The number of radians in a degree.\n *\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.RADIANS_PER_DEGREE = Math.PI / 180.0;\n/**\n * The number of degrees in a radian.\n *\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.DEGREES_PER_RADIAN = 180.0 / Math.PI;\n/**\n * The number of radians in an arc second.\n *\n * @type {number}\n * @constant\n */ $06f1857ea76fc69e$var$CesiumMath.RADIANS_PER_ARCSECOND = $06f1857ea76fc69e$var$CesiumMath.RADIANS_PER_DEGREE / 3600.0;\n/**\n * Converts degrees to radians.\n * @param {number} degrees The angle to convert in degrees.\n * @returns {number} The corresponding angle in radians.\n */ $06f1857ea76fc69e$var$CesiumMath.toRadians = function(degrees) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(degrees)) throw new (0, $1vHsR.default)(\"degrees is required.\");\n //>>includeEnd('debug');\n return degrees * $06f1857ea76fc69e$var$CesiumMath.RADIANS_PER_DEGREE;\n};\n/**\n * Converts radians to degrees.\n * @param {number} radians The angle to convert in radians.\n * @returns {number} The corresponding angle in degrees.\n */ $06f1857ea76fc69e$var$CesiumMath.toDegrees = function(radians) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(radians)) throw new (0, $1vHsR.default)(\"radians is required.\");\n //>>includeEnd('debug');\n return radians * $06f1857ea76fc69e$var$CesiumMath.DEGREES_PER_RADIAN;\n};\n/**\n * Converts a longitude value, in radians, to the range [-Math.PI
, Math.PI
).\n *\n * @param {number} angle The longitude value, in radians, to convert to the range [-Math.PI
, Math.PI
).\n * @returns {number} The equivalent longitude value in the range [-Math.PI
, Math.PI
).\n *\n * @example\n * // Convert 270 degrees to -90 degrees longitude\n * const longitude = Cesium.Math.convertLongitudeRange(Cesium.Math.toRadians(270.0));\n */ $06f1857ea76fc69e$var$CesiumMath.convertLongitudeRange = function(angle) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(angle)) throw new (0, $1vHsR.default)(\"angle is required.\");\n //>>includeEnd('debug');\n const twoPi = $06f1857ea76fc69e$var$CesiumMath.TWO_PI;\n const simplified = angle - Math.floor(angle / twoPi) * twoPi;\n if (simplified < -Math.PI) return simplified + twoPi;\n if (simplified >= Math.PI) return simplified - twoPi;\n return simplified;\n};\n/**\n * Convenience function that clamps a latitude value, in radians, to the range [-Math.PI/2
, Math.PI/2
).\n * Useful for sanitizing data before use in objects requiring correct range.\n *\n * @param {number} angle The latitude value, in radians, to clamp to the range [-Math.PI/2
, Math.PI/2
).\n * @returns {number} The latitude value clamped to the range [-Math.PI/2
, Math.PI/2
).\n *\n * @example\n * // Clamp 108 degrees latitude to 90 degrees latitude\n * const latitude = Cesium.Math.clampToLatitudeRange(Cesium.Math.toRadians(108.0));\n */ $06f1857ea76fc69e$var$CesiumMath.clampToLatitudeRange = function(angle) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(angle)) throw new (0, $1vHsR.default)(\"angle is required.\");\n //>>includeEnd('debug');\n return $06f1857ea76fc69e$var$CesiumMath.clamp(angle, -1 * $06f1857ea76fc69e$var$CesiumMath.PI_OVER_TWO, $06f1857ea76fc69e$var$CesiumMath.PI_OVER_TWO);\n};\n/**\n * Produces an angle in the range -Pi <= angle <= Pi which is equivalent to the provided angle.\n *\n * @param {number} angle in radians\n * @returns {number} The angle in the range [-CesiumMath.PI
, CesiumMath.PI
].\n */ $06f1857ea76fc69e$var$CesiumMath.negativePiToPi = function(angle) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(angle)) throw new (0, $1vHsR.default)(\"angle is required.\");\n //>>includeEnd('debug');\n if (angle >= -$06f1857ea76fc69e$var$CesiumMath.PI && angle <= $06f1857ea76fc69e$var$CesiumMath.PI) // Early exit if the input is already inside the range. This avoids\n // unnecessary math which could introduce floating point error.\n return angle;\n return $06f1857ea76fc69e$var$CesiumMath.zeroToTwoPi(angle + $06f1857ea76fc69e$var$CesiumMath.PI) - $06f1857ea76fc69e$var$CesiumMath.PI;\n};\n/**\n * Produces an angle in the range 0 <= angle <= 2Pi which is equivalent to the provided angle.\n *\n * @param {number} angle in radians\n * @returns {number} The angle in the range [0, CesiumMath.TWO_PI
].\n */ $06f1857ea76fc69e$var$CesiumMath.zeroToTwoPi = function(angle) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(angle)) throw new (0, $1vHsR.default)(\"angle is required.\");\n //>>includeEnd('debug');\n if (angle >= 0 && angle <= $06f1857ea76fc69e$var$CesiumMath.TWO_PI) // Early exit if the input is already inside the range. This avoids\n // unnecessary math which could introduce floating point error.\n return angle;\n const mod = $06f1857ea76fc69e$var$CesiumMath.mod(angle, $06f1857ea76fc69e$var$CesiumMath.TWO_PI);\n if (Math.abs(mod) < $06f1857ea76fc69e$var$CesiumMath.EPSILON14 && Math.abs(angle) > $06f1857ea76fc69e$var$CesiumMath.EPSILON14) return $06f1857ea76fc69e$var$CesiumMath.TWO_PI;\n return mod;\n};\n/**\n * The modulo operation that also works for negative dividends.\n *\n * @param {number} m The dividend.\n * @param {number} n The divisor.\n * @returns {number} The remainder.\n */ $06f1857ea76fc69e$var$CesiumMath.mod = function(m, n) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(m)) throw new (0, $1vHsR.default)(\"m is required.\");\n if (!(0, $jQJji.default)(n)) throw new (0, $1vHsR.default)(\"n is required.\");\n if (n === 0.0) throw new (0, $1vHsR.default)(\"divisor cannot be 0.\");\n //>>includeEnd('debug');\n if ($06f1857ea76fc69e$var$CesiumMath.sign(m) === $06f1857ea76fc69e$var$CesiumMath.sign(n) && Math.abs(m) < Math.abs(n)) // Early exit if the input does not need to be modded. This avoids\n // unnecessary math which could introduce floating point error.\n return m;\n return (m % n + n) % n;\n};\n/**\n * Determines if two values are equal using an absolute or relative tolerance test. This is useful\n * to avoid problems due to roundoff error when comparing floating-point values directly. The values are\n * first compared using an absolute tolerance test. If that fails, a relative tolerance test is performed.\n * Use this test if you are unsure of the magnitudes of left and right.\n *\n * @param {number} left The first value to compare.\n * @param {number} right The other value to compare.\n * @param {number} [relativeEpsilon=0] The maximum inclusive delta between left
and right
for the relative tolerance test.\n * @param {number} [absoluteEpsilon=relativeEpsilon] The maximum inclusive delta between left
and right
for the absolute tolerance test.\n * @returns {boolean} true
if the values are equal within the epsilon; otherwise, false
.\n *\n * @example\n * const a = Cesium.Math.equalsEpsilon(0.0, 0.01, Cesium.Math.EPSILON2); // true\n * const b = Cesium.Math.equalsEpsilon(0.0, 0.1, Cesium.Math.EPSILON2); // false\n * const c = Cesium.Math.equalsEpsilon(3699175.1634344, 3699175.2, Cesium.Math.EPSILON7); // true\n * const d = Cesium.Math.equalsEpsilon(3699175.1634344, 3699175.2, Cesium.Math.EPSILON9); // false\n */ $06f1857ea76fc69e$var$CesiumMath.equalsEpsilon = function(left, right, relativeEpsilon, absoluteEpsilon) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(left)) throw new (0, $1vHsR.default)(\"left is required.\");\n if (!(0, $jQJji.default)(right)) throw new (0, $1vHsR.default)(\"right is required.\");\n //>>includeEnd('debug');\n relativeEpsilon = (0, $8w8ZH.default)(relativeEpsilon, 0.0);\n absoluteEpsilon = (0, $8w8ZH.default)(absoluteEpsilon, relativeEpsilon);\n const absDiff = Math.abs(left - right);\n return absDiff <= absoluteEpsilon || absDiff <= relativeEpsilon * Math.max(Math.abs(left), Math.abs(right));\n};\n/**\n * Determines if the left value is less than the right value. If the two values are within\n * absoluteEpsilon
of each other, they are considered equal and this function returns false.\n *\n * @param {number} left The first number to compare.\n * @param {number} right The second number to compare.\n * @param {number} absoluteEpsilon The absolute epsilon to use in comparison.\n * @returns {boolean} true
if left
is less than right
by more than\n * absoluteEpsilon. false
if left
is greater or if the two\n * values are nearly equal.\n */ $06f1857ea76fc69e$var$CesiumMath.lessThan = function(left, right, absoluteEpsilon) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(left)) throw new (0, $1vHsR.default)(\"first is required.\");\n if (!(0, $jQJji.default)(right)) throw new (0, $1vHsR.default)(\"second is required.\");\n if (!(0, $jQJji.default)(absoluteEpsilon)) throw new (0, $1vHsR.default)(\"absoluteEpsilon is required.\");\n //>>includeEnd('debug');\n return left - right < -absoluteEpsilon;\n};\n/**\n * Determines if the left value is less than or equal to the right value. If the two values are within\n * absoluteEpsilon
of each other, they are considered equal and this function returns true.\n *\n * @param {number} left The first number to compare.\n * @param {number} right The second number to compare.\n * @param {number} absoluteEpsilon The absolute epsilon to use in comparison.\n * @returns {boolean} true
if left
is less than right
or if the\n * the values are nearly equal.\n */ $06f1857ea76fc69e$var$CesiumMath.lessThanOrEquals = function(left, right, absoluteEpsilon) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(left)) throw new (0, $1vHsR.default)(\"first is required.\");\n if (!(0, $jQJji.default)(right)) throw new (0, $1vHsR.default)(\"second is required.\");\n if (!(0, $jQJji.default)(absoluteEpsilon)) throw new (0, $1vHsR.default)(\"absoluteEpsilon is required.\");\n //>>includeEnd('debug');\n return left - right < absoluteEpsilon;\n};\n/**\n * Determines if the left value is greater the right value. If the two values are within\n * absoluteEpsilon
of each other, they are considered equal and this function returns false.\n *\n * @param {number} left The first number to compare.\n * @param {number} right The second number to compare.\n * @param {number} absoluteEpsilon The absolute epsilon to use in comparison.\n * @returns {boolean} true
if left
is greater than right
by more than\n * absoluteEpsilon. false
if left
is less or if the two\n * values are nearly equal.\n */ $06f1857ea76fc69e$var$CesiumMath.greaterThan = function(left, right, absoluteEpsilon) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(left)) throw new (0, $1vHsR.default)(\"first is required.\");\n if (!(0, $jQJji.default)(right)) throw new (0, $1vHsR.default)(\"second is required.\");\n if (!(0, $jQJji.default)(absoluteEpsilon)) throw new (0, $1vHsR.default)(\"absoluteEpsilon is required.\");\n //>>includeEnd('debug');\n return left - right > absoluteEpsilon;\n};\n/**\n * Determines if the left value is greater than or equal to the right value. If the two values are within\n * absoluteEpsilon
of each other, they are considered equal and this function returns true.\n *\n * @param {number} left The first number to compare.\n * @param {number} right The second number to compare.\n * @param {number} absoluteEpsilon The absolute epsilon to use in comparison.\n * @returns {boolean} true
if left
is greater than right
or if the\n * the values are nearly equal.\n */ $06f1857ea76fc69e$var$CesiumMath.greaterThanOrEquals = function(left, right, absoluteEpsilon) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(left)) throw new (0, $1vHsR.default)(\"first is required.\");\n if (!(0, $jQJji.default)(right)) throw new (0, $1vHsR.default)(\"second is required.\");\n if (!(0, $jQJji.default)(absoluteEpsilon)) throw new (0, $1vHsR.default)(\"absoluteEpsilon is required.\");\n //>>includeEnd('debug');\n return left - right > -absoluteEpsilon;\n};\nconst $06f1857ea76fc69e$var$factorials = [\n 1\n];\n/**\n * Computes the factorial of the provided number.\n *\n * @param {number} n The number whose factorial is to be computed.\n * @returns {number} The factorial of the provided number or undefined if the number is less than 0.\n *\n * @exception {DeveloperError} A number greater than or equal to 0 is required.\n *\n *\n * @example\n * //Compute 7!, which is equal to 5040\n * const computedFactorial = Cesium.Math.factorial(7);\n *\n * @see {@link http://en.wikipedia.org/wiki/Factorial|Factorial on Wikipedia}\n */ $06f1857ea76fc69e$var$CesiumMath.factorial = function(n) {\n //>>includeStart('debug', pragmas.debug);\n if (typeof n !== \"number\" || n < 0) throw new (0, $1vHsR.default)(\"A number greater than or equal to 0 is required.\");\n //>>includeEnd('debug');\n const length = $06f1857ea76fc69e$var$factorials.length;\n if (n >= length) {\n let sum = $06f1857ea76fc69e$var$factorials[length - 1];\n for(let i = length; i <= n; i++){\n const next = sum * i;\n $06f1857ea76fc69e$var$factorials.push(next);\n sum = next;\n }\n }\n return $06f1857ea76fc69e$var$factorials[n];\n};\n/**\n * Increments a number with a wrapping to a minimum value if the number exceeds the maximum value.\n *\n * @param {number} [n] The number to be incremented.\n * @param {number} [maximumValue] The maximum incremented value before rolling over to the minimum value.\n * @param {number} [minimumValue=0.0] The number reset to after the maximum value has been exceeded.\n * @returns {number} The incremented number.\n *\n * @exception {DeveloperError} Maximum value must be greater than minimum value.\n *\n * @example\n * const n = Cesium.Math.incrementWrap(5, 10, 0); // returns 6\n * const m = Cesium.Math.incrementWrap(10, 10, 0); // returns 0\n */ $06f1857ea76fc69e$var$CesiumMath.incrementWrap = function(n, maximumValue, minimumValue) {\n minimumValue = (0, $8w8ZH.default)(minimumValue, 0.0);\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(n)) throw new (0, $1vHsR.default)(\"n is required.\");\n if (maximumValue <= minimumValue) throw new (0, $1vHsR.default)(\"maximumValue must be greater than minimumValue.\");\n //>>includeEnd('debug');\n ++n;\n if (n > maximumValue) n = minimumValue;\n return n;\n};\n/**\n * Determines if a non-negative integer is a power of two.\n * The maximum allowed input is (2^32)-1 due to 32-bit bitwise operator limitation in Javascript.\n *\n * @param {number} n The integer to test in the range [0, (2^32)-1].\n * @returns {boolean} true
if the number if a power of two; otherwise, false
.\n *\n * @exception {DeveloperError} A number between 0 and (2^32)-1 is required.\n *\n * @example\n * const t = Cesium.Math.isPowerOfTwo(16); // true\n * const f = Cesium.Math.isPowerOfTwo(20); // false\n */ $06f1857ea76fc69e$var$CesiumMath.isPowerOfTwo = function(n) {\n //>>includeStart('debug', pragmas.debug);\n if (typeof n !== \"number\" || n < 0 || n > 4294967295) throw new (0, $1vHsR.default)(\"A number between 0 and (2^32)-1 is required.\");\n //>>includeEnd('debug');\n return n !== 0 && (n & n - 1) === 0;\n};\n/**\n * Computes the next power-of-two integer greater than or equal to the provided non-negative integer.\n * The maximum allowed input is 2^31 due to 32-bit bitwise operator limitation in Javascript.\n *\n * @param {number} n The integer to test in the range [0, 2^31].\n * @returns {number} The next power-of-two integer.\n *\n * @exception {DeveloperError} A number between 0 and 2^31 is required.\n *\n * @example\n * const n = Cesium.Math.nextPowerOfTwo(29); // 32\n * const m = Cesium.Math.nextPowerOfTwo(32); // 32\n */ $06f1857ea76fc69e$var$CesiumMath.nextPowerOfTwo = function(n) {\n //>>includeStart('debug', pragmas.debug);\n if (typeof n !== \"number\" || n < 0 || n > 2147483648) throw new (0, $1vHsR.default)(\"A number between 0 and 2^31 is required.\");\n //>>includeEnd('debug');\n // From http://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2\n --n;\n n |= n >> 1;\n n |= n >> 2;\n n |= n >> 4;\n n |= n >> 8;\n n |= n >> 16;\n ++n;\n return n;\n};\n/**\n * Computes the previous power-of-two integer less than or equal to the provided non-negative integer.\n * The maximum allowed input is (2^32)-1 due to 32-bit bitwise operator limitation in Javascript.\n *\n * @param {number} n The integer to test in the range [0, (2^32)-1].\n * @returns {number} The previous power-of-two integer.\n *\n * @exception {DeveloperError} A number between 0 and (2^32)-1 is required.\n *\n * @example\n * const n = Cesium.Math.previousPowerOfTwo(29); // 16\n * const m = Cesium.Math.previousPowerOfTwo(32); // 32\n */ $06f1857ea76fc69e$var$CesiumMath.previousPowerOfTwo = function(n) {\n //>>includeStart('debug', pragmas.debug);\n if (typeof n !== \"number\" || n < 0 || n > 4294967295) throw new (0, $1vHsR.default)(\"A number between 0 and (2^32)-1 is required.\");\n //>>includeEnd('debug');\n n |= n >> 1;\n n |= n >> 2;\n n |= n >> 4;\n n |= n >> 8;\n n |= n >> 16;\n n |= n >> 32;\n // The previous bitwise operations implicitly convert to signed 32-bit. Use `>>>` to convert to unsigned\n n = (n >>> 0) - (n >>> 1);\n return n;\n};\n/**\n * Constraint a value to lie between two values.\n *\n * @param {number} value The value to clamp.\n * @param {number} min The minimum value.\n * @param {number} max The maximum value.\n * @returns {number} The clamped value such that min <= result <= max.\n */ $06f1857ea76fc69e$var$CesiumMath.clamp = function(value, min, max) {\n //>>includeStart('debug', pragmas.debug);\n (0, $3pzcG.default).typeOf.number(\"value\", value);\n (0, $3pzcG.default).typeOf.number(\"min\", min);\n (0, $3pzcG.default).typeOf.number(\"max\", max);\n //>>includeEnd('debug');\n return value < min ? min : value > max ? max : value;\n};\nlet $06f1857ea76fc69e$var$randomNumberGenerator = new (0, (/*@__PURE__*/$parcel$interopDefault($bnB1j)))();\n/**\n * Sets the seed used by the random number generator\n * in {@link CesiumMath#nextRandomNumber}.\n *\n * @param {number} seed An integer used as the seed.\n */ $06f1857ea76fc69e$var$CesiumMath.setRandomNumberSeed = function(seed) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(seed)) throw new (0, $1vHsR.default)(\"seed is required.\");\n //>>includeEnd('debug');\n $06f1857ea76fc69e$var$randomNumberGenerator = new (0, (/*@__PURE__*/$parcel$interopDefault($bnB1j)))(seed);\n};\n/**\n * Generates a random floating point number in the range of [0.0, 1.0)\n * using a Mersenne twister.\n *\n * @returns {number} A random number in the range of [0.0, 1.0).\n *\n * @see CesiumMath.setRandomNumberSeed\n * @see {@link http://en.wikipedia.org/wiki/Mersenne_twister|Mersenne twister on Wikipedia}\n */ $06f1857ea76fc69e$var$CesiumMath.nextRandomNumber = function() {\n return $06f1857ea76fc69e$var$randomNumberGenerator.random();\n};\n/**\n * Generates a random number between two numbers.\n *\n * @param {number} min The minimum value.\n * @param {number} max The maximum value.\n * @returns {number} A random number between the min and max.\n */ $06f1857ea76fc69e$var$CesiumMath.randomBetween = function(min, max) {\n return $06f1857ea76fc69e$var$CesiumMath.nextRandomNumber() * (max - min) + min;\n};\n/**\n * Computes Math.acos(value)
, but first clamps value
to the range [-1.0, 1.0]\n * so that the function will never return NaN.\n *\n * @param {number} value The value for which to compute acos.\n * @returns {number} The acos of the value if the value is in the range [-1.0, 1.0], or the acos of -1.0 or 1.0,\n * whichever is closer, if the value is outside the range.\n */ $06f1857ea76fc69e$var$CesiumMath.acosClamped = function(value) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(value)) throw new (0, $1vHsR.default)(\"value is required.\");\n //>>includeEnd('debug');\n return Math.acos($06f1857ea76fc69e$var$CesiumMath.clamp(value, -1, 1.0));\n};\n/**\n * Computes Math.asin(value)
, but first clamps value
to the range [-1.0, 1.0]\n * so that the function will never return NaN.\n *\n * @param {number} value The value for which to compute asin.\n * @returns {number} The asin of the value if the value is in the range [-1.0, 1.0], or the asin of -1.0 or 1.0,\n * whichever is closer, if the value is outside the range.\n */ $06f1857ea76fc69e$var$CesiumMath.asinClamped = function(value) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(value)) throw new (0, $1vHsR.default)(\"value is required.\");\n //>>includeEnd('debug');\n return Math.asin($06f1857ea76fc69e$var$CesiumMath.clamp(value, -1, 1.0));\n};\n/**\n * Finds the chord length between two points given the circle's radius and the angle between the points.\n *\n * @param {number} angle The angle between the two points.\n * @param {number} radius The radius of the circle.\n * @returns {number} The chord length.\n */ $06f1857ea76fc69e$var$CesiumMath.chordLength = function(angle, radius) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(angle)) throw new (0, $1vHsR.default)(\"angle is required.\");\n if (!(0, $jQJji.default)(radius)) throw new (0, $1vHsR.default)(\"radius is required.\");\n //>>includeEnd('debug');\n return 2.0 * radius * Math.sin(angle * 0.5);\n};\n/**\n * Finds the logarithm of a number to a base.\n *\n * @param {number} number The number.\n * @param {number} base The base.\n * @returns {number} The result.\n */ $06f1857ea76fc69e$var$CesiumMath.logBase = function(number, base) {\n //>>includeStart('debug', pragmas.debug);\n if (!(0, $jQJji.default)(number)) throw new (0, $1vHsR.default)(\"number is required.\");\n if (!(0, $jQJji.default)(base)) throw new (0, $1vHsR.default)(\"base is required.\");\n //>>includeEnd('debug');\n return Math.log(number) / Math.log(base);\n};\n/**\n * Finds the cube root of a number.\n * Returns NaN if number
is not provided.\n *\n * @function\n * @param {number} [number] The number.\n * @returns {number} The result.\n */ $06f1857ea76fc69e$var$CesiumMath.cbrt = (0, $8w8ZH.default)(Math.cbrt, function cbrt(number) {\n const result = Math.pow(Math.abs(number), 1.0 / 3.0);\n return number < 0.0 ? -result : result;\n});\n/**\n * Finds the base 2 logarithm of a number.\n *\n * @function\n * @param {number} number The number.\n * @returns {number} The result.\n */ $06f1857ea76fc69e$var$CesiumMath.log2 = (0, $8w8ZH.default)(Math.log2, function log2(number) {\n return Math.log(number) * Math.LOG2E;\n});\n/**\n * Calculate the fog impact at a given distance. Useful for culling.\n * Matches the equation in `fog.glsl`\n * @private\n */ $06f1857ea76fc69e$var$CesiumMath.fog = function(distanceToCamera, density) {\n const scalar = distanceToCamera * density;\n return 1.0 - Math.exp(-(scalar * scalar));\n};\n/**\n * Computes a fast approximation of Atan for input in the range [-1, 1].\n *\n * Based on Michal Drobot's approximation from ShaderFastLibs,\n * which in turn is based on \"Efficient approximations for the arctangent function,\"\n * Rajan, S. Sichun Wang Inkol, R. Joyal, A., May 2006.\n * Adapted from ShaderFastLibs under MIT License.\n *\n * @param {number} x An input number in the range [-1, 1]\n * @returns {number} An approximation of atan(x)\n */ $06f1857ea76fc69e$var$CesiumMath.fastApproximateAtan = function(x) {\n //>>includeStart('debug', pragmas.debug);\n (0, $3pzcG.default).typeOf.number(\"x\", x);\n //>>includeEnd('debug');\n return x * (-0.1784 * Math.abs(x) - 0.0663 * x * x + 1.0301);\n};\n/**\n * Computes a fast approximation of Atan2(x, y) for arbitrary input scalars.\n *\n * Range reduction math based on nvidia's cg reference implementation: http://developer.download.nvidia.com/cg/atan2.html\n *\n * @param {number} x An input number that isn't zero if y is zero.\n * @param {number} y An input number that isn't zero if x is zero.\n * @returns {number} An approximation of atan2(x, y)\n */ $06f1857ea76fc69e$var$CesiumMath.fastApproximateAtan2 = function(x, y) {\n //>>includeStart('debug', pragmas.debug);\n (0, $3pzcG.default).typeOf.number(\"x\", x);\n (0, $3pzcG.default).typeOf.number(\"y\", y);\n //>>includeEnd('debug');\n // atan approximations are usually only reliable over [-1, 1]\n // So reduce the range by flipping whether x or y is on top based on which is bigger.\n let opposite;\n let t = Math.abs(x); // t used as swap and atan result.\n opposite = Math.abs(y);\n const adjacent = Math.max(t, opposite);\n opposite = Math.min(t, opposite);\n const oppositeOverAdjacent = opposite / adjacent;\n //>>includeStart('debug', pragmas.debug);\n if (isNaN(oppositeOverAdjacent)) throw new (0, $1vHsR.default)(\"either x or y must be nonzero\");\n //>>includeEnd('debug');\n t = $06f1857ea76fc69e$var$CesiumMath.fastApproximateAtan(oppositeOverAdjacent);\n // Undo range reduction\n t = Math.abs(y) > Math.abs(x) ? $06f1857ea76fc69e$var$CesiumMath.PI_OVER_TWO - t : t;\n t = x < 0.0 ? $06f1857ea76fc69e$var$CesiumMath.PI - t : t;\n t = y < 0.0 ? -t : t;\n return t;\n};\nvar $06f1857ea76fc69e$export$2e2bcd8739ae039 = $06f1857ea76fc69e$var$CesiumMath;\n\n});\nparcelRegister(\"bnB1j\", function(module, exports) {\n/*\n https://github.com/banksean wrapped Makoto Matsumoto and Takuji Nishimura's code in a namespace\n so it's better encapsulated. Now you can have multiple random number generators\n and they won't stomp all over eachother's state.\n\n If you want to use this as a substitute for Math.random(), use the random()\n method like so:\n\n var m = new MersenneTwister();\n var randomNumber = m.random();\n\n You can also call the other genrand_{foo}() methods on the instance.\n\n If you want to use a specific seed in order to get a repeatable random\n sequence, pass an integer into the constructor:\n\n var m = new MersenneTwister(123);\n\n and that will always produce the same random sequence.\n\n Sean McCullough (banksean@gmail.com)\n*/ /*\n A C-program for MT19937, with initialization improved 2002/1/26.\n Coded by Takuji Nishimura and Makoto Matsumoto.\n\n Before using, initialize the state by using init_seed(seed)\n or init_by_array(init_key, key_length).\n\n Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,\n All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions\n are met:\n\n 1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. The names of its contributors may not be used to endorse or promote\n products derived from this software without specific prior written\n permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\n Any feedback is very welcome.\n http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html\n email: m-mat @ math.sci.hiroshima-u.ac.jp (remove space)\n*/ var $848e8f2059b51b3f$var$MersenneTwister = function(seed) {\n if (seed == undefined) seed = new Date().getTime();\n /* Period parameters */ this.N = 624;\n this.M = 397;\n this.MATRIX_A = 0x9908b0df; /* constant vector a */ \n this.UPPER_MASK = 0x80000000; /* most significant w-r bits */ \n this.LOWER_MASK = 0x7fffffff; /* least significant r bits */ \n this.mt = new Array(this.N); /* the array for the state vector */ \n this.mti = this.N + 1; /* mti==N+1 means mt[N] is not initialized */ \n if (seed.constructor == Array) this.init_by_array(seed, seed.length);\n else this.init_seed(seed);\n};\n/* initializes mt[N] with a seed */ /* origin name init_genrand */ $848e8f2059b51b3f$var$MersenneTwister.prototype.init_seed = function(s) {\n this.mt[0] = s >>> 0;\n for(this.mti = 1; this.mti < this.N; this.mti++){\n var s = this.mt[this.mti - 1] ^ this.mt[this.mti - 1] >>> 30;\n this.mt[this.mti] = (((s & 0xffff0000) >>> 16) * 1812433253 << 16) + (s & 0x0000ffff) * 1812433253 + this.mti;\n /* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */ /* In the previous versions, MSBs of the seed affect */ /* only MSBs of the array mt[]. */ /* 2002/01/09 modified by Makoto Matsumoto */ this.mt[this.mti] >>>= 0;\n /* for >32 bit machines */ }\n};\n/* initialize by an array with array-length */ /* init_key is the array for initializing keys */ /* key_length is its length */ /* slight change for C++, 2004/2/26 */ $848e8f2059b51b3f$var$MersenneTwister.prototype.init_by_array = function(init_key, key_length) {\n var i, j, k;\n this.init_seed(19650218);\n i = 1;\n j = 0;\n k = this.N > key_length ? this.N : key_length;\n for(; k; k--){\n var s = this.mt[i - 1] ^ this.mt[i - 1] >>> 30;\n this.mt[i] = (this.mt[i] ^ (((s & 0xffff0000) >>> 16) * 1664525 << 16) + (s & 0x0000ffff) * 1664525) + init_key[j] + j; /* non linear */ \n this.mt[i] >>>= 0; /* for WORDSIZE > 32 machines */ \n i++;\n j++;\n if (i >= this.N) {\n this.mt[0] = this.mt[this.N - 1];\n i = 1;\n }\n if (j >= key_length) j = 0;\n }\n for(k = this.N - 1; k; k--){\n var s = this.mt[i - 1] ^ this.mt[i - 1] >>> 30;\n this.mt[i] = (this.mt[i] ^ (((s & 0xffff0000) >>> 16) * 1566083941 << 16) + (s & 0x0000ffff) * 1566083941) - i; /* non linear */ \n this.mt[i] >>>= 0; /* for WORDSIZE > 32 machines */ \n i++;\n if (i >= this.N) {\n this.mt[0] = this.mt[this.N - 1];\n i = 1;\n }\n }\n this.mt[0] = 0x80000000; /* MSB is 1; assuring non-zero initial array */ \n};\n/* generates a random number on [0,0xffffffff]-interval */ /* origin name genrand_int32 */ $848e8f2059b51b3f$var$MersenneTwister.prototype.random_int = function() {\n var y;\n var mag01 = new Array(0x0, this.MATRIX_A);\n /* mag01[x] = x * MATRIX_A for x=0,1 */ if (this.mti >= this.N) {\n var kk;\n if (this.mti == this.N + 1) /* if init_seed() has not been called, */ this.init_seed(5489); /* a default initial seed is used */ \n for(kk = 0; kk < this.N - this.M; kk++){\n y = this.mt[kk] & this.UPPER_MASK | this.mt[kk + 1] & this.LOWER_MASK;\n this.mt[kk] = this.mt[kk + this.M] ^ y >>> 1 ^ mag01[y & 0x1];\n }\n for(; kk < this.N - 1; kk++){\n y = this.mt[kk] & this.UPPER_MASK | this.mt[kk + 1] & this.LOWER_MASK;\n this.mt[kk] = this.mt[kk + (this.M - this.N)] ^ y >>> 1 ^ mag01[y & 0x1];\n }\n y = this.mt[this.N - 1] & this.UPPER_MASK | this.mt[0] & this.LOWER_MASK;\n this.mt[this.N - 1] = this.mt[this.M - 1] ^ y >>> 1 ^ mag01[y & 0x1];\n this.mti = 0;\n }\n y = this.mt[this.mti++];\n /* Tempering */ y ^= y >>> 11;\n y ^= y << 7 & 0x9d2c5680;\n y ^= y << 15 & 0xefc60000;\n y ^= y >>> 18;\n return y >>> 0;\n};\n/* generates a random number on [0,0x7fffffff]-interval */ /* origin name genrand_int31 */ $848e8f2059b51b3f$var$MersenneTwister.prototype.random_int31 = function() {\n return this.random_int() >>> 1;\n};\n/* generates a random number on [0,1]-real-interval */ /* origin name genrand_real1 */ $848e8f2059b51b3f$var$MersenneTwister.prototype.random_incl = function() {\n return this.random_int() * (1.0 / 4294967295.0);\n/* divided by 2^32-1 */ };\n/* generates a random number on [0,1)-real-interval */ $848e8f2059b51b3f$var$MersenneTwister.prototype.random = function() {\n return this.random_int() * (1.0 / 4294967296.0);\n/* divided by 2^32 */ };\n/* generates a random number on (0,1)-real-interval */ /* origin name genrand_real3 */ $848e8f2059b51b3f$var$MersenneTwister.prototype.random_excl = function() {\n return (this.random_int() + 0.5) * (1.0 / 4294967296.0);\n/* divided by 2^32 */ };\n/* generates a random number on [0,1) with 53-bit resolution*/ /* origin name genrand_res53 */ $848e8f2059b51b3f$var$MersenneTwister.prototype.random_long = function() {\n var a = this.random_int() >>> 5, b = this.random_int() >>> 6;\n return (a * 67108864.0 + b) * (1.0 / 9007199254740992.0);\n};\n/* These real versions are due to Isaku Wada, 2002/01/09 added */ module.exports = $848e8f2059b51b3f$var$MersenneTwister;\n\n});\n\nparcelRegister(\"3pzcG\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $27bf03924417ee9b$export$2e2bcd8739ae039);\n\nvar $jQJji = parcelRequire(\"jQJji\");\n\nvar $1vHsR = parcelRequire(\"1vHsR\");\n/**\n * Contains functions for checking that supplied arguments are of a specified type\n * or meet specified conditions\n */ const $27bf03924417ee9b$var$Check = {};\n/**\n * Contains type checking functions, all using the typeof operator\n */ $27bf03924417ee9b$var$Check.typeOf = {};\nfunction $27bf03924417ee9b$var$getUndefinedErrorMessage(name) {\n return `${name} is required, actual value was undefined`;\n}\nfunction $27bf03924417ee9b$var$getFailedTypeErrorMessage(actual, expected, name) {\n return `Expected ${name} to be typeof ${expected}, actual typeof was ${actual}`;\n}\n/**\n * Throws if test is not defined\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value that is to be checked\n * @exception {DeveloperError} test must be defined\n */ $27bf03924417ee9b$var$Check.defined = function(name, test) {\n if (!(0, $jQJji.default)(test)) throw new (0, $1vHsR.default)($27bf03924417ee9b$var$getUndefinedErrorMessage(name));\n};\n/**\n * Throws if test is not typeof 'function'\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'function'\n */ $27bf03924417ee9b$var$Check.typeOf.func = function(name, test) {\n if (typeof test !== \"function\") throw new (0, $1vHsR.default)($27bf03924417ee9b$var$getFailedTypeErrorMessage(typeof test, \"function\", name));\n};\n/**\n * Throws if test is not typeof 'string'\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'string'\n */ $27bf03924417ee9b$var$Check.typeOf.string = function(name, test) {\n if (typeof test !== \"string\") throw new (0, $1vHsR.default)($27bf03924417ee9b$var$getFailedTypeErrorMessage(typeof test, \"string\", name));\n};\n/**\n * Throws if test is not typeof 'number'\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'number'\n */ $27bf03924417ee9b$var$Check.typeOf.number = function(name, test) {\n if (typeof test !== \"number\") throw new (0, $1vHsR.default)($27bf03924417ee9b$var$getFailedTypeErrorMessage(typeof test, \"number\", name));\n};\n/**\n * Throws if test is not typeof 'number' and less than limit\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @param {number} limit The limit value to compare against\n * @exception {DeveloperError} test must be typeof 'number' and less than limit\n */ $27bf03924417ee9b$var$Check.typeOf.number.lessThan = function(name, test, limit) {\n $27bf03924417ee9b$var$Check.typeOf.number(name, test);\n if (test >= limit) throw new (0, $1vHsR.default)(`Expected ${name} to be less than ${limit}, actual value was ${test}`);\n};\n/**\n * Throws if test is not typeof 'number' and less than or equal to limit\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @param {number} limit The limit value to compare against\n * @exception {DeveloperError} test must be typeof 'number' and less than or equal to limit\n */ $27bf03924417ee9b$var$Check.typeOf.number.lessThanOrEquals = function(name, test, limit) {\n $27bf03924417ee9b$var$Check.typeOf.number(name, test);\n if (test > limit) throw new (0, $1vHsR.default)(`Expected ${name} to be less than or equal to ${limit}, actual value was ${test}`);\n};\n/**\n * Throws if test is not typeof 'number' and greater than limit\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @param {number} limit The limit value to compare against\n * @exception {DeveloperError} test must be typeof 'number' and greater than limit\n */ $27bf03924417ee9b$var$Check.typeOf.number.greaterThan = function(name, test, limit) {\n $27bf03924417ee9b$var$Check.typeOf.number(name, test);\n if (test <= limit) throw new (0, $1vHsR.default)(`Expected ${name} to be greater than ${limit}, actual value was ${test}`);\n};\n/**\n * Throws if test is not typeof 'number' and greater than or equal to limit\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @param {number} limit The limit value to compare against\n * @exception {DeveloperError} test must be typeof 'number' and greater than or equal to limit\n */ $27bf03924417ee9b$var$Check.typeOf.number.greaterThanOrEquals = function(name, test, limit) {\n $27bf03924417ee9b$var$Check.typeOf.number(name, test);\n if (test < limit) throw new (0, $1vHsR.default)(`Expected ${name} to be greater than or equal to ${limit}, actual value was ${test}`);\n};\n/**\n * Throws if test is not typeof 'object'\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'object'\n */ $27bf03924417ee9b$var$Check.typeOf.object = function(name, test) {\n if (typeof test !== \"object\") throw new (0, $1vHsR.default)($27bf03924417ee9b$var$getFailedTypeErrorMessage(typeof test, \"object\", name));\n};\n/**\n * Throws if test is not typeof 'boolean'\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'boolean'\n */ $27bf03924417ee9b$var$Check.typeOf.bool = function(name, test) {\n if (typeof test !== \"boolean\") throw new (0, $1vHsR.default)($27bf03924417ee9b$var$getFailedTypeErrorMessage(typeof test, \"boolean\", name));\n};\n/**\n * Throws if test is not typeof 'bigint'\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'bigint'\n */ $27bf03924417ee9b$var$Check.typeOf.bigint = function(name, test) {\n if (typeof test !== \"bigint\") throw new (0, $1vHsR.default)($27bf03924417ee9b$var$getFailedTypeErrorMessage(typeof test, \"bigint\", name));\n};\n/**\n * Throws if test1 and test2 is not typeof 'number' and not equal in value\n *\n * @param {string} name1 The name of the first variable being tested\n * @param {string} name2 The name of the second variable being tested against\n * @param {*} test1 The value to test\n * @param {*} test2 The value to test against\n * @exception {DeveloperError} test1 and test2 should be type of 'number' and be equal in value\n */ $27bf03924417ee9b$var$Check.typeOf.number.equals = function(name1, name2, test1, test2) {\n $27bf03924417ee9b$var$Check.typeOf.number(name1, test1);\n $27bf03924417ee9b$var$Check.typeOf.number(name2, test2);\n if (test1 !== test2) throw new (0, $1vHsR.default)(`${name1} must be equal to ${name2}, the actual values are ${test1} and ${test2}`);\n};\nvar $27bf03924417ee9b$export$2e2bcd8739ae039 = $27bf03924417ee9b$var$Check;\n\n});\nparcelRegister(\"jQJji\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $e736054cd130cc46$export$2e2bcd8739ae039);\n/**\n * @function\n *\n * @param {*} value The object.\n * @returns {boolean} Returns true if the object is defined, returns false otherwise.\n *\n * @example\n * if (Cesium.defined(positions)) {\n * doSomething();\n * } else {\n * doSomethingElse();\n * }\n */ function $e736054cd130cc46$var$defined(value) {\n return value !== undefined && value !== null;\n}\nvar $e736054cd130cc46$export$2e2bcd8739ae039 = $e736054cd130cc46$var$defined;\n\n});\n\nparcelRegister(\"1vHsR\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $119a66d9b8a89652$export$2e2bcd8739ae039);\n\nvar $jQJji = parcelRequire(\"jQJji\");\n/**\n * Constructs an exception object that is thrown due to a developer error, e.g., invalid argument,\n * argument out of range, etc. This exception should only be thrown during development;\n * it usually indicates a bug in the calling code. This exception should never be\n * caught; instead the calling code should strive not to generate it.\n *
\n * On the other hand, a {@link RuntimeError} indicates an exception that may\n * be thrown at runtime, e.g., out of memory, that the calling code should be prepared\n * to catch.\n *\n * @alias DeveloperError\n * @constructor\n * @extends Error\n *\n * @param {string} [message] The error message for this exception.\n *\n * @see RuntimeError\n */ function $119a66d9b8a89652$var$DeveloperError(message) {\n /**\n * 'DeveloperError' indicating that this exception was thrown due to a developer error.\n * @type {string}\n * @readonly\n */ this.name = \"DeveloperError\";\n /**\n * The explanation for why this exception was thrown.\n * @type {string}\n * @readonly\n */ this.message = message;\n //Browsers such as IE don't have a stack property until you actually throw the error.\n let stack;\n try {\n throw new Error();\n } catch (e) {\n stack = e.stack;\n }\n /**\n * The stack trace of this exception, if available.\n * @type {string}\n * @readonly\n */ this.stack = stack;\n}\nif ((0, $jQJji.default)(Object.create)) {\n $119a66d9b8a89652$var$DeveloperError.prototype = Object.create(Error.prototype);\n $119a66d9b8a89652$var$DeveloperError.prototype.constructor = $119a66d9b8a89652$var$DeveloperError;\n}\n$119a66d9b8a89652$var$DeveloperError.prototype.toString = function() {\n let str = `${this.name}: ${this.message}`;\n if ((0, $jQJji.default)(this.stack)) str += `\\n${this.stack.toString()}`;\n return str;\n};\n/**\n * @private\n */ $119a66d9b8a89652$var$DeveloperError.throwInstantiationError = function() {\n throw new $119a66d9b8a89652$var$DeveloperError(\"This function defines an interface and should not be called directly.\");\n};\nvar $119a66d9b8a89652$export$2e2bcd8739ae039 = $119a66d9b8a89652$var$DeveloperError;\n\n});\n\n\nparcelRegister(\"8w8ZH\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $633849ec333ae991$export$2e2bcd8739ae039);\n/**\n * Returns the first parameter if not undefined, otherwise the second parameter.\n * Useful for setting a default value for a parameter.\n *\n * @function\n *\n * @param {*} a\n * @param {*} b\n * @returns {*} Returns the first parameter if not undefined, otherwise the second parameter.\n *\n * @example\n * param = Cesium.defaultValue(param, 'default');\n */ function $633849ec333ae991$var$defaultValue(a, b) {\n if (a !== undefined && a !== null) return a;\n return b;\n}\n/**\n * A frozen empty object that can be used as the default value for options passed as\n * an object literal.\n * @type {object}\n * @memberof defaultValue\n */ $633849ec333ae991$var$defaultValue.EMPTY_OBJECT = Object.freeze({});\nvar $633849ec333ae991$export$2e2bcd8739ae039 = $633849ec333ae991$var$defaultValue;\n\n});\n\n\n\n//# sourceMappingURL=cesium-binoculars.40a88c35.js.map\n","import MersenneTwister from \"mersenne-twister\";\nimport Check from \"./Check.js\";\nimport defaultValue from \"./defaultValue.js\";\nimport defined from \"./defined.js\";\nimport DeveloperError from \"./DeveloperError.js\";\n\n/**\n * Math functions.\n *\n * @exports CesiumMath\n * @alias Math\n */\nconst CesiumMath = {};\n\n/**\n * 0.1\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON1 = 0.1;\n\n/**\n * 0.01\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON2 = 0.01;\n\n/**\n * 0.001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON3 = 0.001;\n\n/**\n * 0.0001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON4 = 0.0001;\n\n/**\n * 0.00001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON5 = 0.00001;\n\n/**\n * 0.000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON6 = 0.000001;\n\n/**\n * 0.0000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON7 = 0.0000001;\n\n/**\n * 0.00000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON8 = 0.00000001;\n\n/**\n * 0.000000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON9 = 0.000000001;\n\n/**\n * 0.0000000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON10 = 0.0000000001;\n\n/**\n * 0.00000000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON11 = 0.00000000001;\n\n/**\n * 0.000000000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON12 = 0.000000000001;\n\n/**\n * 0.0000000000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON13 = 0.0000000000001;\n\n/**\n * 0.00000000000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON14 = 0.00000000000001;\n\n/**\n * 0.000000000000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON15 = 0.000000000000001;\n\n/**\n * 0.0000000000000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON16 = 0.0000000000000001;\n\n/**\n * 0.00000000000000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON17 = 0.00000000000000001;\n\n/**\n * 0.000000000000000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON18 = 0.000000000000000001;\n\n/**\n * 0.0000000000000000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON19 = 0.0000000000000000001;\n\n/**\n * 0.00000000000000000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON20 = 0.00000000000000000001;\n\n/**\n * 0.000000000000000000001\n * @type {number}\n * @constant\n */\nCesiumMath.EPSILON21 = 0.000000000000000000001;\n\n/**\n * The gravitational parameter of the Earth in meters cubed\n * per second squared as defined by the WGS84 model: 3.986004418e14\n * @type {number}\n * @constant\n */\nCesiumMath.GRAVITATIONALPARAMETER = 3.986004418e14;\n\n/**\n * Radius of the sun in meters: 6.955e8\n * @type {number}\n * @constant\n */\nCesiumMath.SOLAR_RADIUS = 6.955e8;\n\n/**\n * The mean radius of the moon, according to the \"Report of the IAU/IAG Working Group on\n * Cartographic Coordinates and Rotational Elements of the Planets and satellites: 2000\",\n * Celestial Mechanics 82: 83-110, 2002.\n * @type {number}\n * @constant\n */\nCesiumMath.LUNAR_RADIUS = 1737400.0;\n\n/**\n * 64 * 1024\n * @type {number}\n * @constant\n */\nCesiumMath.SIXTY_FOUR_KILOBYTES = 64 * 1024;\n\n/**\n * 4 * 1024 * 1024 * 1024\n * @type {number}\n * @constant\n */\nCesiumMath.FOUR_GIGABYTES = 4 * 1024 * 1024 * 1024;\n\n/**\n * Returns the sign of the value; 1 if the value is positive, -1 if the value is\n * negative, or 0 if the value is 0.\n *\n * @function\n * @param {number} value The value to return the sign of.\n * @returns {number} The sign of value.\n */\nCesiumMath.sign = defaultValue(Math.sign, function sign(value) {\n value = +value; // coerce to number\n if (value === 0 || value !== value) {\n // zero or NaN\n return value;\n }\n return value > 0 ? 1 : -1;\n});\n\n/**\n * Returns 1.0 if the given value is positive or zero, and -1.0 if it is negative.\n * This is similar to {@link CesiumMath#sign} except that returns 1.0 instead of\n * 0.0 when the input value is 0.0.\n * @param {number} value The value to return the sign of.\n * @returns {number} The sign of value.\n */\nCesiumMath.signNotZero = function (value) {\n return value < 0.0 ? -1.0 : 1.0;\n};\n\n/**\n * Converts a scalar value in the range [-1.0, 1.0] to a SNORM in the range [0, rangeMaximum]\n * @param {number} value The scalar value in the range [-1.0, 1.0]\n * @param {number} [rangeMaximum=255] The maximum value in the mapped range, 255 by default.\n * @returns {number} A SNORM value, where 0 maps to -1.0 and rangeMaximum maps to 1.0.\n *\n * @see CesiumMath.fromSNorm\n */\nCesiumMath.toSNorm = function (value, rangeMaximum) {\n rangeMaximum = defaultValue(rangeMaximum, 255);\n return Math.round(\n (CesiumMath.clamp(value, -1.0, 1.0) * 0.5 + 0.5) * rangeMaximum,\n );\n};\n\n/**\n * Converts a SNORM value in the range [0, rangeMaximum] to a scalar in the range [-1.0, 1.0].\n * @param {number} value SNORM value in the range [0, rangeMaximum]\n * @param {number} [rangeMaximum=255] The maximum value in the SNORM range, 255 by default.\n * @returns {number} Scalar in the range [-1.0, 1.0].\n *\n * @see CesiumMath.toSNorm\n */\nCesiumMath.fromSNorm = function (value, rangeMaximum) {\n rangeMaximum = defaultValue(rangeMaximum, 255);\n return (\n (CesiumMath.clamp(value, 0.0, rangeMaximum) / rangeMaximum) * 2.0 - 1.0\n );\n};\n\n/**\n * Converts a scalar value in the range [rangeMinimum, rangeMaximum] to a scalar in the range [0.0, 1.0]\n * @param {number} value The scalar value in the range [rangeMinimum, rangeMaximum]\n * @param {number} rangeMinimum The minimum value in the mapped range.\n * @param {number} rangeMaximum The maximum value in the mapped range.\n * @returns {number} A scalar value, where rangeMinimum maps to 0.0 and rangeMaximum maps to 1.0.\n */\nCesiumMath.normalize = function (value, rangeMinimum, rangeMaximum) {\n rangeMaximum = Math.max(rangeMaximum - rangeMinimum, 0.0);\n return rangeMaximum === 0.0\n ? 0.0\n : CesiumMath.clamp((value - rangeMinimum) / rangeMaximum, 0.0, 1.0);\n};\n\n/**\n * Returns the hyperbolic sine of a number.\n * The hyperbolic sine of value is defined to be\n * (ex - e-x)/2.0\n * where e is Euler's number, approximately 2.71828183.\n *\n * Special cases:\n *
\n * - If the argument is NaN, then the result is NaN.
\n *\n * - If the argument is infinite, then the result is an infinity\n * with the same sign as the argument.
\n *\n * - If the argument is zero, then the result is a zero with the\n * same sign as the argument.
\n *
\n *\n *\n * @function\n * @param {number} value The number whose hyperbolic sine is to be returned.\n * @returns {number} The hyperbolic sine of value
.\n */\nCesiumMath.sinh = defaultValue(Math.sinh, function sinh(value) {\n return (Math.exp(value) - Math.exp(-value)) / 2.0;\n});\n\n/**\n * Returns the hyperbolic cosine of a number.\n * The hyperbolic cosine of value is defined to be\n * (ex + e-x)/2.0\n * where e is Euler's number, approximately 2.71828183.\n *\n * Special cases:\n *
\n * - If the argument is NaN, then the result is NaN.
\n *\n * - If the argument is infinite, then the result is positive infinity.
\n *\n * - If the argument is zero, then the result is 1.0.
\n *
\n *\n *\n * @function\n * @param {number} value The number whose hyperbolic cosine is to be returned.\n * @returns {number} The hyperbolic cosine of value
.\n */\nCesiumMath.cosh = defaultValue(Math.cosh, function cosh(value) {\n return (Math.exp(value) + Math.exp(-value)) / 2.0;\n});\n\n/**\n * Computes the linear interpolation of two values.\n *\n * @param {number} p The start value to interpolate.\n * @param {number} q The end value to interpolate.\n * @param {number} time The time of interpolation generally in the range [0.0, 1.0]
.\n * @returns {number} The linearly interpolated value.\n *\n * @example\n * const n = Cesium.Math.lerp(0.0, 2.0, 0.5); // returns 1.0\n */\nCesiumMath.lerp = function (p, q, time) {\n return (1.0 - time) * p + time * q;\n};\n\n/**\n * pi\n *\n * @type {number}\n * @constant\n */\nCesiumMath.PI = Math.PI;\n\n/**\n * 1/pi\n *\n * @type {number}\n * @constant\n */\nCesiumMath.ONE_OVER_PI = 1.0 / Math.PI;\n\n/**\n * pi/2\n *\n * @type {number}\n * @constant\n */\nCesiumMath.PI_OVER_TWO = Math.PI / 2.0;\n\n/**\n * pi/3\n *\n * @type {number}\n * @constant\n */\nCesiumMath.PI_OVER_THREE = Math.PI / 3.0;\n\n/**\n * pi/4\n *\n * @type {number}\n * @constant\n */\nCesiumMath.PI_OVER_FOUR = Math.PI / 4.0;\n\n/**\n * pi/6\n *\n * @type {number}\n * @constant\n */\nCesiumMath.PI_OVER_SIX = Math.PI / 6.0;\n\n/**\n * 3pi/2\n *\n * @type {number}\n * @constant\n */\nCesiumMath.THREE_PI_OVER_TWO = (3.0 * Math.PI) / 2.0;\n\n/**\n * 2pi\n *\n * @type {number}\n * @constant\n */\nCesiumMath.TWO_PI = 2.0 * Math.PI;\n\n/**\n * 1/2pi\n *\n * @type {number}\n * @constant\n */\nCesiumMath.ONE_OVER_TWO_PI = 1.0 / (2.0 * Math.PI);\n\n/**\n * The number of radians in a degree.\n *\n * @type {number}\n * @constant\n */\nCesiumMath.RADIANS_PER_DEGREE = Math.PI / 180.0;\n\n/**\n * The number of degrees in a radian.\n *\n * @type {number}\n * @constant\n */\nCesiumMath.DEGREES_PER_RADIAN = 180.0 / Math.PI;\n\n/**\n * The number of radians in an arc second.\n *\n * @type {number}\n * @constant\n */\nCesiumMath.RADIANS_PER_ARCSECOND = CesiumMath.RADIANS_PER_DEGREE / 3600.0;\n\n/**\n * Converts degrees to radians.\n * @param {number} degrees The angle to convert in degrees.\n * @returns {number} The corresponding angle in radians.\n */\nCesiumMath.toRadians = function (degrees) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(degrees)) {\n throw new DeveloperError(\"degrees is required.\");\n }\n //>>includeEnd('debug');\n return degrees * CesiumMath.RADIANS_PER_DEGREE;\n};\n\n/**\n * Converts radians to degrees.\n * @param {number} radians The angle to convert in radians.\n * @returns {number} The corresponding angle in degrees.\n */\nCesiumMath.toDegrees = function (radians) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(radians)) {\n throw new DeveloperError(\"radians is required.\");\n }\n //>>includeEnd('debug');\n return radians * CesiumMath.DEGREES_PER_RADIAN;\n};\n\n/**\n * Converts a longitude value, in radians, to the range [-Math.PI
, Math.PI
).\n *\n * @param {number} angle The longitude value, in radians, to convert to the range [-Math.PI
, Math.PI
).\n * @returns {number} The equivalent longitude value in the range [-Math.PI
, Math.PI
).\n *\n * @example\n * // Convert 270 degrees to -90 degrees longitude\n * const longitude = Cesium.Math.convertLongitudeRange(Cesium.Math.toRadians(270.0));\n */\nCesiumMath.convertLongitudeRange = function (angle) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(angle)) {\n throw new DeveloperError(\"angle is required.\");\n }\n //>>includeEnd('debug');\n const twoPi = CesiumMath.TWO_PI;\n\n const simplified = angle - Math.floor(angle / twoPi) * twoPi;\n\n if (simplified < -Math.PI) {\n return simplified + twoPi;\n }\n if (simplified >= Math.PI) {\n return simplified - twoPi;\n }\n\n return simplified;\n};\n\n/**\n * Convenience function that clamps a latitude value, in radians, to the range [-Math.PI/2
, Math.PI/2
).\n * Useful for sanitizing data before use in objects requiring correct range.\n *\n * @param {number} angle The latitude value, in radians, to clamp to the range [-Math.PI/2
, Math.PI/2
).\n * @returns {number} The latitude value clamped to the range [-Math.PI/2
, Math.PI/2
).\n *\n * @example\n * // Clamp 108 degrees latitude to 90 degrees latitude\n * const latitude = Cesium.Math.clampToLatitudeRange(Cesium.Math.toRadians(108.0));\n */\nCesiumMath.clampToLatitudeRange = function (angle) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(angle)) {\n throw new DeveloperError(\"angle is required.\");\n }\n //>>includeEnd('debug');\n\n return CesiumMath.clamp(\n angle,\n -1 * CesiumMath.PI_OVER_TWO,\n CesiumMath.PI_OVER_TWO,\n );\n};\n\n/**\n * Produces an angle in the range -Pi <= angle <= Pi which is equivalent to the provided angle.\n *\n * @param {number} angle in radians\n * @returns {number} The angle in the range [-CesiumMath.PI
, CesiumMath.PI
].\n */\nCesiumMath.negativePiToPi = function (angle) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(angle)) {\n throw new DeveloperError(\"angle is required.\");\n }\n //>>includeEnd('debug');\n if (angle >= -CesiumMath.PI && angle <= CesiumMath.PI) {\n // Early exit if the input is already inside the range. This avoids\n // unnecessary math which could introduce floating point error.\n return angle;\n }\n return CesiumMath.zeroToTwoPi(angle + CesiumMath.PI) - CesiumMath.PI;\n};\n\n/**\n * Produces an angle in the range 0 <= angle <= 2Pi which is equivalent to the provided angle.\n *\n * @param {number} angle in radians\n * @returns {number} The angle in the range [0, CesiumMath.TWO_PI
].\n */\nCesiumMath.zeroToTwoPi = function (angle) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(angle)) {\n throw new DeveloperError(\"angle is required.\");\n }\n //>>includeEnd('debug');\n if (angle >= 0 && angle <= CesiumMath.TWO_PI) {\n // Early exit if the input is already inside the range. This avoids\n // unnecessary math which could introduce floating point error.\n return angle;\n }\n const mod = CesiumMath.mod(angle, CesiumMath.TWO_PI);\n if (\n Math.abs(mod) < CesiumMath.EPSILON14 &&\n Math.abs(angle) > CesiumMath.EPSILON14\n ) {\n return CesiumMath.TWO_PI;\n }\n return mod;\n};\n\n/**\n * The modulo operation that also works for negative dividends.\n *\n * @param {number} m The dividend.\n * @param {number} n The divisor.\n * @returns {number} The remainder.\n */\nCesiumMath.mod = function (m, n) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(m)) {\n throw new DeveloperError(\"m is required.\");\n }\n if (!defined(n)) {\n throw new DeveloperError(\"n is required.\");\n }\n if (n === 0.0) {\n throw new DeveloperError(\"divisor cannot be 0.\");\n }\n //>>includeEnd('debug');\n if (CesiumMath.sign(m) === CesiumMath.sign(n) && Math.abs(m) < Math.abs(n)) {\n // Early exit if the input does not need to be modded. This avoids\n // unnecessary math which could introduce floating point error.\n return m;\n }\n\n return ((m % n) + n) % n;\n};\n\n/**\n * Determines if two values are equal using an absolute or relative tolerance test. This is useful\n * to avoid problems due to roundoff error when comparing floating-point values directly. The values are\n * first compared using an absolute tolerance test. If that fails, a relative tolerance test is performed.\n * Use this test if you are unsure of the magnitudes of left and right.\n *\n * @param {number} left The first value to compare.\n * @param {number} right The other value to compare.\n * @param {number} [relativeEpsilon=0] The maximum inclusive delta between left
and right
for the relative tolerance test.\n * @param {number} [absoluteEpsilon=relativeEpsilon] The maximum inclusive delta between left
and right
for the absolute tolerance test.\n * @returns {boolean} true
if the values are equal within the epsilon; otherwise, false
.\n *\n * @example\n * const a = Cesium.Math.equalsEpsilon(0.0, 0.01, Cesium.Math.EPSILON2); // true\n * const b = Cesium.Math.equalsEpsilon(0.0, 0.1, Cesium.Math.EPSILON2); // false\n * const c = Cesium.Math.equalsEpsilon(3699175.1634344, 3699175.2, Cesium.Math.EPSILON7); // true\n * const d = Cesium.Math.equalsEpsilon(3699175.1634344, 3699175.2, Cesium.Math.EPSILON9); // false\n */\nCesiumMath.equalsEpsilon = function (\n left,\n right,\n relativeEpsilon,\n absoluteEpsilon,\n) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(left)) {\n throw new DeveloperError(\"left is required.\");\n }\n if (!defined(right)) {\n throw new DeveloperError(\"right is required.\");\n }\n //>>includeEnd('debug');\n\n relativeEpsilon = defaultValue(relativeEpsilon, 0.0);\n absoluteEpsilon = defaultValue(absoluteEpsilon, relativeEpsilon);\n const absDiff = Math.abs(left - right);\n return (\n absDiff <= absoluteEpsilon ||\n absDiff <= relativeEpsilon * Math.max(Math.abs(left), Math.abs(right))\n );\n};\n\n/**\n * Determines if the left value is less than the right value. If the two values are within\n * absoluteEpsilon
of each other, they are considered equal and this function returns false.\n *\n * @param {number} left The first number to compare.\n * @param {number} right The second number to compare.\n * @param {number} absoluteEpsilon The absolute epsilon to use in comparison.\n * @returns {boolean} true
if left
is less than right
by more than\n * absoluteEpsilon. false
if left
is greater or if the two\n * values are nearly equal.\n */\nCesiumMath.lessThan = function (left, right, absoluteEpsilon) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(left)) {\n throw new DeveloperError(\"first is required.\");\n }\n if (!defined(right)) {\n throw new DeveloperError(\"second is required.\");\n }\n if (!defined(absoluteEpsilon)) {\n throw new DeveloperError(\"absoluteEpsilon is required.\");\n }\n //>>includeEnd('debug');\n return left - right < -absoluteEpsilon;\n};\n\n/**\n * Determines if the left value is less than or equal to the right value. If the two values are within\n * absoluteEpsilon
of each other, they are considered equal and this function returns true.\n *\n * @param {number} left The first number to compare.\n * @param {number} right The second number to compare.\n * @param {number} absoluteEpsilon The absolute epsilon to use in comparison.\n * @returns {boolean} true
if left
is less than right
or if the\n * the values are nearly equal.\n */\nCesiumMath.lessThanOrEquals = function (left, right, absoluteEpsilon) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(left)) {\n throw new DeveloperError(\"first is required.\");\n }\n if (!defined(right)) {\n throw new DeveloperError(\"second is required.\");\n }\n if (!defined(absoluteEpsilon)) {\n throw new DeveloperError(\"absoluteEpsilon is required.\");\n }\n //>>includeEnd('debug');\n return left - right < absoluteEpsilon;\n};\n\n/**\n * Determines if the left value is greater the right value. If the two values are within\n * absoluteEpsilon
of each other, they are considered equal and this function returns false.\n *\n * @param {number} left The first number to compare.\n * @param {number} right The second number to compare.\n * @param {number} absoluteEpsilon The absolute epsilon to use in comparison.\n * @returns {boolean} true
if left
is greater than right
by more than\n * absoluteEpsilon. false
if left
is less or if the two\n * values are nearly equal.\n */\nCesiumMath.greaterThan = function (left, right, absoluteEpsilon) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(left)) {\n throw new DeveloperError(\"first is required.\");\n }\n if (!defined(right)) {\n throw new DeveloperError(\"second is required.\");\n }\n if (!defined(absoluteEpsilon)) {\n throw new DeveloperError(\"absoluteEpsilon is required.\");\n }\n //>>includeEnd('debug');\n return left - right > absoluteEpsilon;\n};\n\n/**\n * Determines if the left value is greater than or equal to the right value. If the two values are within\n * absoluteEpsilon
of each other, they are considered equal and this function returns true.\n *\n * @param {number} left The first number to compare.\n * @param {number} right The second number to compare.\n * @param {number} absoluteEpsilon The absolute epsilon to use in comparison.\n * @returns {boolean} true
if left
is greater than right
or if the\n * the values are nearly equal.\n */\nCesiumMath.greaterThanOrEquals = function (left, right, absoluteEpsilon) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(left)) {\n throw new DeveloperError(\"first is required.\");\n }\n if (!defined(right)) {\n throw new DeveloperError(\"second is required.\");\n }\n if (!defined(absoluteEpsilon)) {\n throw new DeveloperError(\"absoluteEpsilon is required.\");\n }\n //>>includeEnd('debug');\n return left - right > -absoluteEpsilon;\n};\n\nconst factorials = [1];\n\n/**\n * Computes the factorial of the provided number.\n *\n * @param {number} n The number whose factorial is to be computed.\n * @returns {number} The factorial of the provided number or undefined if the number is less than 0.\n *\n * @exception {DeveloperError} A number greater than or equal to 0 is required.\n *\n *\n * @example\n * //Compute 7!, which is equal to 5040\n * const computedFactorial = Cesium.Math.factorial(7);\n *\n * @see {@link http://en.wikipedia.org/wiki/Factorial|Factorial on Wikipedia}\n */\nCesiumMath.factorial = function (n) {\n //>>includeStart('debug', pragmas.debug);\n if (typeof n !== \"number\" || n < 0) {\n throw new DeveloperError(\n \"A number greater than or equal to 0 is required.\",\n );\n }\n //>>includeEnd('debug');\n\n const length = factorials.length;\n if (n >= length) {\n let sum = factorials[length - 1];\n for (let i = length; i <= n; i++) {\n const next = sum * i;\n factorials.push(next);\n sum = next;\n }\n }\n return factorials[n];\n};\n\n/**\n * Increments a number with a wrapping to a minimum value if the number exceeds the maximum value.\n *\n * @param {number} [n] The number to be incremented.\n * @param {number} [maximumValue] The maximum incremented value before rolling over to the minimum value.\n * @param {number} [minimumValue=0.0] The number reset to after the maximum value has been exceeded.\n * @returns {number} The incremented number.\n *\n * @exception {DeveloperError} Maximum value must be greater than minimum value.\n *\n * @example\n * const n = Cesium.Math.incrementWrap(5, 10, 0); // returns 6\n * const m = Cesium.Math.incrementWrap(10, 10, 0); // returns 0\n */\nCesiumMath.incrementWrap = function (n, maximumValue, minimumValue) {\n minimumValue = defaultValue(minimumValue, 0.0);\n\n //>>includeStart('debug', pragmas.debug);\n if (!defined(n)) {\n throw new DeveloperError(\"n is required.\");\n }\n if (maximumValue <= minimumValue) {\n throw new DeveloperError(\"maximumValue must be greater than minimumValue.\");\n }\n //>>includeEnd('debug');\n\n ++n;\n if (n > maximumValue) {\n n = minimumValue;\n }\n return n;\n};\n\n/**\n * Determines if a non-negative integer is a power of two.\n * The maximum allowed input is (2^32)-1 due to 32-bit bitwise operator limitation in Javascript.\n *\n * @param {number} n The integer to test in the range [0, (2^32)-1].\n * @returns {boolean} true
if the number if a power of two; otherwise, false
.\n *\n * @exception {DeveloperError} A number between 0 and (2^32)-1 is required.\n *\n * @example\n * const t = Cesium.Math.isPowerOfTwo(16); // true\n * const f = Cesium.Math.isPowerOfTwo(20); // false\n */\nCesiumMath.isPowerOfTwo = function (n) {\n //>>includeStart('debug', pragmas.debug);\n if (typeof n !== \"number\" || n < 0 || n > 4294967295) {\n throw new DeveloperError(\"A number between 0 and (2^32)-1 is required.\");\n }\n //>>includeEnd('debug');\n\n return n !== 0 && (n & (n - 1)) === 0;\n};\n\n/**\n * Computes the next power-of-two integer greater than or equal to the provided non-negative integer.\n * The maximum allowed input is 2^31 due to 32-bit bitwise operator limitation in Javascript.\n *\n * @param {number} n The integer to test in the range [0, 2^31].\n * @returns {number} The next power-of-two integer.\n *\n * @exception {DeveloperError} A number between 0 and 2^31 is required.\n *\n * @example\n * const n = Cesium.Math.nextPowerOfTwo(29); // 32\n * const m = Cesium.Math.nextPowerOfTwo(32); // 32\n */\nCesiumMath.nextPowerOfTwo = function (n) {\n //>>includeStart('debug', pragmas.debug);\n if (typeof n !== \"number\" || n < 0 || n > 2147483648) {\n throw new DeveloperError(\"A number between 0 and 2^31 is required.\");\n }\n //>>includeEnd('debug');\n\n // From http://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2\n --n;\n n |= n >> 1;\n n |= n >> 2;\n n |= n >> 4;\n n |= n >> 8;\n n |= n >> 16;\n ++n;\n\n return n;\n};\n\n/**\n * Computes the previous power-of-two integer less than or equal to the provided non-negative integer.\n * The maximum allowed input is (2^32)-1 due to 32-bit bitwise operator limitation in Javascript.\n *\n * @param {number} n The integer to test in the range [0, (2^32)-1].\n * @returns {number} The previous power-of-two integer.\n *\n * @exception {DeveloperError} A number between 0 and (2^32)-1 is required.\n *\n * @example\n * const n = Cesium.Math.previousPowerOfTwo(29); // 16\n * const m = Cesium.Math.previousPowerOfTwo(32); // 32\n */\nCesiumMath.previousPowerOfTwo = function (n) {\n //>>includeStart('debug', pragmas.debug);\n if (typeof n !== \"number\" || n < 0 || n > 4294967295) {\n throw new DeveloperError(\"A number between 0 and (2^32)-1 is required.\");\n }\n //>>includeEnd('debug');\n\n n |= n >> 1;\n n |= n >> 2;\n n |= n >> 4;\n n |= n >> 8;\n n |= n >> 16;\n n |= n >> 32;\n\n // The previous bitwise operations implicitly convert to signed 32-bit. Use `>>>` to convert to unsigned\n n = (n >>> 0) - (n >>> 1);\n\n return n;\n};\n\n/**\n * Constraint a value to lie between two values.\n *\n * @param {number} value The value to clamp.\n * @param {number} min The minimum value.\n * @param {number} max The maximum value.\n * @returns {number} The clamped value such that min <= result <= max.\n */\nCesiumMath.clamp = function (value, min, max) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.number(\"value\", value);\n Check.typeOf.number(\"min\", min);\n Check.typeOf.number(\"max\", max);\n //>>includeEnd('debug');\n\n return value < min ? min : value > max ? max : value;\n};\n\nlet randomNumberGenerator = new MersenneTwister();\n\n/**\n * Sets the seed used by the random number generator\n * in {@link CesiumMath#nextRandomNumber}.\n *\n * @param {number} seed An integer used as the seed.\n */\nCesiumMath.setRandomNumberSeed = function (seed) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(seed)) {\n throw new DeveloperError(\"seed is required.\");\n }\n //>>includeEnd('debug');\n\n randomNumberGenerator = new MersenneTwister(seed);\n};\n\n/**\n * Generates a random floating point number in the range of [0.0, 1.0)\n * using a Mersenne twister.\n *\n * @returns {number} A random number in the range of [0.0, 1.0).\n *\n * @see CesiumMath.setRandomNumberSeed\n * @see {@link http://en.wikipedia.org/wiki/Mersenne_twister|Mersenne twister on Wikipedia}\n */\nCesiumMath.nextRandomNumber = function () {\n return randomNumberGenerator.random();\n};\n\n/**\n * Generates a random number between two numbers.\n *\n * @param {number} min The minimum value.\n * @param {number} max The maximum value.\n * @returns {number} A random number between the min and max.\n */\nCesiumMath.randomBetween = function (min, max) {\n return CesiumMath.nextRandomNumber() * (max - min) + min;\n};\n\n/**\n * Computes Math.acos(value)
, but first clamps value
to the range [-1.0, 1.0]\n * so that the function will never return NaN.\n *\n * @param {number} value The value for which to compute acos.\n * @returns {number} The acos of the value if the value is in the range [-1.0, 1.0], or the acos of -1.0 or 1.0,\n * whichever is closer, if the value is outside the range.\n */\nCesiumMath.acosClamped = function (value) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(value)) {\n throw new DeveloperError(\"value is required.\");\n }\n //>>includeEnd('debug');\n return Math.acos(CesiumMath.clamp(value, -1.0, 1.0));\n};\n\n/**\n * Computes Math.asin(value)
, but first clamps value
to the range [-1.0, 1.0]\n * so that the function will never return NaN.\n *\n * @param {number} value The value for which to compute asin.\n * @returns {number} The asin of the value if the value is in the range [-1.0, 1.0], or the asin of -1.0 or 1.0,\n * whichever is closer, if the value is outside the range.\n */\nCesiumMath.asinClamped = function (value) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(value)) {\n throw new DeveloperError(\"value is required.\");\n }\n //>>includeEnd('debug');\n return Math.asin(CesiumMath.clamp(value, -1.0, 1.0));\n};\n\n/**\n * Finds the chord length between two points given the circle's radius and the angle between the points.\n *\n * @param {number} angle The angle between the two points.\n * @param {number} radius The radius of the circle.\n * @returns {number} The chord length.\n */\nCesiumMath.chordLength = function (angle, radius) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(angle)) {\n throw new DeveloperError(\"angle is required.\");\n }\n if (!defined(radius)) {\n throw new DeveloperError(\"radius is required.\");\n }\n //>>includeEnd('debug');\n return 2.0 * radius * Math.sin(angle * 0.5);\n};\n\n/**\n * Finds the logarithm of a number to a base.\n *\n * @param {number} number The number.\n * @param {number} base The base.\n * @returns {number} The result.\n */\nCesiumMath.logBase = function (number, base) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(number)) {\n throw new DeveloperError(\"number is required.\");\n }\n if (!defined(base)) {\n throw new DeveloperError(\"base is required.\");\n }\n //>>includeEnd('debug');\n return Math.log(number) / Math.log(base);\n};\n\n/**\n * Finds the cube root of a number.\n * Returns NaN if number
is not provided.\n *\n * @function\n * @param {number} [number] The number.\n * @returns {number} The result.\n */\nCesiumMath.cbrt = defaultValue(Math.cbrt, function cbrt(number) {\n const result = Math.pow(Math.abs(number), 1.0 / 3.0);\n return number < 0.0 ? -result : result;\n});\n\n/**\n * Finds the base 2 logarithm of a number.\n *\n * @function\n * @param {number} number The number.\n * @returns {number} The result.\n */\nCesiumMath.log2 = defaultValue(Math.log2, function log2(number) {\n return Math.log(number) * Math.LOG2E;\n});\n\n/**\n * Calculate the fog impact at a given distance. Useful for culling.\n * Matches the equation in `fog.glsl`\n * @private\n */\nCesiumMath.fog = function (distanceToCamera, density) {\n const scalar = distanceToCamera * density;\n return 1.0 - Math.exp(-(scalar * scalar));\n};\n\n/**\n * Computes a fast approximation of Atan for input in the range [-1, 1].\n *\n * Based on Michal Drobot's approximation from ShaderFastLibs,\n * which in turn is based on \"Efficient approximations for the arctangent function,\"\n * Rajan, S. Sichun Wang Inkol, R. Joyal, A., May 2006.\n * Adapted from ShaderFastLibs under MIT License.\n *\n * @param {number} x An input number in the range [-1, 1]\n * @returns {number} An approximation of atan(x)\n */\nCesiumMath.fastApproximateAtan = function (x) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.number(\"x\", x);\n //>>includeEnd('debug');\n\n return x * (-0.1784 * Math.abs(x) - 0.0663 * x * x + 1.0301);\n};\n\n/**\n * Computes a fast approximation of Atan2(x, y) for arbitrary input scalars.\n *\n * Range reduction math based on nvidia's cg reference implementation: http://developer.download.nvidia.com/cg/atan2.html\n *\n * @param {number} x An input number that isn't zero if y is zero.\n * @param {number} y An input number that isn't zero if x is zero.\n * @returns {number} An approximation of atan2(x, y)\n */\nCesiumMath.fastApproximateAtan2 = function (x, y) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.number(\"x\", x);\n Check.typeOf.number(\"y\", y);\n //>>includeEnd('debug');\n\n // atan approximations are usually only reliable over [-1, 1]\n // So reduce the range by flipping whether x or y is on top based on which is bigger.\n let opposite;\n let t = Math.abs(x); // t used as swap and atan result.\n opposite = Math.abs(y);\n const adjacent = Math.max(t, opposite);\n opposite = Math.min(t, opposite);\n\n const oppositeOverAdjacent = opposite / adjacent;\n //>>includeStart('debug', pragmas.debug);\n if (isNaN(oppositeOverAdjacent)) {\n throw new DeveloperError(\"either x or y must be nonzero\");\n }\n //>>includeEnd('debug');\n t = CesiumMath.fastApproximateAtan(oppositeOverAdjacent);\n\n // Undo range reduction\n t = Math.abs(y) > Math.abs(x) ? CesiumMath.PI_OVER_TWO - t : t;\n t = x < 0.0 ? CesiumMath.PI - t : t;\n t = y < 0.0 ? -t : t;\n return t;\n};\nexport default CesiumMath;\n","/*\n https://github.com/banksean wrapped Makoto Matsumoto and Takuji Nishimura's code in a namespace\n so it's better encapsulated. Now you can have multiple random number generators\n and they won't stomp all over eachother's state.\n\n If you want to use this as a substitute for Math.random(), use the random()\n method like so:\n\n var m = new MersenneTwister();\n var randomNumber = m.random();\n\n You can also call the other genrand_{foo}() methods on the instance.\n\n If you want to use a specific seed in order to get a repeatable random\n sequence, pass an integer into the constructor:\n\n var m = new MersenneTwister(123);\n\n and that will always produce the same random sequence.\n\n Sean McCullough (banksean@gmail.com)\n*/\n\n/*\n A C-program for MT19937, with initialization improved 2002/1/26.\n Coded by Takuji Nishimura and Makoto Matsumoto.\n\n Before using, initialize the state by using init_seed(seed)\n or init_by_array(init_key, key_length).\n\n Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,\n All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions\n are met:\n\n 1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. The names of its contributors may not be used to endorse or promote\n products derived from this software without specific prior written\n permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\n Any feedback is very welcome.\n http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html\n email: m-mat @ math.sci.hiroshima-u.ac.jp (remove space)\n*/\n\nvar MersenneTwister = function(seed) {\n\tif (seed == undefined) {\n\t\tseed = new Date().getTime();\n\t}\n\n\t/* Period parameters */\n\tthis.N = 624;\n\tthis.M = 397;\n\tthis.MATRIX_A = 0x9908b0df; /* constant vector a */\n\tthis.UPPER_MASK = 0x80000000; /* most significant w-r bits */\n\tthis.LOWER_MASK = 0x7fffffff; /* least significant r bits */\n\n\tthis.mt = new Array(this.N); /* the array for the state vector */\n\tthis.mti=this.N+1; /* mti==N+1 means mt[N] is not initialized */\n\n\tif (seed.constructor == Array) {\n\t\tthis.init_by_array(seed, seed.length);\n\t}\n\telse {\n\t\tthis.init_seed(seed);\n\t}\n}\n\n/* initializes mt[N] with a seed */\n/* origin name init_genrand */\nMersenneTwister.prototype.init_seed = function(s) {\n\tthis.mt[0] = s >>> 0;\n\tfor (this.mti=1; this.mti>> 30);\n\t\tthis.mt[this.mti] = (((((s & 0xffff0000) >>> 16) * 1812433253) << 16) + (s & 0x0000ffff) * 1812433253)\n\t\t+ this.mti;\n\t\t/* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */\n\t\t/* In the previous versions, MSBs of the seed affect */\n\t\t/* only MSBs of the array mt[]. */\n\t\t/* 2002/01/09 modified by Makoto Matsumoto */\n\t\tthis.mt[this.mti] >>>= 0;\n\t\t/* for >32 bit machines */\n\t}\n}\n\n/* initialize by an array with array-length */\n/* init_key is the array for initializing keys */\n/* key_length is its length */\n/* slight change for C++, 2004/2/26 */\nMersenneTwister.prototype.init_by_array = function(init_key, key_length) {\n\tvar i, j, k;\n\tthis.init_seed(19650218);\n\ti=1; j=0;\n\tk = (this.N>key_length ? this.N : key_length);\n\tfor (; k; k--) {\n\t\tvar s = this.mt[i-1] ^ (this.mt[i-1] >>> 30)\n\t\tthis.mt[i] = (this.mt[i] ^ (((((s & 0xffff0000) >>> 16) * 1664525) << 16) + ((s & 0x0000ffff) * 1664525)))\n\t\t+ init_key[j] + j; /* non linear */\n\t\tthis.mt[i] >>>= 0; /* for WORDSIZE > 32 machines */\n\t\ti++; j++;\n\t\tif (i>=this.N) { this.mt[0] = this.mt[this.N-1]; i=1; }\n\t\tif (j>=key_length) j=0;\n\t}\n\tfor (k=this.N-1; k; k--) {\n\t\tvar s = this.mt[i-1] ^ (this.mt[i-1] >>> 30);\n\t\tthis.mt[i] = (this.mt[i] ^ (((((s & 0xffff0000) >>> 16) * 1566083941) << 16) + (s & 0x0000ffff) * 1566083941))\n\t\t- i; /* non linear */\n\t\tthis.mt[i] >>>= 0; /* for WORDSIZE > 32 machines */\n\t\ti++;\n\t\tif (i>=this.N) { this.mt[0] = this.mt[this.N-1]; i=1; }\n\t}\n\n\tthis.mt[0] = 0x80000000; /* MSB is 1; assuring non-zero initial array */\n}\n\n/* generates a random number on [0,0xffffffff]-interval */\n/* origin name genrand_int32 */\nMersenneTwister.prototype.random_int = function() {\n\tvar y;\n\tvar mag01 = new Array(0x0, this.MATRIX_A);\n\t/* mag01[x] = x * MATRIX_A for x=0,1 */\n\n\tif (this.mti >= this.N) { /* generate N words at one time */\n\t\tvar kk;\n\n\t\tif (this.mti == this.N+1) /* if init_seed() has not been called, */\n\t\t\tthis.init_seed(5489); /* a default initial seed is used */\n\n\t\tfor (kk=0;kk>> 1) ^ mag01[y & 0x1];\n\t\t}\n\t\tfor (;kk>> 1) ^ mag01[y & 0x1];\n\t\t}\n\t\ty = (this.mt[this.N-1]&this.UPPER_MASK)|(this.mt[0]&this.LOWER_MASK);\n\t\tthis.mt[this.N-1] = this.mt[this.M-1] ^ (y >>> 1) ^ mag01[y & 0x1];\n\n\t\tthis.mti = 0;\n\t}\n\n\ty = this.mt[this.mti++];\n\n\t/* Tempering */\n\ty ^= (y >>> 11);\n\ty ^= (y << 7) & 0x9d2c5680;\n\ty ^= (y << 15) & 0xefc60000;\n\ty ^= (y >>> 18);\n\n\treturn y >>> 0;\n}\n\n/* generates a random number on [0,0x7fffffff]-interval */\n/* origin name genrand_int31 */\nMersenneTwister.prototype.random_int31 = function() {\n\treturn (this.random_int()>>>1);\n}\n\n/* generates a random number on [0,1]-real-interval */\n/* origin name genrand_real1 */\nMersenneTwister.prototype.random_incl = function() {\n\treturn this.random_int()*(1.0/4294967295.0);\n\t/* divided by 2^32-1 */\n}\n\n/* generates a random number on [0,1)-real-interval */\nMersenneTwister.prototype.random = function() {\n\treturn this.random_int()*(1.0/4294967296.0);\n\t/* divided by 2^32 */\n}\n\n/* generates a random number on (0,1)-real-interval */\n/* origin name genrand_real3 */\nMersenneTwister.prototype.random_excl = function() {\n\treturn (this.random_int() + 0.5)*(1.0/4294967296.0);\n\t/* divided by 2^32 */\n}\n\n/* generates a random number on [0,1) with 53-bit resolution*/\n/* origin name genrand_res53 */\nMersenneTwister.prototype.random_long = function() {\n\tvar a=this.random_int()>>>5, b=this.random_int()>>>6;\n\treturn(a*67108864.0+b)*(1.0/9007199254740992.0);\n}\n\n/* These real versions are due to Isaku Wada, 2002/01/09 added */\n\nmodule.exports = MersenneTwister;\n","import defined from \"./defined.js\";\nimport DeveloperError from \"./DeveloperError.js\";\n\n/**\n * Contains functions for checking that supplied arguments are of a specified type\n * or meet specified conditions\n */\nconst Check = {};\n\n/**\n * Contains type checking functions, all using the typeof operator\n */\nCheck.typeOf = {};\n\nfunction getUndefinedErrorMessage(name) {\n return `${name} is required, actual value was undefined`;\n}\n\nfunction getFailedTypeErrorMessage(actual, expected, name) {\n return `Expected ${name} to be typeof ${expected}, actual typeof was ${actual}`;\n}\n\n/**\n * Throws if test is not defined\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value that is to be checked\n * @exception {DeveloperError} test must be defined\n */\nCheck.defined = function (name, test) {\n if (!defined(test)) {\n throw new DeveloperError(getUndefinedErrorMessage(name));\n }\n};\n\n/**\n * Throws if test is not typeof 'function'\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'function'\n */\nCheck.typeOf.func = function (name, test) {\n if (typeof test !== \"function\") {\n throw new DeveloperError(\n getFailedTypeErrorMessage(typeof test, \"function\", name),\n );\n }\n};\n\n/**\n * Throws if test is not typeof 'string'\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'string'\n */\nCheck.typeOf.string = function (name, test) {\n if (typeof test !== \"string\") {\n throw new DeveloperError(\n getFailedTypeErrorMessage(typeof test, \"string\", name),\n );\n }\n};\n\n/**\n * Throws if test is not typeof 'number'\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'number'\n */\nCheck.typeOf.number = function (name, test) {\n if (typeof test !== \"number\") {\n throw new DeveloperError(\n getFailedTypeErrorMessage(typeof test, \"number\", name),\n );\n }\n};\n\n/**\n * Throws if test is not typeof 'number' and less than limit\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @param {number} limit The limit value to compare against\n * @exception {DeveloperError} test must be typeof 'number' and less than limit\n */\nCheck.typeOf.number.lessThan = function (name, test, limit) {\n Check.typeOf.number(name, test);\n if (test >= limit) {\n throw new DeveloperError(\n `Expected ${name} to be less than ${limit}, actual value was ${test}`,\n );\n }\n};\n\n/**\n * Throws if test is not typeof 'number' and less than or equal to limit\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @param {number} limit The limit value to compare against\n * @exception {DeveloperError} test must be typeof 'number' and less than or equal to limit\n */\nCheck.typeOf.number.lessThanOrEquals = function (name, test, limit) {\n Check.typeOf.number(name, test);\n if (test > limit) {\n throw new DeveloperError(\n `Expected ${name} to be less than or equal to ${limit}, actual value was ${test}`,\n );\n }\n};\n\n/**\n * Throws if test is not typeof 'number' and greater than limit\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @param {number} limit The limit value to compare against\n * @exception {DeveloperError} test must be typeof 'number' and greater than limit\n */\nCheck.typeOf.number.greaterThan = function (name, test, limit) {\n Check.typeOf.number(name, test);\n if (test <= limit) {\n throw new DeveloperError(\n `Expected ${name} to be greater than ${limit}, actual value was ${test}`,\n );\n }\n};\n\n/**\n * Throws if test is not typeof 'number' and greater than or equal to limit\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @param {number} limit The limit value to compare against\n * @exception {DeveloperError} test must be typeof 'number' and greater than or equal to limit\n */\nCheck.typeOf.number.greaterThanOrEquals = function (name, test, limit) {\n Check.typeOf.number(name, test);\n if (test < limit) {\n throw new DeveloperError(\n `Expected ${name} to be greater than or equal to ${limit}, actual value was ${test}`,\n );\n }\n};\n\n/**\n * Throws if test is not typeof 'object'\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'object'\n */\nCheck.typeOf.object = function (name, test) {\n if (typeof test !== \"object\") {\n throw new DeveloperError(\n getFailedTypeErrorMessage(typeof test, \"object\", name),\n );\n }\n};\n\n/**\n * Throws if test is not typeof 'boolean'\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'boolean'\n */\nCheck.typeOf.bool = function (name, test) {\n if (typeof test !== \"boolean\") {\n throw new DeveloperError(\n getFailedTypeErrorMessage(typeof test, \"boolean\", name),\n );\n }\n};\n\n/**\n * Throws if test is not typeof 'bigint'\n *\n * @param {string} name The name of the variable being tested\n * @param {*} test The value to test\n * @exception {DeveloperError} test must be typeof 'bigint'\n */\nCheck.typeOf.bigint = function (name, test) {\n if (typeof test !== \"bigint\") {\n throw new DeveloperError(\n getFailedTypeErrorMessage(typeof test, \"bigint\", name),\n );\n }\n};\n\n/**\n * Throws if test1 and test2 is not typeof 'number' and not equal in value\n *\n * @param {string} name1 The name of the first variable being tested\n * @param {string} name2 The name of the second variable being tested against\n * @param {*} test1 The value to test\n * @param {*} test2 The value to test against\n * @exception {DeveloperError} test1 and test2 should be type of 'number' and be equal in value\n */\nCheck.typeOf.number.equals = function (name1, name2, test1, test2) {\n Check.typeOf.number(name1, test1);\n Check.typeOf.number(name2, test2);\n if (test1 !== test2) {\n throw new DeveloperError(\n `${name1} must be equal to ${name2}, the actual values are ${test1} and ${test2}`,\n );\n }\n};\nexport default Check;\n","/**\n * @function\n *\n * @param {*} value The object.\n * @returns {boolean} Returns true if the object is defined, returns false otherwise.\n *\n * @example\n * if (Cesium.defined(positions)) {\n * doSomething();\n * } else {\n * doSomethingElse();\n * }\n */\nfunction defined(value) {\n return value !== undefined && value !== null;\n}\nexport default defined;\n","import defined from \"./defined.js\";\n\n/**\n * Constructs an exception object that is thrown due to a developer error, e.g., invalid argument,\n * argument out of range, etc. This exception should only be thrown during development;\n * it usually indicates a bug in the calling code. This exception should never be\n * caught; instead the calling code should strive not to generate it.\n *
\n * On the other hand, a {@link RuntimeError} indicates an exception that may\n * be thrown at runtime, e.g., out of memory, that the calling code should be prepared\n * to catch.\n *\n * @alias DeveloperError\n * @constructor\n * @extends Error\n *\n * @param {string} [message] The error message for this exception.\n *\n * @see RuntimeError\n */\nfunction DeveloperError(message) {\n /**\n * 'DeveloperError' indicating that this exception was thrown due to a developer error.\n * @type {string}\n * @readonly\n */\n this.name = \"DeveloperError\";\n\n /**\n * The explanation for why this exception was thrown.\n * @type {string}\n * @readonly\n */\n this.message = message;\n\n //Browsers such as IE don't have a stack property until you actually throw the error.\n let stack;\n try {\n throw new Error();\n } catch (e) {\n stack = e.stack;\n }\n\n /**\n * The stack trace of this exception, if available.\n * @type {string}\n * @readonly\n */\n this.stack = stack;\n}\n\nif (defined(Object.create)) {\n DeveloperError.prototype = Object.create(Error.prototype);\n DeveloperError.prototype.constructor = DeveloperError;\n}\n\nDeveloperError.prototype.toString = function () {\n let str = `${this.name}: ${this.message}`;\n\n if (defined(this.stack)) {\n str += `\\n${this.stack.toString()}`;\n }\n\n return str;\n};\n\n/**\n * @private\n */\nDeveloperError.throwInstantiationError = function () {\n throw new DeveloperError(\n \"This function defines an interface and should not be called directly.\",\n );\n};\nexport default DeveloperError;\n","/**\n * Returns the first parameter if not undefined, otherwise the second parameter.\n * Useful for setting a default value for a parameter.\n *\n * @function\n *\n * @param {*} a\n * @param {*} b\n * @returns {*} Returns the first parameter if not undefined, otherwise the second parameter.\n *\n * @example\n * param = Cesium.defaultValue(param, 'default');\n */\nfunction defaultValue(a, b) {\n if (a !== undefined && a !== null) {\n return a;\n }\n return b;\n}\n\n/**\n * A frozen empty object that can be used as the default value for options passed as\n * an object literal.\n * @type {object}\n * @memberof defaultValue\n */\ndefaultValue.EMPTY_OBJECT = Object.freeze({});\n\nexport default defaultValue;\n"],"names":["$parcel$interopDefault","a","__esModule","default","$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","parcelRegister","$06f1857ea76fc69e$export$2e2bcd8739ae039","$bnB1j","$3pzcG","$8w8ZH","$jQJji","$1vHsR","$06f1857ea76fc69e$var$CesiumMath","EPSILON1","EPSILON2","EPSILON3","EPSILON4","EPSILON5","EPSILON6","EPSILON7","EPSILON8","EPSILON9","EPSILON10","EPSILON11","EPSILON12","EPSILON13","EPSILON14","EPSILON15","EPSILON16","EPSILON17","EPSILON18","EPSILON19","EPSILON20","EPSILON21","GRAVITATIONALPARAMETER","SOLAR_RADIUS","LUNAR_RADIUS","SIXTY_FOUR_KILOBYTES","FOUR_GIGABYTES","sign","Math","value","signNotZero","toSNorm","rangeMaximum","round","clamp","fromSNorm","normalize","rangeMinimum","max","sinh","exp","cosh","lerp","p","q","time","PI","ONE_OVER_PI","PI_OVER_TWO","PI_OVER_THREE","PI_OVER_FOUR","PI_OVER_SIX","THREE_PI_OVER_TWO","TWO_PI","ONE_OVER_TWO_PI","RADIANS_PER_DEGREE","DEGREES_PER_RADIAN","RADIANS_PER_ARCSECOND","toRadians","degrees","toDegrees","radians","convertLongitudeRange","angle","twoPi","simplified","floor","clampToLatitudeRange","negativePiToPi","zeroToTwoPi","mod","abs","m","equalsEpsilon","left","right","relativeEpsilon","absoluteEpsilon","absDiff","lessThan","lessThanOrEquals","greaterThan","greaterThanOrEquals","$06f1857ea76fc69e$var$factorials","factorial","length","sum","i","next","push","incrementWrap","maximumValue","minimumValue","isPowerOfTwo","nextPowerOfTwo","previousPowerOfTwo","min","typeOf","number","$06f1857ea76fc69e$var$randomNumberGenerator","setRandomNumberSeed","seed","nextRandomNumber","random","randomBetween","acosClamped","acos","asinClamped","asin","chordLength","radius","sin","logBase","base","log","cbrt","result","pow","log2","LOG2E","fog","distanceToCamera","density","scalar","fastApproximateAtan","x","fastApproximateAtan2","y","opposite","t","adjacent","oppositeOverAdjacent","isNaN","$848e8f2059b51b3f$var$MersenneTwister","undefined","Date","getTime","N","M","MATRIX_A","UPPER_MASK","LOWER_MASK","mt","Array","mti","constructor","init_by_array","init_seed","prototype","init_key","key_length","j","k","random_int","kk","mag01","random_int31","random_incl","random_excl","random_long","b","$27bf03924417ee9b$export$2e2bcd8739ae039","$27bf03924417ee9b$var$Check","$27bf03924417ee9b$var$getFailedTypeErrorMessage","actual","expected","name","defined","test","func","string","limit","object","bool","bigint","equals","name1","name2","test1","test2","$e736054cd130cc46$export$2e2bcd8739ae039","$119a66d9b8a89652$export$2e2bcd8739ae039","$119a66d9b8a89652$var$DeveloperError","message","stack","create","toString","str","throwInstantiationError","$633849ec333ae991$var$defaultValue","$633849ec333ae991$export$2e2bcd8739ae039","EMPTY_OBJECT","freeze"],"version":3,"file":"cesium-binoculars.40a88c35.js.map"}
\ No newline at end of file
diff --git a/cesium-binoculars.html b/cesium-binoculars.html
index ddc5fb4..433fb9a 100644
--- a/cesium-binoculars.html
+++ b/cesium-binoculars.html
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/cesium-compass-bar.019a53c3.js.map b/cesium-compass-bar.019a53c3.js.map
deleted file mode 100644
index 5c0ae44..0000000
--- a/cesium-compass-bar.019a53c3.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"mappings":"A,I,E,W,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,E,Q,C,I,E,E,QCIe,OAAA,UAA+B,EAAA,UAAS,CACrD,WAAW,YAAa,CACtB,MAAO,CACL,MAAO,CAAE,KAAM,MAAO,EACtB,QAAS,CAAE,KAAM,MAAO,CAC1B,CACF,CAEA,WAAW,QAAS,CAClB,MAAO,AAAA,CAAA,EAAA,EAAA,GAAE,AAAF,CAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6CX,CAAC,AACH,CAEA,aAAc,CACZ,KAAK,GAKL,IAAI,CAAC,KAAK,CAKV,IAAI,CAAC,kBAAkB,CAKvB,IAAI,CAAC,sBAAsB,CAAG,IAChC,CAEA,SAAU,CACJ,IAAI,CAAC,KAAK,EAAI,CAAC,IAAI,CAAC,sBAAsB,GAC5C,IAAI,CAAC,sBAAsB,CAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAClE,KACE,IAAI,CAAC,OAAO,CAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,AAC1C,GAGF,IAAI,CAAC,kBAAkB,CAAG,SAAS,iBAAiB,IAAI,EAAE,gBAAgB,CAAC,6CAE/E,CAEA,aAAa,CAAK,CAAE,CAClB,IAAM,EAAQ,IAAI,CAAC,kBAAkB,CACjC,EAAY,CAAC,EAAQ,EACnB,EAAe,CAAC,IAAI,CAAC,OAAO,CAAI,CAAA,KAAK,EAAE,CAAG,CAAA,EAAK,EAC/C,EAAW,EAAe,EAQhC,OANI,EAAW,IACb,CAAA,GAAa,EAAI,CADnB,EAGI,EAAW,GACb,CAAA,GAAa,EAAI,CADnB,EAGO,CAAC,qBAAqB,EAAE,EAAe,EAAQ,EAAU,GAAG,CAAC,AACtE,CAEA,QAAS,CACP,IAAM,EAAQ,AAAA,CAAA,EAAA,EAAA,IAAG,AAAH,CAAI,CAAC;;QAEf,EAAE,MAAM,GACL,IAAI,GACJ,GAAG,CAAC,IAAM,AAAA,CAAA,EAAA,EAAA,IAAG,AAAH,CAAI,CAAC,uBAAuB,CAAC,EAAE;;IAEhD,CAAC,CACD,MAAO,AAAA,CAAA,EAAA,EAAA,IAAG,AAAH,CAAI,CAAC;;;qBAGK,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG;;YAEhC,EAAE,EAAM;;qBAEC,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG;;YAEhC,EAAE,EAAM;;qBAEC,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG;;YAEhC,EAAE,EAAM;;qBAEC,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG;;YAEhC,EAAE,EAAM;;qBAEC,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG;;YAEhC,EAAE,EAAM;;qBAEC,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;;YAEjC,EAAE,EAAM;;qBAEC,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;;YAEjC,EAAE,EAAM;;qBAEC,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;;YAEjC,EAAE,EAAM;;;;;IAKhB,CAAC,AACH,CACF,CAEA,eAAe,MAAM,CAAC,qBAAsB","sources":["","packages/cesium-compass-bar/cesium-compass-bar.js"],"sourcesContent":["\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequire5532\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequire5532\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\n\nvar $800sp = parcelRequire(\"800sp\");\nclass $98d8933019691929$export$2e2bcd8739ae039 extends (0, $800sp.LitElement) {\n static get properties() {\n return {\n scene: {\n type: Object\n },\n heading: {\n type: Number\n }\n };\n }\n static get styles() {\n return (0, $800sp.css)`\n :host {\n --cesium-compass-bar-tick-color: #000;\n --cesium-compass-bar-intercardinal-width: 100px;\n }\n :host * {\n box-sizing: content-box;\n }\n .container {\n display: flex;\n justify-content: center;\n height: 100%;\n overflow: hidden;\n }\n .compass-bar {\n display: flex;\n align-items: flex-end;\n }\n .compass-bar > div {\n width: var(--cesium-compass-bar-intercardinal-width);\n text-align: center;\n }\n .label {\n padding: 4px;\n color: var(--cesium-compass-bar-tick-color);\n }\n .ticks {\n display: flex;\n justify-content: space-around;\n }\n .ticks > div {\n width: 1px;\n height: 6px;\n background-color: var(--cesium-compass-bar-tick-color);\n }\n .ticks > div:nth-child(4) {\n height: 10px;\n }\n .center-tick {\n margin: auto;\n width: 4px;\n height: 4px;\n border-radius: 50%;\n background-color: var(--cesium-compass-bar-tick-color);\n }\n `;\n }\n constructor(){\n super();\n /**\n * @type {import('cesium').Scene}\n */ this.scene;\n /**\n * @type {number}\n */ this.intercardinalWidth;\n /**\n * @type {import('cesium').Event.RemoveCallback}\n */ this.unlistenFromPostRender = null;\n }\n updated() {\n if (this.scene && !this.unlistenFromPostRender) {\n this.unlistenFromPostRender = this.scene.postRender.addEventListener(()=>{\n this.heading = this.scene.camera.heading;\n });\n // FIXME: probably not the best place to compute this\n this.intercardinalWidth = parseInt(getComputedStyle(this).getPropertyValue(\"--cesium-compass-bar-intercardinal-width\"));\n }\n }\n getTransform(index) {\n const width = this.intercardinalWidth;\n let translate = -width / 2;\n const visibleIndex = -this.heading / (Math.PI / 4) + 4;\n const distance = visibleIndex - index;\n if (distance < -4) translate += 8 * width;\n if (distance > 4) translate -= 8 * width;\n return `transform: translate(${visibleIndex * width + translate}px)`;\n }\n render() {\n const ticks = (0, $800sp.html)`\n \n ${Array(7).fill().map(()=>(0, $800sp.html)``)}\n \n `;\n return (0, $800sp.html)`\n \n \n \n `;\n }\n}\ncustomElements.define(\"cesium-compass-bar\", $98d8933019691929$export$2e2bcd8739ae039);\n\n\n//# sourceMappingURL=cesium-compass-bar.019a53c3.js.map\n","import { LitElement, css, html } from \"lit\";\n\n// FIXME: configurable tick count\n\nexport default class CesiumCompassBar extends LitElement {\n static get properties() {\n return {\n scene: { type: Object },\n heading: { type: Number },\n };\n }\n\n static get styles() {\n return css`\n :host {\n --cesium-compass-bar-tick-color: #000;\n --cesium-compass-bar-intercardinal-width: 100px;\n }\n :host * {\n box-sizing: content-box;\n }\n .container {\n display: flex;\n justify-content: center;\n height: 100%;\n overflow: hidden;\n }\n .compass-bar {\n display: flex;\n align-items: flex-end;\n }\n .compass-bar > div {\n width: var(--cesium-compass-bar-intercardinal-width);\n text-align: center;\n }\n .label {\n padding: 4px;\n color: var(--cesium-compass-bar-tick-color);\n }\n .ticks {\n display: flex;\n justify-content: space-around;\n }\n .ticks > div {\n width: 1px;\n height: 6px;\n background-color: var(--cesium-compass-bar-tick-color);\n }\n .ticks > div:nth-child(4) {\n height: 10px;\n }\n .center-tick {\n margin: auto;\n width: 4px;\n height: 4px;\n border-radius: 50%;\n background-color: var(--cesium-compass-bar-tick-color);\n }\n `;\n }\n\n constructor() {\n super();\n\n /**\n * @type {import('cesium').Scene}\n */\n this.scene;\n\n /**\n * @type {number}\n */\n this.intercardinalWidth;\n\n /**\n * @type {import('cesium').Event.RemoveCallback}\n */\n this.unlistenFromPostRender = null;\n }\n\n updated() {\n if (this.scene && !this.unlistenFromPostRender) {\n this.unlistenFromPostRender = this.scene.postRender.addEventListener(\n () => {\n this.heading = this.scene.camera.heading;\n }\n );\n // FIXME: probably not the best place to compute this\n this.intercardinalWidth = parseInt(getComputedStyle(this).getPropertyValue('--cesium-compass-bar-intercardinal-width'));\n }\n }\n\n getTransform(index) {\n const width = this.intercardinalWidth;\n let translate = -width / 2;\n const visibleIndex = -this.heading / (Math.PI / 4) + 4;\n const distance = visibleIndex - index;\n\n if (distance < -4) {\n translate += 8 * width;\n }\n if (distance > 4) {\n translate -= 8 * width;\n }\n return `transform: translate(${visibleIndex * width + translate}px)`;\n }\n\n render() {\n const ticks = html`\n \n \n ${Array(7)\n .fill()\n .map(() => html``)}\n \n `;\n return html`\n \n \n \n `;\n }\n}\n\ncustomElements.define(\"cesium-compass-bar\", CesiumCompassBar);\n"],"names":["$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","$800sp","$98d8933019691929$export$2e2bcd8739ae039","LitElement","properties","scene","type","Object","heading","Number","styles","css","constructor","intercardinalWidth","unlistenFromPostRender","updated","postRender","addEventListener","camera","parseInt","getComputedStyle","getPropertyValue","getTransform","index","width","translate","visibleIndex","Math","PI","distance","render","ticks","html","Array","fill","map","customElements","define"],"version":3,"file":"cesium-compass-bar.019a53c3.js.map"}
\ No newline at end of file
diff --git a/cesium-compass-bar.019a53c3.js b/cesium-compass-bar.552ea5f1.js
similarity index 94%
rename from cesium-compass-bar.019a53c3.js
rename to cesium-compass-bar.552ea5f1.js
index d80e32f..25f5cf8 100644
--- a/cesium-compass-bar.019a53c3.js
+++ b/cesium-compass-bar.552ea5f1.js
@@ -1,4 +1,4 @@
-var e=globalThis,t={},i={},s=e.parcelRequire5532;null==s&&((s=function(e){if(e in t)return t[e].exports;if(e in i){var s=i[e];delete i[e];var r={id:e,exports:{}};return t[e]=r,s.call(r.exports,r,r.exports),r.exports}var a=Error("Cannot find module '"+e+"'");throw a.code="MODULE_NOT_FOUND",a}).register=function(e,t){i[e]=t},e.parcelRequire5532=s),s.register;var r=s("800sp");class a extends r.LitElement{static get properties(){return{scene:{type:Object},heading:{type:Number}}}static get styles(){return(0,r.css)`
+var e=globalThis,t={},i={},s=e.parcelRequire94c2;null==s&&((s=function(e){if(e in t)return t[e].exports;if(e in i){var s=i[e];delete i[e];var r={id:e,exports:{}};return t[e]=r,s.call(r.exports,r,r.exports),r.exports}var a=Error("Cannot find module '"+e+"'");throw a.code="MODULE_NOT_FOUND",a}).register=function(e,t){i[e]=t},e.parcelRequire94c2=s),s.register;var r=s("800sp");class a extends r.LitElement{static get properties(){return{scene:{type:Object},heading:{type:Number}}}static get styles(){return(0,r.css)`
:host {
--cesium-compass-bar-tick-color: #000;
--cesium-compass-bar-intercardinal-width: 100px;
@@ -86,4 +86,4 @@ var e=globalThis,t={},i={},s=e.parcelRequire5532;null==s&&((s=function(e){if(e i
`}}customElements.define("cesium-compass-bar",a);
-//# sourceMappingURL=cesium-compass-bar.019a53c3.js.map
+//# sourceMappingURL=cesium-compass-bar.552ea5f1.js.map
diff --git a/cesium-compass-bar.552ea5f1.js.map b/cesium-compass-bar.552ea5f1.js.map
new file mode 100644
index 0000000..c128914
--- /dev/null
+++ b/cesium-compass-bar.552ea5f1.js.map
@@ -0,0 +1 @@
+{"mappings":"A,I,E,W,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,E,Q,C,I,E,E,QCIe,OAAA,UAA+B,EAAA,UAAS,CACrD,WAAW,YAAa,CACtB,MAAO,CACL,MAAO,CAAE,KAAM,MAAO,EACtB,QAAS,CAAE,KAAM,MAAO,CAC1B,CACF,CAEA,WAAW,QAAS,CAClB,MAAO,AAAA,CAAA,EAAA,EAAA,GAAE,AAAF,CAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6CX,CAAC,AACH,CAEA,aAAc,CACZ,KAAK,GAKL,IAAI,CAAC,KAAK,CAKV,IAAI,CAAC,kBAAkB,CAKvB,IAAI,CAAC,sBAAsB,CAAG,IAChC,CAEA,SAAU,CACJ,IAAI,CAAC,KAAK,EAAI,CAAC,IAAI,CAAC,sBAAsB,GAC5C,IAAI,CAAC,sBAAsB,CAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAClE,KACE,IAAI,CAAC,OAAO,CAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,AAC1C,GAGF,IAAI,CAAC,kBAAkB,CAAG,SAAS,iBAAiB,IAAI,EAAE,gBAAgB,CAAC,6CAE/E,CAEA,aAAa,CAAK,CAAE,CAClB,IAAM,EAAQ,IAAI,CAAC,kBAAkB,CACjC,EAAY,CAAC,EAAQ,EACnB,EAAe,CAAC,IAAI,CAAC,OAAO,CAAI,CAAA,KAAK,EAAE,CAAG,CAAA,EAAK,EAC/C,EAAW,EAAe,EAQhC,OANI,EAAW,IACb,CAAA,GAAa,EAAI,CADnB,EAGI,EAAW,GACb,CAAA,GAAa,EAAI,CADnB,EAGO,CAAC,qBAAqB,EAAE,EAAe,EAAQ,EAAU,GAAG,CAAC,AACtE,CAEA,QAAS,CACP,IAAM,EAAQ,AAAA,CAAA,EAAA,EAAA,IAAG,AAAH,CAAI,CAAC;;QAEf,EAAE,MAAM,GACL,IAAI,GACJ,GAAG,CAAC,IAAM,AAAA,CAAA,EAAA,EAAA,IAAG,AAAH,CAAI,CAAC,uBAAuB,CAAC,EAAE;;IAEhD,CAAC,CACD,MAAO,AAAA,CAAA,EAAA,EAAA,IAAG,AAAH,CAAI,CAAC;;;qBAGK,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG;;YAEhC,EAAE,EAAM;;qBAEC,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG;;YAEhC,EAAE,EAAM;;qBAEC,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG;;YAEhC,EAAE,EAAM;;qBAEC,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG;;YAEhC,EAAE,EAAM;;qBAEC,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG;;YAEhC,EAAE,EAAM;;qBAEC,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;;YAEjC,EAAE,EAAM;;qBAEC,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;;YAEjC,EAAE,EAAM;;qBAEC,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;;YAEjC,EAAE,EAAM;;;;;IAKhB,CAAC,AACH,CACF,CAEA,eAAe,MAAM,CAAC,qBAAsB","sources":[" \n ","packages/cesium-compass-bar/cesium-compass-bar.js"],"sourcesContent":["\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequire94c2\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequire94c2\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\n\nvar $800sp = parcelRequire(\"800sp\");\nclass $98d8933019691929$export$2e2bcd8739ae039 extends (0, $800sp.LitElement) {\n static get properties() {\n return {\n scene: {\n type: Object\n },\n heading: {\n type: Number\n }\n };\n }\n static get styles() {\n return (0, $800sp.css)`\n :host {\n --cesium-compass-bar-tick-color: #000;\n --cesium-compass-bar-intercardinal-width: 100px;\n }\n :host * {\n box-sizing: content-box;\n }\n .container {\n display: flex;\n justify-content: center;\n height: 100%;\n overflow: hidden;\n }\n .compass-bar {\n display: flex;\n align-items: flex-end;\n }\n .compass-bar > div {\n width: var(--cesium-compass-bar-intercardinal-width);\n text-align: center;\n }\n .label {\n padding: 4px;\n color: var(--cesium-compass-bar-tick-color);\n }\n .ticks {\n display: flex;\n justify-content: space-around;\n }\n .ticks > div {\n width: 1px;\n height: 6px;\n background-color: var(--cesium-compass-bar-tick-color);\n }\n .ticks > div:nth-child(4) {\n height: 10px;\n }\n .center-tick {\n margin: auto;\n width: 4px;\n height: 4px;\n border-radius: 50%;\n background-color: var(--cesium-compass-bar-tick-color);\n }\n `;\n }\n constructor(){\n super();\n /**\n * @type {import('cesium').Scene}\n */ this.scene;\n /**\n * @type {number}\n */ this.intercardinalWidth;\n /**\n * @type {import('cesium').Event.RemoveCallback}\n */ this.unlistenFromPostRender = null;\n }\n updated() {\n if (this.scene && !this.unlistenFromPostRender) {\n this.unlistenFromPostRender = this.scene.postRender.addEventListener(()=>{\n this.heading = this.scene.camera.heading;\n });\n // FIXME: probably not the best place to compute this\n this.intercardinalWidth = parseInt(getComputedStyle(this).getPropertyValue('--cesium-compass-bar-intercardinal-width'));\n }\n }\n getTransform(index) {\n const width = this.intercardinalWidth;\n let translate = -width / 2;\n const visibleIndex = -this.heading / (Math.PI / 4) + 4;\n const distance = visibleIndex - index;\n if (distance < -4) translate += 8 * width;\n if (distance > 4) translate -= 8 * width;\n return `transform: translate(${visibleIndex * width + translate}px)`;\n }\n render() {\n const ticks = (0, $800sp.html)`\n \n ${Array(7).fill().map(()=>(0, $800sp.html)``)}\n \n `;\n return (0, $800sp.html)`\n \n \n \n `;\n }\n}\ncustomElements.define(\"cesium-compass-bar\", $98d8933019691929$export$2e2bcd8739ae039);\n\n\n//# sourceMappingURL=cesium-compass-bar.552ea5f1.js.map\n","import { LitElement, css, html } from \"lit\";\n\n// FIXME: configurable tick count\n\nexport default class CesiumCompassBar extends LitElement {\n static get properties() {\n return {\n scene: { type: Object },\n heading: { type: Number },\n };\n }\n\n static get styles() {\n return css`\n :host {\n --cesium-compass-bar-tick-color: #000;\n --cesium-compass-bar-intercardinal-width: 100px;\n }\n :host * {\n box-sizing: content-box;\n }\n .container {\n display: flex;\n justify-content: center;\n height: 100%;\n overflow: hidden;\n }\n .compass-bar {\n display: flex;\n align-items: flex-end;\n }\n .compass-bar > div {\n width: var(--cesium-compass-bar-intercardinal-width);\n text-align: center;\n }\n .label {\n padding: 4px;\n color: var(--cesium-compass-bar-tick-color);\n }\n .ticks {\n display: flex;\n justify-content: space-around;\n }\n .ticks > div {\n width: 1px;\n height: 6px;\n background-color: var(--cesium-compass-bar-tick-color);\n }\n .ticks > div:nth-child(4) {\n height: 10px;\n }\n .center-tick {\n margin: auto;\n width: 4px;\n height: 4px;\n border-radius: 50%;\n background-color: var(--cesium-compass-bar-tick-color);\n }\n `;\n }\n\n constructor() {\n super();\n\n /**\n * @type {import('cesium').Scene}\n */\n this.scene;\n\n /**\n * @type {number}\n */\n this.intercardinalWidth;\n\n /**\n * @type {import('cesium').Event.RemoveCallback}\n */\n this.unlistenFromPostRender = null;\n }\n\n updated() {\n if (this.scene && !this.unlistenFromPostRender) {\n this.unlistenFromPostRender = this.scene.postRender.addEventListener(\n () => {\n this.heading = this.scene.camera.heading;\n }\n );\n // FIXME: probably not the best place to compute this\n this.intercardinalWidth = parseInt(getComputedStyle(this).getPropertyValue('--cesium-compass-bar-intercardinal-width'));\n }\n }\n\n getTransform(index) {\n const width = this.intercardinalWidth;\n let translate = -width / 2;\n const visibleIndex = -this.heading / (Math.PI / 4) + 4;\n const distance = visibleIndex - index;\n\n if (distance < -4) {\n translate += 8 * width;\n }\n if (distance > 4) {\n translate -= 8 * width;\n }\n return `transform: translate(${visibleIndex * width + translate}px)`;\n }\n\n render() {\n const ticks = html`\n \n \n ${Array(7)\n .fill()\n .map(() => html``)}\n \n `;\n return html`\n \n \n \n `;\n }\n}\n\ncustomElements.define(\"cesium-compass-bar\", CesiumCompassBar);\n"],"names":["$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","$800sp","$98d8933019691929$export$2e2bcd8739ae039","LitElement","properties","scene","type","Object","heading","Number","styles","css","constructor","intercardinalWidth","unlistenFromPostRender","updated","postRender","addEventListener","camera","parseInt","getComputedStyle","getPropertyValue","getTransform","index","width","translate","visibleIndex","Math","PI","distance","render","ticks","html","Array","fill","map","customElements","define"],"version":3,"file":"cesium-compass-bar.552ea5f1.js.map"}
\ No newline at end of file
diff --git a/cesium-compass-bar.beb686f8.js b/cesium-compass-bar.af9c8dd5.js
similarity index 98%
rename from cesium-compass-bar.beb686f8.js
rename to cesium-compass-bar.af9c8dd5.js
index 337c2f6..ac4dc13 100644
--- a/cesium-compass-bar.beb686f8.js
+++ b/cesium-compass-bar.af9c8dd5.js
@@ -1,4 +1,4 @@
-function t(t,e,s,i){Object.defineProperty(t,e,{get:s,set:i,enumerable:!0,configurable:!0})}var e=globalThis,s={},i={},r=e.parcelRequire5532;null==r&&((r=function(t){if(t in s)return s[t].exports;if(t in i){var e=i[t];delete i[t];var r={id:t,exports:{}};return s[t]=r,e.call(r.exports,r,r.exports),r.exports}var n=Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}).register=function(t,e){i[t]=e},e.parcelRequire5532=r);var n=r.register;n("800sp",function(e,s){t(e.exports,"css",()=>r("4jdI8").css),t(e.exports,"html",()=>r("jJTNo").html),t(e.exports,"LitElement",()=>r("lPSdM").LitElement),t(e.exports,"svg",()=>r("jJTNo").svg),r("3qR54"),r("jJTNo"),r("lPSdM"),r("8FVzH")}),n("3qR54",function(e,s){t(e.exports,"ReactiveElement",()=>g),t(e.exports,"css",()=>r("4jdI8").css);var i=r("4jdI8");/**
+function t(t,e,s,i){Object.defineProperty(t,e,{get:s,set:i,enumerable:!0,configurable:!0})}var e=globalThis,s={},i={},r=e.parcelRequire94c2;null==r&&((r=function(t){if(t in s)return s[t].exports;if(t in i){var e=i[t];delete i[t];var r={id:t,exports:{}};return s[t]=r,e.call(r.exports,r,r.exports),r.exports}var n=Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}).register=function(t,e){i[t]=e},e.parcelRequire94c2=r);var n=r.register;n("800sp",function(e,s){t(e.exports,"css",()=>r("4jdI8").css),t(e.exports,"html",()=>r("jJTNo").html),t(e.exports,"LitElement",()=>r("lPSdM").LitElement),t(e.exports,"svg",()=>r("jJTNo").svg),r("3qR54"),r("jJTNo"),r("lPSdM"),r("8FVzH")}),n("3qR54",function(e,s){t(e.exports,"ReactiveElement",()=>g),t(e.exports,"css",()=>r("4jdI8").css);var i=r("4jdI8");/**
* @license
* Copyright 2017 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
@@ -16,4 +16,4 @@ function t(t,e,s,i){Object.defineProperty(t,e,{get:s,set:i,enumerable:!0,configu
* Copyright 2017 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/class o extends i.ReactiveElement{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){let e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=(0,n.render)(e,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return n.noChange}}o._$litElement$=!0,o.finalized=!0,globalThis.litElementHydrateSupport?.({LitElement:o});let h=globalThis.litElementPolyfillSupport;h?.({LitElement:o}),(globalThis.litElementVersions??=[]).push("4.1.1")}),n("8FVzH",function(t,e){});
-//# sourceMappingURL=cesium-compass-bar.beb686f8.js.map
+//# sourceMappingURL=cesium-compass-bar.af9c8dd5.js.map
diff --git a/cesium-compass-bar.af9c8dd5.js.map b/cesium-compass-bar.af9c8dd5.js.map
new file mode 100644
index 0000000..afb7fe4
--- /dev/null
+++ b/cesium-compass-bar.af9c8dd5.js.map
@@ -0,0 +1 @@
+{"mappings":"A,S,E,C,C,C,C,C,C,C,E,O,c,C,E,E,C,I,E,I,E,W,C,E,a,C,C,E,C,I,E,W,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,I,E,E,Q,C,E,Q,S,C,C,C,E,E,E,O,C,M,I,A,E,S,G,E,E,E,O,C,O,I,A,E,S,I,E,E,E,O,C,a,I,A,E,S,U,E,E,E,O,C,M,I,A,E,S,G,E,E,S,E,S,E,S,E,Q,G,E,Q,S,C,C,C,E,E,E,O,C,kB,I,G,E,E,O,C,M,I,A,E,S,G,E,I,E,E,Q;;;;CE4CA,EAAA,GAAA,CAAMgC,GACJA,CAAAA,CAAE1B,eACFA,CAAAA,CAAc6B,yBACdA,CAAAA,CAAwBE,oBACxBA,CAAAA,CAAmBE,sBACnBA,CAAAA,CAAqBE,eACrBA,CAAAA,CAAAA,CACEpC,OAKEoV,EAAS7U,WAUTiC,EAAgB4S,EACnB5S,YAAAA,CAMG6S,EAAiC7S,EAClCA,EAAaE,WAAAA,CACd,GAEE4S,EAEFF,EAAOxS,8BAAAA,CA4FL2S,EAA4B,CAChCC,EACAC,IACMD,EAuJKE,EAA8C,CACzD,YAAYC,CAAAA,CAAgB/R,CAAAA,EAC1B,OAAQA,GACN,KAAKX,QACH0S,EAAQA,EAAQN,EAAiC,KACjD,KACF,MAAKrV,OACL,KAAKkD,MAGHyS,EAAiB,MAATA,EAAgBA,EAAQxS,KAAKC,SAAAA,CAAUuS,EAAAA,CAGnD,OAAOA,CACR,EAED,cAAcA,CAAAA,CAAsB/R,CAAAA,EAClC,IAAIgS,EAAqBD,EACzB,OAAQ/R,GACN,KAAKX,QACH2S,EAAsB,OAAVD,EACZ,KACF,MAAKpS,OACHqS,EAAsB,OAAVD,EAAiB,KAAOpS,OAAOoS,GAC3C,KACF,MAAK3V,OACL,KAAKkD,MAIH,GAAA,CAEE0S,EAAYzS,KAAKK,KAAAA,CAAMmS,EACxB,CAAC,MAAO/V,EA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","sources":[" \n ","node_modules/@lit/reactive-element/reactive-element.js","node_modules/@lit/reactive-element/src/reactive-element.ts","node_modules/@lit/reactive-element/css-tag.js","node_modules/@lit/reactive-element/src/css-tag.ts","node_modules/lit-html/lit-html.js","node_modules/lit-html/src/lit-html.ts","node_modules/lit-element/lit-element.js","node_modules/lit-element/src/lit-element.ts","node_modules/lit-html/is-server.js","node_modules/lit-html/src/is-server.ts"],"sourcesContent":["\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\n\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequire94c2\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequire94c2\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\nparcelRegister(\"800sp\", function(module, exports) {\n$parcel$export(module.exports, \"css\", () => (parcelRequire(\"4jdI8\")).css);\n$parcel$export(module.exports, \"html\", () => (parcelRequire(\"jJTNo\")).html);\n$parcel$export(module.exports, \"LitElement\", () => (parcelRequire(\"lPSdM\")).LitElement);\n$parcel$export(module.exports, \"svg\", () => (parcelRequire(\"jJTNo\")).svg);\nparcelRequire(\"3qR54\");\nparcelRequire(\"jJTNo\");\nparcelRequire(\"lPSdM\");\nparcelRequire(\"8FVzH\");\n\n});\nparcelRegister(\"3qR54\", function(module, exports) {\n\n$parcel$export(module.exports, \"ReactiveElement\", () => $27fcf98b67c2a783$export$c7c07a37856565d);\n$parcel$export(module.exports, \"css\", () => (parcelRequire(\"4jdI8\")).css);\n\nvar $4jdI8 = parcelRequire(\"4jdI8\");\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */ const { is: $27fcf98b67c2a783$var$i, defineProperty: $27fcf98b67c2a783$var$e, getOwnPropertyDescriptor: $27fcf98b67c2a783$var$r, getOwnPropertyNames: $27fcf98b67c2a783$var$h, getOwnPropertySymbols: $27fcf98b67c2a783$var$o, getPrototypeOf: $27fcf98b67c2a783$var$n } = Object, $27fcf98b67c2a783$var$a = globalThis, $27fcf98b67c2a783$var$c = $27fcf98b67c2a783$var$a.trustedTypes, $27fcf98b67c2a783$var$l = $27fcf98b67c2a783$var$c ? $27fcf98b67c2a783$var$c.emptyScript : \"\", $27fcf98b67c2a783$var$p = $27fcf98b67c2a783$var$a.reactiveElementPolyfillSupport, $27fcf98b67c2a783$var$d = (t, s)=>t, $27fcf98b67c2a783$export$7312b35fbf521afb = {\n toAttribute (t, s) {\n switch(s){\n case Boolean:\n t = t ? $27fcf98b67c2a783$var$l : null;\n break;\n case Object:\n case Array:\n t = null == t ? t : JSON.stringify(t);\n }\n return t;\n },\n fromAttribute (t, s) {\n let i = t;\n switch(s){\n case Boolean:\n i = null !== t;\n break;\n case Number:\n i = null === t ? null : Number(t);\n break;\n case Object:\n case Array:\n try {\n i = JSON.parse(t);\n } catch (t) {\n i = null;\n }\n }\n return i;\n }\n}, $27fcf98b67c2a783$export$53a6892c50694894 = (t, s)=>!$27fcf98b67c2a783$var$i(t, s), $27fcf98b67c2a783$var$y = {\n attribute: !0,\n type: String,\n converter: $27fcf98b67c2a783$export$7312b35fbf521afb,\n reflect: !1,\n hasChanged: $27fcf98b67c2a783$export$53a6892c50694894\n};\nSymbol.metadata ??= Symbol(\"metadata\"), $27fcf98b67c2a783$var$a.litPropertyMetadata ??= new WeakMap;\nclass $27fcf98b67c2a783$export$c7c07a37856565d extends HTMLElement {\n static addInitializer(t) {\n this._$Ei(), (this.l ??= []).push(t);\n }\n static get observedAttributes() {\n return this.finalize(), this._$Eh && [\n ...this._$Eh.keys()\n ];\n }\n static createProperty(t, s = $27fcf98b67c2a783$var$y) {\n if (s.state && (s.attribute = !1), this._$Ei(), this.elementProperties.set(t, s), !s.noAccessor) {\n const i = Symbol(), r = this.getPropertyDescriptor(t, i, s);\n void 0 !== r && $27fcf98b67c2a783$var$e(this.prototype, t, r);\n }\n }\n static getPropertyDescriptor(t, s, i) {\n const { get: e, set: h } = $27fcf98b67c2a783$var$r(this.prototype, t) ?? {\n get () {\n return this[s];\n },\n set (t) {\n this[s] = t;\n }\n };\n return {\n get () {\n return e?.call(this);\n },\n set (s) {\n const r = e?.call(this);\n h.call(this, s), this.requestUpdate(t, r, i);\n },\n configurable: !0,\n enumerable: !0\n };\n }\n static getPropertyOptions(t) {\n return this.elementProperties.get(t) ?? $27fcf98b67c2a783$var$y;\n }\n static _$Ei() {\n if (this.hasOwnProperty($27fcf98b67c2a783$var$d(\"elementProperties\"))) return;\n const t = $27fcf98b67c2a783$var$n(this);\n t.finalize(), void 0 !== t.l && (this.l = [\n ...t.l\n ]), this.elementProperties = new Map(t.elementProperties);\n }\n static finalize() {\n if (this.hasOwnProperty($27fcf98b67c2a783$var$d(\"finalized\"))) return;\n if (this.finalized = !0, this._$Ei(), this.hasOwnProperty($27fcf98b67c2a783$var$d(\"properties\"))) {\n const t = this.properties, s = [\n ...$27fcf98b67c2a783$var$h(t),\n ...$27fcf98b67c2a783$var$o(t)\n ];\n for (const i of s)this.createProperty(i, t[i]);\n }\n const t = this[Symbol.metadata];\n if (null !== t) {\n const s = litPropertyMetadata.get(t);\n if (void 0 !== s) for (const [t, i] of s)this.elementProperties.set(t, i);\n }\n this._$Eh = new Map;\n for (const [t, s] of this.elementProperties){\n const i = this._$Eu(t, s);\n void 0 !== i && this._$Eh.set(i, t);\n }\n this.elementStyles = this.finalizeStyles(this.styles);\n }\n static finalizeStyles(s) {\n const i = [];\n if (Array.isArray(s)) {\n const e = new Set(s.flat(1 / 0).reverse());\n for (const s of e)i.unshift((0, $4jdI8.getCompatibleStyle)(s));\n } else void 0 !== s && i.push((0, $4jdI8.getCompatibleStyle)(s));\n return i;\n }\n static _$Eu(t, s) {\n const i = s.attribute;\n return !1 === i ? void 0 : \"string\" == typeof i ? i : \"string\" == typeof t ? t.toLowerCase() : void 0;\n }\n constructor(){\n super(), this._$Ep = void 0, this.isUpdatePending = !1, this.hasUpdated = !1, this._$Em = null, this._$Ev();\n }\n _$Ev() {\n this._$ES = new Promise((t)=>this.enableUpdating = t), this._$AL = new Map, this._$E_(), this.requestUpdate(), this.constructor.l?.forEach((t)=>t(this));\n }\n addController(t) {\n (this._$EO ??= new Set).add(t), void 0 !== this.renderRoot && this.isConnected && t.hostConnected?.();\n }\n removeController(t) {\n this._$EO?.delete(t);\n }\n _$E_() {\n const t = new Map, s = this.constructor.elementProperties;\n for (const i of s.keys())this.hasOwnProperty(i) && (t.set(i, this[i]), delete this[i]);\n t.size > 0 && (this._$Ep = t);\n }\n createRenderRoot() {\n const t = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n return (0, $4jdI8.adoptStyles)(t, this.constructor.elementStyles), t;\n }\n connectedCallback() {\n this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(!0), this._$EO?.forEach((t)=>t.hostConnected?.());\n }\n enableUpdating(t) {}\n disconnectedCallback() {\n this._$EO?.forEach((t)=>t.hostDisconnected?.());\n }\n attributeChangedCallback(t, s, i) {\n this._$AK(t, i);\n }\n _$EC(t, s) {\n const i = this.constructor.elementProperties.get(t), e = this.constructor._$Eu(t, i);\n if (void 0 !== e && !0 === i.reflect) {\n const r = (void 0 !== i.converter?.toAttribute ? i.converter : $27fcf98b67c2a783$export$7312b35fbf521afb).toAttribute(s, i.type);\n this._$Em = t, null == r ? this.removeAttribute(e) : this.setAttribute(e, r), this._$Em = null;\n }\n }\n _$AK(t, s) {\n const i = this.constructor, e = i._$Eh.get(t);\n if (void 0 !== e && this._$Em !== e) {\n const t = i.getPropertyOptions(e), r = \"function\" == typeof t.converter ? {\n fromAttribute: t.converter\n } : void 0 !== t.converter?.fromAttribute ? t.converter : $27fcf98b67c2a783$export$7312b35fbf521afb;\n this._$Em = e, this[e] = r.fromAttribute(s, t.type), this._$Em = null;\n }\n }\n requestUpdate(t, s, i) {\n if (void 0 !== t) {\n if (i ??= this.constructor.getPropertyOptions(t), !(i.hasChanged ?? $27fcf98b67c2a783$export$53a6892c50694894)(this[t], s)) return;\n this.P(t, s, i);\n }\n !1 === this.isUpdatePending && (this._$ES = this._$ET());\n }\n P(t, s, i) {\n this._$AL.has(t) || this._$AL.set(t, s), !0 === i.reflect && this._$Em !== t && (this._$Ej ??= new Set).add(t);\n }\n async _$ET() {\n this.isUpdatePending = !0;\n try {\n await this._$ES;\n } catch (t) {\n Promise.reject(t);\n }\n const t = this.scheduleUpdate();\n return null != t && await t, !this.isUpdatePending;\n }\n scheduleUpdate() {\n return this.performUpdate();\n }\n performUpdate() {\n if (!this.isUpdatePending) return;\n if (!this.hasUpdated) {\n if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n for (const [t, s] of this._$Ep)this[t] = s;\n this._$Ep = void 0;\n }\n const t = this.constructor.elementProperties;\n if (t.size > 0) for (const [s, i] of t)!0 !== i.wrapped || this._$AL.has(s) || void 0 === this[s] || this.P(s, this[s], i);\n }\n let t = !1;\n const s = this._$AL;\n try {\n t = this.shouldUpdate(s), t ? (this.willUpdate(s), this._$EO?.forEach((t)=>t.hostUpdate?.()), this.update(s)) : this._$EU();\n } catch (s) {\n throw t = !1, this._$EU(), s;\n }\n t && this._$AE(s);\n }\n willUpdate(t) {}\n _$AE(t) {\n this._$EO?.forEach((t)=>t.hostUpdated?.()), this.hasUpdated || (this.hasUpdated = !0, this.firstUpdated(t)), this.updated(t);\n }\n _$EU() {\n this._$AL = new Map, this.isUpdatePending = !1;\n }\n get updateComplete() {\n return this.getUpdateComplete();\n }\n getUpdateComplete() {\n return this._$ES;\n }\n shouldUpdate(t) {\n return !0;\n }\n update(t) {\n this._$Ej &&= this._$Ej.forEach((t)=>this._$EC(t, this[t])), this._$EU();\n }\n updated(t) {}\n firstUpdated(t) {}\n}\n$27fcf98b67c2a783$export$c7c07a37856565d.elementStyles = [], $27fcf98b67c2a783$export$c7c07a37856565d.shadowRootOptions = {\n mode: \"open\"\n}, $27fcf98b67c2a783$export$c7c07a37856565d[$27fcf98b67c2a783$var$d(\"elementProperties\")] = new Map, $27fcf98b67c2a783$export$c7c07a37856565d[$27fcf98b67c2a783$var$d(\"finalized\")] = new Map, $27fcf98b67c2a783$var$p?.({\n ReactiveElement: $27fcf98b67c2a783$export$c7c07a37856565d\n}), ($27fcf98b67c2a783$var$a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n});\nparcelRegister(\"4jdI8\", function(module, exports) {\n\n$parcel$export(module.exports, \"css\", () => $3233927aa82734f9$export$dbf350e5966cf602);\n$parcel$export(module.exports, \"adoptStyles\", () => $3233927aa82734f9$export$2ca4a66ec4cecb90);\n$parcel$export(module.exports, \"getCompatibleStyle\", () => $3233927aa82734f9$export$ee69dfd951e24778);\n/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */ const $3233927aa82734f9$var$t = globalThis, $3233927aa82734f9$export$b4d10f6001c083c2 = $3233927aa82734f9$var$t.ShadowRoot && (void 0 === $3233927aa82734f9$var$t.ShadyCSS || $3233927aa82734f9$var$t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype, $3233927aa82734f9$var$s = Symbol(), $3233927aa82734f9$var$o = new WeakMap;\nclass $3233927aa82734f9$export$505d1e8739bad805 {\n constructor(t, e, o){\n if (this._$cssResult$ = !0, o !== $3233927aa82734f9$var$s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n this.cssText = t, this.t = e;\n }\n get styleSheet() {\n let t = this.o;\n const s = this.t;\n if ($3233927aa82734f9$export$b4d10f6001c083c2 && void 0 === t) {\n const e = void 0 !== s && 1 === s.length;\n e && (t = $3233927aa82734f9$var$o.get(s)), void 0 === t && ((this.o = t = new CSSStyleSheet).replaceSync(this.cssText), e && $3233927aa82734f9$var$o.set(s, t));\n }\n return t;\n }\n toString() {\n return this.cssText;\n }\n}\nconst $3233927aa82734f9$export$8d80f9cac07cdb3 = (t)=>new $3233927aa82734f9$export$505d1e8739bad805(\"string\" == typeof t ? t : t + \"\", void 0, $3233927aa82734f9$var$s), $3233927aa82734f9$export$dbf350e5966cf602 = (t, ...e)=>{\n const o = 1 === t.length ? t[0] : e.reduce((e, s, o)=>e + ((t)=>{\n if (!0 === t._$cssResult$) return t.cssText;\n if (\"number\" == typeof t) return t;\n throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n })(s) + t[o + 1], t[0]);\n return new $3233927aa82734f9$export$505d1e8739bad805(o, t, $3233927aa82734f9$var$s);\n}, $3233927aa82734f9$export$2ca4a66ec4cecb90 = (s, o)=>{\n if ($3233927aa82734f9$export$b4d10f6001c083c2) s.adoptedStyleSheets = o.map((t)=>t instanceof CSSStyleSheet ? t : t.styleSheet);\n else for (const e of o){\n const o = document.createElement(\"style\"), n = $3233927aa82734f9$var$t.litNonce;\n void 0 !== n && o.setAttribute(\"nonce\", n), o.textContent = e.cssText, s.appendChild(o);\n }\n}, $3233927aa82734f9$export$ee69dfd951e24778 = $3233927aa82734f9$export$b4d10f6001c083c2 ? (t)=>t : (t)=>t instanceof CSSStyleSheet ? ((t)=>{\n let e = \"\";\n for (const s of t.cssRules)e += s.cssText;\n return $3233927aa82734f9$export$8d80f9cac07cdb3(e);\n })(t) : t;\n\n});\n\n\nparcelRegister(\"jJTNo\", function(module, exports) {\n\n$parcel$export(module.exports, \"html\", () => $e5ed8027d647799b$export$c0bb0b647f701bb5);\n$parcel$export(module.exports, \"svg\", () => $e5ed8027d647799b$export$7ed1367e7fa1ad68);\n$parcel$export(module.exports, \"noChange\", () => $e5ed8027d647799b$export$9c068ae9cc5db4e8);\n$parcel$export(module.exports, \"render\", () => $e5ed8027d647799b$export$b3890eb0ae9dca99);\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */ const $e5ed8027d647799b$var$t = globalThis, $e5ed8027d647799b$var$i = $e5ed8027d647799b$var$t.trustedTypes, $e5ed8027d647799b$var$s = $e5ed8027d647799b$var$i ? $e5ed8027d647799b$var$i.createPolicy(\"lit-html\", {\n createHTML: (t)=>t\n}) : void 0, $e5ed8027d647799b$var$e = \"$lit$\", $e5ed8027d647799b$var$h = `lit$${Math.random().toFixed(9).slice(2)}$`, $e5ed8027d647799b$var$o = \"?\" + $e5ed8027d647799b$var$h, $e5ed8027d647799b$var$n = `<${$e5ed8027d647799b$var$o}>`, $e5ed8027d647799b$var$r = document, $e5ed8027d647799b$var$l = ()=>$e5ed8027d647799b$var$r.createComment(\"\"), $e5ed8027d647799b$var$c = (t)=>null === t || \"object\" != typeof t && \"function\" != typeof t, $e5ed8027d647799b$var$a = Array.isArray, $e5ed8027d647799b$var$u = (t)=>$e5ed8027d647799b$var$a(t) || \"function\" == typeof t?.[Symbol.iterator], $e5ed8027d647799b$var$d = \"[ \\t\\n\\f\\r]\", $e5ed8027d647799b$var$f = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g, $e5ed8027d647799b$var$v = /-->/g, $e5ed8027d647799b$var$_ = />/g, $e5ed8027d647799b$var$m = RegExp(`>|${$e5ed8027d647799b$var$d}(?:([^\\\\s\"'>=/]+)(${$e5ed8027d647799b$var$d}*=${$e5ed8027d647799b$var$d}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\"), $e5ed8027d647799b$var$p = /'/g, $e5ed8027d647799b$var$g = /\"/g, $e5ed8027d647799b$var$$ = /^(?:script|style|textarea|title)$/i, $e5ed8027d647799b$var$y = (t)=>(i, ...s)=>({\n _$litType$: t,\n strings: i,\n values: s\n }), $e5ed8027d647799b$export$c0bb0b647f701bb5 = $e5ed8027d647799b$var$y(1), $e5ed8027d647799b$export$7ed1367e7fa1ad68 = $e5ed8027d647799b$var$y(2), $e5ed8027d647799b$export$47d5b44d225be5b4 = $e5ed8027d647799b$var$y(3), $e5ed8027d647799b$export$9c068ae9cc5db4e8 = Symbol.for(\"lit-noChange\"), $e5ed8027d647799b$export$45b790e32b2810ee = Symbol.for(\"lit-nothing\"), $e5ed8027d647799b$var$A = new WeakMap, $e5ed8027d647799b$var$C = $e5ed8027d647799b$var$r.createTreeWalker($e5ed8027d647799b$var$r, 129);\nfunction $e5ed8027d647799b$var$P(t, i) {\n if (!$e5ed8027d647799b$var$a(t) || !t.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n return void 0 !== $e5ed8027d647799b$var$s ? $e5ed8027d647799b$var$s.createHTML(i) : i;\n}\nconst $e5ed8027d647799b$var$V = (t, i)=>{\n const s = t.length - 1, o = [];\n let r, l = 2 === i ? \"\" : 3 === i ? \"\" : \"\")),\n o\n ];\n};\nclass $e5ed8027d647799b$var$N {\n constructor({ strings: t, _$litType$: s }, n){\n let r;\n this.parts = [];\n let c = 0, a = 0;\n const u = t.length - 1, d = this.parts, [f, v] = $e5ed8027d647799b$var$V(t, s);\n if (this.el = $e5ed8027d647799b$var$N.createElement(f, n), $e5ed8027d647799b$var$C.currentNode = this.el.content, 2 === s || 3 === s) {\n const t = this.el.content.firstChild;\n t.replaceWith(...t.childNodes);\n }\n for(; null !== (r = $e5ed8027d647799b$var$C.nextNode()) && d.length < u;){\n if (1 === r.nodeType) {\n if (r.hasAttributes()) for (const t of r.getAttributeNames())if (t.endsWith($e5ed8027d647799b$var$e)) {\n const i = v[a++], s = r.getAttribute(t).split($e5ed8027d647799b$var$h), e = /([.?@])?(.*)/.exec(i);\n d.push({\n type: 1,\n index: c,\n name: e[2],\n strings: s,\n ctor: \".\" === e[1] ? $e5ed8027d647799b$var$H : \"?\" === e[1] ? $e5ed8027d647799b$var$I : \"@\" === e[1] ? $e5ed8027d647799b$var$L : $e5ed8027d647799b$var$k\n }), r.removeAttribute(t);\n } else t.startsWith($e5ed8027d647799b$var$h) && (d.push({\n type: 6,\n index: c\n }), r.removeAttribute(t));\n if ($e5ed8027d647799b$var$$.test(r.tagName)) {\n const t = r.textContent.split($e5ed8027d647799b$var$h), s = t.length - 1;\n if (s > 0) {\n r.textContent = $e5ed8027d647799b$var$i ? $e5ed8027d647799b$var$i.emptyScript : \"\";\n for(let i = 0; i < s; i++)r.append(t[i], $e5ed8027d647799b$var$l()), $e5ed8027d647799b$var$C.nextNode(), d.push({\n type: 2,\n index: ++c\n });\n r.append(t[s], $e5ed8027d647799b$var$l());\n }\n }\n } else if (8 === r.nodeType) {\n if (r.data === $e5ed8027d647799b$var$o) d.push({\n type: 2,\n index: c\n });\n else {\n let t = -1;\n for(; -1 !== (t = r.data.indexOf($e5ed8027d647799b$var$h, t + 1));)d.push({\n type: 7,\n index: c\n }), t += $e5ed8027d647799b$var$h.length - 1;\n }\n }\n c++;\n }\n }\n static createElement(t, i) {\n const s = $e5ed8027d647799b$var$r.createElement(\"template\");\n return s.innerHTML = t, s;\n }\n}\nfunction $e5ed8027d647799b$var$S(t, i, s = t, e) {\n if (i === $e5ed8027d647799b$export$9c068ae9cc5db4e8) return i;\n let h = void 0 !== e ? s._$Co?.[e] : s._$Cl;\n const o = $e5ed8027d647799b$var$c(i) ? void 0 : i._$litDirective$;\n return h?.constructor !== o && (h?._$AO?.(!1), void 0 === o ? h = void 0 : (h = new o(t), h._$AT(t, s, e)), void 0 !== e ? (s._$Co ??= [])[e] = h : s._$Cl = h), void 0 !== h && (i = $e5ed8027d647799b$var$S(t, h._$AS(t, i.values), h, e)), i;\n}\nclass $e5ed8027d647799b$var$M {\n constructor(t, i){\n this._$AV = [], this._$AN = void 0, this._$AD = t, this._$AM = i;\n }\n get parentNode() {\n return this._$AM.parentNode;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n u(t) {\n const { el: { content: i }, parts: s } = this._$AD, e = (t?.creationScope ?? $e5ed8027d647799b$var$r).importNode(i, !0);\n $e5ed8027d647799b$var$C.currentNode = e;\n let h = $e5ed8027d647799b$var$C.nextNode(), o = 0, n = 0, l = s[0];\n for(; void 0 !== l;){\n if (o === l.index) {\n let i;\n 2 === l.type ? i = new $e5ed8027d647799b$var$R(h, h.nextSibling, this, t) : 1 === l.type ? i = new l.ctor(h, l.name, l.strings, this, t) : 6 === l.type && (i = new $e5ed8027d647799b$var$z(h, this, t)), this._$AV.push(i), l = s[++n];\n }\n o !== l?.index && (h = $e5ed8027d647799b$var$C.nextNode(), o++);\n }\n return $e5ed8027d647799b$var$C.currentNode = $e5ed8027d647799b$var$r, e;\n }\n p(t) {\n let i = 0;\n for (const s of this._$AV)void 0 !== s && (void 0 !== s.strings ? (s._$AI(t, s, i), i += s.strings.length - 2) : s._$AI(t[i])), i++;\n }\n}\nclass $e5ed8027d647799b$var$R {\n get _$AU() {\n return this._$AM?._$AU ?? this._$Cv;\n }\n constructor(t, i, s, e){\n this.type = 2, this._$AH = $e5ed8027d647799b$export$45b790e32b2810ee, this._$AN = void 0, this._$AA = t, this._$AB = i, this._$AM = s, this.options = e, this._$Cv = e?.isConnected ?? !0;\n }\n get parentNode() {\n let t = this._$AA.parentNode;\n const i = this._$AM;\n return void 0 !== i && 11 === t?.nodeType && (t = i.parentNode), t;\n }\n get startNode() {\n return this._$AA;\n }\n get endNode() {\n return this._$AB;\n }\n _$AI(t, i = this) {\n t = $e5ed8027d647799b$var$S(this, t, i), $e5ed8027d647799b$var$c(t) ? t === $e5ed8027d647799b$export$45b790e32b2810ee || null == t || \"\" === t ? (this._$AH !== $e5ed8027d647799b$export$45b790e32b2810ee && this._$AR(), this._$AH = $e5ed8027d647799b$export$45b790e32b2810ee) : t !== this._$AH && t !== $e5ed8027d647799b$export$9c068ae9cc5db4e8 && this._(t) : void 0 !== t._$litType$ ? this.$(t) : void 0 !== t.nodeType ? this.T(t) : $e5ed8027d647799b$var$u(t) ? this.k(t) : this._(t);\n }\n O(t) {\n return this._$AA.parentNode.insertBefore(t, this._$AB);\n }\n T(t) {\n this._$AH !== t && (this._$AR(), this._$AH = this.O(t));\n }\n _(t) {\n this._$AH !== $e5ed8027d647799b$export$45b790e32b2810ee && $e5ed8027d647799b$var$c(this._$AH) ? this._$AA.nextSibling.data = t : this.T($e5ed8027d647799b$var$r.createTextNode(t)), this._$AH = t;\n }\n $(t) {\n const { values: i, _$litType$: s } = t, e = \"number\" == typeof s ? this._$AC(t) : (void 0 === s.el && (s.el = $e5ed8027d647799b$var$N.createElement($e5ed8027d647799b$var$P(s.h, s.h[0]), this.options)), s);\n if (this._$AH?._$AD === e) this._$AH.p(i);\n else {\n const t = new $e5ed8027d647799b$var$M(e, this), s = t.u(this.options);\n t.p(i), this.T(s), this._$AH = t;\n }\n }\n _$AC(t) {\n let i = $e5ed8027d647799b$var$A.get(t.strings);\n return void 0 === i && $e5ed8027d647799b$var$A.set(t.strings, i = new $e5ed8027d647799b$var$N(t)), i;\n }\n k(t) {\n $e5ed8027d647799b$var$a(this._$AH) || (this._$AH = [], this._$AR());\n const i = this._$AH;\n let s, e = 0;\n for (const h of t)e === i.length ? i.push(s = new $e5ed8027d647799b$var$R(this.O($e5ed8027d647799b$var$l()), this.O($e5ed8027d647799b$var$l()), this, this.options)) : s = i[e], s._$AI(h), e++;\n e < i.length && (this._$AR(s && s._$AB.nextSibling, e), i.length = e);\n }\n _$AR(t = this._$AA.nextSibling, i) {\n for(this._$AP?.(!1, !0, i); t && t !== this._$AB;){\n const i = t.nextSibling;\n t.remove(), t = i;\n }\n }\n setConnected(t) {\n void 0 === this._$AM && (this._$Cv = t, this._$AP?.(t));\n }\n}\nclass $e5ed8027d647799b$var$k {\n get tagName() {\n return this.element.tagName;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n constructor(t, i, s, e, h){\n this.type = 1, this._$AH = $e5ed8027d647799b$export$45b790e32b2810ee, this._$AN = void 0, this.element = t, this.name = i, this._$AM = e, this.options = h, s.length > 2 || \"\" !== s[0] || \"\" !== s[1] ? (this._$AH = Array(s.length - 1).fill(new String), this.strings = s) : this._$AH = $e5ed8027d647799b$export$45b790e32b2810ee;\n }\n _$AI(t, i = this, s, e) {\n const h = this.strings;\n let o = !1;\n if (void 0 === h) t = $e5ed8027d647799b$var$S(this, t, i, 0), o = !$e5ed8027d647799b$var$c(t) || t !== this._$AH && t !== $e5ed8027d647799b$export$9c068ae9cc5db4e8, o && (this._$AH = t);\n else {\n const e = t;\n let n, r;\n for(t = h[0], n = 0; n < h.length - 1; n++)r = $e5ed8027d647799b$var$S(this, e[s + n], i, n), r === $e5ed8027d647799b$export$9c068ae9cc5db4e8 && (r = this._$AH[n]), o ||= !$e5ed8027d647799b$var$c(r) || r !== this._$AH[n], r === $e5ed8027d647799b$export$45b790e32b2810ee ? t = $e5ed8027d647799b$export$45b790e32b2810ee : t !== $e5ed8027d647799b$export$45b790e32b2810ee && (t += (r ?? \"\") + h[n + 1]), this._$AH[n] = r;\n }\n o && !e && this.j(t);\n }\n j(t) {\n t === $e5ed8027d647799b$export$45b790e32b2810ee ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t ?? \"\");\n }\n}\nclass $e5ed8027d647799b$var$H extends $e5ed8027d647799b$var$k {\n constructor(){\n super(...arguments), this.type = 3;\n }\n j(t) {\n this.element[this.name] = t === $e5ed8027d647799b$export$45b790e32b2810ee ? void 0 : t;\n }\n}\nclass $e5ed8027d647799b$var$I extends $e5ed8027d647799b$var$k {\n constructor(){\n super(...arguments), this.type = 4;\n }\n j(t) {\n this.element.toggleAttribute(this.name, !!t && t !== $e5ed8027d647799b$export$45b790e32b2810ee);\n }\n}\nclass $e5ed8027d647799b$var$L extends $e5ed8027d647799b$var$k {\n constructor(t, i, s, e, h){\n super(t, i, s, e, h), this.type = 5;\n }\n _$AI(t, i = this) {\n if ((t = $e5ed8027d647799b$var$S(this, t, i, 0) ?? $e5ed8027d647799b$export$45b790e32b2810ee) === $e5ed8027d647799b$export$9c068ae9cc5db4e8) return;\n const s = this._$AH, e = t === $e5ed8027d647799b$export$45b790e32b2810ee && s !== $e5ed8027d647799b$export$45b790e32b2810ee || t.capture !== s.capture || t.once !== s.once || t.passive !== s.passive, h = t !== $e5ed8027d647799b$export$45b790e32b2810ee && (s === $e5ed8027d647799b$export$45b790e32b2810ee || e);\n e && this.element.removeEventListener(this.name, this, s), h && this.element.addEventListener(this.name, this, t), this._$AH = t;\n }\n handleEvent(t) {\n \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t) : this._$AH.handleEvent(t);\n }\n}\nclass $e5ed8027d647799b$var$z {\n constructor(t, i, s){\n this.element = t, this.type = 6, this._$AN = void 0, this._$AM = i, this.options = s;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AI(t) {\n $e5ed8027d647799b$var$S(this, t);\n }\n}\nconst $e5ed8027d647799b$export$8613d1ca9052b22e = {\n M: $e5ed8027d647799b$var$e,\n P: $e5ed8027d647799b$var$h,\n A: $e5ed8027d647799b$var$o,\n C: 1,\n L: $e5ed8027d647799b$var$V,\n R: $e5ed8027d647799b$var$M,\n D: $e5ed8027d647799b$var$u,\n V: $e5ed8027d647799b$var$S,\n I: $e5ed8027d647799b$var$R,\n H: $e5ed8027d647799b$var$k,\n N: $e5ed8027d647799b$var$I,\n U: $e5ed8027d647799b$var$L,\n B: $e5ed8027d647799b$var$H,\n F: $e5ed8027d647799b$var$z\n}, $e5ed8027d647799b$var$j = $e5ed8027d647799b$var$t.litHtmlPolyfillSupport;\n$e5ed8027d647799b$var$j?.($e5ed8027d647799b$var$N, $e5ed8027d647799b$var$R), ($e5ed8027d647799b$var$t.litHtmlVersions ??= []).push(\"3.2.1\");\nconst $e5ed8027d647799b$export$b3890eb0ae9dca99 = (t, i, s)=>{\n const e = s?.renderBefore ?? i;\n let h = e._$litPart$;\n if (void 0 === h) {\n const t = s?.renderBefore ?? null;\n e._$litPart$ = h = new $e5ed8027d647799b$var$R(i.insertBefore($e5ed8027d647799b$var$l(), t), t, void 0, s ?? {});\n }\n return h._$AI(t), h;\n};\n\n});\n\nparcelRegister(\"lPSdM\", function(module, exports) {\n$parcel$export(module.exports, \"css\", () => (parcelRequire(\"4jdI8\")).css);\n$parcel$export(module.exports, \"ReactiveElement\", () => (parcelRequire(\"3qR54\")).ReactiveElement);\n$parcel$export(module.exports, \"html\", () => (parcelRequire(\"jJTNo\")).html);\n$parcel$export(module.exports, \"noChange\", () => (parcelRequire(\"jJTNo\")).noChange);\n$parcel$export(module.exports, \"render\", () => (parcelRequire(\"jJTNo\")).render);\n$parcel$export(module.exports, \"svg\", () => (parcelRequire(\"jJTNo\")).svg);\n\n$parcel$export(module.exports, \"LitElement\", () => $fe586ba0757c37f7$export$3f2f9f5909897157);\n\nvar $3qR54 = parcelRequire(\"3qR54\");\n\nvar $jJTNo = parcelRequire(\"jJTNo\");\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */ class $fe586ba0757c37f7$export$3f2f9f5909897157 extends (0, $3qR54.ReactiveElement) {\n constructor(){\n super(...arguments), this.renderOptions = {\n host: this\n }, this._$Do = void 0;\n }\n createRenderRoot() {\n const t = super.createRenderRoot();\n return this.renderOptions.renderBefore ??= t.firstChild, t;\n }\n update(t) {\n const s = this.render();\n this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t), this._$Do = (0, $jJTNo.render)(s, this.renderRoot, this.renderOptions);\n }\n connectedCallback() {\n super.connectedCallback(), this._$Do?.setConnected(!0);\n }\n disconnectedCallback() {\n super.disconnectedCallback(), this._$Do?.setConnected(!1);\n }\n render() {\n return 0, $jJTNo.noChange;\n }\n}\n$fe586ba0757c37f7$export$3f2f9f5909897157._$litElement$ = !0, $fe586ba0757c37f7$export$3f2f9f5909897157[\"finalized\"] = !0, globalThis.litElementHydrateSupport?.({\n LitElement: $fe586ba0757c37f7$export$3f2f9f5909897157\n});\nconst $fe586ba0757c37f7$var$i = globalThis.litElementPolyfillSupport;\n$fe586ba0757c37f7$var$i?.({\n LitElement: $fe586ba0757c37f7$export$3f2f9f5909897157\n});\nconst $fe586ba0757c37f7$export$f5c524615a7708d6 = {\n _$AK: (t, e, s)=>{\n t._$AK(e, s);\n },\n _$AL: (t)=>t._$AL\n};\n(globalThis.litElementVersions ??= []).push(\"4.1.1\");\n\n});\n\nparcelRegister(\"8FVzH\", function(module, exports) {\n/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */ const $650ed036964a13b8$export$6acf61af03e62db = !1;\n\n});\n\n\n\n//# sourceMappingURL=cesium-compass-bar.af9c8dd5.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,adoptStyles,css,getCompatibleStyle,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:r,getOwnPropertyNames:h,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),y={attribute:!0,type:String,converter:u,reflect:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class b extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=y){if(s.state&&(s.attribute=!1),this._$Ei(),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(t,i,s);void 0!==r&&e(this.prototype,t,r)}}static getPropertyDescriptor(t,s,i){const{get:e,set:h}=r(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get(){return e?.call(this)},set(s){const r=e?.call(this);h.call(this,s),this.requestUpdate(t,r,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??y}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...h(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$EC(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const r=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==r?this.removeAttribute(e):this.setAttribute(e,r),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),r=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e,this[e]=r.fromAttribute(s,t.type),this._$Em=null}}requestUpdate(t,s,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??f)(this[t],s))return;this.P(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(t,s,i){this._$AL.has(t)||this._$AL.set(t,s),!0===i.reflect&&this._$Em!==t&&(this._$Ej??=new Set).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t)!0!==i.wrapped||this._$AL.has(s)||void 0===this[s]||this.P(s,this[s],i)}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EU()}catch(s){throw t=!1,this._$EU(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&=this._$Ej.forEach((t=>this._$EC(t,this[t]))),this._$EU()}updated(t){}firstUpdated(t){}}b.elementStyles=[],b.shadowRootOptions={mode:\"open\"},b[d(\"elementProperties\")]=new Map,b[d(\"finalized\")]=new Map,p?.({ReactiveElement:b}),(a.reactiveElementVersions??=[]).push(\"2.0.4\");export{b as ReactiveElement,u as defaultConverter,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * Use this module if you want to create your own base class extending\n * {@link ReactiveElement}.\n * @packageDocumentation\n */\n\nimport {\n getCompatibleStyle,\n adoptStyles,\n CSSResultGroup,\n CSSResultOrNative,\n} from './css-tag.js';\nimport type {\n ReactiveController,\n ReactiveControllerHost,\n} from './reactive-controller.js';\n\n// In the Node build, this import will be injected by Rollup:\n// import {HTMLElement, customElements} from '@lit-labs/ssr-dom-shim';\n\nexport * from './css-tag.js';\nexport type {\n ReactiveController,\n ReactiveControllerHost,\n} from './reactive-controller.js';\n\n/**\n * Removes the `readonly` modifier from properties in the union K.\n *\n * This is a safer way to cast a value to a type with a mutable version of a\n * readonly field, than casting to an interface with the field re-declared\n * because it preserves the type of all the fields and warns on typos.\n */\ntype Mutable = Omit & {\n -readonly [P in keyof Pick]: P extends K ? T[P] : never;\n};\n\n// TODO (justinfagnani): Add `hasOwn` here when we ship ES2022\nconst {\n is,\n defineProperty,\n getOwnPropertyDescriptor,\n getOwnPropertyNames,\n getOwnPropertySymbols,\n getPrototypeOf,\n} = Object;\n\nconst NODE_MODE = false;\n\n// Lets a minifier replace globalThis references with a minified name\nconst global = globalThis;\n\nif (NODE_MODE) {\n global.customElements ??= customElements;\n}\n\nconst DEV_MODE = true;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nconst trustedTypes = (global as unknown as {trustedTypes?: {emptyScript: ''}})\n .trustedTypes;\n\n// Temporary workaround for https://crbug.com/993268\n// Currently, any attribute starting with \"on\" is considered to be a\n// TrustedScript source. Such boolean attributes must be set to the equivalent\n// trusted emptyScript value.\nconst emptyStringForBooleanAttribute = trustedTypes\n ? (trustedTypes.emptyScript as unknown as '')\n : '';\n\nconst polyfillSupport = DEV_MODE\n ? global.reactiveElementPolyfillSupportDevMode\n : global.reactiveElementPolyfillSupport;\n\nif (DEV_MODE) {\n // Ensure warnings are issued only 1x, even if multiple versions of Lit\n // are loaded.\n const issuedWarnings: Set = (global.litIssuedWarnings ??=\n new Set());\n\n // Issue a warning, if we haven't already.\n issueWarning = (code: string, warning: string) => {\n warning += ` See https://lit.dev/msg/${code} for more information.`;\n if (!issuedWarnings.has(warning)) {\n console.warn(warning);\n issuedWarnings.add(warning);\n }\n };\n\n issueWarning(\n 'dev-mode',\n `Lit is in dev mode. Not recommended for production!`\n );\n\n // Issue polyfill support warning.\n if (global.ShadyDOM?.inUse && polyfillSupport === undefined) {\n issueWarning(\n 'polyfill-support-missing',\n `Shadow DOM is being polyfilled via \\`ShadyDOM\\` but ` +\n `the \\`polyfill-support\\` module has not been loaded.`\n );\n }\n}\n\n/**\n * Contains types that are part of the unstable debug API.\n *\n * Everything in this API is not stable and may change or be removed in the future,\n * even on patch releases.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace ReactiveUnstable {\n /**\n * When Lit is running in dev mode and `window.emitLitDebugLogEvents` is true,\n * we will emit 'lit-debug' events to window, with live details about the update and render\n * lifecycle. These can be useful for writing debug tooling and visualizations.\n *\n * Please be aware that running with window.emitLitDebugLogEvents has performance overhead,\n * making certain operations that are normally very cheap (like a no-op render) much slower,\n * because we must copy data and dispatch events.\n */\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace DebugLog {\n export type Entry = Update;\n export interface Update {\n kind: 'update';\n }\n }\n}\n\ninterface DebugLoggingWindow {\n // Even in dev mode, we generally don't want to emit these events, as that's\n // another level of cost, so only emit them when DEV_MODE is true _and_ when\n // window.emitLitDebugEvents is true.\n emitLitDebugLogEvents?: boolean;\n}\n\n/**\n * Useful for visualizing and logging insights into what the Lit template system is doing.\n *\n * Compiled out of prod mode builds.\n */\nconst debugLogEvent = DEV_MODE\n ? (event: ReactiveUnstable.DebugLog.Entry) => {\n const shouldEmit = (global as unknown as DebugLoggingWindow)\n .emitLitDebugLogEvents;\n if (!shouldEmit) {\n return;\n }\n global.dispatchEvent(\n new CustomEvent('lit-debug', {\n detail: event,\n })\n );\n }\n : undefined;\n\n/*\n * When using Closure Compiler, JSCompiler_renameProperty(property, object) is\n * replaced at compile time by the munged name for object[property]. We cannot\n * alias this function, so we have to use a small shim that has the same\n * behavior when not compiling.\n */\n/*@__INLINE__*/\nconst JSCompiler_renameProperty = (\n prop: P,\n _obj: unknown\n): P => prop;\n\n/**\n * Converts property values to and from attribute values.\n */\nexport interface ComplexAttributeConverter {\n /**\n * Called to convert an attribute value to a property\n * value.\n */\n fromAttribute?(value: string | null, type?: TypeHint): Type;\n\n /**\n * Called to convert a property value to an attribute\n * value.\n *\n * It returns unknown instead of string, to be compatible with\n * https://github.com/WICG/trusted-types (and similar efforts).\n */\n toAttribute?(value: Type, type?: TypeHint): unknown;\n}\n\ntype AttributeConverter =\n | ComplexAttributeConverter\n | ((value: string | null, type?: TypeHint) => Type);\n\n/**\n * Defines options for a property accessor.\n */\nexport interface PropertyDeclaration {\n /**\n * When set to `true`, indicates the property is internal private state. The\n * property should not be set by users. When using TypeScript, this property\n * should be marked as `private` or `protected`, and it is also a common\n * practice to use a leading `_` in the name. The property is not added to\n * `observedAttributes`.\n */\n readonly state?: boolean;\n\n /**\n * Indicates how and whether the property becomes an observed attribute.\n * If the value is `false`, the property is not added to `observedAttributes`.\n * If true or absent, the lowercased property name is observed (e.g. `fooBar`\n * becomes `foobar`). If a string, the string value is observed (e.g\n * `attribute: 'foo-bar'`).\n */\n readonly attribute?: boolean | string;\n\n /**\n * Indicates the type of the property. This is used only as a hint for the\n * `converter` to determine how to convert the attribute\n * to/from a property.\n */\n readonly type?: TypeHint;\n\n /**\n * Indicates how to convert the attribute to/from a property. If this value\n * is a function, it is used to convert the attribute value a the property\n * value. If it's an object, it can have keys for `fromAttribute` and\n * `toAttribute`. If no `toAttribute` function is provided and\n * `reflect` is set to `true`, the property value is set directly to the\n * attribute. A default `converter` is used if none is provided; it supports\n * `Boolean`, `String`, `Number`, `Object`, and `Array`. Note,\n * when a property changes and the converter is used to update the attribute,\n * the property is never updated again as a result of the attribute changing,\n * and vice versa.\n */\n readonly converter?: AttributeConverter;\n\n /**\n * Indicates if the property should reflect to an attribute.\n * If `true`, when the property is set, the attribute is set using the\n * attribute name determined according to the rules for the `attribute`\n * property option and the value of the property converted using the rules\n * from the `converter` property option.\n */\n readonly reflect?: boolean;\n\n /**\n * A function that indicates if a property should be considered changed when\n * it is set. The function should take the `newValue` and `oldValue` and\n * return `true` if an update should be requested.\n */\n hasChanged?(value: Type, oldValue: Type): boolean;\n\n /**\n * Indicates whether an accessor will be created for this property. By\n * default, an accessor will be generated for this property that requests an\n * update when set. If this flag is `true`, no accessor will be created, and\n * it will be the user's responsibility to call\n * `this.requestUpdate(propertyName, oldValue)` to request an update when\n * the property changes.\n */\n readonly noAccessor?: boolean;\n\n /**\n * Whether this property is wrapping accessors. This is set by `@property`\n * to control the initial value change and reflection logic.\n *\n * @internal\n */\n wrapped?: boolean;\n}\n\n/**\n * Map of properties to PropertyDeclaration options. For each property an\n * accessor is made, and the property is processed according to the\n * PropertyDeclaration options.\n */\nexport interface PropertyDeclarations {\n readonly [key: string]: PropertyDeclaration;\n}\n\ntype PropertyDeclarationMap = Map;\n\ntype AttributeMap = Map;\n\n/**\n * A Map of property keys to values.\n *\n * Takes an optional type parameter T, which when specified as a non-any,\n * non-unknown type, will make the Map more strongly-typed, associating the map\n * keys with their corresponding value type on T.\n *\n * Use `PropertyValues` when overriding ReactiveElement.update() and\n * other lifecycle methods in order to get stronger type-checking on keys\n * and values.\n */\n// This type is conditional so that if the parameter T is not specified, or\n// is `any`, the type will include `Map`. Since T is not\n// given in the uses of PropertyValues in this file, all uses here fallback to\n// meaning `Map`, but if a developer uses\n// `PropertyValues` (or any other value for T) they will get a\n// strongly-typed Map type.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type PropertyValues = T extends object\n ? PropertyValueMap\n : Map;\n\n/**\n * Do not use, instead prefer {@linkcode PropertyValues}.\n */\n// This type must be exported such that JavaScript generated by the Google\n// Closure Compiler can import a type reference.\nexport interface PropertyValueMap extends Map {\n get(k: K): T[K] | undefined;\n set(key: K, value: T[K]): this;\n has(k: K): boolean;\n delete(k: K): boolean;\n}\n\nexport const defaultConverter: ComplexAttributeConverter = {\n toAttribute(value: unknown, type?: unknown): unknown {\n switch (type) {\n case Boolean:\n value = value ? emptyStringForBooleanAttribute : null;\n break;\n case Object:\n case Array:\n // if the value is `null` or `undefined` pass this through\n // to allow removing/no change behavior.\n value = value == null ? value : JSON.stringify(value);\n break;\n }\n return value;\n },\n\n fromAttribute(value: string | null, type?: unknown) {\n let fromValue: unknown = value;\n switch (type) {\n case Boolean:\n fromValue = value !== null;\n break;\n case Number:\n fromValue = value === null ? null : Number(value);\n break;\n case Object:\n case Array:\n // Do *not* generate exception when invalid JSON is set as elements\n // don't normally complain on being mis-configured.\n // TODO(sorvell): Do generate exception in *dev mode*.\n try {\n // Assert to adhere to Bazel's \"must type assert JSON parse\" rule.\n fromValue = JSON.parse(value!) as unknown;\n } catch (e) {\n fromValue = null;\n }\n break;\n }\n return fromValue;\n },\n};\n\nexport interface HasChanged {\n (value: unknown, old: unknown): boolean;\n}\n\n/**\n * Change function that returns true if `value` is different from `oldValue`.\n * This method is used as the default for a property's `hasChanged` function.\n */\nexport const notEqual: HasChanged = (value: unknown, old: unknown): boolean =>\n !is(value, old);\n\nconst defaultPropertyDeclaration: PropertyDeclaration = {\n attribute: true,\n type: String,\n converter: defaultConverter,\n reflect: false,\n hasChanged: notEqual,\n};\n\n/**\n * A string representing one of the supported dev mode warning categories.\n */\nexport type WarningKind =\n | 'change-in-update'\n | 'migration'\n | 'async-perform-update';\n\nexport type Initializer = (element: ReactiveElement) => void;\n\n// Temporary, until google3 is on TypeScript 5.2\ndeclare global {\n interface SymbolConstructor {\n readonly metadata: unique symbol;\n }\n}\n\n// Ensure metadata is enabled. TypeScript does not polyfill\n// Symbol.metadata, so we must ensure that it exists.\n(Symbol as {metadata: symbol}).metadata ??= Symbol('metadata');\n\ndeclare global {\n // This is public global API, do not change!\n // eslint-disable-next-line no-var\n var litPropertyMetadata: WeakMap<\n object,\n Map\n >;\n}\n\n// Map from a class's metadata object to property options\n// Note that we must use nullish-coalescing assignment so that we only use one\n// map even if we load multiple version of this module.\nglobal.litPropertyMetadata ??= new WeakMap<\n object,\n Map\n>();\n\n/**\n * Base element class which manages element properties and attributes. When\n * properties change, the `update` method is asynchronously called. This method\n * should be supplied by subclasses to render updates as desired.\n * @noInheritDoc\n */\nexport abstract class ReactiveElement\n // In the Node build, this `extends` clause will be substituted with\n // `(globalThis.HTMLElement ?? HTMLElement)`.\n //\n // This way, we will first prefer any global `HTMLElement` polyfill that the\n // user has assigned, and then fall back to the `HTMLElement` shim which has\n // been imported (see note at the top of this file about how this import is\n // generated by Rollup). Note that the `HTMLElement` variable has been\n // shadowed by this import, so it no longer refers to the global.\n extends HTMLElement\n implements ReactiveControllerHost\n{\n // Note: these are patched in only in DEV_MODE.\n /**\n * Read or set all the enabled warning categories for this class.\n *\n * This property is only used in development builds.\n *\n * @nocollapse\n * @category dev-mode\n */\n static enabledWarnings?: WarningKind[];\n\n /**\n * Enable the given warning category for this class.\n *\n * This method only exists in development builds, so it should be accessed\n * with a guard like:\n *\n * ```ts\n * // Enable for all ReactiveElement subclasses\n * ReactiveElement.enableWarning?.('migration');\n *\n * // Enable for only MyElement and subclasses\n * MyElement.enableWarning?.('migration');\n * ```\n *\n * @nocollapse\n * @category dev-mode\n */\n static enableWarning?: (warningKind: WarningKind) => void;\n\n /**\n * Disable the given warning category for this class.\n *\n * This method only exists in development builds, so it should be accessed\n * with a guard like:\n *\n * ```ts\n * // Disable for all ReactiveElement subclasses\n * ReactiveElement.disableWarning?.('migration');\n *\n * // Disable for only MyElement and subclasses\n * MyElement.disableWarning?.('migration');\n * ```\n *\n * @nocollapse\n * @category dev-mode\n */\n static disableWarning?: (warningKind: WarningKind) => void;\n\n /**\n * Adds an initializer function to the class that is called during instance\n * construction.\n *\n * This is useful for code that runs against a `ReactiveElement`\n * subclass, such as a decorator, that needs to do work for each\n * instance, such as setting up a `ReactiveController`.\n *\n * ```ts\n * const myDecorator = (target: typeof ReactiveElement, key: string) => {\n * target.addInitializer((instance: ReactiveElement) => {\n * // This is run during construction of the element\n * new MyController(instance);\n * });\n * }\n * ```\n *\n * Decorating a field will then cause each instance to run an initializer\n * that adds a controller:\n *\n * ```ts\n * class MyElement extends LitElement {\n * @myDecorator foo;\n * }\n * ```\n *\n * Initializers are stored per-constructor. Adding an initializer to a\n * subclass does not add it to a superclass. Since initializers are run in\n * constructors, initializers will run in order of the class hierarchy,\n * starting with superclasses and progressing to the instance's class.\n *\n * @nocollapse\n */\n static addInitializer(initializer: Initializer) {\n this.__prepare();\n (this._initializers ??= []).push(initializer);\n }\n\n static _initializers?: Initializer[];\n\n /*\n * Due to closure compiler ES6 compilation bugs, @nocollapse is required on\n * all static methods and properties with initializers. Reference:\n * - https://github.com/google/closure-compiler/issues/1776\n */\n\n /**\n * Maps attribute names to properties; for example `foobar` attribute to\n * `fooBar` property. Created lazily on user subclasses when finalizing the\n * class.\n * @nocollapse\n */\n private static __attributeToPropertyMap: AttributeMap;\n\n /**\n * Marks class as having been finalized, which includes creating properties\n * from `static properties`, but does *not* include all properties created\n * from decorators.\n * @nocollapse\n */\n protected static finalized: true | undefined;\n\n /**\n * Memoized list of all element properties, including any superclass\n * properties. Created lazily on user subclasses when finalizing the class.\n *\n * @nocollapse\n * @category properties\n */\n static elementProperties: PropertyDeclarationMap;\n\n /**\n * User-supplied object that maps property names to `PropertyDeclaration`\n * objects containing options for configuring reactive properties. When\n * a reactive property is set the element will update and render.\n *\n * By default properties are public fields, and as such, they should be\n * considered as primarily settable by element users, either via attribute or\n * the property itself.\n *\n * Generally, properties that are changed by the element should be private or\n * protected fields and should use the `state: true` option. Properties\n * marked as `state` do not reflect from the corresponding attribute\n *\n * However, sometimes element code does need to set a public property. This\n * should typically only be done in response to user interaction, and an event\n * should be fired informing the user; for example, a checkbox sets its\n * `checked` property when clicked and fires a `changed` event. Mutating\n * public properties should typically not be done for non-primitive (object or\n * array) properties. In other cases when an element needs to manage state, a\n * private property set with the `state: true` option should be used. When\n * needed, state properties can be initialized via public properties to\n * facilitate complex interactions.\n * @nocollapse\n * @category properties\n */\n static properties: PropertyDeclarations;\n\n /**\n * Memoized list of all element styles.\n * Created lazily on user subclasses when finalizing the class.\n * @nocollapse\n * @category styles\n */\n static elementStyles: Array = [];\n\n /**\n * Array of styles to apply to the element. The styles should be defined\n * using the {@linkcode css} tag function, via constructible stylesheets, or\n * imported from native CSS module scripts.\n *\n * Note on Content Security Policy:\n *\n * Element styles are implemented with `