diff --git a/base/every-by/README.md b/base/every-by/README.md
index 2b1bcc11..80dd1d55 100644
--- a/base/every-by/README.md
+++ b/base/every-by/README.md
@@ -20,7 +20,7 @@ limitations under the License.
 
 # everyBy
 
-> Test whether all elements in a collection pass a test implemented by a predicate function.
+> Test whether all elements in an array pass a test implemented by a predicate function.
 
 <!-- Section to include introductory text. Make sure to keep an empty line after the intro `section` element and another before the `/section` close. -->
 
diff --git a/base/every/README.md b/base/every/README.md
index df54efa3..760fd13a 100644
--- a/base/every/README.md
+++ b/base/every/README.md
@@ -20,7 +20,7 @@ limitations under the License.
 
 # every
 
-> Test whether all elements in a collection are truthy.
+> Test whether all elements in an array are truthy.
 
 <!-- Section to include introductory text. Make sure to keep an empty line after the intro `section` element and another before the `/section` close. -->
 
diff --git a/base/every/lib/main.js b/base/every/lib/main.js
index 944c86d1..ba2f3d05 100644
--- a/base/every/lib/main.js
+++ b/base/every/lib/main.js
@@ -59,7 +59,7 @@ function internal( x ) {
 }
 
 /**
-* Tests whether all elements in a complex number array.
+* Tests whether all elements in a complex number array are truthy.
 *
 * @private
 * @param {Collection} x - underlying data buffer
diff --git a/dist/index.js.map b/dist/index.js.map
index 6db24621..c2c58803 100644
--- a/dist/index.js.map
+++ b/dist/index.js.map
@@ -1,7 +1,7 @@
 {
   "version": 3,
   "sources": ["../base/assert/is-accessor-array/lib/main.js", "../base/assert/is-accessor-array/lib/index.js", "../base/getter/lib/main.js", "../base/getter/lib/index.js", "../base/setter/lib/main.js", "../base/setter/lib/index.js", "../base/accessor-getter/lib/main.js", "../base/accessor-getter/lib/index.js", "../base/accessor-setter/lib/main.js", "../base/accessor-setter/lib/index.js", "../dtype/lib/ctor2dtype.js", "../float64/lib/main.js", "../float64/lib/polyfill.js", "../float64/lib/index.js", "../float32/lib/main.js", "../float32/lib/polyfill.js", "../float32/lib/index.js", "../uint32/lib/main.js", "../uint32/lib/polyfill.js", "../uint32/lib/index.js", "../int32/lib/main.js", "../int32/lib/polyfill.js", "../int32/lib/index.js", "../uint16/lib/main.js", "../uint16/lib/polyfill.js", "../uint16/lib/index.js", "../int16/lib/main.js", "../int16/lib/polyfill.js", "../int16/lib/index.js", "../uint8/lib/main.js", "../uint8/lib/polyfill.js", "../uint8/lib/index.js", "../uint8c/lib/main.js", "../uint8c/lib/polyfill.js", "../uint8c/lib/index.js", "../int8/lib/main.js", "../int8/lib/polyfill.js", "../int8/lib/index.js", "../base/assert/is-complex64array/lib/main.js", "../base/assert/is-complex64array/lib/index.js", "../base/assert/is-complex128array/lib/main.js", "../base/assert/is-complex128array/lib/index.js", "../complex64/lib/from_iterator.js", "../complex64/lib/from_iterator_map.js", "../complex64/lib/from_array.js", "../complex64/lib/main.js", "../complex64/lib/index.js", "../complex128/lib/from_iterator.js", "../complex128/lib/from_iterator_map.js", "../complex128/lib/from_array.js", "../complex128/lib/main.js", "../complex128/lib/index.js", "../dtype/lib/ctors.js", "../dtype/lib/dtypes.js", "../dtype/lib/main.js", "../dtype/lib/index.js", "../base/accessors/lib/main.js", "../base/accessors/lib/index.js", "../base/accessor/lib/main.js", "../base/accessor/lib/index.js", "../base/arraylike2object/lib/main.js", "../base/arraylike2object/lib/index.js", "../base/assert/contains/lib/main.js", "../base/assert/contains/lib/factory.js", "../base/assert/contains/lib/index.js", "../base/assert/lib/index.js", "../base/resolve-getter/lib/main.js", "../base/resolve-getter/lib/index.js", "../base/bifurcate-entries/lib/main.js", "../base/bifurcate-entries/lib/index.js", "../base/bifurcate-entries-by/lib/main.js", "../base/bifurcate-entries-by/lib/index.js", "../base/bifurcate-indices/lib/main.js", "../base/bifurcate-indices/lib/index.js", "../base/bifurcate-indices-by/lib/main.js", "../base/bifurcate-indices-by/lib/index.js", "../base/bifurcate-values/lib/main.js", "../base/bifurcate-values/lib/index.js", "../base/bifurcate-values-by/lib/main.js", "../base/bifurcate-values-by/lib/index.js", "../base/binary2d/lib/main.js", "../base/binary2d/lib/index.js", "../base/binary3d/lib/main.js", "../base/binary3d/lib/index.js", "../base/binary4d/lib/main.js", "../base/binary4d/lib/index.js", "../base/binary5d/lib/main.js", "../base/binary5d/lib/index.js", "../base/binarynd/lib/main.js", "../base/binarynd/lib/index.js", "../base/copy-indexed/lib/main.js", "../base/copy-indexed/lib/index.js", "../base/filled/lib/main.js", "../base/filled/lib/index.js", "../base/zeros/lib/main.js", "../base/zeros/lib/index.js", "../base/broadcast-array/lib/main.js", "../base/broadcast-array/lib/index.js", "../base/broadcasted-binary2d/lib/main.js", "../base/broadcasted-binary2d/lib/index.js", "../base/broadcasted-binary3d/lib/main.js", "../base/broadcasted-binary3d/lib/index.js", "../base/broadcasted-binary4d/lib/main.js", "../base/broadcasted-binary4d/lib/index.js", "../base/broadcasted-binary5d/lib/main.js", "../base/broadcasted-binary5d/lib/index.js", "../base/broadcasted-quaternary2d/lib/main.js", "../base/broadcasted-quaternary2d/lib/index.js", "../base/broadcasted-quinary2d/lib/main.js", "../base/broadcasted-quinary2d/lib/index.js", "../base/broadcasted-ternary2d/lib/main.js", "../base/broadcasted-ternary2d/lib/index.js", "../base/broadcasted-unary2d/lib/main.js", "../base/broadcasted-unary2d/lib/index.js", "../base/broadcasted-unary3d/lib/main.js", "../base/broadcasted-unary3d/lib/index.js", "../base/broadcasted-unary4d/lib/main.js", "../base/broadcasted-unary4d/lib/index.js", "../base/broadcasted-unary5d/lib/main.js", "../base/broadcasted-unary5d/lib/index.js", "../base/cartesian-power/lib/main.js", "../base/cartesian-power/lib/index.js", "../base/cartesian-product/lib/main.js", "../base/cartesian-product/lib/index.js", "../base/cartesian-square/lib/main.js", "../base/cartesian-square/lib/index.js", "../base/copy/lib/main.js", "../base/copy/lib/index.js", "../base/dedupe/lib/main.js", "../base/dedupe/lib/index.js", "../base/every/lib/main.js", "../base/every/lib/index.js", "../base/every-by/lib/main.js", "../base/every-by/lib/index.js", "../base/filled-by/lib/main.js", "../base/filled-by/lib/index.js", "../base/filled2d/lib/main.js", "../base/filled2d/lib/index.js", "../base/filled2d-by/lib/main.js", "../base/filled2d-by/lib/index.js", "../base/filled3d/lib/main.js", "../base/filled3d/lib/index.js", "../base/filled3d-by/lib/main.js", "../base/filled3d-by/lib/index.js", "../base/filled4d/lib/main.js", "../base/filled4d/lib/index.js", "../base/filled4d-by/lib/main.js", "../base/filled4d-by/lib/index.js", "../base/filled5d/lib/main.js", "../base/filled5d/lib/index.js", "../base/filled5d-by/lib/main.js", "../base/filled5d-by/lib/index.js", "../base/fillednd/lib/main.js", "../base/fillednd/lib/index.js", "../base/fillednd-by/lib/main.js", "../base/fillednd-by/lib/index.js", "../base/first/lib/main.js", "../base/first/lib/index.js", "../base/flatten/lib/assign.js", "../base/flatten/lib/main.js", "../base/flatten/lib/index.js", "../base/flatten-by/lib/assign.js", "../base/flatten-by/lib/main.js", "../base/flatten-by/lib/index.js", "../base/flatten2d/lib/main.js", "../base/flatten2d/lib/assign.js", "../base/flatten2d/lib/index.js", "../base/flatten2d-by/lib/main.js", "../base/flatten2d-by/lib/assign.js", "../base/flatten2d-by/lib/index.js", "../base/flatten3d/lib/main.js", "../base/flatten3d/lib/assign.js", "../base/flatten3d/lib/index.js", "../base/flatten3d-by/lib/main.js", "../base/flatten3d-by/lib/assign.js", "../base/flatten3d-by/lib/index.js", "../base/flatten4d/lib/main.js", "../base/flatten4d/lib/assign.js", "../base/flatten4d/lib/index.js", "../base/flatten4d-by/lib/main.js", "../base/flatten4d-by/lib/assign.js", "../base/flatten4d-by/lib/index.js", "../base/flatten5d/lib/main.js", "../base/flatten5d/lib/assign.js", "../base/flatten5d/lib/index.js", "../base/flatten5d-by/lib/main.js", "../base/flatten5d-by/lib/assign.js", "../base/flatten5d-by/lib/index.js", "../base/fliplr2d/lib/main.js", "../base/fliplr2d/lib/index.js", "../base/fliplr3d/lib/main.js", "../base/fliplr3d/lib/index.js", "../base/fliplr4d/lib/main.js", "../base/fliplr4d/lib/index.js", "../base/fliplr5d/lib/main.js", "../base/fliplr5d/lib/index.js", "../base/flipud2d/lib/main.js", "../base/flipud2d/lib/index.js", "../base/flipud3d/lib/main.js", "../base/flipud3d/lib/index.js", "../base/flipud4d/lib/main.js", "../base/flipud4d/lib/index.js", "../base/flipud5d/lib/main.js", "../base/flipud5d/lib/index.js", "../base/from-strided/lib/main.js", "../base/from-strided/lib/index.js", "../base/group-entries/lib/main.js", "../base/group-entries/lib/index.js", "../base/group-entries-by/lib/main.js", "../base/group-entries-by/lib/index.js", "../base/group-indices/lib/main.js", "../base/group-indices/lib/index.js", "../base/group-indices-by/lib/main.js", "../base/group-indices-by/lib/index.js", "../base/group-values/lib/main.js", "../base/group-values/lib/index.js", "../base/group-values-by/lib/main.js", "../base/group-values-by/lib/index.js", "../base/incrspace/lib/main.js", "../base/incrspace/lib/index.js", "../base/index-of/lib/main.js", "../base/index-of/lib/index.js", "../base/last/lib/main.js", "../base/last/lib/index.js", "../base/last-index-of/lib/main.js", "../base/last-index-of/lib/index.js", "../base/linspace/lib/main.js", "../base/linspace/lib/index.js", "../base/logspace/lib/main.js", "../base/logspace/lib/index.js", "../base/map2d/lib/main.js", "../base/map2d/lib/assign.js", "../base/map2d/lib/index.js", "../base/map3d/lib/main.js", "../base/map3d/lib/assign.js", "../base/map3d/lib/index.js", "../base/map4d/lib/main.js", "../base/map4d/lib/assign.js", "../base/map4d/lib/index.js", "../base/map5d/lib/main.js", "../base/map5d/lib/assign.js", "../base/map5d/lib/index.js", "../base/mskbinary2d/lib/main.js", "../base/mskbinary2d/lib/index.js", "../base/mskunary2d/lib/main.js", "../base/mskunary2d/lib/index.js", "../base/mskunary3d/lib/main.js", "../base/mskunary3d/lib/index.js", "../base/n-cartesian-product/lib/main.js", "../base/n-cartesian-product/lib/index.js", "../base/one-to/lib/main.js", "../base/one-to/lib/index.js", "../base/ones/lib/main.js", "../base/ones/lib/index.js", "../base/ones2d/lib/main.js", "../base/ones2d/lib/index.js", "../base/ones3d/lib/main.js", "../base/ones3d/lib/index.js", "../base/ones4d/lib/main.js", "../base/ones4d/lib/index.js", "../base/ones5d/lib/main.js", "../base/ones5d/lib/index.js", "../base/onesnd/lib/main.js", "../base/onesnd/lib/index.js", "../base/quaternary2d/lib/main.js", "../base/quaternary2d/lib/index.js", "../base/quaternary3d/lib/main.js", "../base/quaternary3d/lib/index.js", "../base/quaternary4d/lib/main.js", "../base/quaternary4d/lib/index.js", "../base/quaternary5d/lib/main.js", "../base/quaternary5d/lib/index.js", "../base/quinary2d/lib/main.js", "../base/quinary2d/lib/index.js", "../base/quinary3d/lib/main.js", "../base/quinary3d/lib/index.js", "../base/quinary4d/lib/main.js", "../base/quinary4d/lib/index.js", "../base/quinary5d/lib/main.js", "../base/quinary5d/lib/index.js", "../base/slice/lib/main.js", "../base/slice/lib/index.js", "../base/strided2array2d/lib/main.js", "../base/strided2array2d/lib/index.js", "../base/strided2array3d/lib/main.js", "../base/strided2array3d/lib/index.js", "../base/strided2array4d/lib/main.js", "../base/strided2array4d/lib/index.js", "../base/strided2array5d/lib/main.js", "../base/strided2array5d/lib/index.js", "../base/take/lib/main.js", "../base/take/lib/index.js", "../base/take-indexed/lib/main.js", "../base/take-indexed/lib/index.js", "../base/take2d/lib/main.js", "../base/take2d/lib/index.js", "../base/take3d/lib/main.js", "../base/take3d/lib/index.js", "../base/ternary2d/lib/main.js", "../base/ternary2d/lib/index.js", "../base/ternary3d/lib/main.js", "../base/ternary3d/lib/index.js", "../base/ternary4d/lib/main.js", "../base/ternary4d/lib/index.js", "../base/ternary5d/lib/main.js", "../base/ternary5d/lib/index.js", "../base/to-accessor-array/lib/main.js", "../base/to-accessor-array/lib/index.js", "../base/to-deduped/lib/main.js", "../base/to-deduped/lib/index.js", "../base/unary2d/lib/main.js", "../base/unary2d/lib/index.js", "../base/unary2d-by/lib/main.js", "../base/unary2d-by/lib/index.js", "../base/unary3d/lib/main.js", "../base/unary3d/lib/index.js", "../base/unary4d/lib/main.js", "../base/unary4d/lib/index.js", "../base/unary5d/lib/main.js", "../base/unary5d/lib/index.js", "../base/unarynd/lib/main.js", "../base/unarynd/lib/index.js", "../base/unitspace/lib/main.js", "../base/unitspace/lib/index.js", "../base/zero-to/lib/main.js", "../base/zero-to/lib/index.js", "../base/zeros2d/lib/main.js", "../base/zeros2d/lib/index.js", "../base/zeros3d/lib/main.js", "../base/zeros3d/lib/index.js", "../base/zeros4d/lib/main.js", "../base/zeros4d/lib/index.js", "../base/zeros5d/lib/main.js", "../base/zeros5d/lib/index.js", "../base/zerosnd/lib/main.js", "../base/zerosnd/lib/index.js", "../base/lib/index.js", "../buffer/lib/main.js", "../buffer/lib/polyfill.js", "../buffer/lib/index.js", "../ctors/lib/ctors.js", "../ctors/lib/main.js", "../ctors/lib/index.js", "../convert/lib/main.js", "../convert/lib/index.js", "../convert-same/lib/main.js", "../convert-same/lib/index.js", "../dataview/lib/main.js", "../dataview/lib/polyfill.js", "../dataview/lib/index.js", "../datespace/lib/main.js", "../datespace/lib/index.js", "../defaults/lib/main.js", "../defaults/lib/get.js", "../defaults/lib/index.js", "../dtypes/lib/dtypes.json", "../dtypes/lib/main.js", "../dtypes/lib/index.js", "../empty/lib/is_buffer_uint8array.js", "../typed-ctors/lib/ctors.js", "../typed-ctors/lib/main.js", "../typed-ctors/lib/index.js", "../empty/lib/main.js", "../zeros/lib/main.js", "../zeros/lib/index.js", "../empty/lib/polyfill.js", "../empty/lib/index.js", "../empty-like/lib/main.js", "../empty-like/lib/index.js", "../filled/lib/main.js", "../filled/lib/index.js", "../filled-by/lib/main.js", "../filled-by/lib/index.js", "../from-iterator/lib/main.js", "../from-iterator/lib/index.js", "../full/lib/main.js", "../full/lib/index.js", "../full-like/lib/main.js", "../full-like/lib/index.js", "../incrspace/lib/main.js", "../incrspace/lib/index.js", "../typed-float-ctors/lib/ctors.js", "../typed-float-ctors/lib/main.js", "../typed-float-ctors/lib/index.js", "../linspace/lib/generic_real.js", "../linspace/lib/generic_complex.js", "../linspace/lib/typed_real.js", "../linspace/lib/typed_complex.js", "../linspace/lib/validate.js", "../linspace/lib/defaults.json", "../linspace/lib/main.js", "../linspace/lib/accessors_complex.js", "../linspace/lib/accessors_real.js", "../linspace/lib/assign.js", "../linspace/lib/index.js", "../logspace/lib/main.js", "../logspace/lib/index.js", "../min-dtype/lib/main.js", "../min-dtype/lib/index.js", "../nans/lib/main.js", "../nans/lib/index.js", "../nans-like/lib/main.js", "../nans-like/lib/index.js", "../next-dtype/lib/next_dtypes.json", "../next-dtype/lib/main.js", "../next-dtype/lib/index.js", "../ones/lib/main.js", "../ones/lib/index.js", "../ones-like/lib/main.js", "../ones-like/lib/index.js", "../pool/lib/defaults.js", "../pool/lib/validate.js", "../pool/lib/pool.js", "../pool/lib/bytes_per_element.json", "../pool/lib/factory.js", "../pool/lib/main.js", "../pool/lib/index.js", "../promotion-rules/lib/promotion_rules.json", "../promotion-rules/lib/main.js", "../promotion-rules/lib/index.js", "../reviver/lib/ctors.js", "../reviver/lib/main.js", "../reviver/lib/index.js", "../safe-casts/lib/safe_casts.json", "../safe-casts/lib/main.js", "../safe-casts/lib/index.js", "../same-kind-casts/lib/same_kind_casts.json", "../same-kind-casts/lib/main.js", "../same-kind-casts/lib/index.js", "../shape/lib/main.js", "../shape/lib/index.js", "../shared-buffer/lib/main.js", "../shared-buffer/lib/polyfill.js", "../shared-buffer/lib/index.js", "../to-circular-iterator/lib/main.js", "../to-circular-iterator/lib/index.js", "../to-iterator/lib/main.js", "../to-iterator/lib/index.js", "../to-iterator-right/lib/main.js", "../to-iterator-right/lib/index.js", "../to-json/lib/ctors.js", "../to-json/lib/type.js", "../to-json/lib/main.js", "../to-json/lib/index.js", "../to-sparse-iterator/lib/main.js", "../to-sparse-iterator/lib/index.js", "../to-sparse-iterator-right/lib/main.js", "../to-sparse-iterator-right/lib/index.js", "../to-strided-iterator/lib/main.js", "../to-strided-iterator/lib/index.js", "../to-view-iterator/lib/main.js", "../to-view-iterator/lib/index.js", "../to-view-iterator-right/lib/main.js", "../to-view-iterator-right/lib/index.js", "../typed/lib/main.js", "../typed/lib/index.js", "../typed-complex-ctors/lib/ctors.js", "../typed-complex-ctors/lib/main.js", "../typed-complex-ctors/lib/index.js", "../typed-complex/lib/main.js", "../typed-complex/lib/index.js", "../typed-complex-dtypes/lib/dtypes.json", "../typed-complex-dtypes/lib/main.js", "../typed-complex-dtypes/lib/index.js", "../typed-dtypes/lib/dtypes.json", "../typed-dtypes/lib/main.js", "../typed-dtypes/lib/index.js", "../typed-float-dtypes/lib/dtypes.json", "../typed-float-dtypes/lib/main.js", "../typed-float-dtypes/lib/index.js", "../typed-integer-ctors/lib/ctors.js", "../typed-integer-ctors/lib/main.js", "../typed-integer-ctors/lib/index.js", "../typed-integer-dtypes/lib/dtypes.json", "../typed-integer-dtypes/lib/main.js", "../typed-integer-dtypes/lib/index.js", "../typed-real/lib/main.js", "../typed-real/lib/index.js", "../typed-real-ctors/lib/ctors.js", "../typed-real-ctors/lib/main.js", "../typed-real-ctors/lib/index.js", "../typed-real-dtypes/lib/dtypes.json", "../typed-real-dtypes/lib/main.js", "../typed-real-dtypes/lib/index.js", "../typed-real-float-ctors/lib/ctors.js", "../typed-real-float-ctors/lib/main.js", "../typed-real-float-ctors/lib/index.js", "../typed-real-float-dtypes/lib/dtypes.json", "../typed-real-float-dtypes/lib/main.js", "../typed-real-float-dtypes/lib/index.js", "../typed-signed-integer-ctors/lib/ctors.js", "../typed-signed-integer-ctors/lib/main.js", "../typed-signed-integer-ctors/lib/index.js", "../typed-signed-integer-dtypes/lib/dtypes.json", "../typed-signed-integer-dtypes/lib/main.js", "../typed-signed-integer-dtypes/lib/index.js", "../typed-unsigned-integer-ctors/lib/ctors.js", "../typed-unsigned-integer-ctors/lib/main.js", "../typed-unsigned-integer-ctors/lib/index.js", "../typed-unsigned-integer-dtypes/lib/dtypes.json", "../typed-unsigned-integer-dtypes/lib/main.js", "../typed-unsigned-integer-dtypes/lib/index.js", "../zeros-like/lib/main.js", "../zeros-like/lib/index.js", "../lib/index.js"],
-  "sourcesContent": ["/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar TYPE = 'function';\n\n\n// MAIN //\n\n/**\n* Tests if an array-like object supports the accessor (get/set) protocol.\n*\n* @param {Object} value - value to test\n* @returns {boolean} boolean indicating whether a value is an accessor array\n*\n* @example\n* var Complex128Array = require( '@stdlib/array/complex128' );\n*\n* var bool = isAccessorArray( new Complex128Array( 10 ) );\n* // returns true\n*\n* @example\n* var bool = isAccessorArray( [] );\n* // returns false\n*/\nfunction isAccessorArray( value ) {\n\treturn ( typeof value.get === TYPE && typeof value.set === TYPE ); // eslint-disable-line valid-typeof\n}\n\n\n// EXPORTS //\n\nmodule.exports = isAccessorArray;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test if an array-like object supports the accessor (get/set) protocol.\n*\n* @module @stdlib/array/base/assert/is-accessor-array\n*\n* @example\n* var Complex128Array = require( '@stdlib/array/complex128array' );\n* var isAccessorArray = require( '@stdlib/array/base/assert/is-accessor-array' );\n*\n* var bool = isAccessorArray( new Complex128Array( 10 ) );\n* // returns true\n*\n* bool = isAccessorArray( [] );\n* // returns false\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar GETTERS = {\n\t'float64': getFloat64,\n\t'float32': getFloat32,\n\t'int32': getInt32,\n\t'int16': getInt16,\n\t'int8': getInt8,\n\t'uint32': getUint32,\n\t'uint16': getUint16,\n\t'uint8': getUint8,\n\t'uint8c': getUint8c,\n\t'generic': getGeneric,\n\t'default': getArrayLike\n};\n\n\n// FUNCTIONS //\n\n/**\n* Returns an element from a `Float64Array`.\n*\n* @private\n* @param {Float64Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @returns {number} element value\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var arr = new Float64Array( [ 1, 2, 3, 4 ] );\n*\n* var v = getFloat64( arr, 2 );\n* // returns 3.0\n*/\nfunction getFloat64( arr, idx ) {\n\treturn arr[ idx ];\n}\n\n/**\n* Returns an element from a `Float32Array`.\n*\n* @private\n* @param {Float32Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @returns {number} element value\n*\n* @example\n* var Float32Array = require( '@stdlib/array/float32' );\n*\n* var arr = new Float32Array( [ 1, 2, 3, 4 ] );\n*\n* var v = getFloat32( arr, 2 );\n* // returns 3.0\n*/\nfunction getFloat32( arr, idx ) {\n\treturn arr[ idx ];\n}\n\n/**\n* Returns an element from an `Int32Array`.\n*\n* @private\n* @param {Int32Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @returns {number} element value\n*\n* @example\n* var Int32Array = require( '@stdlib/array/int32' );\n*\n* var arr = new Int32Array( [ 1, 2, 3, 4 ] );\n*\n* var v = getInt32( arr, 2 );\n* // returns 3\n*/\nfunction getInt32( arr, idx ) { // eslint-disable-line stdlib/jsdoc-doctest-decimal-point\n\treturn arr[ idx ];\n}\n\n/**\n* Returns an element from an `Int16Array`.\n*\n* @private\n* @param {Int16Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @returns {number} element value\n*\n* @example\n* var Int16Array = require( '@stdlib/array/int16' );\n*\n* var arr = new Int16Array( [ 1, 2, 3, 4 ] );\n*\n* var v = getInt16( arr, 2 );\n* // returns 3\n*/\nfunction getInt16( arr, idx ) { // eslint-disable-line stdlib/jsdoc-doctest-decimal-point\n\treturn arr[ idx ];\n}\n\n/**\n* Returns an element from an `Int8Array`.\n*\n* @private\n* @param {Int8Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @returns {number} element value\n*\n* @example\n* var Int8Array = require( '@stdlib/array/int8' );\n*\n* var arr = new Int8Array( [ 1, 2, 3, 4 ] );\n*\n* var v = getInt8( arr, 2 );\n* // returns 3\n*/\nfunction getInt8( arr, idx ) { // eslint-disable-line stdlib/jsdoc-doctest-decimal-point\n\treturn arr[ idx ];\n}\n\n/**\n* Returns an element from a `Uint32Array`.\n*\n* @private\n* @param {Uint32Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @returns {number} element value\n*\n* @example\n* var Uint32Array = require( '@stdlib/array/uint32' );\n*\n* var arr = new Uint32Array( [ 1, 2, 3, 4 ] );\n*\n* var v = getUint32( arr, 2 );\n* // returns 3\n*/\nfunction getUint32( arr, idx ) { // eslint-disable-line stdlib/jsdoc-doctest-decimal-point\n\treturn arr[ idx ];\n}\n\n/**\n* Returns an element from a `Uint16Array`.\n*\n* @private\n* @param {Uint16Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @returns {number} element value\n*\n* @example\n* var Uint16Array = require( '@stdlib/array/uint16' );\n*\n* var arr = new Uint16Array( [ 1, 2, 3, 4 ] );\n*\n* var v = getUint16( arr, 2 );\n* // returns 3\n*/\nfunction getUint16( arr, idx ) { // eslint-disable-line stdlib/jsdoc-doctest-decimal-point\n\treturn arr[ idx ];\n}\n\n/**\n* Returns an element from a `Uint8Array`.\n*\n* @private\n* @param {Uint8Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @returns {number} element value\n*\n* @example\n* var Uint8Array = require( '@stdlib/array/uint8' );\n*\n* var arr = new Uint8Array( [ 1, 2, 3, 4 ] );\n*\n* var v = getUint8( arr, 2 );\n* // returns 3\n*/\nfunction getUint8( arr, idx ) { // eslint-disable-line stdlib/jsdoc-doctest-decimal-point\n\treturn arr[ idx ];\n}\n\n/**\n* Returns an element from a `Uint8ClampedArray`.\n*\n* @private\n* @param {Uint8ClampedArray} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @returns {number} element value\n*\n* @example\n* var Uint8ClampedArray = require( '@stdlib/array/uint8c' );\n*\n* var arr = new Uint8ClampedArray( [ 1, 2, 3, 4 ] );\n*\n* var v = getUint8c( arr, 2 );\n* // returns 3\n*/\nfunction getUint8c( arr, idx ) { // eslint-disable-line stdlib/jsdoc-doctest-decimal-point\n\treturn arr[ idx ];\n}\n\n/**\n* Returns an element from a generic `Array`.\n*\n* @private\n* @param {Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @returns {*} element value\n*\n* @example\n* var arr = [ 1, 2, 3, 4 ];\n*\n* var v = getGeneric( arr, 2 );\n* // returns 3\n*/\nfunction getGeneric( arr, idx ) {\n\treturn arr[ idx ];\n}\n\n/**\n* Returns an element from an indexed array-like object.\n*\n* @private\n* @param {Collection} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @returns {*} element value\n*\n* @example\n* var arr = [ 1, 2, 3, 4 ];\n*\n* var v = getArrayLike( arr, 2 );\n* // returns 3\n*/\nfunction getArrayLike( arr, idx ) {\n\treturn arr[ idx ];\n}\n\n\n// MAIN //\n\n/**\n* Returns an accessor function for retrieving an element from an indexed array-like object.\n*\n* @param {string} dtype - array dtype\n* @returns {Function} accessor\n*\n* @example\n* var dtype = require( '@stdlib/array/dtype' );\n*\n* var arr = [ 1, 2, 3, 4 ];\n*\n* var get = getter( dtype( arr ) );\n* var v = get( arr, 2 );\n* // returns 3\n*/\nfunction getter( dtype ) {\n\tvar f = GETTERS[ dtype ];\n\tif ( typeof f === 'function' ) {\n\t\treturn f;\n\t}\n\treturn GETTERS.default;\n}\n\n\n// EXPORTS //\n\nmodule.exports = getter;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return an accessor function for retrieving an element from an indexed array-like object.\n*\n* @module @stdlib/array/base/getter\n*\n* @example\n* var dtype = require( '@stdlib/array/dtype' );\n* var getter = require( '@stdlib/array/base/getter' );\n*\n* var arr = [ 1, 2, 3, 4 ];\n*\n* var get = getter( dtype( arr ) );\n* var v = get( arr, 2 );\n* // returns 3\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar SETTERS = {\n\t'float64': setFloat64,\n\t'float32': setFloat32,\n\t'int32': setInt32,\n\t'int16': setInt16,\n\t'int8': setInt8,\n\t'uint32': setUint32,\n\t'uint16': setUint16,\n\t'uint8': setUint8,\n\t'uint8c': setUint8c,\n\t'generic': setGeneric,\n\t'default': setArrayLike\n};\n\n\n// FUNCTIONS //\n\n/**\n* Sets an element in a `Float64Array`.\n*\n* @private\n* @param {Float64Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @param {number} value - value to set\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var arr = new Float64Array( 4 );\n*\n* setFloat64( arr, 2, 3.0 );\n*\n* var v = arr[ 2 ];\n* // returns 3.0\n*/\nfunction setFloat64( arr, idx, value ) {\n\tarr[ idx ] = value;\n}\n\n/**\n* Sets an element in a `Float32Array`.\n*\n* @private\n* @param {Float32Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @param {number} value - value to set\n*\n* @example\n* var Float32Array = require( '@stdlib/array/float32' );\n*\n* var arr = new Float32Array( 4 );\n*\n* setFloat32( arr, 2, 3.0 );\n*\n* var v = arr[ 2 ];\n* // returns 3.0\n*/\nfunction setFloat32( arr, idx, value ) {\n\tarr[ idx ] = value;\n}\n\n/**\n* Sets an element in an `Int32Array`.\n*\n* @private\n* @param {Int32Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @param {number} value - value to set\n*\n* @example\n* var Int32Array = require( '@stdlib/array/int32' );\n*\n* var arr = new Int32Array( 4 );\n*\n* setInt32( arr, 2, 3 );\n*\n* var v = arr[ 2 ];\n* // returns 3\n*/\nfunction setInt32( arr, idx, value ) {\n\tarr[ idx ] = value;\n}\n\n/**\n* Sets an element in an `Int16Array`.\n*\n* @private\n* @param {Int16Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @param {number} value - value to set\n*\n* @example\n* var Int16Array = require( '@stdlib/array/int16' );\n*\n* var arr = new Int16Array( 4 );\n*\n* setInt16( arr, 2, 3 );\n*\n* var v = arr[ 2 ];\n* // returns 3\n*/\nfunction setInt16( arr, idx, value ) {\n\tarr[ idx ] = value;\n}\n\n/**\n* Sets an element in an `Int8Array`.\n*\n* @private\n* @param {Int8Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @param {number} value - value to set\n*\n* @example\n* var Int8Array = require( '@stdlib/array/int8' );\n*\n* var arr = new Int8Array( 4 );\n*\n* setInt8( arr, 2, 3 );\n*\n* var v = arr[ 2 ];\n* // returns 3\n*/\nfunction setInt8( arr, idx, value ) {\n\tarr[ idx ] = value;\n}\n\n/**\n* Sets an element in a `Uint32Array`.\n*\n* @private\n* @param {Uint32Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @param {number} value - value to set\n*\n* @example\n* var Uint32Array = require( '@stdlib/array/uint32' );\n*\n* var arr = new Uint32Array( 4 );\n*\n* setUint32( arr, 2, 3 );\n*\n* var v = arr[ 2 ];\n* // returns 3\n*/\nfunction setUint32( arr, idx, value ) {\n\tarr[ idx ] = value;\n}\n\n/**\n* Sets an element in a `Uint16Array`.\n*\n* @private\n* @param {Uint16Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @param {number} value - value to set\n*\n* @example\n* var Uint16Array = require( '@stdlib/array/uint16' );\n*\n* var arr = new Uint16Array( 4 );\n*\n* setUint16( arr, 2, 3 );\n*\n* var v = arr[ 2 ];\n* // returns 3\n*/\nfunction setUint16( arr, idx, value ) {\n\tarr[ idx ] = value;\n}\n\n/**\n* Sets an element in a `Uint8Array`.\n*\n* @private\n* @param {Uint8Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @param {number} value - value to set\n*\n* @example\n* var Uint8Array = require( '@stdlib/array/uint8' );\n*\n* var arr = new Uint8Array( 4 );\n*\n* setUint8( arr, 2, 3 );\n*\n* var v = arr[ 2 ];\n* // returns 3\n*/\nfunction setUint8( arr, idx, value ) {\n\tarr[ idx ] = value;\n}\n\n/**\n* Sets an element in a `Uint8ClampedArray`.\n*\n* @private\n* @param {Uint8ClampedArray} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @param {number} value - value to set\n*\n* @example\n* var Uint8ClampedArray = require( '@stdlib/array/uint8c' );\n*\n* var arr = new Uint8ClampedArray( 4 );\n*\n* setUint8c( arr, 2, 3 );\n*\n* var v = arr[ 2 ];\n* // returns 3\n*/\nfunction setUint8c( arr, idx, value ) {\n\tarr[ idx ] = value;\n}\n\n/**\n* Sets an element in a generic `Array`.\n*\n* @private\n* @param {Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @param {*} value - value to set\n*\n* @example\n* var arr = [ 1, 2, 3, 4 ];\n*\n* setGeneric( arr, 2, 3 );\n*\n* var v = arr[ 2 ];\n* // returns 3\n*/\nfunction setGeneric( arr, idx, value ) {\n\tarr[ idx ] = value;\n}\n\n/**\n* Sets an element in an indexed array-like object.\n*\n* @private\n* @param {Collection} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @param {*} value - value to set\n*\n* @example\n* var arr = [ 1, 2, 3, 4 ];\n*\n* setArrayLike( arr, 2, 3 );\n*\n* var v = arr[ 2 ];\n* // returns 3\n*/\nfunction setArrayLike( arr, idx, value ) {\n\tarr[ idx ] = value;\n}\n\n\n// MAIN //\n\n/**\n* Returns an accessor function for setting an element in an indexed array-like object.\n*\n* @param {string} dtype - array dtype\n* @returns {Function} accessor\n*\n* @example\n* var dtype = require( '@stdlib/array/dtype' );\n*\n* var arr = [ 1, 2, 3, 4 ];\n*\n* var set = setter( dtype( arr ) );\n* set( arr, 2, 3 );\n*\n* var v = arr[ 2 ];\n* // returns 3\n*/\nfunction setter( dtype ) {\n\tvar f = SETTERS[ dtype ];\n\tif ( typeof f === 'function' ) {\n\t\treturn f;\n\t}\n\treturn SETTERS.default;\n}\n\n\n// EXPORTS //\n\nmodule.exports = setter;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return an accessor function for setting an element in an indexed array-like object.\n*\n* @module @stdlib/array/base/setter\n*\n* @example\n* var dtype = require( '@stdlib/array/dtype' );\n* var set = require( '@stdlib/array/base/setter' );\n*\n* var arr = [ 1, 2, 3, 4 ];\n*\n* var set = setter( dtype( arr ) );\n* set( arr, 2, 10 );\n*\n* var v = arr[ 2 ];\n* // returns 10\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar GETTERS = {\n\t'complex128': getComplex128,\n\t'complex64': getComplex64,\n\t'default': getArrayLike\n};\n\n\n// FUNCTIONS //\n\n/**\n* Returns an element from a `Complex128Array`.\n*\n* @private\n* @param {Complex128Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @returns {number} element value\n*\n* @example\n* var Complex128Array = require( '@stdlib/array/complex128' );\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* var arr = new Complex128Array( [ 1, 2, 3, 4 ] );\n*\n* var v = getComplex128( arr, 1 );\n* // returns <Complex128>\n*\n* var re = real( v );\n* // returns 3.0\n*\n* var im = imag( v );\n* // returns 4.0\n*/\nfunction getComplex128( arr, idx ) {\n\treturn arr.get( idx );\n}\n\n/**\n* Returns an element from a `Complex64Array`.\n*\n* @private\n* @param {Complex64Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @returns {number} element value\n*\n* @example\n* var Complex64Array = require( '@stdlib/array/complex64' );\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* var arr = new Complex64Array( [ 1, 2, 3, 4 ] );\n*\n* var v = getComplex64( arr, 1 );\n* // returns <Complex64>\n*\n* var re = realf( v );\n* // returns 3.0\n*\n* var im = imagf( v );\n* // returns 4.0\n*/\nfunction getComplex64( arr, idx ) {\n\treturn arr.get( idx );\n}\n\n/**\n* Returns an element from an array-like object supporting the get/set protocol.\n*\n* @private\n* @param {Collection} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @returns {*} element value\n*\n* @example\n* var arr = [ 1, 2, 3, 4 ];\n*\n* function get( idx ) {\n*    return arr[ idx ];\n* }\n*\n* function set( value, idx ) {\n*    arr[ idx ] = value;\n* }\n*\n* arr.get = get;\n* arr.set = set;\n*\n* var v = getArrayLike( arr, 2 );\n* // returns 3\n*/\nfunction getArrayLike( arr, idx ) {\n\treturn arr.get( idx );\n}\n\n\n// MAIN //\n\n/**\n* Returns an accessor function for retrieving an element from an array-like object supporting the get/set protocol.\n*\n* @param {string} dtype - array dtype\n* @returns {Function} accessor\n*\n* @example\n* var Complex64Array = require( '@stdlib/array/complex64' );\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n* var dtype = require( '@stdlib/array/dtype' );\n*\n* var arr = new Complex64Array( [ 1, 2, 3, 4 ] );\n*\n* var get = getter( dtype( arr ) );\n* var v = get( arr, 1 );\n* // returns <Complex64>\n*\n* var re = realf( v );\n* // returns 3.0\n*\n* var im = imagf( v );\n* // returns 4.0\n*/\nfunction getter( dtype ) {\n\tvar f = GETTERS[ dtype ];\n\tif ( typeof f === 'function' ) {\n\t\treturn f;\n\t}\n\treturn GETTERS.default;\n}\n\n\n// EXPORTS //\n\nmodule.exports = getter;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return an accessor function for retrieving an element from an array-like object supporting the get/set protocol.\n*\n* @module @stdlib/array/base/accessor-getter\n*\n* @example\n* var Complex64Array = require( '@stdlib/array/complex64' );\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n* var dtype = require( '@stdlib/array/dtype' );\n* var getter = require( '@stdlib/array/base/accessor-getter' );\n*\n* var arr = new Complex64Array( [ 1, 2, 3, 4 ] );\n*\n* var get = getter( dtype( arr ) );\n* var v = get( arr, 1 );\n* // returns <Complex64>\n*\n* var re = realf( v );\n* // returns 3.0\n*\n* var im = imagf( v );\n* // returns 4.0\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar SETTERS = {\n\t'complex128': setComplex128,\n\t'complex64': setComplex64,\n\t'default': setArrayLike\n};\n\n\n// FUNCTIONS //\n\n/**\n* Sets an element in a `Complex128Array`.\n*\n* @private\n* @param {Complex128Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @param {(Collection|Complex|ComplexArray)} value - value(s)\n*\n* @example\n* var Complex128Array = require( '@stdlib/array/complex128' );\n* var Complex128 = require( '@stdlib/complex/float64' );\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* var arr = new Complex128Array( [ 1, 2, 3, 4 ] );\n*\n* setComplex128( arr, 1, new Complex128( 10.0, 11.0 ) );\n* var v = arr.get( 1 );\n* // returns <Complex128>\n*\n* var re = real( v );\n* // returns 10.0\n*\n* var im = imag( v );\n* // returns 11.0\n*/\nfunction setComplex128( arr, idx, value ) {\n\tarr.set( value, idx );\n}\n\n/**\n* Sets an element in a `Complex64Array`.\n*\n* @private\n* @param {Complex64Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @param {(Collection|Complex|ComplexArray)} value - value(s)\n*\n* @example\n* var Complex64Array = require( '@stdlib/array/complex64' );\n* var Complex64 = require( '@stdlib/complex/float32' );\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* var arr = new Complex64Array( [ 1, 2, 3, 4 ] );\n*\n* setComplex64( arr, 1, new Complex64( 10.0, 11.0 ) );\n* var v = arr.get( 1 );\n* // returns <Complex64>\n*\n* var re = realf( v );\n* // returns 10.0\n*\n* var im = imagf( v );\n* // returns 11.0\n*/\nfunction setComplex64( arr, idx, value ) {\n\tarr.set( value, idx );\n}\n\n/**\n* Sets an element in an array-like object supporting the get/set protocol.\n*\n* @private\n* @param {Collection} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @param {(Collection|Complex|ComplexArray)} value - value(s)\n*\n* @example\n* var arr = [ 1, 2, 3, 4 ];\n*\n* function get( idx ) {\n*    return arr[ idx ];\n* }\n*\n* function set( value, idx ) {\n*    arr[ idx ] = value;\n* }\n*\n* arr.get = get;\n* arr.set = set;\n*\n* setArrayLike( arr, 2, 10 );\n*\n* var v = arr[ 2 ];\n* // returns 10\n*/\nfunction setArrayLike( arr, idx, value ) {\n\tarr.set( value, idx );\n}\n\n\n// MAIN //\n\n/**\n* Returns an accessor function for setting an element in an array-like object supporting the get/set protocol.\n*\n* @param {string} dtype - array dtype\n* @returns {Function} accessor\n*\n* @example\n* var Complex64Array = require( '@stdlib/array/complex64' );\n* var Complex64 = require( '@stdlib/complex/float32' );\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n* var dtype = require( '@stdlib/array/dtype' );\n*\n* var arr = new Complex64Array( [ 1, 2, 3, 4 ] );\n*\n* var set = setter( dtype( arr ) );\n* set( arr, 1, new Complex64( 10.0, 11.0 ) );\n*\n* var v = arr.get( 1 );\n* // returns <Complex64>\n*\n* var re = realf( v );\n* // returns 10.0\n*\n* var im = imagf( v );\n* // returns 11.0\n*/\nfunction setter( dtype ) {\n\tvar f = SETTERS[ dtype ];\n\tif ( typeof f === 'function' ) {\n\t\treturn f;\n\t}\n\treturn SETTERS.default;\n}\n\n\n// EXPORTS //\n\nmodule.exports = setter;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return an accessor function for setting an element in an array-like object supporting the get/set protocol.\n*\n* @module @stdlib/array/base/accessor-setter\n*\n* @example\n* var Complex64Array = require( '@stdlib/array/complex64' );\n* var Complex64 = require( '@stdlib/complex/float32' );\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n* var dtype = require( '@stdlib/array/dtype' );\n* var setter = require( '@stdlib/array/base/accessor-setter' );\n*\n* var arr = new Complex64Array( [ 1, 2, 3, 4 ] );\n*\n* var set = setter( dtype( arr ) );\n* set( arr, 1, new Complex64( 10.0, 11.0 ) );\n*\n* var v = arr.get( 1 );\n* // returns <Complex64>\n*\n* var re = realf( v );\n* // returns 10.0\n*\n* var im = imagf( v );\n* // returns 11.0\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n// Mapping from array constructors to data types...\nvar ctor2dtypes = {\n\t'Float32Array': 'float32',\n\t'Float64Array': 'float64',\n\t'Array': 'generic',\n\t'Int16Array': 'int16',\n\t'Int32Array': 'int32',\n\t'Int8Array': 'int8',\n\t'Uint16Array': 'uint16',\n\t'Uint32Array': 'uint32',\n\t'Uint8Array': 'uint8',\n\t'Uint8ClampedArray': 'uint8c',\n\t'Complex64Array': 'complex64',\n\t'Complex128Array': 'complex128'\n};\n\n\n// EXPORTS //\n\nmodule.exports = ctor2dtypes;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar ctor = ( typeof Float64Array === 'function' ) ? Float64Array : void 0; // eslint-disable-line stdlib/require-globals\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// TODO: write polyfill\n\n// MAIN //\n\n/**\n* Typed array which represents an array of double-precision floating-point numbers in the platform byte order.\n*\n* @throws {Error} not implemented\n*/\nfunction polyfill() {\n\tthrow new Error( 'not implemented' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = polyfill;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Typed array constructor which returns a typed array representing an array of double-precision floating-point numbers in the platform byte order.\n*\n* @module @stdlib/array/float64\n*\n* @example\n* var ctor = require( '@stdlib/array/float64' );\n*\n* var arr = new ctor( 10 );\n* // returns <Float64Array>\n*/\n\n// MODULES //\n\nvar hasFloat64ArraySupport = require( '@stdlib/assert/has-float64array-support' );\nvar builtin = require( './main.js' );\nvar polyfill = require( './polyfill.js' );\n\n\n// MAIN //\n\nvar ctor;\nif ( hasFloat64ArraySupport() ) {\n\tctor = builtin;\n} else {\n\tctor = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar ctor = ( typeof Float32Array === 'function' ) ? Float32Array : void 0; // eslint-disable-line stdlib/require-globals\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// TODO: write polyfill\n\n// MAIN //\n\n/**\n* Typed array which represents an array of single-precision floating-point numbers in the platform byte order.\n*\n* @throws {Error} not implemented\n*/\nfunction polyfill() {\n\tthrow new Error( 'not implemented' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = polyfill;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Typed array constructor which returns a typed array representing an array of single-precision floating-point numbers in the platform byte order.\n*\n* @module @stdlib/array/float32\n*\n* @example\n* var ctor = require( '@stdlib/array/float32' );\n*\n* var arr = new ctor( 10 );\n* // returns <Float32Array>\n*/\n\n// MODULES //\n\nvar hasFloat32ArraySupport = require( '@stdlib/assert/has-float32array-support' );\nvar builtin = require( './main.js' );\nvar polyfill = require( './polyfill.js' );\n\n\n// MAIN //\n\nvar ctor;\nif ( hasFloat32ArraySupport() ) {\n\tctor = builtin;\n} else {\n\tctor = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar ctor = ( typeof Uint32Array === 'function' ) ? Uint32Array : void 0; // eslint-disable-line stdlib/require-globals\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// TODO: write polyfill\n\n// MAIN //\n\n/**\n* Typed array which represents an array of 32-bit unsigned integers in the platform byte order.\n*\n* @throws {Error} not implemented\n*/\nfunction polyfill() {\n\tthrow new Error( 'not implemented' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = polyfill;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Typed array constructor which returns a typed array representing an array of 32-bit unsigned integers in the platform byte order.\n*\n* @module @stdlib/array/uint32\n*\n* @example\n* var ctor = require( '@stdlib/array/uint32' );\n*\n* var arr = new ctor( 10 );\n* // returns <Uint32Array>\n*/\n\n// MODULES //\n\nvar hasUint32ArraySupport = require( '@stdlib/assert/has-uint32array-support' );\nvar builtin = require( './main.js' );\nvar polyfill = require( './polyfill.js' );\n\n\n// MAIN //\n\nvar ctor;\nif ( hasUint32ArraySupport() ) {\n\tctor = builtin;\n} else {\n\tctor = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar ctor = ( typeof Int32Array === 'function' ) ? Int32Array : void 0; // eslint-disable-line stdlib/require-globals\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// TODO: write polyfill\n\n// MAIN //\n\n/**\n* Typed array which represents an array of twos-complement 32-bit signed integers in the platform byte order.\n*\n* @throws {Error} not implemented\n*/\nfunction polyfill() {\n\tthrow new Error( 'not implemented' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = polyfill;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Typed array constructor which returns a typed array representing an array of twos-complement 32-bit signed integers in the platform byte order.\n*\n* @module @stdlib/array/int32\n*\n* @example\n* var ctor = require( '@stdlib/array/int32' );\n*\n* var arr = new ctor( 10 );\n* // returns <Int32Array>\n*/\n\n// MODULES //\n\nvar hasInt32ArraySupport = require( '@stdlib/assert/has-int32array-support' );\nvar builtin = require( './main.js' );\nvar polyfill = require( './polyfill.js' );\n\n\n// MAIN //\n\nvar ctor;\nif ( hasInt32ArraySupport() ) {\n\tctor = builtin;\n} else {\n\tctor = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar ctor = ( typeof Uint16Array === 'function' ) ? Uint16Array : void 0; // eslint-disable-line stdlib/require-globals\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// TODO: write polyfill\n\n// MAIN //\n\n/**\n* Typed array which represents an array of 16-bit unsigned integers in the platform byte order.\n*\n* @throws {Error} not implemented\n*/\nfunction polyfill() {\n\tthrow new Error( 'not implemented' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = polyfill;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Typed array constructor which returns a typed array representing an array of 16-bit unsigned integers in the platform byte order.\n*\n* @module @stdlib/array/uint16\n*\n* @example\n* var ctor = require( '@stdlib/array/uint16' );\n*\n* var arr = new ctor( 10 );\n* // returns <Uint16Array>\n*/\n\n// MODULES //\n\nvar hasUint16ArraySupport = require( '@stdlib/assert/has-uint16array-support' );\nvar builtin = require( './main.js' );\nvar polyfill = require( './polyfill.js' );\n\n\n// MAIN //\n\nvar ctor;\nif ( hasUint16ArraySupport() ) {\n\tctor = builtin;\n} else {\n\tctor = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar ctor = ( typeof Int16Array === 'function' ) ? Int16Array : void 0; // eslint-disable-line stdlib/require-globals\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// TODO: write polyfill\n\n// MAIN //\n\n/**\n* Typed array which represents an array of twos-complement 16-bit signed integers in the platform byte order.\n*\n* @throws {Error} not implemented\n*/\nfunction polyfill() {\n\tthrow new Error( 'not implemented' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = polyfill;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Typed array constructor which returns a typed array representing an array of twos-complement 16-bit signed integers in the platform byte order.\n*\n* @module @stdlib/array/int16\n*\n* @example\n* var ctor = require( '@stdlib/array/int16' );\n*\n* var arr = new ctor( 10 );\n* // returns <Int16Array>\n*/\n\n// MODULES //\n\nvar hasInt16ArraySupport = require( '@stdlib/assert/has-int16array-support' );\nvar builtin = require( './main.js' );\nvar polyfill = require( './polyfill.js' );\n\n\n// MAIN //\n\nvar ctor;\nif ( hasInt16ArraySupport() ) {\n\tctor = builtin;\n} else {\n\tctor = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar ctor = ( typeof Uint8Array === 'function' ) ? Uint8Array : void 0; // eslint-disable-line stdlib/require-globals\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// TODO: write polyfill\n\n// MAIN //\n\n/**\n* Typed array which represents an array of 8-bit unsigned integers in the platform byte order.\n*\n* @throws {Error} not implemented\n*/\nfunction polyfill() {\n\tthrow new Error( 'not implemented' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = polyfill;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Typed array constructor which returns a typed array representing an array of 8-bit unsigned integers in the platform byte order.\n*\n* @module @stdlib/array/uint8\n*\n* @example\n* var ctor = require( '@stdlib/array/uint8' );\n*\n* var arr = new ctor( 10 );\n* // returns <Uint8Array>\n*/\n\n// MODULES //\n\nvar hasUint8ArraySupport = require( '@stdlib/assert/has-uint8array-support' );\nvar builtin = require( './main.js' );\nvar polyfill = require( './polyfill.js' );\n\n\n// MAIN //\n\nvar ctor;\nif ( hasUint8ArraySupport() ) {\n\tctor = builtin;\n} else {\n\tctor = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar ctor = ( typeof Uint8ClampedArray === 'function' ) ? Uint8ClampedArray : void 0; // eslint-disable-line stdlib/require-globals\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// TODO: write polyfill\n\n// MAIN //\n\n/**\n* Typed array which represents an array of 8-bit unsigned integers in the platform byte order clamped to 0-255.\n*\n* @throws {Error} not implemented\n*/\nfunction polyfill() {\n\tthrow new Error( 'not implemented' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = polyfill;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Typed array constructor which returns a typed array representing an array of 8-bit unsigned integers in the platform byte order clamped to 0-255.\n*\n* @module @stdlib/array/uint8c\n*\n* @example\n* var ctor = require( '@stdlib/array/uint8c' );\n*\n* var arr = new ctor( 10 );\n* // returns <Uint8ClampedArray>\n*/\n\n// MODULES //\n\nvar hasUint8ClampedArraySupport = require( '@stdlib/assert/has-uint8clampedarray-support' ); // eslint-disable-line id-length\nvar builtin = require( './main.js' );\nvar polyfill = require( './polyfill.js' );\n\n\n// MAIN //\n\nvar ctor;\nif ( hasUint8ClampedArraySupport() ) {\n\tctor = builtin;\n} else {\n\tctor = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar ctor = ( typeof Int8Array === 'function' ) ? Int8Array : void 0; // eslint-disable-line stdlib/require-globals\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// TODO: write polyfill\n\n// MAIN //\n\n/**\n* Typed array which represents an array of twos-complement 8-bit signed integers in the platform byte order.\n*\n* @throws {Error} not implemented\n*/\nfunction polyfill() {\n\tthrow new Error( 'not implemented' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = polyfill;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Typed array constructor which returns a typed array representing an array of twos-complement 8-bit signed integers in the platform byte order.\n*\n* @module @stdlib/array/int8\n*\n* @example\n* var ctor = require( '@stdlib/array/int8' );\n*\n* var arr = new ctor( 10 );\n* // returns <Int8Array>\n*/\n\n// MODULES //\n\nvar hasInt8ArraySupport = require( '@stdlib/assert/has-int8array-support' );\nvar builtin = require( './main.js' );\nvar polyfill = require( './polyfill.js' );\n\n\n// MAIN //\n\nvar ctor;\nif ( hasInt8ArraySupport() ) {\n\tctor = builtin;\n} else {\n\tctor = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar BYTES_PER_ELEMENT = 8; // 4 bytes per float32 x (1 real + 1 imag component)\n\n\n// MAIN //\n\n/**\n* Returns a boolean indicating if a value is a `Complex64Array`.\n*\n* @param {*} value - value to test\n* @returns {boolean} boolean indicating if a value is a `Complex64Array`\n*\n* @example\n* var Complex64Array = require( '@stdlib/array/complex64' );\n*\n* var bool = isComplex64Array( new Complex64Array( 10 ) );\n* // returns true\n*\n* bool = isComplex64Array( [] );\n* // returns false\n*/\nfunction isComplex64Array( value ) {\n\t// Note: the following is not robust and that is intentional. In this case, we are seeking a lower cost way to reasonably determine whether an input value is a `Complex64Array` in order to avoid walking the prototype chain and resolving constructors, which is necessary for robust identification of cross-realm instances. For more robust validation, see `@stdlib/assert/is-complex64array`.\n\treturn (\n\t\ttypeof value === 'object' &&\n\t\tvalue !== null &&\n\t\tvalue.constructor.name === 'Complex64Array' &&\n\t\tvalue.BYTES_PER_ELEMENT === BYTES_PER_ELEMENT\n\t);\n}\n\n\n// EXPORTS //\n\nmodule.exports = isComplex64Array;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test if a value is a `Complex64Array`.\n*\n* @module @stdlib/array/base/assert/is-complex64array\n*\n* @example\n* var Complex64Array = require( '@stdlib/array/complex64' );\n* var isComplex64Array = require( '@stdlib/array/base/assert/is-complex64array' );\n*\n* var bool = isComplex64Array( new Complex64Array( 10 ) );\n* // returns true\n*\n* bool = isComplex64Array( [] );\n* // returns false\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar BYTES_PER_ELEMENT = 16; // 8 bytes per float64 x (1 real + 1 imag component)\n\n\n// MAIN //\n\n/**\n* Returns a boolean indicating if a value is a `Complex128Array`.\n*\n* @param {*} value - value to test\n* @returns {boolean} boolean indicating if a value is a `Complex128Array`\n*\n* @example\n* var Complex128Array = require( '@stdlib/array/complex128' );\n*\n* var bool = isComplex128Array( new Complex128Array( 10 ) );\n* // returns true\n*\n* bool = isComplex128Array( [] );\n* // returns false\n*/\nfunction isComplex128Array( value ) {\n\t// Note: the following is not robust and that is intentional. In this case, we are seeking a lower cost way to reasonably determine whether an input value is a `Complex128Array` in order to avoid walking the prototype chain and resolving constructors, which is necessary for robust identification of cross-realm instances. For more robust validation, see `@stdlib/assert/is-complex128array`.\n\treturn (\n\t\ttypeof value === 'object' &&\n\t\tvalue !== null &&\n\t\tvalue.constructor.name === 'Complex128Array' &&\n\t\tvalue.BYTES_PER_ELEMENT === BYTES_PER_ELEMENT\n\t);\n}\n\n\n// EXPORTS //\n\nmodule.exports = isComplex128Array;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test if a value is a `Complex128Array`.\n*\n* @module @stdlib/array/base/assert/is-complex128array\n*\n* @example\n* var Complex128Array = require( '@stdlib/array/complex128' );\n* var isComplex128Array = require( '@stdlib/array/base/assert/is-complex128array' );\n*\n* var bool = isComplex128Array( new Complex128Array( 10 ) );\n* // returns true\n*\n* bool = isComplex128Array( [] );\n* // returns false\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isArrayLikeObject = require( '@stdlib/assert/is-array-like-object' );\nvar isComplexLike = require( '@stdlib/assert/is-complex-like' );\nvar realf = require( '@stdlib/complex/realf' );\nvar imagf = require( '@stdlib/complex/imagf' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Returns an array of iterated values.\n*\n* @private\n* @param {Object} it - iterator\n* @returns {(Array|TypeError)} array or an error\n*/\nfunction fromIterator( it ) {\n\tvar out;\n\tvar v;\n\tvar z;\n\n\tout = [];\n\twhile ( true ) {\n\t\tv = it.next();\n\t\tif ( v.done ) {\n\t\t\tbreak;\n\t\t}\n\t\tz = v.value;\n\t\tif ( isArrayLikeObject( z ) && z.length >= 2 ) {\n\t\t\tout.push( z[ 0 ], z[ 1 ] );\n\t\t} else if ( isComplexLike( z ) ) {\n\t\t\tout.push( realf( z ), imagf( z ) );\n\t\t} else {\n\t\t\treturn new TypeError( format( 'invalid argument. An iterator must return either a two-element array containing real and imaginary components or a complex number. Value: `%s`.', z ) );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = fromIterator;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isArrayLikeObject = require( '@stdlib/assert/is-array-like-object' );\nvar isComplexLike = require( '@stdlib/assert/is-complex-like' );\nvar realf = require( '@stdlib/complex/realf' );\nvar imagf = require( '@stdlib/complex/imagf' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Returns an array of iterated values.\n*\n* @private\n* @param {Object} it - iterator\n* @param {Function} clbk - callback to invoke for each iterated value\n* @param {*} thisArg - invocation context\n* @returns {(Array|TypeError)} array or an error\n*/\nfunction fromIteratorMap( it, clbk, thisArg ) {\n\tvar out;\n\tvar v;\n\tvar z;\n\tvar i;\n\n\tout = [];\n\ti = -1;\n\twhile ( true ) {\n\t\tv = it.next();\n\t\tif ( v.done ) {\n\t\t\tbreak;\n\t\t}\n\t\ti += 1;\n\t\tz = clbk.call( thisArg, v.value, i );\n\t\tif ( isArrayLikeObject( z ) && z.length >= 2 ) {\n\t\t\tout.push( z[ 0 ], z[ 1 ] );\n\t\t} else if ( isComplexLike( z ) ) {\n\t\t\tout.push( realf( z ), imagf( z ) );\n\t\t} else {\n\t\t\treturn new TypeError( format( 'invalid argument. Callback must return either a two-element array containing real and imaginary components or a complex number. Value: `%s`.', z ) );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = fromIteratorMap;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isComplexLike = require( '@stdlib/assert/is-complex-like' );\nvar realf = require( '@stdlib/complex/realf' );\nvar imagf = require( '@stdlib/complex/imagf' );\n\n\n// MAIN //\n\n/**\n* Returns a strided array of real and imaginary components.\n*\n* @private\n* @param {Float32Array} buf - output array\n* @param {Array} arr - array containing complex numbers\n* @returns {(Float32Array|null)} output array or null\n*/\nfunction fromArray( buf, arr ) {\n\tvar len;\n\tvar v;\n\tvar i;\n\tvar j;\n\n\tlen = arr.length;\n\tj = 0;\n\tfor ( i = 0; i < len; i++ ) {\n\t\tv = arr[ i ];\n\t\tif ( !isComplexLike( v ) ) {\n\t\t\treturn null;\n\t\t}\n\t\tbuf[ j ] = realf( v );\n\t\tbuf[ j+1 ] = imagf( v );\n\t\tj += 2; // stride\n\t}\n\treturn buf;\n}\n\n\n// EXPORTS //\n\nmodule.exports = fromArray;\n", "/* eslint-disable no-restricted-syntax, max-lines, no-invalid-this */\n\n/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isArrayLikeObject = require( '@stdlib/assert/is-array-like-object' );\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' );\nvar isObject = require( '@stdlib/assert/is-object' );\nvar isArray = require( '@stdlib/assert/is-array' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isComplexLike = require( '@stdlib/assert/is-complex-like' );\nvar isEven = require( '@stdlib/math/base/assert/is-even' );\nvar isInteger = require( '@stdlib/math/base/assert/is-integer' );\nvar isComplex64Array = require( './../../base/assert/is-complex64array' );\nvar isComplex128Array = require( './../../base/assert/is-complex128array' );\nvar hasIteratorSymbolSupport = require( '@stdlib/assert/has-iterator-symbol-support' );\nvar ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' );\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar setReadOnlyAccessor = require( '@stdlib/utils/define-nonenumerable-read-only-accessor' );\nvar Float32Array = require( './../../float32' );\nvar Complex64 = require( '@stdlib/complex/float32' );\nvar format = require( '@stdlib/string/format' );\nvar realf = require( '@stdlib/complex/realf' );\nvar imagf = require( '@stdlib/complex/imagf' );\nvar floor = require( '@stdlib/math/base/special/floor' );\nvar reinterpret64 = require( '@stdlib/strided/base/reinterpret-complex64' );\nvar reinterpret128 = require( '@stdlib/strided/base/reinterpret-complex128' );\nvar getter = require( './../../base/getter' );\nvar accessorGetter = require( './../../base/accessor-getter' );\nvar fromIterator = require( './from_iterator.js' );\nvar fromIteratorMap = require( './from_iterator_map.js' );\nvar fromArray = require( './from_array.js' );\n\n\n// VARIABLES //\n\nvar BYTES_PER_ELEMENT = Float32Array.BYTES_PER_ELEMENT * 2;\nvar HAS_ITERATOR_SYMBOL = hasIteratorSymbolSupport();\n\n\n// FUNCTIONS //\n\n/**\n* Returns a boolean indicating if a value is a complex typed array.\n*\n* @private\n* @param {*} value - value to test\n* @returns {boolean} boolean indicating if a value is a complex typed array\n*/\nfunction isComplexArray( value ) {\n\treturn (\n\t\tvalue instanceof Complex64Array ||\n\t\t(\n\t\t\ttypeof value === 'object' &&\n\t\t\tvalue !== null &&\n\t\t\t(\n\t\t\t\tvalue.constructor.name === 'Complex64Array' ||\n\t\t\t\tvalue.constructor.name === 'Complex128Array'\n\t\t\t) &&\n\t\t\ttypeof value._length === 'number' && // eslint-disable-line no-underscore-dangle\n\n\t\t\t// NOTE: we don't perform a more rigorous test here for a typed array for performance reasons, as robustly checking for a typed array instance could require walking the prototype tree and performing relatively expensive constructor checks...\n\t\t\ttypeof value._buffer === 'object' // eslint-disable-line no-underscore-dangle\n\t\t)\n\t);\n}\n\n/**\n* Returns a boolean indicating if a value is a complex typed array constructor.\n*\n* @private\n* @param {*} value - value to test\n* @returns {boolean} boolean indicating if a value is a complex typed array constructor\n*/\nfunction isComplexArrayConstructor( value ) {\n\treturn (\n\t\tvalue === Complex64Array ||\n\n\t\t// NOTE: weaker test in order to avoid a circular dependency with Complex128Array...\n\t\tvalue.name === 'Complex128Array'\n\t);\n}\n\n/**\n* Retrieves a complex number from a complex number array buffer.\n*\n* @private\n* @param {Float32Array} buf - array buffer\n* @param {NonNegativeInteger} idx - element index\n* @returns {Complex64} complex number\n*/\nfunction getComplex64( buf, idx ) {\n\tidx *= 2;\n\treturn new Complex64( buf[ idx ], buf[ idx+1 ] );\n}\n\n\n// MAIN //\n\n/**\n* 64-bit complex number array constructor.\n*\n* @constructor\n* @param {(NonNegativeInteger|Collection|ArrayBuffer|Iterable)} [arg] - length, typed array, array-like object, buffer, or an iterable\n* @param {NonNegativeInteger} [byteOffset=0] - byte offset\n* @param {NonNegativeInteger} [length] - view length\n* @throws {RangeError} ArrayBuffer byte length must be a multiple of `8`\n* @throws {RangeError} array-like object and typed array input arguments must have a length which is a multiple of two\n* @throws {TypeError} if provided only a single argument, must provide a valid argument\n* @throws {TypeError} byte offset must be a nonnegative integer\n* @throws {RangeError} byte offset must be a multiple of `8`\n* @throws {TypeError} view length must be a positive multiple of `8`\n* @throws {RangeError} must provide sufficient memory to accommodate byte offset and view length requirements\n* @throws {TypeError} an iterator must return either a two element array containing real and imaginary components or a complex number\n* @returns {Complex64Array} complex number array\n*\n* @example\n* var arr = new Complex64Array();\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 0\n*\n* @example\n* var arr = new Complex64Array( 2 );\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 2\n*\n* @example\n* var arr = new Complex64Array( [ 1.0, -1.0 ] );\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 1\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = new Complex64Array( buf );\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 2\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = new Complex64Array( buf, 8 );\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 1\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = new Complex64Array( buf, 8, 2 );\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 2\n*/\nfunction Complex64Array() {\n\tvar byteOffset;\n\tvar nargs;\n\tvar buf;\n\tvar len;\n\n\tnargs = arguments.length;\n\tif ( !(this instanceof Complex64Array) ) {\n\t\tif ( nargs === 0 ) {\n\t\t\treturn new Complex64Array();\n\t\t}\n\t\tif ( nargs === 1 ) {\n\t\t\treturn new Complex64Array( arguments[0] );\n\t\t}\n\t\tif ( nargs === 2 ) {\n\t\t\treturn new Complex64Array( arguments[0], arguments[1] );\n\t\t}\n\t\treturn new Complex64Array( arguments[0], arguments[1], arguments[2] );\n\t}\n\t// Create the underlying data buffer...\n\tif ( nargs === 0 ) {\n\t\tbuf = new Float32Array( 0 ); // backward-compatibility\n\t} else if ( nargs === 1 ) {\n\t\tif ( isNonNegativeInteger( arguments[0] ) ) {\n\t\t\tbuf = new Float32Array( arguments[0]*2 );\n\t\t} else if ( isCollection( arguments[0] ) ) {\n\t\t\tbuf = arguments[ 0 ];\n\t\t\tlen = buf.length;\n\n\t\t\t// If provided a \"generic\" array, peak at the first value, and, if the value is a complex number, try to process as an array of complex numbers, falling back to \"normal\" typed array initialization if we fail and ensuring consistency if the first value had not been a complex number...\n\t\t\tif ( len && isArray( buf ) && isComplexLike( buf[0] ) ) {\n\t\t\t\tbuf = fromArray( new Float32Array( len*2 ), buf );\n\t\t\t\tif ( buf === null ) {\n\t\t\t\t\t// We failed and we are now forced to allocate a new array :-(\n\t\t\t\t\tif ( !isEven( len ) ) {\n\t\t\t\t\t\tthrow new RangeError( format( 'invalid argument. Array-like object arguments must have a length which is a multiple of two. Length: `%u`.', len ) );\n\t\t\t\t\t}\n\t\t\t\t\t// We failed, so fall back to directly setting values...\n\t\t\t\t\tbuf = new Float32Array( arguments[0] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( isComplex64Array( buf ) ) {\n\t\t\t\t\tbuf = reinterpret64( buf, 0 );\n\t\t\t\t} else if ( isComplex128Array( buf ) ) {\n\t\t\t\t\tbuf = reinterpret128( buf, 0 );\n\t\t\t\t} else if ( !isEven( len ) ) {\n\t\t\t\t\tthrow new RangeError( format( 'invalid argument. Array-like object and typed array arguments must have a length which is a multiple of two. Length: `%u`.', len ) );\n\t\t\t\t}\n\t\t\t\tbuf = new Float32Array( buf );\n\t\t\t}\n\t\t} else if ( isArrayBuffer( arguments[0] ) ) {\n\t\t\tbuf = arguments[ 0 ];\n\t\t\tif ( !isInteger( buf.byteLength/BYTES_PER_ELEMENT ) ) {\n\t\t\t\tthrow new RangeError( format( 'invalid argument. ArrayBuffer byte length must be a multiple of %u. Byte length: `%u`.', BYTES_PER_ELEMENT, buf.byteLength ) );\n\t\t\t}\n\t\t\tbuf = new Float32Array( buf );\n\t\t} else if ( isObject( arguments[0] ) ) {\n\t\t\tbuf = arguments[ 0 ];\n\t\t\tif ( HAS_ITERATOR_SYMBOL === false ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Environment lacks Symbol.iterator support. Must provide a length, ArrayBuffer, typed array, or array-like object. Value: `%s`.', buf ) );\n\t\t\t}\n\t\t\tif ( !isFunction( buf[ ITERATOR_SYMBOL ] ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, ArrayBuffer, typed array, array-like object, or an iterable. Value: `%s`.', buf ) );\n\t\t\t}\n\t\t\tbuf = buf[ ITERATOR_SYMBOL ]();\n\t\t\tif ( !isFunction( buf.next ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, ArrayBuffer, typed array, array-like object, or an iterable. Value: `%s`.', buf ) ); // FIXME: `buf` is what is returned from above, NOT the original value\n\t\t\t}\n\t\t\tbuf = fromIterator( buf );\n\t\t\tif ( buf instanceof Error ) {\n\t\t\t\tthrow buf;\n\t\t\t}\n\t\t\tbuf = new Float32Array( buf );\n\t\t} else {\n\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, ArrayBuffer, typed array, array-like object, or an iterable. Value: `%s`.', arguments[0] ) );\n\t\t}\n\t} else {\n\t\tbuf = arguments[ 0 ];\n\t\tif ( !isArrayBuffer( buf ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. First argument must be an ArrayBuffer. Value: `%s`.', buf ) );\n\t\t}\n\t\tbyteOffset = arguments[ 1 ];\n\t\tif ( !isNonNegativeInteger( byteOffset ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Byte offset must be a nonnegative integer. Value: `%s`.', byteOffset ) );\n\t\t}\n\t\tif ( !isInteger( byteOffset/BYTES_PER_ELEMENT ) ) {\n\t\t\tthrow new RangeError( format( 'invalid argument. Byte offset must be a multiple of %u. Value: `%u`.', BYTES_PER_ELEMENT, byteOffset ) );\n\t\t}\n\t\tif ( nargs === 2 ) {\n\t\t\tlen = buf.byteLength - byteOffset;\n\t\t\tif ( !isInteger( len/BYTES_PER_ELEMENT ) ) {\n\t\t\t\tthrow new RangeError( format( 'invalid arguments. ArrayBuffer view byte length must be a multiple of %u. View byte length: `%u`.', BYTES_PER_ELEMENT, len ) );\n\t\t\t}\n\t\t\tbuf = new Float32Array( buf, byteOffset );\n\t\t} else {\n\t\t\tlen = arguments[ 2 ];\n\t\t\tif ( !isNonNegativeInteger( len ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Length must be a nonnegative integer. Value: `%s`.', len ) );\n\t\t\t}\n\t\t\tif ( (len*BYTES_PER_ELEMENT) > (buf.byteLength-byteOffset) ) {\n\t\t\t\tthrow new RangeError( format( 'invalid arguments. ArrayBuffer has insufficient capacity. Either decrease the array length or provide a bigger buffer. Minimum capacity: `%u`.', len*BYTES_PER_ELEMENT ) );\n\t\t\t}\n\t\t\tbuf = new Float32Array( buf, byteOffset, len*2 );\n\t\t}\n\t}\n\tsetReadOnly( this, '_buffer', buf );\n\tsetReadOnly( this, '_length', buf.length/2 );\n\n\treturn this;\n}\n\n/**\n* Size (in bytes) of each array element.\n*\n* @name BYTES_PER_ELEMENT\n* @memberof Complex64Array\n* @readonly\n* @type {PositiveInteger}\n* @default 8\n*\n* @example\n* var nbytes = Complex64Array.BYTES_PER_ELEMENT;\n* // returns 8\n*/\nsetReadOnly( Complex64Array, 'BYTES_PER_ELEMENT', BYTES_PER_ELEMENT );\n\n/**\n* Constructor name.\n*\n* @name name\n* @memberof Complex64Array\n* @readonly\n* @type {string}\n* @default 'Complex64Array'\n*\n* @example\n* var str = Complex64Array.name;\n* // returns 'Complex64Array'\n*/\nsetReadOnly( Complex64Array, 'name', 'Complex64Array' );\n\n/**\n* Creates a new 64-bit complex number array from an array-like object or an iterable.\n*\n* @name from\n* @memberof Complex64Array\n* @type {Function}\n* @param {(Collection|Iterable)} src - array-like object or iterable\n* @param {Function} [clbk] - callback to invoke for each source element\n* @param {*} [thisArg] - context\n* @throws {TypeError} `this` context must be a constructor\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be an array-like object or an iterable\n* @throws {TypeError} second argument must be a function\n* @throws {RangeError} array-like objects must have a length which is a multiple of two\n* @throws {TypeError} an iterator must return either a two element array containing real and imaginary components or a complex number\n* @throws {TypeError} when provided an iterator, a callback must return either a two element array containing real and imaginary components or a complex number\n* @returns {Complex64Array} 64-bit complex number array\n*\n* @example\n* var arr = Complex64Array.from( [ 1.0, -1.0 ] );\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 1\n*\n* @example\n* var Complex64 = require( '@stdlib/complex/float32' );\n*\n* var arr = Complex64Array.from( [ new Complex64( 1.0, 1.0 ) ] );\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 1\n*\n* @example\n* var Complex64 = require( '@stdlib/complex/float32' );\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* function clbk( v ) {\n*     return new Complex64( realf(v)*2.0, imagf(v)*2.0 );\n* }\n*\n* var arr = Complex64Array.from( [ new Complex64( 1.0, 1.0 ) ], clbk );\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 1\n*/\nsetReadOnly( Complex64Array, 'from', function from( src ) {\n\tvar thisArg;\n\tvar nargs;\n\tvar clbk;\n\tvar out;\n\tvar buf;\n\tvar tmp;\n\tvar get;\n\tvar len;\n\tvar flg;\n\tvar v;\n\tvar i;\n\tvar j;\n\tif ( !isFunction( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` context must be a constructor.' );\n\t}\n\tif ( !isComplexArrayConstructor( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tnargs = arguments.length;\n\tif ( nargs > 1 ) {\n\t\tclbk = arguments[ 1 ];\n\t\tif ( !isFunction( clbk ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a function. Value: `%s`.', clbk ) );\n\t\t}\n\t\tif ( nargs > 2 ) {\n\t\t\tthisArg = arguments[ 2 ];\n\t\t}\n\t}\n\tif ( isComplexArray( src ) ) {\n\t\tlen = src.length;\n\t\tif ( clbk ) {\n\t\t\tout = new this( len );\n\t\t\tbuf = out._buffer; // eslint-disable-line no-underscore-dangle\n\t\t\tj = 0;\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tv = clbk.call( thisArg, src.get( i ), i );\n\t\t\t\tif ( isComplexLike( v ) ) {\n\t\t\t\t\tbuf[ j ] = realf( v );\n\t\t\t\t\tbuf[ j+1 ] = imagf( v );\n\t\t\t\t} else if ( isArrayLikeObject( v ) && v.length >= 2 ) {\n\t\t\t\t\tbuf[ j ] = v[ 0 ];\n\t\t\t\t\tbuf[ j+1 ] = v[ 1 ];\n\t\t\t\t} else {\n\t\t\t\t\tthrow new TypeError( format( 'invalid argument. Callback must return either a two-element array containing real and imaginary components or a complex number. Value: `%s`.', v ) );\n\t\t\t\t}\n\t\t\t\tj += 2; // stride\n\t\t\t}\n\t\t\treturn out;\n\t\t}\n\t\treturn new this( src );\n\t}\n\tif ( isCollection( src ) ) {\n\t\tif ( clbk ) {\n\t\t\t// Note: array contents affect how we iterate over a provided data source. If only complex number objects, we can extract real and imaginary components. Otherwise, for non-complex number arrays (e.g., `Float64Array`, etc), we assume a strided array where real and imaginary components are interleaved. In the former case, we expect a callback to return real and imaginary components (possibly as a complex number). In the latter case, we expect a callback to return *either* a real or imaginary component.\n\n\t\t\tlen = src.length;\n\t\t\tif ( src.get && src.set ) {\n\t\t\t\tget = accessorGetter( 'default' );\n\t\t\t} else {\n\t\t\t\tget = getter( 'default' );\n\t\t\t}\n\t\t\t// Detect whether we've been provided an array which returns complex number objects...\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tif ( !isComplexLike( get( src, i ) ) ) {\n\t\t\t\t\tflg = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If an array does not contain only complex number objects, then we assume interleaved real and imaginary components...\n\t\t\tif ( flg ) {\n\t\t\t\tif ( !isEven( len ) ) {\n\t\t\t\t\tthrow new RangeError( format( 'invalid argument. First argument must have a length which is a multiple of %u. Length: `%u`.', 2, len ) );\n\t\t\t\t}\n\t\t\t\tout = new this( len/2 );\n\t\t\t\tbuf = out._buffer; // eslint-disable-line no-underscore-dangle\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tbuf[ i ] = clbk.call( thisArg, get( src, i ), i );\n\t\t\t\t}\n\t\t\t\treturn out;\n\t\t\t}\n\t\t\t// If an array contains only complex number objects, then we need to extract real and imaginary components...\n\t\t\tout = new this( len );\n\t\t\tbuf = out._buffer; // eslint-disable-line no-underscore-dangle\n\t\t\tj = 0;\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tv = clbk.call( thisArg, get( src, i ), i );\n\t\t\t\tif ( isComplexLike( v ) ) {\n\t\t\t\t\tbuf[ j ] = realf( v );\n\t\t\t\t\tbuf[ j+1 ] = imagf( v );\n\t\t\t\t} else if ( isArrayLikeObject( v ) && v.length >= 2 ) {\n\t\t\t\t\tbuf[ j ] = v[ 0 ];\n\t\t\t\t\tbuf[ j+1 ] = v[ 1 ];\n\t\t\t\t} else {\n\t\t\t\t\tthrow new TypeError( format( 'invalid argument. Callback must return either a two-element array containing real and imaginary components or a complex number. Value: `%s`.', v ) );\n\t\t\t\t}\n\t\t\t\tj += 2; // stride\n\t\t\t}\n\t\t\treturn out;\n\t\t}\n\t\treturn new this( src );\n\t}\n\tif ( isObject( src ) && HAS_ITERATOR_SYMBOL && isFunction( src[ ITERATOR_SYMBOL ] ) ) { // eslint-disable-line max-len\n\t\tbuf = src[ ITERATOR_SYMBOL ]();\n\t\tif ( !isFunction( buf.next ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. First argument must be an array-like object or an iterable. Value: `%s`.', src ) );\n\t\t}\n\t\tif ( clbk ) {\n\t\t\ttmp = fromIteratorMap( buf, clbk, thisArg );\n\t\t} else {\n\t\t\ttmp = fromIterator( buf );\n\t\t}\n\t\tif ( tmp instanceof Error ) {\n\t\t\tthrow tmp;\n\t\t}\n\t\tlen = tmp.length / 2;\n\t\tout = new this( len );\n\t\tbuf = out._buffer; // eslint-disable-line no-underscore-dangle\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tbuf[ i ] = tmp[ i ];\n\t\t}\n\t\treturn out;\n\t}\n\tthrow new TypeError( format( 'invalid argument. First argument must be an array-like object or an iterable. Value: `%s`.', src ) );\n});\n\n/**\n* Creates a new 64-bit complex number array from a variable number of arguments.\n*\n* @name of\n* @memberof Complex64Array\n* @type {Function}\n* @param {...*} element - array elements\n* @throws {TypeError} `this` context must be a constructor\n* @throws {TypeError} `this` must be a complex number array\n* @returns {Complex64Array} 64-bit complex number array\n*\n* @example\n* var arr = Complex64Array.of( 1.0, 1.0, 1.0, 1.0 );\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 2\n*/\nsetReadOnly( Complex64Array, 'of', function of() {\n\tvar args;\n\tvar i;\n\tif ( !isFunction( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` context must be a constructor.' );\n\t}\n\tif ( !isComplexArrayConstructor( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\targs = [];\n\tfor ( i = 0; i < arguments.length; i++ ) {\n\t\targs.push( arguments[ i ] );\n\t}\n\treturn new this( args );\n});\n\n/**\n* Returns an array element with support for both nonnegative and negative integer indices.\n*\n* @name at\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {integer} idx - element index\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} must provide an integer\n* @returns {(Complex64|void)} array element\n*\n* @example\n* var arr = new Complex64Array( 10 );\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* var z = arr.at( 0 );\n* // returns <Complex64>\n*\n* var re = realf( z );\n* // returns 0.0\n*\n* var im = imagf( z );\n* // returns 0.0\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 9.0, -9.0 ], 9 );\n*\n* z = arr.at( 0 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 1.0\n*\n* im = imagf( z );\n* // returns -1.0\n*\n* z = arr.at( -1 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 9.0\n*\n* im = imagf( z );\n* // returns -9.0\n*\n* z = arr.at( 100 );\n* // returns undefined\n*\n* z = arr.at( -100 );\n* // returns undefined\n*/\nsetReadOnly( Complex64Array.prototype, 'at', function at( idx ) {\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isInteger( idx ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide an integer. Value: `%s`.', idx ) );\n\t}\n\tif ( idx < 0 ) {\n\t\tidx += this._length;\n\t}\n\tif ( idx < 0 || idx >= this._length ) {\n\t\treturn;\n\t}\n\treturn getComplex64( this._buffer, idx );\n});\n\n/**\n* Pointer to the underlying data buffer.\n*\n* @name buffer\n* @memberof Complex64Array.prototype\n* @readonly\n* @type {ArrayBuffer}\n*\n* @example\n* var arr = new Complex64Array( 10 );\n*\n* var buf = arr.buffer;\n* // returns <ArrayBuffer>\n*/\nsetReadOnlyAccessor( Complex64Array.prototype, 'buffer', function get() {\n\treturn this._buffer.buffer;\n});\n\n/**\n* Size (in bytes) of the array.\n*\n* @name byteLength\n* @memberof Complex64Array.prototype\n* @readonly\n* @type {NonNegativeInteger}\n*\n* @example\n* var arr = new Complex64Array( 10 );\n*\n* var byteLength = arr.byteLength;\n* // returns 80\n*/\nsetReadOnlyAccessor( Complex64Array.prototype, 'byteLength', function get() {\n\treturn this._buffer.byteLength;\n});\n\n/**\n* Offset (in bytes) of the array from the start of its underlying `ArrayBuffer`.\n*\n* @name byteOffset\n* @memberof Complex64Array.prototype\n* @readonly\n* @type {NonNegativeInteger}\n*\n* @example\n* var arr = new Complex64Array( 10 );\n*\n* var byteOffset = arr.byteOffset;\n* // returns 0\n*/\nsetReadOnlyAccessor( Complex64Array.prototype, 'byteOffset', function get() {\n\treturn this._buffer.byteOffset;\n});\n\n/**\n* Size (in bytes) of each array element.\n*\n* @name BYTES_PER_ELEMENT\n* @memberof Complex64Array.prototype\n* @readonly\n* @type {PositiveInteger}\n* @default 8\n*\n* @example\n* var arr = new Complex64Array( 10 );\n*\n* var nbytes = arr.BYTES_PER_ELEMENT;\n* // returns 8\n*/\nsetReadOnly( Complex64Array.prototype, 'BYTES_PER_ELEMENT', Complex64Array.BYTES_PER_ELEMENT );\n\n/**\n* Copies a sequence of elements within the array to the position starting at `target`.\n*\n* @name copyWithin\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {integer} target - index at which to start copying elements\n* @param {integer} start - source index at which to copy elements from\n* @param {integer} [end] - source index at which to stop copying elements from\n* @throws {TypeError} `this` must be a complex number array\n* @returns {Complex64Array} modified array\n*\n* @example\n* var Complex64 = require( '@stdlib/complex/float32' );\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* var arr = new Complex64Array( 4 );\n*\n* // Set the array elements:\n* arr.set( new Complex64( 1.0, 1.0 ), 0 );\n* arr.set( new Complex64( 2.0, 2.0 ), 1 );\n* arr.set( new Complex64( 3.0, 3.0 ), 2 );\n* arr.set( new Complex64( 4.0, 4.0 ), 3 );\n*\n* // Copy the first two elements to the last two elements:\n* arr.copyWithin( 2, 0, 2 );\n*\n* // Get the last array element:\n* var z = arr.get( 3 );\n*\n* var re = realf( z );\n* // returns 2.0\n*\n* var im = imagf( z );\n* // returns 2.0\n*/\nsetReadOnly( Complex64Array.prototype, 'copyWithin', function copyWithin( target, start ) {\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\t// FIXME: prefer a functional `copyWithin` implementation which addresses lack of universal browser support (e.g., IE11 and Safari) or ensure that typed arrays are polyfilled\n\tif ( arguments.length === 2 ) {\n\t\tthis._buffer.copyWithin( target*2, start*2 );\n\t} else {\n\t\tthis._buffer.copyWithin( target*2, start*2, arguments[2]*2 );\n\t}\n\treturn this;\n});\n\n/**\n* Returns an iterator for iterating over array key-value pairs.\n*\n* @name entries\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @throws {TypeError} `this` must be a complex number array\n* @returns {Iterator} iterator\n*\n* @example\n* var Complex64 = require( '@stdlib/complex/float32' );\n*\n* var arr = [\n*     new Complex64( 1.0, 1.0 ),\n*     new Complex64( 2.0, 2.0 ),\n*     new Complex64( 3.0, 3.0 )\n* ];\n* arr = new Complex64Array( arr );\n*\n* // Create an iterator:\n* var it = arr.entries();\n*\n* // Iterate over the key-value pairs...\n* var v = it.next().value;\n* // returns [ 0, <Complex64> ]\n*\n* v = it.next().value;\n* // returns [ 1, <Complex64> ]\n*\n* v = it.next().value;\n* // returns [ 2, <Complex64> ]\n*\n* var bool = it.next().done;\n* // returns true\n*/\nsetReadOnly( Complex64Array.prototype, 'entries', function entries() {\n\tvar buffer;\n\tvar self;\n\tvar iter;\n\tvar len;\n\tvar FLG;\n\tvar i;\n\tvar j;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tself = this;\n\tbuffer = this._buffer;\n\tlen = this._length;\n\n\t// Initialize the iteration indices:\n\ti = -1;\n\tj = -2;\n\n\t// Create an iterator protocol-compliant object:\n\titer = {};\n\tsetReadOnly( iter, 'next', next );\n\tsetReadOnly( iter, 'return', end );\n\n\tif ( ITERATOR_SYMBOL ) {\n\t\tsetReadOnly( iter, ITERATOR_SYMBOL, factory );\n\t}\n\treturn iter;\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next() {\n\t\tvar z;\n\t\ti += 1;\n\t\tif ( FLG || i >= len ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tj += 2;\n\t\tz = new Complex64( buffer[ j ], buffer[ j+1 ] );\n\t\treturn {\n\t\t\t'value': [ i, z ],\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Finishes an iterator.\n\t*\n\t* @private\n\t* @param {*} [value] - value to return\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction end( value ) {\n\t\tFLG = true;\n\t\tif ( arguments.length ) {\n\t\t\treturn {\n\t\t\t\t'value': value,\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'done': true\n\t\t};\n\t}\n\n\t/**\n\t* Returns a new iterator.\n\t*\n\t* @private\n\t* @returns {Iterator} iterator\n\t*/\n\tfunction factory() {\n\t\treturn self.entries();\n\t}\n});\n\n/**\n* Tests whether all elements in an array pass a test implemented by a predicate function.\n*\n* @name every\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - predicate function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {boolean} boolean indicating whether all elements pass a test\n*\n* @example\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* function predicate( v ) {\n*     return ( realf( v ) === imagf( v ) );\n* }\n*\n* var arr = new Complex64Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* var bool = arr.every( predicate );\n* // returns true\n*/\nsetReadOnly( Complex64Array.prototype, 'every', function every( predicate, thisArg ) {\n\tvar buf;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( predicate ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', predicate ) );\n\t}\n\tbuf = this._buffer;\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tif ( !predicate.call( thisArg, getComplex64( buf, i ), i, this ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n});\n\n/**\n* Returns a modified typed array filled with a fill value.\n*\n* @name fill\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {ComplexLike} value - fill value\n* @param {integer} [start=0] - starting index (inclusive)\n* @param {integer} [end] - ending index (exclusive)\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a complex number\n* @throws {TypeError} second argument must be an integer\n* @throws {TypeError} third argument must be an integer\n*\n* @example\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* var arr = new Complex64Array( 3 );\n*\n* arr.fill( new Complex64( 1.0, 1.0 ), 1 );\n*\n* var z = arr.get( 1 );\n* // returns <Complex64>\n*\n* var re = realf( z );\n* // returns 1.0\n*\n* var im = imagf( z );\n* // returns 1.0\n*\n* z = arr.get( 1 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 1.0\n*\n* im = imagf( z );\n* // returns 1.0\n*/\nsetReadOnly( Complex64Array.prototype, 'fill', function fill( value, start, end ) {\n\tvar buf;\n\tvar len;\n\tvar idx;\n\tvar re;\n\tvar im;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isComplexLike( value ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a complex number. Value: `%s`.', value ) );\n\t}\n\tbuf = this._buffer;\n\tlen = this._length;\n\tif ( arguments.length > 1 ) {\n\t\tif ( !isInteger( start ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', start ) );\n\t\t}\n\t\tif ( start < 0 ) {\n\t\t\tstart += len;\n\t\t\tif ( start < 0 ) {\n\t\t\t\tstart = 0;\n\t\t\t}\n\t\t}\n\t\tif ( arguments.length > 2 ) {\n\t\t\tif ( !isInteger( end ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be an integer. Value: `%s`.', end ) );\n\t\t\t}\n\t\t\tif ( end < 0 ) {\n\t\t\t\tend += len;\n\t\t\t\tif ( end < 0 ) {\n\t\t\t\t\tend = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( end > len ) {\n\t\t\t\tend = len;\n\t\t\t}\n\t\t} else {\n\t\t\tend = len;\n\t\t}\n\t} else {\n\t\tstart = 0;\n\t\tend = len;\n\t}\n\tre = realf( value );\n\tim = imagf( value );\n\tfor ( i = start; i < end; i++ ) {\n\t\tidx = 2*i;\n\t\tbuf[ idx ] = re;\n\t\tbuf[ idx+1 ] = im;\n\t}\n\treturn this;\n});\n\n/**\n* Returns a new array containing the elements of an array which pass a test implemented by a predicate function.\n*\n* @name filter\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - predicate function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {Complex64Array} complex number array\n*\n* @example\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* function predicate( v ) {\n*     return ( realf( v ) === imagf( v ) );\n* }\n*\n* var arr = new Complex64Array( 3 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n*\n* var out = arr.filter( predicate );\n* // returns <Complex64Array>\n*\n* var len = out.length;\n* // returns 1\n*\n* var z = out.get( 0 );\n* // returns <Complex64>\n*\n* var re = realf( z );\n* // returns 2.0\n*\n* var im = imagf( z );\n* // returns 2.0\n*/\nsetReadOnly( Complex64Array.prototype, 'filter', function filter( predicate, thisArg ) {\n\tvar buf;\n\tvar out;\n\tvar i;\n\tvar z;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( predicate ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', predicate ) );\n\t}\n\tbuf = this._buffer;\n\tout = [];\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tz = getComplex64( buf, i );\n\t\tif ( predicate.call( thisArg, z, i, this ) ) {\n\t\t\tout.push( z );\n\t\t}\n\t}\n\treturn new this.constructor( out );\n});\n\n/**\n* Returns the first element in an array for which a predicate function returns a truthy value.\n*\n* @name find\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - predicate function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {(Complex64|void)} array element or undefined\n*\n* @example\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n* var Complex64 = require( '@stdlib/complex/float32' );\n*\n* function predicate( v ) {\n*     return ( realf( v ) === imagf( v ) );\n* }\n*\n* var arr = new Complex64Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* var z = arr.find( predicate );\n* // returns <Complex64>\n*\n* var re = realf( z );\n* // returns 1.0\n*\n* var im = imagf( z );\n* // returns 1.0\n*/\nsetReadOnly( Complex64Array.prototype, 'find', function find( predicate, thisArg ) {\n\tvar buf;\n\tvar i;\n\tvar z;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( predicate ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', predicate ) );\n\t}\n\tbuf = this._buffer;\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tz = getComplex64( buf, i );\n\t\tif ( predicate.call( thisArg, z, i, this ) ) {\n\t\t\treturn z;\n\t\t}\n\t}\n});\n\n/**\n* Returns the index of the first element in an array for which a predicate function returns a truthy value.\n*\n* @name findIndex\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - predicate function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {integer} index or -1\n*\n* @example\n* var Complex64 = require( '@stdlib/complex/float32' );\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* function predicate( v ) {\n*     return ( realf( v ) === imagf( v ) );\n* }\n*\n* var arr = new Complex64Array( 3 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* var idx = arr.findIndex( predicate );\n* // returns 2\n*/\nsetReadOnly( Complex64Array.prototype, 'findIndex', function findIndex( predicate, thisArg ) {\n\tvar buf;\n\tvar i;\n\tvar z;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( predicate ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', predicate ) );\n\t}\n\tbuf = this._buffer;\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tz = getComplex64( buf, i );\n\t\tif ( predicate.call( thisArg, z, i, this ) ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n});\n\n/**\n* Returns the last element in an array for which a predicate function returns a truthy value.\n*\n* @name findLast\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - predicate function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {(Complex64|void)} array element or undefined\n*\n* @example\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n* var Complex64 = require( '@stdlib/complex/float32' );\n*\n* function predicate( v ) {\n*     return ( realf( v ) === imagf( v ) );\n* }\n*\n* var arr = new Complex64Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* var z = arr.findLast( predicate );\n* // returns <Complex64>\n*\n* var re = realf( z );\n* // returns 3.0\n*\n* var im = imagf( z );\n* // returns 3.0\n*/\nsetReadOnly( Complex64Array.prototype, 'findLast', function findLast( predicate, thisArg ) {\n\tvar buf;\n\tvar i;\n\tvar z;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( predicate ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', predicate ) );\n\t}\n\tbuf = this._buffer;\n\tfor ( i = this._length-1; i >= 0; i-- ) {\n\t\tz = getComplex64( buf, i );\n\t\tif ( predicate.call( thisArg, z, i, this ) ) {\n\t\t\treturn z;\n\t\t}\n\t}\n});\n\n/**\n* Returns the index of the last element in an array for which a predicate function returns a truthy value.\n*\n* @name findLastIndex\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - predicate function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {integer} index or -1\n*\n* @example\n* var Complex64 = require( '@stdlib/complex/float32' );\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* function predicate( v ) {\n*     return ( realf( v ) === imagf( v ) );\n* }\n*\n* var arr = new Complex64Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n*\n* var idx = arr.findLastIndex( predicate );\n* // returns 1\n*/\nsetReadOnly( Complex64Array.prototype, 'findLastIndex', function findLastIndex( predicate, thisArg ) {\n\tvar buf;\n\tvar i;\n\tvar z;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( predicate ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', predicate ) );\n\t}\n\tbuf = this._buffer;\n\tfor ( i = this._length-1; i >= 0; i-- ) {\n\t\tz = getComplex64( buf, i );\n\t\tif ( predicate.call( thisArg, z, i, this ) ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n});\n\n/**\n* Invokes a function once for each array element.\n*\n* @name forEach\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {Function} fcn - function to invoke\n* @param {*} [thisArg] - function invocation context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n*\n* @example\n* var Complex64 = require( '@stdlib/complex/float32' );\n*\n* function log( v, i ) {\n*     console.log( '%s: %s', i, v.toString() );\n* }\n*\n* var arr = new Complex64Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* arr.forEach( log );\n*/\nsetReadOnly( Complex64Array.prototype, 'forEach', function forEach( fcn, thisArg ) {\n\tvar buf;\n\tvar i;\n\tvar z;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( fcn ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', fcn ) );\n\t}\n\tbuf = this._buffer;\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tz = getComplex64( buf, i );\n\t\tfcn.call( thisArg, z, i, this );\n\t}\n});\n\n/**\n* Returns an array element.\n*\n* @name get\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {NonNegativeInteger} idx - element index\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} must provide a nonnegative integer\n* @returns {(Complex64|void)} array element\n*\n* @example\n* var arr = new Complex64Array( 10 );\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* var z = arr.get( 0 );\n* // returns <Complex64>\n*\n* var re = realf( z );\n* // returns 0.0\n*\n* var im = imagf( z );\n* // returns 0.0\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n*\n* z = arr.get( 0 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 1.0\n*\n* im = imagf( z );\n* // returns -1.0\n*\n* z = arr.get( 100 );\n* // returns undefined\n*/\nsetReadOnly( Complex64Array.prototype, 'get', function get( idx ) {\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isNonNegativeInteger( idx ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a nonnegative integer. Value: `%s`.', idx ) );\n\t}\n\tif ( idx >= this._length ) {\n\t\treturn;\n\t}\n\treturn getComplex64( this._buffer, idx );\n});\n\n/**\n* Returns a boolean indicating whether an array includes a provided value.\n*\n* @name includes\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {ComplexLike} searchElement - search element\n* @param {integer} [fromIndex=0] - starting index (inclusive)\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a complex number\n* @throws {TypeError} second argument must be an integer\n* @returns {boolean} boolean indicating whether an array includes a provided value\n*\n* @example\n* var Complex64 = require( '@stdlib/complex/float32' );\n*\n* var arr = new Complex64Array( 5 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n* arr.set( [ 4.0, -4.0 ], 3 );\n* arr.set( [ 5.0, -5.0 ], 4 );\n*\n* var bool = arr.includes( new Complex64( 3.0, -3.0 ) );\n* // returns true\n*\n* bool = arr.includes( new Complex64( 3.0, -3.0 ), 3 );\n* // returns false\n*\n* bool = arr.includes( new Complex64( 4.0, -4.0 ), -3 );\n* // returns true\n*/\nsetReadOnly( Complex64Array.prototype, 'includes', function includes( searchElement, fromIndex ) {\n\tvar buf;\n\tvar idx;\n\tvar re;\n\tvar im;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isComplexLike( searchElement ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a complex number. Value: `%s`.', searchElement ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', fromIndex ) );\n\t\t}\n\t\tif ( fromIndex < 0 ) {\n\t\t\tfromIndex += this._length;\n\t\t\tif ( fromIndex < 0 ) {\n\t\t\t\tfromIndex = 0;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfromIndex = 0;\n\t}\n\tre = realf( searchElement );\n\tim = imagf( searchElement );\n\tbuf = this._buffer;\n\tfor ( i = fromIndex; i < this._length; i++ ) {\n\t\tidx = 2 * i;\n\t\tif ( re === buf[ idx ] && im === buf[ idx+1 ] ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n});\n\n/**\n* Returns the first index at which a given element can be found.\n*\n* @name indexOf\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {ComplexLike} searchElement - element to find\n* @param {integer} [fromIndex=0] - starting index (inclusive)\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a complex number\n* @throws {TypeError} second argument must be an integer\n* @returns {integer} index or -1\n*\n* @example\n* var Complex64 = require( '@stdlib/complex/float32' );\n*\n* var arr = new Complex64Array( 10 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n* arr.set( [ 4.0, -4.0 ], 3 );\n* arr.set( [ 5.0, -5.0 ], 4 );\n*\n* var idx = arr.indexOf( new Complex64( 3.0, -3.0 ) );\n* // returns 2\n*\n* idx = arr.indexOf( new Complex64( 3.0, -3.0 ), 3 );\n* // returns -1\n*\n* idx = arr.indexOf( new Complex64( 4.0, -4.0 ), -3 );\n* // returns -1\n*/\nsetReadOnly( Complex64Array.prototype, 'indexOf', function indexOf( searchElement, fromIndex ) {\n\tvar buf;\n\tvar idx;\n\tvar re;\n\tvar im;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isComplexLike( searchElement ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a complex number. Value: `%s`.', searchElement ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', fromIndex ) );\n\t\t}\n\t\tif ( fromIndex < 0 ) {\n\t\t\tfromIndex += this._length;\n\t\t\tif ( fromIndex < 0 ) {\n\t\t\t\tfromIndex = 0;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfromIndex = 0;\n\t}\n\tre = realf( searchElement );\n\tim = imagf( searchElement );\n\tbuf = this._buffer;\n\tfor ( i = fromIndex; i < this._length; i++ ) {\n\t\tidx = 2 * i;\n\t\tif ( re === buf[ idx ] && im === buf[ idx+1 ] ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n});\n\n/**\n* Returns a new string by concatenating all array elements.\n*\n* @name join\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {string} [separator=','] - element separator\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a string\n* @returns {string} string representation\n*\n* @example\n* var arr = new Complex64Array( 2 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n*\n* var str = arr.join();\n* // returns '1 + 1i,2 + 2i'\n*\n* str = arr.join( '/' );\n* // returns '1 + 1i/2 + 2i'\n*/\nsetReadOnly( Complex64Array.prototype, 'join', function join( separator ) {\n\tvar out;\n\tvar buf;\n\tvar sep;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( arguments.length === 0 ) {\n\t\tsep = ',';\n\t} else if ( isString( separator ) ) {\n\t\tsep = separator;\n\t} else {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', separator ) );\n\t}\n\tout = [];\n\tbuf = this._buffer;\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tout.push( getComplex64( buf, i ).toString() );\n\t}\n\treturn out.join( sep );\n});\n\n/**\n* Returns the last index at which a given element can be found.\n*\n* @name lastIndexOf\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {ComplexLike} searchElement - element to find\n* @param {integer} [fromIndex] - index at which to start searching backward (inclusive)\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a complex number\n* @throws {TypeError} second argument must be an integer\n* @returns {integer} index or -1\n*\n* @example\n* var Complex64 = require( '@stdlib/complex/float32' );\n*\n* var arr = new Complex64Array( 5 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n* arr.set( [ 4.0, -4.0 ], 3 );\n* arr.set( [ 3.0, -3.0 ], 4 );\n*\n* var idx = arr.lastIndexOf( new Complex64( 3.0, -3.0 ) );\n* // returns 4\n*\n* idx = arr.lastIndexOf( new Complex64( 3.0, -3.0 ), 3 );\n* // returns 2\n*\n* idx = arr.lastIndexOf( new Complex64( 5.0, -5.0 ), 3 );\n* // returns -1\n*\n* idx = arr.lastIndexOf( new Complex64( 2.0, -2.0 ), -3 );\n* // returns 1\n*/\nsetReadOnly( Complex64Array.prototype, 'lastIndexOf', function lastIndexOf( searchElement, fromIndex ) {\n\tvar buf;\n\tvar idx;\n\tvar re;\n\tvar im;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isComplexLike( searchElement ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a complex number. Value: `%s`.', searchElement ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', fromIndex ) );\n\t\t}\n\t\tif ( fromIndex >= this._length ) {\n\t\t\tfromIndex = this._length - 1;\n\t\t} else if ( fromIndex < 0 ) {\n\t\t\tfromIndex += this._length;\n\t\t}\n\t} else {\n\t\tfromIndex = this._length - 1;\n\t}\n\tre = realf( searchElement );\n\tim = imagf( searchElement );\n\tbuf = this._buffer;\n\tfor ( i = fromIndex; i >= 0; i-- ) {\n\t\tidx = 2 * i;\n\t\tif ( re === buf[ idx ] && im === buf[ idx+1 ] ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n});\n\n/**\n* Number of array elements.\n*\n* @name length\n* @memberof Complex64Array.prototype\n* @readonly\n* @type {NonNegativeInteger}\n*\n* @example\n* var arr = new Complex64Array( 10 );\n*\n* var len = arr.length;\n* // returns 10\n*/\nsetReadOnlyAccessor( Complex64Array.prototype, 'length', function get() {\n\treturn this._length;\n});\n\n/**\n* Returns a new array with each element being the result of a provided callback function.\n*\n* @name map\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {Function} fcn - callback function\n* @param {*} [thisArg] - callback function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {Complex64Array} complex number array\n*\n* @example\n* var Complex64 = require( '@stdlib/complex/float32' );\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* function scale( v, i ) {\n*     return new Complex64( 2.0*realf( v ), 2.0*imagf( v ) );\n* }\n*\n* var arr = new Complex64Array( 3 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n*\n* var out = arr.map( scale );\n* // returns <Complex64Array>\n*\n* var z = out.get( 0 );\n* // returns <Complex64>\n*\n* var re = realf( z );\n* // returns 2\n*\n* var im = imagf( z );\n* // returns -2\n*/\nsetReadOnly( Complex64Array.prototype, 'map', function map( fcn, thisArg ) {\n\tvar outbuf;\n\tvar buf;\n\tvar out;\n\tvar i;\n\tvar v;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( fcn ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', fcn ) );\n\t}\n\tbuf = this._buffer;\n\tout = new this.constructor( this._length );\n\toutbuf = out._buffer; // eslint-disable-line no-underscore-dangle\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tv = fcn.call( thisArg, getComplex64( buf, i ), i, this );\n\t\tif ( isComplexLike( v ) ) {\n\t\t\toutbuf[ 2*i ] = realf( v );\n\t\t\toutbuf[ (2*i)+1 ] = imagf( v );\n\t\t} else if ( isArrayLikeObject( v ) && v.length === 2 ) {\n\t\t\toutbuf[ 2*i ] = v[ 0 ];\n\t\t\toutbuf[ (2*i)+1 ] = v[ 1 ];\n\t\t} else {\n\t\t\tthrow new TypeError( format( 'invalid argument. Callback must return either a two-element array containing real and imaginary components or a complex number. Value: `%s`.', v ) );\n\t\t}\n\t}\n\treturn out;\n});\n\n/**\n* Reverses an array in-place.\n*\n* @name reverse\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @throws {TypeError} `this` must be a complex number array\n* @returns {Complex64Array} reversed array\n*\n* @example\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* var arr = new Complex64Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* var out = arr.reverse();\n* // returns <Complex64Array>\n*\n* var z = out.get( 0 );\n* // returns <Complex64>\n*\n* var re = realf( z );\n* // returns 3.0\n*\n* var im = imagf( z );\n* // returns 3.0\n*\n* z = out.get( 1 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 2.0\n*\n* im = imagf( z );\n* // returns 2.0\n*\n* z = out.get( 2 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 1.0\n*\n* im = imagf( z );\n* // returns 1.0\n*/\nsetReadOnly( Complex64Array.prototype, 'reverse', function reverse() {\n\tvar buf;\n\tvar tmp;\n\tvar len;\n\tvar N;\n\tvar i;\n\tvar j;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tlen = this._length;\n\tbuf = this._buffer;\n\tN = floor( len / 2 );\n\tfor ( i = 0; i < N; i++ ) {\n\t\tj = len - i - 1;\n\t\ttmp = buf[ (2*i) ];\n\t\tbuf[ (2*i) ] = buf[ (2*j) ];\n\t\tbuf[ (2*j) ] = tmp;\n\t\ttmp = buf[ (2*i)+1 ];\n\t\tbuf[ (2*i)+1 ] = buf[ (2*j)+1 ];\n\t\tbuf[ (2*j)+1 ] = tmp;\n\t}\n\treturn this;\n});\n\n/**\n* Sets an array element.\n*\n* ## Notes\n*\n* -   When provided a typed array, real or complex, we must check whether the source array shares the same buffer as the target array and whether the underlying memory overlaps. In particular, we are concerned with the following scenario:\n*\n*     ```text\n*     buf:                ---------------------\n*     src: ---------------------\n*     ```\n*\n*     In the above, as we copy values from `src`, we will overwrite values in the `src` view, resulting in duplicated values copied into the end of `buf`, which is not intended. Hence, to avoid overwriting source values, we must **copy** source values to a temporary array.\n*\n*     In the other overlapping scenario,\n*\n*     ```text\n*     buf: ---------------------\n*     src:                ---------------------\n*     ```\n*\n*     by the time we begin copying into the overlapping region, we are copying from the end of `src`, a non-overlapping region, which means we don't run the risk of copying copied values, rather than the original `src` values, as intended.\n*\n* @name set\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {(Collection|Complex|ComplexArray)} value - value(s)\n* @param {NonNegativeInteger} [i=0] - element index at which to start writing values\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be either a complex number, an array-like object, or a complex number array\n* @throws {TypeError} index argument must be a nonnegative integer\n* @throws {RangeError} array-like objects must have a length which is a multiple of two\n* @throws {RangeError} index argument is out-of-bounds\n* @throws {RangeError} target array lacks sufficient storage to accommodate source values\n* @returns {void}\n*\n* @example\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* var arr = new Complex64Array( 10 );\n*\n* var z = arr.get( 0 );\n* // returns <Complex64>\n*\n* var re = realf( z );\n* // returns 0.0\n*\n* var im = imagf( z );\n* // returns 0.0\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n*\n* z = arr.get( 0 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 1.0\n*\n* im = imagf( z );\n* // returns -1.0\n*/\nsetReadOnly( Complex64Array.prototype, 'set', function set( value ) {\n\t/* eslint-disable no-underscore-dangle */\n\tvar sbuf;\n\tvar idx;\n\tvar buf;\n\tvar tmp;\n\tvar flg;\n\tvar N;\n\tvar v;\n\tvar i;\n\tvar j;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tbuf = this._buffer;\n\tif ( arguments.length > 1 ) {\n\t\tidx = arguments[ 1 ];\n\t\tif ( !isNonNegativeInteger( idx ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Index argument must be a nonnegative integer. Value: `%s`.', idx ) );\n\t\t}\n\t} else {\n\t\tidx = 0;\n\t}\n\tif ( isComplexLike( value ) ) {\n\t\tif ( idx >= this._length ) {\n\t\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%u`.', idx ) );\n\t\t}\n\t\tidx *= 2;\n\t\tbuf[ idx ] = realf( value );\n\t\tbuf[ idx+1 ] = imagf( value );\n\t\treturn;\n\t}\n\tif ( isComplexArray( value ) ) {\n\t\tN = value._length;\n\t\tif ( idx+N > this._length ) {\n\t\t\tthrow new RangeError( 'invalid arguments. Target array lacks sufficient storage to accommodate source values.' );\n\t\t}\n\t\tsbuf = value._buffer;\n\n\t\t// Check for overlapping memory...\n\t\tj = buf.byteOffset + (idx*BYTES_PER_ELEMENT);\n\t\tif (\n\t\t\tsbuf.buffer === buf.buffer &&\n\t\t\t(\n\t\t\t\tsbuf.byteOffset < j &&\n\t\t\t\tsbuf.byteOffset+sbuf.byteLength > j\n\t\t\t)\n\t\t) {\n\t\t\t// We need to copy source values...\n\t\t\ttmp = new Float32Array( sbuf.length );\n\t\t\tfor ( i = 0; i < sbuf.length; i++ ) {\n\t\t\t\ttmp[ i ] = sbuf[ i ];\n\t\t\t}\n\t\t\tsbuf = tmp;\n\t\t}\n\t\tidx *= 2;\n\t\tj = 0;\n\t\tfor ( i = 0; i < N; i++ ) {\n\t\t\tbuf[ idx ] = sbuf[ j ];\n\t\t\tbuf[ idx+1 ] = sbuf[ j+1 ];\n\t\t\tidx += 2; // stride\n\t\t\tj += 2; // stride\n\t\t}\n\t\treturn;\n\t}\n\tif ( isCollection( value ) ) {\n\t\t// Detect whether we've been provided an array of complex numbers...\n\t\tN = value.length;\n\t\tfor ( i = 0; i < N; i++ ) {\n\t\t\tif ( !isComplexLike( value[ i ] ) ) {\n\t\t\t\tflg = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t// If an array does not contain only complex numbers, then we assume interleaved real and imaginary components...\n\t\tif ( flg ) {\n\t\t\tif ( !isEven( N ) ) {\n\t\t\t\tthrow new RangeError( format( 'invalid argument. Array-like object arguments must have a length which is a multiple of two. Length: `%u`.', N ) );\n\t\t\t}\n\t\t\tif ( idx+(N/2) > this._length ) {\n\t\t\t\tthrow new RangeError( 'invalid arguments. Target array lacks sufficient storage to accommodate source values.' );\n\t\t\t}\n\t\t\tsbuf = value;\n\n\t\t\t// Check for overlapping memory...\n\t\t\tj = buf.byteOffset + (idx*BYTES_PER_ELEMENT);\n\t\t\tif (\n\t\t\t\tsbuf.buffer === buf.buffer &&\n\t\t\t\t(\n\t\t\t\t\tsbuf.byteOffset < j &&\n\t\t\t\t\tsbuf.byteOffset+sbuf.byteLength > j\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// We need to copy source values...\n\t\t\t\ttmp = new Float32Array( N );\n\t\t\t\tfor ( i = 0; i < N; i++ ) {\n\t\t\t\t\ttmp[ i ] = sbuf[ i ]; // TODO: handle accessor arrays\n\t\t\t\t}\n\t\t\t\tsbuf = tmp;\n\t\t\t}\n\t\t\tidx *= 2;\n\t\t\tN /= 2;\n\t\t\tj = 0;\n\t\t\tfor ( i = 0; i < N; i++ ) {\n\t\t\t\tbuf[ idx ] = sbuf[ j ];\n\t\t\t\tbuf[ idx+1 ] = sbuf[ j+1 ];\n\t\t\t\tidx += 2; // stride\n\t\t\t\tj += 2; // stride\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\t// If an array contains only complex numbers, then we need to extract real and imaginary components...\n\t\tif ( idx+N > this._length ) {\n\t\t\tthrow new RangeError( 'invalid arguments. Target array lacks sufficient storage to accommodate source values.' );\n\t\t}\n\t\tidx *= 2;\n\t\tfor ( i = 0; i < N; i++ ) {\n\t\t\tv = value[ i ];\n\t\t\tbuf[ idx ] = realf( v );\n\t\t\tbuf[ idx+1 ] = imagf( v );\n\t\t\tidx += 2; // stride\n\t\t}\n\t\treturn;\n\t}\n\tthrow new TypeError( format( 'invalid argument. First argument must be either a complex number, an array-like object, or a complex number array. Value: `%s`.', value ) );\n\n\t/* eslint-enable no-underscore-dangle */\n});\n\n/**\n* Copies a portion of a typed array to a new typed array.\n*\n* @name slice\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {integer} [start=0] - starting index (inclusive)\n* @param {integer} [end] - ending index (exclusive)\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be an integer\n* @throws {TypeError} second argument must be an integer\n* @returns {Complex64Array} complex number array\n*\n* @example\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* var arr = new Complex64Array( 5 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n* arr.set( [ 4.0, -4.0 ], 3 );\n* arr.set( [ 5.0, -5.0 ], 4 );\n*\n* var out = arr.slice();\n* // returns <Complex64Array>\n*\n* var len = out.length;\n* // returns 5\n*\n* var z = out.get( 0 );\n* // returns <Complex64>\n*\n* var re = realf( z );\n* // returns 1.0\n*\n* var im = imagf( z );\n* // returns -1.0\n*\n* z = out.get( len-1 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 5.0\n*\n* im = imagf( z );\n* // returns -5.0\n*\n* out = arr.slice( 1, -2 );\n* // returns <Complex64Array>\n*\n* len = out.length;\n* // returns 2\n*\n* z = out.get( 0 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 2.0\n*\n* im = imagf( z );\n* // returns -2.0\n*\n* z = out.get( len-1 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 3.0\n*\n* im = imagf( z );\n* // returns -3.0\n*/\nsetReadOnly( Complex64Array.prototype, 'slice', function slice( start, end ) {\n\tvar outlen;\n\tvar outbuf;\n\tvar out;\n\tvar idx;\n\tvar buf;\n\tvar len;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tbuf = this._buffer;\n\tlen = this._length;\n\tif ( arguments.length === 0 ) {\n\t\tstart = 0;\n\t\tend = len;\n\t} else {\n\t\tif ( !isInteger( start ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. First argument must be an integer. Value: `%s`.', start ) );\n\t\t}\n\t\tif ( start < 0 ) {\n\t\t\tstart += len;\n\t\t\tif ( start < 0 ) {\n\t\t\t\tstart = 0;\n\t\t\t}\n\t\t}\n\t\tif ( arguments.length === 1 ) {\n\t\t\tend = len;\n\t\t} else {\n\t\t\tif ( !isInteger( end ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', end ) );\n\t\t\t}\n\t\t\tif ( end < 0 ) {\n\t\t\t\tend += len;\n\t\t\t\tif ( end < 0 ) {\n\t\t\t\t\tend = 0;\n\t\t\t\t}\n\t\t\t} else if ( end > len ) {\n\t\t\t\tend = len;\n\t\t\t}\n\t\t}\n\t}\n\tif ( start < end ) {\n\t\toutlen = end - start;\n\t} else {\n\t\toutlen = 0;\n\t}\n\tout = new this.constructor( outlen );\n\toutbuf = out._buffer; // eslint-disable-line no-underscore-dangle\n\tfor ( i = 0; i < outlen; i++ ) {\n\t\tidx = 2*(i+start);\n\t\toutbuf[ 2*i ] = buf[ idx ];\n\t\toutbuf[ (2*i)+1 ] = buf[ idx+1 ];\n\t}\n\treturn out;\n});\n\n/**\n* Tests whether at least one element in an array passes a test implemented by a predicate function.\n*\n* @name some\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - predicate function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {boolean} boolean indicating whether at least one element passes a test\n*\n* @example\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* function predicate( v ) {\n*     return ( realf( v ) === imagf( v ) );\n* }\n*\n* var arr = new Complex64Array( 3 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n*\n* var bool = arr.some( predicate );\n* // returns true\n*/\nsetReadOnly( Complex64Array.prototype, 'some', function some( predicate, thisArg ) {\n\tvar buf;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( predicate ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', predicate ) );\n\t}\n\tbuf = this._buffer;\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tif ( predicate.call( thisArg, getComplex64( buf, i ), i, this ) ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n});\n\n/**\n* Creates a new typed array view over the same underlying `ArrayBuffer` and with the same underlying data type as the host array.\n*\n* @name subarray\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {integer} [begin=0] - starting index (inclusive)\n* @param {integer} [end] - ending index (exclusive)\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be an integer\n* @throws {TypeError} second argument must be an integer\n* @returns {Complex64Array} subarray\n*\n* @example\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* var arr = new Complex64Array( 5 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n* arr.set( [ 4.0, -4.0 ], 3 );\n* arr.set( [ 5.0, -5.0 ], 4 );\n*\n* var subarr = arr.subarray();\n* // returns <Complex64Array>\n*\n* var len = subarr.length;\n* // returns 5\n*\n* var z = subarr.get( 0 );\n* // returns <Complex64>\n*\n* var re = realf( z );\n* // returns 1.0\n*\n* var im = imagf( z );\n* // returns -1.0\n*\n* z = subarr.get( len-1 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 5.0\n*\n* im = imagf( z );\n* // returns -5.0\n*\n* subarr = arr.subarray( 1, -2 );\n* // returns <Complex64Array>\n*\n* len = subarr.length;\n* // returns 2\n*\n* z = subarr.get( 0 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 2.0\n*\n* im = imagf( z );\n* // returns -2.0\n*\n* z = subarr.get( len-1 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 3.0\n*\n* im = imagf( z );\n* // returns -3.0\n*/\nsetReadOnly( Complex64Array.prototype, 'subarray', function subarray( begin, end ) {\n\tvar offset;\n\tvar buf;\n\tvar len;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tbuf = this._buffer;\n\tlen = this._length;\n\tif ( arguments.length === 0 ) {\n\t\tbegin = 0;\n\t\tend = len;\n\t} else {\n\t\tif ( !isInteger( begin ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. First argument must be an integer. Value: `%s`.', begin ) );\n\t\t}\n\t\tif ( begin < 0 ) {\n\t\t\tbegin += len;\n\t\t\tif ( begin < 0 ) {\n\t\t\t\tbegin = 0;\n\t\t\t}\n\t\t}\n\t\tif ( arguments.length === 1 ) {\n\t\t\tend = len;\n\t\t} else {\n\t\t\tif ( !isInteger( end ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', end ) );\n\t\t\t}\n\t\t\tif ( end < 0 ) {\n\t\t\t\tend += len;\n\t\t\t\tif ( end < 0 ) {\n\t\t\t\t\tend = 0;\n\t\t\t\t}\n\t\t\t} else if ( end > len ) {\n\t\t\t\tend = len;\n\t\t\t}\n\t\t}\n\t}\n\tif ( begin >= len ) {\n\t\tlen = 0;\n\t\toffset = buf.byteLength;\n\t} else if ( begin >= end ) {\n\t\tlen = 0;\n\t\toffset = buf.byteOffset + (begin*BYTES_PER_ELEMENT);\n\t} else {\n\t\tlen = end - begin;\n\t\toffset = buf.byteOffset + ( begin*BYTES_PER_ELEMENT );\n\t}\n\treturn new this.constructor( buf.buffer, offset, ( len < 0 ) ? 0 : len );\n});\n\n/**\n* Returns a new typed array containing the elements in reversed order.\n*\n* @name toReversed\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @throws {TypeError} `this` must be a complex number array\n* @returns {Complex64Array} reversed array\n*\n* @example\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* var arr = new Complex64Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* var out = arr.toReversed();\n* // returns <Complex64Array>\n*\n* var z = out.get( 0 );\n* // returns <Complex64>\n*\n* var re = realf( z );\n* // returns 3.0\n*\n* var im = imagf( z );\n* // returns 3.0\n*\n* z = out.get( 1 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 2.0\n*\n* im = imagf( z );\n* // returns 2.0\n*\n* z = out.get( 2 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 1.0\n*\n* im = imagf( z );\n* // returns 1.0\n*/\nsetReadOnly( Complex64Array.prototype, 'toReversed', function toReversed() {\n\tvar outbuf;\n\tvar out;\n\tvar len;\n\tvar buf;\n\tvar i;\n\tvar j;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tlen = this._length;\n\tout = new this.constructor( len );\n\tbuf = this._buffer;\n\toutbuf = out._buffer; // eslint-disable-line no-underscore-dangle\n\tfor ( i = 0; i < len; i++ ) {\n\t\tj = len - i - 1;\n\t\toutbuf[ (2*i) ] = buf[ (2*j) ];\n\t\toutbuf[ (2*i)+1 ] = buf[ (2*j)+1 ];\n\t}\n\treturn out;\n});\n\n/**\n* Serializes an array as a string.\n*\n* @name toString\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @throws {TypeError} `this` must be a complex number array\n* @returns {string} string representation\n*\n* @example\n* var arr = new Complex64Array( 2 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n*\n* var str = arr.toString();\n* // returns '1 + 1i,2 + 2i'\n*/\nsetReadOnly( Complex64Array.prototype, 'toString', function toString() {\n\tvar out;\n\tvar buf;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tout = [];\n\tbuf = this._buffer;\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tout.push( getComplex64( buf, i ).toString() );\n\t}\n\treturn out.join( ',' );\n});\n\n/**\n* Returns a new typed array with the element at a provided index replaced with a provided value.\n*\n* @name with\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {integer} index - element index\n* @param {ComplexLike} value - new value\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be an integer\n* @throws {RangeError} index argument is out-of-bounds\n* @throws {TypeError} second argument must be a complex number\n* @returns {Complex64Array} new typed array\n*\n* @example\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n* var Complex64 = require( '@stdlib/complex/float32' );\n*\n* var arr = new Complex64Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* var out = arr.with( 0, new Complex64( 4.0, 4.0 ) );\n* // returns <Complex64Array>\n*\n* var z = out.get( 0 );\n* // returns <Complex64>\n*\n* var re = realf( z );\n* // returns 4.0\n*\n* var im = imagf( z );\n* // returns 4.0\n*/\nsetReadOnly( Complex64Array.prototype, 'with', function copyWith( index, value ) {\n\tvar buf;\n\tvar out;\n\tvar len;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isInteger( index ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be an integer. Value: `%s`.', index ) );\n\t}\n\tlen = this._length;\n\tif ( index < 0 ) {\n\t\tindex += len;\n\t}\n\tif ( index < 0 || index >= len ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%s`.', index ) );\n\t}\n\tif ( !isComplexLike( value ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a complex number. Value: `%s`.', value ) );\n\t}\n\tout = new this.constructor( this._buffer );\n\tbuf = out._buffer; // eslint-disable-line no-underscore-dangle\n\tbuf[ 2*index ] = realf( value );\n\tbuf[ (2*index)+1 ] = imagf( value );\n\treturn out;\n});\n\n\n// EXPORTS //\n\nmodule.exports = Complex64Array;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* 64-bit complex number array.\n*\n* @module @stdlib/array/complex64\n*\n* @example\n* var Complex64Array = require( '@stdlib/array/complex64' );\n*\n* var arr = new Complex64Array();\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 0\n*\n* @example\n* var Complex64Array = require( '@stdlib/array/complex64' );\n*\n* var arr = new Complex64Array( 2 );\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 2\n*\n* @example\n* var Complex64Array = require( '@stdlib/array/complex64' );\n*\n* var arr = new Complex64Array( [ 1.0, -1.0 ] );\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 1\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var Complex64Array = require( '@stdlib/array/complex64' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = new Complex64Array( buf );\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 2\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var Complex64Array = require( '@stdlib/array/complex64' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = new Complex64Array( buf, 8 );\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 2\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var Complex64Array = require( '@stdlib/array/complex64' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = new Complex64Array( buf, 8, 2 );\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 2\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isArrayLikeObject = require( '@stdlib/assert/is-array-like-object' );\nvar isComplexLike = require( '@stdlib/assert/is-complex-like' );\nvar format = require( '@stdlib/string/format' );\nvar real = require( '@stdlib/complex/real' );\nvar imag = require( '@stdlib/complex/imag' );\n\n\n// MAIN //\n\n/**\n* Returns an array of iterated values.\n*\n* @private\n* @param {Object} it - iterator\n* @returns {(Array|TypeError)} array or an error\n*/\nfunction fromIterator( it ) {\n\tvar out;\n\tvar v;\n\tvar z;\n\n\tout = [];\n\twhile ( true ) {\n\t\tv = it.next();\n\t\tif ( v.done ) {\n\t\t\tbreak;\n\t\t}\n\t\tz = v.value;\n\t\tif ( isArrayLikeObject( z ) && z.length >= 2 ) {\n\t\t\tout.push( z[ 0 ], z[ 1 ] );\n\t\t} else if ( isComplexLike( z ) ) {\n\t\t\tout.push( real( z ), imag( z ) );\n\t\t} else {\n\t\t\treturn new TypeError( format( 'invalid argument. An iterator must return either a two-element array containing real and imaginary components or a complex number. Value: `%s`.', z ) );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = fromIterator;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isArrayLikeObject = require( '@stdlib/assert/is-array-like-object' );\nvar isComplexLike = require( '@stdlib/assert/is-complex-like' );\nvar format = require( '@stdlib/string/format' );\nvar real = require( '@stdlib/complex/real' );\nvar imag = require( '@stdlib/complex/imag' );\n\n\n// MAIN //\n\n/**\n* Returns an array of iterated values.\n*\n* @private\n* @param {Object} it - iterator\n* @param {Function} clbk - callback to invoke for each iterated value\n* @param {*} thisArg - invocation context\n* @returns {(Array|TypeError)} array or an error\n*/\nfunction fromIteratorMap( it, clbk, thisArg ) {\n\tvar out;\n\tvar v;\n\tvar z;\n\tvar i;\n\n\tout = [];\n\ti = -1;\n\twhile ( true ) {\n\t\tv = it.next();\n\t\tif ( v.done ) {\n\t\t\tbreak;\n\t\t}\n\t\ti += 1;\n\t\tz = clbk.call( thisArg, v.value, i );\n\t\tif ( isArrayLikeObject( z ) && z.length >= 2 ) {\n\t\t\tout.push( z[ 0 ], z[ 1 ] );\n\t\t} else if ( isComplexLike( z ) ) {\n\t\t\tout.push( real( z ), imag( z ) );\n\t\t} else {\n\t\t\treturn new TypeError( format( 'invalid argument. Callback must return either a two-element array containing real and imaginary components or a complex number. Value: `%s`.', z ) );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = fromIteratorMap;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isComplexLike = require( '@stdlib/assert/is-complex-like' );\nvar real = require( '@stdlib/complex/real' );\nvar imag = require( '@stdlib/complex/imag' );\n\n\n// MAIN //\n\n/**\n* Returns a strided array of real and imaginary components.\n*\n* @private\n* @param {Float64Array} buf - output array\n* @param {Array} arr - array containing complex numbers\n* @returns {(Float64Array|null)} output array or null\n*/\nfunction fromArray( buf, arr ) {\n\tvar len;\n\tvar v;\n\tvar i;\n\tvar j;\n\n\tlen = arr.length;\n\tj = 0;\n\tfor ( i = 0; i < len; i++ ) {\n\t\tv = arr[ i ];\n\t\tif ( !isComplexLike( v ) ) {\n\t\t\treturn null;\n\t\t}\n\t\tbuf[ j ] = real( v );\n\t\tbuf[ j+1 ] = imag( v );\n\t\tj += 2; // stride\n\t}\n\treturn buf;\n}\n\n\n// EXPORTS //\n\nmodule.exports = fromArray;\n", "/* eslint-disable no-restricted-syntax, max-lines, no-invalid-this */\n\n/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isArrayLikeObject = require( '@stdlib/assert/is-array-like-object' );\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' );\nvar isObject = require( '@stdlib/assert/is-object' );\nvar isArray = require( '@stdlib/assert/is-array' );\nvar isString = require( '@stdlib/assert/is-string' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isComplexLike = require( '@stdlib/assert/is-complex-like' );\nvar isEven = require( '@stdlib/math/base/assert/is-even' );\nvar isInteger = require( '@stdlib/math/base/assert/is-integer' );\nvar isComplex64Array = require( './../../base/assert/is-complex64array' );\nvar isComplex128Array = require( './../../base/assert/is-complex128array' );\nvar hasIteratorSymbolSupport = require( '@stdlib/assert/has-iterator-symbol-support' );\nvar ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' );\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar setReadOnlyAccessor = require( '@stdlib/utils/define-nonenumerable-read-only-accessor' );\nvar Float64Array = require( './../../float64' );\nvar Complex128 = require( '@stdlib/complex/float64' );\nvar real = require( '@stdlib/complex/real' );\nvar imag = require( '@stdlib/complex/imag' );\nvar floor = require( '@stdlib/math/base/special/floor' );\nvar reinterpret64 = require( '@stdlib/strided/base/reinterpret-complex64' );\nvar reinterpret128 = require( '@stdlib/strided/base/reinterpret-complex128' );\nvar getter = require( './../../base/getter' );\nvar accessorGetter = require( './../../base/accessor-getter' );\nvar format = require( '@stdlib/string/format' );\nvar fromIterator = require( './from_iterator.js' );\nvar fromIteratorMap = require( './from_iterator_map.js' );\nvar fromArray = require( './from_array.js' );\n\n\n// VARIABLES //\n\nvar BYTES_PER_ELEMENT = Float64Array.BYTES_PER_ELEMENT * 2;\nvar HAS_ITERATOR_SYMBOL = hasIteratorSymbolSupport();\n\n\n// FUNCTIONS //\n\n/**\n* Returns a boolean indicating if a value is a complex typed array.\n*\n* @private\n* @param {*} value - value to test\n* @returns {boolean} boolean indicating if a value is a complex typed array\n*/\nfunction isComplexArray( value ) {\n\treturn (\n\t\tvalue instanceof Complex128Array ||\n\t\t(\n\t\t\ttypeof value === 'object' &&\n\t\t\tvalue !== null &&\n\t\t\t(\n\t\t\t\tvalue.constructor.name === 'Complex64Array' ||\n\t\t\t\tvalue.constructor.name === 'Complex128Array'\n\t\t\t) &&\n\t\t\ttypeof value._length === 'number' && // eslint-disable-line no-underscore-dangle\n\n\t\t\t// NOTE: we don't perform a more rigorous test here for a typed array for performance reasons, as robustly checking for a typed array instance could require walking the prototype tree and performing relatively expensive constructor checks...\n\t\t\ttypeof value._buffer === 'object' // eslint-disable-line no-underscore-dangle\n\t\t)\n\t);\n}\n\n/**\n* Returns a boolean indicating if a value is a complex typed array constructor.\n*\n* @private\n* @param {*} value - value to test\n* @returns {boolean} boolean indicating if a value is a complex typed array constructor\n*/\nfunction isComplexArrayConstructor( value ) {\n\treturn (\n\t\tvalue === Complex128Array ||\n\n\t\t// NOTE: weaker test in order to avoid a circular dependency with Complex64Array...\n\t\tvalue.name === 'Complex64Array'\n\t);\n}\n\n/**\n* Retrieves a complex number from a complex number array buffer.\n*\n* @private\n* @param {Float64Array} buf - array buffer\n* @param {NonNegativeInteger} idx - element index\n* @returns {Complex128} complex number\n*/\nfunction getComplex128( buf, idx ) {\n\tidx *= 2;\n\treturn new Complex128( buf[ idx ], buf[ idx+1 ] );\n}\n\n\n// MAIN //\n\n/**\n* 128-bit complex number array constructor.\n*\n* @constructor\n* @param {(NonNegativeInteger|Collection|ArrayBuffer|Iterable)} [arg] - length, typed array, array-like object, buffer, or iterable\n* @param {NonNegativeInteger} [byteOffset=0] - byte offset\n* @param {NonNegativeInteger} [length] - view length\n* @throws {RangeError} ArrayBuffer byte length must be a multiple of `16`\n* @throws {RangeError} array-like object and typed array input arguments must have a length which is a multiple of two\n* @throws {TypeError} if provided only a single argument, must provide a valid argument\n* @throws {TypeError} byte offset must be a nonnegative integer\n* @throws {RangeError} byte offset must be a multiple of `16`\n* @throws {TypeError} view length must be a positive multiple of `16`\n* @throws {RangeError} must provide sufficient memory to accommodate byte offset and view length requirements\n* @throws {TypeError} an iterator must return either a two element array containing real and imaginary components or a complex number\n* @returns {Complex128Array} complex number array\n*\n* @example\n* var arr = new Complex128Array();\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 0\n*\n* @example\n* var arr = new Complex128Array( 2 );\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 2\n*\n* @example\n* var arr = new Complex128Array( [ 1.0, -1.0 ] );\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 1\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = new Complex128Array( buf );\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 2\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = new Complex128Array( buf, 16 );\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 1\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 64 );\n* var arr = new Complex128Array( buf, 16, 2 );\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 2\n*/\nfunction Complex128Array() {\n\tvar byteOffset;\n\tvar nargs;\n\tvar buf;\n\tvar len;\n\n\tnargs = arguments.length;\n\tif ( !(this instanceof Complex128Array) ) {\n\t\tif ( nargs === 0 ) {\n\t\t\treturn new Complex128Array();\n\t\t}\n\t\tif ( nargs === 1 ) {\n\t\t\treturn new Complex128Array( arguments[0] );\n\t\t}\n\t\tif ( nargs === 2 ) {\n\t\t\treturn new Complex128Array( arguments[0], arguments[1] );\n\t\t}\n\t\treturn new Complex128Array( arguments[0], arguments[1], arguments[2] );\n\t}\n\t// Create the underlying data buffer...\n\tif ( nargs === 0 ) {\n\t\tbuf = new Float64Array( 0 ); // backward-compatibility\n\t} else if ( nargs === 1 ) {\n\t\tif ( isNonNegativeInteger( arguments[0] ) ) {\n\t\t\tbuf = new Float64Array( arguments[0]*2 );\n\t\t} else if ( isCollection( arguments[0] ) ) {\n\t\t\tbuf = arguments[ 0 ];\n\t\t\tlen = buf.length;\n\n\t\t\t// If provided a \"generic\" array, peak at the first value, and, if the value is a complex number, try to process as an array of complex numbers, falling back to \"normal\" typed array initialization if we fail and ensuring consistency if the first value had not been a complex number...\n\t\t\tif ( len && isArray( buf ) && isComplexLike( buf[0] ) ) {\n\t\t\t\tbuf = fromArray( new Float64Array( len*2 ), buf );\n\t\t\t\tif ( buf === null ) {\n\t\t\t\t\t// We failed and we are now forced to allocate a new array :-(\n\t\t\t\t\tif ( !isEven( len ) ) {\n\t\t\t\t\t\tthrow new RangeError( format( 'invalid argument. Array-like object arguments must have a length which is a multiple of two. Length: `%u`.', len ) );\n\t\t\t\t\t}\n\t\t\t\t\t// We failed, so fall back to directly setting values...\n\t\t\t\t\tbuf = new Float64Array( arguments[0] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( isComplex64Array( buf ) ) {\n\t\t\t\t\tbuf = reinterpret64( buf, 0 );\n\t\t\t\t} else if ( isComplex128Array( buf ) ) {\n\t\t\t\t\tbuf = reinterpret128( buf, 0 );\n\t\t\t\t} else if ( !isEven( len ) ) {\n\t\t\t\t\tthrow new RangeError( format( 'invalid argument. Array-like object and typed array arguments must have a length which is a multiple of two. Length: `%u`.', len ) );\n\t\t\t\t}\n\t\t\t\tbuf = new Float64Array( buf );\n\t\t\t}\n\t\t} else if ( isArrayBuffer( arguments[0] ) ) {\n\t\t\tbuf = arguments[ 0 ];\n\t\t\tif ( !isInteger( buf.byteLength/BYTES_PER_ELEMENT ) ) {\n\t\t\t\tthrow new RangeError( format( 'invalid argument. ArrayBuffer byte length must be a multiple of %u. Byte length: `%u`.', BYTES_PER_ELEMENT, buf.byteLength ) );\n\t\t\t}\n\t\t\tbuf = new Float64Array( buf );\n\t\t} else if ( isObject( arguments[0] ) ) {\n\t\t\tbuf = arguments[ 0 ];\n\t\t\tif ( HAS_ITERATOR_SYMBOL === false ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Environment lacks Symbol.iterator support. Must provide a length, ArrayBuffer, typed array, or array-like object. Value: `%s`.', buf ) );\n\t\t\t}\n\t\t\tif ( !isFunction( buf[ ITERATOR_SYMBOL ] ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, ArrayBuffer, typed array, array-like object, or an iterable. Value: `%s`.', buf ) );\n\t\t\t}\n\t\t\tbuf = buf[ ITERATOR_SYMBOL ]();\n\t\t\tif ( !isFunction( buf.next ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, ArrayBuffer, typed array, array-like object, or an iterable. Value: `%s`.', buf ) );\n\t\t\t}\n\t\t\tbuf = fromIterator( buf );\n\t\t\tif ( buf instanceof Error ) {\n\t\t\t\tthrow buf;\n\t\t\t}\n\t\t\tbuf = new Float64Array( buf );\n\t\t} else {\n\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, ArrayBuffer, typed array, array-like object, or an iterable. Value: `%s`.', arguments[0] ) );\n\t\t}\n\t} else {\n\t\tbuf = arguments[ 0 ];\n\t\tif ( !isArrayBuffer( buf ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. First argument must be an ArrayBuffer. Value: `%s`.', buf ) );\n\t\t}\n\t\tbyteOffset = arguments[ 1 ];\n\t\tif ( !isNonNegativeInteger( byteOffset ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Byte offset must be a nonnegative integer. Value: `%s`.', byteOffset ) );\n\t\t}\n\t\tif ( !isInteger( byteOffset/BYTES_PER_ELEMENT ) ) {\n\t\t\tthrow new RangeError( format( 'invalid argument. Byte offset must be a multiple of %u. Value: `%u`.', BYTES_PER_ELEMENT, byteOffset ) );\n\t\t}\n\t\tif ( nargs === 2 ) {\n\t\t\tlen = buf.byteLength - byteOffset;\n\t\t\tif ( !isInteger( len/BYTES_PER_ELEMENT ) ) {\n\t\t\t\tthrow new RangeError( format( 'invalid arguments. ArrayBuffer view byte length must be a multiple of %u. View byte length: `%u`.', BYTES_PER_ELEMENT, len ) );\n\t\t\t}\n\t\t\tbuf = new Float64Array( buf, byteOffset );\n\t\t} else {\n\t\t\tlen = arguments[ 2 ];\n\t\t\tif ( !isNonNegativeInteger( len ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Length must be a nonnegative integer. Value: `%s`.', len ) );\n\t\t\t}\n\t\t\tif ( (len*BYTES_PER_ELEMENT) > (buf.byteLength-byteOffset) ) {\n\t\t\t\tthrow new RangeError( format( 'invalid arguments. ArrayBuffer has insufficient capacity. Either decrease the array length or provide a bigger buffer. Minimum capacity: `%u`.', len*BYTES_PER_ELEMENT ) );\n\t\t\t}\n\t\t\tbuf = new Float64Array( buf, byteOffset, len*2 );\n\t\t}\n\t}\n\tsetReadOnly( this, '_buffer', buf );\n\tsetReadOnly( this, '_length', buf.length/2 );\n\n\treturn this;\n}\n\n/**\n* Size (in bytes) of each array element.\n*\n* @name BYTES_PER_ELEMENT\n* @memberof Complex128Array\n* @readonly\n* @type {PositiveInteger}\n* @default 16\n*\n* @example\n* var nbytes = Complex128Array.BYTES_PER_ELEMENT;\n* // returns 16\n*/\nsetReadOnly( Complex128Array, 'BYTES_PER_ELEMENT', BYTES_PER_ELEMENT );\n\n/**\n* Constructor name.\n*\n* @name name\n* @memberof Complex128Array\n* @readonly\n* @type {string}\n* @default 'Complex128Array'\n*\n* @example\n* var name = Complex128Array.name;\n* // returns 'Complex128Array'\n*/\nsetReadOnly( Complex128Array, 'name', 'Complex128Array' );\n\n/**\n* Creates a new 128-bit complex number array from an array-like object or an iterable.\n*\n* @name from\n* @memberof Complex128Array\n* @type {Function}\n* @param {(Collection|Object)} src - array-like object or iterable\n* @param {Function} [clbk] - callback to invoke for each source element\n* @param {*} [thisArg] - context\n* @throws {TypeError} `this` context must be a constructor\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be an array-like object or an iterable\n* @throws {TypeError} second argument must be a function\n* @throws {RangeError} array-like objects must have a length which is a multiple of two\n* @throws {TypeError} an iterator must return either a two element array containing real and imaginary components or a complex number\n* @throws {TypeError} when provided an iterator, a callback must return either a two element array containing real and imaginary components or a complex number\n* @returns {Complex128Array} 128-bit complex number array\n*\n* @example\n* var arr = Complex128Array.from( [ 1.0, -1.0 ] );\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 1\n*\n* @example\n* var Complex128 = require( '@stdlib/complex/float64' );\n*\n* var arr = Complex128Array.from( [ new Complex128( 1.0, 1.0 ) ] );\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 1\n*\n* @example\n* var Complex128 = require( '@stdlib/complex/float64' );\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* function clbk( v ) {\n*     return new Complex128( real(v)*2.0, imag(v)*2.0 );\n* }\n*\n* var arr = Complex128Array.from( [ new Complex128( 1.0, 1.0 ) ], clbk );\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 1\n*/\nsetReadOnly( Complex128Array, 'from', function from( src ) {\n\tvar thisArg;\n\tvar nargs;\n\tvar clbk;\n\tvar out;\n\tvar buf;\n\tvar tmp;\n\tvar get;\n\tvar len;\n\tvar flg;\n\tvar v;\n\tvar i;\n\tvar j;\n\tif ( !isFunction( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` context must be a constructor.' );\n\t}\n\tif ( !isComplexArrayConstructor( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tnargs = arguments.length;\n\tif ( nargs > 1 ) {\n\t\tclbk = arguments[ 1 ];\n\t\tif ( !isFunction( clbk ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a function. Value: `%s`.', clbk ) );\n\t\t}\n\t\tif ( nargs > 2 ) {\n\t\t\tthisArg = arguments[ 2 ];\n\t\t}\n\t}\n\tif ( isComplexArray( src ) ) {\n\t\tlen = src.length;\n\t\tif ( clbk ) {\n\t\t\tout = new this( len );\n\t\t\tbuf = out._buffer; // eslint-disable-line no-underscore-dangle\n\t\t\tj = 0;\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tv = clbk.call( thisArg, src.get( i ), i );\n\t\t\t\tif ( isComplexLike( v ) ) {\n\t\t\t\t\tbuf[ j ] = real( v );\n\t\t\t\t\tbuf[ j+1 ] = imag( v );\n\t\t\t\t} else if ( isArrayLikeObject( v ) && v.length >= 2 ) {\n\t\t\t\t\tbuf[ j ] = v[ 0 ];\n\t\t\t\t\tbuf[ j+1 ] = v[ 1 ];\n\t\t\t\t} else {\n\t\t\t\t\tthrow new TypeError( format( 'invalid argument. Callback must return either a two-element array containing real and imaginary components or a complex number. Value: `%s`.', v ) );\n\t\t\t\t}\n\t\t\t\tj += 2; // stride\n\t\t\t}\n\t\t\treturn out;\n\t\t}\n\t\treturn new this( src );\n\t}\n\tif ( isCollection( src ) ) {\n\t\tif ( clbk ) {\n\t\t\t// Note: array contents affect how we iterate over a provided data source. If only complex number objects, we can extract real and imaginary components. Otherwise, for non-complex number arrays (e.g., `Float64Array`, etc), we assume a strided array where real and imaginary components are interleaved. In the former case, we expect a callback to return real and imaginary components (possibly as a complex number). In the latter case, we expect a callback to return *either* a real or imaginary component.\n\n\t\t\tlen = src.length;\n\t\t\tif ( src.get && src.set ) {\n\t\t\t\tget = accessorGetter( 'default' );\n\t\t\t} else {\n\t\t\t\tget = getter( 'default' );\n\t\t\t}\n\t\t\t// Detect whether we've been provided an array which returns complex number objects...\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tif ( !isComplexLike( get( src, i ) ) ) {\n\t\t\t\t\tflg = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If an array does not contain only complex number objects, then we assume interleaved real and imaginary components...\n\t\t\tif ( flg ) {\n\t\t\t\tif ( !isEven( len ) ) {\n\t\t\t\t\tthrow new RangeError( format( 'invalid argument. First argument must have a length which is a multiple of two. Length: `%u`.', len ) );\n\t\t\t\t}\n\t\t\t\tout = new this( len/2 );\n\t\t\t\tbuf = out._buffer; // eslint-disable-line no-underscore-dangle\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tbuf[ i ] = clbk.call( thisArg, get( src, i ), i );\n\t\t\t\t}\n\t\t\t\treturn out;\n\t\t\t}\n\t\t\t// If an array contains only complex number objects, then we need to extract real and imaginary components...\n\t\t\tout = new this( len );\n\t\t\tbuf = out._buffer; // eslint-disable-line no-underscore-dangle\n\t\t\tj = 0;\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tv = clbk.call( thisArg, get( src, i ), i );\n\t\t\t\tif ( isComplexLike( v ) ) {\n\t\t\t\t\tbuf[ j ] = real( v );\n\t\t\t\t\tbuf[ j+1 ] = imag( v );\n\t\t\t\t} else if ( isArrayLikeObject( v ) && v.length >= 2 ) {\n\t\t\t\t\tbuf[ j ] = v[ 0 ];\n\t\t\t\t\tbuf[ j+1 ] = v[ 1 ];\n\t\t\t\t} else {\n\t\t\t\t\tthrow new TypeError( format( 'invalid argument. Callback must return either a two-element array containing real and imaginary components or a complex number. Value: `%s`.', v ) );\n\t\t\t\t}\n\t\t\t\tj += 2; // stride\n\t\t\t}\n\t\t\treturn out;\n\t\t}\n\t\treturn new this( src );\n\t}\n\tif ( isObject( src ) && HAS_ITERATOR_SYMBOL && isFunction( src[ ITERATOR_SYMBOL ] ) ) { // eslint-disable-line max-len\n\t\tbuf = src[ ITERATOR_SYMBOL ]();\n\t\tif ( !isFunction( buf.next ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. First argument must be an array-like object or an iterable. Value: `%s`.', src ) );\n\t\t}\n\t\tif ( clbk ) {\n\t\t\ttmp = fromIteratorMap( buf, clbk, thisArg );\n\t\t} else {\n\t\t\ttmp = fromIterator( buf );\n\t\t}\n\t\tif ( tmp instanceof Error ) {\n\t\t\tthrow tmp;\n\t\t}\n\t\tlen = tmp.length / 2;\n\t\tout = new this( len );\n\t\tbuf = out._buffer; // eslint-disable-line no-underscore-dangle\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tbuf[ i ] = tmp[ i ];\n\t\t}\n\t\treturn out;\n\t}\n\tthrow new TypeError( format( 'invalid argument. First argument must be an array-like object or an iterable. Value: `%s`.', src ) );\n});\n\n/**\n* Creates a new 128-bit complex number array from a variable number of arguments.\n*\n* @name of\n* @memberof Complex128Array\n* @type {Function}\n* @param {...*} element - array elements\n* @throws {TypeError} `this` context must be a constructor\n* @throws {TypeError} `this` must be a complex number array\n* @returns {Complex128Array} 128-bit complex number array\n*\n* @example\n* var arr = Complex128Array.of( 1.0, 1.0, 1.0, 1.0 );\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 2\n*/\nsetReadOnly( Complex128Array, 'of', function of() {\n\tvar args;\n\tvar i;\n\tif ( !isFunction( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` context must be a constructor.' );\n\t}\n\tif ( !isComplexArrayConstructor( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\targs = [];\n\tfor ( i = 0; i < arguments.length; i++ ) {\n\t\targs.push( arguments[ i ] );\n\t}\n\treturn new this( args );\n});\n\n/**\n* Returns an array element with support for both nonnegative and negative integer indices.\n*\n* @name at\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {integer} idx - element index\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} must provide an integer\n* @returns {(Complex128|void)} array element\n*\n* @example\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* var arr = new Complex128Array( 10 );\n*\n* var z = arr.at( 0 );\n* // returns <Complex128>\n*\n* var re = real( z );\n* // returns 0.0\n*\n* var im = imag( z );\n* // returns 0.0\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 9.0, -9.0 ], 9 );\n*\n* z = arr.at( 0 );\n* // returns <Complex128>\n*\n* re = real( z );\n* // returns 1.0\n*\n* im = imag( z );\n* // returns -1.0\n*\n* z = arr.at( -1 );\n* // returns <Complex128>\n*\n* re = real( z );\n* // returns 9.0\n*\n* im = imag( z );\n* // returns -9.0\n*\n* z = arr.at( 100 );\n* // returns undefined\n*\n* z = arr.at( -100 );\n* // returns undefined\n*/\nsetReadOnly( Complex128Array.prototype, 'at', function at( idx ) {\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isInteger( idx ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide an integer. Value: `%s`.', idx ) );\n\t}\n\tif ( idx < 0 ) {\n\t\tidx += this._length;\n\t}\n\tif ( idx < 0 || idx >= this._length ) {\n\t\treturn;\n\t}\n\treturn getComplex128( this._buffer, idx );\n});\n\n/**\n* Pointer to the underlying data buffer.\n*\n* @name buffer\n* @memberof Complex128Array.prototype\n* @readonly\n* @type {ArrayBuffer}\n*\n* @example\n* var arr = new Complex128Array( 10 );\n*\n* var buf = arr.buffer;\n* // returns <ArrayBuffer>\n*/\nsetReadOnlyAccessor( Complex128Array.prototype, 'buffer', function get() {\n\treturn this._buffer.buffer;\n});\n\n/**\n* Size (in bytes) of the array.\n*\n* @name byteLength\n* @memberof Complex128Array.prototype\n* @readonly\n* @type {NonNegativeInteger}\n*\n* @example\n* var arr = new Complex128Array( 10 );\n*\n* var byteLength = arr.byteLength;\n* // returns 160\n*/\nsetReadOnlyAccessor( Complex128Array.prototype, 'byteLength', function get() {\n\treturn this._buffer.byteLength;\n});\n\n/**\n* Offset (in bytes) of the array from the start of its underlying `ArrayBuffer`.\n*\n* @name byteOffset\n* @memberof Complex128Array.prototype\n* @readonly\n* @type {NonNegativeInteger}\n*\n* @example\n* var arr = new Complex128Array( 10 );\n*\n* var byteOffset = arr.byteOffset;\n* // returns 0\n*/\nsetReadOnlyAccessor( Complex128Array.prototype, 'byteOffset', function get() {\n\treturn this._buffer.byteOffset;\n});\n\n/**\n* Size (in bytes) of each array element.\n*\n* @name BYTES_PER_ELEMENT\n* @memberof Complex128Array.prototype\n* @readonly\n* @type {PositiveInteger}\n* @default 16\n*\n* @example\n* var arr = new Complex128Array( 10 );\n*\n* var nbytes = arr.BYTES_PER_ELEMENT;\n* // returns 16\n*/\nsetReadOnly( Complex128Array.prototype, 'BYTES_PER_ELEMENT', Complex128Array.BYTES_PER_ELEMENT );\n\n/**\n* Copies a sequence of elements within the array to the position starting at `target`.\n*\n* @name copyWithin\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {integer} target - index at which to start copying elements\n* @param {integer} start - source index at which to copy elements from\n* @param {integer} [end] - source index at which to stop copying elements from\n* @throws {TypeError} `this` must be a complex number array\n* @returns {Complex128Array} modified array\n*\n* @example\n* var Complex128 = require( '@stdlib/complex/float64' );\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* var arr = new Complex128Array( 4 );\n*\n* // Set the array elements:\n* arr.set( new Complex128( 1.0, 1.0 ), 0 );\n* arr.set( new Complex128( 2.0, 2.0 ), 1 );\n* arr.set( new Complex128( 3.0, 3.0 ), 2 );\n* arr.set( new Complex128( 4.0, 4.0 ), 3 );\n*\n* // Copy the first two elements to the last two elements:\n* arr.copyWithin( 2, 0, 2 );\n*\n* // Get the last array element:\n* var z = arr.get( 3 );\n*\n* var re = real( z );\n* // returns 2.0\n*\n* var im = imag( z );\n* // returns 2.0\n*/\nsetReadOnly( Complex128Array.prototype, 'copyWithin', function copyWithin( target, start ) {\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\t// FIXME: prefer a functional `copyWithin` implementation which addresses lack of universal browser support (e.g., IE11 and Safari) or ensure that typed arrays are polyfilled\n\tif ( arguments.length === 2 ) {\n\t\tthis._buffer.copyWithin( target*2, start*2 );\n\t} else {\n\t\tthis._buffer.copyWithin( target*2, start*2, arguments[2]*2 );\n\t}\n\treturn this;\n});\n\n/**\n* Returns an iterator for iterating over array key-value pairs.\n*\n* @name entries\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @throws {TypeError} `this` must be a complex number array\n* @returns {Iterator} iterator\n*\n* @example\n* var Complex128 = require( '@stdlib/complex/float64' );\n*\n* var arr = [\n*     new Complex128( 1.0, 1.0 ),\n*     new Complex128( 2.0, 2.0 ),\n*     new Complex128( 3.0, 3.0 )\n* ];\n* arr = new Complex128Array( arr );\n*\n* // Create an iterator:\n* var it = arr.entries();\n*\n* // Iterate over the key-value pairs...\n* var v = it.next().value;\n* // returns [ 0, <Complex128> ]\n*\n* v = it.next().value;\n* // returns [ 1, <Complex128> ]\n*\n* v = it.next().value;\n* // returns [ 2, <Complex128> ]\n*\n* var bool = it.next().done;\n* // returns true\n*/\nsetReadOnly( Complex128Array.prototype, 'entries', function entries() {\n\tvar buffer;\n\tvar self;\n\tvar iter;\n\tvar len;\n\tvar FLG;\n\tvar i;\n\tvar j;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tself = this;\n\tbuffer = this._buffer;\n\tlen = this._length;\n\n\t// Initialize the iteration indices:\n\ti = -1;\n\tj = -2;\n\n\t// Create an iterator protocol-compliant object:\n\titer = {};\n\tsetReadOnly( iter, 'next', next );\n\tsetReadOnly( iter, 'return', end );\n\n\tif ( ITERATOR_SYMBOL ) {\n\t\tsetReadOnly( iter, ITERATOR_SYMBOL, factory );\n\t}\n\treturn iter;\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next() {\n\t\tvar z;\n\t\ti += 1;\n\t\tif ( FLG || i >= len ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tj += 2;\n\t\tz = new Complex128( buffer[ j ], buffer[ j+1 ] );\n\t\treturn {\n\t\t\t'value': [ i, z ],\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Finishes an iterator.\n\t*\n\t* @private\n\t* @param {*} [value] - value to return\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction end( value ) {\n\t\tFLG = true;\n\t\tif ( arguments.length ) {\n\t\t\treturn {\n\t\t\t\t'value': value,\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'done': true\n\t\t};\n\t}\n\n\t/**\n\t* Returns a new iterator.\n\t*\n\t* @private\n\t* @returns {Iterator} iterator\n\t*/\n\tfunction factory() {\n\t\treturn self.entries();\n\t}\n});\n\n/**\n* Tests whether all elements in an array pass a test implemented by a predicate function.\n*\n* @name every\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - predicate function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {boolean} boolean indicating whether all elements pass a test\n*\n* @example\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* function predicate( v ) {\n*     return ( real( v ) === imag( v ) );\n* }\n*\n* var arr = new Complex128Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* var bool = arr.every( predicate );\n* // returns true\n*/\nsetReadOnly( Complex128Array.prototype, 'every', function every( predicate, thisArg ) {\n\tvar buf;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( predicate ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', predicate ) );\n\t}\n\tbuf = this._buffer;\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tif ( !predicate.call( thisArg, getComplex128( buf, i ), i, this ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n});\n\n/**\n* Returns a modified typed array filled with a fill value.\n*\n* @name fill\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {ComplexLike} value - fill value\n* @param {integer} [start=0] - starting index (inclusive)\n* @param {integer} [end] - ending index (exclusive)\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a complex number\n* @throws {TypeError} second argument must be an integer\n* @throws {TypeError} third argument must be an integer\n*\n* @example\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* var arr = new Complex128Array( 3 );\n*\n* arr.fill( new Complex128( 1.0, 1.0 ), 1 );\n*\n* var z = arr.get( 1 );\n* // returns <Complex128>\n*\n* var re = real( z );\n* // returns 1.0\n*\n* var im = imag( z );\n* // returns 1.0\n*\n* z = arr.get( 1 );\n* // returns <Complex128>\n*\n* re = real( z );\n* // returns 1.0\n*\n* im = imag( z );\n* // returns 1.0\n*/\nsetReadOnly( Complex128Array.prototype, 'fill', function fill( value, start, end ) {\n\tvar buf;\n\tvar len;\n\tvar idx;\n\tvar re;\n\tvar im;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isComplexLike( value ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a complex number. Value: `%s`.', value ) );\n\t}\n\tbuf = this._buffer;\n\tlen = this._length;\n\tif ( arguments.length > 1 ) {\n\t\tif ( !isInteger( start ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', start ) );\n\t\t}\n\t\tif ( start < 0 ) {\n\t\t\tstart += len;\n\t\t\tif ( start < 0 ) {\n\t\t\t\tstart = 0;\n\t\t\t}\n\t\t}\n\t\tif ( arguments.length > 2 ) {\n\t\t\tif ( !isInteger( end ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be an integer. Value: `%s`.', end ) );\n\t\t\t}\n\t\t\tif ( end < 0 ) {\n\t\t\t\tend += len;\n\t\t\t\tif ( end < 0 ) {\n\t\t\t\t\tend = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( end > len ) {\n\t\t\t\tend = len;\n\t\t\t}\n\t\t} else {\n\t\t\tend = len;\n\t\t}\n\t} else {\n\t\tstart = 0;\n\t\tend = len;\n\t}\n\tre = real( value );\n\tim = imag( value );\n\tfor ( i = start; i < end; i++ ) {\n\t\tidx = 2*i;\n\t\tbuf[ idx ] = re;\n\t\tbuf[ idx+1 ] = im;\n\t}\n\treturn this;\n});\n\n/**\n* Returns a new array containing the elements of an array which pass a test implemented by a predicate function.\n*\n* @name filter\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - predicate function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {Complex128Array} complex number array\n*\n* @example\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* function predicate( v ) {\n*     return ( real( v ) === imag( v ) );\n* }\n*\n* var arr = new Complex128Array( 3 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n*\n* var out = arr.filter( predicate );\n* // returns <Complex128Array>\n*\n* var len = out.length;\n* // returns 1\n*\n* var z = out.get( 0 );\n* // returns <Complex128>\n*\n* var re = real( z );\n* // returns 2.0\n*\n* var im = imag( z );\n* // returns 2.0\n*/\nsetReadOnly( Complex128Array.prototype, 'filter', function filter( predicate, thisArg ) {\n\tvar buf;\n\tvar out;\n\tvar i;\n\tvar z;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( predicate ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', predicate ) );\n\t}\n\tbuf = this._buffer;\n\tout = [];\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tz = getComplex128( buf, i );\n\t\tif ( predicate.call( thisArg, z, i, this ) ) {\n\t\t\tout.push( z );\n\t\t}\n\t}\n\treturn new this.constructor( out );\n});\n\n/**\n* Returns the first element in an array for which a predicate function returns a truthy value.\n*\n* @name find\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - predicate function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {(Complex128|void)} array element or undefined\n*\n* @example\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* function predicate( v ) {\n*     return ( real( v ) === imag( v ) );\n* }\n*\n* var arr = new Complex128Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* var z = arr.find( predicate );\n* // returns <Complex128>\n*\n* var re = real( z );\n* // returns 1.0\n*\n* var im = imag( z );\n* // returns 1.0\n*/\nsetReadOnly( Complex128Array.prototype, 'find', function find( predicate, thisArg ) {\n\tvar buf;\n\tvar i;\n\tvar z;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( predicate ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', predicate ) );\n\t}\n\tbuf = this._buffer;\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tz = getComplex128( buf, i );\n\t\tif ( predicate.call( thisArg, z, i, this ) ) {\n\t\t\treturn z;\n\t\t}\n\t}\n});\n\n/**\n* Returns the index of the first element in an array for which a predicate function returns a truthy value.\n*\n* @name findIndex\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - predicate function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {integer} index or -1\n*\n* @example\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* function predicate( v ) {\n*     return ( real( v ) === imag( v ) );\n* }\n*\n* var arr = new Complex128Array( 3 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* var idx = arr.findIndex( predicate );\n* // returns 2\n*/\nsetReadOnly( Complex128Array.prototype, 'findIndex', function findIndex( predicate, thisArg ) {\n\tvar buf;\n\tvar i;\n\tvar z;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( predicate ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', predicate ) );\n\t}\n\tbuf = this._buffer;\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tz = getComplex128( buf, i );\n\t\tif ( predicate.call( thisArg, z, i, this ) ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n});\n\n/**\n* Returns the last element in an array for which a predicate function returns a truthy value.\n*\n* @name findLast\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - predicate function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {(Complex128|void)} array element or undefined\n*\n* @example\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* function predicate( v ) {\n*     return ( real( v ) === imag( v ) );\n* }\n*\n* var arr = new Complex128Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* var z = arr.findLast( predicate );\n* // returns <Complex128>\n*\n* var re = real( z );\n* // returns 3.0\n*\n* var im = imag( z );\n* // returns 3.0\n*/\nsetReadOnly( Complex128Array.prototype, 'findLast', function findLast( predicate, thisArg ) {\n\tvar buf;\n\tvar i;\n\tvar z;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( predicate ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', predicate ) );\n\t}\n\tbuf = this._buffer;\n\tfor ( i = this._length-1; i >= 0; i-- ) {\n\t\tz = getComplex128( buf, i );\n\t\tif ( predicate.call( thisArg, z, i, this ) ) {\n\t\t\treturn z;\n\t\t}\n\t}\n});\n\n/**\n* Returns the index of the last element in an array for which a predicate function returns a truthy value.\n*\n* @name findLastIndex\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - predicate function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {integer} index or -1\n*\n* @example\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* function predicate( v ) {\n*     return ( real( v ) === imag( v ) );\n* }\n*\n* var arr = new Complex128Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n*\n* var idx = arr.findLastIndex( predicate );\n* // returns 1\n*/\nsetReadOnly( Complex128Array.prototype, 'findLastIndex', function findLastIndex( predicate, thisArg ) {\n\tvar buf;\n\tvar i;\n\tvar z;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( predicate ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', predicate ) );\n\t}\n\tbuf = this._buffer;\n\tfor ( i = this._length-1; i >= 0; i-- ) {\n\t\tz = getComplex128( buf, i );\n\t\tif ( predicate.call( thisArg, z, i, this ) ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n});\n\n/**\n* Invokes a function once for each array element.\n*\n* @name forEach\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {Function} fcn - function to invoke\n* @param {*} [thisArg] - function invocation context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n*\n* @example\n* var Complex128 = require( '@stdlib/complex/float64' );\n*\n* function log( v, i ) {\n*     console.log( '%s: %s', i, v.toString() );\n* }\n*\n* var arr = new Complex128Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* arr.forEach( log );\n*/\nsetReadOnly( Complex128Array.prototype, 'forEach', function forEach( fcn, thisArg ) {\n\tvar buf;\n\tvar i;\n\tvar z;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( fcn ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', fcn ) );\n\t}\n\tbuf = this._buffer;\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tz = getComplex128( buf, i );\n\t\tfcn.call( thisArg, z, i, this );\n\t}\n});\n\n/**\n* Returns an array element.\n*\n* @name get\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {NonNegativeInteger} idx - element index\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} must provide a nonnegative integer\n* @returns {(Complex128|void)} array element\n*\n* @example\n* var arr = new Complex128Array( 10 );\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* var z = arr.get( 0 );\n* // returns <Complex128>\n*\n* var re = real( z );\n* // returns 0.0\n*\n* var im = imag( z );\n* // returns 0.0\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n*\n* z = arr.get( 0 );\n* // returns <Complex128>\n*\n* re = real( z );\n* // returns 1.0\n*\n* im = imag( z );\n* // returns -1.0\n*\n* z = arr.get( 100 );\n* // returns undefined\n*/\nsetReadOnly( Complex128Array.prototype, 'get', function get( idx ) {\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isNonNegativeInteger( idx ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a nonnegative integer. Value: `%s`.', idx ) );\n\t}\n\tif ( idx >= this._length ) {\n\t\treturn;\n\t}\n\treturn getComplex128( this._buffer, idx );\n});\n\n/**\n* Number of array elements.\n*\n* @name length\n* @memberof Complex128Array.prototype\n* @readonly\n* @type {NonNegativeInteger}\n*\n* @example\n* var arr = new Complex128Array( 10 );\n*\n* var len = arr.length;\n* // returns 10\n*/\nsetReadOnlyAccessor( Complex128Array.prototype, 'length', function get() {\n\treturn this._length;\n});\n\n/**\n* Returns a boolean indicating whether an array includes a provided value.\n*\n* @name includes\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {ComplexLike} searchElement - search element\n* @param {integer} [fromIndex=0] - starting index (inclusive)\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a complex number\n* @throws {TypeError} second argument must be an integer\n* @returns {boolean} boolean indicating whether an array includes a provided value\n*\n* @example\n* var Complex128 = require( '@stdlib/complex/float64' );\n*\n* var arr = new Complex128Array( 5 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n* arr.set( [ 4.0, -4.0 ], 3 );\n* arr.set( [ 5.0, -5.0 ], 4 );\n*\n* var bool = arr.includes( new Complex128( 3.0, -3.0 ) );\n* // returns true\n*\n* bool = arr.includes( new Complex128( 3.0, -3.0 ), 3 );\n* // returns false\n*\n* bool = arr.includes( new Complex128( 4.0, -4.0 ), -3 );\n* // returns true\n*/\nsetReadOnly( Complex128Array.prototype, 'includes', function includes( searchElement, fromIndex ) {\n\tvar buf;\n\tvar idx;\n\tvar re;\n\tvar im;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isComplexLike( searchElement ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a complex number. Value: `%s`.', searchElement ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', fromIndex ) );\n\t\t}\n\t\tif ( fromIndex < 0 ) {\n\t\t\tfromIndex += this._length;\n\t\t\tif ( fromIndex < 0 ) {\n\t\t\t\tfromIndex = 0;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfromIndex = 0;\n\t}\n\tre = real( searchElement );\n\tim = imag( searchElement );\n\tbuf = this._buffer;\n\tfor ( i = fromIndex; i < this._length; i++ ) {\n\t\tidx = 2 * i;\n\t\tif ( re === buf[ idx ] && im === buf[ idx+1 ] ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n});\n\n/**\n* Returns the first index at which a given element can be found.\n*\n* @name indexOf\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {ComplexLike} searchElement - element to find\n* @param {integer} [fromIndex=0] - starting index (inclusive)\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a complex number\n* @throws {TypeError} second argument must be an integer\n* @returns {integer} index or -1\n*\n* @example\n* var Complex128 = require( '@stdlib/complex/float64' );\n*\n* var arr = new Complex128Array( 5 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n* arr.set( [ 4.0, -4.0 ], 3 );\n* arr.set( [ 5.0, -5.0 ], 4 );\n*\n* var idx = arr.indexOf( new Complex128( 3.0, -3.0 ) );\n* // returns 2\n*\n* idx = arr.indexOf( new Complex128( 3.0, -3.0 ), 3 );\n* // returns -1\n*\n* idx = arr.indexOf( new Complex128( 4.0, -4.0 ), -3 );\n* // returns 3\n*/\nsetReadOnly( Complex128Array.prototype, 'indexOf', function indexOf( searchElement, fromIndex ) {\n\tvar buf;\n\tvar idx;\n\tvar re;\n\tvar im;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isComplexLike( searchElement ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a complex number. Value: `%s`.', searchElement ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', fromIndex ) );\n\t\t}\n\t\tif ( fromIndex < 0 ) {\n\t\t\tfromIndex += this._length;\n\t\t\tif ( fromIndex < 0 ) {\n\t\t\t\tfromIndex = 0;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfromIndex = 0;\n\t}\n\tre = real( searchElement );\n\tim = imag( searchElement );\n\tbuf = this._buffer;\n\tfor ( i = fromIndex; i < this._length; i++ ) {\n\t\tidx = 2 * i;\n\t\tif ( re === buf[ idx ] && im === buf[ idx+1 ] ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n});\n\n/**\n* Returns a new string by concatenating all array elements.\n*\n* @name join\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {string} [separator=','] - element separator\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a string\n* @returns {string} string representation\n*\n* @example\n* var arr = new Complex128Array( 2 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n*\n* var str = arr.join();\n* // returns '1 + 1i,2 + 2i'\n*\n* str = arr.join( '/' );\n* // returns '1 + 1i/2 + 2i'\n*/\nsetReadOnly( Complex128Array.prototype, 'join', function join( separator ) {\n\tvar out;\n\tvar buf;\n\tvar sep;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( arguments.length === 0 ) {\n\t\tsep = ',';\n\t} else if ( isString( separator ) ) {\n\t\tsep = separator;\n\t} else {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', separator ) );\n\t}\n\tout = [];\n\tbuf = this._buffer;\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tout.push( getComplex128( buf, i ).toString() );\n\t}\n\treturn out.join( sep );\n});\n\n/**\n* Returns the last index at which a given element can be found.\n*\n* @name lastIndexOf\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {ComplexLike} searchElement - element to find\n* @param {integer} [fromIndex] - index at which to start searching backward (inclusive)\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a complex number\n* @throws {TypeError} second argument must be an integer\n* @returns {integer} index or -1\n*\n* @example\n* var Complex128 = require( '@stdlib/complex/float64' );\n*\n* var arr = new Complex128Array( 5 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n* arr.set( [ 4.0, -4.0 ], 3 );\n* arr.set( [ 3.0, -3.0 ], 4 );\n*\n* var idx = arr.lastIndexOf( new Complex128( 3.0, -3.0 ) );\n* // returns 4\n*\n* idx = arr.lastIndexOf( new Complex128( 3.0, -3.0 ), 3 );\n* // returns 2\n*\n* idx = arr.lastIndexOf( new Complex128( 5.0, -5.0 ), 3 );\n* // returns -1\n*\n* idx = arr.lastIndexOf( new Complex128( 2.0, -2.0 ), -3 );\n* // returns 1\n*/\nsetReadOnly( Complex128Array.prototype, 'lastIndexOf', function lastIndexOf( searchElement, fromIndex ) {\n\tvar buf;\n\tvar idx;\n\tvar re;\n\tvar im;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isComplexLike( searchElement ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a complex number. Value: `%s`.', searchElement ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', fromIndex ) );\n\t\t}\n\t\tif ( fromIndex >= this._length ) {\n\t\t\tfromIndex = this._length - 1;\n\t\t} else if ( fromIndex < 0 ) {\n\t\t\tfromIndex += this._length;\n\t\t}\n\t} else {\n\t\tfromIndex = this._length - 1;\n\t}\n\tre = real( searchElement );\n\tim = imag( searchElement );\n\tbuf = this._buffer;\n\tfor ( i = fromIndex; i >= 0; i-- ) {\n\t\tidx = 2 * i;\n\t\tif ( re === buf[ idx ] && im === buf[ idx+1 ] ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n});\n\n/**\n* Returns a new array with each element being the result of a provided callback function.\n*\n* @name map\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {Function} fcn - callback function\n* @param {*} [thisArg] - callback function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {Complex128Array} complex number array\n*\n* @example\n* var Complex128 = require( '@stdlib/complex/float64' );\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* function scale( v, i ) {\n*     return new Complex128( 2.0*real( v ), 2.0*imag( v ) );\n* }\n*\n* var arr = new Complex128Array( 3 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n*\n* var out = arr.map( scale );\n* // returns <Complex128Array>\n*\n* var z = out.get( 0 );\n* // returns <Complex128>\n*\n* var re = real( z );\n* // returns 2.0\n*\n* var im = imag( z );\n* // returns -2.0\n*/\nsetReadOnly( Complex128Array.prototype, 'map', function map( fcn, thisArg ) {\n\tvar outbuf;\n\tvar buf;\n\tvar out;\n\tvar i;\n\tvar v;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( fcn ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', fcn ) );\n\t}\n\tbuf = this._buffer;\n\tout = new this.constructor( this._length );\n\toutbuf = out._buffer; // eslint-disable-line no-underscore-dangle\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tv = fcn.call( thisArg, getComplex128( buf, i ), i, this );\n\t\tif ( isComplexLike( v ) ) {\n\t\t\toutbuf[ 2*i ] = real( v );\n\t\t\toutbuf[ (2*i)+1 ] = imag( v );\n\t\t} else if ( isArrayLikeObject( v ) && v.length === 2 ) {\n\t\t\toutbuf[ 2*i ] = v[ 0 ];\n\t\t\toutbuf[ (2*i)+1 ] = v[ 1 ];\n\t\t} else {\n\t\t\tthrow new TypeError( format( 'invalid argument. Callback must return either a two-element array containing real and imaginary components or a complex number. Value: `%s`.', v ) );\n\t\t}\n\t}\n\treturn out;\n});\n\n/**\n* Reverses an array in-place.\n*\n* @name reverse\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @throws {TypeError} `this` must be a complex number array\n* @returns {Complex128Array} reversed array\n*\n* @example\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* var arr = new Complex128Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* var out = arr.reverse();\n* // returns <Complex128Array>\n*\n* var z = out.get( 0 );\n* // returns <Complex128>\n*\n* var re = real( z );\n* // returns 3.0\n*\n* var im = imag( z );\n* // returns 3.0\n*\n* z = out.get( 1 );\n* // returns <Complex128>\n*\n* re = real( z );\n* // returns 2.0\n*\n* im = imag( z );\n* // returns 2.0\n*\n* z = out.get( 2 );\n* // returns <Complex128>\n*\n* re = real( z );\n* // returns 1.0\n*\n* im = imag( z );\n* // returns 1.0\n*/\nsetReadOnly( Complex128Array.prototype, 'reverse', function reverse() {\n\tvar buf;\n\tvar tmp;\n\tvar len;\n\tvar N;\n\tvar i;\n\tvar j;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tlen = this._length;\n\tbuf = this._buffer;\n\tN = floor( len / 2 );\n\tfor ( i = 0; i < N; i++ ) {\n\t\tj = len - i - 1;\n\t\ttmp = buf[ (2*i) ];\n\t\tbuf[ (2*i) ] = buf[ (2*j) ];\n\t\tbuf[ (2*j) ] = tmp;\n\t\ttmp = buf[ (2*i)+1 ];\n\t\tbuf[ (2*i)+1 ] = buf[ (2*j)+1 ];\n\t\tbuf[ (2*j)+1 ] = tmp;\n\t}\n\treturn this;\n});\n\n/**\n* Sets an array element.\n*\n* ## Notes\n*\n* -   When provided a typed array, real or complex, we must check whether the source array shares the same buffer as the target array and whether the underlying memory overlaps. In particular, we are concerned with the following scenario:\n*\n*     ```text\n*     buf:                ---------------------\n*     src: ---------------------\n*     ```\n*\n*     In the above, as we copy values from `src`, we will overwrite values in the `src` view, resulting in duplicated values copied into the end of `buf`, which is not intended. Hence, to avoid overwriting source values, we must **copy** source values to a temporary array.\n*\n*     In the other overlapping scenario,\n*\n*     ```text\n*     buf: ---------------------\n*     src:                ---------------------\n*     ```\n*\n*     by the time we begin copying into the overlapping region, we are copying from the end of `src`, a non-overlapping region, which means we don't run the risk of copying copied values, rather than the original `src` values as intended.\n*\n* @name set\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {(Collection|Complex|ComplexArray)} value - value(s)\n* @param {NonNegativeInteger} [i=0] - element index at which to start writing values\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be either a complex number, an array-like object, or a complex number array\n* @throws {TypeError} index argument must be a nonnegative integer\n* @throws {RangeError} array-like objects must have a length which is a multiple of two\n* @throws {RangeError} index argument is out-of-bounds\n* @throws {RangeError} target array lacks sufficient storage to accommodate source values\n* @returns {void}\n*\n* @example\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* var arr = new Complex128Array( 10 );\n*\n* var z = arr.get( 0 );\n* // returns <Complex128>\n*\n* var re = real( z );\n* // returns 0.0\n*\n* var im = imag( z );\n* // returns 0.0\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n*\n* z = arr.get( 0 );\n* // returns <Complex128>\n*\n* re = real( z );\n* // returns 1.0\n*\n* im = imag( z );\n* // returns -1.0\n*/\nsetReadOnly( Complex128Array.prototype, 'set', function set( value ) {\n\t/* eslint-disable no-underscore-dangle */\n\tvar sbuf;\n\tvar idx;\n\tvar buf;\n\tvar tmp;\n\tvar flg;\n\tvar N;\n\tvar v;\n\tvar i;\n\tvar j;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tbuf = this._buffer;\n\tif ( arguments.length > 1 ) {\n\t\tidx = arguments[ 1 ];\n\t\tif ( !isNonNegativeInteger( idx ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Index argument must be a nonnegative integer. Value: `%s`.', idx ) );\n\t\t}\n\t} else {\n\t\tidx = 0;\n\t}\n\tif ( isComplexLike( value ) ) {\n\t\tif ( idx >= this._length ) {\n\t\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%u`.', idx ) );\n\t\t}\n\t\tidx *= 2;\n\t\tbuf[ idx ] = real( value );\n\t\tbuf[ idx+1 ] = imag( value );\n\t\treturn;\n\t}\n\tif ( isComplexArray( value ) ) {\n\t\tN = value._length;\n\t\tif ( idx+N > this._length ) {\n\t\t\tthrow new RangeError( 'invalid arguments. Target array lacks sufficient storage to accommodate source values.' );\n\t\t}\n\t\tsbuf = value._buffer;\n\n\t\t// Check for overlapping memory...\n\t\tj = buf.byteOffset + (idx*BYTES_PER_ELEMENT);\n\t\tif (\n\t\t\tsbuf.buffer === buf.buffer &&\n\t\t\t(\n\t\t\t\tsbuf.byteOffset < j &&\n\t\t\t\tsbuf.byteOffset+sbuf.byteLength > j\n\t\t\t)\n\t\t) {\n\t\t\t// We need to copy source values...\n\t\t\ttmp = new Float64Array( sbuf.length );\n\t\t\tfor ( i = 0; i < sbuf.length; i++ ) {\n\t\t\t\ttmp[ i ] = sbuf[ i ];\n\t\t\t}\n\t\t\tsbuf = tmp;\n\t\t}\n\t\tidx *= 2;\n\t\tj = 0;\n\t\tfor ( i = 0; i < N; i++ ) {\n\t\t\tbuf[ idx ] = sbuf[ j ];\n\t\t\tbuf[ idx+1 ] = sbuf[ j+1 ];\n\t\t\tidx += 2; // stride\n\t\t\tj += 2; // stride\n\t\t}\n\t\treturn;\n\t}\n\tif ( isCollection( value ) ) {\n\t\t// Detect whether we've been provided an array of complex numbers...\n\t\tN = value.length;\n\t\tfor ( i = 0; i < N; i++ ) {\n\t\t\tif ( !isComplexLike( value[ i ] ) ) {\n\t\t\t\tflg = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t// If an array does not contain only complex numbers, then we assume interleaved real and imaginary components...\n\t\tif ( flg ) {\n\t\t\tif ( !isEven( N ) ) {\n\t\t\t\tthrow new RangeError( format( 'invalid argument. Array-like object arguments must have a length which is a multiple of two. Length: `%u`.', N ) );\n\t\t\t}\n\t\t\tif ( idx+(N/2) > this._length ) {\n\t\t\t\tthrow new RangeError( 'invalid arguments. Target array lacks sufficient storage to accommodate source values.' );\n\t\t\t}\n\t\t\tsbuf = value;\n\n\t\t\t// Check for overlapping memory...\n\t\t\tj = buf.byteOffset + (idx*BYTES_PER_ELEMENT);\n\t\t\tif (\n\t\t\t\tsbuf.buffer === buf.buffer &&\n\t\t\t\t(\n\t\t\t\t\tsbuf.byteOffset < j &&\n\t\t\t\t\tsbuf.byteOffset+sbuf.byteLength > j\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// We need to copy source values...\n\t\t\t\ttmp = new Float64Array( N );\n\t\t\t\tfor ( i = 0; i < N; i++ ) {\n\t\t\t\t\ttmp[ i ] = sbuf[ i ];\n\t\t\t\t}\n\t\t\t\tsbuf = tmp;\n\t\t\t}\n\t\t\tidx *= 2;\n\t\t\tN /= 2;\n\t\t\tj = 0;\n\t\t\tfor ( i = 0; i < N; i++ ) {\n\t\t\t\tbuf[ idx ] = sbuf[ j ];\n\t\t\t\tbuf[ idx+1 ] = sbuf[ j+1 ];\n\t\t\t\tidx += 2; // stride\n\t\t\t\tj += 2; // stride\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\t// If an array contains only complex numbers, then we need to extract real and imaginary components...\n\t\tif ( idx+N > this._length ) {\n\t\t\tthrow new RangeError( 'invalid arguments. Target array lacks sufficient storage to accommodate source values.' );\n\t\t}\n\t\tidx *= 2;\n\t\tfor ( i = 0; i < N; i++ ) {\n\t\t\tv = value[ i ];\n\t\t\tbuf[ idx ] = real( v );\n\t\t\tbuf[ idx+1 ] = imag( v );\n\t\t\tidx += 2; // stride\n\t\t}\n\t\treturn;\n\t}\n\tthrow new TypeError( format( 'invalid argument. First argument must be either a complex number, an array-like object, or a complex number array. Value: `%s`.', value ) );\n\n\t/* eslint-enable no-underscore-dangle */\n});\n\n/**\n* Tests whether at least one element in an array passes a test implemented by a predicate function.\n*\n* @name some\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - predicate function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {boolean} boolean indicating whether at least one element passes a test\n*\n* @example\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* function predicate( v ) {\n*     return ( real( v ) === imag( v ) );\n* }\n*\n* var arr = new Complex128Array( 3 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n*\n* var bool = arr.some( predicate );\n* // returns true\n*/\nsetReadOnly( Complex128Array.prototype, 'some', function some( predicate, thisArg ) {\n\tvar buf;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( predicate ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', predicate ) );\n\t}\n\tbuf = this._buffer;\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tif ( predicate.call( thisArg, getComplex128( buf, i ), i, this ) ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n});\n\n/**\n* Creates a new typed array view over the same underlying `ArrayBuffer` and with the same underlying data type as the host array.\n*\n* @name subarray\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {integer} [begin=0] - starting index (inclusive)\n* @param {integer} [end] - ending index (exclusive)\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be an integer\n* @throws {TypeError} second argument must be an integer\n* @returns {Complex64Array} subarray\n*\n* @example\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* var arr = new Complex128Array( 5 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n* arr.set( [ 4.0, -4.0 ], 3 );\n* arr.set( [ 5.0, -5.0 ], 4 );\n*\n* var subarr = arr.subarray();\n* // returns <Complex128Array>\n*\n* var len = subarr.length;\n* // returns 5\n*\n* var z = subarr.get( 0 );\n* // returns <Complex128>\n*\n* var re = real( z );\n* // returns 1.0\n*\n* var im = imag( z );\n* // returns -1.0\n*\n* z = subarr.get( len-1 );\n* // returns <Complex128>\n*\n* re = real( z );\n* // returns 5.0\n*\n* im = imag( z );\n* // returns -5.0\n*\n* subarr = arr.subarray( 1, -2 );\n* // returns <Complex128Array>\n*\n* len = subarr.length;\n* // returns 2\n*\n* z = subarr.get( 0 );\n* // returns <Complex128>\n*\n* re = real( z );\n* // returns 2.0\n*\n* im = imag( z );\n* // returns -2.0\n*\n* z = subarr.get( len-1 );\n* // returns <Complex128>\n*\n* re = real( z );\n* // returns 3.0\n*\n* im = imag( z );\n* // returns -3.0\n*/\nsetReadOnly( Complex128Array.prototype, 'subarray', function subarray( begin, end ) {\n\tvar offset;\n\tvar buf;\n\tvar len;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tbuf = this._buffer;\n\tlen = this._length;\n\tif ( arguments.length === 0 ) {\n\t\tbegin = 0;\n\t\tend = len;\n\t} else {\n\t\tif ( !isInteger( begin ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. First argument must be an integer. Value: `%s`.', begin ) );\n\t\t}\n\t\tif ( begin < 0 ) {\n\t\t\tbegin += len;\n\t\t\tif ( begin < 0 ) {\n\t\t\t\tbegin = 0;\n\t\t\t}\n\t\t}\n\t\tif ( arguments.length === 1 ) {\n\t\t\tend = len;\n\t\t} else {\n\t\t\tif ( !isInteger( end ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', end ) );\n\t\t\t}\n\t\t\tif ( end < 0 ) {\n\t\t\t\tend += len;\n\t\t\t\tif ( end < 0 ) {\n\t\t\t\t\tend = 0;\n\t\t\t\t}\n\t\t\t} else if ( end > len ) {\n\t\t\t\tend = len;\n\t\t\t}\n\t\t}\n\t}\n\tif ( begin >= len ) {\n\t\tlen = 0;\n\t\toffset = buf.byteLength;\n\t} else if ( begin >= end ) {\n\t\tlen = 0;\n\t\toffset = buf.byteOffset + ( begin*BYTES_PER_ELEMENT );\n\t} else {\n\t\tlen = end - begin;\n\t\toffset = buf.byteOffset + ( begin*BYTES_PER_ELEMENT );\n\t}\n\treturn new this.constructor( buf.buffer, offset, ( len < 0 ) ? 0 : len );\n});\n\n/**\n* Serializes an array as a string.\n*\n* @name toString\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @throws {TypeError} `this` must be a complex number array\n* @returns {string} string representation\n*\n* @example\n* var arr = new Complex128Array( 2 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n*\n* var str = arr.toString();\n* // returns '1 + 1i,2 + 2i'\n*/\nsetReadOnly( Complex128Array.prototype, 'toString', function toString() {\n\tvar out;\n\tvar buf;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tout = [];\n\tbuf = this._buffer;\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tout.push( getComplex128( buf, i ).toString() );\n\t}\n\treturn out.join( ',' );\n});\n\n/**\n* Returns a new typed array with the element at a provided index replaced with a provided value.\n*\n* @name with\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {integer} index - element index\n* @param {ComplexLike} value - new value\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be an integer\n* @throws {RangeError} index argument is out-of-bounds\n* @throws {TypeError} second argument must be a complex number\n* @returns {Complex128Array} new typed array\n*\n* @example\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n* var Complex128 = require( '@stdlib/complex/float64' );\n*\n* var arr = new Complex128Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* var out = arr.with( 0, new Complex128( 4.0, 4.0 ) );\n* // returns <Complex128Array>\n*\n* var z = out.get( 0 );\n* // returns <Complex128>\n*\n* var re = real( z );\n* // returns 4.0\n*\n* var im = imag( z );\n* // returns 4.0\n*/\nsetReadOnly( Complex128Array.prototype, 'with', function copyWith( index, value ) {\n\tvar buf;\n\tvar out;\n\tvar len;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isInteger( index ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be an integer. Value: `%s`.', index ) );\n\t}\n\tlen = this._length;\n\tif ( index < 0 ) {\n\t\tindex += len;\n\t}\n\tif ( index < 0 || index >= len ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%s`.', index ) );\n\t}\n\tif ( !isComplexLike( value ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a complex number. Value: `%s`.', value ) );\n\t}\n\tout = new this.constructor( this._buffer );\n\tbuf = out._buffer; // eslint-disable-line no-underscore-dangle\n\tbuf[ 2*index ] = real( value );\n\tbuf[ (2*index)+1 ] = imag( value );\n\treturn out;\n});\n\n\n// EXPORTS //\n\nmodule.exports = Complex128Array;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* 128-bit complex number array.\n*\n* @module @stdlib/array/complex128\n*\n* @example\n* var Complex128Array = require( '@stdlib/array/complex128' );\n*\n* var arr = new Complex128Array();\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 0\n*\n* @example\n* var Complex128Array = require( '@stdlib/array/complex128' );\n*\n* var arr = new Complex128Array( 2 );\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 2\n*\n* @example\n* var Complex128Array = require( '@stdlib/array/complex128' );\n*\n* var arr = new Complex128Array( [ 1.0, -1.0 ] );\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 1\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var Complex128Array = require( '@stdlib/array/complex128' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = new Complex128Array( buf );\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 2\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var Complex128Array = require( '@stdlib/array/complex128' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = new Complex128Array( buf, 16 );\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 2\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var Complex128Array = require( '@stdlib/array/complex128' );\n*\n* var buf = new ArrayBuffer( 64 );\n* var arr = new Complex128Array( buf, 16, 2 );\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 2\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Float64Array = require( './../../float64' );\nvar Float32Array = require( './../../float32' );\nvar Uint32Array = require( './../../uint32' );\nvar Int32Array = require( './../../int32' );\nvar Uint16Array = require( './../../uint16' );\nvar Int16Array = require( './../../int16' );\nvar Uint8Array = require( './../../uint8' );\nvar Uint8ClampedArray = require( './../../uint8c' );\nvar Int8Array = require( './../../int8' );\nvar Complex64Array = require( './../../complex64' );\nvar Complex128Array = require( './../../complex128' );\n\n\n// MAIN //\n\n// Note: order should match `dtypes` order\nvar CTORS = [\n\tFloat64Array,\n\tFloat32Array,\n\tInt32Array,\n\tUint32Array,\n\tInt16Array,\n\tUint16Array,\n\tInt8Array,\n\tUint8Array,\n\tUint8ClampedArray,\n\tComplex64Array,\n\tComplex128Array\n];\n\n\n// EXPORTS //\n\nmodule.exports = CTORS;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n// Note: order should match `ctors` order\nvar DTYPES = [\n\t'float64',\n\t'float32',\n\t'int32',\n\t'uint32',\n\t'int16',\n\t'uint16',\n\t'int8',\n\t'uint8',\n\t'uint8c',\n\t'complex64',\n\t'complex128'\n];\n\n\n// EXPORTS //\n\nmodule.exports = DTYPES;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isBuffer = require( '@stdlib/assert/is-buffer' );\nvar isArray = require( '@stdlib/assert/is-array' );\nvar constructorName = require( '@stdlib/utils/constructor-name' );\nvar ctor2dtype = require( './ctor2dtype.js' );\nvar CTORS = require( './ctors.js' );\nvar DTYPES = require( './dtypes.js' );\n\n\n// VARIABLES //\n\nvar NTYPES = DTYPES.length;\n\n\n// MAIN //\n\n/**\n* Returns the data type of an array.\n*\n* @param {*} value - input value\n* @returns {(string|null)} data type\n*\n* @example\n* var dt = dtype( [ 1, 2, 3 ] );\n* // returns 'generic'\n*\n* var dt = dtype( 'beep' );\n* // returns null\n*/\nfunction dtype( value ) {\n\tvar i;\n\tif ( isArray( value ) ) {\n\t\treturn 'generic';\n\t}\n\tif ( isBuffer( value ) ) {\n\t\treturn null;\n\t}\n\tfor ( i = 0; i < NTYPES; i++ ) {\n\t\tif ( value instanceof CTORS[ i ] ) {\n\t\t\treturn DTYPES[ i ];\n\t\t}\n\t}\n\t// If the above failed, fall back to a more robust (and significantly slower) means for resolving underlying data types:\n\treturn ctor2dtype[ constructorName( value ) ] || null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = dtype;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the data type of an array.\n*\n* @module @stdlib/array/dtype\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var dtype = require( '@stdlib/array/dtype' );\n*\n* var arr = new Float64Array( 10 );\n*\n* var dt = dtype( arr );\n* // returns 'float64'\n*\n* dt = dtype( {} );\n* // returns null\n*\n* dt = dtype( 'beep' );\n* // returns null\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isAccessorArray = require( './../../../base/assert/is-accessor-array' );\nvar getter = require( './../../../base/getter' );\nvar setter = require( './../../../base/setter' );\nvar accessorGetter = require( './../../../base/accessor-getter' );\nvar accessorSetter = require( './../../../base/accessor-setter' );\nvar dtype = require( './../../../dtype' );\n\n\n// MAIN //\n\n/**\n* Returns element accessors for a provided array-like object.\n*\n* ## Notes\n*\n* -   The returned object has the following properties:\n*\n*     -   **accessorProtocol**: `boolean` indicating whether the provided array-like object supports the get/set protocol (i.e., uses accessors for getting and setting elements).\n*     -   **accessors**: a two-element array whose first element is an accessor for retrieving an array element and whose second element is an accessor for setting an array element.\n*\n* @param {Collection} x - array-like object\n* @returns {Object} object containing accessor data\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n* var obj = accessors( x );\n* // returns {...}\n*\n* var bool = obj.accessorProtocol;\n* // returns false\n*\n* var fcns = obj.accessors;\n* // returns [ <Function>, <Function> ]\n*\n* var v = fcns[ 0 ]( x, 2 );\n* // returns 3\n*/\nfunction accessors( x ) {\n\tvar dt = dtype( x );\n\tif ( isAccessorArray( x ) ) {\n\t\treturn {\n\t\t\t'accessorProtocol': true,\n\t\t\t'accessors': [\n\t\t\t\taccessorGetter( dt ),\n\t\t\t\taccessorSetter( dt )\n\t\t\t]\n\t\t};\n\t}\n\treturn {\n\t\t'accessorProtocol': false,\n\t\t'accessors': [\n\t\t\tgetter( dt ),\n\t\t\tsetter( dt )\n\t\t]\n\t};\n}\n\n\n// EXPORTS //\n\nmodule.exports = accessors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return element accessors for a provided array-like object.\n*\n* @module @stdlib/array/base/accessors\n*\n* @example\n* var accessors = require( '@stdlib/array/base/accessors' );\n*\n* var x = [ 1, 2, 3, 4 ];\n* var obj = accessors( x );\n* // returns {...}\n*\n* var bool = obj.accessorProtocol;\n* // returns false\n*\n* var fcns = obj.accessors;\n* // returns [ <Function>, <Function> ]\n*\n* var v = fcns[ 0 ]( x, 2 );\n* // returns 3\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable no-restricted-syntax, no-invalid-this */\n\n'use strict';\n\n// MODULES //\n\nvar setReadWriteAccessor = require( '@stdlib/utils/define-nonenumerable-read-write-accessor' );\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar accessors = require( './../../../base/accessors' );\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar format = require( '@stdlib/string/format' );\n\n\n// FUNCTIONS //\n\n/**\n* Sets the length of an array-like object.\n*\n* @private\n* @param {NonNegativeInteger} len - length\n*/\nfunction setLength( len ) {\n\tthis._buffer.length = len;\n}\n\n/**\n* Returns the length of an array-like object.\n*\n* @private\n* @returns {NonNegativeInteger} length\n*/\nfunction getLength() {\n\treturn this._buffer.length;\n}\n\n\n// MAIN //\n\n/**\n* Creates a minimal array-like object supporting the accessor protocol from another array-like object.\n*\n* @constructor\n* @param {Collection} arr - input array\n* @throws {TypeError} must provide an array-like object\n* @returns {AccessorArray} accessor array instance\n*\n* @example\n* var arr = new AccessorArray( [ 1, 2, 3 ] );\n* // returns <AccessorArray>\n*\n* var v = arr.get( 0 );\n* // returns 1\n*/\nfunction AccessorArray( arr ) {\n\tvar o;\n\tif ( !(this instanceof AccessorArray) ) {\n\t\treturn new AccessorArray( arr );\n\t}\n\tif ( !isCollection( arr ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide an array-like object. Value: `%s`.', arr ) );\n\t}\n\to = accessors( arr );\n\tthis._buffer = arr;\n\tthis._getter = o.accessors[ 0 ];\n\tthis._setter = o.accessors[ 1 ];\n\treturn this;\n}\n\n/**\n* Constructor name.\n*\n* @name name\n* @memberof AccessorArray\n* @readonly\n* @type {string}\n* @default 'AccessorArray'\n*\n* @example\n* var name = AccessorArray.name;\n* // returns 'AccessorArray'\n*/\nsetReadOnly( AccessorArray, 'name', 'AccessorArray' );\n\n/**\n* Read/write accessor for getting/setting the number of elements.\n*\n* @name length\n* @memberof AccessorArray.prototype\n* @type {NonNegativeInteger}\n*/\nsetReadWriteAccessor( AccessorArray.prototype, 'length', getLength, setLength );\n\n/**\n* Returns an element.\n*\n* @name get\n* @memberof AccessorArray.prototype\n* @type {Function}\n* @param {integer} idx - element index\n* @returns {*} element\n*\n* @example\n* var arr = new AccessorArray( [ 1, 2, 3 ] );\n* // returns <AccessorArray>\n*\n* var v = arr.get( 0 );\n* // returns 1\n*/\nsetReadOnly( AccessorArray.prototype, 'get', function get( idx ) {\n\treturn this._getter( this._buffer, idx );\n});\n\n/**\n* Sets one or more elements.\n*\n* @name set\n* @memberof AccessorArray.prototype\n* @type {Function}\n* @param {*} value - value to set\n* @param {integer} [idx] - element index\n* @returns {void}\n*\n* @example\n* var arr = new AccessorArray( [ 1, 2, 3 ] );\n* // returns <AccessorArray>\n*\n* var v = arr.get( 0 );\n* // returns 1\n*\n* arr.set( 5, 0 );\n*\n* v = arr.get( 0 );\n* // returns 5\n*/\nsetReadOnly( AccessorArray.prototype, 'set', function set( value, idx ) {\n\tif ( arguments.length < 2 ) {\n\t\tthis._setter( this._buffer, 0, value );\n\t\treturn;\n\t}\n\tthis._setter( this._buffer, idx, value );\n});\n\n\n// EXPORTS //\n\nmodule.exports = AccessorArray;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a minimal array-like object supporting the accessor protocol from another array-like object.\n*\n* @module @stdlib/array/base/accessor\n*\n* @example\n* var AccessorArray = require( '@stdlib/array/base/accessor' );\n*\n* var arr = new AccessorArray( [ 1, 2, 3 ] );\n* // returns <AccessorArray>\n*\n* var v = arr.get( 0 );\n* // returns 1\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar accessors = require( './../../../base/accessors' );\n\n\n// MAIN //\n\n/**\n* Converts an array-like to an object likely to have the same \"shape\".\n*\n* ## Notes\n*\n* -   This function is intended as a potential performance optimization. In V8, for example, even if two objects share common properties, if those properties were added in different orders or if one object has additional properties not shared by the other object, then those objects will have different \"hidden\" classes. If a function is provided many objects having different \"shapes\", some JavaScript VMs (e.g., V8) will consider the function \"megamorphic\" and fail to perform various runtime optimizations. Accordingly, the intent of this function is to standardize the \"shape\" of the object holding array meta data to ensure that internal functions operating on arrays are provided consistent argument \"shapes\".\n*\n* -   The returned object has the following properties:\n*\n*     -   **data**: reference to the input array.\n*     -   **accessorProtocol**: `boolean` indicating whether the input array uses accessors for getting and setting elements.\n*     -   **accessors**: a two-element array whose first element is an accessor for retrieving an array element and whose second element is an accessor for setting an array element.\n*\n* @param {Collection} x - array-like object\n* @returns {Object} object containing array meta data\n*\n* @example\n* var obj = arraylike2object( [ 1, 2, 3, 4 ] );\n* // returns {...}\n*/\nfunction arraylike2object( x ) {\n\tvar o = accessors( x );\n\treturn {\n\t\t'data': x,\n\t\t'accessorProtocol': o.accessorProtocol,\n\t\t'accessors': o.accessors\n\t};\n}\n\n\n// EXPORTS //\n\nmodule.exports = arraylike2object;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert an array-like object to an object likely to have the same \"shape\".\n*\n* @module @stdlib/array/base/arraylike2object\n*\n* @example\n* var arraylike2object = require( '@stdlib/array/base/arraylike2object' );\n*\n* var obj = arraylike2object( [ 1, 2, 3, 4 ] );\n* // returns {...}\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isAccessorArray = require( './../../../../base/assert/is-accessor-array' );\nvar accessorGetter = require( './../../../../base/accessor-getter' );\nvar getter = require( './../../../../base/getter' );\nvar dtype = require( './../../../../dtype' );\n\n\n// MAIN //\n\n/**\n* Tests if an array contains a provided search value.\n*\n* @param {Collection} x - input array\n* @param {*} value - search value\n* @returns {boolean} boolean indicating if an array contains a search value\n*\n* @example\n* var out = contains( [ 1, 2, 3 ], 2 );\n* // returns true\n*/\nfunction contains( x, value ) {\n\tvar len;\n\tvar get;\n\tvar dt;\n\tvar i;\n\n\t// Resolve the input array data type:\n\tdt = dtype( x );\n\n\t// Resolve an accessor for retrieving input array elements:\n\tif ( isAccessorArray( x ) ) {\n\t\tget = accessorGetter( dt );\n\t} else {\n\t\tget = getter( dt );\n\t}\n\t// Get the number of elements over which to iterate:\n\tlen = x.length;\n\n\t// Loop over the elements...\n\tfor ( i = 0; i < len; i++ ) {\n\t\tif ( get( x, i ) === value ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = contains;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isAccessorArray = require( './../../../../base/assert/is-accessor-array' );\nvar accessorGetter = require( './../../../../base/accessor-getter' );\nvar dtype = require( './../../../../dtype' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Returns a function to tests if an array contains a provided search value.\n*\n* @param {Collection} x - input array\n* @throws {TypeError} must provide an array-like object\n* @returns {Function} function to test if an array contains a search value\n*\n* @example\n* var contains = factory( [ 1, 2, 3 ] );\n* // returns <Function>\n*\n* var bool = contains( 2 );\n* // returns true\n*/\nfunction factory( x ) {\n\tvar get;\n\tvar len;\n\tvar dt;\n\n\tif ( !isCollection( x ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide an array-like object. Value: `%s`.', x ) );\n\t}\n\t// Resolve the input array data type:\n\tdt = dtype( x );\n\n\t// Resolve an accessor for retrieving input array elements:\n\tif ( isAccessorArray( x ) ) {\n\t\tget = accessorGetter( dt );\n\t}\n\t// Get the number of elements over which to iterate:\n\tlen = x.length;\n\n\treturn ( get === void 0 ) ? contains : accessors;\n\t/**\n\t* Tests if an array contains a provided search value.\n\t*\n\t* @private\n\t* @param {*} value - search value\n\t* @returns {boolean} boolean indicating if an array contains a search value\n\t*\n\t* @example\n\t* var out = contains( [ 1, 2, 3 ], 2 );\n\t* // returns true\n\t*/\n\tfunction contains( value ) {\n\t\tvar i;\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tif ( x[ i ] === value ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\t/**\n\t* Tests if an array contains a provided search value.\n\t*\n\t* @private\n\t* @param {*} value - search value\n\t* @returns {boolean} boolean indicating if an array contains a search value\n\t*/\n\tfunction accessors( value ) {\n\t\tvar i;\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tif ( get( x, i ) === value ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = factory;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test if an array contains a provided search value.\n*\n* @module @stdlib/array/base/assert/contains\n*\n* @example\n* var contains = require( '@stdlib/array/base/assert/contains' );\n*\n* var out = contains( [ 1, 2, 3 ], 2 );\n* // returns true\n*/\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar factory = require( './factory.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'factory', factory );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n\n// exports: { \"factory\": \"main.factory\" }\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/*\n* When adding modules to the namespace, ensure that they are added in alphabetical order according to module name.\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-read-only-property' );\n\n\n// MAIN //\n\n/**\n* Namespace.\n*\n* @namespace ns\n*/\nvar ns = {};\n\n/**\n* @name contains\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/assert/contains}\n*/\nsetReadOnly( ns, 'contains', require( './../../../base/assert/contains' ) );\n\n/**\n* @name isAccessorArray\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/assert/is-accessor-array}\n*/\nsetReadOnly( ns, 'isAccessorArray', require( './../../../base/assert/is-accessor-array' ) );\n\n/**\n* @name isComplex64Array\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/assert/is-complex64array}\n*/\nsetReadOnly( ns, 'isComplex64Array', require( './../../../base/assert/is-complex64array' ) );\n\n/**\n* @name isComplex128Array\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/assert/is-complex128array}\n*/\nsetReadOnly( ns, 'isComplex128Array', require( './../../../base/assert/is-complex128array' ) );\n\n\n// EXPORTS //\n\nmodule.exports = ns;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isAccessorArray = require( './../../../base/assert/is-accessor-array' );\nvar accessorGetter = require( './../../../base/accessor-getter' );\nvar getter = require( './../../../base/getter' );\nvar dtype = require( './../../../dtype' );\n\n\n// MAIN //\n\n/**\n* Returns an accessor function for retrieving an element from an array-like object.\n*\n* @param {Collection} x - input array\n* @returns {Function} accessor\n*\n* @example\n* var arr = [ 1, 2, 3, 4 ];\n*\n* var get = resolveGetter( arr );\n* var v = get( arr, 2 );\n* // returns 3\n*/\nfunction resolveGetter( x ) {\n\tvar dt = dtype( x );\n\tif ( isAccessorArray( x ) ) {\n\t\treturn accessorGetter( dt );\n\t}\n\treturn getter( dt );\n}\n\n\n// EXPORTS //\n\nmodule.exports = resolveGetter;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return an accessor function for retrieving an element from an array-like object.\n*\n* @module @stdlib/array/base/resolve-getter\n*\n* @example\n* var resolveGetter = require( '@stdlib/array/base/resolve-getter' );\n*\n* var arr = [ 1, 2, 3, 4 ];\n*\n* var get = resolveGetter( arr );\n* var v = get( arr, 2 );\n* // returns 3\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Splits array element entries into two groups.\n*\n* @param {Collection} x - input array\n* @param {Collection} filter - array indicating which group an element in the input array belongs to\n* @throws {RangeError} must provide arrays having the same length\n* @returns {ArrayArray} results\n*\n* @example\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n* var filter = [ true, true, false, true ];\n*\n* var out = bifurcateEntries( x, filter );\n* // returns [ [ [ 0, 'beep' ], [ 1, 'boop' ], [ 3, 'bar' ] ], [ [ 2, 'foo' ] ] ]\n*/\nfunction bifurcateEntries( x, filter ) {\n\tvar xget;\n\tvar gget;\n\tvar len;\n\tvar out;\n\tvar g;\n\tvar v;\n\tvar i;\n\n\t// Get the number of elements to group:\n\tlen = x.length;\n\tif ( filter.length !== len ) {\n\t\tthrow new RangeError( 'invalid argument. The first and second arguments must have the same length.' );\n\t}\n\tif ( len === 0 ) {\n\t\treturn [];\n\t}\n\t// Resolve accessors for retrieving array elements:\n\txget = resolveGetter( x );\n\tgget = resolveGetter( filter );\n\n\t// Loop over the elements and assign each to a group...\n\tout = [ [], [] ];\n\tfor ( i = 0; i < len; i++ ) {\n\t\tv = xget( x, i );\n\t\tg = gget( filter, i );\n\t\tif ( g ) {\n\t\t\tout[ 0 ].push( [ i, v ] );\n\t\t} else {\n\t\t\tout[ 1 ].push( [ i, v ] );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = bifurcateEntries;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Split array element entries into two groups.\n*\n* @module @stdlib/array/base/bifurcate-entries\n*\n* @example\n* var bifurcateEntries = require( '@stdlib/array/base/bifurcate-entries' );\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n* var filter = [ true, true, false, true ];\n*\n* var out = bifurcateEntries( x, filter );\n* // returns [ [ [ 0, 'beep' ], [ 1, 'boop' ], [ 3, 'bar' ] ], [ [ 2, 'foo' ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Splits element entries into two groups according to a predicate function.\n*\n* @param {Collection} x - input array\n* @param {Function} predicate - predicate function specifying which group an element in the input collection belongs to\n* @param {*} [thisArg] - predicate function execution context\n* @returns {Object} group results\n*\n* @example\n* function predicate( v ) {\n*     return v[ 0 ] === 'b';\n* }\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n*\n* var out = bifurcateEntriesBy( x, predicate );\n* // returns [ [ [ 0, 'beep' ], [ 1, 'boop' ], [ 3, 'bar' ] ], [ [ 2, 'foo' ] ] ]\n*/\nfunction bifurcateEntriesBy( x, predicate, thisArg ) {\n\tvar get;\n\tvar len;\n\tvar out;\n\tvar v;\n\tvar i;\n\n\t// Get the number of elements to group:\n\tlen = x.length;\n\tif ( len === 0 ) {\n\t\treturn [];\n\t}\n\t// Resolve an accessor for retrieving array elements:\n\tget = resolveGetter( x );\n\n\t// Loop over the elements and assign each to a group...\n\tout = [ [], [] ];\n\tfor ( i = 0; i < len; i++ ) {\n\t\tv = get( x, i );\n\t\tif ( predicate.call( thisArg, v, i, x ) ) {\n\t\t\tout[ 0 ].push( [ i, v ] );\n\t\t} else {\n\t\t\tout[ 1 ].push( [ i, v ] );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = bifurcateEntriesBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Split element entries into two groups according to a predicate function.\n*\n* @module @stdlib/array/base/bifurcate-entries-by\n*\n* @example\n* var bifurcateEntriesBy = require( '@stdlib/array/base/bifurcate-entries-by' );\n*\n* function predicate( v ) {\n*     return v[ 0 ] === 'b';\n* }\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n*\n* var out = bifurcateEntriesBy( x, predicate );\n* // returns [ [ [ 0, 'beep' ], [ 1, 'boop' ], [ 3, 'bar' ] ], [ [ 2, 'foo' ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Splits array element indices into two groups.\n*\n* @param {Collection} x - input array\n* @param {Collection} filter - array indicating which group an element in the input array belongs to\n* @throws {RangeError} must provide arrays having the same length\n* @returns {ArrayArray} results\n*\n* @example\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n* var filter = [ true, true, false, true ];\n*\n* var out = bifurcateIndices( x, filter );\n* // returns [ [ 0, 1, 3 ], [ 2 ] ]\n*/\nfunction bifurcateIndices( x, filter ) {\n\tvar gget;\n\tvar len;\n\tvar out;\n\tvar g;\n\tvar i;\n\n\t// Get the number of elements to group:\n\tlen = x.length;\n\tif ( filter.length !== len ) {\n\t\tthrow new RangeError( 'invalid argument. The first and second arguments must have the same length.' );\n\t}\n\tif ( len === 0 ) {\n\t\treturn [];\n\t}\n\t// Resolve accessors for retrieving array elements:\n\tgget = resolveGetter( filter );\n\n\t// Loop over the elements and assign each to a group...\n\tout = [ [], [] ];\n\tfor ( i = 0; i < len; i++ ) {\n\t\tg = gget( filter, i );\n\t\tif ( g ) {\n\t\t\tout[ 0 ].push( i );\n\t\t} else {\n\t\t\tout[ 1 ].push( i );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = bifurcateIndices;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Split array element indices into two groups.\n*\n* @module @stdlib/array/base/bifurcate-indices\n*\n* @example\n* var bifurcateIndices = require( '@stdlib/array/base/bifurcate-indices' );\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n* var filter = [ true, true, false, true ];\n*\n* var out = bifurcateIndices( x, filter );\n* // returns [ [ 0, 1, 3 ], [ 2 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Splits element indices into two groups according to a predicate function.\n*\n* @param {Collection} x - input array\n* @param {Function} predicate - predicate function specifying which group an element in the input collection belongs to\n* @param {*} [thisArg] - predicate function execution context\n* @returns {Object} group results\n*\n* @example\n* function predicate( v ) {\n*     return v[ 0 ] === 'b';\n* }\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n*\n* var out = bifurcateIndicesBy( x, predicate );\n* // returns [ [ 0, 1, 3 ], [ 2 ] ]\n*/\nfunction bifurcateIndicesBy( x, predicate, thisArg ) {\n\tvar get;\n\tvar len;\n\tvar out;\n\tvar i;\n\n\t// Get the number of elements to group:\n\tlen = x.length;\n\tif ( len === 0 ) {\n\t\treturn [];\n\t}\n\t// Resolve an accessor for retrieving array elements:\n\tget = resolveGetter( x );\n\n\t// Loop over the elements and assign each to a group...\n\tout = [ [], [] ];\n\tfor ( i = 0; i < len; i++ ) {\n\t\tif ( predicate.call( thisArg, get( x, i ), i, x ) ) {\n\t\t\tout[ 0 ].push( i );\n\t\t} else {\n\t\t\tout[ 1 ].push( i );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = bifurcateIndicesBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Split element indices into two groups according to a predicate function.\n*\n* @module @stdlib/array/base/bifurcate-indices-by\n*\n* @example\n* var bifurcateIndicesBy = require( '@stdlib/array/base/bifurcate-indices-by' );\n*\n* function predicate( v ) {\n*     return v[ 0 ] === 'b';\n* }\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n*\n* var out = bifurcateIndicesBy( x, predicate );\n* // returns [ [ 0, 1, 3 ], [ 2 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Splits array element values into two groups.\n*\n* @param {Collection} x - input array\n* @param {Collection} filter - array indicating which group an element in the input array belongs to\n* @throws {RangeError} must provide arrays having the same length\n* @returns {ArrayArray} results\n*\n* @example\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n* var filter = [ true, true, false, true ];\n*\n* var out = bifurcateValues( x, filter );\n* // returns [ [ 'beep', 'boop', 'bar' ], [ 'foo' ] ]\n*/\nfunction bifurcateValues( x, filter ) {\n\tvar xget;\n\tvar gget;\n\tvar len;\n\tvar out;\n\tvar g;\n\tvar v;\n\tvar i;\n\n\t// Get the number of elements to group:\n\tlen = x.length;\n\tif ( filter.length !== len ) {\n\t\tthrow new RangeError( 'invalid argument. The first and second arguments must have the same length.' );\n\t}\n\tif ( len === 0 ) {\n\t\treturn [];\n\t}\n\t// Resolve accessors for retrieving array elements:\n\txget = resolveGetter( x );\n\tgget = resolveGetter( filter );\n\n\t// Loop over the elements and assign each to a group...\n\tout = [ [], [] ];\n\tfor ( i = 0; i < len; i++ ) {\n\t\tv = xget( x, i );\n\t\tg = gget( filter, i );\n\t\tif ( g ) {\n\t\t\tout[ 0 ].push( v );\n\t\t} else {\n\t\t\tout[ 1 ].push( v );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = bifurcateValues;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Split array element values into two groups.\n*\n* @module @stdlib/array/base/bifurcate-values\n*\n* @example\n* var bifurcateValues = require( '@stdlib/array/base/bifurcate-values' );\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n* var filter = [ true, true, false, true ];\n*\n* var out = bifurcateValues( x, filter );\n* // returns [ [ 'beep', 'boop', 'bar' ], [ 'foo' ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Splits element values into two groups according to a predicate function.\n*\n* @param {Collection} x - input array\n* @param {Function} predicate - predicate function specifying which group an element in the input collection belongs to\n* @param {*} [thisArg] - predicate function execution context\n* @returns {Object} group results\n*\n* @example\n* function predicate( v ) {\n*     return v[ 0 ] === 'b';\n* }\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n*\n* var out = bifurcateValuesBy( x, predicate );\n* // returns [ [ 'beep', 'boop', 'bar' ], [ 'foo' ] ]\n*/\nfunction bifurcateValuesBy( x, predicate, thisArg ) {\n\tvar get;\n\tvar len;\n\tvar out;\n\tvar v;\n\tvar i;\n\n\t// Get the number of elements to group:\n\tlen = x.length;\n\tif ( len === 0 ) {\n\t\treturn [];\n\t}\n\t// Resolve an accessor for retrieving array elements:\n\tget = resolveGetter( x );\n\n\t// Loop over the elements and assign each to a group...\n\tout = [ [], [] ];\n\tfor ( i = 0; i < len; i++ ) {\n\t\tv = get( x, i );\n\t\tif ( predicate.call( thisArg, v, i, x ) ) {\n\t\t\tout[ 0 ].push( v );\n\t\t} else {\n\t\t\tout[ 1 ].push( v );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = bifurcateValuesBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Split element values into two groups according to a predicate function.\n*\n* @module @stdlib/array/base/bifurcate-values-by\n*\n* @example\n* var bifurcateValuesBy = require( '@stdlib/array/base/bifurcate-values-by' );\n*\n* function predicate( v ) {\n*     return v[ 0 ] === 'b';\n* }\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n*\n* var out = bifurcateValuesBy( x, predicate );\n* // returns [ [ 'beep', 'boop', 'bar' ], [ 'foo' ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a binary callback to elements in two two-dimensional nested input arrays and assigns results to elements in a two-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing two input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - binary callback\n* @returns {void}\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = ones2d( shape );\n* var z = zeros2d( shape );\n*\n* binary2d( [ x, y, z ], shape, add );\n*\n* console.log( z );\n* // => [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ]\n*/\nfunction binary2d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar x;\n\tvar y;\n\tvar z;\n\n\tS0 = shape[ 1 ];\n\tS1 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tx0 = x[ i1 ];\n\t\ty0 = y[ i1 ];\n\t\tz0 = z[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tz0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ] );\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = binary2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a binary callback to elements in two two-dimensional nested input arrays and assign results to elements in a two-dimensional nested output array.\n*\n* @module @stdlib/array/base/binary2d\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n* var binary2d = require( '@stdlib/array/base/binary2d' );\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = ones2d( shape );\n* var z = zeros2d( shape );\n*\n* binary2d( [ x, y, z ], shape, add );\n*\n* console.log( z );\n* // => [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a binary callback to elements in two three-dimensional nested input arrays and assigns results to elements in a three-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array>} arrays - array-like object containing two input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - binary callback\n* @returns {void}\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n*\n* var shape = [ 2, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = ones3d( shape );\n* var z = zeros3d( shape );\n*\n* binary3d( [ x, y, z ], shape, add );\n*\n* console.log( z );\n* // => [ [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ], [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ] ]\n*/\nfunction binary3d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar x0;\n\tvar x1;\n\tvar y0;\n\tvar y1;\n\tvar z0;\n\tvar z1;\n\tvar x;\n\tvar y;\n\tvar z;\n\n\tS0 = shape[ 2 ];\n\tS1 = shape[ 1 ];\n\tS2 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\tx1 = x[ i2 ];\n\t\ty1 = y[ i2 ];\n\t\tz1 = z[ i2 ];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\tx0 = x1[ i1 ];\n\t\t\ty0 = y1[ i1 ];\n\t\t\tz0 = z1[ i1 ];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\tz0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ] );\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = binary3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a binary callback to elements in two three-dimensional nested input arrays and assign results to elements in a three-dimensional nested output array.\n*\n* @module @stdlib/array/base/binary3d\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n* var binary3d = require( '@stdlib/array/base/binary3d' );\n*\n* var shape = [ 2, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = ones3d( shape );\n* var z = zeros3d( shape );\n*\n* binary3d( [ x, y, z ], shape, add );\n*\n* console.log( z );\n* // => [ [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ], [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a binary callback to elements in two four-dimensional nested input arrays and assigns results to elements in a four-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing two input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - binary callback\n* @returns {void}\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n*\n* var shape = [ 1, 2, 2, 2 ];\n*\n* var x = ones4d( shape );\n* var y = ones4d( shape );\n* var z = zeros4d( shape );\n*\n* binary4d( [ x, y, z ], shape, add );\n*\n* console.log( z );\n* // => [ [ [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ], [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ] ] ]\n*/\nfunction binary4d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar x0;\n\tvar x1;\n\tvar x2;\n\tvar y0;\n\tvar y1;\n\tvar y2;\n\tvar z0;\n\tvar z1;\n\tvar z2;\n\tvar x;\n\tvar y;\n\tvar z;\n\n\tS0 = shape[ 3 ];\n\tS1 = shape[ 2 ];\n\tS2 = shape[ 1 ];\n\tS3 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\tx2 = x[ i3 ];\n\t\ty2 = y[ i3 ];\n\t\tz2 = z[ i3 ];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\tx1 = x2[ i2 ];\n\t\t\ty1 = y2[ i2 ];\n\t\t\tz1 = z2[ i2 ];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tx0 = x1[ i1 ];\n\t\t\t\ty0 = y1[ i1 ];\n\t\t\t\tz0 = z1[ i1 ];\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\tz0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = binary4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a binary callback to elements in two four-dimensional nested input arrays and assign results to elements in a four-dimensional nested output array.\n*\n* @module @stdlib/array/base/binary4d\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n* var binary4d = require( '@stdlib/array/base/binary4d' );\n*\n* var shape = [ 1, 2, 2, 2 ];\n*\n* var x = ones4d( shape );\n* var y = ones4d( shape );\n* var z = zeros4d( shape );\n*\n* binary4d( [ x, y, z ], shape, add );\n*\n* console.log( z );\n* // => [ [ [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ], [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a binary callback to elements in two five-dimensional nested input arrays and assigns results to elements in a five-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing two input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - binary callback\n* @returns {void}\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n*\n* var shape = [ 1, 1, 2, 2, 2 ];\n*\n* var x = ones5d( shape );\n* var y = ones5d( shape );\n* var z = zeros5d( shape );\n*\n* binary5d( [ x, y, z ], shape, add );\n*\n* console.log( z );\n* // => [ [ [ [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ], [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ] ] ] ]\n*/\nfunction binary5d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar x0;\n\tvar x1;\n\tvar x2;\n\tvar x3;\n\tvar y0;\n\tvar y1;\n\tvar y2;\n\tvar y3;\n\tvar z0;\n\tvar z1;\n\tvar z2;\n\tvar z3;\n\tvar x;\n\tvar y;\n\tvar z;\n\n\tS0 = shape[ 4 ];\n\tS1 = shape[ 3 ];\n\tS2 = shape[ 2 ];\n\tS3 = shape[ 1 ];\n\tS4 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 || S4 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\tx3 = x[ i4 ];\n\t\ty3 = y[ i4 ];\n\t\tz3 = z[ i4 ];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\tx2 = x3[ i3 ];\n\t\t\ty2 = y3[ i3 ];\n\t\t\tz2 = z3[ i3 ];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\tx1 = x2[ i2 ];\n\t\t\t\ty1 = y2[ i2 ];\n\t\t\t\tz1 = z2[ i2 ];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\tx0 = x1[ i1 ];\n\t\t\t\t\ty0 = y1[ i1 ];\n\t\t\t\t\tz0 = z1[ i1 ];\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\tz0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = binary5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a binary callback to elements in two five-dimensional nested input arrays and assign results to elements in a five-dimensional nested output array.\n*\n* @module @stdlib/array/base/binary5d\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n* var binary5d = require( '@stdlib/array/base/binary5d' );\n*\n* var shape = [ 1, 1, 2, 2, 2 ];\n*\n* var x = ones5d( shape );\n* var y = ones5d( shape );\n* var z = zeros5d( shape );\n*\n* binary5d( [ x, y, z ], shape, add );\n*\n* console.log( z );\n* // => [ [ [ [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ], [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// FUNCTIONS //\n\n/**\n* Recursively applies a binary callback.\n*\n* @private\n* @param {ArrayLikeObject} x - input array\n* @param {ArrayLikeObject} y - input array\n* @param {ArrayLikeObject} z - output array\n* @param {NonNegativeInteger} ndims - number of dimensions\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {NonNegativeInteger} dim - dimension index\n* @param {Callback} fcn - binary callback\n* @returns {void}\n*/\nfunction recurse( x, y, z, ndims, shape, dim, fcn ) {\n\tvar S;\n\tvar d;\n\tvar i;\n\n\tS = shape[ dim ];\n\n\t// Check whether we've reached the innermost dimension:\n\td = dim + 1;\n\n\tif ( d === ndims ) {\n\t\t// Apply the provided callback...\n\t\tfor ( i = 0; i < S; i++ ) {\n\t\t\tz[ i ] = fcn( x[ i ], y[ i ] );\n\t\t}\n\t\treturn;\n\t}\n\t// Continue recursing into the nested arrays...\n\tfor ( i = 0; i < S; i++ ) {\n\t\trecurse( x[ i ], y[ i ], z[ i ], ndims, shape, d, fcn );\n\t}\n}\n\n\n// MAIN //\n\n/**\n* Applies a binary callback to elements in two n-dimensional nested input arrays and assigns results to elements in an n-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject} arrays - array-like object containing two input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - binary callback\n* @returns {void}\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add' );\n* var onesnd = require( '@stdlib/array/base/onesnd' );\n* var zerosnd = require( '@stdlib/array/base/zerosnd' );\n*\n* var shape = [ 2, 2 ];\n*\n* var x = onesnd( shape );\n* var y = onesnd( shape );\n* var z = zerosnd( shape );\n*\n* binarynd( [ x, y, z ], shape, add );\n*\n* console.log( z );\n* // => [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ]\n*/\nfunction binarynd( arrays, shape, fcn ) {\n\treturn recurse( arrays[ 0 ], arrays[ 1 ], arrays[ 2 ], shape.length, shape, 0, fcn ); // eslint-disable-line max-len\n}\n\n\n// EXPORTS //\n\nmodule.exports = binarynd;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a binary callback to elements in an n-dimensional nested input array and assign results to elements in an n-dimensional nested output array.\n*\n* @module @stdlib/array/base/binarynd\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add' );\n* var onesnd = require( '@stdlib/array/base/onesnd' );\n* var zerosnd = require( '@stdlib/array/base/zerosnd' );\n* var binarynd = require( '@stdlib/array/base/binarynd' );\n*\n* var shape = [ 2, 2 ];\n*\n* var x = onesnd( shape );\n* var y = onesnd( shape );\n* var z = zerosnd( shape );\n*\n* binarynd( [ x, y, z ], shape, add );\n*\n* console.log( z );\n* // => [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Copies the elements of an indexed array-like object to a new \"generic\" array.\n*\n* @param {Collection} x - input array\n* @returns {Array} output array\n*\n* @example\n* var out = copy( [ 1, 2, 3 ] );\n* // returns [ 1, 2, 3 ]\n*/\nfunction copy( x ) {\n\tvar out;\n\tvar len;\n\tvar i;\n\n\tlen = x.length;\n\tout = [];\n\tfor ( i = 0; i < len; i++ ) {\n\t\tout.push( x[ i ] ); // use `Array#push` to ensure \"fast\" elements\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = copy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Copy the elements of an indexed array-like object to a new \"generic\" array.\n*\n* @module @stdlib/array/base/copy-indexed\n*\n* @example\n* var copy = require( '@stdlib/array/base/copy-indexed' );\n*\n* var out = copy( [ 1, 2, 3 ] );\n* // returns [ 1, 2, 3 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Returns a filled \"generic\" array.\n*\n* @param {*} value - fill value\n* @param {NonNegativeInteger} len - array length\n* @returns {Array} filled array\n*\n* @example\n* var out = filled( 0.0, 3 );\n* // returns [ 0.0, 0.0, 0.0 ]\n*\n* @example\n* var out = filled( 'beep', 3 );\n* // returns [ 'beep', 'beep', 'beep' ]\n*/\nfunction filled( value, len ) {\n\tvar arr;\n\tvar i;\n\n\t// Manually push elements in order to ensure \"fast\" elements...\n\tarr = [];\n\tfor ( i = 0; i < len; i++ ) {\n\t\tarr.push( value );\n\t}\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = filled;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled \"generic\" array.\n*\n* @module @stdlib/array/base/filled\n*\n* @example\n* var filled = require( '@stdlib/array/base/filled' );\n*\n* var out = filled( 0.0, 3 );\n* // returns [ 0.0, 0.0, 0.0 ]\n*\n* @example\n* var filled = require( '@stdlib/array/base/filled' );\n*\n* var out = filled( 'beep', 3 );\n* // returns [ 'beep', 'beep', 'beep' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled = require( './../../../base/filled' );\n\n\n// MAIN //\n\n/**\n* Returns a zero-filled \"generic\" array.\n*\n* @param {NonNegativeInteger} len - array length\n* @returns {Array} output array\n*\n* @example\n* var out = zeros( 3 );\n* // returns [ 0.0, 0.0, 0.0 ]\n*/\nfunction zeros( len ) {\n\treturn filled( 0.0, len );\n}\n\n\n// EXPORTS //\n\nmodule.exports = zeros;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a zero-filled \"generic\" array.\n*\n* @module @stdlib/array/base/zeros\n*\n* @example\n* var zeros = require( '@stdlib/array/base/zeros' );\n*\n* var out = zeros( 3 );\n* // returns [ 0.0, 0.0, 0.0 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar copy = require( './../../../base/copy-indexed' );\nvar zeros = require( './../../../base/zeros' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Broadcasts an array to a specified shape.\n*\n* @param {Collection} x - input array\n* @param {NonNegativeIntegerArray} inShape - input array shape\n* @param {NonNegativeIntegerArray} outShape - output array shape\n* @throws {Error} input array cannot have more dimensions than the desired shape\n* @throws {Error} input array dimension sizes must be `1` or equal to the corresponding dimension in the provided output shape\n* @throws {Error} input array and desired shape must be broadcast compatible\n* @returns {Object} broadcast object\n*\n* @example\n* var x = [ 1, 2 ];\n*\n* var out = broadcastArray( x, [ 2 ], [ 2, 2 ] );\n* // returns {...}\n*\n* var shape = out.shape;\n* // returns [ 2, 2 ]\n*\n* var strides = out.strides;\n* // returns [ 0, 1 ]\n*\n* var ref = out.ref;\n* // returns [ 1, 2 ]\n*\n* var bool = ( x === ref );\n* // returns true\n*\n* var data = out.data;\n* // returns [ [ 1, 2 ] ]\n*\n* @example\n* var x = [ 1, 2 ];\n*\n* var out = broadcastArray( x, [ 2 ], [ 2, 1, 2 ] );\n* // returns {...}\n*\n* var data = out.data;\n* // returns [ [ [ 1, 2 ] ] ]\n*\n* var strides = out.strides;\n* // returns [ 0, 0, 1 ]\n*\n* @example\n* var x = [ [ 1 ], [ 2 ] ];\n*\n* var out = broadcastArray( x, [ 2, 1 ], [ 3, 2, 2 ] );\n* // returns {...}\n*\n* var data = out.data;\n* // returns [ [ [ 1 ], [ 2 ] ] ]\n*\n* var strides = out.strides;\n* // returns [ 0, 1, 0 ]\n*/\nfunction broadcastArray( x, inShape, outShape ) {\n\tvar data;\n\tvar dim;\n\tvar st;\n\tvar N;\n\tvar M;\n\tvar d;\n\tvar i;\n\tvar j;\n\n\tN = outShape.length;\n\tM = inShape.length;\n\tif ( N < M ) {\n\t\tthrow new Error( 'invalid argument. Cannot broadcast an array to a shape having fewer dimensions. Arrays can only be broadcasted to shapes having the same or more dimensions.' );\n\t}\n\t// Prepend additional dimensions...\n\tdata = x;\n\tfor ( i = M; i < N; i++ ) {\n\t\tdata = [ data ];\n\t}\n\n\t// Initialize a strides array:\n\tst = zeros( N );\n\n\t// Determine the output array strides...\n\tfor ( i = N-1; i >= 0; i-- ) {\n\t\tj = M - N + i;\n\t\tif ( j < 0 ) {\n\t\t\t// Prepended singleton dimension; stride is zero...\n\t\t\tcontinue;\n\t\t}\n\t\td = inShape[ j ];\n\t\tdim = outShape[ i ];\n\t\tif ( dim !== 0 && dim < d ) {\n\t\t\tthrow new Error( format( 'invalid argument. Input array cannot be broadcast to the specified shape, as the specified shape has a dimension whose size is less than the size of the corresponding dimension in the input array. Array shape: (%s). Desired shape: (%s). Dimension: %u.', copy( inShape ).join( ', ' ), copy( outShape ).join( ', ' ), i ) );\n\t\t}\n\t\tif ( d === dim ) {\n\t\t\t// As the dimension sizes are equal, the stride is one, meaning that each element in the array should be iterated over as normal...\n\t\t\tst[ i ] = 1;\n\t\t} else if ( d === 1 ) {\n\t\t\t// In order to broadcast a dimension, we set the stride for that dimension to zero...\n\t\t\tst[ i ] = 0;\n\t\t} else {\n\t\t\t// At this point, we know that `dim > d` and that `d` does not equal `1` (e.g., `dim=3` and `d=2`); in which case, the shapes are considered incompatible (even for desired shapes which are multiples of array dimensions, as might be desired when \"tiling\" an array; e.g., `dim=4` and `d=2`)...\n\t\t\tthrow new Error( format( 'invalid argument. Input array and the specified shape are broadcast incompatible. Array shape: (%s). Desired shape: (%s). Dimension: %u.', copy( inShape ).join( ', ' ), copy( outShape ).join( ', ' ), i ) );\n\t\t}\n\t}\n\t// Return broadcast results:\n\treturn {\n\t\t'ref': x,                  // reference to the original input array\n\t\t'data': data,              // broadcasted array\n\t\t'shape': copy( outShape ), // copy in order to prevent mutation\n\t\t'strides': st\n\t};\n}\n\n\n// EXPORTS //\n\nmodule.exports = broadcastArray;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Broadcast an array to a specified shape.\n*\n* @module @stdlib/array/base/broadcast-array\n*\n* @example\n* var broadcastArray = require( '@stdlib/array/base/broadcast-array' );\n*\n* var x = [ 1, 2 ];\n*\n* var out = broadcastArray( x, [ 2 ], [ 2, 2 ] );\n* // returns {...}\n*\n* var shape = out.shape;\n* // returns [ 2, 2 ]\n*\n* var strides = out.strides;\n* // returns [ 0, 1 ]\n*\n* var ref = out.ref;\n* // returns [ 1, 2 ]\n*\n* var bool = ( x === ref );\n* // returns true\n*\n* var data = out.data;\n* // returns [ [ 1, 2 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar broadcastArray = require( './../../../base/broadcast-array' );\n\n\n// MAIN //\n\n/**\n* Applies a binary callback to elements in two broadcasted input arrays and assigns results to elements in a two-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing two input nested arrays and one output nested array\n* @param {ArrayLikeObject<NonNegativeIntegerArray>} shapes - array shapes\n* @param {Callback} fcn - binary callback\n* @returns {void}\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n*\n* var shapes = [\n*     [ 1, 2 ],\n*     [ 2, 1 ],\n*     [ 2, 2 ]\n* ];\n*\n* var x = ones2d( shapes[ 0 ] );\n* var y = ones2d( shapes[ 1 ] );\n* var z = zeros2d( shapes[ 2 ] );\n*\n* bbinary2d( [ x, y, z ], shapes, add );\n*\n* console.log( z );\n* // => [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ]\n*/\nfunction bbinary2d( arrays, shapes, fcn ) {\n\tvar dx0;\n\tvar dx1;\n\tvar dy0;\n\tvar dy1;\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar j0;\n\tvar j1;\n\tvar k0;\n\tvar k1;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar sh;\n\tvar st;\n\tvar o;\n\tvar x;\n\tvar y;\n\tvar z;\n\n\tsh = shapes[ 2 ];\n\tS0 = sh[ 1 ];\n\tS1 = sh[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 ) {\n\t\treturn;\n\t}\n\to = broadcastArray( arrays[ 0 ], shapes[ 0 ], sh );\n\tx = o.data;\n\tst = o.strides;\n\tdx0 = st[ 1 ];\n\tdx1 = st[ 0 ];\n\n\to = broadcastArray( arrays[ 1 ], shapes[ 1 ], sh );\n\ty = o.data;\n\tst = o.strides;\n\tdy0 = st[ 1 ];\n\tdy1 = st[ 0 ];\n\n\tz = arrays[ 2 ];\n\n\tj1 = 0;\n\tk1 = 0;\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tj0 = 0;\n\t\tk0 = 0;\n\t\tx0 = x[ j1 ];\n\t\ty0 = y[ k1 ];\n\t\tz0 = z[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tz0[ i0 ] = fcn( x0[ j0 ], y0[ k0 ] );\n\t\t\tj0 += dx0;\n\t\t\tk0 += dy0;\n\t\t}\n\t\tj1 += dx1;\n\t\tk1 += dy1;\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = bbinary2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a binary callback to elements in two broadcasted input arrays and assign results to elements in a two-dimensional nested output array.\n*\n* @module @stdlib/array/base/broadcasted-binary2d\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n* var bbinary2d = require( '@stdlib/array/base/broadcasted-binary2d' );\n*\n* var shapes = [\n*     [ 1, 2 ],\n*     [ 2, 1 ],\n*     [ 2, 2 ]\n* ];\n*\n* var x = ones2d( shapes[ 0 ] );\n* var y = ones2d( shapes[ 1 ] );\n* var z = zeros2d( shapes[ 2 ] );\n*\n* bbinary2d( [ x, y, z ], shapes, add );\n*\n* console.log( z );\n* // => [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar broadcastArray = require( './../../../base/broadcast-array' );\n\n\n// MAIN //\n\n/**\n* Applies a binary callback to elements in two broadcasted input arrays and assigns results to elements in a three-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Array>} arrays - array-like object containing two input nested arrays and one output nested array\n* @param {ArrayLikeObject<NonNegativeIntegerArray>} shapes - array shapes\n* @param {Callback} fcn - binary callback\n* @returns {void}\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n*\n* var shapes = [\n*     [ 1, 1, 2 ],\n*     [ 2, 1, 1 ],\n*     [ 2, 2, 2 ]\n* ];\n*\n* var x = ones3d( shapes[ 0 ] );\n* var y = ones3d( shapes[ 1 ] );\n* var z = zeros3d( shapes[ 2 ] );\n*\n* bbinary3d( [ x, y, z ], shapes, add );\n*\n* console.log( z );\n* // => [ [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ], [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ] ]\n*/\nfunction bbinary3d( arrays, shapes, fcn ) {\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dy0;\n\tvar dy1;\n\tvar dy2;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar k0;\n\tvar k1;\n\tvar k2;\n\tvar x0;\n\tvar x1;\n\tvar y0;\n\tvar y1;\n\tvar z0;\n\tvar z1;\n\tvar sh;\n\tvar st;\n\tvar o;\n\tvar x;\n\tvar y;\n\tvar z;\n\n\tsh = shapes[ 2 ];\n\tS0 = sh[ 2 ];\n\tS1 = sh[ 1 ];\n\tS2 = sh[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 ) {\n\t\treturn;\n\t}\n\to = broadcastArray( arrays[ 0 ], shapes[ 0 ], sh );\n\tx = o.data;\n\tst = o.strides;\n\tdx0 = st[ 2 ];\n\tdx1 = st[ 1 ];\n\tdx2 = st[ 0 ];\n\n\to = broadcastArray( arrays[ 1 ], shapes[ 1 ], sh );\n\ty = o.data;\n\tst = o.strides;\n\tdy0 = st[ 2 ];\n\tdy1 = st[ 1 ];\n\tdy2 = st[ 0 ];\n\n\tz = arrays[ 2 ];\n\n\tj2 = 0;\n\tk2 = 0;\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\tj1 = 0;\n\t\tk1 = 0;\n\t\tx1 = x[ j2 ];\n\t\ty1 = y[ k2 ];\n\t\tz1 = z[ i2 ];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\tj0 = 0;\n\t\t\tk0 = 0;\n\t\t\tx0 = x1[ j1 ];\n\t\t\ty0 = y1[ k1 ];\n\t\t\tz0 = z1[ i1 ];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\tz0[ i0 ] = fcn( x0[ j0 ], y0[ k0 ] );\n\t\t\t\tj0 += dx0;\n\t\t\t\tk0 += dy0;\n\t\t\t}\n\t\t\tj1 += dx1;\n\t\t\tk1 += dy1;\n\t\t}\n\t\tj2 += dx2;\n\t\tk2 += dy2;\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = bbinary3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a binary callback to elements in two broadcasted input arrays and assign results to elements in a three-dimensional nested output array.\n*\n* @module @stdlib/array/base/broadcasted-binary3d\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n* var bbinary3d = require( '@stdlib/array/base/broadcasted-binary3d' );\n*\n* var shapes = [\n*     [ 1, 1, 2 ],\n*     [ 2, 1, 1 ],\n*     [ 2, 2, 2 ]\n* ];\n*\n* var x = ones3d( shapes[ 0 ] );\n* var y = ones3d( shapes[ 1 ] );\n* var z = zeros3d( shapes[ 2 ] );\n*\n* bbinary3d( [ x, y, z ], shapes, add );\n*\n* console.log( z );\n* // => [ [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ], [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar broadcastArray = require( './../../../base/broadcast-array' );\n\n\n// MAIN //\n\n/**\n* Applies a binary callback to elements in two broadcasted input arrays and assigns results to elements in a four-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Array>} arrays - array-like object containing two input nested arrays and one output nested array\n* @param {ArrayLikeObject<NonNegativeIntegerArray>} shapes - array shapes\n* @param {Callback} fcn - binary callback\n* @returns {void}\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n*\n* var shapes = [\n*     [ 1, 1, 1, 2 ],\n*     [ 1, 2, 1, 1 ],\n*     [ 1, 2, 2, 2 ]\n* ];\n*\n* var x = ones4d( shapes[ 0 ] );\n* var y = ones4d( shapes[ 1 ] );\n* var z = zeros4d( shapes[ 2 ] );\n*\n* bbinary4d( [ x, y, z ], shapes, add );\n*\n* console.log( z );\n* // => [ [ [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ], [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ] ] ]\n*/\nfunction bbinary4d( arrays, shapes, fcn ) {\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dy0;\n\tvar dy1;\n\tvar dy2;\n\tvar dy3;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar k0;\n\tvar k1;\n\tvar k2;\n\tvar k3;\n\tvar x0;\n\tvar x1;\n\tvar x2;\n\tvar y0;\n\tvar y1;\n\tvar y2;\n\tvar z0;\n\tvar z1;\n\tvar z2;\n\tvar sh;\n\tvar st;\n\tvar o;\n\tvar x;\n\tvar y;\n\tvar z;\n\n\tsh = shapes[ 2 ];\n\tS0 = sh[ 3 ];\n\tS1 = sh[ 2 ];\n\tS2 = sh[ 1 ];\n\tS3 = sh[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 ) {\n\t\treturn;\n\t}\n\to = broadcastArray( arrays[ 0 ], shapes[ 0 ], sh );\n\tx = o.data;\n\tst = o.strides;\n\tdx0 = st[ 3 ];\n\tdx1 = st[ 2 ];\n\tdx2 = st[ 1 ];\n\tdx3 = st[ 0 ];\n\n\to = broadcastArray( arrays[ 1 ], shapes[ 1 ], sh );\n\ty = o.data;\n\tst = o.strides;\n\tdy0 = st[ 3 ];\n\tdy1 = st[ 2 ];\n\tdy2 = st[ 1 ];\n\tdy3 = st[ 0 ];\n\n\tz = arrays[ 2 ];\n\n\tj3 = 0;\n\tk3 = 0;\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\tj2 = 0;\n\t\tk2 = 0;\n\t\tx2 = x[ j3 ];\n\t\ty2 = y[ k3 ];\n\t\tz2 = z[ i3 ];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\tj1 = 0;\n\t\t\tk1 = 0;\n\t\t\tx1 = x2[ j2 ];\n\t\t\ty1 = y2[ k2 ];\n\t\t\tz1 = z2[ i2 ];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tj0 = 0;\n\t\t\t\tk0 = 0;\n\t\t\t\tx0 = x1[ j1 ];\n\t\t\t\ty0 = y1[ k1 ];\n\t\t\t\tz0 = z1[ i1 ];\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\tz0[ i0 ] = fcn( x0[ j0 ], y0[ k0 ] );\n\t\t\t\t\tj0 += dx0;\n\t\t\t\t\tk0 += dy0;\n\t\t\t\t}\n\t\t\t\tj1 += dx1;\n\t\t\t\tk1 += dy1;\n\t\t\t}\n\t\t\tj2 += dx2;\n\t\t\tk2 += dy2;\n\t\t}\n\t\tj3 += dx3;\n\t\tk3 += dy3;\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = bbinary4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a binary callback to elements in two broadcasted input arrays and assign results to elements in a four-dimensional nested output array.\n*\n* @module @stdlib/array/base/broadcasted-binary4d\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n* var bbinary4d = require( '@stdlib/array/base/broadcasted-binary4d' );\n*\n* var shapes = [\n*     [ 1, 1, 1, 2 ],\n*     [ 1, 2, 1, 1 ],\n*     [ 1, 2, 2, 2 ]\n* ];\n*\n* var x = ones4d( shapes[ 0 ] );\n* var y = ones4d( shapes[ 1 ] );\n* var z = zeros4d( shapes[ 2 ] );\n*\n* bbinary4d( [ x, y, z ], shapes, add );\n*\n* console.log( z );\n* // => [ [ [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ], [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar broadcastArray = require( './../../../base/broadcast-array' );\n\n\n// MAIN //\n\n/**\n* Applies a binary callback to elements in two broadcasted input arrays and assigns results to elements in a five-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Array>} arrays - array-like object containing two input nested arrays and one output nested array\n* @param {ArrayLikeObject<NonNegativeIntegerArray>} shapes - array shapes\n* @param {Callback} fcn - binary callback\n* @returns {void}\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n*\n* var shapes = [\n*     [ 1, 1, 1, 1, 2 ],\n*     [ 1, 1, 2, 1, 1 ],\n*     [ 1, 1, 2, 2, 2 ]\n* ];\n*\n* var x = ones5d( shapes[ 0 ] );\n* var y = ones5d( shapes[ 1 ] );\n* var z = zeros5d( shapes[ 2 ] );\n*\n* bbinary5d( [ x, y, z ], shapes, add );\n*\n* console.log( z );\n* // => [ [ [ [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ], [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ] ] ] ]\n*/\nfunction bbinary5d( arrays, shapes, fcn ) { // eslint-disable-line max-statements\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dy0;\n\tvar dy1;\n\tvar dy2;\n\tvar dy3;\n\tvar dy4;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar k0;\n\tvar k1;\n\tvar k2;\n\tvar k3;\n\tvar k4;\n\tvar x0;\n\tvar x1;\n\tvar x2;\n\tvar x3;\n\tvar y0;\n\tvar y1;\n\tvar y2;\n\tvar y3;\n\tvar z0;\n\tvar z1;\n\tvar z2;\n\tvar z3;\n\tvar sh;\n\tvar st;\n\tvar o;\n\tvar x;\n\tvar y;\n\tvar z;\n\n\tsh = shapes[ 2 ];\n\tS0 = sh[ 4 ];\n\tS1 = sh[ 3 ];\n\tS2 = sh[ 2 ];\n\tS3 = sh[ 1 ];\n\tS4 = sh[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 || S4 <= 0 ) {\n\t\treturn;\n\t}\n\to = broadcastArray( arrays[ 0 ], shapes[ 0 ], sh );\n\tx = o.data;\n\tst = o.strides;\n\tdx0 = st[ 4 ];\n\tdx1 = st[ 3 ];\n\tdx2 = st[ 2 ];\n\tdx3 = st[ 1 ];\n\tdx4 = st[ 0 ];\n\n\to = broadcastArray( arrays[ 1 ], shapes[ 1 ], sh );\n\ty = o.data;\n\tst = o.strides;\n\tdy0 = st[ 4 ];\n\tdy1 = st[ 3 ];\n\tdy2 = st[ 2 ];\n\tdy3 = st[ 1 ];\n\tdy4 = st[ 0 ];\n\n\tz = arrays[ 2 ];\n\n\tj4 = 0;\n\tk4 = 0;\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\tj3 = 0;\n\t\tk3 = 0;\n\t\tx3 = x[ j4 ];\n\t\ty3 = y[ k4 ];\n\t\tz3 = z[ i4 ];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\tj2 = 0;\n\t\t\tk2 = 0;\n\t\t\tx2 = x3[ j3 ];\n\t\t\ty2 = y3[ k3 ];\n\t\t\tz2 = z3[ i3 ];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\tj1 = 0;\n\t\t\t\tk1 = 0;\n\t\t\t\tx1 = x2[ j2 ];\n\t\t\t\ty1 = y2[ k2 ];\n\t\t\t\tz1 = z2[ i2 ];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\tj0 = 0;\n\t\t\t\t\tk0 = 0;\n\t\t\t\t\tx0 = x1[ j1 ];\n\t\t\t\t\ty0 = y1[ k1 ];\n\t\t\t\t\tz0 = z1[ i1 ];\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\tz0[ i0 ] = fcn( x0[ j0 ], y0[ k0 ] );\n\t\t\t\t\t\tj0 += dx0;\n\t\t\t\t\t\tk0 += dy0;\n\t\t\t\t\t}\n\t\t\t\t\tj1 += dx1;\n\t\t\t\t\tk1 += dy1;\n\t\t\t\t}\n\t\t\t\tj2 += dx2;\n\t\t\t\tk2 += dy2;\n\t\t\t}\n\t\t\tj3 += dx3;\n\t\t\tk3 += dy3;\n\t\t}\n\t\tj4 += dx4;\n\t\tk4 += dy4;\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = bbinary5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a binary callback to elements in two broadcasted input arrays and assign results to elements in a five-dimensional nested output array.\n*\n* @module @stdlib/array/base/broadcasted-binary5d\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n* var bbinary5d = require( '@stdlib/array/base/broadcasted-binary5d' );\n*\n* var shapes = [\n*     [ 1, 1, 1, 1, 2 ],\n*     [ 1, 1, 2, 1, 1 ],\n*     [ 1, 1, 2, 2, 2 ]\n* ];\n*\n* var x = ones5d( shapes[ 0 ] );\n* var y = ones5d( shapes[ 1 ] );\n* var z = zeros5d( shapes[ 2 ] );\n*\n* bbinary5d( [ x, y, z ], shapes, add );\n*\n* console.log( z );\n* // => [ [ [ [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ], [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar broadcastArray = require( './../../../base/broadcast-array' );\n\n\n// MAIN //\n\n/**\n* Applies a quaternary callback to elements in four broadcasted input arrays and assigns results to elements in a two-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing four input nested arrays and one output nested array\n* @param {ArrayLikeObject<NonNegativeIntegerArray>} shapes - array shapes\n* @param {Callback} fcn - quaternary callback\n* @returns {void}\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add4' );\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n*\n* var shapes = [\n*     [ 1, 2 ],\n*     [ 2, 1 ],\n*     [ 1, 1 ],\n*     [ 2, 2 ],\n*     [ 2, 2 ]\n* ];\n*\n* var x = ones2d( shapes[ 0 ] );\n* var y = ones2d( shapes[ 1 ] );\n* var z = ones2d( shapes[ 2 ] );\n* var w = ones2d( shapes[ 3 ] );\n* var out = zeros2d( shapes[ 4 ] );\n*\n* bquaternary2d( [ x, y, z, w, out ], shapes, add );\n*\n* console.log( out );\n* // => [ [ 4.0, 4.0 ], [ 4.0, 4.0 ] ]\n*/\nfunction bquaternary2d( arrays, shapes, fcn ) {\n\tvar dx0;\n\tvar dx1;\n\tvar dy0;\n\tvar dy1;\n\tvar dz0;\n\tvar dz1;\n\tvar dw0;\n\tvar dw1;\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar j0;\n\tvar j1;\n\tvar k0;\n\tvar k1;\n\tvar m0;\n\tvar m1;\n\tvar n0;\n\tvar n1;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar u0;\n\tvar sh;\n\tvar st;\n\tvar o;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\tvar u;\n\n\tsh = shapes[ 4 ];\n\tS0 = sh[ 1 ];\n\tS1 = sh[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 ) {\n\t\treturn;\n\t}\n\to = broadcastArray( arrays[ 0 ], shapes[ 0 ], sh );\n\tx = o.data;\n\tst = o.strides;\n\tdx0 = st[ 1 ];\n\tdx1 = st[ 0 ];\n\n\to = broadcastArray( arrays[ 1 ], shapes[ 1 ], sh );\n\ty = o.data;\n\tst = o.strides;\n\tdy0 = st[ 1 ];\n\tdy1 = st[ 0 ];\n\n\to = broadcastArray( arrays[ 2 ], shapes[ 2 ], sh );\n\tz = o.data;\n\tst = o.strides;\n\tdz0 = st[ 1 ];\n\tdz1 = st[ 0 ];\n\n\to = broadcastArray( arrays[ 3 ], shapes[ 3 ], sh );\n\tw = o.data;\n\tst = o.strides;\n\tdw0 = st[ 1 ];\n\tdw1 = st[ 0 ];\n\n\tu = arrays[ 4 ];\n\n\tj1 = 0;\n\tk1 = 0;\n\tm1 = 0;\n\tn1 = 0;\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tj0 = 0;\n\t\tk0 = 0;\n\t\tm0 = 0;\n\t\tn0 = 0;\n\t\tx0 = x[ j1 ];\n\t\ty0 = y[ k1 ];\n\t\tz0 = z[ m1 ];\n\t\tw0 = w[ n1 ];\n\t\tu0 = u[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tu0[ i0 ] = fcn( x0[ j0 ], y0[ k0 ], z0[ m0 ], w0[ n0 ] );\n\t\t\tj0 += dx0;\n\t\t\tk0 += dy0;\n\t\t\tm0 += dz0;\n\t\t\tn0 += dw0;\n\t\t}\n\t\tj1 += dx1;\n\t\tk1 += dy1;\n\t\tm1 += dz1;\n\t\tn1 += dw1;\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = bquaternary2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a quaternary callback to elements in four broadcasted input arrays and assign results to elements in a two-dimensional nested output array.\n*\n* @module @stdlib/array/base/broadcasted-quaternary2d\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add4' );\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var bquaternary2d = require( '@stdlib/array/base/broadcasted-quaternary2d' );\n*\n* var shapes = [\n*     [ 1, 2 ],\n*     [ 2, 1 ],\n*     [ 1, 1 ],\n*     [ 2, 2 ],\n*     [ 2, 2 ]\n* ];\n*\n* var x = ones2d( shapes[ 0 ] );\n* var y = ones2d( shapes[ 1 ] );\n* var z = ones2d( shapes[ 2 ] );\n* var w = ones2d( shapes[ 3 ] );\n* var out = zeros2d( shapes[ 4 ] );\n*\n* bquaternary2d( [ x, y, z, w, out ], shapes, add );\n*\n* console.log( out );\n* // => [ [ 4.0, 4.0 ], [ 4.0, 4.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar broadcastArray = require( './../../../base/broadcast-array' );\n\n\n// MAIN //\n\n/**\n* Applies a quinary callback to elements in five broadcasted input arrays and assigns results to elements in a two-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing five input nested arrays and one output nested array\n* @param {ArrayLikeObject<NonNegativeIntegerArray>} shapes - array shapes\n* @param {Callback} fcn - quinary callback\n* @returns {void}\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n*\n* function add( x, y, z, w, v ) {\n*     return x + y + z + w + v;\n* }\n*\n* var shapes = [\n*     [ 1, 2 ],\n*     [ 2, 1 ],\n*     [ 1, 1 ],\n*     [ 2, 2 ],\n*     [ 1, 1 ],\n*     [ 2, 2 ]\n* ];\n*\n* var x = ones2d( shapes[ 0 ] );\n* var y = ones2d( shapes[ 1 ] );\n* var z = ones2d( shapes[ 2 ] );\n* var w = ones2d( shapes[ 3 ] );\n* var v = ones2d( shapes[ 4 ] );\n* var out = zeros2d( shapes[ 5 ] );\n*\n* bquinary2d( [ x, y, z, w, v, out ], shapes, add );\n*\n* console.log( out );\n* // => [ [ 5.0, 5.0 ], [ 5.0, 5.0 ] ]\n*/\nfunction bquinary2d( arrays, shapes, fcn ) {\n\tvar dx0;\n\tvar dx1;\n\tvar dy0;\n\tvar dy1;\n\tvar dz0;\n\tvar dz1;\n\tvar dw0;\n\tvar dw1;\n\tvar du0;\n\tvar du1;\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar j0;\n\tvar j1;\n\tvar k0;\n\tvar k1;\n\tvar m0;\n\tvar m1;\n\tvar n0;\n\tvar n1;\n\tvar p0;\n\tvar p1;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar u0;\n\tvar v0;\n\tvar sh;\n\tvar st;\n\tvar o;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\tvar u;\n\tvar v;\n\n\tsh = shapes[ 5 ];\n\tS0 = sh[ 1 ];\n\tS1 = sh[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 ) {\n\t\treturn;\n\t}\n\to = broadcastArray( arrays[ 0 ], shapes[ 0 ], sh );\n\tx = o.data;\n\tst = o.strides;\n\tdx0 = st[ 1 ];\n\tdx1 = st[ 0 ];\n\n\to = broadcastArray( arrays[ 1 ], shapes[ 1 ], sh );\n\ty = o.data;\n\tst = o.strides;\n\tdy0 = st[ 1 ];\n\tdy1 = st[ 0 ];\n\n\to = broadcastArray( arrays[ 2 ], shapes[ 2 ], sh );\n\tz = o.data;\n\tst = o.strides;\n\tdz0 = st[ 1 ];\n\tdz1 = st[ 0 ];\n\n\to = broadcastArray( arrays[ 3 ], shapes[ 3 ], sh );\n\tw = o.data;\n\tst = o.strides;\n\tdw0 = st[ 1 ];\n\tdw1 = st[ 0 ];\n\n\to = broadcastArray( arrays[ 4 ], shapes[ 4 ], sh );\n\tu = o.data;\n\tst = o.strides;\n\tdu0 = st[ 1 ];\n\tdu1 = st[ 0 ];\n\n\tv = arrays[ 5 ];\n\n\tj1 = 0;\n\tk1 = 0;\n\tm1 = 0;\n\tn1 = 0;\n\tp1 = 0;\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tj0 = 0;\n\t\tk0 = 0;\n\t\tm0 = 0;\n\t\tn0 = 0;\n\t\tp0 = 0;\n\t\tx0 = x[ j1 ];\n\t\ty0 = y[ k1 ];\n\t\tz0 = z[ m1 ];\n\t\tw0 = w[ n1 ];\n\t\tu0 = u[ p1 ];\n\t\tv0 = v[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tv0[ i0 ] = fcn( x0[ j0 ], y0[ k0 ], z0[ m0 ], w0[ n0 ], u0[ p0 ] );\n\t\t\tj0 += dx0;\n\t\t\tk0 += dy0;\n\t\t\tm0 += dz0;\n\t\t\tn0 += dw0;\n\t\t\tp0 += du0;\n\t\t}\n\t\tj1 += dx1;\n\t\tk1 += dy1;\n\t\tm1 += dz1;\n\t\tn1 += dw1;\n\t\tp1 += du1;\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = bquinary2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a quinary callback to elements in five broadcasted input arrays and assign results to elements in a two-dimensional nested output array.\n*\n* @module @stdlib/array/base/broadcasted-quinary2d\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var bquinary2d = require( '@stdlib/array/base/broadcasted-quinary2d' );\n*\n* function add( x, y, z, w, v ) {\n*     return x + y + z + w + v;\n* }\n*\n* var shapes = [\n*     [ 1, 2 ],\n*     [ 2, 1 ],\n*     [ 1, 1 ],\n*     [ 2, 2 ],\n*     [ 1, 1 ],\n*     [ 2, 2 ]\n* ];\n*\n* var x = ones2d( shapes[ 0 ] );\n* var y = ones2d( shapes[ 1 ] );\n* var z = ones2d( shapes[ 2 ] );\n* var w = ones2d( shapes[ 3 ] );\n* var v = ones2d( shapes[ 4 ] );\n* var out = zeros2d( shapes[ 5 ] );\n*\n* bquinary2d( [ x, y, z, w, v, out ], shapes, add );\n*\n* console.log( out );\n* // => [ [ 5.0, 5.0 ], [ 5.0, 5.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar broadcastArray = require( './../../../base/broadcast-array' );\n\n\n// MAIN //\n\n/**\n* Applies a ternary callback to elements in three broadcasted input arrays and assigns results to elements in a two-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing three input nested arrays and one output nested array\n* @param {ArrayLikeObject<NonNegativeIntegerArray>} shapes - array shapes\n* @param {Callback} fcn - ternary callback\n* @returns {void}\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var add = require( '@stdlib/math/base/ops/add3' );\n*\n* var shapes = [\n*     [ 1, 2 ],\n*     [ 2, 1 ],\n*     [ 1, 1 ],\n*     [ 2, 2 ]\n* ];\n*\n* var x = ones2d( shapes[ 0 ] );\n* var y = ones2d( shapes[ 1 ] );\n* var z = ones2d( shapes[ 2 ] );\n* var out = zeros2d( shapes[ 3 ] );\n*\n* bternary2d( [ x, y, z, out ], shapes, add );\n*\n* console.log( out );\n* // => [ [ 3.0, 3.0 ], [ 3.0, 3.0 ] ]\n*/\nfunction bternary2d( arrays, shapes, fcn ) {\n\tvar dx0;\n\tvar dx1;\n\tvar dy0;\n\tvar dy1;\n\tvar dz0;\n\tvar dz1;\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar j0;\n\tvar j1;\n\tvar k0;\n\tvar k1;\n\tvar m0;\n\tvar m1;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar sh;\n\tvar st;\n\tvar o;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\n\tsh = shapes[ 3 ];\n\tS0 = sh[ 1 ];\n\tS1 = sh[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 ) {\n\t\treturn;\n\t}\n\to = broadcastArray( arrays[ 0 ], shapes[ 0 ], sh );\n\tx = o.data;\n\tst = o.strides;\n\tdx0 = st[ 1 ];\n\tdx1 = st[ 0 ];\n\n\to = broadcastArray( arrays[ 1 ], shapes[ 1 ], sh );\n\ty = o.data;\n\tst = o.strides;\n\tdy0 = st[ 1 ];\n\tdy1 = st[ 0 ];\n\n\to = broadcastArray( arrays[ 2 ], shapes[ 2 ], sh );\n\tz = o.data;\n\tst = o.strides;\n\tdz0 = st[ 1 ];\n\tdz1 = st[ 0 ];\n\n\tw = arrays[ 3 ];\n\n\tj1 = 0;\n\tk1 = 0;\n\tm1 = 0;\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tj0 = 0;\n\t\tk0 = 0;\n\t\tm0 = 0;\n\t\tx0 = x[ j1 ];\n\t\ty0 = y[ k1 ];\n\t\tz0 = z[ m1 ];\n\t\tw0 = w[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tw0[ i0 ] = fcn( x0[ j0 ], y0[ k0 ], z0[ m0 ] );\n\t\t\tj0 += dx0;\n\t\t\tk0 += dy0;\n\t\t\tm0 += dz0;\n\t\t}\n\t\tj1 += dx1;\n\t\tk1 += dy1;\n\t\tm1 += dz1;\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = bternary2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a ternary callback to elements in three broadcasted input arrays and assign results to elements in a two-dimensional nested output array.\n*\n* @module @stdlib/array/base/broadcasted-ternary2d\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var add = require( '@stdlib/math/base/ops/add3' );\n* var bternary2d = require( '@stdlib/array/base/broadcasted-ternary2d' );\n*\n* var shapes = [\n*     [ 1, 2 ],\n*     [ 2, 1 ],\n*     [ 1, 1 ],\n*     [ 2, 2 ]\n* ];\n*\n* var x = ones2d( shapes[ 0 ] );\n* var y = ones2d( shapes[ 1 ] );\n* var z = ones2d( shapes[ 2 ] );\n* var out = zeros2d( shapes[ 3 ] );\n*\n* bternary2d( [ x, y, z, out ], shapes, add );\n*\n* console.log( out );\n* // => [ [ 3.0, 3.0 ], [ 3.0, 3.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar broadcastArray = require( './../../../base/broadcast-array' );\n\n\n// MAIN //\n\n/**\n* Applies a unary callback to elements in a broadcasted nested input array and assigns results to elements in a two-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing one input nested array and one output nested array\n* @param {ArrayLikeObject<NonNegativeIntegerArray>} shapes - array shapes\n* @param {Callback} fcn - unary callback\n* @returns {void}\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shapes = [\n*     [ 1, 2 ],\n*     [ 2, 2 ]\n* ];\n*\n* var x = ones2d( shapes[ 0 ] );\n* var y = zeros2d( shapes[ 1 ] );\n*\n* bunary2d( [ x, y ], shapes, scale );\n*\n* console.log( y );\n* // => [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ]\n*/\nfunction bunary2d( arrays, shapes, fcn ) {\n\tvar dx0;\n\tvar dx1;\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar j0;\n\tvar j1;\n\tvar x0;\n\tvar y0;\n\tvar sh;\n\tvar st;\n\tvar o;\n\tvar x;\n\tvar y;\n\n\tsh = shapes[ 1 ];\n\tS0 = sh[ 1 ];\n\tS1 = sh[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 ) {\n\t\treturn;\n\t}\n\to = broadcastArray( arrays[ 0 ], shapes[ 0 ], sh );\n\tx = o.data;\n\tst = o.strides;\n\tdx0 = st[ 1 ];\n\tdx1 = st[ 0 ];\n\n\ty = arrays[ 1 ];\n\n\tj1 = 0;\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tj0 = 0;\n\t\tx0 = x[ j1 ];\n\t\ty0 = y[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\ty0[ i0 ] = fcn( x0[ j0 ] );\n\t\t\tj0 += dx0;\n\t\t}\n\t\tj1 += dx1;\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = bunary2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a unary callback to elements in a broadcasted nested input array and assign results to elements in a two-dimensional nested output array.\n*\n* @module @stdlib/array/base/broadcasted-unary2d\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var bunary2d = require( '@stdlib/array/base/broadcasted-unary2d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shapes = [\n*     [ 1, 2 ],\n*     [ 2, 2 ]\n* ];\n*\n* var x = ones2d( shapes[ 0 ] );\n* var y = zeros2d( shapes[ 1 ] );\n*\n* bunary2d( [ x, y ], shapes, scale );\n*\n* console.log( y );\n* // => [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar broadcastArray = require( './../../../base/broadcast-array' );\n\n\n// MAIN //\n\n/**\n* Applies a unary callback to elements in a broadcasted nested input array and assigns results to elements in a three-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing one input nested array and one output nested array\n* @param {ArrayLikeObject<NonNegativeIntegerArray>} shapes - array shapes\n* @param {Callback} fcn - unary callback\n* @returns {void}\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shapes = [\n*     [ 1, 1, 2 ],\n*     [ 1, 2, 2 ]\n* ];\n*\n* var x = ones3d( shapes[ 0 ] );\n* var y = zeros3d( shapes[ 1 ] );\n*\n* bunary3d( [ x, y ], shapes, scale );\n*\n* console.log( y );\n* // => [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ]\n*/\nfunction bunary3d( arrays, shapes, fcn ) {\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar x0;\n\tvar x1;\n\tvar y0;\n\tvar y1;\n\tvar sh;\n\tvar st;\n\tvar o;\n\tvar x;\n\tvar y;\n\n\tsh = shapes[ 1 ];\n\tS0 = sh[ 2 ];\n\tS1 = sh[ 1 ];\n\tS2 = sh[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 ) {\n\t\treturn;\n\t}\n\to = broadcastArray( arrays[ 0 ], shapes[ 0 ], sh );\n\tx = o.data;\n\tst = o.strides;\n\tdx0 = st[ 2 ];\n\tdx1 = st[ 1 ];\n\tdx2 = st[ 0 ];\n\n\ty = arrays[ 1 ];\n\tj2 = 0;\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\tj1 = 0;\n\t\tx1 = x[ j2 ];\n\t\ty1 = y[ i2 ];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\tj0 = 0;\n\t\t\tx0 = x1[ j1 ];\n\t\t\ty0 = y1[ i1 ];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\ty0[ i0 ] = fcn( x0[ j0 ] );\n\t\t\t\tj0 += dx0;\n\t\t\t}\n\t\t\tj1 += dx1;\n\t\t}\n\t\tj2 += dx2;\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = bunary3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a unary callback to elements in a broadcasted nested input array and assign results to elements in a three-dimensional nested output array.\n*\n* @module @stdlib/array/base/broadcasted-unary3d\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n* var bunary3d = require( '@stdlib/array/base/broadcasted-unary3d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shapes = [\n*     [ 1, 1, 2 ],\n*     [ 1, 2, 2 ]\n* ];\n*\n* var x = ones3d( shapes[ 0 ] );\n* var y = zeros3d( shapes[ 1 ] );\n*\n* bunary3d( [ x, y ], shapes, scale );\n*\n* console.log( y );\n* // => [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar broadcastArray = require( './../../../base/broadcast-array' );\n\n\n// MAIN //\n\n/**\n* Applies a unary callback to elements in a broadcasted nested input array and assigns results to elements in a four-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing one input nested array and one output nested array\n* @param {ArrayLikeObject<NonNegativeIntegerArray>} shapes - array shapes\n* @param {Callback} fcn - unary callback\n* @returns {void}\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shapes = [\n*     [ 1, 1, 1, 2 ],\n*     [ 1, 1, 2, 2 ]\n* ];\n*\n* var x = ones4d( shapes[ 0 ] );\n* var y = zeros4d( shapes[ 1 ] );\n*\n* bunary4d( [ x, y ], shapes, scale );\n*\n* console.log( y );\n* // => [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ]\n*/\nfunction bunary4d( arrays, shapes, fcn ) {\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar x0;\n\tvar x1;\n\tvar x2;\n\tvar y0;\n\tvar y1;\n\tvar y2;\n\tvar sh;\n\tvar st;\n\tvar o;\n\tvar x;\n\tvar y;\n\n\tsh = shapes[ 1 ];\n\tS0 = sh[ 3 ];\n\tS1 = sh[ 2 ];\n\tS2 = sh[ 1 ];\n\tS3 = sh[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 ) {\n\t\treturn;\n\t}\n\to = broadcastArray( arrays[ 0 ], shapes[ 0 ], sh );\n\tx = o.data;\n\tst = o.strides;\n\tdx0 = st[ 3 ];\n\tdx1 = st[ 2 ];\n\tdx2 = st[ 1 ];\n\tdx3 = st[ 0 ];\n\n\ty = arrays[ 1 ];\n\tj3 = 0;\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\tj2 = 0;\n\t\tx2 = x[ j3 ];\n\t\ty2 = y[ i3 ];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\tj1 = 0;\n\t\t\tx1 = x2[ j2 ];\n\t\t\ty1 = y2[ i2 ];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tj0 = 0;\n\t\t\t\tx0 = x1[ j1 ];\n\t\t\t\ty0 = y1[ i1 ];\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\ty0[ i0 ] = fcn( x0[ j0 ] );\n\t\t\t\t\tj0 += dx0;\n\t\t\t\t}\n\t\t\t\tj1 += dx1;\n\t\t\t}\n\t\t\tj2 += dx2;\n\t\t}\n\t\tj3 += dx3;\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = bunary4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a unary callback to elements in a broadcasted nested input array and assign results to elements in a four-dimensional nested output array.\n*\n* @module @stdlib/array/base/broadcasted-unary4d\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n* var bunary4d = require( '@stdlib/array/base/broadcasted-unary4d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shapes = [\n*     [ 1, 1, 1, 2 ],\n*     [ 1, 1, 2, 2 ]\n* ];\n*\n* var x = ones4d( shapes[ 0 ] );\n* var y = zeros4d( shapes[ 1 ] );\n*\n* bunary4d( [ x, y ], shapes, scale );\n*\n* console.log( y );\n* // => [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar broadcastArray = require( './../../../base/broadcast-array' );\n\n\n// MAIN //\n\n/**\n* Applies a unary callback to elements in a broadcasted nested input array and assigns results to elements in a five-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing one input nested array and one output nested array\n* @param {ArrayLikeObject<NonNegativeIntegerArray>} shapes - array shapes\n* @param {Callback} fcn - unary callback\n* @returns {void}\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shapes = [\n*     [ 1, 1, 1, 1, 2 ],\n*     [ 1, 1, 1, 2, 2 ]\n* ];\n*\n* var x = ones5d( shapes[ 0 ] );\n* var y = zeros5d( shapes[ 1 ] );\n*\n* bunary5d( [ x, y ], shapes, scale );\n*\n* console.log( y );\n* // => [ [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ] ]\n*/\nfunction bunary5d( arrays, shapes, fcn ) {\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar x0;\n\tvar x1;\n\tvar x2;\n\tvar x3;\n\tvar y0;\n\tvar y1;\n\tvar y2;\n\tvar y3;\n\tvar sh;\n\tvar st;\n\tvar o;\n\tvar x;\n\tvar y;\n\n\tsh = shapes[ 1 ];\n\tS0 = sh[ 4 ];\n\tS1 = sh[ 3 ];\n\tS2 = sh[ 2 ];\n\tS3 = sh[ 1 ];\n\tS4 = sh[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 || S4 <= 0 ) {\n\t\treturn;\n\t}\n\to = broadcastArray( arrays[ 0 ], shapes[ 0 ], sh );\n\tx = o.data;\n\tst = o.strides;\n\tdx0 = st[ 4 ];\n\tdx1 = st[ 3 ];\n\tdx2 = st[ 2 ];\n\tdx3 = st[ 1 ];\n\tdx4 = st[ 0 ];\n\n\ty = arrays[ 1 ];\n\tj4 = 0;\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\tj3 = 0;\n\t\tx3 = x[ j4 ];\n\t\ty3 = y[ i4 ];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\tj2 = 0;\n\t\t\tx2 = x3[ j3 ];\n\t\t\ty2 = y3[ i3 ];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\tj1 = 0;\n\t\t\t\tx1 = x2[ j2 ];\n\t\t\t\ty1 = y2[ i2 ];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\tj0 = 0;\n\t\t\t\t\tx0 = x1[ j1 ];\n\t\t\t\t\ty0 = y1[ i1 ];\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\ty0[ i0 ] = fcn( x0[ j0 ] );\n\t\t\t\t\t\tj0 += dx0;\n\t\t\t\t\t}\n\t\t\t\t\tj1 += dx1;\n\t\t\t\t}\n\t\t\t\tj2 += dx2;\n\t\t\t}\n\t\t\tj3 += dx3;\n\t\t}\n\t\tj4 += dx4;\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = bunary5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a unary callback to elements in a broadcasted nested input array and assign results to elements in a five-dimensional nested output array.\n*\n* @module @stdlib/array/base/broadcasted-unary5d\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n* var bunary5d = require( '@stdlib/array/base/broadcasted-unary5d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shapes = [\n*     [ 1, 1, 1, 1, 2 ],\n*     [ 1, 1, 1, 2, 2 ]\n* ];\n*\n* var x = ones5d( shapes[ 0 ] );\n* var y = zeros5d( shapes[ 1 ] );\n*\n* bunary5d( [ x, y ], shapes, scale );\n*\n* console.log( y );\n* // => [ [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar pow = require( '@stdlib/math/base/special/pow' );\n\n\n// MAIN //\n\n/**\n* Returns the Cartesian power.\n*\n* ## Notes\n*\n* -   The Cartesian power is an n-fold Cartesian product involving a single array. The main insight of this implementation is that the n-fold Cartesian product can be presented as an n-dimensional array stored in row-major order. As such, we can\n*\n*     -   Compute the total number of tuples, which is simply the size of the provided array (set) raised to the specified power `n`. For n-dimensional arrays, this is the equivalent of computing the product of array dimensions to determine the total number of elements.\n*     -   Initialize an array for storing indices for indexing into the provided array. For n-dimensional arrays, the index array is equivalent to an array of subscripts for indexing into each dimension.\n*     -   For the outermost loop, treat the loop index as a linear index into an n-dimensional array and resolve the corresponding subscripts.\n*     -   Continue iterating until all tuples have been generated.\n*\n* @param {ArrayLikeObject} x - input array\n* @param {NonNegativeInteger} n - power\n* @returns {Array<Array>} list of ordered tuples comprising the Cartesian product\n*\n* @example\n* var x = [ 1, 2 ];\n*\n* var out = cartesianPower( x, 2 );\n* // returns [ [ 1, 1 ], [ 1, 2 ], [ 2, 1 ], [ 2, 2 ] ]\n*/\nfunction cartesianPower( x, n ) {\n\tvar out;\n\tvar tmp;\n\tvar idx;\n\tvar len;\n\tvar N;\n\tvar s;\n\tvar i;\n\tvar j;\n\tvar k;\n\n\tN = x.length;\n\tif ( N <= 0 || n <= 0 ) {\n\t\treturn [];\n\t}\n\t// Compute the total number of ordered tuples:\n\tlen = pow( N, n );\n\n\t// Initialize a list of indices for indexing into the array (equivalent to ndarray subscripts):\n\tidx = [];\n\tfor ( i = 0; i < n; i++ ) {\n\t\tidx.push( 0 );\n\t}\n\t// Compute the n-fold Cartesian product...\n\tout = [];\n\tfor ( i = 0; i < len; i++ ) {\n\t\t// Resolve a linear index to array indices (logic is equivalent to what is found in ndarray/base/ind2sub for an ndarray stored in row-major order; see https://github.com/stdlib-js/stdlib/blob/215ca5355f3404f15996fd0ced58a98e46f22be6/lib/node_modules/%40stdlib/ndarray/base/ind2sub/lib/assign.js)...\n\t\tk = i;\n\t\tfor ( j = n-1; j >= 0; j-- ) {\n\t\t\ts = k % N;\n\t\t\tk -= s;\n\t\t\tk /= N;\n\t\t\tidx[ j ] = s;\n\t\t}\n\t\t// Generate the next ordered tuple...\n\t\ttmp = [];\n\t\tfor ( j = 0; j < n; j++ ) {\n\t\t\ttmp.push( x[ idx[ j ] ] );\n\t\t}\n\t\tout.push( tmp );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = cartesianPower;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the Cartesian power.\n*\n* @module @stdlib/array/base/cartesian-power\n*\n* @example\n* var cartesianPower = require( '@stdlib/array/base/cartesian-power' );\n*\n* var x = [ 1, 2 ];\n*\n* var out = cartesianPower( x, 2 );\n* // returns [ [ 1, 1 ], [ 1, 2 ], [ 2, 1 ], [ 2, 2 ] ]\n*/\n\n// MAIN //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Returns the Cartesian product.\n*\n* @param {ArrayLikeObject} x1 - first input array\n* @param {ArrayLikeObject} x2 - second input array\n* @returns {Array<Array>} list of ordered tuples comprising the Cartesian product\n*\n* @example\n* var x1 = [ 1, 2, 3 ];\n* var x2 = [ 4, 5 ];\n*\n* var out = cartesianProduct( x1, x2 );\n* // returns [ [ 1, 4 ], [ 1, 5 ], [ 2, 4 ], [ 2, 5 ], [ 3, 4 ], [ 3, 5 ] ]\n*/\nfunction cartesianProduct( x1, x2 ) {\n\tvar out;\n\tvar M;\n\tvar N;\n\tvar v;\n\tvar i;\n\tvar j;\n\n\tM = x1.length;\n\tN = x2.length;\n\tout = [];\n\tfor ( i = 0; i < M; i++ ) {\n\t\tv = x1[ i ];\n\t\tfor ( j = 0; j < N; j++ ) {\n\t\t\tout.push( [ v, x2[ j ] ] );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = cartesianProduct;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the Cartesian product.\n*\n* @module @stdlib/array/base/cartesian-product\n*\n* @example\n* var cartesianProduct = require( '@stdlib/array/base/cartesian-product' );\n*\n* var x1 = [ 1, 2, 3 ];\n* var x2 = [ 4, 5 ];\n*\n* var out = cartesianProduct( x1, x2 );\n* // returns [ [ 1, 4 ], [ 1, 5 ], [ 2, 4 ], [ 2, 5 ], [ 3, 4 ], [ 3, 5 ] ]\n*/\n\n// MAIN //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Returns the Cartesian square.\n*\n* @param {ArrayLikeObject} x - input array\n* @returns {Array<Array>} list of ordered tuples comprising the Cartesian product\n*\n* @example\n* var x = [ 1, 2 ];\n*\n* var out = cartesianSquare( x );\n* // returns [ [ 1, 1 ], [ 1, 2 ], [ 2, 1 ], [ 2, 2 ] ]\n*/\nfunction cartesianSquare( x ) {\n\tvar out;\n\tvar N;\n\tvar v;\n\tvar i;\n\tvar j;\n\n\tN = x.length;\n\tout = [];\n\tfor ( i = 0; i < N; i++ ) {\n\t\tv = x[ i ];\n\t\tfor ( j = 0; j < N; j++ ) {\n\t\t\tout.push( [ v, x[ j ] ] );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = cartesianSquare;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the Cartesian square.\n*\n* @module @stdlib/array/base/cartesian-square\n*\n* @example\n* var cartesianSquare = require( '@stdlib/array/base/cartesian-square' );\n*\n* var x = [ 1, 2 ];\n*\n* var out = cartesianSquare( x );\n* // returns [ [ 1, 1 ], [ 1, 2 ], [ 2, 1 ], [ 2, 2 ] ]\n*/\n\n// MAIN //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Copies the elements of an array-like object to a new \"generic\" array.\n*\n* @param {Collection} x - input array\n* @returns {Array} output array\n*\n* @example\n* var out = copy( [ 1, 2, 3 ] );\n* // returns [ 1, 2, 3 ]\n*/\nfunction copy( x ) {\n\tvar out;\n\tvar len;\n\tvar get;\n\tvar i;\n\n\t// Resolve an accessor for retrieving input array elements:\n\tget = resolveGetter( x );\n\n\t// Get the number of elements to copy:\n\tlen = x.length;\n\n\t// Loop over the elements...\n\tout = [];\n\tfor ( i = 0; i < len; i++ ) {\n\t\tout.push( get( x, i ) ); // ensure \"fast\" elements\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = copy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Copy the elements of an array-like object to a new \"generic\" array.\n*\n* @module @stdlib/array/base/copy\n*\n* @example\n* var copy = require( '@stdlib/array/base/copy' );\n*\n* var out = copy( [ 1, 2, 3 ] );\n* // returns [ 1, 2, 3 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isnan = require( '@stdlib/math/base/assert/is-nan' );\n\n\n// FUNCTIONS //\n\n/**\n* De-duplicates values in-place.\n*\n* @private\n* @param {Array} x - input array\n* @param {PositiveInteger} limit - number of allowed consecutive duplicates\n* @returns {Array} input array\n*\n* @example\n* var x = [ 1, 1, 2, 3, 3 ];\n*\n* var y = dedupeInPlace( x, 1 );\n* // returns [ 1, 2, 3 ]\n*\n* var bool = ( x === y );\n* // returns true\n*\n* @example\n* var x = [ 1, 1, 1, 2, 1, 1, 3, 3 ];\n*\n* var y = dedupeInPlace( x, 2 );\n* // returns [ 1, 1, 2, 1, 1, 3, 3 ]\n*\n* var bool = ( x === y );\n* // returns true\n*/\nfunction dedupeInPlace( x, limit ) {\n\tvar count;\n\tvar prev;\n\tvar len;\n\tvar ptr;\n\tvar v;\n\tvar i;\n\n\tlen = x.length;\n\tif ( len === 0 ) {\n\t\treturn x;\n\t}\n\tprev = x[ 0 ];\n\tcount = 1;\n\tptr = 1;\n\tfor ( i = 1; i < len; i++ ) {\n\t\tv = x[ i ];\n\t\tif ( v === prev ) {\n\t\t\tcount += 1;\n\t\t\tif ( count <= limit ) {\n\t\t\t\tx[ ptr ] = prev;\n\t\t\t\tptr += 1;\n\t\t\t}\n\t\t} else {\n\t\t\tprev = v;\n\t\t\tcount = 1;\n\t\t\tx[ ptr ] = prev;\n\t\t\tptr += 1;\n\t\t}\n\t}\n\tx.length = ptr;\n\treturn x;\n}\n\n/**\n* De-duplicates values in-place, treating `NaN` values as equal.\n*\n* @private\n* @param {Array} x - input array\n* @param {PositiveInteger} limit - number of allowed consecutive duplicates\n* @returns {Array} input array\n*\n* @example\n* var x = [ 1, 1, 2, NaN, NaN, 3, 3 ];\n*\n* var y = dedupeEqualNaNs( x, 1 );\n* // returns [ 1, 2, NaN, 3 ]\n*\n* var bool = ( x === y );\n* // returns true\n*\n* @example\n* var x = [ 1, 1, 1, 2, 1, 1, NaN, NaN, NaN, 3, 3 ];\n*\n* var y = dedupeEqualNaNs( x, 2 );\n* // returns [ 1, 1, 2, 1, 1, NaN, NaN, 3, 3 ]\n*\n* var bool = ( x === y );\n* // returns true\n*/\nfunction dedupeEqualNaNs( x, limit ) {\n\tvar count;\n\tvar prev;\n\tvar len;\n\tvar ptr;\n\tvar FLG;\n\tvar v;\n\tvar i;\n\n\tlen = x.length;\n\tif ( len === 0 ) {\n\t\treturn x;\n\t}\n\tFLG = false;\n\tprev = x[ 0 ];\n\tif ( isnan( prev ) ) {\n\t\tFLG = true;\n\t}\n\tcount = 1;\n\tptr = 1;\n\tfor ( i = 1; i < len; i++ ) {\n\t\tv = x[ i ];\n\t\tif ( v === prev || ( FLG && isnan( v ) ) ) {\n\t\t\tcount += 1;\n\t\t\tif ( count <= limit ) {\n\t\t\t\tx[ ptr ] = prev;\n\t\t\t\tptr += 1;\n\t\t\t}\n\t\t} else {\n\t\t\tprev = v;\n\t\t\tcount = 1;\n\t\t\tx[ ptr ] = prev;\n\t\t\tptr += 1;\n\t\t\tFLG = false;\n\t\t\tif ( isnan( prev ) ) {\n\t\t\t\tFLG = true;\n\t\t\t}\n\t\t}\n\t}\n\tx.length = ptr;\n\treturn x;\n}\n\n\n// MAIN //\n\n/**\n* Removes consecutive duplicated values.\n*\n* @param {Array} x - input array\n* @param {PositiveInteger} limit - number of allowed consecutive duplicates\n* @param {boolean} equalNaNs - boolean indicating whether NaNs should be considered equal\n* @returns {Array} de-duplicated values\n*\n* @example\n* var x = [ 1, 1, 2, 3, 3 ];\n*\n* var y = dedupe( x, 1, false );\n* // returns [ 1, 2, 3 ]\n*\n* var bool = ( x === y );\n* // returns true\n*\n* @example\n* var x = [ 1, 1, 1, 2, 1, 1, 3, 3 ];\n*\n* var y = dedupe( x, 2, false );\n* // returns [ 1, 1, 2, 1, 1, 3, 3 ]\n*\n* var bool = ( x === y );\n* // returns true\n*/\nfunction dedupe( x, limit, equalNaNs ) {\n\tif ( equalNaNs ) {\n\t\treturn dedupeEqualNaNs( x, limit );\n\t}\n\treturn dedupeInPlace( x, limit );\n}\n\n\n// EXPORTS //\n\nmodule.exports = dedupe;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove consecutive duplicated values.\n*\n* @module @stdlib/array/base/dedupe\n*\n* @example\n* var dedupe = require( '@stdlib/array/base/dedupe' );\n*\n* var x = [ 1, 1, 2, 3, 3 ];\n*\n* var y = dedupe( x, 1, false );\n* // returns [ 1, 2, 3 ]\n*\n* var bool = ( x === y );\n* // returns true\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isComplex128Array = require( './../../../base/assert/is-complex128array' );\nvar isComplex64Array = require( './../../../base/assert/is-complex64array' );\nvar arraylike2object = require( './../../../base/arraylike2object' );\nvar reinterpret128 = require( '@stdlib/strided/base/reinterpret-complex128' );\nvar reinterpret64 = require( '@stdlib/strided/base/reinterpret-complex64' );\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether all elements in an array are truthy.\n*\n* @private\n* @param {Collection} x - input array\n* @returns {boolean} boolean indicating whether all elements are truthy\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = internal( x );\n* // returns true\n*\n* @example\n* var x = [ 1, 2, 0, 4 ];\n*\n* var out = internal( x );\n* // returns false\n*/\nfunction internal( x ) {\n\tvar i;\n\tfor ( i = 0; i < x.length; i++ ) {\n\t\tif ( !x[ i ] ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n/**\n* Tests whether all elements in a complex number array.\n*\n* @private\n* @param {Collection} x - underlying data buffer\n* @returns {boolean} boolean indicating whether all elements are truthy\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = internalComplex( x );\n* // returns true\n*\n* @example\n* var x = [ 1, 2, 0, 4 ];\n*\n* var out = internalComplex( x );\n* // returns true\n*\n* @example\n* var x = [ 1, 2, 0, 0 ];\n*\n* var out = internalComplex( x );\n* // returns false\n*/\nfunction internalComplex( x ) {\n\tvar i;\n\tfor ( i = 0; i < x.length; i += 2 ) {\n\t\tif ( !( x[ i ] || x[ i+1 ] ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n/**\n* Tests whether all elements in an array are truthy.\n*\n* @private\n* @param {Object} x - input array object\n* @returns {boolean} boolean indicating whether all elements are truthy\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' );\n* var arraylike2object = require( '@stdlib/array/base/arraylike2object' );\n*\n* var x = arraylike2object( toAccessorArray( [ 1, 2, 3, 4 ] ) );\n*\n* var out = accessors( x );\n* // returns true\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' );\n* var arraylike2object = require( '@stdlib/array/base/arraylike2object' );\n*\n* var x = arraylike2object( toAccessorArray( [ 1, 2, 0, 4 ] ) );\n*\n* var out = accessors( x );\n* // returns false\n*/\nfunction accessors( x ) {\n\tvar data;\n\tvar get;\n\tvar i;\n\n\tdata = x.data;\n\tget = x.accessors[ 0 ];\n\n\tfor ( i = 0; i < data.length; i++ ) {\n\t\tif ( !get( data, i ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n\n// MAIN //\n\n/**\n* Tests whether all elements in an array are truthy.\n*\n* @param {Collection} x - input array\n* @returns {boolean} boolean indicating whether all elements are truthy\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = every( x );\n* // returns true\n*\n* @example\n* var x = [ 1, 2, 0, 4 ];\n*\n* var out = every( x );\n* // returns false\n*/\nfunction every( x ) {\n\tvar obj = arraylike2object( x );\n\tif ( obj.accessorProtocol ) {\n\t\t// If provided a complex number array, reinterpret as a real typed array and test interleaved real and imaginary components, where we consider a complex number to be truthy if at least one component is non-zero...\n\t\tif ( isComplex128Array( x ) ) {\n\t\t\treturn internalComplex( reinterpret128( x, 0 ) );\n\t\t}\n\t\tif ( isComplex64Array( x ) ) {\n\t\t\treturn internalComplex( reinterpret64( x, 0 ) );\n\t\t}\n\t\treturn accessors( obj );\n\t}\n\treturn internal( x );\n}\n\n\n// EXPORTS //\n\nmodule.exports = every;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test whether all elements in a collection are truthy.\n*\n* @module @stdlib/array/base/every\n*\n* @example\n* var every = require( '@stdlib/array/base/every' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = every( x );\n* // returns true\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar arraylike2object = require( './../../../base/arraylike2object' );\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether an object has a specified method.\n*\n* @private\n* @param {Object} obj - input object\n* @param {string} method - method name\n* @returns {boolean} boolean indicating whether an object has a specified method\n*\n* @example\n* var bool = hasMethod( [], 'every' );\n* // returns true\n*\n* @example\n* var bool = hasMethod( [], 'beep' );\n* // returns false\n*/\nfunction hasMethod( obj, method ) {\n\treturn ( typeof obj[ method ] === 'function' );\n}\n\n/**\n* Tests whether all elements in an array pass a test implemented by a predicate function.\n*\n* @private\n* @param {Collection} x - input array\n* @param {Function} predicate - test function\n* @param {*} thisArg - execution context\n* @returns {boolean} boolean indicating whether all elements pass a test\n*\n* @example\n* function isPositive( v ) {\n*     return v > 0;\n* }\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = internal( x, isPositive );\n* // returns true\n*/\nfunction internal( x, predicate, thisArg ) {\n\tvar i;\n\tfor ( i = 0; i < x.length; i++ ) {\n\t\tif ( !predicate.call( thisArg, x[ i ], i, x ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n/**\n* Tests whether all elements in an array pass a test implemented by a predicate function.\n*\n* @private\n* @param {Object} x - input array object\n* @param {Function} predicate - test function\n* @param {*} thisArg - execution context\n* @returns {boolean} boolean indicating whether all elements pass a test\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' );\n* var arraylike2object = require( '@stdlib/array/base/arraylike2object' );\n*\n* function isPositive( v ) {\n*     return v > 0;\n* }\n*\n* var x = arraylike2object( toAccessorArray( [ 1, 2, 3, 4 ] ) );\n*\n* var out = accessors( x, isPositive );\n* // returns true\n*/\nfunction accessors( x, predicate, thisArg ) {\n\tvar data;\n\tvar get;\n\tvar i;\n\n\tdata = x.data;\n\tget = x.accessors[ 0 ];\n\n\tfor ( i = 0; i < data.length; i++ ) {\n\t\tif ( !predicate.call( thisArg, get( data, i ), i, data ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n\n// MAIN //\n\n/**\n* Tests whether all elements in an array pass a test implemented by a predicate function.\n*\n* @param {Collection} x - input array\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - execution context\n* @returns {boolean} boolean indicating whether all elements pass a test\n*\n* @example\n* function isPositive( v ) {\n*     return v > 0;\n* }\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = everyBy( x, isPositive );\n* // returns true\n*/\nfunction everyBy( x, predicate, thisArg ) {\n\tvar obj;\n\tif ( hasMethod( x, 'every' ) ) {\n\t\treturn x.every( predicate, thisArg );\n\t}\n\tobj = arraylike2object( x );\n\tif ( obj.accessorProtocol ) {\n\t\treturn accessors( obj, predicate, thisArg );\n\t}\n\treturn internal( x, predicate, thisArg );\n}\n\n\n// EXPORTS //\n\nmodule.exports = everyBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test whether all elements in a collection pass a test implemented by a predicate function.\n*\n* @module @stdlib/array/base/every-by\n*\n* @example\n* var everyBy = require( '@stdlib/array/base/every-by' );\n*\n* function isPositive( v ) {\n*     return v > 0;\n* }\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = everyBy( x, isPositive );\n* // returns true\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Returns a filled \"generic\" array according to a provided callback function.\n*\n* @param {NonNegativeInteger} len - array length\n* @param {Callback} clbk - callback function\n* @param {*} [thisArg] - callback function execution context\n* @returns {Array} filled array\n*\n* @example\n* var constantFunction = require( '@stdlib/utils/constant-function' );\n*\n* var out = filledBy( 3, constantFunction( 'beep' ) );\n* // returns [ 'beep', 'beep', 'beep' ]\n*/\nfunction filledBy( len, clbk, thisArg ) {\n\tvar arr;\n\tvar i;\n\n\t// Manually push elements in order to ensure \"fast\" elements...\n\tarr = [];\n\tfor ( i = 0; i < len; i++ ) {\n\t\tarr.push( clbk.call( thisArg, i ) );\n\t}\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = filledBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled \"generic\" array according to a provided callback function.\n*\n* @module @stdlib/array/base/filled-by\n*\n* @example\n* var constantFunction = require( '@stdlib/utils/constant-function' );\n* var filledBy = require( '@stdlib/array/base/filled-by' );\n*\n* var out = filledBy( 3, constantFunction( 'beep' ) );\n* // returns [ 'beep', 'beep', 'beep' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled = require( './../../../base/filled' );\n\n\n// MAIN //\n\n/**\n* Returns a filled two-dimensional nested array.\n*\n* @param {*} value - fill value\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {Array} filled array\n*\n* @example\n* var out = filled2d( 0.0, [ 1, 3 ] );\n* // returns [ [ 0.0, 0.0, 0.0 ] ]\n*\n* @example\n* var out = filled2d( 'beep', [ 3, 1 ] );\n* // returns [ [ 'beep' ], [ 'beep' ], [ 'beep' ] ]\n*/\nfunction filled2d( value, shape ) {\n\tvar arr;\n\tvar S0;\n\tvar S1;\n\tvar i;\n\n\tS0 = shape[ 1 ];\n\tS1 = shape[ 0 ];\n\n\t// Manually push elements in order to ensure \"fast\" elements...\n\tarr = [];\n\tfor ( i = 0; i < S1; i++ ) {\n\t\tarr.push( filled( value, S0 ) );\n\t}\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = filled2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled two-dimensional nested array.\n*\n* @module @stdlib/array/base/filled2d\n*\n* @example\n* var filled2d = require( '@stdlib/array/base/filled2d' );\n*\n* var out = filled2d( 0.0, [ 1, 3 ] );\n* // returns [ [ 0.0, 0.0, 0.0 ] ]\n*\n* @example\n* var filled2d = require( '@stdlib/array/base/filled2d' );\n*\n* var out = filled2d( 'beep', [ 3, 1 ] );\n* // returns [ [ 'beep' ], [ 'beep' ], [ 'beep' ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Returns a filled two-dimensional nested array according to a provided callback function.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} clbk - callback function\n* @param {*} [thisArg] - callback function execution context\n* @returns {Array} filled array\n*\n* @example\n* var constantFunction = require( '@stdlib/utils/constant-function' );\n*\n* var out = filled2dBy( [ 1, 3 ], constantFunction( 'beep' ) );\n* // returns [ [ 'beep', 'beep', 'beep' ] ]\n*/\nfunction filled2dBy( shape, clbk, thisArg ) {\n\tvar arr;\n\tvar a0;\n\tvar S0;\n\tvar S1;\n\tvar i;\n\tvar j;\n\n\tS0 = shape[ 1 ];\n\tS1 = shape[ 0 ];\n\n\t// Manually push elements in order to ensure \"fast\" elements...\n\tarr = [];\n\tfor ( i = 0; i < S1; i++ ) {\n\t\ta0 = [];\n\t\tfor ( j = 0; j < S0; j++ ) {\n\t\t\ta0.push( clbk.call( thisArg, [ i, j ] ) );\n\t\t}\n\t\tarr.push( a0 );\n\t}\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = filled2dBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled two-dimensional nested array according to a provided callback function.\n*\n* @module @stdlib/array/base/filled2d-by\n*\n* @example\n* var constantFunction = require( '@stdlib/utils/constant-function' );\n* var filled2dBy = require( '@stdlib/array/base/filled2d-by' );\n*\n* var out = filled2dBy( [ 1, 3 ], constantFunction( 'beep' ) );\n* // returns [ [ 'beep', 'beep', 'beep' ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled = require( './../../../base/filled' );\n\n\n// MAIN //\n\n/**\n* Returns a filled three-dimensional nested array.\n*\n* @param {*} value - fill value\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {Array} filled array\n*\n* @example\n* var out = filled3d( 0.0, [ 1, 1, 3 ] );\n* // returns [ [ [ 0.0, 0.0, 0.0 ] ] ]\n*\n* @example\n* var out = filled3d( 'beep', [ 1, 3, 1 ] );\n* // returns [ [ [ 'beep' ], [ 'beep' ], [ 'beep' ] ] ]\n*/\nfunction filled3d( value, shape ) {\n\tvar out;\n\tvar a1;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i2;\n\tvar i1;\n\n\tS0 = shape[ 2 ];\n\tS1 = shape[ 1 ];\n\tS2 = shape[ 0 ];\n\n\t// Manually push elements in order to ensure \"fast\" elements...\n\tout = [];\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\ta1 = [];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\ta1.push( filled( value, S0 ) );\n\t\t}\n\t\tout.push( a1 );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = filled3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled three-dimensional nested array.\n*\n* @module @stdlib/array/base/filled3d\n*\n* @example\n* var filled3d = require( '@stdlib/array/base/filled3d' );\n*\n* var out = filled3d( 0.0, [ 1, 1, 3 ] );\n* // returns [ [ [ 0.0, 0.0, 0.0 ] ] ]\n*\n* @example\n* var filled3d = require( '@stdlib/array/base/filled3d' );\n*\n* var out = filled3d( 'beep', [ 1, 3, 1 ] );\n* // returns [ [ [ 'beep' ], [ 'beep' ], [ 'beep' ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Returns a filled three-dimensional nested array according to a provided callback function.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} clbk - callback function\n* @param {*} [thisArg] - callback function execution context\n* @returns {Array} filled array\n*\n* @example\n* var constantFunction = require( '@stdlib/utils/constant-function' );\n*\n* var out = filled3dBy( [ 1, 1, 3 ], constantFunction( 'beep' ) );\n* // returns [ [ [ 'beep', 'beep', 'beep' ] ] ]\n*/\nfunction filled3dBy( shape, clbk, thisArg ) {\n\tvar arr;\n\tvar a0;\n\tvar a1;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\n\tS0 = shape[ 2 ];\n\tS1 = shape[ 1 ];\n\tS2 = shape[ 0 ];\n\n\t// Manually push elements in order to ensure \"fast\" elements...\n\tarr = [];\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\ta1 = [];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\ta0 = [];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\ta0.push( clbk.call( thisArg, [ i2, i1, i0 ] ) );\n\t\t\t}\n\t\t\ta1.push( a0 );\n\t\t}\n\t\tarr.push( a1 );\n\t}\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = filled3dBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled three-dimensional nested array according to a provided callback function.\n*\n* @module @stdlib/array/base/filled3d-by\n*\n* @example\n* var constantFunction = require( '@stdlib/utils/constant-function' );\n* var filled3dBy = require( '@stdlib/array/base/filled3d-by' );\n*\n* var out = filled3dBy( [ 1, 1, 3 ], constantFunction( 'beep' ) );\n* // returns [ [ [ 'beep', 'beep', 'beep' ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled = require( './../../../base/filled' );\n\n\n// MAIN //\n\n/**\n* Returns a filled four-dimensional nested array.\n*\n* @param {*} value - fill value\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {Array} filled array\n*\n* @example\n* var out = filled4d( 0.0, [ 1, 1, 1, 3 ] );\n* // returns [ [ [ [ 0.0, 0.0, 0.0 ] ] ] ]\n*\n* @example\n* var out = filled4d( 'beep', [ 1, 1, 3, 1 ] );\n* // returns [ [ [ [ 'beep' ], [ 'beep' ], [ 'beep' ] ] ] ]\n*/\nfunction filled4d( value, shape ) {\n\tvar out;\n\tvar a1;\n\tvar a2;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\n\tS0 = shape[ 3 ];\n\tS1 = shape[ 2 ];\n\tS2 = shape[ 1 ];\n\tS3 = shape[ 0 ];\n\n\t// Manually push elements in order to ensure \"fast\" elements...\n\tout = [];\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\ta2 = [];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\ta1 = [];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\ta1.push( filled( value, S0 ) );\n\t\t\t}\n\t\t\ta2.push( a1 );\n\t\t}\n\t\tout.push( a2 );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = filled4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled four-dimensional nested array.\n*\n* @module @stdlib/array/base/filled4d\n*\n* @example\n* var filled4d = require( '@stdlib/array/base/filled4d' );\n*\n* var out = filled4d( 0.0, [ 1, 1, 1, 3 ] );\n* // returns [ [ [ [ 0.0, 0.0, 0.0 ] ] ] ]\n*\n* @example\n* var filled4d = require( '@stdlib/array/base/filled4d' );\n*\n* var out = filled4d( 'beep', [ 1, 1, 3, 1 ] );\n* // returns [ [ [ [ 'beep' ], [ 'beep' ], [ 'beep' ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Returns a filled four-dimensional nested array according to a provided callback function.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} clbk - callback function\n* @param {*} [thisArg] - callback function execution context\n* @returns {Array} filled array\n*\n* @example\n* var constantFunction = require( '@stdlib/utils/constant-function' );\n*\n* var out = filled4dBy( [ 1, 1, 1, 3 ], constantFunction( 'beep' ) );\n* // returns [ [ [ [ 'beep', 'beep', 'beep' ] ] ] ]\n*/\nfunction filled4dBy( shape, clbk, thisArg ) {\n\tvar arr;\n\tvar a0;\n\tvar a1;\n\tvar a2;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\n\tS0 = shape[ 3 ];\n\tS1 = shape[ 2 ];\n\tS2 = shape[ 1 ];\n\tS3 = shape[ 0 ];\n\n\t// Manually push elements in order to ensure \"fast\" elements...\n\tarr = [];\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\ta2 = [];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\ta1 = [];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\ta0 = [];\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\ta0.push( clbk.call( thisArg, [ i3, i2, i1, i0 ] ) );\n\t\t\t\t}\n\t\t\t\ta1.push( a0 );\n\t\t\t}\n\t\t\ta2.push( a1 );\n\t\t}\n\t\tarr.push( a2 );\n\t}\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = filled4dBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled four-dimensional nested array according to a provided callback function.\n*\n* @module @stdlib/array/base/filled4d-by\n*\n* @example\n* var constantFunction = require( '@stdlib/utils/constant-function' );\n* var filled4dBy = require( '@stdlib/array/base/filled4d-by' );\n*\n* var out = filled4dBy( [ 1, 1, 1, 3 ], constantFunction( 'beep' ) );\n* // returns [ [ [ [ 'beep', 'beep', 'beep' ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled = require( './../../../base/filled' );\n\n\n// MAIN //\n\n/**\n* Returns a filled five-dimensional nested array.\n*\n* @param {*} value - fill value\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {Array} filled array\n*\n* @example\n* var out = filled5d( 0.0, [ 1, 1, 1, 1, 3 ] );\n* // returns [ [ [ [ [ 0.0, 0.0, 0.0 ] ] ] ] ]\n*\n* @example\n* var out = filled5d( 'beep', [ 1, 1, 1, 3, 1 ] );\n* // returns [ [ [ [ [ 'beep' ], [ 'beep' ], [ 'beep' ] ] ] ] ]\n*/\nfunction filled5d( value, shape ) {\n\tvar out;\n\tvar a1;\n\tvar a2;\n\tvar a3;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\n\tS0 = shape[ 4 ];\n\tS1 = shape[ 3 ];\n\tS2 = shape[ 2 ];\n\tS3 = shape[ 1 ];\n\tS4 = shape[ 0 ];\n\n\t// Manually push elements in order to ensure \"fast\" elements...\n\tout = [];\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\ta3 = [];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\ta2 = [];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\ta1 = [];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\ta1.push( filled( value, S0 ) );\n\t\t\t\t}\n\t\t\t\ta2.push( a1 );\n\t\t\t}\n\t\t\ta3.push( a2 );\n\t\t}\n\t\tout.push( a3 );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = filled5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled five-dimensional nested array.\n*\n* @module @stdlib/array/base/filled5d\n*\n* @example\n* var filled5d = require( '@stdlib/array/base/filled5d' );\n*\n* var out = filled5d( 0.0, [ 1, 1, 1, 1, 3 ] );\n* // returns [ [ [ [ [ 0.0, 0.0, 0.0 ] ] ] ] ]\n*\n* @example\n* var filled5d = require( '@stdlib/array/base/filled5d' );\n*\n* var out = filled5d( 'beep', [ 1, 1, 1, 3, 1 ] );\n* // returns [ [ [ [ [ 'beep' ], [ 'beep' ], [ 'beep' ] ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Returns a filled five-dimensional nested array according to a provided callback function.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} clbk - callback function\n* @param {*} [thisArg] - callback function execution context\n* @returns {Array} filled array\n*\n* @example\n* var constantFunction = require( '@stdlib/utils/constant-function' );\n*\n* var out = filled5dBy( [ 1, 1, 1, 1, 3 ], constantFunction( 'beep' ) );\n* // returns [ [ [ [ [ 'beep', 'beep', 'beep' ] ] ] ] ]\n*/\nfunction filled5dBy( shape, clbk, thisArg ) {\n\tvar arr;\n\tvar a0;\n\tvar a1;\n\tvar a2;\n\tvar a3;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\n\tS0 = shape[ 4 ];\n\tS1 = shape[ 3 ];\n\tS2 = shape[ 2 ];\n\tS3 = shape[ 1 ];\n\tS4 = shape[ 0 ];\n\n\t// Manually push elements in order to ensure \"fast\" elements...\n\tarr = [];\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\ta3 = [];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\ta2 = [];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\ta1 = [];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\ta0 = [];\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\ta0.push( clbk.call( thisArg, [ i4, i3, i2, i1, i0 ] ) );\n\t\t\t\t\t}\n\t\t\t\t\ta1.push( a0 );\n\t\t\t\t}\n\t\t\t\ta2.push( a1 );\n\t\t\t}\n\t\t\ta3.push( a2 );\n\t\t}\n\t\tarr.push( a3 );\n\t}\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = filled5dBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled five-dimensional nested array according to a provided callback function.\n*\n* @module @stdlib/array/base/filled5d-by\n*\n* @example\n* var constantFunction = require( '@stdlib/utils/constant-function' );\n* var filled5dBy = require( '@stdlib/array/base/filled5d-by' );\n*\n* var out = filled5dBy( [ 1, 1, 1, 1, 3 ], constantFunction( 'beep' ) );\n* // returns [ [ [ [ [ 'beep', 'beep', 'beep' ] ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled = require( './../../../base/filled' );\n\n\n// FUNCTIONS //\n\n/**\n* Recursive fills an array.\n*\n* @private\n* @param {*} value - fill value\n* @param {NonNegativeInteger} ndims - number of dimensions\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {NonNegativeInteger} dim - dimension index\n* @param {Array} out - output array\n* @returns {Array} output array\n*/\nfunction recurse( value, ndims, shape, dim, out ) {\n\tvar S;\n\tvar d;\n\tvar i;\n\n\tS = shape[ dim ];\n\n\t// Check whether we're filling the last dimension:\n\td = dim + 1;\n\tif ( d === ndims ) {\n\t\treturn filled( value, S );\n\t}\n\n\t// Fill nested dimensions...\n\tfor ( i = 0; i < S; i++ ) {\n\t\tout.push( recurse( value, ndims, shape, d, [] ) );\n\t}\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Returns a filled two-dimensional nested array.\n*\n* @param {*} value - fill value\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {Array} filled array\n*\n* @example\n* var out = fillednd( 0.0, [ 3 ] );\n* // returns [ 0.0, 0.0, 0.0 ]\n*\n* @example\n* var out = fillednd( 0.0, [ 1, 3 ] );\n* // returns [ [ 0.0, 0.0, 0.0 ] ]\n*\n* @example\n* var out = fillednd( 'beep', [ 3, 1 ] );\n* // returns [ [ 'beep' ], [ 'beep' ], [ 'beep' ] ]\n*/\nfunction fillednd( value, shape ) {\n\treturn recurse( value, shape.length, shape, 0, [] );\n}\n\n\n// EXPORTS //\n\nmodule.exports = fillednd;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled n-dimensional nested array.\n*\n* @module @stdlib/array/base/fillednd\n*\n* @example\n* var fillednd = require( '@stdlib/array/base/fillednd' );\n*\n* var out = fillednd( 0.0, [ 1, 3 ] );\n* // returns [ [ 0.0, 0.0, 0.0 ] ]\n*\n* @example\n* var fillednd = require( '@stdlib/array/base/fillednd' );\n*\n* var out = fillednd( 'beep', [ 3, 1 ] );\n* // returns [ [ 'beep' ], [ 'beep' ], [ 'beep' ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// FUNCTIONS //\n\n/**\n* Recursive fills an array.\n*\n* @private\n* @param {NonNegativeInteger} ndims - number of dimensions\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {NonNegativeInteger} dim - dimension index\n* @param {NonNegativeIntegerArray} indices - outer array element indices\n* @param {Array} out - output array\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n* @returns {Array} output array\n*/\nfunction recurse( ndims, shape, dim, indices, out, clbk, thisArg ) {\n\tvar idx;\n\tvar FLG;\n\tvar S;\n\tvar d;\n\tvar i;\n\n\t// Check whether we're filling the last dimension:\n\td = dim + 1;\n\tFLG = ( d === ndims );\n\n\tS = shape[ dim ];\n\tfor ( i = 0; i < S; i++ ) {\n\t\tidx = indices.slice(); // we explicitly copy in order to avoid potential mutation when calling `clbk`\n\t\tidx.push( i );\n\t\tif ( FLG ) {\n\t\t\tout.push( clbk.call( thisArg, idx ) );\n\t\t} else {\n\t\t\tout.push( recurse( ndims, shape, d, idx, [], clbk, thisArg ) );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Returns a filled two-dimensional nested array according to a provided callback function.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n* @returns {Array} filled array\n*\n* @example\n* var constantFunction = require( '@stdlib/utils/constant-function' );\n*\n* var out = filledndBy( [ 3, 1 ], constantFunction( 'beep' ) );\n* // returns [ [ 'beep' ], [ 'beep' ], [ 'beep' ] ]\n*/\nfunction filledndBy( shape, clbk, thisArg ) {\n\treturn recurse( shape.length, shape, 0, [], [], clbk, thisArg );\n}\n\n\n// EXPORTS //\n\nmodule.exports = filledndBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled n-dimensional nested array according to a callback function.\n*\n* @module @stdlib/array/base/fillednd-by\n*\n* @example\n* var constantFunction = require( '@stdlib/utils/constant-function' );\n* var filledndBy = require( '@stdlib/array/base/fillednd-by' );\n*\n* var out = filledndBy( [ 3, 1 ], constantFunction( 'beep' ) );\n* // returns [ [ 'beep' ], [ 'beep' ], [ 'beep' ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Returns the first element of an array-like object.\n*\n* @param {Collection} arr - input array\n* @returns {*} - first element\n*\n* @example\n* var out = first( [ 1, 2, 3 ] );\n* // returns 1\n*/\nfunction first( arr ) {\n\tvar get;\n\n\tif ( arr.length === 0 ) {\n\t\treturn;\n\t}\n\t// Resolve an accessor for retrieving input array elements:\n\tget = resolveGetter( arr );\n\n\t// Return the first element:\n\treturn get( arr, 0 );\n}\n\n\n// EXPORTS //\n\nmodule.exports = first;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the first element of an array-like object.\n*\n* @module @stdlib/array/base/first\n*\n* @example\n* var first = require( '@stdlib/array/base/first' );\n*\n* var out = first( [ 1, 2, 3 ] );\n* // returns 1\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar shape2strides = require( '@stdlib/ndarray/base/shape2strides' );\nvar vind2bind = require( '@stdlib/ndarray/base/vind2bind' );\nvar numel = require( '@stdlib/ndarray/base/numel' );\nvar grev = require( '@stdlib/blas/ext/base/grev' );\nvar zeros = require( './../../../base/zeros' );\n\n\n// VARIABLES //\n\nvar MODE = 'throw';\n\n\n// FUNCTIONS //\n\n/**\n* Copies a specified number of array elements to a provided array.\n*\n* @private\n* @param {Array} x - input array\n* @param {NonNegativeInteger} N - number of elements to copy\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0 ];\n* copy( x, 3, out, 1, 0 );\n*\n* var o = out;\n* // returns [ 1, 2, 3 ]\n*/\nfunction copy( x, N, out, stride, offset ) {\n\tvar i;\n\tfor ( i = 0; i < N; i++ ) {\n\t\tout[ offset ] = x[ i ];\n\t\toffset += stride;\n\t}\n}\n\n/**\n* Recursively flattens an array in lexicographic order.\n*\n* @private\n* @param {Array} x - array to flatten\n* @param {NonNegativeInteger} ndims - number of dimensions in the input array\n* @param {NonNegativeIntegerArray} shape - shape of the input array\n* @param {NonNegativeInteger} dim - dimension index\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @returns {NonNegativeInteger} offset for next output array element\n*/\nfunction recurseLexicographic( x, ndims, shape, dim, out, stride, offset ) {\n\tvar FLG;\n\tvar S;\n\tvar d;\n\tvar i;\n\n\t// Check whether we've reached the last dimension:\n\td = dim + 1;\n\tFLG = ( d === ndims );\n\n\tS = shape[ dim ];\n\tfor ( i = 0; i < S; i++ ) {\n\t\tif ( FLG ) {\n\t\t\tout[ offset ] = x[ i ];\n\t\t\toffset += stride;\n\t\t} else {\n\t\t\toffset = recurseLexicographic( x[ i ], ndims, shape, d, out, stride, offset ); // eslint-disable-line max-len\n\t\t}\n\t}\n\treturn offset;\n}\n\n/**\n* Flattens an array in colexicographic order.\n*\n* @private\n* @param {Array} x - array to flatten\n* @param {NonNegativeInteger} ndims - number of dimensions in the input array\n* @param {NonNegativeIntegerArray} shape - shape of the input array\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n*/\nfunction flattenColexicographic( x, ndims, shape, out, stride, offset ) {\n\tvar len;\n\tvar tmp;\n\tvar ord;\n\tvar sh;\n\tvar sx;\n\tvar j;\n\tvar i;\n\n\t// Note that, in contrast to lexicographic iteration, we cannot readily define a straightforward recursive definition for colexicographic iteration. Accordingly, we have to perform a workaround in which we first flatten in lexicographic order and then perform an out-of-place transposition to return an array in colexicographic order.\n\n\t// Determine how many elements will be in the output array:\n\tlen = numel( shape );\n\n\t// For input arrays having an arbitrary number of dimensions, first flatten in lexicographic order:\n\ttmp = zeros( len );\n\trecurseLexicographic( x, ndims, shape, 0, tmp, 1, 0 );\n\n\t// Define the memory layout:\n\tord = 'row-major';\n\n\t// Generate a stride array for lexicographic order:\n\tsx = shape2strides( shape, ord );\n\n\t// Reverse the dimensions and strides (i.e., define the shape and strides of the transpose):\n\tsh = zeros( ndims );\n\tcopy( shape, ndims, sh, 1, 0 );\n\tgrev( ndims, sh, 1 );\n\tgrev( ndims, sx, 1 );\n\n\t// Iterate over each element based on the linear **view** index (note: this has negative performance implications due to lack of data locality)...\n\tfor ( i = 0; i < len; i++ ) {\n\t\tj = vind2bind( sh, sx, 0, ord, i, MODE );\n\t\tout[ offset ] = tmp[ j ];\n\t\toffset += stride;\n\t}\n}\n\n\n// MAIN //\n\n/**\n* Flattens an n-dimensional nested array and assigns elements to a provided output array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array index offset\n* @returns {Collection} output array\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten( x, [ 2, 2 ], false, new Float64Array( 4 ), 1, 0 );\n* // returns <Float64Array>[ 1, 2, 3, 4 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten( x, [ 2, 2 ], true, new Float64Array( 4 ), 1, 0 );\n* // returns <Float64Array>[ 1, 3, 2, 4 ]\n*/\nfunction flatten( x, shape, colexicographic, out, stride, offset ) {\n\tvar ndims = shape.length;\n\tif ( ndims === 0 ) { // 0-dimensional array\n\t\treturn out;\n\t}\n\tif ( ndims === 1 ) { // 1-dimensional array\n\t\t// For 1-dimensional arrays, we can perform a simple copy:\n\t\tcopy( x, shape[ 0 ], out, stride, offset );\n\t\treturn out;\n\t}\n\tif ( colexicographic ) {\n\t\tflattenColexicographic( x, ndims, shape, out, stride, offset );\n\t\treturn out;\n\t}\n\trecurseLexicographic( x, ndims, shape, 0, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar numel = require( '@stdlib/ndarray/base/numel' );\nvar zeros = require( './../../../base/zeros' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\n/**\n* Flattens an n-dimensional nested array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @returns {Array} flattened array\n*\n* @example\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten( x, [ 2, 2 ], false );\n* // returns [ 1, 2, 3, 4 ]\n*\n* @example\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten( x, [ 2, 2 ], true );\n* // returns [ 1, 3, 2, 4 ]\n*/\nfunction flatten( x, shape, colexicographic ) {\n\tvar out = zeros( numel( shape ) );\n\treturn assign( x, shape, colexicographic, out, 1, 0 );\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Flatten an n-dimensional nested array.\n*\n* @module @stdlib/array/base/flatten\n*\n* @example\n* var flatten = require( '@stdlib/array/base/flatten' );\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten( x, [ 2, 2 ], false );\n* // returns [ 1, 2, 3, 4 ]\n*\n* @example\n* var flatten = require( '@stdlib/array/base/flatten' );\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten( x, [ 2, 2 ], true );\n* // returns [ 1, 3, 2, 4 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var flatten = require( '@stdlib/array/base/flatten' );\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = new Float64Array( 4 );\n* var y = flatten.assign( x, [ 2, 2 ], true, out, 1, 0 );\n* // returns <Float64Array>[ 1, 3, 2, 4 ]\n*\n* var bool = ( y === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-len */\n\n'use strict';\n\n// MODULES //\n\nvar shape2strides = require( '@stdlib/ndarray/base/shape2strides' );\nvar vind2bind = require( '@stdlib/ndarray/base/vind2bind' );\nvar numel = require( '@stdlib/ndarray/base/numel' );\nvar grev = require( '@stdlib/blas/ext/base/grev' );\nvar zeros = require( './../../../base/zeros' );\nvar copy = require( './../../../base/copy-indexed' );\n\n\n// VARIABLES //\n\nvar MODE = 'throw';\n\n\n// FUNCTIONS //\n\n/**\n* Copies a specified number of array elements to a provided array according to a callback function.\n*\n* @private\n* @param {Array} x - input array\n* @param {NonNegativeInteger} N - number of elements to copy\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n*\n* @example\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0 ];\n* copyBy( x, 3, out, 1, 0, scale );\n*\n* var o = out;\n* // returns [ 2, 4, 6 ]\n*/\nfunction copyBy( x, N, out, stride, offset, clbk, thisArg ) {\n\tvar i;\n\tfor ( i = 0; i < N; i++ ) {\n\t\tout[ offset ] = clbk.call( thisArg, x[ i ], [ i ], x );\n\t\toffset += stride;\n\t}\n}\n\n/**\n* Recursively flattens an array in lexicographic order.\n*\n* @private\n* @param {Array} orig - original input array\n* @param {Array} x - array to flatten\n* @param {NonNegativeInteger} ndims - number of dimensions in the input array\n* @param {NonNegativeIntegerArray} shape - shape of the input array\n* @param {NonNegativeInteger} dim - dimension index\n* @param {NonNegativeIntegerArray} indices - outer array element indices\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n* @returns {NonNegativeInteger} offset for next output array element\n*/\nfunction recurseLexicographic( orig, x, ndims, shape, dim, indices, out, stride, offset, clbk, thisArg ) { // eslint-disable-line max-params\n\tvar FLG;\n\tvar idx;\n\tvar S;\n\tvar d;\n\tvar i;\n\n\t// Check whether we've reached the last dimension:\n\td = dim + 1;\n\tFLG = ( d === ndims );\n\n\tS = shape[ dim ];\n\tfor ( i = 0; i < S; i++ ) {\n\t\tidx = indices.slice(); // we explicitly copy in order to avoid potential mutation when calling `clbk`\n\t\tidx.push( i );\n\t\tif ( FLG ) {\n\t\t\tout[ offset ] = clbk.call( thisArg, x[ i ], idx, orig );\n\t\t\toffset += stride;\n\t\t} else {\n\t\t\toffset = recurseLexicographic( orig, x[ i ], ndims, shape, d, idx, out, stride, offset, clbk, thisArg );\n\t\t}\n\t}\n\treturn offset;\n}\n\n/**\n* Flattens an array in colexicographic order.\n*\n* @private\n* @param {Array} x - array to flatten\n* @param {NonNegativeInteger} ndims - number of dimensions in the input array\n* @param {NonNegativeIntegerArray} shape - shape of the input array\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n*/\nfunction flattenColexicographic( x, ndims, shape, out, stride, offset, clbk, thisArg ) {\n\tvar len;\n\tvar tmp;\n\tvar ord;\n\tvar sh;\n\tvar sx;\n\tvar j;\n\tvar i;\n\n\t// Note that, in contrast to lexicographic iteration, we cannot readily define a straightforward recursive definition for colexicographic iteration. Accordingly, we have to perform a workaround in which we first flatten in lexicographic order and then perform an out-of-place transposition to return an array in colexicographic order.\n\n\t// Determine how many elements will be in the output array:\n\tlen = numel( shape );\n\n\t// For input arrays having an arbitrary number of dimensions, first flatten in lexicographic order:\n\ttmp = zeros( len );\n\trecurseLexicographic( x, x, ndims, shape, 0, [], tmp, 1, 0, clbk, thisArg );\n\n\t// Define the memory layout:\n\tord = 'row-major';\n\n\t// Generate a stride array for lexicographic order:\n\tsx = shape2strides( shape, ord );\n\n\t// Reverse the dimensions and strides (i.e., define the shape and strides of the transpose):\n\tsh = copy( shape );\n\tgrev( ndims, sh, 1 );\n\tgrev( ndims, sx, 1 );\n\n\t// Iterate over each element based on the linear **view** index (note: this has negative performance implications due to lack of data locality)...\n\tfor ( i = 0; i < len; i++ ) {\n\t\tj = vind2bind( sh, sx, 0, ord, i, MODE );\n\t\tout[ offset ] = tmp[ j ];\n\t\toffset += stride;\n\t}\n}\n\n\n// MAIN //\n\n/**\n* Flattens an n-dimensional nested array according to a callback function and assigns elements to a provided output array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array index offset\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n* @returns {Collection} output array\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flattenBy( x, [ 2, 2 ], false, new Float64Array( 4 ), 1, 0, scale );\n* // returns <Float64Array>[ 2, 4, 6, 8 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flattenBy( x, [ 2, 2 ], true, new Float64Array( 4 ), 1, 0, scale );\n* // returns <Float64Array>[ 2, 6, 4, 8 ]\n*/\nfunction flattenBy( x, shape, colexicographic, out, stride, offset, clbk, thisArg ) {\n\tvar ndims = shape.length;\n\tif ( ndims === 0 ) { // 0-dimensional array\n\t\treturn out;\n\t}\n\tif ( ndims === 1 ) { // 1-dimensional array\n\t\t// For 1-dimensional arrays, we can perform simple iteration:\n\t\tcopyBy( x, shape[ 0 ], out, stride, offset, clbk, thisArg );\n\t\treturn out;\n\t}\n\tif ( colexicographic ) {\n\t\tflattenColexicographic( x, ndims, shape, out, stride, offset, clbk, thisArg );\n\t\treturn out;\n\t}\n\trecurseLexicographic( x, x, ndims, shape, 0, [], out, stride, offset, clbk, thisArg );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flattenBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar numel = require( '@stdlib/ndarray/base/numel' );\nvar zeros = require( './../../../base/zeros' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\n/**\n* Flattens an n-dimensional nested array according to a callback function.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n* @returns {Array} flattened array\n*\n* @example\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flattenBy( x, [ 2, 2 ], false, scale );\n* // returns [ 2, 4, 6, 8 ]\n*\n* @example\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flattenBy( x, [ 2, 2 ], true, scale );\n* // returns [ 2, 6, 4, 8 ]\n*/\nfunction flattenBy( x, shape, colexicographic, clbk, thisArg ) {\n\tvar out = zeros( numel( shape ) );\n\treturn assign( x, shape, colexicographic, out, 1, 0, clbk, thisArg );\n}\n\n\n// EXPORTS //\n\nmodule.exports = flattenBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Flatten an n-dimensional nested array according to a callback function.\n*\n* @module @stdlib/array/base/flatten-by\n*\n* @example\n* var flattenBy = require( '@stdlib/array/base/flatten-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flattenBy( x, [ 2, 2 ], false, scale );\n* // returns [ 2, 4, 6, 8 ]\n*\n* @example\n* var flattenBy = require( '@stdlib/array/base/flatten-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flattenBy( x, [ 2, 2 ], true, scale );\n* // returns [ 2, 6, 4, 8 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var flattenBy = require( '@stdlib/array/base/flatten-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = new Float64Array( 4 );\n* var y = flattenBy.assign( x, [ 2, 2 ], true, out, 1, 0, scale );\n* // returns <Float64Array>[ 2, 6, 4, 8 ]\n*\n* var bool = ( y === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a two-dimensional nested array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Collection>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @returns {Array} flattened array\n*\n* @example\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten2d( x, [ 2, 2 ], false );\n* // returns [ 1, 2, 3, 4 ]\n*\n* @example\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten2d( x, [ 2, 2 ], true );\n* // returns [ 1, 3, 2, 4 ]\n*/\nfunction flatten2d( x, shape, colexicographic ) {\n\tvar out;\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar a0;\n\n\t// Extract loop variables:\n\tS0 = shape[ 1 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 0 ];\n\n\t// Initialize an output array:\n\tout = [];\n\n\t// Iterate over the array dimensions...\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tout.push( x[ i1 ][ i0 ] ); // equivalent to storing in column-major (Fortran-style) order\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\ta0 = x[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tout.push( a0[ i0 ] ); // equivalent to storing in row-major (C-style) order\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a two-dimensional nested array and assigns elements to a provided output array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Collection>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array index offset\n* @returns {Collection} output array\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten2d( x, [ 2, 2 ], false, new Float64Array( 4 ), 1, 0 );\n* // returns <Float64Array>[ 1, 2, 3, 4 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten2d( x, [ 2, 2 ], true, new Float64Array( 4 ), 1, 0 );\n* // returns <Float64Array>[ 1, 3, 2, 4 ]\n*/\nfunction flatten2d( x, shape, colexicographic, out, stride, offset ) {\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar a0;\n\tvar io;\n\n\t// Extract loop variables:\n\tS0 = shape[ 1 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 0 ];\n\n\t// Iterate over the array dimensions...\n\tio = offset;\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tout[ io ] = x[ i1 ][ i0 ]; // equivalent to storing in column-major (Fortran-style) order\n\t\t\t\tio += stride;\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\ta0 = x[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tout[ io ] = a0[ i0 ]; // equivalent to storing in row-major (C-style) order\n\t\t\tio += stride;\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Flatten a two-dimensional nested array.\n*\n* @module @stdlib/array/base/flatten2d\n*\n* @example\n* var flatten2d = require( '@stdlib/array/base/flatten2d' );\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten2d( x, [ 2, 2 ], false );\n* // returns [ 1, 2, 3, 4 ]\n*\n* @example\n* var flatten2d = require( '@stdlib/array/base/flatten2d' );\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten2d( x, [ 2, 2 ], true );\n* // returns [ 1, 3, 2, 4 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var flatten2d = require( '@stdlib/array/base/flatten2d' );\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = new Float64Array( 4 );\n* var y = flatten2d.assign( x, [ 2, 2 ], true, out, 1, 0 );\n* // returns <Float64Array>[ 1, 3, 2, 4 ]\n*\n* var bool = ( y === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a two-dimensional nested array according to a callback function.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Collection>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n* @returns {Array} flattened array\n*\n* @example\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten2dBy( x, [ 2, 2 ], false, scale );\n* // returns [ 2, 4, 6, 8 ]\n*\n* @example\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten2dBy( x, [ 2, 2 ], true, scale );\n* // returns [ 2, 6, 4, 8 ]\n*/\nfunction flatten2dBy( x, shape, colexicographic, clbk, thisArg ) {\n\tvar out;\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar a0;\n\n\t// Extract loop variables:\n\tS0 = shape[ 1 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 0 ];\n\n\t// Initialize an output array:\n\tout = [];\n\n\t// Iterate over the array dimensions...\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tout.push( clbk.call( thisArg, x[ i1 ][ i0 ], [ i1, i0 ], x ) ); // equivalent to storing in column-major (Fortran-style) order\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\ta0 = x[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tout.push( clbk.call( thisArg, a0[ i0 ], [ i1, i0 ], x ) ); // equivalent to storing in row-major (C-style) order\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten2dBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a two-dimensional nested array according to a callback function and assigns elements to a provided output array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Collection>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array index offset\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n* @returns {Collection} output array\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten2dBy( x, [ 2, 2 ], false, new Float64Array( 4 ), 1, 0, scale );\n* // returns <Float64Array>[ 2, 4, 6, 8 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten2dBy( x, [ 2, 2 ], true, new Float64Array( 4 ), 1, 0, scale );\n* // returns <Float64Array>[ 2, 6, 4, 8 ]\n*/\nfunction flatten2dBy( x, shape, colexicographic, out, stride, offset, clbk, thisArg ) { // eslint-disable-line max-len\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar a0;\n\tvar io;\n\n\t// Extract loop variables:\n\tS0 = shape[ 1 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 0 ];\n\n\t// Iterate over the array dimensions...\n\tio = offset;\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tout[ io ] = clbk.call( thisArg, x[ i1 ][ i0 ], [ i1, i0 ], x ); // equivalent to storing in column-major (Fortran-style) order\n\t\t\t\tio += stride;\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\ta0 = x[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tout[ io ] = clbk.call( thisArg, a0[ i0 ], [ i1, i0 ], x ); // equivalent to storing in row-major (C-style) order\n\t\t\tio += stride;\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten2dBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Flatten a two-dimensional nested array according to a callback function.\n*\n* @module @stdlib/array/base/flatten2d-by\n*\n* @example\n* var flatten2dBy = require( '@stdlib/array/base/flatten2d-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten2dBy( x, [ 2, 2 ], false, scale );\n* // returns [ 2, 4, 6, 8 ]\n*\n* @example\n* var flatten2dBy = require( '@stdlib/array/base/flatten2d-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten2dBy( x, [ 2, 2 ], true, scale );\n* // returns [ 2, 6, 4, 8 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var flatten2dBy = require( '@stdlib/array/base/flatten2d-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = new Float64Array( 4 );\n* var y = flatten2dBy( x, [ 2, 2 ], true, out, 1, 0, scale );\n* // returns <Float64Array>[ 2, 6, 4, 8 ]\n*\n* var bool = ( y === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a three-dimensional nested array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Array<Collection>>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @returns {Array} flattened array\n*\n* @example\n* var x = [ [ [ 1, 2 ] ], [ [ 3, 4 ] ] ];\n*\n* var out = flatten3d( x, [ 2, 1, 2 ], false );\n* // returns [ 1, 2, 3, 4 ]\n*\n* @example\n* var x = [ [ [ 1, 2 ] ], [ [ 3, 4 ] ] ];\n*\n* var out = flatten3d( x, [ 2, 1, 2 ], true );\n* // returns [ 1, 3, 2, 4 ]\n*/\nfunction flatten3d( x, shape, colexicographic ) {\n\tvar out;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar a0;\n\tvar a1;\n\n\t// Extract loop variables:\n\tS0 = shape[ 2 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 1 ];\n\tS2 = shape[ 0 ];\n\n\t// Initialize an output array:\n\tout = [];\n\n\t// Iterate over the array dimensions...\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tout.push( x[ i2 ][ i1 ][ i0 ] ); // equivalent to storing in column-major (Fortran-style) order\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\ta1 = x[ i2 ];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\ta0 = a1[ i1 ];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\tout.push( a0[ i0 ] ); // equivalent to storing in row-major (C-style) order\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a three-dimensional nested array and assigns elements to a provided output array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Array<Collection>>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array index offset\n* @returns {Collection} output array\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var x = [ [ [ 1, 2 ] ], [ [ 3, 4 ] ] ];\n*\n* var out = flatten3d( x, [ 2, 1, 2 ], false, new Float64Array( 4 ), 1, 0 );\n* // returns <Float64Array>[ 1, 2, 3, 4 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var x = [ [ [ 1, 2 ] ], [ [ 3, 4 ] ] ];\n*\n* var out = flatten3d( x, [ 2, 1, 2 ], true, new Float64Array( 4 ), 1, 0 );\n* // returns <Float64Array>[ 1, 3, 2, 4 ]\n*/\nfunction flatten3d( x, shape, colexicographic, out, stride, offset ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar a0;\n\tvar a1;\n\tvar io;\n\n\t// Extract loop variables:\n\tS0 = shape[ 2 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 1 ];\n\tS2 = shape[ 0 ];\n\n\t// Iterate over the array dimensions...\n\tio = offset;\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tout[ io ] = x[ i2 ][ i1 ][ i0 ]; // equivalent to storing in column-major (Fortran-style) order\n\t\t\t\t\tio += stride;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\ta1 = x[ i2 ];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\ta0 = a1[ i1 ];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\tout[ io ] = a0[ i0 ]; // equivalent to storing in row-major (C-style) order\n\t\t\t\tio += stride;\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Flatten a three-dimensional nested array.\n*\n* @module @stdlib/array/base/flatten3d\n*\n* @example\n* var flatten3d = require( '@stdlib/array/base/flatten3d' );\n*\n* var x = [ [ [ 1, 2 ] ], [ [ 3, 4 ] ] ];\n*\n* var out = flatten3d( x, [ 2, 1, 2 ], false );\n* // returns [ 1, 2, 3, 4 ]\n*\n* @example\n* var flatten3d = require( '@stdlib/array/base/flatten3d' );\n*\n* var x = [ [ [ 1, 2 ] ], [ [ 3, 4 ] ] ];\n*\n* var out = flatten3d( x, [ 2, 1, 2 ], true );\n* // returns [ 1, 3, 2, 4 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var flatten3d = require( '@stdlib/array/base/flatten3d' );\n*\n* var x = [ [ [ 1, 2 ] ], [ [ 3, 4 ] ] ];\n*\n* var out = new Float64Array( 4 );\n* var y = flatten3d.assign( x, [ 2, 1, 2 ], true, out, 1, 0 );\n* // returns <Float64Array>[ 1, 3, 2, 4 ]\n*\n* var bool = ( y === out );\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-len */\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a three-dimensional nested array according to a callback function.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Array<Collection>>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n* @returns {Array} flattened array\n*\n* @example\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ 1, 2 ] ], [ [ 3, 4 ] ] ];\n*\n* var out = flatten3dBy( x, [ 2, 1, 2 ], false, scale );\n* // returns [ 2, 4, 6, 8 ]\n*\n* @example\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ 1, 2 ] ], [ [ 3, 4 ] ] ];\n*\n* var out = flatten3dBy( x, [ 2, 1, 2 ], true, scale );\n* // returns [ 2, 6, 4, 8 ]\n*/\nfunction flatten3dBy( x, shape, colexicographic, clbk, thisArg ) {\n\tvar out;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar a0;\n\tvar a1;\n\n\t// Extract loop variables:\n\tS0 = shape[ 2 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 1 ];\n\tS2 = shape[ 0 ];\n\n\t// Initialize an output array:\n\tout = [];\n\n\t// Iterate over the array dimensions...\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tout.push( clbk.call( thisArg, x[ i2 ][ i1 ][ i0 ], [ i2, i1, i0 ], x ) ); // equivalent to storing in column-major (Fortran-style) order\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\ta1 = x[ i2 ];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\ta0 = a1[ i1 ];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\tout.push( clbk.call( thisArg, a0[ i0 ], [ i2, i1, i0 ], x ) ); // equivalent to storing in row-major (C-style) order\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten3dBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-len */\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a three-dimensional nested array according to a callback function and assigns elements to a provided output array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Array<Collection>>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array index offset\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n* @returns {Collection} output array\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ 1, 2 ] ], [ [ 3, 4 ] ] ];\n*\n* var out = flatten3dBy( x, [ 2, 1, 2 ], false, new Float64Array( 4 ), 1, 0, scale );\n* // returns <Float64Array>[ 2, 4, 6, 8 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ 1, 2 ] ], [ [ 3, 4 ] ] ];\n*\n* var out = flatten3dBy( x, [ 2, 1, 2 ], true, new Float64Array( 4 ), 1, 0, scale );\n* // returns <Float64Array>[ 2, 6, 4, 8 ]\n*/\nfunction flatten3dBy( x, shape, colexicographic, out, stride, offset, clbk, thisArg ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar a0;\n\tvar a1;\n\tvar io;\n\n\t// Extract loop variables:\n\tS0 = shape[ 2 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 1 ];\n\tS2 = shape[ 0 ];\n\n\t// Iterate over the array dimensions...\n\tio = offset;\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tout[ io ] = clbk.call( thisArg, x[ i2 ][ i1 ][ i0 ], [ i2, i1, i0 ], x ); // equivalent to storing in column-major (Fortran-style) order\n\t\t\t\t\tio += stride;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\ta1 = x[ i2 ];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\ta0 = a1[ i1 ];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\tout[ io ] = clbk.call( thisArg, a0[ i0 ], [ i2, i1, i0 ], x ); // equivalent to storing in row-major (C-style) order\n\t\t\t\tio += stride;\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten3dBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Flatten a three-dimensional nested array according to a callback function.\n*\n* @module @stdlib/array/base/flatten3d-by\n*\n* @example\n* var flatten3dBy = require( '@stdlib/array/base/flatten3d-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ 1, 2 ] ], [ [ 3, 4 ] ] ];\n*\n* var out = flatten3dBy( x, [ 2, 1, 2 ], false, scale );\n* // returns [ 2, 4, 6, 8 ]\n*\n* @example\n* var flatten3dBy = require( '@stdlib/array/base/flatten3d-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ 1, 2 ] ], [ [ 3, 4 ] ] ];\n*\n* var out = flatten3dBy( x, [ 2, 1, 2 ], true, scale );\n* // returns [ 2, 6, 4, 8 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var flatten3dBy = require( '@stdlib/array/base/flatten3d-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ 1, 2 ] ], [ [ 3, 4 ] ] ];\n*\n* var out = new Float64Array( 4 );\n* var y = flatten3dBy.assign( x, [ 2, 1, 2 ], true, out, 1, 0, scale );\n* // returns <Float64Array>[ 2, 6, 4, 8 ]\n*\n* var bool = ( y === out );\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a four-dimensional nested array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Array<Array<Collection>>>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @returns {Array} flattened array\n*\n* @example\n* var x = [ [ [ [ 1, 2 ] ] ], [ [ [ 3, 4 ] ] ] ];\n*\n* var out = flatten4d( x, [ 2, 1, 1, 2 ], false );\n* // returns [ 1, 2, 3, 4 ]\n*\n* @example\n* var x = [ [ [ [ 1, 2 ] ] ], [ [ [ 3, 4 ] ] ] ];\n*\n* var out = flatten4d( x, [ 2, 1, 1, 2 ], true );\n* // returns [ 1, 3, 2, 4 ]\n*/\nfunction flatten4d( x, shape, colexicographic ) {\n\tvar out;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar a0;\n\tvar a1;\n\tvar a2;\n\n\t// Extract loop variables:\n\tS0 = shape[ 3 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 2 ];\n\tS2 = shape[ 1 ];\n\tS3 = shape[ 0 ];\n\n\t// Initialize an output array:\n\tout = [];\n\n\t// Iterate over the array dimensions...\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\tout.push( x[ i3 ][ i2 ][ i1 ][ i0 ] ); // equivalent to storing in column-major (Fortran-style) order\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\ta2 = x[ i3 ];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\ta1 = a2[ i2 ];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\ta0 = a1[ i1 ];\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\tout.push( a0[ i0 ] ); // equivalent to storing in row-major (C-style) order\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a four-dimensional nested array and assigns elements to a provided output array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Array<Array<Collection>>>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array index offset\n* @returns {Collection} output array\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var x = [ [ [ [ 1, 2 ] ] ], [ [ [ 3, 4 ] ] ] ];\n*\n* var out = flatten4d( x, [ 2, 1, 1, 2 ], false, new Float64Array( 4 ), 1, 0 );\n* // returns <Float64Array>[ 1, 2, 3, 4 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var x = [ [ [ [ 1, 2 ] ] ], [ [ [ 3, 4 ] ] ] ];\n*\n* var out = flatten4d( x, [ 2, 1, 1, 2 ], true, new Float64Array( 4 ), 1, 0 );\n* // returns <Float64Array>[ 1, 3, 2, 4 ]\n*/\nfunction flatten4d( x, shape, colexicographic, out, stride, offset ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar a0;\n\tvar a1;\n\tvar a2;\n\tvar io;\n\n\t// Extract loop variables:\n\tS0 = shape[ 3 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 2 ];\n\tS2 = shape[ 1 ];\n\tS3 = shape[ 0 ];\n\n\t// Iterate over the array dimensions...\n\tio = offset;\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\tout[ io ] = x[ i3 ][ i2 ][ i1 ][ i0 ]; // equivalent to storing in column-major (Fortran-style) order\n\t\t\t\t\t\tio += stride;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\ta2 = x[ i3 ];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\ta1 = a2[ i2 ];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\ta0 = a1[ i1 ];\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\tout[ io ] = a0[ i0 ]; // equivalent to storing in row-major (C-style) order\n\t\t\t\t\tio += stride;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Flatten a four-dimensional nested array.\n*\n* @module @stdlib/array/base/flatten4d\n*\n* @example\n* var flatten4d = require( '@stdlib/array/base/flatten4d' );\n*\n* var x = [ [ [ [ 1, 2 ] ] ], [ [ [ 3, 4 ] ] ] ];\n*\n* var out = flatten4d( x, [ 2, 1, 1, 2 ], false );\n* // returns [ 1, 2, 3, 4 ]\n*\n* @example\n* var flatten4d = require( '@stdlib/array/base/flatten4d' );\n*\n* var x = [ [ [ [ 1, 2 ] ] ], [ [ [ 3, 4 ] ] ] ];\n*\n* var out = flatten4d( x, [ 2, 1, 1, 2 ], true );\n* // returns [ 1, 3, 2, 4 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var flatten4d = require( '@stdlib/array/base/flatten4d' );\n*\n* var x = [ [ [ [ 1, 2 ] ] ], [ [ [ 3, 4 ] ] ] ];\n*\n* var out = new Float64Array( 4 );\n* var y = flatten4d.assign( x, [ 2, 1, 1, 2 ], true, out, 1, 0 );\n* // returns <Float64Array>[ 1, 3, 2, 4 ]\n*\n* var bool = ( y === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-len */\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a four-dimensional nested array according to a callback function.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Array<Array<Collection>>>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n* @returns {Array} flattened array\n*\n* @example\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ [ 1, 2 ] ] ], [ [ [ 3, 4 ] ] ] ];\n*\n* var out = flatten4dBy( x, [ 2, 1, 1, 2 ], false, scale );\n* // returns [ 2, 4, 6, 8 ]\n*\n* @example\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ [ 1, 2 ] ] ], [ [ [ 3, 4 ] ] ] ];\n*\n* var out = flatten4dBy( x, [ 2, 1, 1, 2 ], true, scale );\n* // returns [ 2, 6, 4, 8 ]\n*/\nfunction flatten4dBy( x, shape, colexicographic, clbk, thisArg ) {\n\tvar out;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar a0;\n\tvar a1;\n\tvar a2;\n\n\t// Extract loop variables:\n\tS0 = shape[ 3 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 2 ];\n\tS2 = shape[ 1 ];\n\tS3 = shape[ 0 ];\n\n\t// Initialize an output array:\n\tout = [];\n\n\t// Iterate over the array dimensions...\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\tout.push( clbk.call( thisArg, x[ i3 ][ i2 ][ i1 ][ i0 ], [ i3, i2, i1, i0 ], x ) ); // equivalent to storing in column-major (Fortran-style) order\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\ta2 = x[ i3 ];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\ta1 = a2[ i2 ];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\ta0 = a1[ i1 ];\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\tout.push( clbk.call( thisArg, a0[ i0 ], [ i3, i2, i1, i0 ], x ) ); // equivalent to storing in row-major (C-style) order\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten4dBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-len */\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a four-dimensional nested array according to a callback function and assigns elements to a provided output array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Array<Array<Collection>>>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array index offset\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n* @returns {Collection} output array\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ [ 1, 2 ] ] ], [ [ [ 3, 4 ] ] ] ];\n*\n* var out = flatten4dBy( x, [ 2, 1, 1, 2 ], false, new Float64Array( 4 ), 1, 0, scale );\n* // returns <Float64Array>[ 2, 4, 6, 8 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ [ 1, 2 ] ] ], [ [ [ 3, 4 ] ] ] ];\n*\n* var out = flatten4dBy( x, [ 2, 1, 1, 2 ], true, new Float64Array( 4 ), 1, 0, scale );\n* // returns <Float64Array>[ 2, 6, 4, 8 ]\n*/\nfunction flatten4dBy( x, shape, colexicographic, out, stride, offset, clbk, thisArg ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar a0;\n\tvar a1;\n\tvar a2;\n\tvar io;\n\n\t// Extract loop variables:\n\tS0 = shape[ 3 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 2 ];\n\tS2 = shape[ 1 ];\n\tS3 = shape[ 0 ];\n\n\t// Iterate over the array dimensions...\n\tio = offset;\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\tout[ io ] = clbk.call( thisArg, x[ i3 ][ i2 ][ i1 ][ i0 ], [ i3, i2, i1, i0 ], x ); // equivalent to storing in column-major (Fortran-style) order\n\t\t\t\t\t\tio += stride;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\ta2 = x[ i3 ];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\ta1 = a2[ i2 ];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\ta0 = a1[ i1 ];\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\tout[ io ] = clbk.call( thisArg, a0[ i0 ], [ i3, i2, i1, i0 ], x ); // equivalent to storing in row-major (C-style) order\n\t\t\t\t\tio += stride;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten4dBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Flatten a four-dimensional nested array according to a callback function.\n*\n* @module @stdlib/array/base/flatten4d-by\n*\n* @example\n* var flatten4dBy = require( '@stdlib/array/base/flatten4d-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ [ 1, 2 ] ] ], [ [ [ 3, 4 ] ] ] ];\n*\n* var out = flatten4dBy( x, [ 2, 1, 1, 2 ], false, scale );\n* // returns [ 2, 4, 6, 8 ]\n*\n* @example\n* var flatten4dBy = require( '@stdlib/array/base/flatten4d-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ [ 1, 2 ] ] ], [ [ [ 3, 4 ] ] ] ];\n*\n* var out = flatten4dBy( x, [ 2, 1, 1, 2 ], true, scale );\n* // returns [ 2, 6, 4, 8 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var flatten4dBy = require( '@stdlib/array/base/flatten4d-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ [ 1, 2 ] ] ], [ [ [ 3, 4 ] ] ] ];\n*\n* var out = new Float64Array( 4 );\n* var y = flatten4dBy.assign( x, [ 2, 1, 1, 2 ], true, out, 1, 0, scale );\n* // returns <Float64Array>[ 2, 6, 4, 8 ]\n*\n* var bool = ( y === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a five-dimensional nested array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Array<Array<Array<Collection>>>>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @returns {Array} flattened array\n*\n* @example\n* var x = [ [ [ [ [ 1, 2 ] ] ] ], [ [ [ [ 3, 4 ] ] ] ] ];\n*\n* var out = flatten5d( x, [ 2, 1, 1, 1, 2 ], false );\n* // returns [ 1, 2, 3, 4 ]\n*\n* @example\n* var x = [ [ [ [ [ 1, 2 ] ] ] ], [ [ [ [ 3, 4 ] ] ] ] ];\n*\n* var out = flatten5d( x, [ 2, 1, 1, 1, 2 ], true );\n* // returns [ 1, 3, 2, 4 ]\n*/\nfunction flatten5d( x, shape, colexicographic ) {\n\tvar out;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar a0;\n\tvar a1;\n\tvar a2;\n\tvar a3;\n\n\t// Extract loop variables:\n\tS0 = shape[ 4 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 3 ];\n\tS2 = shape[ 2 ];\n\tS3 = shape[ 1 ];\n\tS4 = shape[ 0 ];\n\n\t// Initialize an output array:\n\tout = [];\n\n\t// Iterate over the array dimensions...\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\t\t\t\tout.push( x[ i4 ][ i3 ][ i2 ][ i1 ][ i0 ] ); // equivalent to storing in column-major (Fortran-style) order\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\ta3 = x[ i4 ];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\ta2 = a3[ i3 ];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\ta1 = a2[ i2 ];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\ta0 = a1[ i1 ];\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\tout.push( a0[ i0 ] ); // equivalent to storing in row-major (C-style) order\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a five-dimensional nested array and assigns elements to a provided output array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Array<Array<Array<Collection>>>>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array index offset\n* @returns {Collection} output array\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var x = [ [ [ [ [ 1, 2 ] ] ] ], [ [ [ [ 3, 4 ] ] ] ] ];\n*\n* var out = flatten5d( x, [ 2, 1, 1, 1, 2 ], false, new Float64Array( 4 ), 1, 0 );\n* // returns <Float64Array>[ 1, 2, 3, 4 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var x = [ [ [ [ [ 1, 2 ] ] ] ], [ [ [ [ 3, 4 ] ] ] ] ];\n*\n* var out = flatten5d( x, [ 2, 1, 1, 1, 2 ], true, new Float64Array( 4 ), 1, 0 );\n* // returns <Float64Array>[ 1, 3, 2, 4 ]\n*/\nfunction flatten5d( x, shape, colexicographic, out, stride, offset ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar a0;\n\tvar a1;\n\tvar a2;\n\tvar a3;\n\tvar io;\n\n\t// Extract loop variables:\n\tS0 = shape[ 4 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 3 ];\n\tS2 = shape[ 2 ];\n\tS3 = shape[ 1 ];\n\tS4 = shape[ 0 ];\n\n\t// Iterate over the array dimensions...\n\tio = offset;\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\t\t\t\tout[ io ] = x[ i4 ][ i3 ][ i2 ][ i1 ][ i0 ]; // equivalent to storing in column-major (Fortran-style) order\n\t\t\t\t\t\t\tio += stride;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\ta3 = x[ i4 ];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\ta2 = a3[ i3 ];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\ta1 = a2[ i2 ];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\ta0 = a1[ i1 ];\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\tout[ io ] = a0[ i0 ]; // equivalent to storing in row-major (C-style) order\n\t\t\t\t\t\tio += stride;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Flatten a five-dimensional nested array.\n*\n* @module @stdlib/array/base/flatten5d\n*\n* @example\n* var flatten5d = require( '@stdlib/array/base/flatten5d' );\n*\n* var x = [ [ [ [ [ 1, 2 ] ] ] ], [ [ [ [ 3, 4 ] ] ] ] ];\n*\n* var out = flatten5d( x, [ 2, 1, 1, 1, 2 ], false );\n* // returns [ 1, 2, 3, 4 ]\n*\n* @example\n* var flatten5d = require( '@stdlib/array/base/flatten5d' );\n*\n* var x = [ [ [ [ [ 1, 2 ] ] ] ], [ [ [ [ 3, 4 ] ] ] ] ];\n*\n* var out = flatten5d( x, [ 2, 1, 1, 1, 2 ], true );\n* // returns [ 1, 3, 2, 4 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var flatten5d = require( '@stdlib/array/base/flatten5d' );\n*\n* var x = [ [ [ [ [ 1, 2 ] ] ] ], [ [ [ [ 3, 4 ] ] ] ] ];\n*\n* var out = new Float64Array( 4 );\n* var y = flatten5d.assign( x, [ 2, 1, 1, 1, 2 ], true, out, 1, 0 );\n* // returns <Float64Array>[ 1, 3, 2, 4 ]\n*\n* var bool = ( y === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a five-dimensional nested array according to a callback function.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Array<Array<Array<Collection>>>>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n* @returns {Array} flattened array\n*\n* @example\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ [ [ 1, 2 ] ] ] ], [ [ [ [ 3, 4 ] ] ] ] ];\n*\n* var out = flatten5dBy( x, [ 2, 1, 1, 1, 2 ], false, scale );\n* // returns [ 2, 4, 6, 8 ]\n*\n* @example\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ [ [ 1, 2 ] ] ] ], [ [ [ [ 3, 4 ] ] ] ] ];\n*\n* var out = flatten5dBy( x, [ 2, 1, 1, 1, 2 ], true, scale );\n* // returns [ 2, 6, 4, 8 ]\n*/\nfunction flatten5dBy( x, shape, colexicographic, clbk, thisArg ) {\n\tvar out;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar a0;\n\tvar a1;\n\tvar a2;\n\tvar a3;\n\n\t// Extract loop variables:\n\tS0 = shape[ 4 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 3 ];\n\tS2 = shape[ 2 ];\n\tS3 = shape[ 1 ];\n\tS4 = shape[ 0 ];\n\n\t// Initialize an output array:\n\tout = [];\n\n\t// Iterate over the array dimensions...\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\t\t\t\tout.push( clbk.call( thisArg, x[ i4 ][ i3 ][ i2 ][ i1 ][ i0 ], [ i4, i3, i2, i1, i0 ], x ) ); // equivalent to storing in column-major (Fortran-style) order\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\ta3 = x[ i4 ];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\ta2 = a3[ i3 ];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\ta1 = a2[ i2 ];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\ta0 = a1[ i1 ];\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\tout.push( clbk.call( thisArg, a0[ i0 ], [ i4, i3, i2, i1, i0 ], x ) ); // equivalent to storing in row-major (C-style) order\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten5dBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a five-dimensional nested array according to a callback function and assigns elements to a provided output array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Array<Array<Array<Collection>>>>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array index offset\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n* @returns {Collection} output array\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ [ [ 1, 2 ] ] ] ], [ [ [ [ 3, 4 ] ] ] ] ];\n*\n* var out = flatten5dBy( x, [ 2, 1, 1, 1, 2 ], false, new Float64Array( 4 ), 1, 0, scale );\n* // returns <Float64Array>[ 2, 4, 6, 8 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ [ [ 1, 2 ] ] ] ], [ [ [ [ 3, 4 ] ] ] ] ];\n*\n* var out = flatten5dBy( x, [ 2, 1, 1, 1, 2 ], true, new Float64Array( 4 ), 1, 0, scale );\n* // returns <Float64Array>[ 2, 6, 4, 8 ]\n*/\nfunction flatten5dBy( x, shape, colexicographic, out, stride, offset, clbk, thisArg ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar a0;\n\tvar a1;\n\tvar a2;\n\tvar a3;\n\tvar io;\n\n\t// Extract loop variables:\n\tS0 = shape[ 4 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 3 ];\n\tS2 = shape[ 2 ];\n\tS3 = shape[ 1 ];\n\tS4 = shape[ 0 ];\n\n\t// Iterate over the array dimensions...\n\tio = offset;\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\t\t\t\tout[ io ] = clbk.call( thisArg, x[ i4 ][ i3 ][ i2 ][ i1 ][ i0 ], [ i4, i3, i2, i1, i0 ], x ); // equivalent to storing in column-major (Fortran-style) order\n\t\t\t\t\t\t\tio += stride;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\ta3 = x[ i4 ];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\ta2 = a3[ i3 ];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\ta1 = a2[ i2 ];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\ta0 = a1[ i1 ];\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\tout[ io ] = clbk.call( thisArg, a0[ i0 ], [ i4, i3, i2, i1, i0 ], x ); // equivalent to storing in row-major (C-style) order\n\t\t\t\t\t\tio += stride;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten5dBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Flatten a five-dimensional nested array according to a callback function.\n*\n* @module @stdlib/array/base/flatten5d-by\n*\n* @example\n* var flatten5dBy = require( '@stdlib/array/base/flatten5d-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ [ [ 1, 2 ] ] ] ], [ [ [ [ 3, 4 ] ] ] ] ];\n*\n* var out = flatten5dBy( x, [ 2, 1, 1, 1, 2 ], false, scale );\n* // returns [ 2, 4, 6, 8 ]\n*\n* @example\n* var flatten5dBy = require( '@stdlib/array/base/flatten5d-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ [ [ 1, 2 ] ] ] ], [ [ [ [ 3, 4 ] ] ] ] ];\n*\n* var out = flatten5dBy( x, [ 2, 1, 1, 1, 2 ], true, scale );\n* // returns [ 2, 6, 4, 8 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var flatten5dBy = require( '@stdlib/array/base/flatten5d-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ [ [ 1, 2 ] ] ] ], [ [ [ [ 3, 4 ] ] ] ] ];\n*\n* var out = new Float64Array( 4 );\n* var y = flatten5dBy.assign( x, [ 2, 1, 1, 1, 2 ], true, out, 1, 0, scale );\n* // returns <Float64Array>[ 2, 6, 4, 8 ]\n*\n* var bool = ( y === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Reverses the order of elements along the last dimension of a two-dimensional nested input array.\n*\n* ## Notes\n*\n* -   The function does **not** perform a deep copy of nested array elements.\n*\n* @param {ArrayLikeObject<Collection>} x - nested input array\n* @returns {Array<Collection>} output array\n*\n* @example\n* var x = [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ];\n*\n* var out = fliplr2d( x );\n* // returns [ [ 2, 1 ], [ 4, 3 ], [ 6, 5 ] ]\n*/\nfunction fliplr2d( x ) {\n\tvar out;\n\tvar x0;\n\tvar y0;\n\tvar i1;\n\tvar i0;\n\n\tout = [];\n\tfor ( i1 = 0; i1 < x.length; i1++ ) {\n\t\tx0 = x[ i1 ];\n\t\ty0 = [];\n\t\tfor ( i0 = x0.length-1; i0 >= 0; i0-- ) {\n\t\t\ty0.push( x0[ i0 ] );\n\t\t}\n\t\tout.push( y0 );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = fliplr2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Reverse the order of elements along the last dimension of a two-dimensional nested input array.\n*\n* @module @stdlib/array/base/fliplr2d\n*\n* @example\n* var fliplr = require( '@stdlib/array/base/fliplr2d' );\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ];\n*\n* var out = fliplr2d( x );\n* // returns [ [ 2, 1 ], [ 4, 3 ], [ 6, 5 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar fliplr2d = require( './../../../base/fliplr2d' );\n\n\n// MAIN //\n\n/**\n* Reverses the order of elements along the last dimension of a three-dimensional nested input array.\n*\n* ## Notes\n*\n* -   The function does **not** perform a deep copy of nested array elements.\n*\n* @param {ArrayLikeObject<ArrayLikeObject<Collection>>} x - nested input array\n* @returns {Array<Array<Collection>>} output array\n*\n* @example\n* var x = [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ];\n*\n* var out = fliplr3d( x );\n* // returns [ [ [ 2, 1 ], [ 4, 3 ], [ 6, 5 ] ] ]\n*/\nfunction fliplr3d( x ) {\n\tvar out;\n\tvar i;\n\n\tout = [];\n\tfor ( i = 0; i < x.length; i++ ) {\n\t\tout.push( fliplr2d( x[ i ] ) );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = fliplr3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Reverse the order of elements along the last dimension of a three-dimensional nested input array.\n*\n* @module @stdlib/array/base/fliplr3d\n*\n* @example\n* var fliplr = require( '@stdlib/array/base/fliplr3d' );\n*\n* var x = [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ];\n*\n* var out = fliplr3d( x );\n* // returns [ [ [ 2, 1 ], [ 4, 3 ], [ 6, 5 ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar fliplr3d = require( './../../../base/fliplr3d' );\n\n\n// MAIN //\n\n/**\n* Reverses the order of elements along the last dimension of a four-dimensional nested input array.\n*\n* ## Notes\n*\n* -   The function does **not** perform a deep copy of nested array elements.\n*\n* @param {ArrayLikeObject<ArrayLikeObject<ArrayLikeObject<Collection>>>} x - nested input array\n* @returns {Array<Array<Array<Collection>>>} output array\n*\n* @example\n* var x = [ [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ] ];\n*\n* var out = fliplr4d( x );\n* // returns [ [ [ [ 2, 1 ], [ 4, 3 ], [ 6, 5 ] ] ] ]\n*/\nfunction fliplr4d( x ) {\n\tvar out;\n\tvar i;\n\n\tout = [];\n\tfor ( i = 0; i < x.length; i++ ) {\n\t\tout.push( fliplr3d( x[ i ] ) );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = fliplr4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Reverse the order of elements along the last dimension of a four-dimensional nested input array.\n*\n* @module @stdlib/array/base/fliplr4d\n*\n* @example\n* var fliplr = require( '@stdlib/array/base/fliplr4d' );\n*\n* var x = [ [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ] ];\n*\n* var out = fliplr4d( x );\n* // returns [ [ [ [ 2, 1 ], [ 4, 3 ], [ 6, 5 ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar fliplr4d = require( './../../../base/fliplr4d' );\n\n\n// MAIN //\n\n/**\n* Reverses the order of elements along the last dimension of a five-dimensional nested input array.\n*\n* ## Notes\n*\n* -   The function does **not** perform a deep copy of nested array elements.\n*\n* @param {ArrayLikeObject<ArrayLikeObject<ArrayLikeObject<ArrayLikeObject<Collection>>>>} x - nested input array\n* @returns {Array<Array<Array<Array<Collection>>>>} output array\n*\n* @example\n* var x = [ [ [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ] ] ];\n*\n* var out = fliplr5d( x );\n* // returns [ [ [ [ [ 2, 1 ], [ 4, 3 ], [ 6, 5 ] ] ] ] ]\n*/\nfunction fliplr5d( x ) {\n\tvar out;\n\tvar i;\n\n\tout = [];\n\tfor ( i = 0; i < x.length; i++ ) {\n\t\tout.push( fliplr4d( x[ i ] ) );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = fliplr5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Reverse the order of elements along the last dimension of a five-dimensional nested input array.\n*\n* @module @stdlib/array/base/fliplr5d\n*\n* @example\n* var fliplr = require( '@stdlib/array/base/fliplr5d' );\n*\n* var x = [ [ [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ] ] ];\n*\n* var out = fliplr5d( x );\n* // returns [ [ [ [ [ 2, 1 ], [ 4, 3 ], [ 6, 5 ] ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Reverses the order of elements along the first dimension of a two-dimensional nested input array.\n*\n* ## Notes\n*\n* -   The function does **not** perform a deep copy of nested array elements.\n*\n* @param {ArrayLikeObject<Collection>} x - nested input array\n* @returns {Array<Collection>} output array\n*\n* @example\n* var x = [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ];\n*\n* var out = flipud2d( x );\n* // returns [ [ 5, 6 ], [ 3, 4 ], [ 1, 2 ] ]\n*/\nfunction flipud2d( x ) {\n\tvar out;\n\tvar i;\n\n\tout = [];\n\tfor ( i = x.length-1; i >= 0; i-- ) {\n\t\tout.push( x[ i ] );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flipud2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Reverse the order of elements along the first dimension of a two-dimensional nested input array.\n*\n* @module @stdlib/array/base/flipud2d\n*\n* @example\n* var flipud = require( '@stdlib/array/base/flipud2d' );\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ];\n*\n* var out = flipud2d( x );\n* // returns [ [ 5, 6 ], [ 3, 4 ], [ 1, 2 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar flipud2d = require( './../../../base/flipud2d' );\n\n\n// MAIN //\n\n/**\n* Reverses the order of elements along the second-to-last dimension of a three-dimensional nested input array.\n*\n* ## Notes\n*\n* -   The function does **not** perform a deep copy of nested array elements.\n*\n* @param {ArrayLikeObject<ArrayLikeObject<Collection>>} x - nested input array\n* @returns {Array<Array<Collection>>} output array\n*\n* @example\n* var x = [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ];\n*\n* var out = flipud3d( x );\n* // returns [ [ [ 5, 6 ], [ 3, 4 ], [ 1, 2 ] ] ]\n*/\nfunction flipud3d( x ) {\n\tvar out;\n\tvar i;\n\n\tout = [];\n\tfor ( i = 0; i < x.length; i++ ) {\n\t\tout.push( flipud2d( x[ i ] ) );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flipud3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Reverse the order of elements along the second-to-last dimension of a three-dimensional nested input array.\n*\n* @module @stdlib/array/base/flipud3d\n*\n* @example\n* var flipud = require( '@stdlib/array/base/flipud3d' );\n*\n* var x = [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ];\n*\n* var out = flipud3d( x );\n* // returns [ [ [ 5, 6 ], [ 3, 4 ], [ 1, 2 ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar flipud3d = require( './../../../base/flipud3d' );\n\n\n// MAIN //\n\n/**\n* Reverses the order of elements along the second-to-last dimension of a four-dimensional nested input array.\n*\n* ## Notes\n*\n* -   The function does **not** perform a deep copy of nested array elements.\n*\n* @param {ArrayLikeObject<ArrayLikeObject<ArrayLikeObject<Collection>>>} x - nested input array\n* @returns {Array<Array<Array<Collection>>>} output array\n*\n* @example\n* var x = [ [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ] ];\n*\n* var out = flipud4d( x );\n* // returns [ [ [ [ 5, 6 ], [ 3, 4 ], [ 1, 2 ] ] ] ]\n*/\nfunction flipud4d( x ) {\n\tvar out;\n\tvar i;\n\n\tout = [];\n\tfor ( i = 0; i < x.length; i++ ) {\n\t\tout.push( flipud3d( x[ i ] ) );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flipud4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Reverse the order of elements along the second-to-last dimension of a four-dimensional nested input array.\n*\n* @module @stdlib/array/base/flipud4d\n*\n* @example\n* var flipud = require( '@stdlib/array/base/flipud4d' );\n*\n* var x = [ [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ] ];\n*\n* var out = flipud4d( x );\n* // returns [ [ [ [ 5, 6 ], [ 3, 4 ], [ 1, 2 ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar flipud4d = require( './../../../base/flipud4d' );\n\n\n// MAIN //\n\n/**\n* Reverses the order of elements along the second-to-last dimension of a five-dimensional nested input array.\n*\n* ## Notes\n*\n* -   The function does **not** perform a deep copy of nested array elements.\n*\n* @param {ArrayLikeObject<ArrayLikeObject<ArrayLikeObject<ArrayLikeObject<Collection>>>>} x - nested input array\n* @returns {Array<Array<Array<Array<Collection>>>>} output array\n*\n* @example\n* var x = [ [ [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ] ] ];\n*\n* var out = flipud5d( x );\n* // returns [ [ [ [ [ 5, 6 ], [ 3, 4 ], [ 1, 2 ] ] ] ] ]\n*/\nfunction flipud5d( x ) {\n\tvar out;\n\tvar i;\n\n\tout = [];\n\tfor ( i = 0; i < x.length; i++ ) {\n\t\tout.push( flipud4d( x[ i ] ) );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flipud5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Reverse the order of elements along the second-to-last dimension of a five-dimensional nested input array.\n*\n* @module @stdlib/array/base/flipud5d\n*\n* @example\n* var flipud = require( '@stdlib/array/base/flipud5d' );\n*\n* var x = [ [ [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ] ] ];\n*\n* var out = flipud5d( x );\n* // returns [ [ [ [ [ 5, 6 ], [ 3, 4 ], [ 1, 2 ] ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Converts a strided array to a non-strided generic array.\n*\n* ## Notes\n*\n* -   The function assumes that the input array is compatible with the specified number of elements, index stride, and index offset.\n*\n* @param {NonNegativeInteger} N - number of indexed elements\n* @param {Collection} x - input array\n* @param {integer} stride - index stride\n* @param {NonNegativeInteger} offset - index of the first indexed value in the input array\n* @returns {Array} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4, 5, 6 ];\n*\n* var arr = strided2array( 3, x, 2, 0 );\n* // returns [ 1, 3, 5 ]\n*/\nfunction strided2array( N, x, stride, offset ) {\n\tvar out;\n\tvar get;\n\tvar ix;\n\tvar i;\n\n\t// Resolve an accessor function for retrieving array elements:\n\tget = resolveGetter( x );\n\n\t// Copy strided elements to a dense non-strided array...\n\tix = offset;\n\tout = [];\n\tfor ( i = 0; i < N; i++ ) {\n\t\tout.push( get( x, ix ) );\n\t\tix += stride;\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = strided2array;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a strided array to a non-strided generic array.\n*\n* @module @stdlib/array/base/from-strided\n*\n* @example\n* var strided2array = require( '@stdlib/array/base/from-strided' );\n*\n* var x = [ 1, 2, 3, 4, 5, 6 ];\n*\n* var arr = strided2array( 3, x, 2, 0 );\n* // returns [ 1, 3, 5 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isArray = require( '@stdlib/assert/is-array' );\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Groups element entries as arrays associated with distinct keys.\n*\n* @param {Collection} x - input array\n* @param {Collection} groups - array defining which group an element in the input array belongs to\n* @throws {RangeError} must provide arrays having the same length\n* @returns {Object} group results\n*\n* @example\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n* var groups = [ 'b', 'b', 'f', 'b' ];\n*\n* var out = groupEntries( x, groups );\n* // returns { 'b': [ [ 0, 'beep' ], [ 1, 'boop' ], [ 3, 'bar' ] ], 'f': [ [ 2, 'foo' ] ] }\n*/\nfunction groupEntries( x, groups ) {\n\tvar xget;\n\tvar gget;\n\tvar len;\n\tvar out;\n\tvar g;\n\tvar o;\n\tvar v;\n\tvar i;\n\n\t// Get the number of elements to group:\n\tlen = x.length;\n\tif ( groups.length !== len ) {\n\t\tthrow new RangeError( 'invalid argument. The first and second arguments must have the same length.' );\n\t}\n\t// Resolve accessors for retrieving array elements:\n\txget = resolveGetter( x );\n\tgget = resolveGetter( groups );\n\n\t// Loop over the elements and assign each to a group...\n\tout = {};\n\tfor ( i = 0; i < len; i++ ) {\n\t\tv = xget( x, i );\n\t\tg = gget( groups, i ).toString();\n\t\to = out[ g ];\n\t\tif ( isArray( o ) ) {\n\t\t\to.push( [ i, v ] );\n\t\t} else {\n\t\t\tout[ g ] = [ [ i, v ] ];\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = groupEntries;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Group element entries as arrays associated with distinct keys.\n*\n* @module @stdlib/array/base/group-entries\n*\n* @example\n* var groupEntries = require( '@stdlib/array/base/group-entries' );\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n* var groups = [ 'b', 'b', 'f', 'b' ];\n*\n* var out = groupEntries( x, groups );\n* // returns { 'b': [ [ 0, 'beep' ], [ 1, 'boop' ], [ 3, 'bar' ] ], 'f': [ [ 2, 'foo' ] ] }\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isArray = require( '@stdlib/assert/is-array' );\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Groups element entries according to an indicator function.\n*\n* @param {Collection} x - input array\n* @param {Function} indicator - indicator function specifying which group an element in the input collection belongs to\n* @param {*} [thisArg] - indicator function execution context\n* @returns {Object} group results\n*\n* @example\n* function indicator( v ) {\n*     return v[ 0 ];\n* }\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n*\n* var out = groupEntriesBy( x, indicator );\n* // returns { 'b': [ [ 0, 'beep' ], [ 1, 'boop' ], [ 3, 'bar' ] ], 'f': [ [ 2, 'foo' ] ] }\n*/\nfunction groupEntriesBy( x, indicator, thisArg ) {\n\tvar get;\n\tvar len;\n\tvar out;\n\tvar g;\n\tvar o;\n\tvar v;\n\tvar i;\n\n\t// Get the number of elements to group:\n\tlen = x.length;\n\n\t// Resolve an accessor for retrieving array elements:\n\tget = resolveGetter( x );\n\n\t// Loop over the elements and assign each to a group...\n\tout = {};\n\tfor ( i = 0; i < len; i++ ) {\n\t\tv = get( x, i );\n\t\tg = indicator.call( thisArg, v, i, x );\n\t\to = out[ g ];\n\t\tif ( isArray( o ) ) {\n\t\t\to.push( [ i, v ] );\n\t\t} else {\n\t\t\tout[ g ] = [ [ i, v ] ];\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = groupEntriesBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Group element entries according to an indicator function.\n*\n* @module @stdlib/array/base/group-entries-by\n*\n* @example\n* var groupEntriesBy = require( '@stdlib/array/base/group-entries-by' );\n*\n* function indicator( v ) {\n*     return v[ 0 ];\n* }\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n*\n* var out = groupEntriesBy( x, indicator );\n* // returns { 'b': [ [ 0, 'beep' ], [ 1, 'boop' ], [ 3, 'bar' ] ], 'f': [ [ 2, 'foo' ] ] }\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isArray = require( '@stdlib/assert/is-array' );\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Groups element indices as arrays associated with distinct keys.\n*\n* @param {Collection} x - input array\n* @param {Collection} groups - array defining which group an element in the input array belongs to\n* @throws {RangeError} must provide arrays having the same length\n* @returns {Object} group results\n*\n* @example\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n* var groups = [ 'b', 'b', 'f', 'b' ];\n*\n* var out = groupIndices( x, groups );\n* // returns { 'b': [ 0, 1, 3 ], 'f': [ 2 ] }\n*/\nfunction groupIndices( x, groups ) {\n\tvar gget;\n\tvar len;\n\tvar out;\n\tvar g;\n\tvar o;\n\tvar i;\n\n\t// Get the number of elements to group:\n\tlen = x.length;\n\tif ( groups.length !== len ) {\n\t\tthrow new RangeError( 'invalid argument. The first and second arguments must have the same length.' );\n\t}\n\t// Resolve accessors for retrieving array elements:\n\tgget = resolveGetter( groups );\n\n\t// Loop over the elements and assign each to a group...\n\tout = {};\n\tfor ( i = 0; i < len; i++ ) {\n\t\tg = gget( groups, i ).toString();\n\t\to = out[ g ];\n\t\tif ( isArray( o ) ) {\n\t\t\to.push( i );\n\t\t} else {\n\t\t\tout[ g ] = [ i ];\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = groupIndices;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Group element indices as arrays associated with distinct keys.\n*\n* @module @stdlib/array/base/group-indices\n*\n* @example\n* var groupIndices = require( '@stdlib/array/base/group-indices' );\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n* var groups = [ 'b', 'b', 'f', 'b' ];\n*\n* var out = groupIndices( x, groups );\n* // returns { 'b': [ 0, 1, 3 ], 'f': [ 2 ] }\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isArray = require( '@stdlib/assert/is-array' );\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Groups element indices according to an indicator function.\n*\n* @param {Collection} x - input array\n* @param {Function} indicator - indicator function specifying which group an element in the input collection belongs to\n* @param {*} [thisArg] - indicator function execution context\n* @returns {Object} group results\n*\n* @example\n* function indicator( v ) {\n*     return v[ 0 ];\n* }\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n*\n* var out = groupIndicesBy( x, indicator );\n* // returns { 'b': [ 0, 1, 3 ], 'f': [ 2 ] }\n*/\nfunction groupIndicesBy( x, indicator, thisArg ) {\n\tvar get;\n\tvar len;\n\tvar out;\n\tvar g;\n\tvar o;\n\tvar i;\n\n\t// Get the number of elements to group:\n\tlen = x.length;\n\n\t// Resolve an accessor for retrieving array elements:\n\tget = resolveGetter( x );\n\n\t// Loop over the elements and assign each to a group...\n\tout = {};\n\tfor ( i = 0; i < len; i++ ) {\n\t\tg = indicator.call( thisArg, get( x, i ), i, x );\n\t\to = out[ g ];\n\t\tif ( isArray( o ) ) {\n\t\t\to.push( i );\n\t\t} else {\n\t\t\tout[ g ] = [ i ];\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = groupIndicesBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Group element indices according to an indicator function.\n*\n* @module @stdlib/array/base/group-indices-by\n*\n* @example\n* var groupIndicesBy = require( '@stdlib/array/base/group-indices-by' );\n*\n* function indicator( v ) {\n*     return v[ 0 ];\n* }\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n*\n* var out = groupIndicesBy( x, indicator );\n* // returns { 'b': [ 0, 1, 3 ], 'f': [ 2 ] }\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isArray = require( '@stdlib/assert/is-array' );\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Groups elements as arrays associated with distinct keys.\n*\n* @param {Collection} x - input array\n* @param {Collection} groups - array defining which group an element in the input array belongs to\n* @throws {RangeError} must provide arrays having the same length\n* @returns {Object} group results\n*\n* @example\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n* var groups = [ 'b', 'b', 'f', 'b' ];\n*\n* var out = groupValues( x, groups );\n* // returns { 'b': [ 'beep', 'boop', 'bar' ], 'f': [ 'foo' ] }\n*/\nfunction groupValues( x, groups ) {\n\tvar xget;\n\tvar gget;\n\tvar len;\n\tvar out;\n\tvar g;\n\tvar o;\n\tvar v;\n\tvar i;\n\n\t// Get the number of elements to group:\n\tlen = x.length;\n\tif ( groups.length !== len ) {\n\t\tthrow new RangeError( 'invalid argument. The first and second arguments must have the same length.' );\n\t}\n\t// Resolve accessors for retrieving array elements:\n\txget = resolveGetter( x );\n\tgget = resolveGetter( groups );\n\n\t// Loop over the elements and assign each to a group...\n\tout = {};\n\tfor ( i = 0; i < len; i++ ) {\n\t\tv = xget( x, i );\n\t\tg = gget( groups, i ).toString();\n\t\to = out[ g ];\n\t\tif ( isArray( o ) ) {\n\t\t\to.push( v );\n\t\t} else {\n\t\t\tout[ g ] = [ v ];\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = groupValues;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Group elements as arrays associated with distinct keys.\n*\n* @module @stdlib/array/base/group-values\n*\n* @example\n* var groupValues = require( '@stdlib/array/base/group-values' );\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n* var groups = [ 'b', 'b', 'f', 'b' ];\n*\n* var out = groupValues( x, groups );\n* // returns { 'b': [ 'beep', 'boop', 'bar' ], 'f': [ 'foo' ] }\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isArray = require( '@stdlib/assert/is-array' );\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Groups element values according to an indicator function.\n*\n* @param {Collection} x - input array\n* @param {Function} indicator - indicator function specifying which group an element in the input collection belongs to\n* @param {*} [thisArg] - indicator function execution context\n* @returns {Object} group results\n*\n* @example\n* function indicator( v ) {\n*     return v[ 0 ];\n* }\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n*\n* var out = groupValuesBy( x, indicator );\n* // returns { 'b': [ 'beep', 'boop', 'bar' ], 'f': [ 'foo' ] }\n*/\nfunction groupValuesBy( x, indicator, thisArg ) {\n\tvar get;\n\tvar len;\n\tvar out;\n\tvar g;\n\tvar o;\n\tvar v;\n\tvar i;\n\n\t// Get the number of elements to group:\n\tlen = x.length;\n\n\t// Resolve an accessor for retrieving array elements:\n\tget = resolveGetter( x );\n\n\t// Loop over the elements and assign each to a group...\n\tout = {};\n\tfor ( i = 0; i < len; i++ ) {\n\t\tv = get( x, i );\n\t\tg = indicator.call( thisArg, v, i, x );\n\t\to = out[ g ];\n\t\tif ( isArray( o ) ) {\n\t\t\to.push( v );\n\t\t} else {\n\t\t\tout[ g ] = [ v ];\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = groupValuesBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Group element values according to an indicator function.\n*\n* @module @stdlib/array/base/group-values-by\n*\n* @example\n* var groupValuesBy = require( '@stdlib/array/base/group-values-by' );\n*\n* function indicator( v ) {\n*     return v[ 0 ];\n* }\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n*\n* var out = groupValuesBy( x, indicator );\n* // returns { 'b': [ 'beep', 'boop', 'bar' ], 'f': [ 'foo' ] }\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar ceil = require( '@stdlib/math/base/special/ceil' );\n\n\n// MAIN //\n\n/**\n* Generates a linearly spaced numeric array according to a provided increment.\n*\n* @param {number} x1 - first array value\n* @param {number} x2 - array element bound\n* @param {number} increment - increment\n* @returns {Array} linearly spaced numeric array\n*\n* @example\n* var arr = incrspace( 0, 11, 2 );\n* // returns [ 0, 2, 4, 6, 8, 10 ]\n*/\nfunction incrspace( x1, x2, increment ) {\n\tvar arr;\n\tvar len;\n\tvar i;\n\n\tlen = ceil( ( x2-x1 ) / increment );\n\tif ( len <= 1 ) {\n\t\treturn [ x1 ];\n\t}\n\tarr = [ x1 ];\n\tfor ( i = 1; i < len; i++ ) {\n\t\tarr.push( x1 + (increment*i) );\n\t}\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = incrspace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Generate a linearly spaced numeric array according to a provided increment.\n*\n* @module @stdlib/array/base/incrspace\n*\n* @example\n* var incrspace = require( '@stdlib/array/base/incrspace' );\n*\n* var arr = incrspace( 0, 11, 2 );\n* // returns [ 0, 2, 4, 6, 8, 10 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar arraylike2object = require( './../../../base/arraylike2object' );\nvar isnan = require( '@stdlib/math/base/assert/is-nan' );\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether an object has a specified method.\n*\n* @private\n* @param {Object} obj - input object\n* @param {string} method - method name\n* @returns {boolean} boolean indicating whether an object has a specified method\n*\n* @example\n* var bool = hasMethod( [], 'indexOf' );\n* // returns true\n*\n* @example\n* var bool = hasMethod( [], 'beep' );\n* // returns false\n*/\nfunction hasMethod( obj, method ) {\n\treturn ( typeof obj[ method ] === 'function' );\n}\n\n/**\n* Returns the index of the first element which equals a provided search element.\n*\n* @private\n* @param {Collection} x - input array\n* @param {*} searchElement - search element\n* @param {NonNegativeInteger} fromIndex - starting index (inclusive)\n* @param {boolean} equalNaNs - boolean indicating whether NaNs should be considered equal\n* @returns {integer} index\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var idx = internal( x, 2, 0, false );\n* // returns 1\n*/\nfunction internal( x, searchElement, fromIndex, equalNaNs ) {\n\tvar i;\n\tif ( equalNaNs && isnan( searchElement ) ) {\n\t\tfor ( i = fromIndex; i < x.length; i++ ) {\n\t\t\tif ( isnan( x[ i ] ) ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t}\n\tfor ( i = fromIndex; i < x.length; i++ ) {\n\t\tif ( searchElement === x[ i ] ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\n/**\n* Returns the index of the first element which equals a provided search element.\n*\n* @private\n* @param {Object} x - input array object\n* @param {*} searchElement - search element\n* @param {NonNegativeInteger} fromIndex - starting index (inclusive)\n* @param {boolean} equalNaNs - boolean indicating whether NaNs should be considered equal\n* @returns {integer} index\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' );\n* var arraylike2object = require( '@stdlib/array/base/arraylike2object' );\n*\n* var x = arraylike2object( toAccessorArray( [ 1, 2, 3, 4 ] ) );\n*\n* var idx = accessors( x, 2, 0, false );\n* // returns 1\n*/\nfunction accessors( x, searchElement, fromIndex, equalNaNs ) {\n\tvar data;\n\tvar get;\n\tvar i;\n\n\tdata = x.data;\n\tget = x.accessors[ 0 ];\n\n\tif ( equalNaNs && isnan( searchElement ) ) {\n\t\tfor ( i = fromIndex; i < data.length; i++ ) {\n\t\t\tif ( isnan( get( data, i ) ) ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t}\n\tfor ( i = fromIndex; i < data.length; i++ ) {\n\t\tif ( searchElement === get( data, i ) ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\n\n// MAIN //\n\n/**\n* Returns the index of the first element which equals a provided search element.\n*\n* ## Notes\n*\n* -   If unable to find an element which equals a provided search element, the function returns `-1`.\n*\n* @param {Collection} x - input array\n* @param {*} searchElement - search element\n* @param {integer} fromIndex - starting index (inclusive)\n* @param {boolean} equalNaNs - boolean indicating whether NaNs should be considered equal\n* @returns {integer} index\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var idx = indexOf( x, 2, 0, false );\n* // returns 1\n*\n* @example\n* var Int32Array = require( '@stdlib/array/int32' );\n*\n* var x = new Int32Array( [ 1, 2, 3, 4 ] );\n*\n* var idx = indexOf( x, 2, 0, false );\n* // returns 1\n*/\nfunction indexOf( x, searchElement, fromIndex, equalNaNs ) {\n\tvar obj;\n\tif ( hasMethod( x, 'indexOf' ) && equalNaNs === false ) {\n\t\treturn x.indexOf( searchElement, fromIndex );\n\t}\n\tif ( fromIndex < 0 ) {\n\t\tfromIndex += x.length;\n\t\tif ( fromIndex < 0 ) {\n\t\t\tfromIndex = 0;\n\t\t}\n\t}\n\tobj = arraylike2object( x );\n\tif ( obj.accessorProtocol ) {\n\t\treturn accessors( obj, searchElement, fromIndex, equalNaNs );\n\t}\n\treturn internal( x, searchElement, fromIndex, equalNaNs );\n}\n\n\n// EXPORTS //\n\nmodule.exports = indexOf;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the index of the first element which equals a provided search element.\n*\n* @module @stdlib/array/base/index-of\n*\n* @example\n* var indexOf = require( '@stdlib/array/base/index-of' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var idx = indexOf( x, 2, 0, false );\n* // returns 1\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Returns the last element of an array-like object.\n*\n* @param {Collection} arr - input array\n* @returns {*} - last element\n*\n* @example\n* var out = last( [ 1, 2, 3 ] );\n* // returns 3\n*/\nfunction last( arr ) {\n\tvar get;\n\tvar idx;\n\n\t// Resolve an accessor for retrieving input array elements:\n\tget = resolveGetter( arr );\n\n\t// Resolve the last index:\n\tidx = arr.length - 1;\n\n\t// Return the last element:\n\tif ( idx < 0 ) {\n\t\treturn;\n\t}\n\treturn get( arr, idx );\n}\n\n\n// EXPORTS //\n\nmodule.exports = last;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the last element of an array-like object.\n*\n* @module @stdlib/array/base/last\n*\n* @example\n* var last = require( '@stdlib/array/base/last' );\n*\n* var out = last( [ 1, 2, 3 ] );\n* // returns 3\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar arraylike2object = require( './../../../base/arraylike2object' );\nvar isnan = require( '@stdlib/math/base/assert/is-nan' );\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether an object has a specified method.\n*\n* @private\n* @param {Object} obj - input object\n* @param {string} method - method name\n* @returns {boolean} boolean indicating whether an object has a specified method\n*\n* @example\n* var bool = hasMethod( [], 'lastIndexOf' );\n* // returns true\n*\n* @example\n* var bool = hasMethod( [], 'beep' );\n* // returns false\n*/\nfunction hasMethod( obj, method ) {\n\treturn ( typeof obj[ method ] === 'function' );\n}\n\n/**\n* Returns the index of the last element which equals a provided search element.\n*\n* @private\n* @param {Collection} x - input array\n* @param {*} searchElement - search element\n* @param {NonNegativeInteger} fromIndex - starting index (inclusive)\n* @param {boolean} equalNaNs - boolean indicating whether NaNs should be considered equal\n* @returns {integer} index\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var idx = internal( x, 2, 3, false );\n* // returns 1\n*/\nfunction internal( x, searchElement, fromIndex, equalNaNs ) {\n\tvar i;\n\tif ( equalNaNs && isnan( searchElement ) ) {\n\t\tfor ( i = fromIndex; i >= 0; i-- ) {\n\t\t\tif ( isnan( x[ i ] ) ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t}\n\tfor ( i = fromIndex; i >= 0; i-- ) {\n\t\tif ( searchElement === x[ i ] ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\n/**\n* Returns the index of the last element which equals a provided search element.\n*\n* @private\n* @param {Object} x - input array object\n* @param {*} searchElement - search element\n* @param {NonNegativeInteger} fromIndex - starting index (inclusive)\n* @param {boolean} equalNaNs - boolean indicating whether NaNs should be considered equal\n* @returns {integer} index\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' );\n* var arraylike2object = require( '@stdlib/array/base/arraylike2object' );\n*\n* var x = arraylike2object( toAccessorArray( [ 1, 2, 3, 4 ] ) );\n*\n* var idx = accessors( x, 2, 3, false );\n* // returns 1\n*/\nfunction accessors( x, searchElement, fromIndex, equalNaNs ) {\n\tvar data;\n\tvar get;\n\tvar i;\n\n\tdata = x.data;\n\tget = x.accessors[ 0 ];\n\n\tif ( equalNaNs && isnan( searchElement ) ) {\n\t\tfor ( i = fromIndex; i >= 0; i-- ) {\n\t\t\tif ( isnan( get( data, i ) ) ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t}\n\tfor ( i = fromIndex; i >= 0; i-- ) {\n\t\tif ( searchElement === get( data, i ) ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\n\n// MAIN //\n\n/**\n* Returns the index of the last element which equals a provided search element.\n*\n* ## Notes\n*\n* -   If unable to find an element which equals a provided search element, the function returns `-1`.\n*\n* @param {Collection} x - input array\n* @param {*} searchElement - search element\n* @param {integer} fromIndex - starting index (inclusive)\n* @param {boolean} equalNaNs - boolean indicating whether NaNs should be considered equal\n* @returns {integer} index\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var idx = lastIndexOf( x, 2, 3, false );\n* // returns 1\n*\n* @example\n* var Int32Array = require( '@stdlib/array/int32' );\n*\n* var x = new Int32Array( [ 1, 2, 3, 4 ] );\n*\n* var idx = lastIndexOf( x, 2, 3, false );\n* // returns 1\n*/\nfunction lastIndexOf( x, searchElement, fromIndex, equalNaNs ) {\n\tvar obj;\n\tif ( hasMethod( x, 'lastIndexOf' ) && equalNaNs === false ) {\n\t\treturn x.lastIndexOf( searchElement, fromIndex );\n\t}\n\tif ( fromIndex < 0 ) {\n\t\tfromIndex += x.length;\n\t\tif ( fromIndex < 0 ) {\n\t\t\treturn -1;\n\t\t}\n\t} else if ( fromIndex > x.length ) {\n\t\tfromIndex = x.length - 1;\n\t}\n\tobj = arraylike2object( x );\n\tif ( obj.accessorProtocol ) {\n\t\treturn accessors( obj, searchElement, fromIndex, equalNaNs );\n\t}\n\treturn internal( x, searchElement, fromIndex, equalNaNs );\n}\n\n\n// EXPORTS //\n\nmodule.exports = lastIndexOf;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the index of the last element which equals a provided search element.\n*\n* @module @stdlib/array/base/last-index-of\n*\n* @example\n* var lastIndexOf = require( '@stdlib/array/base/last-index-of' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var idx = lastIndexOf( x, 2, 3, false );\n* // returns 1\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Generates a linearly spaced numeric array.\n*\n* @param {number} x1 - first array value\n* @param {number} x2 - last array value\n* @param {NonNegativeInteger} len - length of output array\n* @returns {Array} linearly spaced numeric array\n*\n* @example\n* var arr = linspace( 0, 100, 6 );\n* // returns [ 0, 20, 40, 60, 80, 100 ]\n*/\nfunction linspace( x1, x2, len ) {\n\tvar arr;\n\tvar N;\n\tvar d;\n\tvar i;\n\n\tif ( len === 0 ) {\n\t\treturn [];\n\t}\n\t// Calculate the increment:\n\tN = len - 1;\n\td = ( x2-x1 ) / N;\n\n\t// Build the output array...\n\tarr = [ x1 ];\n\tfor ( i = 1; i < N; i++ ) {\n\t\tarr.push( x1 + (d*i) );\n\t}\n\tarr.push( x2 );\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = linspace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Generate a linearly spaced numeric array.\n*\n* @module @stdlib/array/base/linspace\n*\n* @example\n* var linspace = require( '@stdlib/array/base/linspace' );\n*\n* var arr = linspace( 0, 100, 6 );\n* // returns [ 0, 20, 40, 60, 80, 100 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar pow = require( '@stdlib/math/base/special/pow' );\n\n\n// MAIN //\n\n/**\n* Generates a logarithmically spaced numeric array.\n*\n* @param {number} a - exponent of start value\n* @param {number} b - exponent of end value\n* @param {NonNegativeInteger} len - length of output array\n* @returns {Array} logarithmically spaced numeric array\n*\n* @example\n* var arr = logspace( 0, 2, 6 );\n* // returns [ 1, ~2.5, ~6.31, ~15.85, ~39.81, 100 ]\n*/\nfunction logspace( a, b, len ) {\n\tvar arr;\n\tvar N;\n\tvar d;\n\tvar i;\n\n\tif ( len === 0 ) {\n\t\treturn [];\n\t}\n\t// Calculate the increment:\n\tN = len - 1;\n\td = ( b-a ) / N;\n\n\t// Build the output array...\n\tarr = [ pow( 10, a ) ];\n\tfor ( i = 1; i < N; i++ ) {\n\t\tarr.push( pow( 10, a+(d*i) ) );\n\t}\n\tarr.push( pow( 10, b ) );\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = logspace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Generate a logarithmically spaced numeric array.\n*\n* @module @stdlib/array/base/logspace\n*\n* @example\n* var logspace = require( '@stdlib/array/base/logspace' );\n*\n* var arr = logspace( 0, 2, 6 );\n* // returns [ 1, ~2.5, ~6.31, ~15.85, ~39.81, 100 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a function to elements in a two-dimensional nested input array and assigns results to elements in a new two-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Collection>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Function} fcn - function to apply\n* @param {*} [thisArg] - function execution context\n* @returns {Array<Array>} output array\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = map2d( x, shape, scale );\n* // returns [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ]\n*/\nfunction map2d( x, shape, fcn, thisArg ) {\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar x0;\n\tvar y0;\n\tvar y;\n\n\tS0 = shape[ 1 ];\n\tS1 = shape[ 0 ];\n\ty = [];\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tx0 = x[ i1 ];\n\t\ty0 = [];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\ty0.push( fcn.call( thisArg, x0[ i0 ], [ i1, i0 ], x ) );\n\t\t}\n\t\ty.push( y0 );\n\t}\n\treturn y;\n}\n\n\n// EXPORTS //\n\nmodule.exports = map2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a function to elements in a two-dimensional nested input array and assigns results to elements in a two-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Collection>} x - input nested array\n* @param {ArrayLikeObject<Collection>} y - output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Function} fcn - function to apply\n* @param {*} [thisArg] - function execution context\n* @returns {Array<Array>} output array\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = zeros2d( shape );\n*\n* var out = map2d( x, y, shape, scale );\n* // returns [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ]\n*\n* var bool = ( out === y );\n* // returns true\n*/\nfunction map2d( x, y, shape, fcn, thisArg ) {\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar x0;\n\tvar y0;\n\n\tS0 = shape[ 1 ];\n\tS1 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 ) {\n\t\treturn y;\n\t}\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tx0 = x[ i1 ];\n\t\ty0 = y[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\ty0[ i0 ] = fcn.call( thisArg, x0[ i0 ], [ i1, i0 ], x );\n\t\t}\n\t}\n\treturn y;\n}\n\n\n// EXPORTS //\n\nmodule.exports = map2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a function to elements in a two-dimensional nested input array and assign results to elements in a new two-dimensional nested output array.\n*\n* @module @stdlib/array/base/map2d\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var map2d = require( '@stdlib/array/base/map2d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = map2d( x, shape, scale );\n* // returns [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ]\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var map2d = require( '@stdlib/array/base/map2d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = zeros2d( shape );\n*\n* var out = map2d.assign( x, y, shape, scale );\n* // returns [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ]\n*\n* var bool = ( out === y );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a function to elements in a three-dimensional nested input array and assigns results to elements in a new three-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Collection>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Function} fcn - function to apply\n* @param {*} [thisArg] - function execution context\n* @returns {Array<Array>} output array\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = map3d( x, shape, scale );\n* // returns [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ]\n*/\nfunction map3d( x, shape, fcn, thisArg ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar x0;\n\tvar y0;\n\tvar x1;\n\tvar y1;\n\tvar y;\n\n\tS0 = shape[ 2 ];\n\tS1 = shape[ 1 ];\n\tS2 = shape[ 0 ];\n\ty = [];\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\tx1 = x[ i2 ];\n\t\ty1 = [];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\tx0 = x1[ i1 ];\n\t\t\ty0 = [];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\ty0.push( fcn.call( thisArg, x0[ i0 ], [ i2, i1, i0 ], x ) );\n\t\t\t}\n\t\t\ty1.push( y0 );\n\t\t}\n\t\ty.push( y1 );\n\t}\n\treturn y;\n}\n\n\n// EXPORTS //\n\nmodule.exports = map3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a function to elements in a three-dimensional nested input array and assigns results to elements in a three-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Collection>} x - input nested array\n* @param {ArrayLikeObject<Collection>} y - output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Function} fcn - function to apply\n* @param {*} [thisArg] - function execution context\n* @returns {Array<Array>} output array\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = zeros3d( shape );\n*\n* var out = map3d( x, y, shape, scale );\n* // returns [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ]\n*\n* var bool = ( out === y );\n* // returns true\n*/\nfunction map3d( x, y, shape, fcn, thisArg ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar x0;\n\tvar y0;\n\tvar x1;\n\tvar y1;\n\n\tS0 = shape[ 2 ];\n\tS1 = shape[ 1 ];\n\tS2 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 ) {\n\t\treturn y;\n\t}\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\tx1 = x[ i2 ];\n\t\ty1 = y[ i2 ];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\tx0 = x1[ i1 ];\n\t\t\ty0 = y1[ i1 ];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\ty0[ i0 ] = fcn.call( thisArg, x0[ i0 ], [ i2, i1, i0 ], x );\n\t\t\t}\n\t\t}\n\t}\n\treturn y;\n}\n\n\n// EXPORTS //\n\nmodule.exports = map3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a function to elements in a three-dimensional nested input array and assign results to elements in a new three-dimensional nested output array.\n*\n* @module @stdlib/array/base/map3d\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var map3d = require( '@stdlib/array/base/map3d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = map3d( x, shape, scale );\n* // returns [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ]\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n* var map3d = require( '@stdlib/array/base/map3d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = zeros3d( shape );\n*\n* var out = map3d.assign( x, y, shape, scale );\n* // returns [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ]\n*\n* var bool = ( out === y );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a function to elements in a four-dimensional nested input array and assigns results to elements in a new four-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Collection>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Function} fcn - function to apply\n* @param {*} [thisArg] - function execution context\n* @returns {Array<Array>} output array\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 1, 2, 2 ];\n*\n* var x = ones4d( shape );\n* var y = map4d( x, shape, scale );\n* // returns [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ]\n*/\nfunction map4d( x, shape, fcn, thisArg ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar x0;\n\tvar y0;\n\tvar x1;\n\tvar y1;\n\tvar x2;\n\tvar y2;\n\tvar y;\n\n\tS0 = shape[ 3 ];\n\tS1 = shape[ 2 ];\n\tS2 = shape[ 1 ];\n\tS3 = shape[ 0 ];\n\ty = [];\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\tx2 = x[ i3 ];\n\t\ty2 = [];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\tx1 = x2[ i2 ];\n\t\t\ty1 = [];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tx0 = x1[ i1 ];\n\t\t\t\ty0 = [];\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\ty0.push( fcn.call( thisArg, x0[ i0 ], [ i3, i2, i1, i0 ], x ) ); // eslint-disable-line max-len\n\t\t\t\t}\n\t\t\t\ty1.push( y0 );\n\t\t\t}\n\t\t\ty2.push( y1 );\n\t\t}\n\t\ty.push( y2 );\n\t}\n\treturn y;\n}\n\n\n// EXPORTS //\n\nmodule.exports = map4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a function to elements in a four-dimensional nested input array and assigns results to elements in a four-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Collection>} x - input nested array\n* @param {ArrayLikeObject<Collection>} y - output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Function} fcn - function to apply\n* @param {*} [thisArg] - function execution context\n* @returns {Array<Array>} output array\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 1, 2, 2 ];\n*\n* var x = ones4d( shape );\n* var y = zeros4d( shape );\n*\n* var out = map4d( x, y, shape, scale );\n* // returns [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ]\n*\n* var bool = ( out === y );\n* // returns true\n*/\nfunction map4d( x, y, shape, fcn, thisArg ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar x0;\n\tvar y0;\n\tvar x1;\n\tvar y1;\n\tvar x2;\n\tvar y2;\n\n\tS0 = shape[ 3 ];\n\tS1 = shape[ 2 ];\n\tS2 = shape[ 1 ];\n\tS3 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 ) {\n\t\treturn y;\n\t}\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\tx2 = x[ i3 ];\n\t\ty2 = y[ i3 ];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\tx1 = x2[ i2 ];\n\t\t\ty1 = y2[ i2 ];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tx0 = x1[ i1 ];\n\t\t\t\ty0 = y1[ i1 ];\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\ty0[ i0 ] = fcn.call( thisArg, x0[ i0 ], [ i3, i2, i1, i0 ], x ); // eslint-disable-line max-len\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn y;\n}\n\n\n// EXPORTS //\n\nmodule.exports = map4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a function to elements in a four-dimensional nested input array and assign results to elements in a new four-dimensional nested output array.\n*\n* @module @stdlib/array/base/map4d\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var map4d = require( '@stdlib/array/base/map4d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 1, 2, 2 ];\n*\n* var x = ones4d( shape );\n* var y = map4d( x, shape, scale );\n* // returns [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ]\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n* var map4d = require( '@stdlib/array/base/map4d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 1, 2, 2 ];\n*\n* var x = ones4d( shape );\n* var y = zeros4d( shape );\n*\n* var out = map4d.assign( x, y, shape, scale );\n* // returns [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ]\n*\n* var bool = ( out === y );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a function to elements in a five-dimensional nested input array and assigns results to elements in a new five-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Collection>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Function} fcn - function to apply\n* @param {*} [thisArg] - function execution context\n* @returns {Array<Array>} output array\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* var x = ones5d( shape );\n* var y = map5d( x, shape, scale );\n* // returns [ [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ] ]\n*/\nfunction map5d( x, shape, fcn, thisArg ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar x0;\n\tvar y0;\n\tvar x1;\n\tvar y1;\n\tvar x2;\n\tvar y2;\n\tvar x3;\n\tvar y3;\n\tvar y;\n\n\tS0 = shape[ 4 ];\n\tS1 = shape[ 3 ];\n\tS2 = shape[ 2 ];\n\tS3 = shape[ 1 ];\n\tS4 = shape[ 0 ];\n\ty = [];\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\tx3 = x[ i4 ];\n\t\ty3 = [];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\tx2 = x3[ i3 ];\n\t\t\ty2 = [];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\tx1 = x2[ i2 ];\n\t\t\t\ty1 = [];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\tx0 = x1[ i1 ];\n\t\t\t\t\ty0 = [];\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\ty0.push( fcn.call( thisArg, x0[ i0 ], [ i4, i3, i2, i1, i0 ], x ) ); // eslint-disable-line max-len\n\t\t\t\t\t}\n\t\t\t\t\ty1.push( y0 );\n\t\t\t\t}\n\t\t\t\ty2.push( y1 );\n\t\t\t}\n\t\t\ty3.push( y2 );\n\t\t}\n\t\ty.push( y3 );\n\t}\n\treturn y;\n}\n\n\n// EXPORTS //\n\nmodule.exports = map5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a function to elements in a five-dimensional nested input array and assigns results to elements in a five-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Collection>} x - input nested array\n* @param {ArrayLikeObject<Collection>} y - output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Function} fcn - function to apply\n* @param {*} [thisArg] - function execution context\n* @returns {Array<Array>} output array\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* var x = ones5d( shape );\n* var y = zeros5d( shape );\n*\n* var out = map5d( x, y, shape, scale );\n* // returns [ [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ] ]\n*\n* var bool = ( out === y );\n* // returns true\n*/\nfunction map5d( x, y, shape, fcn, thisArg ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar x0;\n\tvar y0;\n\tvar x1;\n\tvar y1;\n\tvar x2;\n\tvar y2;\n\tvar x3;\n\tvar y3;\n\n\tS0 = shape[ 4 ];\n\tS1 = shape[ 3 ];\n\tS2 = shape[ 2 ];\n\tS3 = shape[ 1 ];\n\tS4 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 || S4 <= 0 ) {\n\t\treturn y;\n\t}\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\tx3 = x[ i4 ];\n\t\ty3 = y[ i4 ];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\tx2 = x3[ i3 ];\n\t\t\ty2 = y3[ i3 ];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\tx1 = x2[ i2 ];\n\t\t\t\ty1 = y2[ i2 ];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\tx0 = x1[ i1 ];\n\t\t\t\t\ty0 = y1[ i1 ];\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\ty0[ i0 ] = fcn.call( thisArg, x0[ i0 ], [ i4, i3, i2, i1, i0 ], x ); // eslint-disable-line max-len\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn y;\n}\n\n\n// EXPORTS //\n\nmodule.exports = map5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a function to elements in a five-dimensional nested input array and assign results to elements in a new five-dimensional nested output array.\n*\n* @module @stdlib/array/base/map5d\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var map5d = require( '@stdlib/array/base/map5d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* var x = ones5d( shape );\n* var y = map5d( x, shape, scale );\n* // returns [ [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ] ]\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n* var map5d = require( '@stdlib/array/base/map5d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* var x = ones5d( shape );\n* var y = zeros5d( shape );\n*\n* var out = map5d.assign( x, y, shape, scale );\n* // returns [ [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ] ]\n*\n* var bool = ( out === y );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a binary callback to elements in two two-dimensional nested input arrays according to elements in a two-dimensional nested mask array and assigns results to elements in a two-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing two input nested arrays, an input nested mask array, and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - unary callback\n* @returns {void}\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = ones2d( shape );\n* var z = zeros2d( shape );\n*\n* var mask = [ [ 0, 1 ], [ 0, 0 ] ];\n*\n* mskbinary2d( [ x, y, mask, z ], shape, add );\n*\n* console.log( z );\n* // => [ [ 2.0, 0.0 ], [ 2.0, 2.0 ] ]\n*/\nfunction mskbinary2d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar m0;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar m;\n\n\tS0 = shape[ 1 ];\n\tS1 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 3 ];\n\tm = arrays[ 2 ];\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tx0 = x[ i1 ];\n\t\ty0 = y[ i1 ];\n\t\tz0 = z[ i1 ];\n\t\tm0 = m[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tif ( m0[ i0 ] === 0 ) {\n\t\t\t\tz0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ] );\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = mskbinary2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a binary callback to elements in two two-dimensional nested input arrays according to elements in a two-dimensional nested mask array and assign results to elements in a two-dimensional nested output array.\n*\n* @module @stdlib/array/base/mskbinary2d\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n* var mskbinary2d = require( '@stdlib/array/base/mskbinary2d' );\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = ones2d( shape );\n* var z = zeros2d( shape );\n*\n* var mask = [ [ 0, 1 ], [ 0, 0 ] ];\n*\n* mskbinary2d( [ x, y, mask, z ], shape, add );\n*\n* console.log( z );\n* // => [ [ 2.0, 0.0 ], [ 2.0, 2.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a unary callback to elements in a two-dimensional nested input array according to elements in a two-dimensional nested mask array and assigns results to elements in a two-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing one input nested array, an input nested mask array, and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - unary callback\n* @returns {void}\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = zeros2d( shape );\n*\n* var mask = [ [ 0, 1 ], [ 0, 0 ] ];\n*\n* mskunary2d( [ x, mask, y ], shape, scale );\n*\n* console.log( y );\n* // => [ [ 10.0, 0.0 ], [ 10.0, 10.0 ] ]\n*/\nfunction mskunary2d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar x0;\n\tvar y0;\n\tvar m0;\n\tvar x;\n\tvar y;\n\tvar m;\n\n\tS0 = shape[ 1 ];\n\tS1 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 2 ];\n\tm = arrays[ 1 ];\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tx0 = x[ i1 ];\n\t\ty0 = y[ i1 ];\n\t\tm0 = m[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tif ( m0[ i0 ] === 0 ) {\n\t\t\t\ty0[ i0 ] = fcn( x0[ i0 ] );\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = mskunary2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a unary callback to elements in a two-dimensional nested input array according to elements in a two-dimensional nested mask array and assign results to elements in a two-dimensional nested output array.\n*\n* @module @stdlib/array/base/mskunary2d\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var mskunary2d = require( '@stdlib/array/base/mskunary2d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = zeros2d( shape );\n*\n* var mask = [ [ 0, 1 ], [ 0, 0 ] ];\n*\n* mskunary2d( [ x, mask, y ], shape, scale );\n*\n* console.log( y );\n* // => [ [ 10.0, 0.0 ], [ 10.0, 10.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a unary callback to elements in a three-dimensional nested input array according to elements in a three-dimensional nested mask array and assigns results to elements in a three-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing one input nested array, an input nested mask array, and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - unary callback\n* @returns {void}\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = zeros3d( shape );\n*\n* var mask = [ [ [ 0, 1 ], [ 0, 0 ] ] ];\n*\n* mskunary3d( [ x, mask, y ], shape, scale );\n*\n* console.log( y );\n* // => [ [ [ 10.0, 0.0 ], [ 10.0, 10.0 ] ] ]\n*/\nfunction mskunary3d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar x0;\n\tvar x1;\n\tvar y0;\n\tvar y1;\n\tvar m0;\n\tvar m1;\n\tvar x;\n\tvar y;\n\tvar m;\n\n\tS0 = shape[ 2 ];\n\tS1 = shape[ 1 ];\n\tS2 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 2 ];\n\tm = arrays[ 1 ];\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\tx1 = x[ i2 ];\n\t\ty1 = y[ i2 ];\n\t\tm1 = m[ i2 ];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\tx0 = x1[ i1 ];\n\t\t\ty0 = y1[ i1 ];\n\t\t\tm0 = m1[ i1 ];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\tif ( m0[ i0 ] === 0 ) {\n\t\t\t\t\ty0[ i0 ] = fcn( x0[ i0 ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = mskunary3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a unary callback to elements in a three-dimensional nested input array according to elements in a three-dimensional nested mask array and assign results to elements in a three-dimensional nested output array.\n*\n* @module @stdlib/array/base/mskunary3d\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n* var mskunary3d = require( '@stdlib/array/base/mskunary3d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = zeros3d( shape );\n*\n* var mask = [ [ [ 0, 1 ], [ 0, 0 ] ] ];\n*\n* mskunary3d( [ x, mask, y ], shape, scale );\n*\n* console.log( y );\n* // => [ [ [ 10.0, 0.0 ], [ 10.0, 10.0 ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Returns the n-fold Cartesian product.\n*\n* ## Notes\n*\n* -   The main insight of this implementation is that the n-fold Cartesian product can be presented as an n-dimensional array stored in row-major order. As such, we can\n*\n*     -   Compute the total number of tuples, which is simply the product of the size of each provided array (set). For n-dimensional arrays, this is the equivalent of computing the product of array dimensions to determine the total number of elements.\n*     -   Initialize an array for storing indices for indexing into each provided array. For n-dimensional arrays, the index array is equivalent to an array of subscripts for indexing into each dimension.\n*     -   For the outermost loop, treat the loop index as a linear index into an n-dimensional array and resolve the corresponding subscripts.\n*     -   Continue iterating until all tuples have been generated.\n*\n* @param {ArrayLikeObject} x1 - first input array\n* @param {ArrayLikeObject} x2 - second input array\n* @param {ArrayLikeObject} [...args] - additional input arrays\n* @returns {Array<Array>} list of ordered tuples comprising the n-fold Cartesian product\n*\n* @example\n* var x1 = [ 1, 2, 3 ];\n* var x2 = [ 4, 5 ];\n*\n* var out = nCartesianProduct( x1, x2 );\n* // returns [ [ 1, 4 ], [ 1, 5 ], [ 2, 4 ], [ 2, 5 ], [ 3, 4 ], [ 3, 5 ] ]\n*/\nfunction nCartesianProduct( x1, x2 ) {\n\tvar nargs;\n\tvar dims;\n\tvar arr;\n\tvar out;\n\tvar tmp;\n\tvar arg;\n\tvar idx;\n\tvar N;\n\tvar s;\n\tvar i;\n\tvar j;\n\tvar k;\n\n\tnargs = arguments.length;\n\n\t// Initialize the list of arrays:\n\tarr = [ x1, x2 ];\n\n\t// Initialize the list of array dimensions (equivalent to ndarray shape):\n\tdims = [ x1.length, x2.length ];\n\n\t// Initialize a list of indices for indexing into each array (equivalent to ndarray subscripts):\n\tidx = [ 0, 0 ];\n\n\t// Compute the total number of ordered tuples:\n\tN = dims[ 0 ] * dims[ 1 ];\n\n\t// Update loop variables for any additional arrays...\n\tfor ( i = 2; i < nargs; i++ ) {\n\t\targ = arguments[ i ];\n\t\tarr.push( arg );\n\t\tdims.push( arg.length );\n\t\tidx.push( 0 );\n\t\tN *= dims[ i ];\n\t}\n\t// Compute the n-fold Cartesian product...\n\tout = [];\n\tfor ( i = 0; i < N; i++ ) {\n\t\t// Resolve a linear index to array indices (logic is equivalent to what is found in ndarray/base/ind2sub for an ndarray stored in row-major order; see https://github.com/stdlib-js/stdlib/blob/215ca5355f3404f15996fd0ced58a98e46f22be6/lib/node_modules/%40stdlib/ndarray/base/ind2sub/lib/assign.js)...\n\t\tk = i;\n\t\tfor ( j = nargs-1; j >= 0; j-- ) {\n\t\t\ts = k % dims[ j ];\n\t\t\tk -= s;\n\t\t\tk /= dims[ j ];\n\t\t\tidx[ j ] = s;\n\t\t}\n\t\t// Generate the next ordered tuple...\n\t\ttmp = [];\n\t\tfor ( j = 0; j < nargs; j++ ) {\n\t\t\ttmp.push( arr[ j ][ idx[ j ] ] );\n\t\t}\n\t\tout.push( tmp );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = nCartesianProduct;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the n-fold Cartesian product.\n*\n* @module @stdlib/array/base/n-cartesian-product\n*\n* @example\n* var nCartesianProduct = require( '@stdlib/array/base/n-cartesian-product' );\n*\n* var x1 = [ 1, 2, 3 ];\n* var x2 = [ 4, 5 ];\n*\n* var out = nCartesianProduct( x1, x2 );\n* // returns [ [ 1, 4 ], [ 1, 5 ], [ 2, 4 ], [ 2, 5 ], [ 3, 4 ], [ 3, 5 ] ]\n*/\n\n// MAIN //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Generates a linearly spaced numeric array whose elements increment by 1 starting from one.\n*\n* @param {number} n - number of elements\n* @returns {Array<number>} linearly spaced numeric array\n*\n* @example\n* var arr = oneTo( 6 );\n* // returns [ 1, 2, 3, 4, 5, 6 ]\n*/\nfunction oneTo( n ) {\n\tvar arr;\n\tvar i;\n\n\tarr = [];\n\tif ( n <= 0 ) {\n\t\treturn arr;\n\t}\n\tfor ( i = 1; i < n+1; i++ ) {\n\t\tarr.push( i );\n\t}\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = oneTo;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Generate a linearly spaced numeric array whose elements increment by 1 starting from one.\n*\n* @module @stdlib/array/base/one-to\n*\n* @example\n* var oneTo = require( '@stdlib/array/base/one-to' );\n*\n* var arr = oneTo( 6 );\n* // returns [ 1, 2, 3, 4, 5, 6 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled = require( './../../../base/filled' );\n\n\n// MAIN //\n\n/**\n* Returns a \"generic\" array filled with ones.\n*\n* @param {NonNegativeInteger} len - array length\n* @returns {Array} output array\n*\n* @example\n* var out = ones( 3 );\n* // returns [ 1.0, 1.0, 1.0 ]\n*/\nfunction ones( len ) {\n\treturn filled( 1.0, len );\n}\n\n\n// EXPORTS //\n\nmodule.exports = ones;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a \"generic\" array filled with ones.\n*\n* @module @stdlib/array/base/ones\n*\n* @example\n* var ones = require( '@stdlib/array/base/ones' );\n*\n* var out = ones( 3 );\n* // returns [ 1.0, 1.0, 1.0 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled2d = require( './../../../base/filled2d' );\n\n\n// MAIN //\n\n/**\n* Returns a two-dimensional nested array filled with ones.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {ArrayArray} filled array\n*\n* @example\n* var out = ones2d( [ 1, 3 ] );\n* // returns [ [ 1.0, 1.0, 1.0 ] ]\n*/\nfunction ones2d( shape ) {\n\treturn filled2d( 1.0, shape );\n}\n\n\n// EXPORTS //\n\nmodule.exports = ones2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a two-dimensional nested array filled with ones.\n*\n* @module @stdlib/array/base/ones2d\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n*\n* var out = ones2d( [ 1, 3 ] );\n* // returns [ [ 1.0, 1.0, 1.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled3d = require( './../../../base/filled3d' );\n\n\n// MAIN //\n\n/**\n* Returns a three-dimensional nested array filled with ones.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {Array} filled array\n*\n* @example\n* var out = ones3d( [ 1, 1, 3 ] );\n* // returns [ [ [ 1.0, 1.0, 1.0 ] ] ]\n*/\nfunction ones3d( shape ) {\n\treturn filled3d( 1.0, shape );\n}\n\n\n// EXPORTS //\n\nmodule.exports = ones3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a three-dimensional nested array filled with ones.\n*\n* @module @stdlib/array/base/ones3d\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n*\n* var out = ones3d( [ 1, 1, 3 ] );\n* // returns [ [ [ 1.0, 1.0, 1.0 ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled4d = require( './../../../base/filled4d' );\n\n\n// MAIN //\n\n/**\n* Returns a four-dimensional nested array filled with ones.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {Array} filled array\n*\n* @example\n* var out = ones4d( [ 1, 1, 1, 3 ] );\n* // returns [ [ [ [ 1.0, 1.0, 1.0 ] ] ] ]\n*/\nfunction ones4d( shape ) {\n\treturn filled4d( 1.0, shape );\n}\n\n\n// EXPORTS //\n\nmodule.exports = ones4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a four-dimensional nested array filled with ones.\n*\n* @module @stdlib/array/base/ones4d\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n*\n* var out = ones4d( [ 1, 1, 1, 3 ] );\n* // returns [ [ [ [ 1.0, 1.0, 1.0 ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled5d = require( './../../../base/filled5d' );\n\n\n// MAIN //\n\n/**\n* Returns a five-dimensional nested array filled with ones.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {Array} filled array\n*\n* @example\n* var out = ones5d( [ 1, 1, 1, 1, 3 ] );\n* // returns [ [ [ [ [ 1.0, 1.0, 1.0 ] ] ] ] ]\n*/\nfunction ones5d( shape ) {\n\treturn filled5d( 1.0, shape );\n}\n\n\n// EXPORTS //\n\nmodule.exports = ones5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a five-dimensional nested array filled with ones.\n*\n* @module @stdlib/array/base/ones5d\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n*\n* var out = ones5d( [ 1, 1, 1, 1, 3 ] );\n* // returns [ [ [ [ [ 1.0, 1.0, 1.0 ] ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar fillednd = require( './../../../base/fillednd' );\n\n\n// MAIN //\n\n/**\n* Returns an n-dimensional nested array filled with ones.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {Array} filled array\n*\n* @example\n* var out = onesnd( [ 3 ] );\n* // returns [ 1.0, 1.0, 1.0 ]\n*\n* @example\n* var out = onesnd( [ 1, 3 ] );\n* // returns [ [ 1.0, 1.0, 1.0 ] ]\n*/\nfunction onesnd( shape ) {\n\treturn fillednd( 1.0, shape );\n}\n\n\n// EXPORTS //\n\nmodule.exports = onesnd;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an n-dimensional nested array filled with ones.\n*\n* @module @stdlib/array/base/onesnd\n*\n* @example\n* var onesnd = require( '@stdlib/array/base/onesnd' );\n*\n* var out = onesnd( [ 1, 3 ] );\n* // returns [ [ 1.0, 1.0, 1.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a quaternary callback to elements in four two-dimensional nested input arrays and assigns results to elements in a two-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing four input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - quaternary callback\n* @returns {void}\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add4' );\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = ones2d( shape );\n* var z = ones2d( shape );\n* var w = ones2d( shape );\n* var out = zeros2d( shape );\n*\n* quaternary2d( [ x, y, z, w, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ 4.0, 4.0 ], [ 4.0, 4.0 ] ]\n*/\nfunction quaternary2d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar v0;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\tvar v;\n\n\tS0 = shape[ 1 ];\n\tS1 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tw = arrays[ 3 ];\n\tv = arrays[ 4 ];\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tx0 = x[ i1 ];\n\t\ty0 = y[ i1 ];\n\t\tz0 = z[ i1 ];\n\t\tw0 = w[ i1 ];\n\t\tv0 = v[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tv0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ], z0[ i0 ], w0[ i0 ] );\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = quaternary2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a quaternary callback to elements in four two-dimensional nested input arrays and assign results to elements in a two-dimensional nested output array.\n*\n* @module @stdlib/array/base/quaternary2d\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var add = require( '@stdlib/math/base/ops/add4' );\n* var quaternary2d = require( '@stdlib/array/base/quaternary2d' );\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = ones2d( shape );\n* var z = ones2d( shape );\n* var w = ones2d( shape );\n* var out = zeros2d( shape );\n*\n* quaternary2d( [ x, y, z, w, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ 4.0, 4.0 ], [ 4.0, 4.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a quaternary callback to elements in four three-dimensional nested input arrays and assigns results to elements in a three-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Array<Collection>>>} arrays - array-like object containing four input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - quaternary callback\n* @returns {void}\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add4' );\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n*\n* var shape = [ 1, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = ones3d( shape );\n* var z = ones3d( shape );\n* var w = ones3d( shape );\n* var out = zeros3d( shape );\n*\n* quaternary3d( [ x, y, z, w, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ 4.0, 4.0 ], [ 4.0, 4.0 ] ] ]\n*/\nfunction quaternary3d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar v0;\n\tvar x1;\n\tvar y1;\n\tvar z1;\n\tvar w1;\n\tvar v1;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\tvar v;\n\n\tS0 = shape[ 2 ];\n\tS1 = shape[ 1 ];\n\tS2 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tw = arrays[ 3 ];\n\tv = arrays[ 4 ];\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\tx1 = x[ i2 ];\n\t\ty1 = y[ i2 ];\n\t\tz1 = z[ i2 ];\n\t\tw1 = w[ i2 ];\n\t\tv1 = v[ i2 ];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\tx0 = x1[ i1 ];\n\t\t\ty0 = y1[ i1 ];\n\t\t\tz0 = z1[ i1 ];\n\t\t\tw0 = w1[ i1 ];\n\t\t\tv0 = v1[ i1 ];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\tv0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ], z0[ i0 ], w0[ i0 ] );\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = quaternary3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a quaternary callback to elements in four three-dimensional nested input arrays and assign results to elements in a three-dimensional nested output array.\n*\n* @module @stdlib/array/base/quaternary3d\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n* var add = require( '@stdlib/math/base/ops/add4' );\n* var quaternary3d = require( '@stdlib/array/base/quaternary3d' );\n*\n* var shape = [ 1, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = ones3d( shape );\n* var z = ones3d( shape );\n* var w = ones3d( shape );\n* var out = zeros3d( shape );\n*\n* quaternary3d( [ x, y, z, w, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ 4.0, 4.0 ], [ 4.0, 4.0 ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a quaternary callback to elements in four four-dimensional nested input arrays and assigns results to elements in a four-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Array<Array<Collection>>>>} arrays - array-like object containing four input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - quaternary callback\n* @returns {void}\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add4' );\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n*\n* var shape = [ 1, 1, 2, 2 ];\n*\n* var x = ones4d( shape );\n* var y = ones4d( shape );\n* var z = ones4d( shape );\n* var w = ones4d( shape );\n* var out = zeros4d( shape );\n*\n* quaternary4d( [ x, y, z, w, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ [ 4.0, 4.0 ], [ 4.0, 4.0 ] ] ] ]\n*/\nfunction quaternary4d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar v0;\n\tvar x1;\n\tvar y1;\n\tvar z1;\n\tvar w1;\n\tvar v1;\n\tvar x2;\n\tvar y2;\n\tvar z2;\n\tvar w2;\n\tvar v2;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\tvar v;\n\n\tS0 = shape[ 3 ];\n\tS1 = shape[ 2 ];\n\tS2 = shape[ 1 ];\n\tS3 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tw = arrays[ 3 ];\n\tv = arrays[ 4 ];\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\tx2 = x[ i3 ];\n\t\ty2 = y[ i3 ];\n\t\tz2 = z[ i3 ];\n\t\tw2 = w[ i3 ];\n\t\tv2 = v[ i3 ];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\tx1 = x2[ i2 ];\n\t\t\ty1 = y2[ i2 ];\n\t\t\tz1 = z2[ i2 ];\n\t\t\tw1 = w2[ i2 ];\n\t\t\tv1 = v2[ i2 ];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tx0 = x1[ i1 ];\n\t\t\t\ty0 = y1[ i1 ];\n\t\t\t\tz0 = z1[ i1 ];\n\t\t\t\tw0 = w1[ i1 ];\n\t\t\t\tv0 = v1[ i1 ];\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\tv0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ], z0[ i0 ], w0[ i0 ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = quaternary4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a quaternary callback to elements in four four-dimensional nested input arrays and assign results to elements in a four-dimensional nested output array.\n*\n* @module @stdlib/array/base/quaternary4d\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n* var add = require( '@stdlib/math/base/ops/add4' );\n* var quaternary4d = require( '@stdlib/array/base/quaternary4d' );\n*\n* var shape = [ 1, 1, 2, 2 ];\n*\n* var x = ones4d( shape );\n* var y = ones4d( shape );\n* var z = ones4d( shape );\n* var w = ones4d( shape );\n* var out = zeros4d( shape );\n*\n* quaternary4d( [ x, y, z, w, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ [ 4.0, 4.0 ], [ 4.0, 4.0 ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a quaternary callback to elements in four five-dimensional nested input arrays and assigns results to elements in a five-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Array<Array<Collection>>>>} arrays - array-like object containing four input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - quaternary callback\n* @returns {void}\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add4' );\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n*\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* var x = ones5d( shape );\n* var y = ones5d( shape );\n* var z = ones5d( shape );\n* var w = ones5d( shape );\n* var out = zeros5d( shape );\n*\n* quaternary5d( [ x, y, z, w, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ [ [ 4.0, 4.0 ], [ 4.0, 4.0 ] ] ] ] ]\n*/\nfunction quaternary5d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar v0;\n\tvar x1;\n\tvar y1;\n\tvar z1;\n\tvar w1;\n\tvar v1;\n\tvar x2;\n\tvar y2;\n\tvar z2;\n\tvar w2;\n\tvar v2;\n\tvar x3;\n\tvar y3;\n\tvar z3;\n\tvar w3;\n\tvar v3;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\tvar v;\n\n\tS0 = shape[ 4 ];\n\tS1 = shape[ 3 ];\n\tS2 = shape[ 2 ];\n\tS3 = shape[ 1 ];\n\tS4 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 || S4 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tw = arrays[ 3 ];\n\tv = arrays[ 4 ];\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\tx3 = x[ i4 ];\n\t\ty3 = y[ i4 ];\n\t\tz3 = z[ i4 ];\n\t\tw3 = w[ i4 ];\n\t\tv3 = v[ i4 ];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\tx2 = x3[ i3 ];\n\t\t\ty2 = y3[ i3 ];\n\t\t\tz2 = z3[ i3 ];\n\t\t\tw2 = w3[ i3 ];\n\t\t\tv2 = v3[ i3 ];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\tx1 = x2[ i2 ];\n\t\t\t\ty1 = y2[ i2 ];\n\t\t\t\tz1 = z2[ i2 ];\n\t\t\t\tw1 = w2[ i2 ];\n\t\t\t\tv1 = v2[ i2 ];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\tx0 = x1[ i1 ];\n\t\t\t\t\ty0 = y1[ i1 ];\n\t\t\t\t\tz0 = z1[ i1 ];\n\t\t\t\t\tw0 = w1[ i1 ];\n\t\t\t\t\tv0 = v1[ i1 ];\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\tv0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ], z0[ i0 ], w0[ i0 ] ); // eslint-disable-line max-len\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = quaternary5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a quaternary callback to elements in four five-dimensional nested input arrays and assign results to elements in a five-dimensional nested output array.\n*\n* @module @stdlib/array/base/quaternary5d\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n* var add = require( '@stdlib/math/base/ops/add4' );\n* var quaternary5d = require( '@stdlib/array/base/quaternary5d' );\n*\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* var x = ones5d( shape );\n* var y = ones5d( shape );\n* var z = ones5d( shape );\n* var w = ones5d( shape );\n* var out = zeros5d( shape );\n*\n* quaternary5d( [ x, y, z, w, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ [ [ 4.0, 4.0 ], [ 4.0, 4.0 ] ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a quinary callback to elements in five two-dimensional nested input arrays and assigns results to elements in a two-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing five input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - quinary callback\n* @returns {void}\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var add = require( '@stdlib/math/base/ops/add5' );\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = ones2d( shape );\n* var z = ones2d( shape );\n* var w = ones2d( shape );\n* var v = ones2d( shape );\n* var out = zeros2d( shape );\n*\n* quinary2d( [ x, y, z, w, v, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ 5.0, 5.0 ], [ 5.0, 5.0 ] ]\n*/\nfunction quinary2d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar u0;\n\tvar v0;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\tvar u;\n\tvar v;\n\n\tS0 = shape[ 1 ];\n\tS1 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tw = arrays[ 3 ];\n\tu = arrays[ 4 ];\n\tv = arrays[ 5 ];\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tx0 = x[ i1 ];\n\t\ty0 = y[ i1 ];\n\t\tz0 = z[ i1 ];\n\t\tw0 = w[ i1 ];\n\t\tu0 = u[ i1 ];\n\t\tv0 = v[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tv0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ], z0[ i0 ], w0[ i0 ], u0[ i0 ] );\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = quinary2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a quinary callback to elements in five two-dimensional nested input arrays and assign results to elements in a two-dimensional nested output array.\n*\n* @module @stdlib/array/base/quinary2d\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var add = require( '@stdlib/math/base/ops/add5' );\n* var quinary2d = require( '@stdlib/array/base/quinary2d' );\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = ones2d( shape );\n* var z = ones2d( shape );\n* var w = ones2d( shape );\n* var v = ones2d( shape );\n* var out = zeros2d( shape );\n*\n* quinary2d( [ x, y, z, w, v, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ 5.0, 5.0 ], [ 5.0, 5.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a quinary callback to elements in five three-dimensional nested input arrays and assigns results to elements in a three-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Array<Collection>>>} arrays - array-like object containing five input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - quinary callback\n* @returns {void}\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n* var add = require( '@stdlib/math/base/ops/add5' );\n*\n* var shape = [ 1, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = ones3d( shape );\n* var z = ones3d( shape );\n* var w = ones3d( shape );\n* var v = ones3d( shape );\n* var out = zeros3d( shape );\n*\n* quinary3d( [ x, y, z, w, v, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ 5.0, 5.0 ], [ 5.0, 5.0 ] ] ]\n*/\nfunction quinary3d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar u0;\n\tvar v0;\n\tvar x1;\n\tvar y1;\n\tvar z1;\n\tvar w1;\n\tvar u1;\n\tvar v1;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\tvar u;\n\tvar v;\n\n\tS0 = shape[ 2 ];\n\tS1 = shape[ 1 ];\n\tS2 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tw = arrays[ 3 ];\n\tu = arrays[ 4 ];\n\tv = arrays[ 5 ];\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\tx1 = x[ i2 ];\n\t\ty1 = y[ i2 ];\n\t\tz1 = z[ i2 ];\n\t\tw1 = w[ i2 ];\n\t\tu1 = u[ i2 ];\n\t\tv1 = v[ i2 ];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\tx0 = x1[ i1 ];\n\t\t\ty0 = y1[ i1 ];\n\t\t\tz0 = z1[ i1 ];\n\t\t\tw0 = w1[ i1 ];\n\t\t\tu0 = u1[ i1 ];\n\t\t\tv0 = v1[ i1 ];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\tv0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ], z0[ i0 ], w0[ i0 ], u0[ i0 ] ); // eslint-disable-line max-len\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = quinary3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a quinary callback to elements in five three-dimensional nested input arrays and assign results to elements in a three-dimensional nested output array.\n*\n* @module @stdlib/array/base/quinary3d\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n* var add = require( '@stdlib/math/base/ops/add5' );\n* var quinary3d = require( '@stdlib/array/base/quinary3d' );\n*\n* var shape = [ 1, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = ones3d( shape );\n* var z = ones3d( shape );\n* var w = ones3d( shape );\n* var v = ones3d( shape );\n* var out = zeros3d( shape );\n*\n* quinary3d( [ x, y, z, w, v, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ 5.0, 5.0 ], [ 5.0, 5.0 ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a quinary callback to elements in five four-dimensional nested input arrays and assigns results to elements in a four-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Array<Array<Collection>>>>} arrays - array-like object containing five input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - quinary callback\n* @returns {void}\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n* var add = require( '@stdlib/math/base/ops/add5' );\n*\n* var shape = [ 1, 1, 2, 2 ];\n*\n* var x = ones4d( shape );\n* var y = ones4d( shape );\n* var z = ones4d( shape );\n* var w = ones4d( shape );\n* var v = ones4d( shape );\n* var out = zeros4d( shape );\n*\n* quinary4d( [ x, y, z, w, v, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ [ 5.0, 5.0 ], [ 5.0, 5.0 ] ] ] ]\n*/\nfunction quinary4d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar u0;\n\tvar v0;\n\tvar x1;\n\tvar y1;\n\tvar z1;\n\tvar w1;\n\tvar u1;\n\tvar v1;\n\tvar x2;\n\tvar y2;\n\tvar z2;\n\tvar w2;\n\tvar u2;\n\tvar v2;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\tvar u;\n\tvar v;\n\n\tS0 = shape[ 3 ];\n\tS1 = shape[ 2 ];\n\tS2 = shape[ 1 ];\n\tS3 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tw = arrays[ 3 ];\n\tu = arrays[ 4 ];\n\tv = arrays[ 5 ];\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\tx2 = x[ i3 ];\n\t\ty2 = y[ i3 ];\n\t\tz2 = z[ i3 ];\n\t\tw2 = w[ i3 ];\n\t\tu2 = u[ i3 ];\n\t\tv2 = v[ i3 ];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\tx1 = x2[ i2 ];\n\t\t\ty1 = y2[ i2 ];\n\t\t\tz1 = z2[ i2 ];\n\t\t\tw1 = w2[ i2 ];\n\t\t\tu1 = u2[ i2 ];\n\t\t\tv1 = v2[ i2 ];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tx0 = x1[ i1 ];\n\t\t\t\ty0 = y1[ i1 ];\n\t\t\t\tz0 = z1[ i1 ];\n\t\t\t\tw0 = w1[ i1 ];\n\t\t\t\tu0 = u1[ i1 ];\n\t\t\t\tv0 = v1[ i1 ];\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\tv0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ], z0[ i0 ], w0[ i0 ], u0[ i0 ] ); // eslint-disable-line max-len\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = quinary4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a quinary callback to elements in five four-dimensional nested input arrays and assign results to elements in a four-dimensional nested output array.\n*\n* @module @stdlib/array/base/quinary4d\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n* var add = require( '@stdlib/math/base/ops/add5' );\n* var quinary4d = require( '@stdlib/array/base/quinary4d' );\n*\n* var shape = [ 1, 1, 2, 2 ];\n*\n* var x = ones4d( shape );\n* var y = ones4d( shape );\n* var z = ones4d( shape );\n* var w = ones4d( shape );\n* var v = ones4d( shape );\n* var out = zeros4d( shape );\n*\n* quinary4d( [ x, y, z, w, v, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ [ 5.0, 5.0 ], [ 5.0, 5.0 ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a quinary callback to elements in five five-dimensional nested input arrays and assigns results to elements in a five-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Array<Array<Array<Collection>>>>>} arrays - array-like object containing five input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - quinary callback\n* @returns {void}\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n* var add = require( '@stdlib/math/base/ops/add5' );\n*\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* var x = ones5d( shape );\n* var y = ones5d( shape );\n* var z = ones5d( shape );\n* var w = ones5d( shape );\n* var v = ones5d( shape );\n* var out = zeros5d( shape );\n*\n* quinary5d( [ x, y, z, w, v, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ [ [ 5.0, 5.0 ], [ 5.0, 5.0 ] ] ] ] ]\n*/\nfunction quinary5d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar u0;\n\tvar v0;\n\tvar x1;\n\tvar y1;\n\tvar z1;\n\tvar w1;\n\tvar u1;\n\tvar v1;\n\tvar x2;\n\tvar y2;\n\tvar z2;\n\tvar w2;\n\tvar u2;\n\tvar v2;\n\tvar x3;\n\tvar y3;\n\tvar z3;\n\tvar w3;\n\tvar u3;\n\tvar v3;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\tvar u;\n\tvar v;\n\n\tS0 = shape[ 4 ];\n\tS1 = shape[ 3 ];\n\tS2 = shape[ 2 ];\n\tS3 = shape[ 1 ];\n\tS4 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 || S4 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tw = arrays[ 3 ];\n\tu = arrays[ 4 ];\n\tv = arrays[ 5 ];\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\tx3 = x[ i4 ];\n\t\ty3 = y[ i4 ];\n\t\tz3 = z[ i4 ];\n\t\tw3 = w[ i4 ];\n\t\tu3 = u[ i4 ];\n\t\tv3 = v[ i4 ];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\tx2 = x3[ i3 ];\n\t\t\ty2 = y3[ i3 ];\n\t\t\tz2 = z3[ i3 ];\n\t\t\tw2 = w3[ i3 ];\n\t\t\tu2 = u3[ i3 ];\n\t\t\tv2 = v3[ i3 ];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\tx1 = x2[ i2 ];\n\t\t\t\ty1 = y2[ i2 ];\n\t\t\t\tz1 = z2[ i2 ];\n\t\t\t\tw1 = w2[ i2 ];\n\t\t\t\tu1 = u2[ i2 ];\n\t\t\t\tv1 = v2[ i2 ];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\tx0 = x1[ i1 ];\n\t\t\t\t\ty0 = y1[ i1 ];\n\t\t\t\t\tz0 = z1[ i1 ];\n\t\t\t\t\tw0 = w1[ i1 ];\n\t\t\t\t\tu0 = u1[ i1 ];\n\t\t\t\t\tv0 = v1[ i1 ];\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\tv0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ], z0[ i0 ], w0[ i0 ], u0[ i0 ] ); // eslint-disable-line max-len\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = quinary5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a quinary callback to elements in five five-dimensional nested input arrays and assign results to elements in a five-dimensional nested output array.\n*\n* @module @stdlib/array/base/quinary5d\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n* var add = require( '@stdlib/math/base/ops/add5' );\n* var quinary5d = require( '@stdlib/array/base/quinary5d' );\n*\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* var x = ones5d( shape );\n* var y = ones5d( shape );\n* var z = ones5d( shape );\n* var w = ones5d( shape );\n* var v = ones5d( shape );\n* var out = zeros5d( shape );\n*\n* quinary5d( [ x, y, z, w, v, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ [ [ 5.0, 5.0 ], [ 5.0, 5.0 ] ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar arraylike2object = require( './../../../base/arraylike2object' );\n\n\n// VARIABLES //\n\nvar arraySlice = Array.prototype.slice;\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether an object has a specified method.\n*\n* @private\n* @param {Object} obj - input object\n* @param {string} method - method name\n* @returns {boolean} boolean indicating whether an object has a specified method\n*\n* @example\n* var bool = hasMethod( [], 'slice' );\n* // returns true\n*\n* @example\n* var bool = hasMethod( [], 'beep' );\n* // returns false\n*/\nfunction hasMethod( obj, method ) {\n\treturn ( typeof obj[ method ] === 'function' );\n}\n\n/**\n* Returns a shallow copy of a portion of an array using the `Array#slice` built-in.\n*\n* @private\n* @param {Collection} x - input array\n* @param {integer} start - starting index (inclusive)\n* @param {integer} end - ending index (exclusive)\n* @returns {Array} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = builtin( x, 1, 3 );\n* // returns [ 2, 3 ]\n*/\nfunction builtin( x, start, end ) {\n\treturn arraySlice.call( x, start, end );\n}\n\n/**\n* Returns a shallow copy of a portion of an accessor array.\n*\n* @private\n* @param {Object} x - input array object\n* @param {integer} start - starting index (inclusive)\n* @param {integer} end - ending index (exclusive)\n* @returns {Array} output array\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' );\n* var arraylike2object = require( '@stdlib/array/base/arraylike2object' );\n*\n* var x = arraylike2object( toAccessorArray( [ 1, 2, 3, 4 ] ) );\n*\n* var out = accessors( x, 1, 3 );\n* // returns [ 2, 3 ]\n*/\nfunction accessors( x, start, end ) {\n\tvar data;\n\tvar get;\n\tvar out;\n\tvar i;\n\n\tdata = x.data;\n\tget = x.accessors[ 0 ];\n\tout = [];\n\tfor ( i = start; i < end; i++ ) {\n\t\tout.push( get( data, i ) );\n\t}\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Returns a shallow copy of a portion of an array.\n*\n* @param {Collection} x - input array\n* @param {integer} start - starting index (inclusive)\n* @param {integer} end - ending index (exclusive)\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = slice( x, 1, 3 );\n* // returns [ 2, 3 ]\n*\n* var bool = ( out === x );\n* // returns false\n*\n* @example\n* var Int32Array = require( '@stdlib/array/int32' );\n*\n* var x = new Int32Array( [ 1, 2, 3, 4 ] );\n*\n* var out = slice( x, 1, 3 );\n* // returns <Int32Array>[ 2, 3 ]\n*\n* var bool = ( out === x );\n* // returns false\n*/\nfunction slice( x, start, end ) {\n\tvar obj;\n\tif ( hasMethod( x, 'slice' ) ) {\n\t\treturn x.slice( start, end );\n\t}\n\tobj = arraylike2object( x );\n\tif ( obj.accessorProtocol ) {\n\t\treturn accessors( obj, start, end );\n\t}\n\t// Assume we can use the built-in `Array#slice` method to copy elements to a generic array:\n\treturn builtin( x, start, end );\n}\n\n\n// EXPORTS //\n\nmodule.exports = slice;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a shallow copy of a portion of an array.\n*\n* @module @stdlib/array/base/slice\n*\n* @example\n* var slice = require( '@stdlib/array/base/slice' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = slice( x, 1, 3 );\n* // returns [ 2, 3 ]\n*\n* var bool = ( out === x );\n* // returns false\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Converts a strided array to a two-dimensional nested array.\n*\n* ## Notes\n*\n* -   The function assumes that the input array is compatible with the specified array shape, dimension strides, and index offset.\n*\n* @param {Collection} x - input array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {IntegerArray} strides - dimension strides\n* @param {NonNegativeInteger} offset - index of the first indexed value in the input array\n* @returns {Array<Array>} two-dimensional nested array\n*\n* @example\n* var x = [ 1, 2, 3, 4, 5, 6 ];\n*\n* var arr = strided2array2d( x, [ 3, 2 ], [ 2, 1 ], 0 );\n* // returns [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ]\n*\n* @example\n* var x = [ 1, 2, 3, 4, 5, 6 ];\n*\n* var arr = strided2array2d( x, [ 3, 2 ], [ 1, 3 ], 0 );\n* // returns [ [ 1, 4 ], [ 2, 5 ], [ 3, 6 ] ]\n*/\nfunction strided2array2d( x, shape, strides, offset ) {\n\tvar get;\n\tvar out;\n\tvar tmp;\n\tvar dx0;\n\tvar dx1;\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar ix;\n\n\tget = resolveGetter( x );\n\n\tS1 = shape[ 0 ];\n\tS0 = shape[ 1 ];\n\n\tdx1 = strides[ 0 ];\n\tdx0 = strides[ 1 ];\n\n\tout = [];\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\ttmp = [];\n\t\tix = offset + ( dx1*i1 );\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\ttmp.push( get( x, ix ) );\n\t\t\tix += dx0;\n\t\t}\n\t\tout.push( tmp );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = strided2array2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a strided array to a two-dimensional nested array.\n*\n* @module @stdlib/array/base/strided2array2d\n*\n* @example\n* var strided2array2d = require( '@stdlib/array/base/strided2array2d' );\n*\n* var x = [ 1, 2, 3, 4, 5, 6 ];\n*\n* var arr = strided2array2d( x, [ 3, 2 ], [ 2, 1 ], 0 );\n* // returns [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ]\n*\n* arr = strided2array2d( x, [ 3, 2 ], [ 1, 3 ], 0 );\n* // returns [ [ 1, 4 ], [ 2, 5 ], [ 3, 6 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Converts a strided array to a three-dimensional nested array.\n*\n* ## Notes\n*\n* -   The function assumes that the input array is compatible with the specified array shape, dimension strides, and index offset.\n*\n* @param {Collection} x - input array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {IntegerArray} strides - dimension strides\n* @param {NonNegativeInteger} offset - index of the first indexed value in the input array\n* @returns {Array<Array<Array>>} three-dimensional nested array\n*\n* @example\n* var x = [ 1, 2, 3, 4, 5, 6 ];\n*\n* var arr = strided2array3d( x, [ 1, 3, 2 ], [ 6, 2, 1 ], 0 );\n* // returns [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ]\n*\n* @example\n* var x = [ 1, 2, 3, 4, 5, 6 ];\n*\n* var arr = strided2array3d( x, [ 1, 3, 2 ], [ 1, 1, 3 ], 0 );\n* // returns [ [ [ 1, 4 ], [ 2, 5 ], [ 3, 6 ] ] ]\n*/\nfunction strided2array3d( x, shape, strides, offset ) {\n\tvar get;\n\tvar out;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar ix1;\n\tvar ix0;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar t2;\n\tvar t1;\n\n\tget = resolveGetter( x );\n\n\tS2 = shape[ 0 ];\n\tS1 = shape[ 1 ];\n\tS0 = shape[ 2 ];\n\n\tdx2 = strides[ 0 ];\n\tdx1 = strides[ 1 ];\n\tdx0 = strides[ 2 ];\n\n\tout = [];\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\tt2 = [];\n\t\tix1 = offset + ( dx2*i2 );\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\tt1 = [];\n\t\t\tix0 = ix1 + ( dx1*i1 );\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\tt1.push( get( x, ix0 ) );\n\t\t\t\tix0 += dx0;\n\t\t\t}\n\t\t\tt2.push( t1 );\n\t\t}\n\t\tout.push( t2 );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = strided2array3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a strided array to a three-dimensional nested array.\n*\n* @module @stdlib/array/base/strided2array3d\n*\n* @example\n* var strided2array3d = require( '@stdlib/array/base/strided2array3d' );\n*\n* var x = [ 1, 2, 3, 4, 5, 6 ];\n*\n* var arr = strided2array3d( x, [ 1, 3, 2 ], [ 6, 2, 1 ], 0 );\n* // returns [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ]\n*\n* arr = strided2array3d( x, [ 1, 3, 2 ], [ 1, 1, 3 ], 0 );\n* // returns [ [ [ 1, 4 ], [ 2, 5 ], [ 3, 6 ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Converts a strided array to a four-dimensional nested array.\n*\n* ## Notes\n*\n* -   The function assumes that the input array is compatible with the specified array shape, dimension strides, and index offset.\n*\n* @param {Collection} x - input array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {IntegerArray} strides - dimension strides\n* @param {NonNegativeInteger} offset - index of the first indexed value in the input array\n* @returns {Array<Array<Array<Array>>>} four-dimensional nested array\n*\n* @example\n* var x = [ 1, 2, 3, 4, 5, 6 ];\n*\n* var arr = strided2array4d( x, [ 1, 1, 3, 2 ], [ 6, 6, 2, 1 ], 0 );\n* // returns [ [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ] ]\n*\n* @example\n* var x = [ 1, 2, 3, 4, 5, 6 ];\n*\n* var arr = strided2array4d( x, [ 1, 1, 3, 2 ], [ 1, 1, 1, 3 ], 0 );\n* // returns [ [ [ [ 1, 4 ], [ 2, 5 ], [ 3, 6 ] ] ] ]\n*/\nfunction strided2array4d( x, shape, strides, offset ) {\n\tvar get;\n\tvar out;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar ix2;\n\tvar ix1;\n\tvar ix0;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar t3;\n\tvar t2;\n\tvar t1;\n\n\tget = resolveGetter( x );\n\n\tS3 = shape[ 0 ];\n\tS2 = shape[ 1 ];\n\tS1 = shape[ 2 ];\n\tS0 = shape[ 3 ];\n\n\tdx3 = strides[ 0 ];\n\tdx2 = strides[ 1 ];\n\tdx1 = strides[ 2 ];\n\tdx0 = strides[ 3 ];\n\n\tout = [];\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\tt3 = [];\n\t\tix2 = offset + ( dx3*i3 );\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\tt2 = [];\n\t\t\tix1 = ix2 + ( dx2*i2 );\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tt1 = [];\n\t\t\t\tix0 = ix1 + ( dx1*i1 );\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\tt1.push( get( x, ix0 ) );\n\t\t\t\t\tix0 += dx0;\n\t\t\t\t}\n\t\t\t\tt2.push( t1 );\n\t\t\t}\n\t\t\tt3.push( t2 );\n\t\t}\n\t\tout.push( t3 );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = strided2array4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a strided array to a four-dimensional nested array.\n*\n* @module @stdlib/array/base/strided2array4d\n*\n* @example\n* var strided2array4d = require( '@stdlib/array/base/strided2array4d' );\n*\n* var x = [ 1, 2, 3, 4, 5, 6 ];\n*\n* var arr = strided2array4d( x, [ 1, 1, 3, 2 ], [ 6, 6, 2, 1 ], 0 );\n* // returns [ [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ] ]\n*\n* arr = strided2array4d( x, [ 1, 1, 3, 2 ], [ 1, 1, 1, 3 ], 0 );\n* // returns [ [ [ [ 1, 4 ], [ 2, 5 ], [ 3, 6 ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Converts a strided array to a five-dimensional nested array.\n*\n* ## Notes\n*\n* -   The function assumes that the input array is compatible with the specified array shape, dimension strides, and index offset.\n*\n* @param {Collection} x - input array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {IntegerArray} strides - dimension strides\n* @param {NonNegativeInteger} offset - index of the first indexed value in the input array\n* @returns {Array<Array<Array<Array<Array>>>>} five-dimensional nested array\n*\n* @example\n* var x = [ 1, 2, 3, 4, 5, 6 ];\n*\n* var arr = strided2array5d( x, [ 1, 1, 1, 3, 2 ], [ 6, 6, 6, 2, 1 ], 0 );\n* // returns [ [ [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ] ] ]\n*\n* @example\n* var x = [ 1, 2, 3, 4, 5, 6 ];\n*\n* var arr = strided2array5d( x, [ 1, 1, 1, 3, 2 ], [ 1, 1, 1, 1, 3 ], 0 );\n* // returns [ [ [ [ [ 1, 4 ], [ 2, 5 ], [ 3, 6 ] ] ] ] ]\n*/\nfunction strided2array5d( x, shape, strides, offset ) {\n\tvar get;\n\tvar out;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar ix3;\n\tvar ix2;\n\tvar ix1;\n\tvar ix0;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar t4;\n\tvar t3;\n\tvar t2;\n\tvar t1;\n\n\tget = resolveGetter( x );\n\n\tS4 = shape[ 0 ];\n\tS3 = shape[ 1 ];\n\tS2 = shape[ 2 ];\n\tS1 = shape[ 3 ];\n\tS0 = shape[ 4 ];\n\n\tdx4 = strides[ 0 ];\n\tdx3 = strides[ 1 ];\n\tdx2 = strides[ 2 ];\n\tdx1 = strides[ 3 ];\n\tdx0 = strides[ 4 ];\n\n\tout = [];\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\tt4 = [];\n\t\tix3 = offset + ( dx4*i4 );\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\tt3 = [];\n\t\t\tix2 = ix3 + ( dx3*i3 );\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\tt2 = [];\n\t\t\t\tix1 = ix2 + ( dx2*i2 );\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\tt1 = [];\n\t\t\t\t\tix0 = ix1 + ( dx1*i1 );\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\tt1.push( get( x, ix0 ) );\n\t\t\t\t\t\tix0 += dx0;\n\t\t\t\t\t}\n\t\t\t\t\tt2.push( t1 );\n\t\t\t\t}\n\t\t\t\tt3.push( t2 );\n\t\t\t}\n\t\t\tt4.push( t3 );\n\t\t}\n\t\tout.push( t4 );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = strided2array5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a strided array to a five-dimensional nested array.\n*\n* @module @stdlib/array/base/strided2array5d\n*\n* @example\n* var strided2array5d = require( '@stdlib/array/base/strided2array5d' );\n*\n* var x = [ 1, 2, 3, 4, 5, 6 ];\n*\n* var arr = strided2array5d( x, [ 1, 1, 1, 3, 2 ], [ 6, 6, 6, 2, 1 ], 0 );\n* // returns [ [ [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ] ] ]\n*\n* arr = strided2array5d( x, [ 1, 1, 1, 3, 2 ], [ 1, 1, 1, 1, 3 ], 0 );\n* // returns [ [ [ [ [ 1, 4 ], [ 2, 5 ], [ 3, 6 ] ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Takes elements from an array.\n*\n* @param {Collection} x - input array\n* @param {NonNegativeIntegerArray} indices - list of indices\n* @returns {Array} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n* var indices = [ 3, 1, 2, 0 ];\n*\n* var y = take( x, indices );\n* // returns [ 4, 2, 3, 1 ]\n*/\nfunction take( x, indices ) {\n\tvar get;\n\tvar out;\n\tvar i;\n\n\t// Resolve an accessor for retrieving input array elements:\n\tget = resolveGetter( x );\n\n\t// Extract each desired element from the provided array...\n\tout = [];\n\tfor ( i = 0; i < indices.length; i++ ) {\n\t\tout.push( get( x, indices[ i ] ) ); // use `Array#push` to ensure \"fast\" elements\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = take;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Take elements from an array.\n*\n* @module @stdlib/array/base/take\n*\n* @example\n* var take = require( '@stdlib/array/base/take' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var indices = [ 0, 0, 1, 1, 3, 3 ];\n* var y = take( x, indices );\n* // returns [ 1, 1, 2, 2, 4, 4 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Takes elements from an indexed array.\n*\n* @param {Collection} x - input array\n* @param {NonNegativeIntegerArray} indices - list of indices\n* @returns {Array} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n* var indices = [ 3, 1, 2, 0 ];\n*\n* var y = take( x, indices );\n* // returns [ 4, 2, 3, 1 ]\n*/\nfunction take( x, indices ) {\n\tvar out;\n\tvar i;\n\n\tout = [];\n\tfor ( i = 0; i < indices.length; i++ ) {\n\t\tout.push( x[ indices[ i ] ] ); // use `Array#push` to ensure \"fast\" elements\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = take;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Take elements from an indexed array.\n*\n* @module @stdlib/array/base/take-indexed\n*\n* @example\n* var take = require( '@stdlib/array/base/take-indexed' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var indices = [ 0, 0, 1, 1, 3, 3 ];\n* var y = take( x, indices );\n* // returns [ 1, 1, 2, 2, 4, 4 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar normalizeIndex = require( '@stdlib/ndarray/base/normalize-index' );\nvar indexFunction = require( '@stdlib/ndarray/base/ind' ).factory;\nvar format = require( '@stdlib/string/format' );\n\n\n// VARIABLES //\n\nvar NDIMS = 2;\n\n\n// MAIN //\n\n/**\n* Takes elements from a two-dimensional nested array.\n*\n* ## Notes\n*\n* -   The function does **not** deep copy nested array elements.\n*\n* @param {ArrayLikeObject<Collection>} x - input array\n* @param {NonNegativeIntegerArray} indices - list of indices\n* @param {integer} dimension - dimension along which to take elements\n* @param {string} mode - index mode specifying how to handle an index which is out-of-bounds\n* @throws {RangeError} third argument exceeds the number of dimensions\n* @throws {TypeError} fourth argument must be a recognized index mode\n* @returns {(Array<Array>|Array<Collection>)} output array\n*\n* @example\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n* var indices = [ 1, 1, 0, 0, -1, -1 ];\n*\n* var y = take2d( x, indices, 1, 'normalize' );\n* // returns [ [ 2, 2, 1, 1, 2, 2 ], [ 4, 4, 3, 3, 4, 4 ] ]\n*/\nfunction take2d( x, indices, dimension, mode ) {\n\tvar lastIndex;\n\tvar out;\n\tvar dim;\n\tvar ind;\n\tvar idx;\n\tvar i0;\n\tvar i1;\n\tvar x0;\n\tvar y0;\n\n\tdim = normalizeIndex( dimension, NDIMS-1 );\n\tif ( dim === -1 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Third argument exceeds the number of dimensions. Number of dimensions: %d. Value: `%d`.', NDIMS, dimension ) );\n\t}\n\tind = indexFunction( mode );\n\tout = [];\n\tif ( dim === 0 ) {\n\t\tlastIndex = x.length - 1;\n\t\tfor ( i1 = 0; i1 < indices.length; i1++ ) {\n\t\t\tidx = ind( indices[ i1 ], lastIndex );\n\t\t\tout.push( x[ idx ] );\n\t\t}\n\t\treturn out;\n\t}\n\t// Case: dim === 1\n\tfor ( i1 = 0; i1 < x.length; i1++ ) {\n\t\tx0 = x[ i1 ];\n\t\ty0 = [];\n\t\tlastIndex = x0.length - 1;\n\t\tfor ( i0 = 0; i0 < indices.length; i0++ ) {\n\t\t\tidx = ind( indices[ i0 ], lastIndex );\n\t\t\ty0.push( x0[ idx ] );\n\t\t}\n\t\tout.push( y0 );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = take2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Take elements from a two-dimensional nested array.\n*\n* @module @stdlib/array/base/take2d\n*\n* @example\n* var take2d = require( '@stdlib/array/base/take2d' );\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n* var indices = [ 1, 1, 0, 0, -1, -1 ];\n*\n* var y = take2d( x, indices, 1, 'normalize' );\n* // returns [ [ 2, 2, 1, 1, 2, 2 ], [ 4, 4, 3, 3, 4, 4 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar normalizeIndex = require( '@stdlib/ndarray/base/normalize-index' );\nvar indexFunction = require( '@stdlib/ndarray/base/ind' ).factory;\nvar take2d = require( './../../../base/take2d' );\nvar format = require( '@stdlib/string/format' );\n\n\n// VARIABLES //\n\nvar NDIMS = 3;\n\n\n// MAIN //\n\n/**\n* Takes elements from a three-dimensional nested array.\n*\n* ## Notes\n*\n* -   The function does **not** deep copy nested array elements.\n*\n* @param {ArrayLikeObject<Collection>} x - input array\n* @param {NonNegativeIntegerArray} indices - list of indices\n* @param {integer} dimension - dimension along which to take elements\n* @param {string} mode - index mode specifying how to handle an index which is out-of-bounds\n* @throws {RangeError} third argument exceeds the number of dimensions\n* @throws {TypeError} fourth argument must be a recognized index mode\n* @returns {(Array<Array>|Array<Collection>)} output array\n*\n* @example\n* var x = [ [ [ 1, 2 ], [ 3, 4 ] ] ];\n* var indices = [ 1, 1, 0, 0, -1, -1 ];\n*\n* var y = take3d( x, indices, 2, 'normalize' );\n* // returns [ [ [ 2, 2, 1, 1, 2, 2 ], [ 4, 4, 3, 3, 4, 4 ] ] ]\n*/\nfunction take3d( x, indices, dimension, mode ) {\n\tvar lastIndex;\n\tvar out;\n\tvar dim;\n\tvar ind;\n\tvar idx;\n\tvar i;\n\n\tdim = normalizeIndex( dimension, NDIMS-1 );\n\tif ( dim === -1 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Third argument exceeds the number of dimensions. Number of dimensions: %d. Value: `%d`.', NDIMS, dimension ) );\n\t}\n\tout = [];\n\tif ( dim === 0 ) {\n\t\tind = indexFunction( mode );\n\t\tlastIndex = x.length - 1;\n\t\tfor ( i = 0; i < indices.length; i++ ) {\n\t\t\tidx = ind( indices[ i ], lastIndex );\n\t\t\tout.push( x[ idx ] );\n\t\t}\n\t\treturn out;\n\t}\n\t// Case: dim > 0\n\tdim = dimension - 1;\n\tfor ( i = 0; i < x.length; i++ ) {\n\t\tout.push( take2d( x[ i ], indices, dim, mode ) );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = take3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Take elements from a three-dimensional nested array.\n*\n* @module @stdlib/array/base/take3d\n*\n* @example\n* var take3d = require( '@stdlib/array/base/take3d' );\n*\n* var x = [ [ [ 1, 2 ], [ 3, 4 ] ] ];\n* var indices = [ 1, 1, 0, 0, -1, -1 ];\n*\n* var y = take3d( x, indices, 2, 'normalize' );\n* // returns [ [ [ 2, 2, 1, 1, 2, 2 ], [ 4, 4, 3, 3, 4, 4 ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a ternary callback to elements in three two-dimensional nested input arrays and assigns results to elements in a two-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing three input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - ternary callback\n* @returns {void}\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add3' );\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = ones2d( shape );\n* var z = ones2d( shape );\n* var out = zeros2d( shape );\n*\n* ternary2d( [ x, y, z, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ 3.0, 3.0 ], [ 3.0, 3.0 ] ]\n*/\nfunction ternary2d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\n\tS0 = shape[ 1 ];\n\tS1 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tw = arrays[ 3 ];\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tx0 = x[ i1 ];\n\t\ty0 = y[ i1 ];\n\t\tz0 = z[ i1 ];\n\t\tw0 = w[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tw0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ], z0[ i0 ] );\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = ternary2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a ternary callback to elements in three two-dimensional nested input arrays and assign results to elements in a two-dimensional nested output array.\n*\n* @module @stdlib/array/base/ternary2d\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add3' );\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var ternary2d = require( '@stdlib/array/base/ternary2d' );\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = ones2d( shape );\n* var z = ones2d( shape );\n* var out = zeros2d( shape );\n*\n* ternary2d( [ x, y, z, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ 3.0, 3.0 ], [ 3.0, 3.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a ternary callback to elements in three three-dimensional nested input arrays and assigns results to elements in a three-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Array<Collection>>>} arrays - array-like object containing three input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - ternary callback\n* @returns {void}\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add3' );\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n*\n* var shape = [ 1, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = ones3d( shape );\n* var z = ones3d( shape );\n* var out = zeros3d( shape );\n*\n* ternary3d( [ x, y, z, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ 3.0, 3.0 ], [ 3.0, 3.0 ] ] ]\n*/\nfunction ternary3d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar x1;\n\tvar y1;\n\tvar z1;\n\tvar w1;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\n\tS0 = shape[ 2 ];\n\tS1 = shape[ 1 ];\n\tS2 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tw = arrays[ 3 ];\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\tx1 = x[ i2 ];\n\t\ty1 = y[ i2 ];\n\t\tz1 = z[ i2 ];\n\t\tw1 = w[ i2 ];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\tx0 = x1[ i1 ];\n\t\t\ty0 = y1[ i1 ];\n\t\t\tz0 = z1[ i1 ];\n\t\t\tw0 = w1[ i1 ];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\tw0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ], z0[ i0 ] );\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = ternary3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a ternary callback to elements in three three-dimensional nested input arrays and assign results to elements in a three-dimensional nested output array.\n*\n* @module @stdlib/array/base/ternary3d\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add3' );\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n* var ternary3d = require( '@stdlib/array/base/ternary3d' );\n*\n* var shape = [ 1, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = ones3d( shape );\n* var z = ones3d( shape );\n* var out = zeros3d( shape );\n*\n* ternary3d( [ x, y, z, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ 3.0, 3.0 ], [ 3.0, 3.0 ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a ternary callback to elements in three four-dimensional nested input arrays and assigns results to elements in a four-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Array<Array<Collection>>>>} arrays - array-like object containing three input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - ternary callback\n* @returns {void}\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add3' );\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n*\n* var shape = [ 1, 1, 2, 2 ];\n*\n* var x = ones4d( shape );\n* var y = ones4d( shape );\n* var z = ones4d( shape );\n* var out = zeros4d( shape );\n*\n* ternary4d( [ x, y, z, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ [ 3.0, 3.0 ], [ 3.0, 3.0 ] ] ] ]\n*/\nfunction ternary4d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar x1;\n\tvar y1;\n\tvar z1;\n\tvar w1;\n\tvar x2;\n\tvar y2;\n\tvar z2;\n\tvar w2;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\n\tS0 = shape[ 3 ];\n\tS1 = shape[ 2 ];\n\tS2 = shape[ 1 ];\n\tS3 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tw = arrays[ 3 ];\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\tx2 = x[ i3 ];\n\t\ty2 = y[ i3 ];\n\t\tz2 = z[ i3 ];\n\t\tw2 = w[ i3 ];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\tx1 = x2[ i2 ];\n\t\t\ty1 = y2[ i2 ];\n\t\t\tz1 = z2[ i2 ];\n\t\t\tw1 = w2[ i2 ];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tx0 = x1[ i1 ];\n\t\t\t\ty0 = y1[ i1 ];\n\t\t\t\tz0 = z1[ i1 ];\n\t\t\t\tw0 = w1[ i1 ];\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\tw0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ], z0[ i0 ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = ternary4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a ternary callback to elements in three four-dimensional nested input arrays and assign results to elements in a four-dimensional nested output array.\n*\n* @module @stdlib/array/base/ternary4d\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add3' );\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n* var ternary4d = require( '@stdlib/array/base/ternary4d' );\n*\n* var shape = [ 1, 1, 2, 2 ];\n*\n* var x = ones4d( shape );\n* var y = ones4d( shape );\n* var z = ones4d( shape );\n* var out = zeros4d( shape );\n*\n* ternary4d( [ x, y, z, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ [ 3.0, 3.0 ], [ 3.0, 3.0 ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a ternary callback to elements in three five-dimensional nested input arrays and assigns results to elements in a five-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Array<Array<Array<Collection>>>>>} arrays - array-like object containing three input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - ternary callback\n* @returns {void}\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add3' );\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n*\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* var x = ones5d( shape );\n* var y = ones5d( shape );\n* var z = ones5d( shape );\n* var out = zeros5d( shape );\n*\n* ternary5d( [ x, y, z, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ [ [ 3.0, 3.0 ], [ 3.0, 3.0 ] ] ] ] ]\n*/\nfunction ternary5d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar x1;\n\tvar y1;\n\tvar z1;\n\tvar w1;\n\tvar x2;\n\tvar y2;\n\tvar z2;\n\tvar w2;\n\tvar x3;\n\tvar y3;\n\tvar z3;\n\tvar w3;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\n\tS0 = shape[ 4 ];\n\tS1 = shape[ 3 ];\n\tS2 = shape[ 2 ];\n\tS3 = shape[ 1 ];\n\tS4 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tw = arrays[ 3 ];\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\tx3 = x[ i4 ];\n\t\ty3 = y[ i4 ];\n\t\tz3 = z[ i4 ];\n\t\tw3 = w[ i4 ];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\tx2 = x3[ i3 ];\n\t\t\ty2 = y3[ i3 ];\n\t\t\tz2 = z3[ i3 ];\n\t\t\tw2 = w3[ i3 ];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\tx1 = x2[ i2 ];\n\t\t\t\ty1 = y2[ i2 ];\n\t\t\t\tz1 = z2[ i2 ];\n\t\t\t\tw1 = w2[ i2 ];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\tx0 = x1[ i1 ];\n\t\t\t\t\ty0 = y1[ i1 ];\n\t\t\t\t\tz0 = z1[ i1 ];\n\t\t\t\t\tw0 = w1[ i1 ];\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\tw0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ], z0[ i0 ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = ternary5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a ternary callback to elements in three five-dimensional nested input arrays and assign results to elements in a five-dimensional nested output array.\n*\n* @module @stdlib/array/base/ternary5d\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add3' );\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n* var ternary5d = require( '@stdlib/array/base/ternary5d' );\n*\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* var x = ones5d( shape );\n* var y = ones5d( shape );\n* var z = ones5d( shape );\n* var out = zeros5d( shape );\n*\n* ternary5d( [ x, y, z, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ [ [ 3.0, 3.0 ], [ 3.0, 3.0 ] ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isAccessorArray = require( './../../../base/assert/is-accessor-array' );\nvar AccessorArray = require( './../../../base/accessor' );\n\n\n// MAIN //\n\n/**\n* Converts an array-like object to a minimal array-like object supporting the accessor protocol.\n*\n* ## Notes\n*\n* -   If a provided array-like object already supports the accessor protocol, the function returns the provided array-like object; otherwise, the function wraps the provided value in a object which uses accessors for getting and setting elements.\n*\n* @param {Collection} arr - input array\n* @throws {TypeError} must provide an array-like object\n* @returns {(Collection|AccessorArray)} array-like object supporting the accessor protocol\n*\n* @example\n* var o = toAccessorArray( [ 1, 2, 3 ] );\n* // returns <AccessorArray>\n*\n* var v = o.get( 0 );\n* // returns 1\n*/\nfunction toAccessorArray( arr ) {\n\tif ( arr && typeof arr === 'object' && isAccessorArray( arr ) ) {\n\t\treturn arr;\n\t}\n\treturn new AccessorArray( arr );\n}\n\n\n// EXPORTS //\n\nmodule.exports = toAccessorArray;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert an array-like object to a minimal array-like object supporting the accessor protocol.\n*\n* @module @stdlib/array/base/to-accessor-array\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' );\n*\n* var o = toAccessorArray( [ 1, 2, 3 ] );\n* // returns <Object>\n*\n* var v = o.get( 0 );\n* // returns 1\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isnan = require( '@stdlib/math/base/assert/is-nan' );\n\n\n// FUNCTIONS //\n\n/**\n* Copies de-duplicated values to a new array.\n*\n* @private\n* @param {Array} x - input array\n* @param {PositiveInteger} limit - number of allowed consecutive duplicates\n* @returns {Array} output array\n*\n* @example\n* var x = [ 1, 1, 2, 3, 3 ];\n*\n* var y = dedupeCopy( x, 1 );\n* // returns [ 1, 2, 3 ]\n*\n* var bool = ( x === y );\n* // returns false\n*\n* @example\n* var x = [ 1, 1, 1, 2, 1, 1, 3, 3 ];\n*\n* var y = dedupeCopy( x, 2 );\n* // returns [ 1, 1, 2, 1, 1, 3, 3 ]\n*\n* var bool = ( x === y );\n* // returns false\n*/\nfunction dedupeCopy( x, limit ) {\n\tvar count;\n\tvar prev;\n\tvar len;\n\tvar out;\n\tvar v;\n\tvar i;\n\n\tout = [];\n\tlen = x.length;\n\tif ( len === 0 ) {\n\t\treturn out;\n\t}\n\tprev = NaN; // we leverage the fact that `NaN` is not equal to anything, including itself, to handle the initial condition\n\tcount = 0;\n\tfor ( i = 0; i < len; i++ ) {\n\t\tv = x[ i ];\n\t\tif ( v === prev ) {\n\t\t\tcount += 1;\n\t\t\tif ( count <= limit ) {\n\t\t\t\tout.push( prev );\n\t\t\t}\n\t\t} else {\n\t\t\tprev = v;\n\t\t\tcount = 1;\n\t\t\tout.push( prev );\n\t\t}\n\t}\n\treturn out;\n}\n\n/**\n* Copies de-duplicated values to a new array, treating `NaN` values as equal.\n*\n* @private\n* @param {Array} x - input array\n* @param {PositiveInteger} limit - number of allowed consecutive duplicates\n* @returns {Array} output array\n*\n* @example\n* var x = [ 1, 1, 2, NaN, NaN, 3, 3 ];\n*\n* var y = dedupeEqualNaNs( x, 1 );\n* // returns [ 1, 2, NaN, 3 ]\n*\n* var bool = ( x === y );\n* // returns false\n*\n* @example\n* var x = [ 1, 1, 1, 2, 1, 1, NaN, NaN, NaN, 3, 3 ];\n*\n* var y = dedupeEqualNaNs( x, 2 );\n* // returns [ 1, 1, 2, 1, 1, NaN, NaN, 3, 3 ]\n*\n* var bool = ( x === y );\n* // returns false\n*/\nfunction dedupeEqualNaNs( x, limit ) {\n\tvar count;\n\tvar prev;\n\tvar len;\n\tvar out;\n\tvar FLG;\n\tvar v;\n\tvar i;\n\n\tout = [];\n\tlen = x.length;\n\tif ( len === 0 ) {\n\t\treturn out;\n\t}\n\tFLG = false;\n\tprev = NaN; // we leverage the fact that `NaN` is not equal to anything, including itself, to handle the initial condition\n\tcount = 0;\n\tfor ( i = 0; i < len; i++ ) {\n\t\tv = x[ i ];\n\t\tif ( v === prev || ( FLG && isnan( v ) ) ) {\n\t\t\tcount += 1;\n\t\t\tif ( count <= limit ) {\n\t\t\t\tout.push( prev );\n\t\t\t}\n\t\t} else {\n\t\t\tprev = v;\n\t\t\tcount = 1;\n\t\t\tout.push( prev );\n\t\t\tFLG = false;\n\t\t\tif ( isnan( prev ) ) {\n\t\t\t\tFLG = true;\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements to a new \"generic\" array after removing consecutive duplicated values.\n*\n* @param {Array} x - input array\n* @param {PositiveInteger} limit - number of allowed consecutive duplicates\n* @param {boolean} equalNaNs - boolean indicating whether NaNs should be considered equal\n* @returns {Array} de-duplicated values\n*\n* @example\n* var x = [ 1, 1, 2, 3, 3 ];\n*\n* var y = dedupe( x, 1, false );\n* // returns [ 1, 2, 3 ]\n*\n* var bool = ( x === y );\n* // returns false\n*\n* @example\n* var x = [ 1, 1, 1, 2, 1, 1, 3, 3 ];\n*\n* var y = dedupe( x, 2, false );\n* // returns [ 1, 1, 2, 1, 1, 3, 3 ]\n*\n* var bool = ( x === y );\n* // returns false\n*/\nfunction dedupe( x, limit, equalNaNs ) {\n\tif ( equalNaNs ) {\n\t\treturn dedupeEqualNaNs( x, limit );\n\t}\n\treturn dedupeCopy( x, limit );\n}\n\n\n// EXPORTS //\n\nmodule.exports = dedupe;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Copy elements to a new \"generic\" array after removing consecutive duplicated values.\n*\n* @module @stdlib/array/base/to-deduped\n*\n* @example\n* var toDeduped = require( '@stdlib/array/base/to-deduped' );\n*\n* var x = [ 1, 1, 2, 3, 3 ];\n*\n* var y = toDeduped( x, 1, false );\n* // returns [ 1, 2, 3 ]\n*\n* var bool = ( x === y );\n* // returns false\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a unary callback to elements in a two-dimensional nested input array and assigns results to elements in a two-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing one input nested array and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - unary callback\n* @returns {void}\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = zeros2d( shape );\n*\n* unary2d( [ x, y ], shape, scale );\n*\n* console.log( y );\n* // => [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ]\n*/\nfunction unary2d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar x0;\n\tvar y0;\n\tvar x;\n\tvar y;\n\n\tS0 = shape[ 1 ];\n\tS1 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tx0 = x[ i1 ];\n\t\ty0 = y[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\ty0[ i0 ] = fcn( x0[ i0 ] );\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = unary2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a unary callback to elements in a two-dimensional nested input array and assign results to elements in a two-dimensional nested output array.\n*\n* @module @stdlib/array/base/unary2d\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var unary2d = require( '@stdlib/array/base/unary2d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = zeros2d( shape );\n*\n* unary2d( [ x, y ], shape, scale );\n*\n* console.log( y );\n* // => [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a unary function to each element retrieved from a two-dimensional nested input array according to a callback function and assigns results to elements in a two-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing one input nested array and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Function} fcn - unary function to apply to callback return values\n* @param {Callback} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n* @returns {void}\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n*\n* function accessor( v ) {\n*     return v - 2.0;\n* }\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = zeros2d( shape );\n*\n* unary2dBy( [ x, y ], shape, scale, accessor );\n*\n* console.log( y );\n* // => [ [ -10.0, -10.0 ], [ -10.0, -10.0 ] ]\n*/\nfunction unary2dBy( arrays, shape, fcn, clbk ) {\n\tvar thisArg;\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar x0;\n\tvar y0;\n\tvar x;\n\tvar y;\n\tvar v;\n\n\tS0 = shape[ 1 ];\n\tS1 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 ) {\n\t\treturn;\n\t}\n\tif ( arguments.length > 4 ) {\n\t\tthisArg = arguments[ 4 ];\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tx0 = x[ i1 ];\n\t\ty0 = y[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tv = clbk.call( thisArg, x0[ i0 ], [ i1, i0 ], [ x, y ] );\n\t\t\tif ( v !== void 0 ) {\n\t\t\t\ty0[ i0 ] = fcn( v );\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = unary2dBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a unary function to each element retrieved from a two-dimensional nested input array according to a callback function and assign results to elements in a two-dimensional nested output array.\n*\n* @module @stdlib/array/base/unary2d-by\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var unary2dBy = require( '@stdlib/array/base/unary2d-by' );\n*\n* function accessor( v ) {\n*     return v - 2.0;\n* }\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = zeros2d( shape );\n*\n* unary2dBy( [ x, y ], shape, scale, accessor );\n*\n* console.log( y );\n* // => [ [ -10.0, -10.0 ], [ -10.0, -10.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a unary callback to elements in a three-dimensional nested input array and assigns results to elements in a three-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Array<Collection>>>} arrays - array-like object containing one input nested array and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - unary callback\n* @returns {void}\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = zeros3d( shape );\n*\n* unary3d( [ x, y ], shape, scale );\n*\n* console.log( y );\n* // => [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ]\n*/\nfunction unary3d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar x0;\n\tvar x1;\n\tvar y0;\n\tvar y1;\n\tvar x;\n\tvar y;\n\n\tS0 = shape[ 2 ];\n\tS1 = shape[ 1 ];\n\tS2 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\tx1 = x[ i2 ];\n\t\ty1 = y[ i2 ];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\tx0 = x1[ i1 ];\n\t\t\ty0 = y1[ i1 ];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\ty0[ i0 ] = fcn( x0[ i0 ] );\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = unary3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a unary callback to elements in a three-dimensional nested input array and assign results to elements in a three-dimensional nested output array.\n*\n* @module @stdlib/array/base/unary3d\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n* var unary3d = require( '@stdlib/array/base/unary3d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = zeros3d( shape );\n*\n* unary3d( [ x, y ], shape, scale );\n*\n* console.log( y );\n* // => [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a unary callback to elements in a four-dimensional nested input array and assigns results to elements in a four-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Array<Collection>>>} arrays - array-like object containing one input nested array and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - unary callback\n* @returns {void}\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 1, 2, 2 ];\n*\n* var x = ones4d( shape );\n* var y = zeros4d( shape );\n*\n* unary4d( [ x, y ], shape, scale );\n*\n* console.log( y );\n* // => [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ]\n*/\nfunction unary4d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar x0;\n\tvar x1;\n\tvar x2;\n\tvar y0;\n\tvar y1;\n\tvar y2;\n\tvar x;\n\tvar y;\n\n\tS0 = shape[ 3 ];\n\tS1 = shape[ 2 ];\n\tS2 = shape[ 1 ];\n\tS3 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\tx2 = x[ i3 ];\n\t\ty2 = y[ i3 ];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\tx1 = x2[ i2 ];\n\t\t\ty1 = y2[ i2 ];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tx0 = x1[ i1 ];\n\t\t\t\ty0 = y1[ i1 ];\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\ty0[ i0 ] = fcn( x0[ i0 ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = unary4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a unary callback to elements in a four-dimensional nested input array and assign results to elements in a four-dimensional nested output array.\n*\n* @module @stdlib/array/base/unary4d\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n* var unary4d = require( '@stdlib/array/base/unary4d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 1, 2, 2 ];\n*\n* var x = ones4d( shape );\n* var y = zeros4d( shape );\n*\n* unary4d( [ x, y ], shape, scale );\n*\n* console.log( y );\n* // => [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a unary callback to elements in a five-dimensional nested input array and assigns results to elements in a five-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Array<Collection>>>} arrays - array-like object containing one input nested array and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - unary callback\n* @returns {void}\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* var x = ones5d( shape );\n* var y = zeros5d( shape );\n*\n* unary5d( [ x, y ], shape, scale );\n*\n* console.log( y );\n* // => [ [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ] ]\n*/\nfunction unary5d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar x0;\n\tvar x1;\n\tvar x2;\n\tvar x3;\n\tvar y0;\n\tvar y1;\n\tvar y2;\n\tvar y3;\n\tvar x;\n\tvar y;\n\n\tS0 = shape[ 4 ];\n\tS1 = shape[ 3 ];\n\tS2 = shape[ 2 ];\n\tS3 = shape[ 1 ];\n\tS4 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 || S4 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\tx3 = x[ i4 ];\n\t\ty3 = y[ i4 ];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\tx2 = x3[ i3 ];\n\t\t\ty2 = y3[ i3 ];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\tx1 = x2[ i2 ];\n\t\t\t\ty1 = y2[ i2 ];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\tx0 = x1[ i1 ];\n\t\t\t\t\ty0 = y1[ i1 ];\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\ty0[ i0 ] = fcn( x0[ i0 ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = unary5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a unary callback to elements in a five-dimensional nested input array and assign results to elements in a five-dimensional nested output array.\n*\n* @module @stdlib/array/base/unary5d\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n* var unary5d = require( '@stdlib/array/base/unary5d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* var x = ones5d( shape );\n* var y = zeros5d( shape );\n*\n* unary5d( [ x, y ], shape, scale );\n*\n* console.log( y );\n* // => [ [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// FUNCTIONS //\n\n/**\n* Recursively applies a unary callback.\n*\n* @private\n* @param {ArrayLikeObject} x - input array\n* @param {ArrayLikeObject} y - output array\n* @param {NonNegativeInteger} ndims - number of dimensions\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {NonNegativeInteger} dim - dimension index\n* @param {Callback} fcn - unary callback\n* @returns {void}\n*/\nfunction recurse( x, y, ndims, shape, dim, fcn ) {\n\tvar S;\n\tvar d;\n\tvar i;\n\n\tS = shape[ dim ];\n\n\t// Check whether we've reached the innermost dimension:\n\td = dim + 1;\n\n\tif ( d === ndims ) {\n\t\t// Apply the provided callback...\n\t\tfor ( i = 0; i < S; i++ ) {\n\t\t\ty[ i ] = fcn( x[ i ] );\n\t\t}\n\t\treturn;\n\t}\n\t// Continue recursing into the nested arrays...\n\tfor ( i = 0; i < S; i++ ) {\n\t\trecurse( x[ i ], y[ i ], ndims, shape, d, fcn );\n\t}\n}\n\n\n// MAIN //\n\n/**\n* Applies a unary callback to elements in an n-dimensional nested input array and assigns results to elements in an n-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject} arrays - array-like object containing one input nested array and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - unary callback\n* @returns {void}\n*\n* @example\n* var onesnd = require( '@stdlib/array/base/onesnd' );\n* var zerosnd = require( '@stdlib/array/base/zerosnd' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 2, 2 ];\n*\n* var x = onesnd( shape );\n* var y = zerosnd( shape );\n*\n* unarynd( [ x, y ], shape, scale );\n*\n* console.log( y );\n* // => [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ]\n*/\nfunction unarynd( arrays, shape, fcn ) {\n\treturn recurse( arrays[ 0 ], arrays[ 1 ], shape.length, shape, 0, fcn );\n}\n\n\n// EXPORTS //\n\nmodule.exports = unarynd;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a unary callback to elements in an n-dimensional nested input array and assign results to elements in an n-dimensional nested output array.\n*\n* @module @stdlib/array/base/unarynd\n*\n* @example\n* var onesnd = require( '@stdlib/array/base/onesnd' );\n* var zerosnd = require( '@stdlib/array/base/zerosnd' );\n* var unarynd = require( '@stdlib/array/base/unarynd' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 2, 2 ];\n*\n* var x = onesnd( shape );\n* var y = zerosnd( shape );\n*\n* unarynd( [ x, y ], shape, scale );\n*\n* console.log( y );\n* // => [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Generates a linearly spaced numeric array whose elements increment by 1.\n*\n* @param {number} x1 - first array value\n* @param {number} x2 - array element bound\n* @returns {Array} linearly spaced numeric array\n*\n* @example\n* var arr = unitspace( 0, 6 );\n* // returns [ 0, 1, 2, 3, 4, 5 ]\n*/\nfunction unitspace( x1, x2 ) {\n\tvar arr;\n\tvar len;\n\tvar i;\n\n\tlen = x2 - x1;\n\tif ( len <= 1 ) {\n\t\treturn [ x1 ];\n\t}\n\tarr = [ x1 ];\n\tfor ( i = 1; i < len; i++ ) {\n\t\tarr.push( x1 + i );\n\t}\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = unitspace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Generate a linearly spaced numeric array whose elements increment by 1.\n*\n* @module @stdlib/array/base/unitspace\n*\n* @example\n* var unitspace = require( '@stdlib/array/base/unitspace' );\n*\n* var arr = unitspace( 0, 6 );\n* // returns [ 0, 1, 2, 3, 4, 5 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Generates a linearly spaced numeric array whose elements increment by 1 starting from zero.\n*\n* @param {number} n - number of elements\n* @returns {Array<number>} linearly spaced numeric array\n*\n* @example\n* var arr = zeroTo( 6 );\n* // returns [ 0, 1, 2, 3, 4, 5 ]\n*/\nfunction zeroTo( n ) {\n\tvar arr;\n\tvar i;\n\n\tarr = [];\n\tif ( n <= 0 ) {\n\t\treturn arr;\n\t}\n\tfor ( i = 0; i < n; i++ ) {\n\t\tarr.push( i );\n\t}\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = zeroTo;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Generate a linearly spaced numeric array whose elements increment by 1 starting from zero.\n*\n* @module @stdlib/array/base/zero-to\n*\n* @example\n* var zeroTo = require( '@stdlib/array/base/zero-to' );\n*\n* var arr = zeroTo( 6 );\n* // returns [ 0, 1, 2, 3, 4, 5 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled2d = require( './../../../base/filled2d' );\n\n\n// MAIN //\n\n/**\n* Returns a zero-filled two-dimensional nested array.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {ArrayArray} filled array\n*\n* @example\n* var out = zeros2d( [ 1, 3 ] );\n* // returns [ [ 0.0, 0.0, 0.0 ] ]\n*/\nfunction zeros2d( shape ) {\n\treturn filled2d( 0.0, shape );\n}\n\n\n// EXPORTS //\n\nmodule.exports = zeros2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a zero-filled two-dimensional nested array.\n*\n* @module @stdlib/array/base/zeros2d\n*\n* @example\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n*\n* var out = zeros2d( [ 1, 3 ] );\n* // returns [ [ 0.0, 0.0, 0.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled3d = require( './../../../base/filled3d' );\n\n\n// MAIN //\n\n/**\n* Returns a zero-filled three-dimensional nested array.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {Array} filled array\n*\n* @example\n* var out = zeros3d( [ 1, 1, 3 ] );\n* // returns [ [ [ 0.0, 0.0, 0.0 ] ] ]\n*/\nfunction zeros3d( shape ) {\n\treturn filled3d( 0.0, shape );\n}\n\n\n// EXPORTS //\n\nmodule.exports = zeros3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a zero-filled three-dimensional nested array.\n*\n* @module @stdlib/array/base/zeros3d\n*\n* @example\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n*\n* var out = zeros3d( [ 1, 1, 3 ] );\n* // returns [ [ [ 0.0, 0.0, 0.0 ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled4d = require( './../../../base/filled4d' );\n\n\n// MAIN //\n\n/**\n* Returns a zero-filled four-dimensional nested array.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {Array} filled array\n*\n* @example\n* var out = zeros4d( [ 1, 1, 1, 3 ] );\n* // returns [ [ [ [ 0.0, 0.0, 0.0 ] ] ] ]\n*/\nfunction zeros4d( shape ) {\n\treturn filled4d( 0.0, shape );\n}\n\n\n// EXPORTS //\n\nmodule.exports = zeros4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a zero-filled four-dimensional nested array.\n*\n* @module @stdlib/array/base/zeros4d\n*\n* @example\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n*\n* var out = zeros4d( [ 1, 1, 1, 3 ] );\n* // returns [ [ [ [ 0.0, 0.0, 0.0 ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled5d = require( './../../../base/filled5d' );\n\n\n// MAIN //\n\n/**\n* Returns a zero-filled five-dimensional nested array.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {Array} filled array\n*\n* @example\n* var out = zeros5d( [ 1, 1, 1, 1, 3 ] );\n* // returns [ [ [ [ [ 0.0, 0.0, 0.0 ] ] ] ] ]\n*/\nfunction zeros5d( shape ) {\n\treturn filled5d( 0.0, shape );\n}\n\n\n// EXPORTS //\n\nmodule.exports = zeros5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a zero-filled five-dimensional nested array.\n*\n* @module @stdlib/array/base/zeros5d\n*\n* @example\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n*\n* var out = zeros5d( [ 1, 1, 1, 1, 3 ] );\n* // returns [ [ [ [ [ 0.0, 0.0, 0.0 ] ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar fillednd = require( './../../../base/fillednd' );\n\n\n// MAIN //\n\n/**\n* Returns a zero-filled n-dimensional nested array.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {Array} filled array\n*\n* @example\n* var out = zerosnd( [ 3 ] );\n* // returns [ 0.0, 0.0, 0.0 ]\n*\n* @example\n* var out = zerosnd( [ 1, 3 ] );\n* // returns [ [ 0.0, 0.0, 0.0 ] ]\n*/\nfunction zerosnd( shape ) {\n\treturn fillednd( 0.0, shape );\n}\n\n\n// EXPORTS //\n\nmodule.exports = zerosnd;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a zero-filled n-dimensional nested array.\n*\n* @module @stdlib/array/base/zerosnd\n*\n* @example\n* var zerosnd = require( '@stdlib/array/base/zerosnd' );\n*\n* var out = zerosnd( [ 1, 3 ] );\n* // returns [ [ 0.0, 0.0, 0.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/*\n* When adding modules to the namespace, ensure that they are added in alphabetical order according to module name.\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-read-only-property' );\n\n\n// MAIN //\n\n/**\n* Namespace.\n*\n* @namespace ns\n*/\nvar ns = {};\n\n/**\n* @name AccessorArray\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/accessor}\n*/\nsetReadOnly( ns, 'AccessorArray', require( './../../base/accessor' ) );\n\n/**\n* @name accessorGetter\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/accessor-getter}\n*/\nsetReadOnly( ns, 'accessorGetter', require( './../../base/accessor-getter' ) );\n\n/**\n* @name accessorSetter\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/accessor-setter}\n*/\nsetReadOnly( ns, 'accessorSetter', require( './../../base/accessor-setter' ) );\n\n/**\n* @name accessors\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/accessors}\n*/\nsetReadOnly( ns, 'accessors', require( './../../base/accessors' ) );\n\n/**\n* @name arraylike2object\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/arraylike2object}\n*/\nsetReadOnly( ns, 'arraylike2object', require( './../../base/arraylike2object' ) );\n\n/**\n* @name assert\n* @memberof ns\n* @readonly\n* @type {Namespace}\n* @see {@link module:@stdlib/array/base/assert}\n*/\nsetReadOnly( ns, 'assert', require( './../../base/assert' ) );\n\n/**\n* @name bifurcateEntries\n* @memberof ns\n* @readonly\n* @type {Namespace}\n* @see {@link module:@stdlib/array/base/bifurcate-entries}\n*/\nsetReadOnly( ns, 'bifurcateEntries', require( './../../base/bifurcate-entries' ) );\n\n/**\n* @name bifurcateEntriesBy\n* @memberof ns\n* @readonly\n* @type {Namespace}\n* @see {@link module:@stdlib/array/base/bifurcate-entries-by}\n*/\nsetReadOnly( ns, 'bifurcateEntriesBy', require( './../../base/bifurcate-entries-by' ) );\n\n/**\n* @name bifurcateIndices\n* @memberof ns\n* @readonly\n* @type {Namespace}\n* @see {@link module:@stdlib/array/base/bifurcate-indices}\n*/\nsetReadOnly( ns, 'bifurcateIndices', require( './../../base/bifurcate-indices' ) );\n\n/**\n* @name bifurcateIndicesBy\n* @memberof ns\n* @readonly\n* @type {Namespace}\n* @see {@link module:@stdlib/array/base/bifurcate-indices-by}\n*/\nsetReadOnly( ns, 'bifurcateIndicesBy', require( './../../base/bifurcate-indices-by' ) );\n\n/**\n* @name bifurcateValues\n* @memberof ns\n* @readonly\n* @type {Namespace}\n* @see {@link module:@stdlib/array/base/bifurcate-values}\n*/\nsetReadOnly( ns, 'bifurcateValues', require( './../../base/bifurcate-values' ) );\n\n/**\n* @name bifurcateValuesBy\n* @memberof ns\n* @readonly\n* @type {Namespace}\n* @see {@link module:@stdlib/array/base/bifurcate-values-by}\n*/\nsetReadOnly( ns, 'bifurcateValuesBy', require( './../../base/bifurcate-values-by' ) );\n\n/**\n* @name binary2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/binary2d}\n*/\nsetReadOnly( ns, 'binary2d', require( './../../base/binary2d' ) );\n\n/**\n* @name binary3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/binary3d}\n*/\nsetReadOnly( ns, 'binary3d', require( './../../base/binary3d' ) );\n\n/**\n* @name binary4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/binary4d}\n*/\nsetReadOnly( ns, 'binary4d', require( './../../base/binary4d' ) );\n\n/**\n* @name binary5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/binary5d}\n*/\nsetReadOnly( ns, 'binary5d', require( './../../base/binary5d' ) );\n\n/**\n* @name binarynd\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/binarynd}\n*/\nsetReadOnly( ns, 'binarynd', require( './../../base/binarynd' ) );\n\n/**\n* @name broadcastArray\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/broadcast-array}\n*/\nsetReadOnly( ns, 'broadcastArray', require( './../../base/broadcast-array' ) );\n\n/**\n* @name bbinary2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/broadcasted-binary2d}\n*/\nsetReadOnly( ns, 'bbinary2d', require( './../../base/broadcasted-binary2d' ) );\n\n/**\n* @name bbinary3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/broadcasted-binary3d}\n*/\nsetReadOnly( ns, 'bbinary3d', require( './../../base/broadcasted-binary3d' ) );\n\n/**\n* @name bbinary4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/broadcasted-binary4d}\n*/\nsetReadOnly( ns, 'bbinary4d', require( './../../base/broadcasted-binary4d' ) );\n\n/**\n* @name bbinary5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/broadcasted-binary5d}\n*/\nsetReadOnly( ns, 'bbinary5d', require( './../../base/broadcasted-binary5d' ) );\n\n/**\n* @name bquaternary2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/broadcasted-quaternary2d}\n*/\nsetReadOnly( ns, 'bquaternary2d', require( './../../base/broadcasted-quaternary2d' ) );\n\n/**\n* @name bquinary2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/broadcasted-quinary2d}\n*/\nsetReadOnly( ns, 'bquinary2d', require( './../../base/broadcasted-quinary2d' ) );\n\n/**\n* @name bternary2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/broadcasted-ternary2d}\n*/\nsetReadOnly( ns, 'bternary2d', require( './../../base/broadcasted-ternary2d' ) );\n\n/**\n* @name bunary2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/broadcasted-unary2d}\n*/\nsetReadOnly( ns, 'bunary2d', require( './../../base/broadcasted-unary2d' ) );\n\n/**\n* @name bunary3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/broadcasted-unary3d}\n*/\nsetReadOnly( ns, 'bunary3d', require( './../../base/broadcasted-unary3d' ) );\n\n/**\n* @name bunary4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/broadcasted-unary4d}\n*/\nsetReadOnly( ns, 'bunary4d', require( './../../base/broadcasted-unary4d' ) );\n\n/**\n* @name bunary5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/broadcasted-unary5d}\n*/\nsetReadOnly( ns, 'bunary5d', require( './../../base/broadcasted-unary5d' ) );\n\n/**\n* @name cartesianPower\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/cartesian-power}\n*/\nsetReadOnly( ns, 'cartesianPower', require( './../../base/cartesian-power' ) );\n\n/**\n* @name cartesianProduct\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/cartesian-product}\n*/\nsetReadOnly( ns, 'cartesianProduct', require( './../../base/cartesian-product' ) );\n\n/**\n* @name cartesianSquare\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/cartesian-square}\n*/\nsetReadOnly( ns, 'cartesianSquare', require( './../../base/cartesian-square' ) );\n\n/**\n* @name copy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/copy}\n*/\nsetReadOnly( ns, 'copy', require( './../../base/copy' ) );\n\n/**\n* @name copyIndexed\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/copy-indexed}\n*/\nsetReadOnly( ns, 'copyIndexed', require( './../../base/copy-indexed' ) );\n\n/**\n* @name dedupe\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/dedupe}\n*/\nsetReadOnly( ns, 'dedupe', require( './../../base/dedupe' ) );\n\n/**\n* @name every\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/every}\n*/\nsetReadOnly( ns, 'every', require( './../../base/every' ) );\n\n/**\n* @name everyBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/every-by}\n*/\nsetReadOnly( ns, 'everyBy', require( './../../base/every-by' ) );\n\n/**\n* @name filled\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/filled}\n*/\nsetReadOnly( ns, 'filled', require( './../../base/filled' ) );\n\n/**\n* @name filledBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/filled-by}\n*/\nsetReadOnly( ns, 'filledBy', require( './../../base/filled-by' ) );\n\n/**\n* @name filled2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/filled2d}\n*/\nsetReadOnly( ns, 'filled2d', require( './../../base/filled2d' ) );\n\n/**\n* @name filled2dBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/filled2d-by}\n*/\nsetReadOnly( ns, 'filled2dBy', require( './../../base/filled2d-by' ) );\n\n/**\n* @name filled3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/filled3d}\n*/\nsetReadOnly( ns, 'filled3d', require( './../../base/filled3d' ) );\n\n/**\n* @name filled3dBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/filled3d-by}\n*/\nsetReadOnly( ns, 'filled3dBy', require( './../../base/filled3d-by' ) );\n\n/**\n* @name filled4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/filled4d}\n*/\nsetReadOnly( ns, 'filled4d', require( './../../base/filled4d' ) );\n\n/**\n* @name filled4dBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/filled4d-by}\n*/\nsetReadOnly( ns, 'filled4dBy', require( './../../base/filled4d-by' ) );\n\n/**\n* @name filled5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/filled5d}\n*/\nsetReadOnly( ns, 'filled5d', require( './../../base/filled5d' ) );\n\n/**\n* @name filled5dBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/filled5d-by}\n*/\nsetReadOnly( ns, 'filled5dBy', require( './../../base/filled5d-by' ) );\n\n/**\n* @name fillednd\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/fillednd}\n*/\nsetReadOnly( ns, 'fillednd', require( './../../base/fillednd' ) );\n\n/**\n* @name filledndBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/fillednd-by}\n*/\nsetReadOnly( ns, 'filledndBy', require( './../../base/fillednd-by' ) );\n\n/**\n* @name first\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/first}\n*/\nsetReadOnly( ns, 'first', require( './../../base/first' ) );\n\n/**\n* @name flatten\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/flatten}\n*/\nsetReadOnly( ns, 'flatten', require( './../../base/flatten' ) );\n\n/**\n* @name flattenBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/flatten-by}\n*/\nsetReadOnly( ns, 'flattenBy', require( './../../base/flatten-by' ) );\n\n/**\n* @name flatten2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/flatten2d}\n*/\nsetReadOnly( ns, 'flatten2d', require( './../../base/flatten2d' ) );\n\n/**\n* @name flatten2dBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/flatten2d-by}\n*/\nsetReadOnly( ns, 'flatten2dBy', require( './../../base/flatten2d-by' ) );\n\n/**\n* @name flatten3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/flatten3d}\n*/\nsetReadOnly( ns, 'flatten3d', require( './../../base/flatten3d' ) );\n\n/**\n* @name flatten3dBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/flatten3d-by}\n*/\nsetReadOnly( ns, 'flatten3dBy', require( './../../base/flatten3d-by' ) );\n\n/**\n* @name flatten4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/flatten4d}\n*/\nsetReadOnly( ns, 'flatten4d', require( './../../base/flatten4d' ) );\n\n/**\n* @name flatten4dBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/flatten4d-by}\n*/\nsetReadOnly( ns, 'flatten4dBy', require( './../../base/flatten4d-by' ) );\n\n/**\n* @name flatten5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/flatten5d}\n*/\nsetReadOnly( ns, 'flatten5d', require( './../../base/flatten5d' ) );\n\n/**\n* @name flatten5dBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/flatten5d-by}\n*/\nsetReadOnly( ns, 'flatten5dBy', require( './../../base/flatten5d-by' ) );\n\n/**\n* @name fliplr2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/fliplr2d}\n*/\nsetReadOnly( ns, 'fliplr2d', require( './../../base/fliplr2d' ) );\n\n/**\n* @name fliplr3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/fliplr3d}\n*/\nsetReadOnly( ns, 'fliplr3d', require( './../../base/fliplr3d' ) );\n\n/**\n* @name fliplr4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/fliplr4d}\n*/\nsetReadOnly( ns, 'fliplr4d', require( './../../base/fliplr4d' ) );\n\n/**\n* @name fliplr5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/fliplr5d}\n*/\nsetReadOnly( ns, 'fliplr5d', require( './../../base/fliplr5d' ) );\n\n/**\n* @name flipud2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/flipud2d}\n*/\nsetReadOnly( ns, 'flipud2d', require( './../../base/flipud2d' ) );\n\n/**\n* @name flipud3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/flipud3d}\n*/\nsetReadOnly( ns, 'flipud3d', require( './../../base/flipud3d' ) );\n\n/**\n* @name flipud4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/flipud4d}\n*/\nsetReadOnly( ns, 'flipud4d', require( './../../base/flipud4d' ) );\n\n/**\n* @name flipud5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/flipud5d}\n*/\nsetReadOnly( ns, 'flipud5d', require( './../../base/flipud5d' ) );\n\n/**\n* @name strided2array\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/from-strided}\n*/\nsetReadOnly( ns, 'strided2array', require( './../../base/from-strided' ) );\n\n/**\n* @name getter\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/getter}\n*/\nsetReadOnly( ns, 'getter', require( './../../base/getter' ) );\n\n/**\n* @name groupEntries\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/group-entries}\n*/\nsetReadOnly( ns, 'groupEntries', require( './../../base/group-entries' ) );\n\n/**\n* @name groupEntriesBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/group-entries-by}\n*/\nsetReadOnly( ns, 'groupEntriesBy', require( './../../base/group-entries-by' ) );\n\n/**\n* @name groupIndices\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/group-indices}\n*/\nsetReadOnly( ns, 'groupIndices', require( './../../base/group-indices' ) );\n\n/**\n* @name groupIndicesBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/group-indices-by}\n*/\nsetReadOnly( ns, 'groupIndicesBy', require( './../../base/group-indices-by' ) );\n\n/**\n* @name groupValues\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/group-values}\n*/\nsetReadOnly( ns, 'groupValues', require( './../../base/group-values' ) );\n\n/**\n* @name groupValuesBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/group-values-by}\n*/\nsetReadOnly( ns, 'groupValuesBy', require( './../../base/group-values-by' ) );\n\n/**\n* @name incrspace\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/incrspace}\n*/\nsetReadOnly( ns, 'incrspace', require( './../../base/incrspace' ) );\n\n/**\n* @name indexOf\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/index-of}\n*/\nsetReadOnly( ns, 'indexOf', require( './../../base/index-of' ) );\n\n/**\n* @name last\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/last}\n*/\nsetReadOnly( ns, 'last', require( './../../base/last' ) );\n\n/**\n* @name lastIndexOf\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/last-index-of}\n*/\nsetReadOnly( ns, 'lastIndexOf', require( './../../base/last-index-of' ) );\n\n/**\n* @name linspace\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/linspace}\n*/\nsetReadOnly( ns, 'linspace', require( './../../base/linspace' ) );\n\n/**\n* @name logspace\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/logspace}\n*/\nsetReadOnly( ns, 'logspace', require( './../../base/logspace' ) );\n\n/**\n* @name map2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/map2d}\n*/\nsetReadOnly( ns, 'map2d', require( './../../base/map2d' ) );\n\n/**\n* @name map3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/map3d}\n*/\nsetReadOnly( ns, 'map3d', require( './../../base/map3d' ) );\n\n/**\n* @name map4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/map4d}\n*/\nsetReadOnly( ns, 'map4d', require( './../../base/map4d' ) );\n\n/**\n* @name map5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/map5d}\n*/\nsetReadOnly( ns, 'map5d', require( './../../base/map5d' ) );\n\n/**\n* @name mskbinary2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/mskbinary2d}\n*/\nsetReadOnly( ns, 'mskbinary2d', require( './../../base/mskbinary2d' ) );\n\n/**\n* @name mskunary2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/mskunary2d}\n*/\nsetReadOnly( ns, 'mskunary2d', require( './../../base/mskunary2d' ) );\n\n/**\n* @name mskunary3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/mskunary3d}\n*/\nsetReadOnly( ns, 'mskunary3d', require( './../../base/mskunary3d' ) );\n\n/**\n* @name nCartesianProduct\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/n-cartesian-product}\n*/\nsetReadOnly( ns, 'nCartesianProduct', require( './../../base/n-cartesian-product' ) );\n\n/**\n* @name oneTo\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/one-to}\n*/\nsetReadOnly( ns, 'oneTo', require( './../../base/one-to' ) );\n\n/**\n* @name ones\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/ones}\n*/\nsetReadOnly( ns, 'ones', require( './../../base/ones' ) );\n\n/**\n* @name ones2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/ones2d}\n*/\nsetReadOnly( ns, 'ones2d', require( './../../base/ones2d' ) );\n\n/**\n* @name ones3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/ones3d}\n*/\nsetReadOnly( ns, 'ones3d', require( './../../base/ones3d' ) );\n\n/**\n* @name ones4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/ones4d}\n*/\nsetReadOnly( ns, 'ones4d', require( './../../base/ones4d' ) );\n\n/**\n* @name ones5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/ones5d}\n*/\nsetReadOnly( ns, 'ones5d', require( './../../base/ones5d' ) );\n\n/**\n* @name onesnd\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/onesnd}\n*/\nsetReadOnly( ns, 'onesnd', require( './../../base/onesnd' ) );\n\n/**\n* @name quaternary2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/quaternary2d}\n*/\nsetReadOnly( ns, 'quaternary2d', require( './../../base/quaternary2d' ) );\n\n/**\n* @name quaternary3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/quaternary3d}\n*/\nsetReadOnly( ns, 'quaternary3d', require( './../../base/quaternary3d' ) );\n\n/**\n* @name quaternary4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/quaternary4d}\n*/\nsetReadOnly( ns, 'quaternary4d', require( './../../base/quaternary4d' ) );\n\n/**\n* @name quaternary5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/quaternary5d}\n*/\nsetReadOnly( ns, 'quaternary5d', require( './../../base/quaternary5d' ) );\n\n/**\n* @name quinary2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/quinary2d}\n*/\nsetReadOnly( ns, 'quinary2d', require( './../../base/quinary2d' ) );\n\n/**\n* @name quinary3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/quinary3d}\n*/\nsetReadOnly( ns, 'quinary3d', require( './../../base/quinary3d' ) );\n\n/**\n* @name quinary4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/quinary4d}\n*/\nsetReadOnly( ns, 'quinary4d', require( './../../base/quinary4d' ) );\n\n/**\n* @name quinary5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/quinary5d}\n*/\nsetReadOnly( ns, 'quinary5d', require( './../../base/quinary5d' ) );\n\n/**\n* @name resolveGetter\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/resolve-getter}\n*/\nsetReadOnly( ns, 'resolveGetter', require( './../../base/resolve-getter' ) );\n\n/**\n* @name setter\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/setter}\n*/\nsetReadOnly( ns, 'setter', require( './../../base/setter' ) );\n\n/**\n* @name slice\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/slice}\n*/\nsetReadOnly( ns, 'slice', require( './../../base/slice' ) );\n\n/**\n* @name strided2array2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/strided2array2d}\n*/\nsetReadOnly( ns, 'strided2array2d', require( './../../base/strided2array2d' ) );\n\n/**\n* @name strided2array3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/strided2array3d}\n*/\nsetReadOnly( ns, 'strided2array3d', require( './../../base/strided2array3d' ) );\n\n/**\n* @name strided2array4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/strided2array4d}\n*/\nsetReadOnly( ns, 'strided2array4d', require( './../../base/strided2array4d' ) );\n\n/**\n* @name strided2array5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/strided2array5d}\n*/\nsetReadOnly( ns, 'strided2array5d', require( './../../base/strided2array5d' ) );\n\n/**\n* @name take\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/take}\n*/\nsetReadOnly( ns, 'take', require( './../../base/take' ) );\n\n/**\n* @name takeIndexed\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/take-indexed}\n*/\nsetReadOnly( ns, 'takeIndexed', require( './../../base/take-indexed' ) );\n\n/**\n* @name take2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/take2d}\n*/\nsetReadOnly( ns, 'take2d', require( './../../base/take2d' ) );\n\n/**\n* @name take3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/take3d}\n*/\nsetReadOnly( ns, 'take3d', require( './../../base/take3d' ) );\n\n/**\n* @name ternary2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/ternary2d}\n*/\nsetReadOnly( ns, 'ternary2d', require( './../../base/ternary2d' ) );\n\n/**\n* @name ternary3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/ternary3d}\n*/\nsetReadOnly( ns, 'ternary3d', require( './../../base/ternary3d' ) );\n\n/**\n* @name ternary4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/ternary4d}\n*/\nsetReadOnly( ns, 'ternary4d', require( './../../base/ternary4d' ) );\n\n/**\n* @name ternary5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/ternary5d}\n*/\nsetReadOnly( ns, 'ternary5d', require( './../../base/ternary5d' ) );\n\n/**\n* @name toAccessorArray\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/to-accessor-array}\n*/\nsetReadOnly( ns, 'toAccessorArray', require( './../../base/to-accessor-array' ) );\n\n/**\n* @name toDeduped\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/to-deduped}\n*/\nsetReadOnly( ns, 'toDeduped', require( './../../base/to-deduped' ) );\n\n/**\n* @name unary2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/unary2d}\n*/\nsetReadOnly( ns, 'unary2d', require( './../../base/unary2d' ) );\n\n/**\n* @name unary2dBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/unary2d-by}\n*/\nsetReadOnly( ns, 'unary2dBy', require( './../../base/unary2d-by' ) );\n\n/**\n* @name unary3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/unary3d}\n*/\nsetReadOnly( ns, 'unary3d', require( './../../base/unary3d' ) );\n\n/**\n* @name unary4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/unary4d}\n*/\nsetReadOnly( ns, 'unary4d', require( './../../base/unary4d' ) );\n\n/**\n* @name unary5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/unary5d}\n*/\nsetReadOnly( ns, 'unary5d', require( './../../base/unary5d' ) );\n\n/**\n* @name unarynd\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/unarynd}\n*/\nsetReadOnly( ns, 'unarynd', require( './../../base/unarynd' ) );\n\n/**\n* @name unitspace\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/unitspace}\n*/\nsetReadOnly( ns, 'unitspace', require( './../../base/unitspace' ) );\n\n/**\n* @name zeroTo\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/zero-to}\n*/\nsetReadOnly( ns, 'zeroTo', require( './../../base/zero-to' ) );\n\n/**\n* @name zeros\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/zeros}\n*/\nsetReadOnly( ns, 'zeros', require( './../../base/zeros' ) );\n\n/**\n* @name zeros2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/zeros2d}\n*/\nsetReadOnly( ns, 'zeros2d', require( './../../base/zeros2d' ) );\n\n/**\n* @name zeros3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/zeros3d}\n*/\nsetReadOnly( ns, 'zeros3d', require( './../../base/zeros3d' ) );\n\n/**\n* @name zeros4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/zeros4d}\n*/\nsetReadOnly( ns, 'zeros4d', require( './../../base/zeros4d' ) );\n\n/**\n* @name zeros5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/zeros5d}\n*/\nsetReadOnly( ns, 'zeros5d', require( './../../base/zeros5d' ) );\n\n/**\n* @name zerosnd\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/zerosnd}\n*/\nsetReadOnly( ns, 'zerosnd', require( './../../base/zerosnd' ) );\n\n\n// EXPORTS //\n\nmodule.exports = ns;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar ctor = ( typeof ArrayBuffer === 'function' ) ? ArrayBuffer : void 0; // eslint-disable-line stdlib/require-globals\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// TODO: write polyfill\n\n// MAIN //\n\n/**\n* Constructor which returns an object used to represent a generic, fixed-length raw binary data buffer.\n*\n* @throws {Error} not implemented\n*/\nfunction polyfill() {\n\tthrow new Error( 'not implemented' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = polyfill;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Constructor which returns an object used to represent a generic, fixed-length raw binary data buffer.\n*\n* @module @stdlib/array/buffer\n*\n* @example\n* var ctor = require( '@stdlib/array/buffer' );\n*\n* var buf = new ctor( 10 );\n* // returns <ArrayBuffer>\n*/\n\n// MODULES //\n\nvar hasArrayBufferSupport = require( '@stdlib/assert/has-arraybuffer-support' );\nvar builtin = require( './main.js' );\nvar polyfill = require( './polyfill.js' );\n\n\n// MAIN //\n\nvar ctor;\nif ( hasArrayBufferSupport() ) {\n\tctor = builtin;\n} else {\n\tctor = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Float64Array = require( './../../float64' );\nvar Float32Array = require( './../../float32' );\nvar Int16Array = require( './../../int16' );\nvar Int32Array = require( './../../int32' );\nvar Int8Array = require( './../../int8' );\nvar Uint16Array = require( './../../uint16' );\nvar Uint32Array = require( './../../uint32' );\nvar Uint8Array = require( './../../uint8' );\nvar Uint8ClampedArray = require( './../../uint8c' );\nvar Complex64Array = require( './../../complex64' );\nvar Complex128Array = require( './../../complex128' );\n\n\n// MAIN //\n\n// Mapping from data types to constructors...\nvar ctors = {\n\t'float64': Float64Array,\n\t'float32': Float32Array,\n\t'generic': Array, // TODO: replace with `stdlib` pkg\n\t'int16': Int16Array,\n\t'int32': Int32Array,\n\t'int8': Int8Array,\n\t'uint16': Uint16Array,\n\t'uint32': Uint32Array,\n\t'uint8': Uint8Array,\n\t'uint8c': Uint8ClampedArray,\n\t'complex64': Complex64Array,\n\t'complex128': Complex128Array\n};\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar table = require( './ctors.js' );\n\n\n// MAIN //\n\n/**\n* Returns an array constructor.\n*\n* @param {string} dtype - data type\n* @returns {(Function|null)} constructor or null\n*\n* @example\n* var ctor = ctors( 'float64' );\n* // returns <Function>\n*\n* @example\n* var ctor = ctors( 'float' );\n* // returns null\n*/\nfunction ctors( dtype ) {\n\treturn table[ dtype ] || null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Array constructors.\n*\n* @module @stdlib/array/ctors\n*\n* @example\n* var ctors = require( '@stdlib/array/ctors' );\n*\n* var ctor = ctors( 'float64' );\n* // returns <Function>\n*\n* ctor = ctors( 'int' );\n* // returns null\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar getType = require( './../../dtype' );\nvar ctors = require( './../../ctors' );\nvar reinterpret128 = require( '@stdlib/strided/base/reinterpret-complex128' );\nvar reinterpret64 = require( '@stdlib/strided/base/reinterpret-complex64' );\nvar format = require( '@stdlib/string/format' );\nvar gcopy = require( '@stdlib/blas/base/gcopy' );\nvar copy = require( './../../base/copy' );\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether a data type is a single-precision complex floating-point number data type.\n*\n* @private\n* @param {string} dtype - data type\n* @returns {boolean} boolean indicating whether a provided data type is a single-precision complex floating-point number data type\n*\n* @example\n* var bool = isComplex64( 'float64' );\n* // returns false\n*\n* @example\n* var bool = isComplex64( 'complex64' );\n* // returns true\n*/\nfunction isComplex64( dtype ) {\n\treturn ( dtype === 'complex64' );\n}\n\n/**\n* Tests whether a data type is a double-precision complex floating-point number data type.\n*\n* @private\n* @param {string} dtype - data type\n* @returns {boolean} boolean indicating whether a provided data type is a double-precision complex floating-point number data type\n*\n* @example\n* var bool = isComplex128( 'float64' );\n* // returns false\n*\n* @example\n* var bool = isComplex128( 'complex128' );\n* // returns true\n*/\nfunction isComplex128( dtype ) {\n\treturn ( dtype === 'complex128' );\n}\n\n\n// MAIN //\n\n/**\n* Converts an array to an array of a different data type.\n*\n* @param {Collection} x - array to convert\n* @param {string} dtype - output data type\n* @throws {TypeError} first argument must be an array-like object\n* @throws {TypeError} second argument must be a recognized array data type\n* @returns {(Array|TypedArray|ComplexArray)} output array\n*\n* @example\n* var arr = [ 1.0, 2.0, 3.0, 4.0 ];\n*\n* var out = convert( arr, 'float64' );\n* // returns <Float64Array>[ 1.0, 2.0, 3.0, 4.0 ]\n*/\nfunction convert( x, dtype ) {\n\tvar isc64;\n\tvar ctor;\n\tvar xbuf;\n\tvar obuf;\n\tvar out;\n\tvar len;\n\tvar t;\n\n\tif ( !isCollection( x ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be an array-like object. Value: `%s`.', x ) );\n\t}\n\t// If the output data type is \"generic\", our task is relatively straightforward...\n\tif ( dtype === 'generic' ) {\n\t\treturn copy( x );\n\t}\n\tctor = ctors( dtype );\n\tif ( ctor === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a recognized array data type. Value: `%s`.', dtype ) );\n\t}\n\t// Cache the input array length:\n\tlen = x.length;\n\n\t// Get the input array data type:\n\tt = getType( x );\n\tisc64 = isComplex64( t );\n\n\t// Create the output array:\n\tout = new ctor( len );\n\n\t// As the output data type is not \"generic\", we need to explicitly handle complex number input arrays...\n\tif ( isc64 || isComplex128( t ) ) {\n\t\tif ( isc64 ) {\n\t\t\txbuf = reinterpret64( x, 0 );\n\t\t} else {\n\t\t\txbuf = reinterpret128( x, 0 );\n\t\t}\n\t\t// Check whether the output data type is a complex number data type...\n\t\tif ( isComplex64( dtype ) ) { // cmplx => cmplx\n\t\t\tobuf = reinterpret64( out, 0 );\n\t\t\tgcopy( len*2, xbuf, 1, obuf, 1 );\n\t\t\treturn out;\n\t\t}\n\t\tif ( isComplex128( dtype ) ) { // cmplx => cmplx\n\t\t\tobuf = reinterpret128( out, 0 );\n\t\t\tgcopy( len*2, xbuf, 1, obuf, 1 );\n\t\t\treturn out;\n\t\t}\n\t\t// We assume that the output data type is a real number data type, given that we're looking to convert a provided complex number array; in which case, we'll only extract the real components from the complex number input array...\n\t\tgcopy( len, xbuf, 2, out, 1 ); // cmplx => real\n\t\treturn out;\n\t}\n\t// Check whether we need to explicitly handle complex number output arrays...\n\tisc64 = isComplex64( dtype );\n\tif ( isc64 || isComplex128( dtype ) ) {\n\t\tif ( isc64 ) {\n\t\t\tobuf = reinterpret64( out, 0 );\n\t\t} else {\n\t\t\tobuf = reinterpret128( out, 0 );\n\t\t}\n\t\t// We assume that the input data type is a real number data type, given that we're looking to convert to a complex number array; in which case, we'll only set the real components... (WARNING: we're assuming that the output array has been zero-initialized! The imaginary components should be zero!)\n\t\tgcopy( len, x, 1, obuf, 2 ); // real => cmplx\n\t\treturn out;\n\t}\n\t// At this point, we're no longer handling complex number arrays, so we'll just assume that we can perform a straightforward copy...\n\tgcopy( len, x, 1, out, 1 ); // note: `gcopy` is assumed to support arrays using accessors\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = convert;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert an array to an array of a different data type.\n*\n* @module @stdlib/array/convert\n*\n* @example\n* var convert = require( '@stdlib/array/convert' );\n*\n* var arr = [ 1.0, 2.0, 3.0, 4.0 ];\n*\n* var out = convert( arr, 'float64' );\n* // returns <Float64Array>[ 1.0, 2.0, 3.0, 4.0 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar getType = require( './../../dtype' );\nvar convert = require( './../../convert' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Converts an array to the same data type as a second input array.\n*\n* @param {Collection} x - array to convert\n* @param {(Array|TypedArray|ComplexArray)} y - array having the desired output data type\n* @throws {TypeError} first argument must be an array-like object\n* @throws {TypeError} second argument must have a recognized data type\n* @returns {(Array|TypedArray|ComplexArray)} output array\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var x = [ 1.0, 2.0, 3.0, 4.0 ];\n* var y = new Float64Array( 0 );\n*\n* var out = convertSame( x, y );\n* // returns <Float64Array>[ 1.0, 2.0, 3.0, 4.0 ]\n*/\nfunction convertSame( x, y ) {\n\tvar dtype = getType( y );\n\tif ( dtype === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must have a recognized/supported data type. Type: `%s`. Value: `%s`.', dtype, y ) );\n\t}\n\treturn convert( x, dtype );\n}\n\n\n// EXPORTS //\n\nmodule.exports = convertSame;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert an array to the same data type as a second input array.\n*\n* @module @stdlib/array/convert-same\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var convertSame = require( '@stdlib/array/convert-same' );\n*\n* var x = [ 1.0, 2.0, 3.0, 4.0 ];\n* var y = new Float64Array( 0 );\n*\n* var out = convertSame( x, y );\n* // returns <Float64Array>[ 1.0, 2.0, 3.0, 4.0 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar ctor = ( typeof DataView === 'function' ) ? DataView : void 0; // eslint-disable-line stdlib/require-globals\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// TODO: write polyfill\n\n// MAIN //\n\n/**\n* Constructor which returns a data view representing a provided array buffer.\n*\n* @throws {Error} not implemented\n*/\nfunction polyfill() {\n\tthrow new Error( 'not implemented' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = polyfill;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Constructor which returns a data view representing a provided array buffer.\n*\n* @module @stdlib/array/dataview\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var DataView = require( '@stdlib/array/dataview' );\n*\n* var buf = new ArrayBuffer( 10 );\n* // returns <ArrayBuffer>\n*\n* var dv = new DataView( buf );\n* // returns <DataView>\n*/\n\n// MODULES //\n\nvar hasDataViewSupport = require( '@stdlib/assert/has-dataview-support' );\nvar builtin = require( './main.js' );\nvar polyfill = require( './polyfill.js' );\n\n\n// MAIN //\n\nvar ctor;\nif ( hasDataViewSupport() ) {\n\tctor = builtin;\n} else {\n\tctor = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar isInteger = require( '@stdlib/assert/is-integer' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isObject = require( '@stdlib/assert/is-object' );\nvar format = require( '@stdlib/string/format' );\nvar floor = require( '@stdlib/math/base/special/floor' );\nvar round = require( '@stdlib/math/base/special/round' );\nvar ceil = require( '@stdlib/math/base/special/ceil' );\n\n\n// VARIABLES //\n\nvar timestamp = /^\\d{10}$|^\\d{13}$/;\nvar rounders = [ 'floor', 'ceil', 'round' ];\n\n\n// FUNCTIONS //\n\n/**\n* Validates a date parameter.\n*\n* @private\n* @param {*} value - value to be validated\n* @param {string} name - name to be used in error messages\n* @throws {TypeError} value must either be a date string, Date object, Unix timestamp, or JavaScript timestamp\n* @throws {Error} numeric date must be either a Unix or JavaScript timestamp\n* @returns {Date} validated date\n*/\nfunction validDate( value, name ) {\n\tvar type;\n\n\ttype = typeof value;\n\tif ( type === 'string' ) {\n\t\tvalue = Date.parse( value );\n\t\tif ( value !== value ) {\n\t\t\tthrow new Error( format( 'invalid argument. Unable to parse %s date.', name.toLowerCase() ) );\n\t\t}\n\t\tvalue = new Date( value );\n\t}\n\tif ( type === 'number' ) {\n\t\tif ( !timestamp.test( value ) ) {\n\t\t\tthrow new Error( format( 'invalid argument. Numeric %s date must be either a Unix or JavaScript timestamp.', name.toLowerCase() ) );\n\t\t}\n\t\tif ( value.toString().length === 10 ) {\n\t\t\tvalue *= 1000; // sec to ms\n\t\t}\n\t\tvalue = new Date( value );\n\t}\n\tif ( !(value instanceof Date) ) {\n\t\tthrow new TypeError( format( 'invalid argument. %s date must either be a date string, Date object, Unix timestamp, or JavaScript timestamp.', name ) );\n\t}\n\treturn value;\n}\n\n\n// MAIN //\n\n/**\n* Generates an array of linearly spaced dates.\n*\n* @param {(Date|number|string)} start - start time as either a `Date` object, Unix timestamp, JavaScript timestamp, or date string\n* @param {(Date|number|string)} stop - stop time as either a `Date` object, Unix timestamp, JavaScript timestamp, or date string\n* @param {number} [length] - output array length (default: 100)\n* @param {Object} [options] - function options\n* @param {string} [options.round] - specifies how sub-millisecond times should be rounded: [ 'floor', 'ceil', 'round' ] (default: 'floor' )\n* @throws {TypeError} length argument must a positive integer\n* @throws {Error} must provide valid options\n* @returns {Array} array of dates\n*\n* @example\n* var stop = '2014-12-02T07:00:54.973Z';\n* var start = new Date( stop ) - 60000;\n*\n* var arr = datespace( start, stop, 6 );\n* // returns [...]\n*\n* @example\n* // Equivalent of Math.ceil():\n* var arr = datespace( 1417503655000, 1417503655001, 3, { 'round': 'ceil' } );\n* // returns [...]\n*\n* // Equivalent of Math.round():\n* arr = datespace( 1417503655000, 1417503655001, 3, { 'round': 'round' } );\n* // returns [...]\n*/\nfunction datespace( start, stop, length, options ) {\n\tvar opts;\n\tvar len;\n\tvar flg;\n\tvar arr;\n\tvar end;\n\tvar fcn;\n\tvar tmp;\n\tvar d;\n\tvar i;\n\n\tlen = 100;\n\tflg = true;\n\topts = {\n\t\t'round': 'floor'\n\t};\n\tstart = validDate( start, 'Start' );\n\tstop = validDate( stop, 'Stop' );\n\tif ( arguments.length > 2 ) {\n\t\tif ( arguments.length === 3 ) {\n\t\t\tif ( isObject( length ) ) {\n\t\t\t\topts = length;\n\t\t\t} else {\n\t\t\t\tlen = length;\n\n\t\t\t\t// Turn off checking the options object...\n\t\t\t\tflg = false;\n\t\t\t}\n\t\t} else {\n\t\t\topts = options;\n\t\t\tlen = length;\n\t\t}\n\t\tif ( len === 0 ) {\n\t\t\treturn [];\n\t\t}\n\t\tif ( !isInteger( len ) || len < 0 ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Length must be a positive integer. Value: `%s`.', len ) );\n\t\t}\n\t\tif ( flg ) {\n\t\t\tif ( !isObject( opts ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', opts ) );\n\t\t\t}\n\t\t\tif ( hasOwnProp( opts, 'round' ) ) {\n\t\t\t\tif ( !isString( opts.round ) ) {\n\t\t\t\t\tthrow new TypeError( format( 'invalid option. `%s` option must be a string. Option: `%s`.', 'round', opts.round ) );\n\t\t\t\t}\n\t\t\t\tif ( rounders.indexOf( opts.round ) === -1 ) {\n\t\t\t\t\tthrow new Error( format( 'invalid option. `%s` option must be one of the following: \"%s\". Option: `%s`.', 'round', rounders.join( '\", \"' ), opts.round ) );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tswitch ( opts.round ) {\n\tcase 'round':\n\t\tfcn = round;\n\t\tbreak;\n\tcase 'ceil':\n\t\tfcn = ceil;\n\t\tbreak;\n\tcase 'floor':\n\tdefault:\n\t\tfcn = floor;\n\t\tbreak;\n\t}\n\n\t// Calculate the increment...\n\tend = len - 1;\n\td = ( stop.getTime() - start.getTime() ) / end;\n\n\t// Build the output array...\n\tarr = new Array( len );\n\ttmp = start;\n\tarr[ 0 ] = tmp;\n\ttmp = tmp.getTime();\n\tfor ( i = 1; i < end; i++ ) {\n\t\ttmp += d;\n\t\tarr[ i ] = new Date( fcn( tmp ) );\n\t}\n\tarr[ end ] = stop;\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = datespace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Generate an array of linearly spaced dates.\n*\n* @module @stdlib/array/datespace\n*\n* @example\n* var datespace = require( '@stdlib/array/datespace' );\n*\n* var stop = '2014-12-02T07:00:54.973Z';\n* var start = new Date( stop ) - 60000;\n*\n* var arr = datespace( start, stop, 6 );\n* // returns [...]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Returns default array settings.\n*\n* @returns {Object} defaults\n*\n* @example\n* var o = defaults();\n* // returns {...}\n*/\nfunction defaults() {\n\treturn {\n\t\t// Data types:\n\t\t'dtypes': {\n\t\t\t'default': 'float64',\n\t\t\t'numeric': 'float64',\n\t\t\t'real': 'float64',\n\t\t\t'floating_point': 'float64',\n\t\t\t'real_floating_point': 'float64',\n\t\t\t'complex_floating_point': 'complex128',\n\t\t\t'integer': 'int32',\n\t\t\t'signed_integer': 'int32',\n\t\t\t'unsigned_integer': 'uint32'\n\t\t}\n\t};\n}\n\n\n// EXPORTS //\n\nmodule.exports = defaults;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar defaults = require( './main.js' );\n\n\n// VARIABLES //\n\nvar DEFAULTS = defaults();\nvar HASH = {\n\t'dtypes.default': DEFAULTS.dtypes.default,\n\t'dtypes.numeric': DEFAULTS.dtypes.numeric,\n\t'dtypes.real': DEFAULTS.dtypes.real,\n\t'dtypes.floating_point': DEFAULTS.dtypes.floating_point,\n\t'dtypes.real_floating_point': DEFAULTS.dtypes.real_floating_point,\n\t'dtypes.complex_floating_point': DEFAULTS.dtypes.complex_floating_point,\n\t'dtypes.integer': DEFAULTS.dtypes.integer,\n\t'dtypes.signed_integer': DEFAULTS.dtypes.signed_integer,\n\t'dtypes.unsigned_integer': DEFAULTS.dtypes.unsigned_integer\n};\n\n\n// MAIN //\n\n/**\n* Returns a default array setting.\n*\n* @param {string} name - setting name\n* @returns {*} default setting or null\n*\n* @example\n* var v = get( 'dtypes.default' );\n* // returns <string>\n*/\nfunction get( name ) {\n\tvar v = HASH[ name ];\n\treturn ( v === void 0 ) ? null : v;\n}\n\n\n// EXPORTS //\n\nmodule.exports = get;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return default array settings.\n*\n* @module @stdlib/array/defaults\n*\n* @example\n* var defaults = require( '@stdlib/array/defaults' );\n*\n* var o = defaults();\n* // returns {...}\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar get = require( './get.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'get', get );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "{\n  \"all\": [\n    \"complex64\",\n    \"complex128\",\n    \"float32\",\n    \"float64\",\n    \"generic\",\n    \"int16\",\n    \"int32\",\n    \"int8\",\n    \"uint16\",\n    \"uint32\",\n    \"uint8\",\n    \"uint8c\"\n  ],\n  \"floating_point\": [\n    \"complex64\",\n    \"complex128\",\n    \"float32\",\n    \"float64\"\n  ],\n  \"real_floating_point\": [\n    \"float32\",\n    \"float64\"\n  ],\n  \"complex_floating_point\": [\n    \"complex64\",\n    \"complex128\"\n  ],\n  \"integer\": [\n    \"int16\",\n    \"int32\",\n    \"int8\",\n    \"uint16\",\n    \"uint32\",\n    \"uint8\",\n    \"uint8c\"\n  ],\n  \"signed_integer\": [\n    \"int16\",\n    \"int32\",\n    \"int8\"\n  ],\n  \"unsigned_integer\": [\n    \"uint16\",\n    \"uint32\",\n    \"uint8\",\n    \"uint8c\"\n  ],\n  \"real\": [\n    \"float32\",\n    \"float64\",\n    \"int16\",\n    \"int32\",\n    \"int8\",\n    \"uint16\",\n    \"uint32\",\n    \"uint8\",\n    \"uint8c\"\n  ],\n  \"numeric\": [\n    \"complex64\",\n    \"complex128\",\n    \"float32\",\n    \"float64\",\n    \"int16\",\n    \"int32\",\n    \"int8\",\n    \"uint16\",\n    \"uint32\",\n    \"uint8\",\n    \"uint8c\"\n  ]\n}\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar replace = require( '@stdlib/string/base/replace' );\nvar DTYPES = require( './dtypes.json' );\n\n\n// VARIABLES //\n\nvar RE_SUFFIX = /_and_generic$/;\n\n\n// MAIN //\n\n/**\n* Returns a list of array data types.\n*\n* @param {string} [kind] - data type kind\n* @returns {StringArray} list of array data types\n*\n* @example\n* var list = dtypes();\n* // e.g., returns [ 'float32', 'float64', ... ]\n*\n* @example\n* var list = dtypes( 'floating_point' );\n* // returns [...]\n*/\nfunction dtypes() {\n\tvar kind;\n\tvar out;\n\tvar FLG;\n\tif ( arguments.length === 0 ) {\n\t\treturn DTYPES.all.slice();\n\t}\n\tFLG = false;\n\tkind = arguments[ 0 ];\n\tif ( RE_SUFFIX.test( kind ) ) {\n\t\tkind = replace( kind, RE_SUFFIX, '' );\n\t\tif ( kind !== 'all' ) {\n\t\t\tFLG = true;\n\t\t}\n\t}\n\tout = DTYPES[ kind ];\n\tout = ( out ) ? out.slice() : [];\n\tif ( FLG && out.length > 0 ) {\n\t\tout.push( 'generic' );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = dtypes;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a list of array data types.\n*\n* @module @stdlib/array/dtypes\n*\n* @example\n* var dtypes = require( '@stdlib/array/dtypes' );\n*\n* var list = dtypes();\n* // e.g., returns [ 'float32', 'float64', 'generic', 'int16', 'int32', 'int8', 'uint16', 'uint32', 'uint8', 'uint8c', 'complex128', 'complex64' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar allocUnsafe = require( '@stdlib/buffer/alloc-unsafe' );\nvar isUint8Array = require( '@stdlib/assert/is-uint8array' );\n\n\n// MAIN //\n\n/**\n* Checks whether an environment supports Node.js buffer instances which inherit from `Uint8Array`.\n*\n* @private\n* @returns {boolean} boolean indicating whether an environment supports Node.js buffer instances inheriting from `Uint8Array`\n*\n* @example\n* var bool = check();\n* // returns <boolean>\n*/\nfunction check() {\n\tvar buf = allocUnsafe( 1 );\n\treturn isUint8Array( buf );\n}\n\n\n// EXPORTS //\n\nmodule.exports = check;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Float64Array = require( './../../float64' );\nvar Float32Array = require( './../../float32' );\nvar Int16Array = require( './../../int16' );\nvar Int32Array = require( './../../int32' );\nvar Int8Array = require( './../../int8' );\nvar Uint16Array = require( './../../uint16' );\nvar Uint32Array = require( './../../uint32' );\nvar Uint8Array = require( './../../uint8' );\nvar Uint8ClampedArray = require( './../../uint8c' );\nvar Complex64Array = require( './../../complex64' );\nvar Complex128Array = require( './../../complex128' );\n\n\n// MAIN //\n\n// Mapping from data types to constructors...\nvar ctors = {\n\t'float64': Float64Array,\n\t'float32': Float32Array,\n\t'int16': Int16Array,\n\t'int32': Int32Array,\n\t'int8': Int8Array,\n\t'uint16': Uint16Array,\n\t'uint32': Uint32Array,\n\t'uint8': Uint8Array,\n\t'uint8c': Uint8ClampedArray,\n\t'complex64': Complex64Array,\n\t'complex128': Complex128Array\n};\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar table = require( './ctors.js' );\n\n\n// MAIN //\n\n/**\n* Returns a typed array constructor.\n*\n* @param {string} dtype - data type\n* @returns {(Function|null)} constructor or null\n*\n* @example\n* var ctor = ctors( 'float64' );\n* // returns <Function>\n*\n* @example\n* var ctor = ctors( 'float' );\n* // returns null\n*/\nfunction ctors( dtype ) {\n\treturn table[ dtype ] || null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Typed array constructors.\n*\n* @module @stdlib/array/typed-ctors\n*\n* @example\n* var ctors = require( '@stdlib/array/typed-ctors' );\n*\n* var ctor = ctors( 'float64' );\n* // returns <Function>\n*\n* ctor = ctors( 'int' );\n* // returns null\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar allocUnsafe = require( '@stdlib/buffer/alloc-unsafe' );\nvar ctors = require( './../../typed-ctors' );\nvar zeros = require( './../../base/zeros' );\nvar bytesPerElement = require( '@stdlib/ndarray/base/bytes-per-element' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Creates an uninitialized array having a specified length.\n*\n* @param {NonNegativeInteger} length - array length\n* @param {string} [dtype=\"float64\"] - data type\n* @throws {TypeError} first argument must be a nonnegative integer\n* @throws {TypeError} second argument must be a recognized data type\n* @returns {(TypedArray|Array|ComplexArray)} array or typed array\n*\n* @example\n* var arr = empty( 2 );\n* // returns <Float64Array>\n*\n* @example\n* var arr = empty( 2, 'float32' );\n* // returns <Float32Array>\n*/\nfunction empty( length ) {\n\tvar nbytes;\n\tvar offset;\n\tvar dtype;\n\tvar ctor;\n\tvar buf;\n\tvar out;\n\tvar nb;\n\n\tif ( !isNonNegativeInteger( length ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a nonnegative integer. Value: `%s`.', length ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tdtype = arguments[ 1 ];\n\t} else {\n\t\tdtype = 'float64';\n\t}\n\tif ( dtype === 'generic' ) {\n\t\treturn zeros( length );\n\t}\n\tnbytes = bytesPerElement( dtype );\n\tif ( nbytes === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a supported data type. Value: `%s`.', dtype ) );\n\t}\n\t// Resolve typed array constructor:\n\tctor = ctors( dtype );\n\n\t// Compute the number of bytes to allocate:\n\tnb = nbytes * length;\n\tif ( dtype === 'complex128' ) {\n\t\tnb += 8; // Note: need to allocate additional bytes to ensure alignment\n\t}\n\t// Allocate binary buffer:\n\tbuf = allocUnsafe( nb );\n\n\t// Resolve the byte offset:\n\toffset = buf.byteOffset;\n\tif ( dtype === 'complex128' ) {\n\t\tif ( !isNonNegativeInteger( offset/nbytes ) ) {\n\t\t\toffset += 8; // Note: ensure alignment\n\t\t}\n\t}\n\t// Reinterpret the binary buffer:\n\tout = new ctor( buf.buffer, offset, length );\n\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = empty;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar ctors = require( './../../ctors' );\nvar gzeros = require( './../../base/zeros' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Creates a zero-filled array having a specified length.\n*\n* @param {NonNegativeInteger} length - array length\n* @param {string} [dtype=\"float64\"] - data type\n* @throws {TypeError} first argument must be a nonnegative integer\n* @throws {TypeError} second argument must be a recognized data type\n* @returns {(TypedArray|Array|ComplexArray)} array or typed array\n*\n* @example\n* var arr = zeros( 2 );\n* // returns <Float64Array>[ 0.0, 0.0 ]\n*\n* @example\n* var arr = zeros( 2, 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0 ]\n*/\nfunction zeros( length ) {\n\tvar dtype;\n\tvar ctor;\n\tif ( !isNonNegativeInteger( length ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a nonnegative integer. Value: `%s`.', length ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tdtype = arguments[ 1 ];\n\t} else {\n\t\tdtype = 'float64';\n\t}\n\tif ( dtype === 'generic' ) {\n\t\treturn gzeros( length );\n\t}\n\tctor = ctors( dtype );\n\tif ( ctor === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a recognized data type. Value: `%s`.', dtype ) );\n\t}\n\treturn new ctor( length ); // WARNING: we assume that, apart from 'generic', the constructors for supported array data types are zero-filled by default\n}\n\n\n// EXPORTS //\n\nmodule.exports = zeros;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a zero-filled array having a specified length.\n*\n* @module @stdlib/array/zeros\n*\n* @example\n* var zeros = require( '@stdlib/array/zeros' );\n*\n* var arr = zeros( 2 );\n* // returns <Float64Array>[ 0.0, 0.0 ]\n*\n* @example\n* var zeros = require( '@stdlib/array/zeros' );\n*\n* var arr = zeros( 2, 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar zeros = require( './../../zeros' );\n\n\n// MAIN //\n\n/**\n* Creates an uninitialized array having a specified length.\n*\n* @private\n* @param {NonNegativeInteger} length - array length\n* @param {string} [dtype=\"float64\"] - data type\n* @throws {TypeError} first argument must be a nonnegative integer\n* @throws {TypeError} second argument must be a recognized data type\n* @returns {(TypedArray|Array|ComplexArray)} array or typed array\n*\n* @example\n* var arr = empty( 2 );\n* // returns <Float64Array>\n*\n* @example\n* var arr = empty( 2, 'float32' );\n* // returns <Float32Array>\n*/\nfunction empty( length ) {\n\tif ( arguments.length > 1 ) {\n\t\treturn zeros( length, arguments[ 1 ] );\n\t}\n\treturn zeros( length );\n}\n\n\n// EXPORTS //\n\nmodule.exports = empty;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an uninitialized array having a specified length.\n*\n* @module @stdlib/array/empty\n*\n* @example\n* var empty = require( '@stdlib/array/empty' );\n*\n* var arr = empty( 2 );\n* // returns <Float64Array>\n*\n* @example\n* var empty = require( '@stdlib/array/empty' );\n*\n* var arr = empty( 2, 'float32' );\n* // returns <Float32Array>\n*/\n\n// MODULES //\n\nvar isBufferUint8Array = require( './is_buffer_uint8array.js' );\nvar main = require( './main.js' );\nvar polyfill = require( './polyfill.js' );\n\n\n// MAIN //\n\nvar empty;\nif ( isBufferUint8Array() ) {\n\tempty = main;\n} else {\n\tempty = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = empty;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar dtype = require( './../../dtype' );\nvar empty = require( './../../empty' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Creates an uninitialized array having the same length and data type as a provided input array.\n*\n* @param {(Array|TypedArray|ComplexArray)} x - input array\n* @param {string} [dtype] - data type\n* @throws {TypeError} first argument must be an array or typed array\n* @throws {TypeError} second argument must be a recognized data type\n* @returns {(TypedArray|Array|ComplexArray)} array or typed array\n*\n* @example\n* var arr = emptyLike( [ 0.0, 0.0 ] );\n* // returns [ 0.0, 0.0 ]\n*\n* @example\n* var arr = emptyLike( [ 0.0, 0.0 ], 'float32' );\n* // returns <Float32Array>\n*/\nfunction emptyLike( x ) {\n\tvar dt = dtype( x ); // delegate input argument validation to dtype resolution\n\tif ( dt === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be either an array, typed array, or complex typed array. Value: `%s`.', x ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tdt = arguments[ 1 ];\n\t}\n\treturn empty( x.length, dt );\n}\n\n\n// EXPORTS //\n\nmodule.exports = emptyLike;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an uninitialized array having the same length and data type as a provided input array.\n*\n* @module @stdlib/array/empty-like\n*\n* @example\n* var emptyLike = require( '@stdlib/array/empty-like' );\n*\n* var arr = emptyLike( [ 0.0, 0.0 ] );\n* // returns [ 0.0, 0.0 ]\n*\n* @example\n* var emptyLike = require( '@stdlib/array/empty-like' );\n*\n* var arr = emptyLike( [ 0.0, 0.0 ], 'float32' );\n* // returns <Float32Array>\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' );\nvar isObject = require( '@stdlib/assert/is-object' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar ctors = require( './../../ctors' );\nvar gfill = require( '@stdlib/blas/ext/base/gfill' );\nvar filled = require( './../../base/filled' );\nvar hasIteratorSymbolSupport = require( '@stdlib/assert/has-iterator-symbol-support' );\nvar ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' );\nvar iterLength = require( '@stdlib/iter/length' );\nvar format = require( '@stdlib/string/format' );\n\n\n// VARIABLES //\n\nvar HAS_ITERATOR_SYMBOL = hasIteratorSymbolSupport();\n\n\n// FUNCTIONS //\n\n/**\n* Creates a filled \"generic\" array from an iterator.\n*\n* @private\n* @param {Iterator} it - iterator\n* @param {*} value - fill value\n* @returns {Array} filled array\n*/\nfunction filledIterator( it, value ) {\n\tvar arr;\n\tvar v;\n\n\tarr = [];\n\twhile ( true ) {\n\t\tv = it.next();\n\t\tif ( v.done ) {\n\t\t\tbreak;\n\t\t}\n\t\tarr.push( value );\n\t}\n\treturn arr;\n}\n\n/**\n* Fills an array exposing accessors for getting and setting array elements.\n*\n* @private\n* @param {Collection} arr - input array\n* @param {*} value - fill value\n* @returns {Collection} input array\n*/\nfunction filledAccessors( arr, value ) {\n\tvar i;\n\tfor ( i = 0; i < arr.length; i++ ) {\n\t\tarr.set( value, i );\n\t}\n\treturn arr;\n}\n\n\n// MAIN //\n\n/**\n* Creates a filled array.\n*\n* @param {*} [value] - fill value\n* @param {(NonNegativeInteger|TypedArray|ArrayLikeObject|ArrayBuffer|Iterable)} [arg] - a length, typed array, array-like object, buffer, or iterable\n* @param {NonNegativeInteger} [byteOffset=0] - byte offset\n* @param {NonNegativeInteger} [length] - view length\n* @param {string} [dtype=\"float64\"] - data type\n* @throws {TypeError} must provide a recognized data type\n* @throws {TypeError} must provide a length, typed array, array-like object, buffer, or iterable\n* @throws {Error} creating a generic array from an `ArrayBuffer` is not supported\n* @returns {(TypedArray|Array|ComplexArray)} array or typed array\n*\n* @example\n* var arr = filledarray();\n* // returns <Float64Array>\n*\n* @example\n* var arr = filledarray( 1.0, 2 );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var arr = filledarray( 1.0, 2, 'float32' );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*\n* @example\n* var arr = filledarray( 1.0, 2, 'generic' );\n* // returns [ 1.0, 1.0 ]\n*\n* @example\n* var arr = filledarray( 1.0, [ 0.5, 0.5 ] );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var arr = filledarray( 1, [ 5, -3 ], 'int32' );\n* // returns <Int32Array>[ 1, 1 ]\n*\n* @example\n* var arr1 = filledarray( 2, [ 5, 3 ], 'int32' );\n* var arr2 = filledarray( 1.0, arr1 );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var arr1 = filledarray( 2, [ 5, 3 ], 'int32' );\n* var arr2 = filledarray( 1, arr1, 'uint32' );\n* // returns <Uint32Array>[ 1, 1 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarray( 1.0, buf );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarray( 1.0, buf, 'float32' );\n* // returns <Float32Array>[ 1.0, 1.0, 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarray( 1.0, buf, 8 );\n* // returns <Float64Array>[ 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarray( 1.0, buf, 8, 'float32' );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = filledarray( 1.0, buf, 8, 2 );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = filledarray( 1, buf, 8, 2, 'int32' );\n* // returns <Int32Array>[ 1, 1 ]\n*/\nfunction filledarray() {\n\tvar value;\n\tvar nargs;\n\tvar dtype;\n\tvar ctor;\n\tvar arr;\n\tvar len;\n\tvar arg;\n\n\tnargs = arguments.length;\n\tnargs -= 1;\n\tif ( nargs >= 0 && isString( arguments[ nargs ] ) ) {\n\t\tdtype = arguments[ nargs ];\n\t\tnargs -= 1;\n\t} else {\n\t\tdtype = 'float64';\n\t}\n\tctor = ctors( dtype );\n\tif ( ctor === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a recognized data type. Value: `%s`.', dtype ) );\n\t}\n\tif ( dtype === 'generic' ) {\n\t\tif ( nargs <= 0 ) {\n\t\t\treturn [];\n\t\t}\n\t\tvalue = arguments[ 0 ];\n\t\targ = arguments[ 1 ];\n\t\tif ( nargs === 1 ) {\n\t\t\tif ( isNonNegativeInteger( arg ) ) {\n\t\t\t\tlen = arg;\n\t\t\t} else if ( isCollection( arg ) ) {\n\t\t\t\tlen = arg.length;\n\t\t\t}\n\t\t\tif ( len !== void 0 ) {\n\t\t\t\treturn filled( value, len );\n\t\t\t}\n\t\t\tif ( isArrayBuffer( arg ) ) {\n\t\t\t\tthrow new Error( 'invalid arguments. Creating a generic array from an ArrayBuffer is not supported.' );\n\t\t\t}\n\t\t\tif ( isObject( arg ) ) {\n\t\t\t\tif ( HAS_ITERATOR_SYMBOL === false ) {\n\t\t\t\t\tthrow new TypeError( format( 'invalid argument. Environment lacks Symbol.iterator support. Must provide a length, typed array, or array-like object. Value: `%s`.', arg ) );\n\t\t\t\t}\n\t\t\t\tif ( !isFunction( arg[ ITERATOR_SYMBOL ] ) ) {\n\t\t\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.', arg ) );\n\t\t\t\t}\n\t\t\t\targ = arg[ ITERATOR_SYMBOL ]();\n\t\t\t\tif ( !isFunction( arg.next ) ) {\n\t\t\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.', arg ) );\n\t\t\t\t}\n\t\t\t\treturn filledIterator( arg, value );\n\t\t\t}\n\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.', arg ) );\n\t\t} else if ( isArrayBuffer( arg ) ) {\n\t\t\tthrow new Error( 'invalid arguments. Creating a generic array from an ArrayBuffer is not supported.' );\n\t\t}\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.', arg ) );\n\t}\n\tif ( nargs <= 0 ) {\n\t\treturn new ctor( 0 );\n\t}\n\tif ( nargs === 1 ) { // length || array-like || ArrayBuffer || iterable\n\t\targ = arguments[ 1 ];\n\t\tif ( isCollection( arg ) ) {\n\t\t\tarr = new ctor( arg.length );\n\t\t} else if ( isArrayBuffer( arg ) ) {\n\t\t\tarr = new ctor( arg );\n\t\t} else if ( isNonNegativeInteger( arg ) ) {\n\t\t\tarr = new ctor( arg );\n\t\t} else if ( isObject( arg ) ) {\n\t\t\tif ( HAS_ITERATOR_SYMBOL === false ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Environment lacks Symbol.iterator support. Must provide a length, typed array, or array-like object. Value: `%s`.', arg ) );\n\t\t\t}\n\t\t\tif ( !isFunction( arg[ ITERATOR_SYMBOL ] ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.', arg ) );\n\t\t\t}\n\t\t\targ = arg[ ITERATOR_SYMBOL ]();\n\t\t\tif ( !isFunction( arg.next ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.', arg ) );\n\t\t\t}\n\t\t\tarr = new ctor( iterLength( arg ) );\n\t\t} else {\n\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.', arg ) );\n\t\t}\n\t} else if ( nargs === 2 ) {\n\t\tarr = new ctor( arguments[1], arguments[2] ); // (ArrayBuffer, byteOffset)\n\t} else {\n\t\tarr = new ctor( arguments[1], arguments[2], arguments[3] ); // (ArrayBuffer, byteOffset, length)\n\t}\n\tif ( arr.length > 0 ) {\n\t\tif ( /^complex/.test( dtype ) ) {\n\t\t\tfilledAccessors( arr, arguments[ 0 ] );\n\t\t} else {\n\t\t\tgfill( arr.length, arguments[ 0 ], arr, 1 );\n\t\t}\n\t}\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = filledarray;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled array.\n*\n* @module @stdlib/array/filled\n*\n* @example\n* var filledarray = require( '@stdlib/array/filled' );\n*\n* var arr = filledarray();\n* // returns <Float64Array>\n*\n* @example\n* var filledarray = require( '@stdlib/array/filled' );\n*\n* var arr = filledarray( 1.0, 2 );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var filledarray = require( '@stdlib/array/filled' );\n*\n* var arr = filledarray( 1.0, 2, 'float32' );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*\n* @example\n* var filledarray = require( '@stdlib/array/filled' );\n*\n* var arr = filledarray( 1.0, 2, 'generic' );\n* // returns [ 1.0, 1.0 ]\n*\n* @example\n* var filledarray = require( '@stdlib/array/filled' );\n*\n* var arr = filledarray( 1.0, [ 0.5, 0.5 ] );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var filledarray = require( '@stdlib/array/filled' );\n*\n* var arr = filledarray( 1, [ 5, -3 ], 'int32' );\n* // returns <Int32Array>[ 1, 1 ]\n*\n* @example\n* var filledarray = require( '@stdlib/array/filled' );\n*\n* var arr1 = filledarray( 10, [ 5, 3 ], 'int32' );\n* var arr2 = filledarray( 1.0, arr1 );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var filledarray = require( '@stdlib/array/filled' );\n*\n* var arr1 = filledarray( 1, [ 5, 3 ], 'int32' );\n* var arr2 = filledarray( 2, arr1, 'uint32' );\n* // returns <Uint32Array>[ 2, 2 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var filledarray = require( '@stdlib/array/filled' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarray( 1.0, buf );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var filledarray = require( '@stdlib/array/filled' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarray( 1.0, buf, 'float32' );\n* // returns <Float32Array>[ 1.0, 1.0, 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var filledarray = require( '@stdlib/array/filled' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarray( 1.0, buf, 8 );\n* // returns <Float64Array>[ 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var filledarray = require( '@stdlib/array/filled' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarray( 1.0, buf, 8, 'float32' );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var filledarray = require( '@stdlib/array/filled' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = filledarray( 1.0, buf, 8, 2 );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var filledarray = require( '@stdlib/array/filled' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = filledarray( 1, buf, 8, 2, 'int32' );\n* // returns <Int32Array>[ 1, 1 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' );\nvar isObject = require( '@stdlib/assert/is-object' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar ctors = require( './../../ctors' );\nvar gfillBy = require( '@stdlib/blas/ext/base/gfill-by' );\nvar filledArray = require( './../../base/filled-by' );\nvar hasIteratorSymbolSupport = require( '@stdlib/assert/has-iterator-symbol-support' );\nvar ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' );\nvar iterLength = require( '@stdlib/iter/length' );\nvar format = require( '@stdlib/string/format' );\n\n\n// VARIABLES //\n\nvar HAS_ITERATOR_SYMBOL = hasIteratorSymbolSupport();\nvar DEFAULT_DTYPE = 'float64';\n\n\n// FUNCTIONS //\n\n/**\n* Creates a filled \"generic\" array from an iterator.\n*\n* @private\n* @param {Iterable} it - iterator\n* @param {Callback} clbk - callback function\n* @param {*} thisArg - callback function execution context\n* @returns {Array} filled array\n*/\nfunction filledArrayIterator( it, clbk, thisArg ) {\n\tvar arr;\n\tvar i;\n\tvar v;\n\n\tarr = [];\n\ti = -1;\n\twhile ( true ) {\n\t\tv = it.next();\n\t\tif ( v.done ) {\n\t\t\tbreak;\n\t\t}\n\t\ti += 1;\n\t\tarr.push( clbk.call( thisArg, i ) );\n\t}\n\treturn arr;\n}\n\n/**\n* Fills an array exposing accessors for getting and setting array elements.\n*\n* @private\n* @param {Collection} arr - input array\n* @param {Callback} clbk - callback function\n* @param {*} thisArg - callback function execution context\n* @returns {Collection} input array\n*/\nfunction filledAccessors( arr, clbk, thisArg ) {\n\tvar i;\n\tfor ( i = 0; i < arr.length; i++ ) {\n\t\tarr.set( clbk.call( thisArg, i ), i );\n\t}\n\treturn arr;\n}\n\n\n// MAIN //\n\n/**\n* Creates a filled array according to a provided callback function.\n*\n* @param {(NonNegativeInteger|TypedArray|ArrayLikeObject|ArrayBuffer|Iterable)} [arg] - a length, typed array, array-like object, buffer, or iterable\n* @param {NonNegativeInteger} [byteOffset=0] - byte offset\n* @param {NonNegativeInteger} [length] - view length\n* @param {string} [dtype=\"float64\"] - data type\n* @param {Callback} [clbk] - callback to invoke\n* @param {*} [thisArg] - callback execution context\n* @throws {TypeError} must provide a recognized data type\n* @throws {TypeError} must provide a length, typed array, array-like object, buffer, or iterable\n* @throws {TypeError} callback argument must be a function.\n* @throws {Error} creating a generic array from an `ArrayBuffer` is not supported\n* @returns {(TypedArray|Array)} array or typed array\n*\n* @example\n* var arr = filledarrayBy();\n* // returns <Float64Array>\n*\n* @example\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var arr = filledarrayBy( 2, clbk );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var arr = filledarrayBy( 2, 'float32', clbk );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*\n* @example\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var arr = filledarrayBy( 2, 'generic', clbk );\n* // returns [ 1.0, 1.0 ]\n*\n* @example\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var arr = filledarrayBy( [ 0.5, 0.5 ], clbk );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* function clbk() {\n*     return 1;\n* }\n*\n* var arr = filledarrayBy( [ 5, -3 ], 'int32', clbk );\n* // returns <Int32Array>[ 1, 1 ]\n*\n* @example\n* function clbk1() {\n*     return 10;\n* }\n*\n* function clbk2() {\n*     return 1.0;\n* }\n*\n* var arr1 = filledarrayBy( [ 5, 3 ], 'int32', clbk1 );\n* var arr2 = filledarrayBy( arr1, clbk2 );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* function clbk1() {\n*     return 1.0;\n* }\n*\n* function clbk2() {\n*     return 2;\n* }\n*\n* var arr1 = filledarrayBy( [ 5, 3 ], 'int32', clbk1 );\n* var arr2 = filledarrayBy( arr1, 'uint32', clbk2 );\n* // returns <Uint32Array>[ 2, 2 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarrayBy( buf, clbk );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarrayBy( buf, 'float32', clbk );\n* // returns <Float32Array>[ 1.0, 1.0, 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarrayBy( buf, 8, clbk );\n* // returns <Float64Array>[ 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarrayBy( buf, 8, 'float32', clbk );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = filledarrayBy( buf, 8, 2, clbk );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* function clbk() {\n*     return 1;\n* }\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = filledarrayBy( buf, 8, 2, 'int32', clbk );\n* // returns <Int32Array>[ 1, 1 ]\n*/\nfunction filledarrayBy() {\n\tvar thisArg;\n\tvar nargs;\n\tvar dtype;\n\tvar clbk;\n\tvar ctor;\n\tvar arr;\n\tvar len;\n\tvar arg;\n\n\tnargs = arguments.length;\n\n\t// If we weren't provided any arguments, return an empty array...\n\tif ( nargs === 0 ) {\n\t\tctor = ctors( DEFAULT_DTYPE );\n\t\treturn new ctor( 0 );\n\t}\n\t// Check if we were provided a dtype as the first argument...\n\tdtype = arguments[ 0 ];\n\tif ( isString( dtype ) ) {\n\t\t// Invoking this function with arguments `f( dtype, clbk[, thisArg] )` is not allowed (otherwise, we'd need to also allow `f( clbk[, thisArg] )`)...\n\t\tif ( nargs > 1 ) {\n\t\t\tthrow new TypeError( 'invalid arguments. Must provide a length, typed array, array-like object, or an iterable.' );\n\t\t}\n\t\tctor = ctors( dtype );\n\t\tif ( ctor === null ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a recognized data type. Value: `%s`.', dtype ) );\n\t\t}\n\t\t// Return an empty array having the specified dtype:\n\t\treturn new ctor( 0 );\n\t}\n\t// For all other supported invocations, we need at least two arguments...\n\tif ( nargs < 2 ) {\n\t\tthrow new TypeError( 'invalid arguments. Must provide a length, typed array, array-like object, or an iterable.' );\n\t}\n\t// At this point, we need to do some argument juggling...\n\tnargs -= 1; // henceforth, the number of available arguments is `nargs+1`\n\n\t// Determine whether the last argument is a callback or \"this\" context...\n\tif ( isFunction( arguments[ nargs ] ) ) {\n\t\t// If the last argument is a function, we need to check the next-to-last argument, and, if the next-to-last argument is a function, assume that the next-to-last argument is the callback and the last argument is a \"this\" context...\n\t\tif ( isFunction( arguments[ nargs-1 ] ) ) {\n\t\t\tthisArg = arguments[ nargs ];\n\t\t\tnargs -= 1;\n\t\t\tclbk = arguments[ nargs ];\n\n\t\t\t// Check if we were provided only a callback and a \"this\" context..\n\t\t\tif ( nargs === 0 ) {\n\t\t\t\tthrow new TypeError( 'invalid arguments. Must provide a length, typed array, array-like object, or an iterable.' );\n\t\t\t}\n\t\t} else {\n\t\t\t// \"this\" context is left undefined...\n\t\t\tclbk = arguments[ nargs ];\n\t\t}\n\t}\n\t// If we were provided 3 or more arguments and the last argument was not a function, assume that we were provided a callback and a \"this\" context...\n\telse if ( nargs >= 2 ) {\n\t\tthisArg = arguments[ nargs ];\n\t\tnargs -= 1;\n\t\tclbk = arguments[ nargs ];\n\t\tif ( !isFunction( clbk ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Callback argument must be a function. Value: `%s`.', clbk ) );\n\t\t}\n\t}\n\t// If were were only provided 2 arguments and the last argument was not a function, we've been provided an insufficient number of arguments...\n\telse {\n\t\tthrow new TypeError( 'invalid arguments. Must provide a length, typed array, array-like object, or an iterable.' );\n\t}\n\t// Now that we've processed the callback arguments, let's continue working backward to see if we've been provided a `dtype` argument...\n\tnargs -= 1;\n\tif ( nargs >= 0 && isString( arguments[ nargs ] ) ) {\n\t\tdtype = arguments[ nargs ];\n\t\tnargs -= 1;\n\t} else {\n\t\tdtype = DEFAULT_DTYPE;\n\t}\n\tctor = ctors( dtype );\n\tif ( ctor === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a recognized data type. Value: `%s`.', dtype ) );\n\t}\n\t// At this point, we've resolved the output array data type, and now we can actually create the output array...\n\tif ( dtype === 'generic' ) {\n\t\targ = arguments[ 0 ];\n\t\tif ( nargs === 0 ) {\n\t\t\tif ( isNonNegativeInteger( arg ) ) {\n\t\t\t\tlen = arg;\n\t\t\t} else if ( isCollection( arg ) ) {\n\t\t\t\tlen = arg.length;\n\t\t\t}\n\t\t\tif ( len !== void 0 ) {\n\t\t\t\treturn filledArray( len, clbk, thisArg );\n\t\t\t}\n\t\t\tif ( isArrayBuffer( arg ) ) {\n\t\t\t\tthrow new Error( 'invalid arguments. Creating a generic array from an ArrayBuffer is not supported.' );\n\t\t\t}\n\t\t\tif ( isObject( arg ) ) {\n\t\t\t\tif ( HAS_ITERATOR_SYMBOL === false ) {\n\t\t\t\t\tthrow new TypeError( format( 'invalid argument. Environment lacks Symbol.iterator support. Must provide a length, typed array, or array-like object. Value: `%s`.', arg ) );\n\t\t\t\t}\n\t\t\t\tif ( !isFunction( arg[ ITERATOR_SYMBOL ] ) ) {\n\t\t\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.', arg ) );\n\t\t\t\t}\n\t\t\t\targ = arg[ ITERATOR_SYMBOL ]();\n\t\t\t\tif ( !isFunction( arg.next ) ) {\n\t\t\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.', arg ) );\n\t\t\t\t}\n\t\t\t\treturn filledArrayIterator( arg, clbk, thisArg );\n\t\t\t}\n\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.', arg ) );\n\t\t} else if ( isArrayBuffer( arg ) ) {\n\t\t\tthrow new Error( 'invalid arguments. Creating a generic array from an ArrayBuffer is not supported.' );\n\t\t}\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.', arg ) );\n\t}\n\tif ( nargs === 0 ) { // length || array-like || ArrayBuffer || iterable\n\t\targ = arguments[ 0 ];\n\t\tif ( isCollection( arg ) ) {\n\t\t\tarr = new ctor( arg.length );\n\t\t} else if ( isArrayBuffer( arg ) ) {\n\t\t\tarr = new ctor( arg );\n\t\t} else if ( isNonNegativeInteger( arg ) ) {\n\t\t\tarr = new ctor( arg );\n\t\t} else if ( isObject( arg ) ) {\n\t\t\tif ( HAS_ITERATOR_SYMBOL === false ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Environment lacks Symbol.iterator support. Must provide a length, typed array, or array-like object. Value: `%s`.', arg ) );\n\t\t\t}\n\t\t\tif ( !isFunction( arg[ ITERATOR_SYMBOL ] ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.', arg ) );\n\t\t\t}\n\t\t\targ = arg[ ITERATOR_SYMBOL ]();\n\t\t\tif ( !isFunction( arg.next ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.', arg ) );\n\t\t\t}\n\t\t\tarr = new ctor( iterLength( arg ) );\n\t\t} else {\n\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.', arg ) );\n\t\t}\n\t} else if ( nargs === 1 ) {\n\t\tarr = new ctor( arguments[0], arguments[1] ); // (ArrayBuffer, byteOffset)\n\t} else {\n\t\tarr = new ctor( arguments[0], arguments[1], arguments[2] ); // (ArrayBuffer, byteOffset, length)\n\t}\n\tif ( arr.length > 0 ) {\n\t\tif ( /^complex/.test( dtype ) ) {\n\t\t\tfilledAccessors( arr, clbk, thisArg );\n\t\t} else {\n\t\t\tgfillBy( arr.length, arr, 1, callback );\n\t\t}\n\t}\n\treturn arr;\n\n\t/**\n\t* Callback which wraps a provided callback and is invoked for each array element.\n\t*\n\t* @private\n\t* @param {*} value - element value\n\t* @param {NonNegativeInteger} aidx - array index\n\t* @param {NonNegativeInteger} sidx - strided index\n\t* @param {Collection} array - input array/collection\n\t* @returns {*} callback return value\n\t*/\n\tfunction callback( value, aidx ) {\n\t\treturn clbk.call( thisArg, aidx );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = filledarrayBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled array according to a provided callback function.\n*\n* @module @stdlib/array/filled-by\n*\n* @example\n* var filledarrayBy = require( '@stdlib/array/filled-by' );\n*\n* var arr = filledarrayBy();\n* // returns <Float64Array>\n*\n* @example\n* var filledarrayBy = require( '@stdlib/array/filled-by' );\n*\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var arr = filledarrayBy( 2, clbk );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var filledarrayBy = require( '@stdlib/array/filled-by' );\n*\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var arr = filledarrayBy( 2, 'float32', clbk );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*\n* @example\n* var filledarrayBy = require( '@stdlib/array/filled-by' );\n*\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var arr = filledarrayBy( 2, 'generic', clbk );\n* // returns [ 1.0, 1.0 ]\n*\n* @example\n* var filledarrayBy = require( '@stdlib/array/filled-by' );\n*\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var arr = filledarrayBy( [ 0.5, 0.5 ], clbk );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var filledarrayBy = require( '@stdlib/array/filled-by' );\n*\n* function clbk() {\n*     return 1;\n* }\n*\n* var arr = filledarrayBy( [ 5, -3 ], 'int32', clbk );\n* // returns <Int32Array>[ 1, 1 ]\n*\n* @example\n* var filledarrayBy = require( '@stdlib/array/filled-by' );\n*\n* function clbk1() {\n*     return 10;\n* }\n*\n* function clbk2() {\n*     return 1.0;\n* }\n*\n* var arr1 = filledarrayBy( [ 5, 3 ], 'int32', clbk1 );\n* var arr2 = filledarrayBy( arr1, clbk2 );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var filledarrayBy = require( '@stdlib/array/filled-by' );\n*\n* function clbk1() {\n*     return 1.0;\n* }\n*\n* function clbk2() {\n*     return 2;\n* }\n*\n* var arr1 = filledarrayBy( [ 5, 3 ], 'int32', clbk1 );\n* var arr2 = filledarrayBy( arr1, 'uint32', clbk2 );\n* // returns <Uint32Array>[ 2, 2 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var filledarrayBy = require( '@stdlib/array/filled-by' );\n*\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarrayBy( buf, clbk );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var filledarrayBy = require( '@stdlib/array/filled-by' );\n*\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarrayBy( buf, 'float32', clbk );\n* // returns <Float32Array>[ 1.0, 1.0, 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var filledarrayBy = require( '@stdlib/array/filled-by' );\n*\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarrayBy( buf, 8, clbk );\n* // returns <Float64Array>[ 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var filledarrayBy = require( '@stdlib/array/filled-by' );\n*\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarrayBy( buf, 8, 'float32', clbk );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var filledarrayBy = require( '@stdlib/array/filled-by' );\n*\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = filledarrayBy( buf, 8, 2, clbk );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var filledarrayBy = require( '@stdlib/array/filled-by' );\n*\n* function clbk() {\n*     return 1;\n* }\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = filledarrayBy( buf, 8, 2, 'int32', clbk );\n* // returns <Int32Array>[ 1, 1 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isIteratorLike = require( '@stdlib/assert/is-iterator-like' );\nvar isAccessorArray = require( './../../base/assert/is-accessor-array' );\nvar accessorSetter = require( './../../base/accessor-setter' );\nvar setter = require( './../../base/setter' );\nvar dtype = require( './../../dtype' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Creates (or fills) an array from an iterator.\n*\n* @param {Iterator} iterator - source iterator\n* @param {Collection} [out] - output array\n* @param {Function} [mapFcn] - function to invoke for each iterated value\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} iterator argument must be an iterator\n* @throws {TypeError} callback argument must be a function\n* @returns {Collection} output array\n*\n* @example\n* var randu = require( '@stdlib/random/iter/randu' );\n*\n* var iter = randu({\n*     'iter': 10\n* });\n*\n* var arr = iterator2array( iter );\n* // returns <Array>\n*/\nfunction iterator2array() {\n\tvar iterator;\n\tvar thisArg;\n\tvar fcn;\n\tvar out;\n\tvar len;\n\tvar set;\n\tvar dt;\n\tvar i;\n\tvar v;\n\n\titerator = arguments[ 0 ];\n\tif ( arguments.length > 1 ) {\n\t\tif ( isCollection( arguments[ 1 ] ) ) {\n\t\t\tout = arguments[ 1 ];\n\t\t\tif ( arguments.length > 2 ) {\n\t\t\t\tfcn = arguments[ 2 ];\n\t\t\t\tif ( !isFunction( fcn ) ) {\n\t\t\t\t\tthrow new TypeError( format( 'invalid argument. Callback argument must be a function. Value: `%s`.', fcn ) );\n\t\t\t\t}\n\t\t\t\tthisArg = arguments[ 3 ];\n\t\t\t}\n\t\t} else {\n\t\t\tfcn = arguments[ 1 ];\n\t\t\tif ( !isFunction( fcn ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Callback argument must be a function. Value: `%s`.', fcn ) );\n\t\t\t}\n\t\t\tthisArg = arguments[ 2 ];\n\t\t}\n\t}\n\tif ( !isIteratorLike( iterator ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Iterator argument must be an iterator protocol-compliant object. Value: `%s`.', iterator ) );\n\t}\n\ti = -1;\n\tif ( out === void 0 ) {\n\t\tout = [];\n\t\tif ( fcn ) {\n\t\t\twhile ( true ) {\n\t\t\t\ti += 1;\n\t\t\t\tv = iterator.next();\n\t\t\t\tif ( v.done ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tout.push( fcn.call( thisArg, v.value, i ) );\n\t\t\t}\n\t\t\treturn out;\n\t\t}\n\t\twhile ( true ) {\n\t\t\tv = iterator.next();\n\t\t\tif ( v.done ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tout.push( v.value );\n\t\t}\n\t\treturn out;\n\t}\n\tlen = out.length;\n\tdt = dtype( out );\n\tif ( isAccessorArray( out ) ) {\n\t\tset = accessorSetter( dt );\n\t} else {\n\t\tset = setter( dt );\n\t}\n\tif ( fcn ) {\n\t\twhile ( i < len-1 ) {\n\t\t\ti += 1;\n\t\t\tv = iterator.next();\n\t\t\tif ( v.done ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tset( out, i, fcn.call( thisArg, v.value, i ) );\n\t\t}\n\t\treturn out;\n\t}\n\twhile ( i < len-1 ) {\n\t\ti += 1;\n\t\tv = iterator.next();\n\t\tif ( v.done ) {\n\t\t\tbreak;\n\t\t}\n\t\tset( out, i, v.value );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = iterator2array;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create (or fill) an array from an iterator.\n*\n* @module @stdlib/array/from-iterator\n*\n* @example\n* var randu = require( '@stdlib/random/iter/randu' );\n* var iterator2array = require( '@stdlib/array/from-iterator' );\n*\n* var iter = randu({\n*     'iter': 10\n* });\n*\n* var arr = iterator2array( iter );\n* // returns <Array>\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar ctors = require( './../../ctors' );\nvar afill = require( './../../base/filled' );\nvar gfill = require( '@stdlib/blas/ext/base/gfill' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Creates a filled array having a specified length.\n*\n* @param {NonNegativeInteger} length - array length\n* @param {*} value - fill value\n* @param {string} [dtype=\"float64\"] - data type\n* @throws {TypeError} first argument must be a nonnegative integer\n* @throws {TypeError} third argument must be a recognized data type\n* @returns {(TypedArray|Array|ComplexArray)} array or typed array\n*\n* @example\n* var arr = full( 2, 1.0 );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var arr = full( 2, 1.0, 'float32' );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*/\nfunction full( length, value ) {\n\tvar dtype;\n\tvar ctor;\n\tvar out;\n\tif ( !isNonNegativeInteger( length ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a nonnegative integer. Value: `%s`.', length ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tdtype = arguments[ 2 ];\n\t} else {\n\t\tdtype = 'float64';\n\t}\n\tif ( dtype === 'generic' ) {\n\t\treturn afill( value, length );\n\t}\n\tctor = ctors( dtype );\n\tif ( ctor === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a recognized data type. Value: `%s`.', dtype ) );\n\t}\n\tout = new ctor( length );\n\n\t// TODO: revisit the following, as using `gfill` is not the most performant, especially for large arrays. We have two options: (1) use a native add-on which delegates to an appropriate C function which performs the loop or (2) use @stdlib/blas/ext/base/(d|s|c|z)fill functions which use native add-ons. The latter option is not great, as we only get perf boosts for large arrays for a select number of dtypes. The former option is more work, as we may need to write a bespoke add-on for handling the argument signature and the various types that `value` can assume (e.g., number, complex, etc). If we had a generic strided `copy` package with an add-on, we could wrap the value as a single element strided array with a stride of `0` and copy from `x` to `y`, and thus would not need to write a bespoke add-on. Note, however, that calling into a native add-on is not free. For shorter arrays, we'll likely observe a perf hit in Node.js. For now, we focus on just getting something working...\n\tgfill( length, value, out, 1 );\n\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = full;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled array having a specified length.\n*\n* @module @stdlib/array/full\n*\n* @example\n* var full = require( '@stdlib/array/full' );\n*\n* var arr = full( 2, 1.0 );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var full = require( '@stdlib/array/full' );\n*\n* var arr = full( 2, 1.0, 'float32' );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar format = require( '@stdlib/string/format' );\nvar dtype = require( './../../dtype' );\nvar full = require( './../../full' );\nvar Complex128 = require( '@stdlib/complex/float64' );\nvar Complex64 = require( '@stdlib/complex/float32' );\n\n\n// MAIN //\n\n/**\n* Creates a filled array having the same length and data type as a provided input array.\n*\n* @param {(Array|TypedArray|ComplexArray)} x - input array\n* @param {number} value - fill value\n* @param {string} [dtype] - data type\n* @throws {TypeError} first argument must be an array or typed array\n* @throws {TypeError} third argument must be a recognized data type\n* @returns {(TypedArray|Array|ComplexArray)} array or typed array\n*\n* @example\n* var arr = fullLike( [ 0.0, 0.0 ], 1.0 );\n* // returns [ 1.0, 1.0 ]\n*\n* @example\n* var arr = fullLike( [ 0.0, 0.0 ], 1.0, 'float32' );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*/\nfunction fullLike( x, value ) {\n\tvar dt;\n\tvar v;\n\n\tdt = dtype( x ); // delegate input argument validation to dtype resolution\n\tif ( dt === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be either an array, typed array, or complex typed array. Value: `%s`.', x ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tdt = arguments[ 2 ];\n\t}\n\tif ( typeof value === 'number' ) {\n\t\tif ( dt === 'complex128' ) {\n\t\t\tv = new Complex128( value, 0.0 );\n\t\t} else if ( dt === 'complex64' ) {\n\t\t\tv = new Complex64( value, 0.0 );\n\t\t} else {\n\t\t\tv = value;\n\t\t}\n\t} else {\n\t\tv = value;\n\t}\n\treturn full( x.length, v, dt );\n}\n\n\n// EXPORTS //\n\nmodule.exports = fullLike;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled array having the same length and data type as a provided input array.\n*\n* @module @stdlib/array/full-like\n*\n* @example\n* var fullLike = require( '@stdlib/array/full-like' );\n*\n* var arr = fullLike( [ 0.0, 0.0 ], 1.0 );\n* // returns [ 1.0, 1.0 ]\n*\n* @example\n* var fullLike = require( '@stdlib/array/full-like' );\n*\n* var arr = fullLike( [ 0.0, 0.0 ], 1.0, 'float32' );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar ceil = require( '@stdlib/math/base/special/ceil' );\nvar isNumber = require( '@stdlib/assert/is-number' ).isPrimitive;\nvar isnan = require( '@stdlib/math/base/assert/is-nan' );\nvar format = require( '@stdlib/string/format' );\nvar MAX_LENGTH = require( '@stdlib/constants/uint32/max' );\nvar gen = require( './../../base/incrspace' );\n\n\n// MAIN //\n\n/**\n* Generates a linearly spaced numeric array using a provided increment.\n*\n* @param {number} x1 - first array value\n* @param {number} x2 - array element bound\n* @param {number} [increment=1] - increment\n* @throws {TypeError} first argument must be numeric\n* @throws {TypeError} second argument must be numeric\n* @throws {TypeError} third argument must be numeric\n* @throws {RangeError} length of created array must be less than `4294967295` (`2**32 - 1`)\n* @returns {Array} linearly spaced numeric array\n*\n* @example\n* var arr = incrspace( 0, 11, 2 );\n* // returns [ 0, 2, 4, 6, 8, 10 ]\n*/\nfunction incrspace( x1, x2, increment ) {\n\tvar len;\n\tvar inc;\n\tif ( !isNumber( x1 ) || isnan( x1 ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Start must be numeric. Value: `%s`.', x1 ) );\n\t}\n\tif ( !isNumber( x2 ) || isnan( x2 ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Stop must be numeric. Value: `%s`.', x2 ) );\n\t}\n\tif ( arguments.length < 3 ) {\n\t\tinc = 1;\n\t} else {\n\t\tinc = increment;\n\t\tif ( !isNumber( inc ) || isnan( inc ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Increment must be numeric. Value: `%s`.', inc ) );\n\t\t}\n\t}\n\tlen = ceil( ( x2-x1 ) / inc );\n\tif ( len > MAX_LENGTH ) {\n\t\tthrow new RangeError( 'invalid arguments. Generated array exceeds maximum array length.' );\n\t}\n\treturn gen( x1, x2, inc );\n}\n\n\n// EXPORTS //\n\nmodule.exports = incrspace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Generate a linearly spaced numeric array using a provided increment.\n*\n* @module @stdlib/array/incrspace\n*\n* @example\n* var incrspace = require( '@stdlib/array/incrspace' );\n*\n* var arr = incrspace( 0, 11, 2 );\n* // returns [ 0, 2, 4, 6, 8, 10 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Float64Array = require( './../../float64' );\nvar Float32Array = require( './../../float32' );\nvar Complex128Array = require( './../../complex128' );\nvar Complex64Array = require( './../../complex64' );\n\n\n// MAIN //\n\n// Mapping from data types to constructors...\nvar ctors = {\n\t'float64': Float64Array,\n\t'float32': Float32Array,\n\t'complex128': Complex128Array,\n\t'complex64': Complex64Array\n};\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar table = require( './ctors.js' );\n\n\n// MAIN //\n\n/**\n* Returns a floating-point typed array constructor.\n*\n* @param {string} dtype - data type\n* @returns {(Function|null)} constructor or null\n*\n* @example\n* var ctor = ctors( 'float64' );\n* // returns <Function>\n*\n* @example\n* var ctor = ctors( 'float' );\n* // returns null\n*/\nfunction ctors( dtype ) {\n\treturn table[ dtype ] || null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Floating-point typed array constructors.\n*\n* @module @stdlib/array/typed-float-ctors\n*\n* @example\n* var ctors = require( '@stdlib/array/typed-float-ctors' );\n*\n* var ctor = ctors( 'float64' );\n* // returns <Function>\n*\n* ctor = ctors( 'int' );\n* // returns null\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Generates a linearly spaced array over a specified interval.\n*\n* @private\n* @param {number} start - start of interval\n* @param {number} stop - end of interval\n* @param {NonNegativeInteger} len - length of output array\n* @param {boolean} endpoint - boolean indicating whether to include `stop` in the output array\n* @returns {Array} linearly spaced array\n*\n* @example\n* var arr = linspace( 0, 100, 6, true );\n* // returns [ 0, 20, 40, 60, 80, 100 ]\n*\n* @example\n* var arr = linspace( 0, 100, 5, false );\n* // returns [ 0, 20, 40, 60, 80 ]\n*/\nfunction linspace( start, stop, len, endpoint ) {\n\tvar arr;\n\tvar N;\n\tvar d;\n\tvar i;\n\n\tif ( len === 0 ) {\n\t\treturn [];\n\t}\n\t// Set the first value:\n\tif ( len === 1 ) {\n\t\tif ( endpoint ) {\n\t\t\treturn [ stop ];\n\t\t}\n\t\treturn [ start ];\n\t}\n\tarr = [ start ];\n\n\t// Calculate the increment:\n\tif ( endpoint ) {\n\t\tN = len - 1;\n\t} else {\n\t\tN = len;\n\t}\n\td = ( stop-start ) / N;\n\n\t// Generate linearly spaced values:\n\tfor ( i = 1; i < N; i++ ) {\n\t\tarr.push( start + (d*i) );\n\t}\n\t// Check whether to include the `stop` value in the output array:\n\tif ( endpoint ) {\n\t\tarr.push( stop );\n\t}\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = linspace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Complex64 = require( '@stdlib/complex/float32' );\nvar Complex128 = require( '@stdlib/complex/float64' );\nvar real = require( '@stdlib/complex/real' );\nvar imag = require( '@stdlib/complex/imag' );\nvar realf = require( '@stdlib/complex/realf' );\nvar imagf = require( '@stdlib/complex/imagf' );\n\n\n// MAIN //\n\n/**\n* Generates a linearly spaced complex number array over a specified interval.\n*\n* @private\n* @param {string} dt1 - start value data type\n* @param {(number|ComplexLike)} start - start of interval\n* @param {string} dt2 - stop value data type\n* @param {(number|ComplexLike)} stop - end of interval\n* @param {NonNegativeInteger} len - length of output array\n* @param {boolean} endpoint - boolean indicating whether to include `stop` in the output array\n* @returns {Array} linearly spaced array\n*/\nfunction linspace( dt1, start, dt2, stop, len, endpoint ) {\n\tvar cmplx;\n\tvar isf32;\n\tvar arr;\n\tvar re1;\n\tvar re2;\n\tvar im1;\n\tvar im2;\n\tvar re;\n\tvar im;\n\tvar dr;\n\tvar di;\n\tvar N;\n\tvar i;\n\n\tif ( len === 0 ) {\n\t\treturn [];\n\t}\n\tisf32 = 0;\n\tif ( dt1 === 'float64' ) {\n\t\tre1 = start;\n\t\tim1 = 0.0;\n\t} else if ( dt1 === 'complex64' ) {\n\t\tisf32 += 1;\n\t\tre1 = realf( start );\n\t\tim1 = imagf( start );\n\t} else {\n\t\tre1 = real( start );\n\t\tim1 = imag( start );\n\t}\n\tif ( dt2 === 'float64' ) {\n\t\tre2 = stop;\n\t\tim2 = 0.0;\n\t} else if ( dt2 === 'complex64' ) {\n\t\tisf32 += 1;\n\t\tre2 = realf( stop );\n\t\tim2 = imagf( stop );\n\t} else {\n\t\tre2 = real( stop );\n\t\tim2 = imag( stop );\n\t}\n\t// Determine which complex number constructor to use according to type promotion rules:\n\tif ( isf32 === 2 ) {\n\t\tcmplx = Complex64;\n\t} else {\n\t\tcmplx = Complex128;\n\t}\n\t// Set the first value:\n\tif ( len === 1 ) {\n\t\tif ( endpoint ) {\n\t\t\treturn [ new cmplx( re2, im2 ) ];\n\t\t}\n\t\treturn [ new cmplx( re1, im1 ) ];\n\t}\n\tarr = [ new cmplx( re1, im1 ) ];\n\n\t// Calculate the increments:\n\tif ( endpoint ) {\n\t\tN = len - 1;\n\t} else {\n\t\tN = len;\n\t}\n\tdr = ( re2-re1 ) / N;\n\tdi = ( im2-im1 ) / N;\n\n\t// Generate linearly spaced values:\n\tfor ( i = 1; i < N; i++ ) {\n\t\tre = re1 + (dr*i);\n\t\tim = im1 + (di*i);\n\t\tarr.push( new cmplx( re, im ) );\n\t}\n\t// Check whether to include the `stop` value in the output array:\n\tif ( endpoint ) {\n\t\tarr.push( new cmplx( re2, im2 ) );\n\t}\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = linspace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Generates a linearly spaced sequence over a specified interval and assigns the results to a provided output array.\n*\n* @private\n* @param {TypedArray} out - output array\n* @param {number} start - start of interval\n* @param {number} stop - end of interval\n* @param {NonNegativeInteger} len - length of output array\n* @param {boolean} endpoint - boolean indicating whether to include `stop` in the output array\n* @returns {TypedArray} linearly spaced array\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var out = new Float64Array( 6 );\n* var arr = linspace( out, 0, 100, out.length, true );\n* // returns <Float64Array>[ 0.0, 20.0, 40.0, 60.0, 80.0, 100.0 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var out = new Float64Array( 5 );\n* var arr = linspace( out, 0, 100, out.length, false );\n* // returns <Float64Array>[ 0.0, 20.0, 40.0, 60.0, 80.0 ]\n*/\nfunction linspace( out, start, stop, len, endpoint ) {\n\tvar N;\n\tvar d;\n\tvar i;\n\n\tif ( len === 0 ) {\n\t\treturn out;\n\t}\n\t// Set the first value:\n\tif ( len === 1 ) {\n\t\tif ( endpoint ) {\n\t\t\tout[ 0 ] = stop;\n\t\t} else {\n\t\t\tout[ 0 ] = start;\n\t\t}\n\t\treturn out;\n\t}\n\tout[ 0 ] = start;\n\n\t// Calculate the increment:\n\tif ( endpoint ) {\n\t\tN = len - 1;\n\t} else {\n\t\tN = len;\n\t}\n\td = ( stop-start ) / N;\n\n\t// Generate linearly spaced values:\n\tfor ( i = 1; i < N; i++ ) {\n\t\tout[ i ] = start + (d*i);\n\t}\n\t// Check whether to include the `stop` value in the output array:\n\tif ( endpoint ) {\n\t\tout[ N ] = stop;\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = linspace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar real = require( '@stdlib/complex/real' );\nvar imag = require( '@stdlib/complex/imag' );\nvar realf = require( '@stdlib/complex/realf' );\nvar imagf = require( '@stdlib/complex/imagf' );\n\n\n// MAIN //\n\n/**\n* Generates a linearly spaced complex number sequence over a specified interval and assigns the results to a provided output array strided view.\n*\n* @private\n* @param {(Float32Array|Float64Array)} out - output array strided view\n* @param {string} dt1 - start value data type\n* @param {(number|ComplexLike)} start - start of interval\n* @param {string} dt2 - stop value data type\n* @param {(number|ComplexLike)} stop - end of interval\n* @param {NonNegativeInteger} len - length of output array\n* @param {boolean} endpoint - boolean indicating whether to include `stop` in the output array\n* @returns {(Float32Array|Float64Array)} complex number array view\n*/\nfunction linspace( out, dt1, start, dt2, stop, len, endpoint ) {\n\tvar re1;\n\tvar re2;\n\tvar im1;\n\tvar im2;\n\tvar dr;\n\tvar di;\n\tvar N;\n\tvar i;\n\tvar j;\n\n\tif ( len === 0 ) {\n\t\treturn out;\n\t}\n\tif ( dt1 === 'float64' ) {\n\t\tre1 = start;\n\t\tim1 = 0.0;\n\t} else if ( dt1 === 'complex64' ) {\n\t\tre1 = realf( start );\n\t\tim1 = imagf( start );\n\t} else {\n\t\tre1 = real( start );\n\t\tim1 = imag( start );\n\t}\n\tif ( dt2 === 'float64' ) {\n\t\tre2 = stop;\n\t\tim2 = 0.0;\n\t} else if ( dt2 === 'complex64' ) {\n\t\tre2 = realf( stop );\n\t\tim2 = imagf( stop );\n\t} else {\n\t\tre2 = real( stop );\n\t\tim2 = imag( stop );\n\t}\n\t// Set the first value:\n\tif ( len === 1 ) {\n\t\tif ( endpoint ) {\n\t\t\tout[ 0 ] = re2;\n\t\t\tout[ 1 ] = im2;\n\t\t} else {\n\t\t\tout[ 0 ] = re1;\n\t\t\tout[ 1 ] = im1;\n\t\t}\n\t\treturn out;\n\t}\n\tout[ 0 ] = re1;\n\tout[ 1 ] = im1;\n\n\t// Calculate the increments:\n\tif ( endpoint ) {\n\t\tN = len - 1;\n\t} else {\n\t\tN = len;\n\t}\n\tdr = ( re2-re1 ) / N;\n\tdi = ( im2-im1 ) / N;\n\n\t// Generate linearly spaced complex numbers:\n\tj = 2;\n\tfor ( i = 1; i < N; i++ ) {\n\t\tout[ j ] = re1 + (dr*i);\n\t\tout[ j+1 ] = im1 + (di*i);\n\t\tj += 2;\n\t}\n\t// Check whether to include the `stop` value in the output array:\n\tif ( endpoint ) {\n\t\tout[ j ] = re2;\n\t\tout[ j+1 ] = im2;\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = linspace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive;\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Validates function options.\n*\n* @private\n* @param {Object} opts - destination object\n* @param {Options} options - function options\n* @param {string} [options.dtype] - output array data type\n* @param {boolean} [options.endpoint] - boolean indicating whether the `stop` value in the output array\n* @returns {(Error|null)} null or an error object\n*\n* @example\n* var opts = {};\n* var options = {\n*     'endpoint': true\n* };\n* var err = validate( opts, options );\n* if ( err ) {\n*     throw err;\n* }\n*/\nfunction validate( opts, options ) {\n\tif ( !isObject( options ) ) {\n\t\treturn new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t}\n\tif ( hasOwnProp( options, 'dtype' ) ) {\n\t\topts.dtype = options.dtype;\n\t\tif ( !isString( opts.dtype ) ) {\n\t\t\treturn new TypeError( format( 'invalid option. `%s` option must be a string. Option: `%s`.', 'dtype', opts.dtype ) );\n\t\t}\n\t}\n\tif ( hasOwnProp( options, 'endpoint' ) ) {\n\t\topts.endpoint = options.endpoint;\n\t\tif ( !isBoolean( opts.endpoint ) ) {\n\t\t\treturn new TypeError( format( 'invalid option. `%s` option must be a boolean. Option: `%s`.', 'endpoint', opts.endpoint ) );\n\t\t}\n\t}\n\treturn null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = validate;\n", "{\n    \"endpoint\": true\n}\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isComplexLike = require( '@stdlib/assert/is-complex-like' );\nvar isNumber = require( '@stdlib/assert/is-number' ).isPrimitive;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isnan = require( '@stdlib/math/base/assert/is-nan' );\nvar dtype = require( '@stdlib/complex/dtype' );\nvar ctors = require( './../../typed-float-ctors' );\nvar reinterpret64 = require( '@stdlib/strided/base/reinterpret-complex64' );\nvar reinterpret128 = require( '@stdlib/strided/base/reinterpret-complex128' );\nvar format = require( '@stdlib/string/format' );\nvar genreal = require( './generic_real.js' );\nvar gencmplx = require( './generic_complex.js' );\nvar typedreal = require( './typed_real.js' );\nvar typedcmplx = require( './typed_complex.js' );\nvar validate = require( './validate.js' );\nvar defaults = require( './defaults.json' );\n\n\n// MAIN //\n\n/**\n* Generates a linearly spaced array over a specified interval.\n*\n* @param {(number|ComplexLike)} start - start of interval\n* @param {(number|ComplexLike)} stop - end of interval\n* @param {NonNegativeInteger} len - length of output array\n* @param {Options} [options] - options\n* @param {string} [options.dtype] - output array data type\n* @param {boolean} [options.endpoint=true] - boolean indicating whether to include the `stop` value in the output array\n* @throws {TypeError} first argument must be either a real or complex number\n* @throws {TypeError} second argument must be either a real or complex number\n* @throws {TypeError} third argument must be a nonnegative integer\n* @throws {TypeError} last argument must be an object\n* @throws {TypeError} must provide valid options\n* @throws {TypeError} the output array data type must be a complex number data type or \"generic\" when either `start` or `stop` is a complex number\n* @throws {TypeError} the output array data type must be a real or complex floating-point number data type or \"generic\"\n* @returns {(Array|TypedArray|ComplexArray)} linearly spaced array\n*\n* @example\n* var arr = linspace( 0, 100, 6, {\n*     'dtype': 'generic'\n* });\n* // returns [ 0, 20, 40, 60, 80, 100 ]\n*/\nfunction linspace( start, stop, len ) {\n\tvar opts;\n\tvar ctor;\n\tvar err;\n\tvar out;\n\tvar dt1;\n\tvar dt2;\n\tvar flg;\n\n\tif ( typeof start === 'object' ) {\n\t\tdt1 = dtype( start );\n\t\tif ( dt1 === null ) {\n\t\t\tif ( !isComplexLike( start ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. First argument must be either a real or complex number. Value: `%s`.', start ) );\n\t\t\t}\n\t\t\tdt1 = 'complex128';\n\t\t}\n\t\tflg = true;\n\t} else if ( !isNumber( start ) || isnan( start ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be either a real or complex number. Value: `%s`.', start ) );\n\t} else {\n\t\tdt1 = 'float64';\n\t}\n\tif ( typeof stop === 'object' ) {\n\t\tdt2 = dtype( stop );\n\t\tif ( dt2 === null ) {\n\t\t\tif ( !isComplexLike( stop ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be either a real or complex number. Value: `%s`.', stop ) );\n\t\t\t}\n\t\t\tdt2 = 'complex128';\n\t\t}\n\t\tflg = true;\n\t} else if ( !isNumber( stop ) || isnan( stop ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be either a real or complex number. Value: `%s`.', stop ) );\n\t} else {\n\t\tdt2 = 'float64';\n\t}\n\tif ( !isNonNegativeInteger( len ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a nonnegative integer. Value: `%s`.', len ) );\n\t}\n\topts = {\n\t\t'endpoint': defaults.endpoint\n\t};\n\tif ( dt1 === dt2 ) {\n\t\topts.dtype = dt1; // one of 'float64' || 'complex64' || 'complex128'\n\t} else {\n\t\t// If dtypes are different, then at least one is a complex number. According to type promotion rules, for all possible dtype permutations, the default output data type should be 'complex128'...\n\t\topts.dtype = 'complex128';\n\t}\n\tif ( arguments.length > 3 ) {\n\t\terr = validate( opts, arguments[ 3 ] );\n\t\tif ( err ) {\n\t\t\tthrow err;\n\t\t}\n\t}\n\tif ( opts.dtype === 'generic' ) {\n\t\tif ( flg ) {\n\t\t\treturn gencmplx( dt1, start, dt2, stop, len, opts.endpoint );\n\t\t}\n\t\treturn genreal( start, stop, len, opts.endpoint );\n\t}\n\tctor = ctors( opts.dtype );\n\tif ( ctor === null ) {\n\t\tthrow new TypeError( format( 'invalid option. `%s` option must be a real or complex floating-point data type or \"generic\". Option: `%s`.', 'dtype', opts.dtype ) );\n\t}\n\tout = new ctor( len );\n\tif ( opts.dtype === 'complex64' ) {\n\t\ttypedcmplx( reinterpret64( out, 0 ), dt1, start, dt2, stop, len, opts.endpoint ); // eslint-disable-line max-len\n\t\treturn out;\n\t}\n\tif ( opts.dtype === 'complex128' ) {\n\t\ttypedcmplx( reinterpret128( out, 0 ), dt1, start, dt2, stop, len, opts.endpoint ); // eslint-disable-line max-len\n\t\treturn out;\n\t}\n\tif ( flg ) {\n\t\tthrow new TypeError( 'invalid arguments. If either of the first two arguments are complex numbers, the output array data type must be a complex number data type or \"generic\".' );\n\t}\n\treturn typedreal( out, start, stop, len, opts.endpoint );\n}\n\n\n// EXPORTS //\n\nmodule.exports = linspace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Complex64 = require( '@stdlib/complex/float32' );\nvar Complex128 = require( '@stdlib/complex/float64' );\nvar real = require( '@stdlib/complex/real' );\nvar imag = require( '@stdlib/complex/imag' );\nvar realf = require( '@stdlib/complex/realf' );\nvar imagf = require( '@stdlib/complex/imagf' );\n\n\n// MAIN //\n\n/**\n* Generates a linearly spaced complex number sequence over a specified interval and assigns results to a provided output array.\n*\n* @private\n* @param {Object} out - output array object\n* @param {ArrayLikeObject} out.data - output array data\n* @param {Array<Function>} out.accessors - array element accessors\n* @param {string} dt1 - start value data type\n* @param {ComplexLike} start - start of interval\n* @param {string} dt2 - stop value data type\n* @param {ComplexLike} stop - end of interval\n* @param {NonNegativeInteger} len - length of output array\n* @param {boolean} endpoint - boolean indicating whether to include `stop` in the output array\n* @returns {Object} output array object\n*/\nfunction linspace( out, dt1, start, dt2, stop, len, endpoint ) {\n\tvar cmplx;\n\tvar isf32;\n\tvar re1;\n\tvar re2;\n\tvar im1;\n\tvar im2;\n\tvar set;\n\tvar buf;\n\tvar re;\n\tvar im;\n\tvar dr;\n\tvar di;\n\tvar N;\n\tvar i;\n\n\tif ( len === 0 ) {\n\t\treturn out;\n\t}\n\tisf32 = 0;\n\tif ( dt1 === 'float64' ) {\n\t\tre1 = start;\n\t\tim1 = 0.0;\n\t} else if ( dt1 === 'complex64' ) {\n\t\tisf32 += 1;\n\t\tre1 = realf( start );\n\t\tim1 = imagf( start );\n\t} else {\n\t\tre1 = real( start );\n\t\tim1 = imag( start );\n\t}\n\tif ( dt2 === 'float64' ) {\n\t\tre2 = stop;\n\t\tim2 = 0.0;\n\t} else if ( dt2 === 'complex64' ) {\n\t\tisf32 += 1;\n\t\tre2 = realf( stop );\n\t\tim2 = imagf( stop );\n\t} else {\n\t\tre2 = real( stop );\n\t\tim2 = imag( stop );\n\t}\n\t// Determine which complex number constructor to use according to type promotion rules:\n\tif ( isf32 === 2 ) {\n\t\tcmplx = Complex64;\n\t} else {\n\t\tcmplx = Complex128;\n\t}\n\t// Cache array object references:\n\tbuf = out.data;\n\tset = out.accessors[ 1 ];\n\n\t// Set the first value:\n\tif ( len === 1 ) {\n\t\tif ( endpoint ) {\n\t\t\tset( buf, 0, new cmplx( re2, im2 ) );\n\t\t} else {\n\t\t\tset( buf, 0, new cmplx( re1, im1 ) );\n\t\t}\n\t\treturn out;\n\t}\n\tset( buf, 0, new cmplx( re1, im1 ) );\n\n\t// Calculate the increments:\n\tif ( endpoint ) {\n\t\tN = len - 1;\n\t} else {\n\t\tN = len;\n\t}\n\tdr = ( re2-re1 ) / N;\n\tdi = ( im2-im1 ) / N;\n\n\t// Generate the linearly spaced values:\n\tfor ( i = 1; i < N; i++ ) {\n\t\tre = re1 + (dr*i);\n\t\tim = im1 + (di*i);\n\t\tset( buf, i, new cmplx( re, im ) );\n\t}\n\t// Check whether to include the `stop` value in the output array:\n\tif ( endpoint ) {\n\t\tset( buf, N, new cmplx( re2, im2 ) );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = linspace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Generates a linearly spaced sequence over a specified interval and assigns results to a provided output array.\n*\n* @private\n* @param {Object} out - output array object\n* @param {ArrayLikeObject} out.data - output array data\n* @param {Array<Function>} out.accessors - array element accessors\n* @param {number} start - start of interval\n* @param {number} stop - end of interval\n* @param {NonNegativeInteger} len - length of output array\n* @param {boolean} endpoint - boolean indicating whether to include `stop` in the output array\n* @returns {Object} output array object\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* function set( buf, i, v ) {\n*     buf[ i ] = v * 2.0;\n* }\n*\n* var out = new Float64Array( 6 );\n* var obj = {\n*     'data': out,\n*     'accessors': [ null, set ]\n* };\n* linspace( obj, 0, 100, out.length, true );\n*\n* var arr = obj.data;\n* // returns <Float64Array>[ 0.0, 40.0, 80.0, 120.0, 160.0, 200.0 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* function set( buf, i, v ) {\n*     buf[ i ] = v * 2.0;\n* }\n*\n* var out = new Float64Array( 5 );\n* var obj = {\n*     'data': out,\n*     'accessors': [ null, set ]\n* };\n* linspace( obj, 0, 100, out.length, false );\n*\n* var arr = obj.data;\n* // returns <Float64Array>[ 0.0, 40.0, 80.0, 120.0, 160.0 ]\n*/\nfunction linspace( out, start, stop, len, endpoint ) {\n\tvar buf;\n\tvar set;\n\tvar N;\n\tvar d;\n\tvar i;\n\n\tif ( len === 0 ) {\n\t\treturn out;\n\t}\n\t// Cache array object references:\n\tbuf = out.data;\n\tset = out.accessors[ 1 ];\n\n\t// Set the first value:\n\tif ( len === 1 ) {\n\t\tif ( endpoint ) {\n\t\t\tset( buf, 0, stop );\n\t\t} else {\n\t\t\tset( buf, 0, start );\n\t\t}\n\t\treturn out;\n\t}\n\tset( buf, 0, start );\n\n\t// Calculate the increment:\n\tif ( endpoint ) {\n\t\tN = len - 1;\n\t} else {\n\t\tN = len;\n\t}\n\td = ( stop-start ) / N;\n\n\t// Generate linearly spaced values:\n\tfor ( i = 1; i < N; i++ ) {\n\t\tset( buf, i, start + (d*i) );\n\t}\n\t// Check whether to include the `stop` value in the output array:\n\tif ( endpoint ) {\n\t\tset( buf, N, stop );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = linspace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isComplexLike = require( '@stdlib/assert/is-complex-like' );\nvar isNumber = require( '@stdlib/assert/is-number' ).isPrimitive;\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar format = require( '@stdlib/string/format' );\nvar isnan = require( '@stdlib/math/base/assert/is-nan' );\nvar dtype = require( '@stdlib/complex/dtype' );\nvar adtype = require( './../../dtype' );\nvar reinterpret64 = require( '@stdlib/strided/base/reinterpret-complex64' );\nvar reinterpret128 = require( '@stdlib/strided/base/reinterpret-complex128' );\nvar arraylike2object = require( './../../base/arraylike2object' );\nvar acccmplx = require( './accessors_complex.js' );\nvar accreal = require( './accessors_real.js' );\nvar typedcmplx = require( './typed_complex.js' );\nvar typedreal = require( './typed_real.js' );\nvar validate = require( './validate.js' );\nvar defaults = require( './defaults.json' );\n\n\n// MAIN //\n\n/**\n* Generates a linearly spaced sequence over a specified interval and assigns the results to a provided output array.\n*\n* @param {(number|ComplexLike)} start - start of interval\n* @param {(number|ComplexLike)} stop - end of interval\n* @param {Collection} out - output array\n* @param {Options} [options] - options\n* @param {boolean} [options.endpoint=true] - boolean indicating whether to include the `stop` value in the output array\n* @throws {TypeError} first argument must be either a real or complex number\n* @throws {TypeError} second argument must be either a real or complex number\n* @throws {TypeError} third argument must be an array-like object\n* @throws {TypeError} last argument must be an object\n* @throws {TypeError} must provide valid options\n* @throws {TypeError} the output array data type must be a complex number data type or \"generic\" when either `start` or `stop` is a complex number\n* @returns {Collection} output array\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var out = new Float64Array( 6 );\n* var arr = linspace( 0, 100, out );\n* // returns <Float64Array>[ 0.0, 20.0, 40.0, 60.0, 80.0, 100.0 ]\n*/\nfunction linspace( start, stop, out ) {\n\tvar opts;\n\tvar err;\n\tvar dt1;\n\tvar dt2;\n\tvar flg;\n\tvar odt;\n\tvar o;\n\n\tif ( typeof start === 'object' ) {\n\t\tdt1 = dtype( start );\n\t\tif ( dt1 === null ) {\n\t\t\tif ( !isComplexLike( start ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. First argument must be either a real or complex number. Value: `%s`.', start ) );\n\t\t\t}\n\t\t\tdt1 = 'complex128';\n\t\t}\n\t\tflg = true;\n\t} else if ( !isNumber( start ) || isnan( start ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be either a real or complex number. Value: `%s`.', start ) );\n\t} else {\n\t\tdt1 = 'float64';\n\t}\n\tif ( typeof stop === 'object' ) {\n\t\tdt2 = dtype( stop );\n\t\tif ( dt2 === null ) {\n\t\t\tif ( !isComplexLike( stop ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be either a real or complex number. Value: `%s`.', stop ) );\n\t\t\t}\n\t\t\tdt2 = 'complex128';\n\t\t}\n\t\tflg = true;\n\t} else if ( !isNumber( stop ) || isnan( stop ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be either a real or complex number. Value: `%s`.', stop ) );\n\t} else {\n\t\tdt2 = 'float64';\n\t}\n\tif ( !isCollection( out ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Third argument must be an array-like object. Value: `%s`.', out ) );\n\t}\n\topts = {\n\t\t'endpoint': defaults.endpoint\n\t};\n\tif ( arguments.length > 3 ) {\n\t\terr = validate( opts, arguments[ 3 ] );\n\t\tif ( err ) {\n\t\t\tthrow err;\n\t\t}\n\t}\n\todt = adtype( out );\n\tif ( odt === null ) {\n\t\todt = 'generic';\n\t}\n\tif ( odt === 'complex64' ) {\n\t\ttypedcmplx( reinterpret64( out, 0 ), dt1, start, dt2, stop, out.length, opts.endpoint ); // eslint-disable-line max-len\n\t\treturn out;\n\t}\n\tif ( odt === 'complex128' ) {\n\t\ttypedcmplx( reinterpret128( out, 0 ), dt1, start, dt2, stop, out.length, opts.endpoint ); // eslint-disable-line max-len\n\t\treturn out;\n\t}\n\tif ( flg ) {\n\t\tif ( odt === 'generic' ) {\n\t\t\to = arraylike2object( out );\n\t\t\tacccmplx( o, dt1, start, dt2, stop, out.length, opts.endpoint );\n\t\t\treturn out;\n\t\t}\n\t\tthrow new TypeError( 'invalid arguments. If either of the first two arguments are complex numbers, the output array must be a complex number array or a \"generic\" array-like object.' );\n\t}\n\to = arraylike2object( out );\n\tif ( o.accessorProtocol ) {\n\t\taccreal( o, start, stop, out.length, opts.endpoint );\n\t\treturn out;\n\t}\n\ttypedreal( out, start, stop, out.length, opts.endpoint );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = linspace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Generate a linearly spaced array.\n*\n* @module @stdlib/array/linspace\n*\n* @example\n* var linspace = require( '@stdlib/array/linspace' );\n*\n* var arr = linspace( 0, 100, 6 );\n* // returns <Float64Array>[ 0.0, 20.0, 40.0, 60.0, 80.0, 100.0 ]\n*\n* @example\n* var linspace = require( '@stdlib/array/linspace' );\n*\n* var arr = linspace( 0, 100, 5, {\n*     'endpoint': false\n* });\n* // returns <Float64Array>[ 0.0, 20.0, 40.0, 60.0, 80.0 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var linspace = require( '@stdlib/array/linspace' );\n*\n* var arr = new Float64Array( 6 );\n* var out = linspace.assign( 0, 100, out );\n* // returns <Float64Array>[ 0.0, 20.0, 40.0, 60.0, 80.0, 100.0 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var linspace = require( '@stdlib/array/linspace' );\n*\n* var arr = new Float64Array( 5 );\n* var out = linspace.assign( 0, 100, out, {\n*     'endpoint': false\n* });\n* // returns <Float64Array>[ 0.0, 20.0, 40.0, 60.0, 80.0 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNumber = require( '@stdlib/assert/is-number' ).isPrimitive;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar format = require( '@stdlib/string/format' );\nvar isnan = require( '@stdlib/math/base/assert/is-nan' );\nvar gen = require( './../../base/logspace' );\n\n\n// MAIN //\n\n/**\n* Generates a logarithmically spaced numeric array.\n*\n* @param {number} a - exponent of start value\n* @param {number} b - exponent of end value\n* @param {NonNegativeInteger} [len=10] - length of output array\n* @throws {TypeError} first argument must be numeric\n* @throws {TypeError} second argument must be numeric\n* @throws {TypeError} third argument must be a nonnegative integer\n* @returns {Array} logarithmically spaced numeric array\n*\n* @example\n* var arr = logspace( 0, 2, 6 );\n* // returns [ 1, ~2.5, ~6.31, ~15.85, ~39.81, 100 ]\n*/\nfunction logspace( a, b, len ) {\n\tif ( !isNumber( a ) || isnan( a ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Exponent of start value must be numeric. Value: `%s`.', a ) );\n\t}\n\tif ( !isNumber( b ) || isnan( b ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Exponent of stop value must be numeric. Value: `%s`.', b ) );\n\t}\n\tif ( arguments.length < 3 ) {\n\t\tlen = 10;\n\t} else if ( !isNonNegativeInteger( len ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Length must be a nonnegative integer. Value: `%s`.', len ) );\n\t}\n\treturn gen( a, b, len );\n}\n\n\n// EXPORTS //\n\nmodule.exports = logspace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Generate a logarithmically spaced numeric array.\n*\n* @module @stdlib/array/logspace\n*\n* @example\n* var logspace = require( '@stdlib/array/logspace' );\n*\n* var arr = logspace( 0, 2, 6 );\n* // returns [ 1, ~2.5, ~6.31, ~15.85, ~39.81, 100 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isInteger = require( '@stdlib/math/base/assert/is-integer' );\nvar isNegativeZero = require( '@stdlib/math/base/assert/is-negative-zero' );\nvar isComplexLike = require( '@stdlib/assert/is-complex-like' );\nvar PINF = require( '@stdlib/constants/float64/pinf' );\nvar NINF = require( '@stdlib/constants/float64/ninf' );\nvar FLOAT32_SMALLEST_SUBNORMAL = require( '@stdlib/constants/float32/smallest-subnormal' ); // eslint-disable-line id-length\nvar FLOAT32_MAX_SAFE_INTEGER = require( '@stdlib/constants/float32/max-safe-integer' );\nvar FLOAT32_MIN_SAFE_INTEGER = require( '@stdlib/constants/float32/min-safe-integer' );\nvar INT8_MIN = require( '@stdlib/constants/int8/min' );\nvar INT16_MIN = require( '@stdlib/constants/int16/min' );\nvar INT32_MIN = require( '@stdlib/constants/int32/min' );\nvar UINT8_MAX = require( '@stdlib/constants/uint8/max' );\nvar UINT16_MAX = require( '@stdlib/constants/uint16/max' );\nvar UINT32_MAX = require( '@stdlib/constants/uint32/max' );\n\n\n// FUNCTIONS //\n\n/**\n* Returns the minimum floating-point array data type of the closest \"kind\" necessary for storing a provided scalar.\n*\n* @private\n* @param {number} value - real value\n* @returns {string} array data type\n*/\nfunction minFloatDataType( value ) {\n\tif ( value !== value || value === PINF || value === NINF ) {\n\t\treturn 'float32';\n\t}\n\tif ( isInteger( value ) ) {\n\t\tif ( value >= FLOAT32_MIN_SAFE_INTEGER && value <= FLOAT32_MAX_SAFE_INTEGER ) { // eslint-disable-line max-len\n\t\t\treturn 'float32';\n\t\t}\n\t\treturn 'float64';\n\t}\n\t// Assume that if we are provided a tiny value, we don't want to underflow to zero by storing as `float32`...\n\tif (\n\t\tvalue > -FLOAT32_SMALLEST_SUBNORMAL &&\n\t\tvalue < FLOAT32_SMALLEST_SUBNORMAL\n\t) {\n\t\treturn 'float64';\n\t}\n\t// Any number which reaches this point is less than the maximum single-precision floating-point number, as floating-point format supports a limited number of decimals (e.g., (1.0+EPS)*10**15 => 1000000000000000.2, which is less than ~3.4e38)...\n\treturn 'float32';\n}\n\n\n// MAIN //\n\n/**\n* Returns the minimum array data type of the closest \"kind\" necessary for storing a provided scalar value.\n*\n* @param {*} value - scalar value\n* @returns {string} array data type\n*\n* @example\n* var dt = minDataType( 3.141592653589793 );\n* // returns 'float32'\n*\n* @example\n* var dt = minDataType( 3 );\n* // returns 'uint8'\n*/\nfunction minDataType( value ) {\n\tif ( typeof value !== 'number' ) {\n\t\tif ( isComplexLike( value ) ) {\n\t\t\tif ( minFloatDataType( value.re ) === 'float64' || minFloatDataType( value.im ) === 'float64' ) {\n\t\t\t\treturn 'complex128';\n\t\t\t}\n\t\t\treturn 'complex64';\n\t\t}\n\t\treturn 'generic';\n\t}\n\tif ( value !== value || value === PINF || value === NINF ) {\n\t\treturn 'float32';\n\t}\n\tif ( isInteger( value ) ) {\n\t\tif ( value === 0 && isNegativeZero( value ) ) {\n\t\t\treturn 'float32';\n\t\t}\n\t\tif ( value < 0 ) {\n\t\t\tif ( value >= INT8_MIN ) {\n\t\t\t\treturn 'int8';\n\t\t\t}\n\t\t\tif ( value >= INT16_MIN ) {\n\t\t\t\treturn 'int16';\n\t\t\t}\n\t\t\tif ( value >= INT32_MIN ) {\n\t\t\t\treturn 'int32';\n\t\t\t}\n\t\t\treturn 'float64';\n\t\t}\n\t\tif ( value <= UINT8_MAX ) {\n\t\t\treturn 'uint8';\n\t\t}\n\t\tif ( value <= UINT16_MAX ) {\n\t\t\treturn 'uint16';\n\t\t}\n\t\tif ( value <= UINT32_MAX ) {\n\t\t\treturn 'uint32';\n\t\t}\n\t\treturn 'float64';\n\t}\n\t// Assume that if we are provided a tiny value, we don't want to underflow to zero by storing as `float32`...\n\tif (\n\t\tvalue > -FLOAT32_SMALLEST_SUBNORMAL &&\n\t\tvalue < FLOAT32_SMALLEST_SUBNORMAL\n\t) {\n\t\treturn 'float64';\n\t}\n\t// Any number which reaches this point is less than the maximum single-precision floating-point number, as floating-point format supports a limited number of decimals (e.g., (1.0+EPS)*10**15 => 1000000000000000.2, which is less than ~3.4e38)...\n\treturn 'float32';\n}\n\n\n// EXPORTS //\n\nmodule.exports = minDataType;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Determine the minimum array data type of the closest \"kind\" necessary for storing a provided scalar value.\n*\n* @module @stdlib/array/min-dtype\n*\n* @example\n* var minDataType = require( '@stdlib/array/min-dtype' );\n*\n* var dt = minDataType( 3.141592653589793 );\n* // returns 'float32'\n*\n* dt = minDataType( 3 );\n* // returns 'uint8'\n*/\n\n// MODULES //\n\nvar minDataType = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = minDataType;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Complex128 = require( '@stdlib/complex/float64' );\nvar Complex64 = require( '@stdlib/complex/float32' );\nvar full = require( './../../full' );\nvar format = require( '@stdlib/string/format' );\n\n\n// VARIABLES //\n\nvar Z128 = new Complex128( NaN, NaN );\nvar Z64 = new Complex64( NaN, NaN );\nvar DTYPES = [ 'float64', 'float32', 'complex128', 'complex64', 'generic' ];\n\n\n// MAIN //\n\n/**\n* Creates an array filled with NaNs and having a specified length.\n*\n* @param {NonNegativeInteger} length - array length\n* @param {string} [dtype=\"float64\"] - data type\n* @throws {TypeError} first argument must be a nonnegative integer\n* @throws {TypeError} second argument must be a supported data type\n* @returns {(TypedArray|Array|ComplexArray)} array or typed array\n*\n* @example\n* var arr = nans( 2 );\n* // returns <Float64Array>[ NaN, NaN ]\n*\n* @example\n* var arr = nans( 2, 'float32' );\n* // returns <Float32Array>[ NaN, NaN ]\n*/\nfunction nans( length ) {\n\tvar dtype;\n\tvar value;\n\n\tif ( arguments.length > 1 ) {\n\t\tdtype = arguments[ 1 ];\n\t\tif ( DTYPES.indexOf( dtype ) === -1 ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be one of the following: \"%s\". Value: `%s`.', DTYPES.join( '\", \"' ), dtype ) );\n\t\t}\n\t} else {\n\t\tdtype = 'float64';\n\t}\n\tif ( dtype === 'complex128' ) {\n\t\tvalue = Z128;\n\t} else if ( dtype === 'complex64' ) {\n\t\tvalue = Z64;\n\t} else {\n\t\tvalue = NaN;\n\t}\n\treturn full( length, value, dtype );\n}\n\n\n// EXPORTS //\n\nmodule.exports = nans;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an array filled with NaNs and having a specified length.\n*\n* @module @stdlib/array/nans\n*\n* @example\n* var nans = require( '@stdlib/array/nans' );\n*\n* var arr = nans( 2 );\n* // returns <Float64Array>[ NaN, NaN ]\n*\n* @example\n* var nans = require( '@stdlib/array/nans' );\n*\n* var arr = nans( 2, 'float32' );\n* // returns <Float32Array>[ NaN, NaN ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar dtype = require( './../../dtype' );\nvar full = require( './../../full' );\nvar Complex128 = require( '@stdlib/complex/float64' );\nvar Complex64 = require( '@stdlib/complex/float32' );\nvar format = require( '@stdlib/string/format' );\n\n\n// VARIABLES //\n\nvar Z128 = new Complex128( NaN, NaN );\nvar Z64 = new Complex64( NaN, NaN );\nvar DTYPES = [ 'float64', 'float32', 'complex128', 'complex64', 'generic' ];\n\n\n// MAIN //\n\n/**\n* Creates an array filled with NaNs and having the same length and data type as a provided input array.\n*\n* @param {(Array|TypedArray|ComplexArray)} x - input array\n* @param {string} [dtype] - data type\n* @throws {TypeError} first argument must be an array or typed array\n* @throws {TypeError} second argument must be a supported data type\n* @returns {(TypedArray|Array|ComplexArray)} array or typed array\n*\n* @example\n* var arr = nansLike( [ 0.0, 0.0 ] );\n* // returns [ NaN, NaN ]\n*\n* @example\n* var arr = nansLike( [ 0.0, 0.0 ], 'float32' );\n* // returns <Float32Array>[ NaN, NaN ]\n*/\nfunction nansLike( x ) {\n\tvar dt;\n\tvar v;\n\n\tdt = dtype( x ); // delegate input argument validation to dtype resolution\n\tif ( dt === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be either an array, typed array, or complex typed array. Value: `%s`.', x ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tdt = arguments[ 1 ];\n\t\tif ( DTYPES.indexOf( dt ) === -1 ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be one of the following: \"%s\". Value: `%s`.', DTYPES.join( '\", \"' ), dt ) );\n\t\t}\n\t} else if ( DTYPES.indexOf( dt ) === -1 ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be one of the following data types: \"%s\". Value: `%s`.', DTYPES.join( '\", \"' ), dt ) );\n\t}\n\tif ( dt === 'complex128' ) {\n\t\tv = Z128;\n\t} else if ( dt === 'complex64' ) {\n\t\tv = Z64;\n\t} else {\n\t\tv = NaN;\n\t}\n\treturn full( x.length, v, dt );\n}\n\n\n// EXPORTS //\n\nmodule.exports = nansLike;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an array filled with NaNs and having the same length and data type as a provided input array.\n*\n* @module @stdlib/array/nans-like\n*\n* @example\n* var nansLike = require( '@stdlib/array/nans-like' );\n*\n* var arr = nansLike( [ 0.0, 0.0 ] );\n* // returns [ NaN, NaN ]\n*\n* @example\n* var nansLike = require( '@stdlib/array/nans-like' );\n*\n* var arr = nansLike( [ 0.0, 0.0 ], 'float32' );\n* // returns <Float32Array>[ NaN, NaN ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "{\n\t\"float64\": -1,\n\t\"float32\": \"float64\",\n\t\"int32\": -1,\n\t\"int16\": \"int32\",\n\t\"int8\": \"int16\",\n\t\"uint32\": -1,\n\t\"uint16\": \"uint32\",\n\t\"uint8\": \"uint16\",\n\t\"uint8c\": \"uint16\",\n\t\"generic\": -1,\n  \"complex64\": \"complex128\",\n  \"complex128\": -1\n}\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar objectKeys = require( '@stdlib/utils/keys' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar NEXT_DTYPES = require( './next_dtypes.json' );\n\n\n// FUNCTIONS //\n\n/**\n* Generates a table.\n*\n* @private\n* @returns {Object} table\n*/\nfunction generateTable() {\n\tvar dtypes;\n\tvar ntypes;\n\tvar out;\n\tvar i;\n\n\tout = {};\n\tdtypes = objectKeys( NEXT_DTYPES );\n\tntypes = dtypes.length;\n\tfor ( i = 0; i < ntypes; i++ ) {\n\t\tout[ dtypes[i] ] = NEXT_DTYPES[ dtypes[i] ];\n\t}\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Returns the next larger array data type of the same kind.\n*\n* @param {string} [dtype] - array data type\n* @returns {(Object|string|integer|null)} next larger data type(s) or null\n*\n* @example\n* var dt = nextDataType( 'float32' );\n* // returns 'float64'\n*/\nfunction nextDataType( dtype ) {\n\tif ( arguments.length === 0 ) {\n\t\treturn generateTable();\n\t}\n\tif ( hasOwnProp( NEXT_DTYPES, dtype ) ) {\n\t\treturn NEXT_DTYPES[ dtype ];\n\t}\n\treturn null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = nextDataType;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the next larger array data type of the same kind.\n*\n* @module @stdlib/array/next-dtype\n*\n* @example\n* var nextDataType = require( '@stdlib/array/next-dtype' );\n*\n* var dt = nextDataType( 'float32' );\n* // returns 'float64'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Complex128 = require( '@stdlib/complex/float64' );\nvar Complex64 = require( '@stdlib/complex/float32' );\nvar full = require( './../../full' );\n\n\n// VARIABLES //\n\nvar Z128 = new Complex128( 1.0, 0.0 );\nvar Z64 = new Complex64( 1.0, 0.0 );\n\n\n// MAIN //\n\n/**\n* Creates an array filled with ones and having a specified length.\n*\n* @param {NonNegativeInteger} length - array length\n* @param {string} [dtype=\"float64\"] - data type\n* @throws {TypeError} first argument must be a nonnegative integer\n* @throws {TypeError} second argument must be a recognized data type\n* @returns {(TypedArray|Array|ComplexArray)} array or typed array\n*\n* @example\n* var arr = ones( 2 );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var arr = ones( 2, 'float32' );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*/\nfunction ones( length ) {\n\tvar dtype;\n\tvar value;\n\n\tif ( arguments.length > 1 ) {\n\t\tdtype = arguments[ 1 ];\n\t} else {\n\t\tdtype = 'float64';\n\t}\n\tif ( dtype === 'complex128' ) {\n\t\tvalue = Z128;\n\t} else if ( dtype === 'complex64' ) {\n\t\tvalue = Z64;\n\t} else {\n\t\tvalue = 1;\n\t}\n\treturn full( length, value, dtype );\n}\n\n\n// EXPORTS //\n\nmodule.exports = ones;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an array filled with ones and having a specified length.\n*\n* @module @stdlib/array/ones\n*\n* @example\n* var ones = require( '@stdlib/array/ones' );\n*\n* var arr = ones( 2 );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var ones = require( '@stdlib/array/ones' );\n*\n* var arr = ones( 2, 'float32' );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar dtype = require( './../../dtype' );\nvar full = require( './../../full' );\nvar Complex128 = require( '@stdlib/complex/float64' );\nvar Complex64 = require( '@stdlib/complex/float32' );\nvar format = require( '@stdlib/string/format' );\n\n\n// VARIABLES //\n\nvar Z128 = new Complex128( 1.0, 0.0 );\nvar Z64 = new Complex64( 1.0, 0.0 );\n\n\n// MAIN //\n\n/**\n* Creates an array filled with ones and having the same length and data type as a provided input array.\n*\n* @param {(Array|TypedArray|ComplexArray)} x - input array\n* @param {string} [dtype] - data type\n* @throws {TypeError} first argument must be an array or typed array\n* @throws {TypeError} second argument must be a recognized data type\n* @returns {(TypedArray|Array|ComplexArray)} array or typed array\n*\n* @example\n* var arr = onesLike( [ 0.0, 0.0 ] );\n* // returns [ 1.0, 1.0 ]\n*\n* @example\n* var arr = onesLike( [ 0.0, 0.0 ], 'float32' );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*/\nfunction onesLike( x ) {\n\tvar dt;\n\tvar v;\n\n\tdt = dtype( x ); // delegate input argument validation to dtype resolution\n\tif ( dt === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be either an array, typed array, or complex typed array. Value: `%s`.', x ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tdt = arguments[ 1 ];\n\t}\n\tif ( dt === 'complex128' ) {\n\t\tv = Z128;\n\t} else if ( dt === 'complex64' ) {\n\t\tv = Z64;\n\t} else {\n\t\tv = 1.0;\n\t}\n\treturn full( x.length, v, dt );\n}\n\n\n// EXPORTS //\n\nmodule.exports = onesLike;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an array filled with ones and having the same length and data type as a provided input array.\n*\n* @module @stdlib/array/ones-like\n*\n* @example\n* var onesLike = require( '@stdlib/array/ones-like' );\n*\n* var arr = onesLike( [ 0.0, 0.0 ] );\n* // returns [ 1.0, 1.0 ]\n*\n* @example\n* var onesLike = require( '@stdlib/array/ones-like' );\n*\n* var arr = onesLike( [ 0.0, 0.0 ], 'float32' );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Returns default options.\n*\n* @private\n* @returns {Object} default options\n*\n* @example\n* var o = defaults();\n* // returns {...}\n*/\nfunction defaults() {\n\treturn {\n\t\t'highWaterMark': 9007199254740992\n\t};\n}\n\n\n// EXPORTS //\n\nmodule.exports = defaults;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Validates function options.\n*\n* @private\n* @param {Object} opts - destination object\n* @param {Options} options - function options\n* @param {NonNegativeInteger} [options.highWaterMark] - maximum total memory which can be allocated\n* @returns {(Error|null)} null or an error object\n*\n* @example\n* var opts = {};\n* var options = {\n*     'highWaterMark': 1024\n* };\n* var err = validate( opts, options );\n* if ( err ) {\n*     throw err;\n* }\n*/\nfunction validate( opts, options ) {\n\tif ( !isObject( options ) ) {\n\t\treturn new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t}\n\tif ( hasOwnProp( options, 'highWaterMark' ) ) {\n\t\topts.highWaterMark = options.highWaterMark;\n\t\tif ( !isNonNegativeInteger( opts.highWaterMark ) ) {\n\t\t\treturn new TypeError( format( 'invalid option. `%s` option must be a nonnegative integer. Option: `%s`.', 'highWaterMark', opts.highWaterMark ) );\n\t\t}\n\t}\n\treturn null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = validate;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Initializes a cache for pooled typed array buffers.\n*\n* @private\n* @param {NonNegativeInteger} n - base-2 logarithm of the maximum typed array size\n* @returns {ArrayArray} initialized cache\n*/\nfunction pool( n ) {\n\tvar out;\n\tvar i;\n\n\tout = [];\n\tfor ( i = 0; i < n+1; i++ ) {\n\t\tout.push( [] );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = pool;\n", "{\n\t\"float64\": 8,\n\t\"float32\": 4,\n\t\"int16\": 2,\n\t\"int32\": 4,\n\t\"int8\": 1,\n\t\"uint16\": 2,\n\t\"uint32\": 4,\n\t\"uint8\": 1,\n\t\"uint8c\": 1,\n  \"complex64\": 8,\n  \"complex128\": 16\n}\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isTypedArrayLike = require( '@stdlib/assert/is-typed-array-like' );\nvar isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' );\nvar isComplex64Array = require( '@stdlib/assert/is-complex64array' );\nvar isComplex128Array = require( '@stdlib/assert/is-complex128array' );\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar setReadOnlyAccessor = require( '@stdlib/utils/define-nonenumerable-read-only-accessor' );\nvar ctors = require( './../../typed-ctors' );\nvar reinterpret64 = require( '@stdlib/strided/base/reinterpret-complex64' );\nvar reinterpret128 = require( '@stdlib/strided/base/reinterpret-complex128' );\nvar accessors = require( './../../base/accessors' );\nvar adtype = require( './../../dtype' );\nvar format = require( '@stdlib/string/format' );\nvar ArrayBuffer = require( './../../buffer' );\nvar ceil = require( '@stdlib/math/base/special/ceil' );\nvar floor = require( '@stdlib/math/base/special/floor' );\nvar ceil2 = require( '@stdlib/math/base/special/ceil2' );\nvar log2 = require( '@stdlib/math/base/special/log2' );\nvar min = require( '@stdlib/math/base/special/min' );\nvar defaults = require( './defaults.js' );\nvar validate = require( './validate.js' );\nvar createPool = require( './pool.js' );\nvar BYTES_PER_ELEMENT = require( './bytes_per_element.json' );\n\n\n// VARIABLES //\n\nvar Complex64Array = ctors( 'complex64' );\nvar Complex128Array = ctors( 'complex128' );\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether an array is a single-precision complex floating-point number array.\n*\n* @private\n* @param {Collection} arr - input array\n* @returns {boolean} boolean indicating whether an input array is a single-precision complex floating-point number array\n*/\nfunction isCmplx64Array( arr ) {\n\treturn ( arr instanceof Complex64Array );\n}\n\n/**\n* Tests whether an array is a double-precision complex floating-point number array.\n*\n* @private\n* @param {Collection} arr - input array\n* @returns {boolean} boolean indicating whether an input array is a double-precision complex floating-point number array\n*/\nfunction isCmplx128Array( arr ) {\n\treturn ( arr instanceof Complex128Array );\n}\n\n\n// MAIN //\n\n/**\n* Creates a typed array pool.\n*\n* @param {Options} [options] - pool options\n* @param {NonNegativeInteger} [options.highWaterMark] - maximum total memory which can be allocated\n* @throws {TypeError} options argument must be an object\n* @throws {TypeError} must provide valid options\n* @returns {Function} allocator\n*\n* @example\n* var typedarraypool = factory();\n*\n* // Allocate an array of doubles:\n* var arr = typedarraypool( 5, 'float64' );\n* // returns <Float64Array>[ 0.0, 0.0, 0.0, 0.0, 0.0 ]\n*\n* arr[ 0 ] = 3.14;\n* arr[ 1 ] = 3.14;\n*\n* // ...\n*\n* // Free the allocated memory to be used in a future allocation:\n* typedarraypool.free( arr );\n*/\nfunction factory( options ) {\n\tvar nbytes;\n\tvar pool;\n\tvar opts;\n\tvar err;\n\n\topts = defaults();\n\tif ( arguments.length ) {\n\t\terr = validate( opts, options );\n\t\tif ( err ) {\n\t\t\tthrow err;\n\t\t}\n\t}\n\tpool = createPool( ceil( log2( opts.highWaterMark ) ) );\n\tnbytes = 0;\n\n\tsetReadOnly( malloc, 'malloc', malloc ); // circular reference\n\tsetReadOnly( malloc, 'calloc', calloc );\n\tsetReadOnly( malloc, 'free', free );\n\tsetReadOnly( malloc, 'clear', clear );\n\tsetReadOnly( malloc, 'highWaterMark', opts.highWaterMark );\n\tsetReadOnlyAccessor( malloc, 'nbytes', getBytes );\n\n\treturn malloc;\n\n\t/**\n\t* Returns the number of allocated bytes.\n\t*\n\t* @private\n\t* @returns {NonNegativeInteger} number of allocated bytes\n\t*/\n\tfunction getBytes() {\n\t\treturn nbytes;\n\t}\n\n\t/**\n\t* Returns an array buffer.\n\t*\n\t* @private\n\t* @param {NonNegativeInteger} n - number of bytes\n\t* @returns {(ArrayBuffer|null)} array buffer or null\n\t*/\n\tfunction arraybuffer( n ) {\n\t\tvar buf;\n\t\tvar i;\n\n\t\t// Convert the number of bytes to an index in our pool table:\n\t\ti = log2( n );\n\n\t\t// If we already have an available array buffer, use it...\n\t\tif ( i < pool.length && pool[ i ].length ) {\n\t\t\treturn pool[ i ].pop();\n\t\t}\n\t\t// Before allocating a new array buffer, ensure that we have not exceeded the maximum number of bytes we are allowed to allocate...\n\t\tif ( nbytes+n > opts.highWaterMark ) {\n\t\t\treturn null;\n\t\t}\n\t\tbuf = new ArrayBuffer( n );\n\n\t\t// Update the running counter of allocated bytes:\n\t\tnbytes += n;\n\n\t\treturn buf;\n\t}\n\n\t/**\n\t* Returns a typed array.\n\t*\n\t* @private\n\t* @param {Function} ctor - typed array constructor\n\t* @param {NonNegativeInteger} len - view length\n\t* @param {string} dtype - data type\n\t* @returns {(TypedArray|null)} typed array or null\n\t*/\n\tfunction typedarray( ctor, len, dtype ) {\n\t\tvar buf;\n\t\tif ( len === 0 ) {\n\t\t\treturn new ctor( 0 );\n\t\t}\n\t\tbuf = arraybuffer( ceil2( len )*BYTES_PER_ELEMENT[ dtype ] );\n\t\tif ( buf === null ) {\n\t\t\treturn buf;\n\t\t}\n\t\treturn new ctor( buf, 0, len );\n\t}\n\n\t/**\n\t* Returns an uninitialized typed array.\n\t*\n\t* ## Notes\n\t*\n\t* -   Memory is **not** initialized.\n\t* -   Memory is lazily allocated.\n\t* -   If the function returns `null`, the function was unable to allocate a new typed array from the typed array pool (most likely due to insufficient memory).\n\t*\n\t* @private\n\t* @param {(NonNegativeInteger|Collection)} [arg] - an array length or an array-like object\n\t* @param {string} [dtype=\"float64\"] - data type\n\t* @throws {TypeError} must provide a valid array length or an array-like object\n\t* @throws {TypeError} must provide a recognized data type\n\t* @returns {(TypedArray|null)} typed array or null\n\t*/\n\tfunction malloc() {\n\t\tvar nargs;\n\t\tvar dtype;\n\t\tvar ctor;\n\t\tvar arr;\n\t\tvar out;\n\t\tvar set;\n\t\tvar get;\n\t\tvar len;\n\t\tvar i;\n\n\t\tnargs = arguments.length;\n\t\tif ( nargs && isString( arguments[ nargs-1 ] ) ) {\n\t\t\tnargs -= 1;\n\t\t\tdtype = arguments[ nargs ];\n\t\t} else {\n\t\t\tdtype = 'float64';\n\t\t}\n\t\tctor = ctors( dtype );\n\t\tif ( ctor === null ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a recognized data type. Value: `%s`.', dtype ) );\n\t\t}\n\t\tif ( nargs <= 0 ) {\n\t\t\treturn new ctor( 0 );\n\t\t}\n\t\t// Check if provided a typed array length...\n\t\tif ( isNonNegativeInteger( arguments[ 0 ] ) ) {\n\t\t\treturn typedarray( ctor, arguments[ 0 ], dtype );\n\t\t}\n\t\t// Check if provided an array-like object containing data elements...\n\t\tif ( isCollection( arguments[ 0 ] ) ) {\n\t\t\tarr = arguments[ 0 ];\n\t\t\tlen = arr.length;\n\t\t\tif ( isComplex128Array( arr ) ) {\n\t\t\t\tarr = reinterpret128( arr, 0 );\n\t\t\t} else if ( isComplex64Array( arr ) ) {\n\t\t\t\tarr = reinterpret64( arr, 0 );\n\t\t\t} else if ( /^complex/.test( dtype ) ) {\n\t\t\t\t// Assume we've been provided an array of interleaved real and imaginary components...\n\t\t\t\tlen /= 2;\n\t\t\t}\n\t\t\tout = typedarray( ctor, len, dtype );\n\t\t\tif ( out === null ) {\n\t\t\t\treturn out;\n\t\t\t}\n\t\t\tif ( isCmplx128Array( out ) || isCmplx64Array( out ) ) {\n\t\t\t\tout.set( arr );\n\t\t\t\treturn out;\n\t\t\t}\n\t\t\t// Wrap the arrays in order to account for the possibility that `arr` is a complex number array. As we don't prohibit other \"unsafe\" casts (e.g., providing a `Float64Array` and specifying a `dtype` of `uint8`), we don't prohibit providing a complex number array and specifying a real `dtype`. The results will probably be unexpected/gibberish, but I am not sure we should be overly pedantic in ensuring users don't do ill-advised things...\n\t\t\tget = accessors( adtype( arr ) ).accessors[ 0 ];\n\t\t\tset = accessors( dtype ).accessors[ 1 ];\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tset( out, i, get( arr, i ) );\n\t\t\t}\n\t\t\treturn out;\n\t\t}\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be either an array length or an array-like object. Value: `%s`.', arguments[ 0 ] ) );\n\t}\n\n\t/**\n\t* Returns a zero-initialized typed array.\n\t*\n\t* ## Notes\n\t*\n\t* -   If the function returns `null`, the function was unable to allocate a new typed array from the typed array pool (most likely due to insufficient memory).\n\t*\n\t* @private\n\t* @param {NonNegativeInteger} [len=0] - array length\n\t* @param {string} [dtype=\"float64\"] - data type\n\t* @throws {TypeError} must provide a valid array length\n\t* @throws {TypeError} must provide a recognized data type\n\t* @returns {(TypedArray|null)} typed array or null\n\t*/\n\tfunction calloc() {\n\t\tvar nargs;\n\t\tvar out;\n\t\tvar tmp;\n\t\tvar i;\n\n\t\tnargs = arguments.length;\n\t\tif ( nargs === 0 ) {\n\t\t\tout = malloc();\n\t\t} else if ( nargs === 1 ) {\n\t\t\tout = malloc( arguments[ 0 ] );\n\t\t} else {\n\t\t\tout = malloc( arguments[ 0 ], arguments[ 1 ] );\n\t\t}\n\t\tif ( out !== null ) {\n\t\t\t// Initialize the memory...\n\t\t\tif ( isCmplx128Array( out ) ) {\n\t\t\t\ttmp = reinterpret128( out, 0 );\n\t\t\t} else if ( isCmplx64Array( out ) ) {\n\t\t\t\ttmp = reinterpret64( out, 0 );\n\t\t\t} else {\n\t\t\t\ttmp = out;\n\t\t\t}\n\t\t\tfor ( i = 0; i < tmp.length; i++ ) {\n\t\t\t\ttmp[ i ] = 0.0;\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\n\t/**\n\t* Frees a typed array or typed array buffer.\n\t*\n\t* ## Notes\n\t*\n\t* -   Implicitly, we support providing non-internally allocated arrays and array buffer (e.g., \"freeing\" a typed array allocated in userland); however, the freed array buffer is likely to have excess capacity when compared to other members in its pool.\n\t*\n\t* @private\n\t* @param {(TypedArray|ArrayBuffer)} buf - typed array or array buffer to free\n\t* @throws {TypeError} must provide a typed array or typed array buffer\n\t* @returns {boolean} boolean indicating whether the typed array or array buffer was successfully freed\n\t*/\n\tfunction free( buf ) {\n\t\tvar n;\n\t\tvar p;\n\t\tvar i;\n\t\tif ( isTypedArrayLike( buf ) && buf.buffer ) {\n\t\t\tbuf = buf.buffer;\n\t\t} else if ( !isArrayBuffer( buf ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a typed array or ArrayBuffer. Value: `%s`.', buf ) );\n\t\t}\n\t\tif ( buf.byteLength > 0 ) {\n\t\t\tn = floor( log2( buf.byteLength ) );\n\n\t\t\t// Prohibit \"freeing\" array buffers which would potentially allow users to circumvent high water mark limits:\n\t\t\tn = min( pool.length-1, n );\n\n\t\t\t// Ensure that we do not attempt to free the same buffer more than once...\n\t\t\tp = pool[ n ];\n\t\t\tfor ( i = 0; i < p.length; i++ ) {\n\t\t\t\tif ( p[ i ] === buf ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Add the buffer to our pool of free buffers:\n\t\t\tp.push( buf );\n\t\t}\n\t\treturn true;\n\t}\n\n\t/**\n\t* Clears the typed array pool allowing garbage collection of previously allocated (and currently free) array buffers.\n\t*\n\t* @private\n\t*/\n\tfunction clear() {\n\t\tvar i;\n\t\tfor ( i = 0; i < pool.length; i++ ) {\n\t\t\tpool[ i ].length = 0;\n\t\t}\n\t\tnbytes = 0;\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = factory;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar factory = require( './factory.js' );\n\n\n// MAIN //\n\n/**\n* Returns an uninitialized typed array.\n*\n* ## Notes\n*\n* -   Memory is **not** initialized.\n* -   Memory is lazily allocated.\n* -   If the function returns `null`, the function was unable to allocate a new typed array from the typed array pool (most likely due to insufficient memory).\n*\n* @name typedarraypool\n* @type {Function}\n* @param {(NonNegativeInteger|ArrayLikeObject)} [arg] - an array length or an array-like object\n* @param {string} [dtype=\"float64\"] - data type\n* @throws {TypeError} must provide a valid array length or an array-like object\n* @throws {TypeError} must provide a recognized data type\n* @returns {(TypedArray|null)} typed array or null\n*\n* @example\n* // Allocate an array of doubles:\n* var arr = typedarraypool( 5, 'float64' );\n* // e.g., returns <Float64Array>[ 0.0, 0.0, 0.0, 0.0, 0.0 ]\n*\n* arr[ 0 ] = 3.14;\n* arr[ 1 ] = 3.14;\n*\n* // ...\n*\n* // Free the allocated memory to be used in a future allocation:\n* typedarraypool.free( arr );\n*/\nvar typedarraypool = factory();\n\n\n// EXPORTS //\n\nmodule.exports = typedarraypool;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Typed array pool.\n*\n* @module @stdlib/array/pool\n*\n* @example\n* var typedarraypool = require( '@stdlib/array/pool' );\n*\n* // Allocate an array of doubles:\n* var arr = typedarraypool( 5, 'float64' );\n* // returns <Float64Array>[ 0.0, 0.0, 0.0, 0.0, 0.0 ]\n*\n* arr[ 0 ] = 3.14;\n* arr[ 1 ] = 3.14;\n*\n* // ...\n*\n* // Free the allocated memory to be used in a future allocation:\n* typedarraypool.free( arr );\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar factory = require( './factory.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'factory', factory );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "{\n\t\"float64\": {\n\t\t\"float64\": \"float64\",\n\t\t\"float32\": \"float64\",\n\t\t\"int32\": \"float64\",\n\t\t\"int16\": \"float64\",\n\t\t\"int8\": \"float64\",\n\t\t\"uint32\": \"float64\",\n\t\t\"uint16\": \"float64\",\n\t\t\"uint8\": \"float64\",\n\t\t\"uint8c\": \"float64\",\n    \"complex64\": \"complex128\",\n    \"complex128\": \"complex128\",\n\t\t\"generic\": \"generic\"\n\t},\n\t\"float32\": {\n\t\t\"float64\": \"float64\",\n\t\t\"float32\": \"float32\",\n\t\t\"int32\": \"float64\",\n\t\t\"int16\": \"float32\",\n\t\t\"int8\": \"float32\",\n\t\t\"uint32\": \"float64\",\n\t\t\"uint16\": \"float32\",\n\t\t\"uint8\": \"float32\",\n\t\t\"uint8c\": \"float32\",\n    \"complex64\": \"complex64\",\n    \"complex128\": \"complex128\",\n\t\t\"generic\": \"generic\"\n\t},\n\t\"int32\": {\n\t\t\"float64\": \"float64\",\n\t\t\"float32\": \"float64\",\n\t\t\"int32\": \"int32\",\n\t\t\"int16\": \"int32\",\n\t\t\"int8\": \"int32\",\n\t\t\"uint32\": \"float64\",\n\t\t\"uint16\": \"int32\",\n\t\t\"uint8\": \"int32\",\n\t\t\"uint8c\": \"int32\",\n    \"complex64\": \"complex128\",\n    \"complex128\": \"complex128\",\n\t\t\"generic\": \"generic\"\n\t},\n\t\"int16\": {\n\t\t\"float64\": \"float64\",\n\t\t\"float32\": \"float32\",\n\t\t\"int32\": \"int32\",\n\t\t\"int16\": \"int16\",\n\t\t\"int8\": \"int16\",\n\t\t\"uint32\": \"float64\",\n\t\t\"uint16\": \"int32\",\n\t\t\"uint8\": \"int16\",\n\t\t\"uint8c\": \"int16\",\n    \"complex64\": \"complex64\",\n    \"complex128\": \"complex128\",\n\t\t\"generic\": \"generic\"\n\t},\n\t\"int8\": {\n\t\t\"float64\": \"float64\",\n\t\t\"float32\": \"float32\",\n\t\t\"int32\": \"int32\",\n\t\t\"int16\": \"int16\",\n\t\t\"int8\": \"int8\",\n\t\t\"uint32\": \"float64\",\n\t\t\"uint16\": \"int32\",\n\t\t\"uint8\": \"int16\",\n\t\t\"uint8c\": \"int16\",\n    \"complex64\": \"complex64\",\n    \"complex128\": \"complex128\",\n\t\t\"generic\": \"generic\"\n\t},\n\t\"uint32\": {\n\t\t\"float64\": \"float64\",\n\t\t\"float32\": \"float64\",\n\t\t\"int32\": \"float64\",\n\t\t\"int16\": \"float64\",\n\t\t\"int8\": \"float64\",\n\t\t\"uint32\": \"uint32\",\n\t\t\"uint16\": \"uint32\",\n\t\t\"uint8\": \"uint32\",\n\t\t\"uint8c\": \"uint32\",\n    \"complex64\": \"complex128\",\n    \"complex128\": \"complex128\",\n\t\t\"generic\": \"generic\"\n\t},\n\t\"uint16\": {\n\t\t\"float64\": \"float64\",\n\t\t\"float32\": \"float32\",\n\t\t\"int32\": \"int32\",\n\t\t\"int16\": \"int32\",\n\t\t\"int8\": \"int32\",\n\t\t\"uint32\": \"uint32\",\n\t\t\"uint16\": \"uint16\",\n\t\t\"uint8\": \"uint16\",\n\t\t\"uint8c\": \"uint16\",\n    \"complex64\": \"complex64\",\n    \"complex128\": \"complex128\",\n\t\t\"generic\": \"generic\"\n\t},\n\t\"uint8\": {\n\t\t\"float64\": \"float64\",\n\t\t\"float32\": \"float32\",\n\t\t\"int32\": \"int32\",\n\t\t\"int16\": \"int16\",\n\t\t\"int8\": \"int16\",\n\t\t\"uint32\": \"uint32\",\n\t\t\"uint16\": \"uint16\",\n\t\t\"uint8\": \"uint8\",\n\t\t\"uint8c\": \"uint8\",\n    \"complex64\": \"complex64\",\n    \"complex128\": \"complex128\",\n\t\t\"generic\": \"generic\"\n\t},\n\t\"uint8c\": {\n\t\t\"float64\": \"float64\",\n\t\t\"float32\": \"float32\",\n\t\t\"int32\": \"int32\",\n\t\t\"int16\": \"int16\",\n\t\t\"int8\": \"int16\",\n\t\t\"uint32\": \"uint32\",\n\t\t\"uint16\": \"uint16\",\n\t\t\"uint8\": \"uint8\",\n\t\t\"uint8c\": \"uint8\",\n    \"complex64\": \"complex64\",\n    \"complex128\": \"complex128\",\n\t\t\"generic\": \"generic\"\n\t},\n  \"complex128\": {\n    \"float64\": \"complex128\",\n    \"float32\": \"complex128\",\n    \"int32\": \"complex128\",\n    \"int16\": \"complex128\",\n    \"int8\": \"complex128\",\n    \"uint32\": \"complex128\",\n    \"uint16\": \"complex128\",\n    \"uint8\": \"complex128\",\n    \"uint8c\": \"complex128\",\n    \"complex64\": \"complex128\",\n    \"complex128\": \"complex128\",\n    \"generic\": \"generic\"\n  },\n  \"complex64\": {\n    \"float64\": \"complex128\",\n    \"float32\": \"complex64\",\n    \"int32\": \"complex128\",\n    \"int16\": \"complex64\",\n    \"int8\": \"complex64\",\n    \"uint32\": \"complex128\",\n    \"uint16\": \"complex64\",\n    \"uint8\": \"complex64\",\n    \"uint8c\": \"complex64\",\n    \"complex64\": \"complex64\",\n    \"complex128\": \"complex128\",\n    \"generic\": \"generic\"\n  },\n\t\"generic\": {\n\t\t\"float64\": \"generic\",\n\t\t\"float32\": \"generic\",\n\t\t\"int32\": \"generic\",\n\t\t\"int16\": \"generic\",\n\t\t\"int8\": \"generic\",\n\t\t\"uint32\": \"generic\",\n\t\t\"uint16\": \"generic\",\n\t\t\"uint8\": \"generic\",\n\t\t\"uint8c\": \"generic\",\n    \"complex64\": \"generic\",\n    \"complex128\": \"generic\",\n\t\t\"generic\": \"generic\"\n\t}\n}\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar objectKeys = require( '@stdlib/utils/keys' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar PROMOTION_RULES = require( './promotion_rules.json' );\n\n\n// FUNCTIONS //\n\n/**\n* Generates a full table of promotion rules.\n*\n* @private\n* @returns {Object} table\n*/\nfunction generateFullTable() {\n\tvar dtypes;\n\tvar ntypes;\n\tvar out;\n\tvar tmp;\n\tvar dt1;\n\tvar dt2;\n\tvar o;\n\tvar j;\n\tvar i;\n\n\tout = {};\n\tdtypes = objectKeys( PROMOTION_RULES );\n\tntypes = dtypes.length;\n\tfor ( i = 0; i < ntypes; i++ ) {\n\t\tdt1 = dtypes[ i ];\n\t\to = PROMOTION_RULES[ dt1 ];\n\t\ttmp = {};\n\t\tfor ( j = 0; j < ntypes; j++ ) {\n\t\t\tdt2 = dtypes[ j ];\n\t\t\ttmp[ dt2 ] = o[ dt2 ];\n\t\t}\n\t\tout[ dt1 ] = tmp;\n\t}\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Returns the array data type with the smallest size and closest \"kind\" to which array data types can be safely cast.\n*\n* @param {string} [dtype1] - array data type\n* @param {string} [dtype2] - array data type\n* @returns {(Object|integer|string|null)} promotion rule(s) or null\n*\n* @example\n* var table = promotionRules();\n* // returns {...}\n*\n* @example\n* var dt = promotionRules( 'float32', 'uint32' );\n* // returns 'float64'\n*\n* @example\n* var dt = promotionRules( 'float32', 'foo' );\n* // returns null\n*/\nfunction promotionRules( dtype1, dtype2 ) {\n\tvar o;\n\tif ( arguments.length === 0 ) {\n\t\treturn generateFullTable();\n\t}\n\tif ( hasOwnProp( PROMOTION_RULES, dtype1 ) ) {\n\t\to = PROMOTION_RULES[ dtype1 ];\n\t\tif ( hasOwnProp( o, dtype2 ) ) {\n\t\t\treturn o[ dtype2 ];\n\t\t}\n\t}\n\treturn null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = promotionRules;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the array data type with the smallest size and closest \"kind\" to which array data types can be safely cast.\n*\n* @module @stdlib/array/promotion-rules\n*\n* @example\n* var promotionRules = require( '@stdlib/array/promotion-rules' );\n*\n* var table = promotionRules();\n* // returns {...}\n*\n* var dt = promotionRules( 'float32', 'uint32' );\n* // returns 'float64'\n*\n* dt = promotionRules( 'float32', 'foo' );\n* // returns null\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Float64Array = require( './../../float64' );\nvar Float32Array = require( './../../float32' );\nvar Int16Array = require( './../../int16' );\nvar Int32Array = require( './../../int32' );\nvar Int8Array = require( './../../int8' );\nvar Uint16Array = require( './../../uint16' );\nvar Uint32Array = require( './../../uint32' );\nvar Uint8Array = require( './../../uint8' );\nvar Uint8ClampedArray = require( './../../uint8c' );\nvar Complex64Array = require( './../../complex64' );\nvar Complex128Array = require( './../../complex128' );\n\n\n// MAIN //\n\nvar ctors = {\n\t'Float64Array': Float64Array,\n\t'Float32Array': Float32Array,\n\t'Int32Array': Int32Array,\n\t'Uint32Array': Uint32Array,\n\t'Int16Array': Int16Array,\n\t'Uint16Array': Uint16Array,\n\t'Int8Array': Int8Array,\n\t'Uint8Array': Uint8Array,\n\t'Uint8ClampedArray': Uint8ClampedArray,\n\t'Complex64Array': Complex64Array,\n\t'Complex128Array': Complex128Array\n};\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isArray = require( '@stdlib/assert/is-array' );\nvar ctors = require( './ctors.js' );\n\n\n// MAIN //\n\n/**\n* Revives a JSON-serialized typed array.\n*\n* @param {string} key - key\n* @param {*} value - value\n* @returns {(*|TypedArray)} value or typed array\n*\n* @example\n* var parseJSON = require( '@stdlib/utils/parse-json' );\n*\n* var str = '{\"type\":\"Float64Array\",\"data\":[5,3]}';\n*\n* var arr = parseJSON( str, reviveTypedArray );\n* // returns <Float64Array>[ 5.0, 3.0 ]\n*/\nfunction reviveTypedArray( key, value ) {\n\tvar ctor;\n\tif (\n\t\tvalue &&\n\t\tvalue.type &&\n\t\tisArray( value.data )\n\t) {\n\t\tctor = ctors[ value.type ];\n\t\tif ( ctor ) {\n\t\t\treturn new ctor( value.data );\n\t\t}\n\t}\n\treturn value;\n}\n\n\n// EXPORTS //\n\nmodule.exports = reviveTypedArray;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Revive a JSON-serialized typed array.\n*\n* @module @stdlib/array/reviver\n*\n* @example\n* var parseJSON = require( '@stdlib/utils/parse-json' );\n* var reviveTypedArray = require( '@stdlib/array/reviver' );\n*\n* var str = '{\"type\":\"Float64Array\",\"data\":[5,3]}';\n*\n* var arr = parseJSON( str, reviveTypedArray );\n* // returns <Float64Array>[ 5.0, 3.0 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "{\n\t\"float64\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 0,\n\t\t\"int32\": 0,\n\t\t\"int16\": 0,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 0,\n\t\t\"uint16\": 0,\n\t\t\"uint8\": 0,\n\t\t\"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 0,\n\t\t\"generic\": 1\n\t},\n\t\"float32\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 1,\n\t\t\"int32\": 0,\n\t\t\"int16\": 0,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 0,\n\t\t\"uint16\": 0,\n\t\t\"uint8\": 0,\n\t\t\"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 1,\n\t\t\"generic\": 1\n\t},\n\t\"int32\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 0,\n\t\t\"int32\": 1,\n\t\t\"int16\": 0,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 0,\n\t\t\"uint16\": 0,\n\t\t\"uint8\": 0,\n\t\t\"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 0,\n\t\t\"generic\": 1\n\t},\n\t\"int16\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 1,\n\t\t\"int32\": 1,\n\t\t\"int16\": 1,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 0,\n\t\t\"uint16\": 0,\n\t\t\"uint8\": 0,\n\t\t\"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 1,\n\t\t\"generic\": 1\n\t},\n\t\"int8\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 1,\n\t\t\"int32\": 1,\n\t\t\"int16\": 1,\n\t\t\"int8\": 1,\n\t\t\"uint32\": 0,\n\t\t\"uint16\": 0,\n\t\t\"uint8\": 0,\n\t\t\"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 1,\n\t\t\"generic\": 1\n\t},\n\t\"uint32\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 0,\n\t\t\"int32\": 0,\n\t\t\"int16\": 0,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 1,\n\t\t\"uint16\": 0,\n\t\t\"uint8\": 0,\n\t\t\"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 0,\n\t\t\"generic\": 1\n\t},\n\t\"uint16\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 1,\n\t\t\"int32\": 1,\n\t\t\"int16\": 0,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 1,\n\t\t\"uint16\": 1,\n\t\t\"uint8\": 0,\n\t\t\"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 1,\n\t\t\"generic\": 1\n\t},\n\t\"uint8\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 1,\n\t\t\"int32\": 1,\n\t\t\"int16\": 1,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 1,\n\t\t\"uint16\": 1,\n\t\t\"uint8\": 1,\n\t\t\"uint8c\": 1,\n    \"complex128\": 1,\n    \"complex64\": 1,\n\t\t\"generic\": 1\n\t},\n\t\"uint8c\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 1,\n\t\t\"int32\": 1,\n\t\t\"int16\": 1,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 1,\n\t\t\"uint16\": 1,\n\t\t\"uint8\": 1,\n\t\t\"uint8c\": 1,\n    \"complex128\": 1,\n    \"complex64\": 1,\n\t\t\"generic\": 1\n\t},\n  \"complex128\": {\n    \"float64\": 0,\n    \"float32\": 0,\n    \"int32\": 0,\n    \"int16\": 0,\n    \"int8\": 0,\n    \"uint32\": 0,\n    \"uint16\": 0,\n    \"uint8\": 0,\n    \"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 0,\n    \"generic\": 1\n  },\n  \"complex64\": {\n    \"float64\": 0,\n    \"float32\": 0,\n    \"int32\": 0,\n    \"int16\": 0,\n    \"int8\": 0,\n    \"uint32\": 0,\n    \"uint16\": 0,\n    \"uint8\": 0,\n    \"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 1,\n    \"generic\": 1\n  },\n\t\"generic\": {\n\t\t\"float64\": 0,\n\t\t\"float32\": 0,\n\t\t\"int32\": 0,\n\t\t\"int16\": 0,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 0,\n\t\t\"uint16\": 0,\n\t\t\"uint8\": 0,\n\t\t\"uint8c\": 0,\n    \"complex128\": 0,\n    \"complex64\": 0,\n\t\t\"generic\": 1\n\t}\n}\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar objectKeys = require( '@stdlib/utils/keys' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar SAFE_CASTS = require( './safe_casts.json' );\n\n\n// VARIABLES //\n\nvar TABLE;\n\n\n// FUNCTIONS //\n\n/**\n* Generates a full table of safe casts for each array data type.\n*\n* @private\n* @returns {Object} table\n*/\nfunction generateFullTable() {\n\tvar dtypes;\n\tvar ntypes;\n\tvar out;\n\tvar tmp;\n\tvar dt1;\n\tvar dt2;\n\tvar o;\n\tvar j;\n\tvar i;\n\n\tout = {};\n\tdtypes = objectKeys( SAFE_CASTS );\n\tntypes = dtypes.length;\n\tfor ( i = 0; i < ntypes; i++ ) {\n\t\tdt1 = dtypes[ i ];\n\t\to = SAFE_CASTS[ dt1 ];\n\t\ttmp = {};\n\t\tfor ( j = 0; j < ntypes; j++ ) {\n\t\t\tdt2 = dtypes[ j ];\n\t\t\ttmp[ dt2 ] = o[ dt2 ];\n\t\t}\n\t\tout[ dt1 ] = tmp;\n\t}\n\treturn out;\n}\n\n/**\n* Generates a table of safe casts for each array data type.\n*\n* @private\n* @returns {Object} table\n*/\nfunction generateTable() {\n\tvar dtypes;\n\tvar ntypes;\n\tvar out;\n\tvar tmp;\n\tvar dt1;\n\tvar dt2;\n\tvar o;\n\tvar j;\n\tvar i;\n\n\tout = {};\n\tdtypes = objectKeys( SAFE_CASTS );\n\tntypes = dtypes.length;\n\tfor ( i = 0; i < ntypes; i++ ) {\n\t\tdt1 = dtypes[ i ];\n\t\to = SAFE_CASTS[ dt1 ];\n\t\ttmp = [];\n\t\tfor ( j = 0; j < ntypes; j++ ) {\n\t\t\tdt2 = dtypes[ j ];\n\t\t\tif ( o[ dt2 ] === 1 ) {\n\t\t\t\ttmp.push( dt2 );\n\t\t\t}\n\t\t}\n\t\tout[ dt1 ] = tmp;\n\t}\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Returns a list of array data types to which a provided array data type can be safely cast.\n*\n* @param {string} [dtype] - array data type\n* @returns {(Object|StringArray|null)} list of array data types or null\n*\n* @example\n* var list = safeCasts( 'float32' );\n* // returns [...]\n*/\nfunction safeCasts( dtype ) {\n\tif ( arguments.length === 0 ) {\n\t\treturn generateFullTable();\n\t}\n\tif ( TABLE === void 0 ) {\n\t\t// Lazily generate table...\n\t\tTABLE = generateTable();\n\t}\n\tif ( hasOwnProp( TABLE, dtype ) ) {\n\t\treturn TABLE[ dtype ].slice();\n\t}\n\treturn null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = safeCasts;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a list of array data types to which a provided array data type can be safely cast.\n*\n* @module @stdlib/array/safe-casts\n*\n* @example\n* var safeCasts = require( '@stdlib/array/safe-casts' );\n*\n* var list = safeCasts( 'float32' );\n* // returns [...]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "{\n\t\"float64\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 1,\n\t\t\"int32\": 0,\n\t\t\"int16\": 0,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 0,\n\t\t\"uint16\": 0,\n\t\t\"uint8\": 0,\n\t\t\"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 0,\n\t\t\"generic\": 1\n\t},\n\t\"float32\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 1,\n\t\t\"int32\": 0,\n\t\t\"int16\": 0,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 0,\n\t\t\"uint16\": 0,\n\t\t\"uint8\": 0,\n\t\t\"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 1,\n\t\t\"generic\": 1\n\t},\n\t\"int32\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 0,\n\t\t\"int32\": 1,\n\t\t\"int16\": 1,\n\t\t\"int8\": 1,\n\t\t\"uint32\": 0,\n\t\t\"uint16\": 0,\n\t\t\"uint8\": 0,\n\t\t\"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 0,\n\t\t\"generic\": 1\n\t},\n\t\"int16\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 1,\n\t\t\"int32\": 1,\n\t\t\"int16\": 1,\n\t\t\"int8\": 1,\n\t\t\"uint32\": 0,\n\t\t\"uint16\": 0,\n\t\t\"uint8\": 0,\n\t\t\"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 1,\n\t\t\"generic\": 1\n\t},\n\t\"int8\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 1,\n\t\t\"int32\": 1,\n\t\t\"int16\": 1,\n\t\t\"int8\": 1,\n\t\t\"uint32\": 0,\n\t\t\"uint16\": 0,\n\t\t\"uint8\": 0,\n\t\t\"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 1,\n\t\t\"generic\": 1\n\t},\n\t\"uint32\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 0,\n\t\t\"int32\": 0,\n\t\t\"int16\": 0,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 1,\n\t\t\"uint16\": 1,\n\t\t\"uint8\": 1,\n\t\t\"uint8c\": 1,\n    \"complex128\": 1,\n    \"complex64\": 0,\n\t\t\"generic\": 1\n\t},\n\t\"uint16\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 1,\n\t\t\"int32\": 1,\n\t\t\"int16\": 0,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 1,\n\t\t\"uint16\": 1,\n\t\t\"uint8\": 1,\n\t\t\"uint8c\": 1,\n    \"complex128\": 1,\n    \"complex64\": 1,\n\t\t\"generic\": 1\n\t},\n\t\"uint8\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 1,\n\t\t\"int32\": 1,\n\t\t\"int16\": 1,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 1,\n\t\t\"uint16\": 1,\n\t\t\"uint8\": 1,\n\t\t\"uint8c\": 1,\n    \"complex128\": 1,\n    \"complex64\": 1,\n\t\t\"generic\": 1\n\t},\n\t\"uint8c\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 1,\n\t\t\"int32\": 1,\n\t\t\"int16\": 1,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 1,\n\t\t\"uint16\": 1,\n\t\t\"uint8\": 1,\n\t\t\"uint8c\": 1,\n    \"complex128\": 1,\n    \"complex64\": 1,\n\t\t\"generic\": 1\n\t},\n  \"complex128\": {\n    \"float64\": 0,\n    \"float32\": 0,\n    \"int32\": 0,\n    \"int16\": 0,\n    \"int8\": 0,\n    \"uint32\": 0,\n    \"uint16\": 0,\n    \"uint8\": 0,\n    \"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 1,\n    \"generic\": 0\n  },\n  \"complex64\": {\n    \"float64\": 0,\n    \"float32\": 0,\n    \"int32\": 0,\n    \"int16\": 0,\n    \"int8\": 0,\n    \"uint32\": 0,\n    \"uint16\": 0,\n    \"uint8\": 0,\n    \"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 1,\n    \"generic\": 0\n  },\n\t\"generic\": {\n\t\t\"float64\": 0,\n\t\t\"float32\": 0,\n\t\t\"int32\": 0,\n\t\t\"int16\": 0,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 0,\n\t\t\"uint16\": 0,\n\t\t\"uint8\": 0,\n\t\t\"uint8c\": 0,\n    \"complex128\": 0,\n    \"complex64\": 0,\n\t\t\"generic\": 1\n\t}\n}\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar objectKeys = require( '@stdlib/utils/keys' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar SAME_KIND_CASTS = require( './same_kind_casts.json' );\n\n\n// VARIABLES //\n\nvar TABLE;\n\n\n// FUNCTIONS //\n\n/**\n* Generates a full table of same \"kind\" casts for each array data type.\n*\n* @private\n* @returns {Object} table\n*/\nfunction generateFullTable() {\n\tvar dtypes;\n\tvar ntypes;\n\tvar out;\n\tvar tmp;\n\tvar dt1;\n\tvar dt2;\n\tvar o;\n\tvar j;\n\tvar i;\n\n\tout = {};\n\tdtypes = objectKeys( SAME_KIND_CASTS );\n\tntypes = dtypes.length;\n\tfor ( i = 0; i < ntypes; i++ ) {\n\t\tdt1 = dtypes[ i ];\n\t\to = SAME_KIND_CASTS[ dt1 ];\n\t\ttmp = {};\n\t\tfor ( j = 0; j < ntypes; j++ ) {\n\t\t\tdt2 = dtypes[ j ];\n\t\t\ttmp[ dt2 ] = o[ dt2 ];\n\t\t}\n\t\tout[ dt1 ] = tmp;\n\t}\n\treturn out;\n}\n\n/**\n* Generates a table of same \"kind\" casts for each array data type.\n*\n* @private\n* @returns {Object} table\n*/\nfunction generateTable() {\n\tvar dtypes;\n\tvar ntypes;\n\tvar out;\n\tvar tmp;\n\tvar dt1;\n\tvar dt2;\n\tvar o;\n\tvar j;\n\tvar i;\n\n\tout = {};\n\tdtypes = objectKeys( SAME_KIND_CASTS );\n\tntypes = dtypes.length;\n\tfor ( i = 0; i < ntypes; i++ ) {\n\t\tdt1 = dtypes[ i ];\n\t\to = SAME_KIND_CASTS[ dt1 ];\n\t\ttmp = [];\n\t\tfor ( j = 0; j < ntypes; j++ ) {\n\t\t\tdt2 = dtypes[ j ];\n\t\t\tif ( o[ dt2 ] === 1 ) {\n\t\t\t\ttmp.push( dt2 );\n\t\t\t}\n\t\t}\n\t\tout[ dt1 ] = tmp;\n\t}\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Returns a list of array data types to which a provided array data type can be safely cast or cast within the same \"kind\".\n*\n* @param {string} [dtype] - array data type\n* @returns {(Object|StringArray|null)} list of array data types or null\n*\n* @example\n* var list = sameKindCasts( 'float32' );\n* // returns [...]\n*/\nfunction sameKindCasts( dtype ) {\n\tif ( arguments.length === 0 ) {\n\t\treturn generateFullTable();\n\t}\n\tif ( TABLE === void 0 ) {\n\t\t// Lazily generate table...\n\t\tTABLE = generateTable();\n\t}\n\tif ( hasOwnProp( TABLE, dtype ) ) {\n\t\treturn TABLE[ dtype ].slice();\n\t}\n\treturn null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = sameKindCasts;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a list of array data types to which a provided array data type can be safely cast or cast within the same \"kind\".\n*\n* @module @stdlib/array/same-kind-casts\n*\n* @example\n* var sameKindCasts = require( '@stdlib/array/same-kind-casts' );\n*\n* var list = sameKindCasts( 'float32' );\n* // returns [...]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isArrayLikeObject = require( '@stdlib/assert/is-array-like-object' );\nvar format = require( '@stdlib/string/format' );\n\n\n// FUNCTIONS //\n\n/**\n* Recursively (and eagerly) attempts to resolve nested array dimensions.\n*\n* @private\n* @param {Array} shape - output array\n* @param {ArrayLikeObject} arr - array\n* @returns {Array} shape array\n*/\nfunction recurse( shape, arr ) {\n\tvar v = arr[ 0 ];\n\tif ( isArrayLikeObject( v ) ) {\n\t\tshape.push( v.length );\n\t\trecurse( shape, v );\n\t}\n\treturn shape;\n}\n\n/**\n* Recursively verifies that all nested arrays have consistent dimensions.\n*\n* @private\n* @param {PositiveInteger} ndims - number of dimensions\n* @param {Array} shape - shape array\n* @param {NonNegativeInteger} d - dimension\n* @param {ArrayLikeObject} arr - array element to verify\n* @param {boolean} flg - boolean indicating whether to continue recursing\n* @returns {NonNegativeInteger} number of consistent dimensions\n*/\nfunction check( ndims, shape, d, arr, flg ) {\n\tvar len;\n\tvar v;\n\tvar i;\n\n\t// Get the size of the current dimension:\n\tlen = shape[ d ];\n\n\t// Ensure that each array element is an array of the same size:\n\tfor ( i = 0; i < arr.length; i++ ) {\n\t\tv = arr[ i ];\n\n\t\t// If the array element is not an array or is not the same size, we have found an inconsistent dimension:\n\t\tif ( !isArrayLikeObject( v ) || v.length !== len ) {\n\t\t\t// `d` is one more than the index of the last consistent dimension and thus equal to the number of consistent dimensions:\n\t\t\treturn d;\n\t\t}\n\t\t// Recursively examine nested elements:\n\t\tif ( flg ) {\n\t\t\tv = check( ndims, shape, d+1, v, d+1 < ndims-1 );\n\t\t\tif ( v < ndims ) {\n\t\t\t\t// Propagate the number of consistent dimensions up the recursion chain...\n\t\t\t\treturn v;\n\t\t\t}\n\t\t}\n\t}\n\treturn ndims;\n}\n\n\n// MAIN //\n\n/**\n* Determines (nested) array dimensions.\n*\n* @param {ArrayLikeObject} arr - array\n* @throws {TypeError} must provide an array\n* @returns {Array} array shape\n*\n* @example\n* var arr = [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ];\n*\n* var shape = arrayShape( arr );\n* // returns [ 3, 3 ]\n*\n* @example\n* var arr = [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8 ] ];\n*\n* var shape = arrayShape( arr );\n* // returns [ 3 ]\n*\n* @example\n* var arr = [ [ 1, 2, 3 ], [ 4, 5, 6 ], null ];\n*\n* var shape = arrayShape( arr );\n* // returns [ 3 ]\n*/\nfunction arrayShape( arr ) {\n\tvar shape;\n\tvar ndims;\n\n\tif ( !isArrayLikeObject( arr ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide an array-like object. Value: `%s`.', arr ) );\n\t}\n\t// Initialize the shape/dimensions array:\n\tshape = [ arr.length ];\n\n\t// Eagerly determine array dimensions:\n\trecurse( shape, arr );\n\tndims = shape.length;\n\n\t// Check that all array element dimensions are consistent:\n\tif ( ndims > 1 ) {\n\t\t// If `check()` returns a value less than `ndims`, trim off the inconsistent dimensions:\n\t\tshape.length = check( ndims, shape, 1, arr, ndims > 2 );\n\t}\n\treturn shape;\n}\n\n\n// EXPORTS //\n\nmodule.exports = arrayShape;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Determine (nested) array dimensions.\n*\n* @module @stdlib/array/shape\n*\n* @example\n* var arrayShape = require( '@stdlib/array/shape' );\n*\n* var arr = [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ];\n*\n* var shape = arrayShape( arr );\n* // returns [ 3, 3 ]\n*\n* @example\n* var arrayShape = require( '@stdlib/array/shape' );\n*\n* var arr = [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8 ] ];\n*\n* var shape = arrayShape( arr );\n* // returns [ 3 ]\n*\n* @example\n* var arrayShape = require( '@stdlib/array/shape' );\n*\n* var arr = [ [ 1, 2, 3 ], [ 4, 5, 6 ], null ];\n*\n* var shape = arrayShape( arr );\n* // returns [ 3 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar ctor = ( typeof SharedArrayBuffer === 'function' ) ? SharedArrayBuffer : null; // eslint-disable-line stdlib/require-globals, no-undef\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Constructor returning an object used to represent a generic, fixed-length raw binary data buffer which can be used to create views of shared memory.\n*\n* @param {NonNegativeInteger} size - number of bytes\n* @throws {Error} not implemented\n*/\nfunction polyfill( size ) { // eslint-disable-line no-unused-vars\n\tthrow new Error( 'not supported. The current environment does not support SharedArrayBuffers, and, unfortunately, SharedArrayBuffers cannot be polyfilled. For shared memory applications, upgrade your runtime environment to one which supports SharedArrayBuffers.' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = polyfill;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Constructor returning an object used to represent a generic, fixed-length raw binary data buffer which can be used to create views of shared memory.\n*\n* @module @stdlib/array/shared-buffer\n*\n* @example\n* var ctor = require( '@stdlib/array/shared-buffer' );\n*\n* var buf;\n* try {\n*     buf = new ctor( 10 );\n*     // returns <SharedArrayBuffer>\n* } catch ( err ) {\n*     console.log( 'Environment does not support SharedArrayBuffers.' );\n* }\n*/\n\n// MODULES //\n\nvar hasSharedArrayBufferSupport = require( '@stdlib/assert/has-sharedarraybuffer-support' ); // eslint-disable-line id-length\nvar builtin = require( './main.js' );\nvar polyfill = require( './polyfill.js' );\n\n\n// MAIN //\n\nvar ctor;\nif ( hasSharedArrayBufferSupport() ) {\n\tctor = builtin;\n} else {\n\tctor = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isObject = require( '@stdlib/assert/is-plain-object' );\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isAccessorArray = require( './../../base/assert/is-accessor-array' );\nvar iteratorSymbol = require( '@stdlib/symbol/iterator' );\nvar accessorGetter = require( './../../base/accessor-getter' );\nvar getter = require( './../../base/getter' );\nvar dtype = require( './../../dtype' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Returns an iterator which repeatedly iterates over each element in an array-like object.\n*\n* @param {Collection} src - input value\n* @param {Options} [options] - function options\n* @param {NonNegativeInteger} [options.iter] - number of iterations\n* @param {integer} [options.dir=1] - iteration direction\n* @param {Function} [mapFcn] - function to invoke for each iterated value\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} first argument must be an array-like object\n* @throws {TypeError} options argument must be an object\n* @throws {TypeError} must provide valid options\n* @throws {TypeError} callback argument must be a function\n* @returns {Iterator} iterator\n*\n* @example\n* var iter = circarray2iterator( [ 1, 2, 3, 4 ] );\n*\n* var v = iter.next().value;\n* // returns 1\n*\n* v = iter.next().value;\n* // returns 2\n*\n* v = iter.next().value;\n* // returns 3\n*\n* // ...\n*/\nfunction circarray2iterator( src ) {\n\tvar thisArg;\n\tvar options;\n\tvar count;\n\tvar opts;\n\tvar iter;\n\tvar FLG;\n\tvar fcn;\n\tvar get;\n\tvar dt;\n\tvar i;\n\tif ( !isCollection( src ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be an array-like object. Value: `%s`.', src ) );\n\t}\n\topts = {\n\t\t'iter': 1e308, // ~infinity\n\t\t'dir': 1       // left to right iteration\n\t};\n\tif ( arguments.length > 1 ) {\n\t\tif ( isObject( arguments[ 1 ] ) ) {\n\t\t\toptions = arguments[ 1 ];\n\t\t\tif ( arguments.length > 2 ) {\n\t\t\t\tfcn = arguments[ 2 ];\n\t\t\t\tif ( !isFunction( fcn ) ) {\n\t\t\t\t\tthrow new TypeError( format( 'invalid argument. Callback argument must be a function. Value: `%s`.', fcn ) );\n\t\t\t\t}\n\t\t\t\tthisArg = arguments[ 3 ];\n\t\t\t}\n\t\t\tif ( hasOwnProp( options, 'iter' ) ) {\n\t\t\t\topts.iter = options.iter;\n\t\t\t\tif ( !isNonNegativeInteger( options.iter ) ) {\n\t\t\t\t\tthrow new TypeError( format( 'invalid option. `%s` option must be a nonnegative integer. Option: `%s`.', 'iter', options.iter ) );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( hasOwnProp( options, 'dir' ) ) {\n\t\t\t\topts.dir = options.dir;\n\t\t\t\tif ( options.dir !== 1 && options.dir !== -1 ) {\n\t\t\t\t\tthrow new TypeError( format( 'invalid option. `%s` option must be either `1` or `-1`. Option: `%s`.', 'dir', options.dir ) );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfcn = arguments[ 1 ];\n\t\t\tif ( !isFunction( fcn ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be either a function or an options object. Value: `%s`.', fcn ) );\n\t\t\t}\n\t\t\tthisArg = arguments[ 2 ];\n\t\t}\n\t}\n\tcount = 0;\n\n\t// Create an iterator protocol-compliant object:\n\titer = {};\n\tif ( fcn ) {\n\t\tif ( opts.dir === 1 ) {\n\t\t\ti = -1;\n\t\t\tsetReadOnly( iter, 'next', next1a );\n\t\t} else {\n\t\t\ti = src.length;\n\t\t\tsetReadOnly( iter, 'next', next1b );\n\t\t}\n\t} else if ( opts.dir === 1 ) {\n\t\ti = -1;\n\t\tsetReadOnly( iter, 'next', next2a );\n\t} else {\n\t\ti = src.length;\n\t\tsetReadOnly( iter, 'next', next2b );\n\t}\n\tsetReadOnly( iter, 'return', end );\n\n\t// If an environment supports `Symbol.iterator`, make the iterator iterable:\n\tif ( iteratorSymbol ) {\n\t\tsetReadOnly( iter, iteratorSymbol, factory );\n\t}\n\t// Resolve an accessor for retrieving array elements (e.g., to accommodate `Complex64Array`, etc):\n\tdt = dtype( src );\n\tif ( isAccessorArray( src ) ) {\n\t\tget = accessorGetter( dt );\n\t} else {\n\t\tget = getter( dt );\n\t}\n\treturn iter;\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next1a() {\n\t\ti = (i+1) % src.length;\n\t\tcount += 1;\n\t\tif ( FLG || count > opts.iter || src.length === 0 ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': fcn.call( thisArg, get( src, i ), i, count, src ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next1b() {\n\t\ti -= 1;\n\t\tif ( i < 0 ) {\n\t\t\ti += src.length;\n\t\t}\n\t\tcount += 1;\n\t\tif ( FLG || count > opts.iter || src.length === 0 ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': fcn.call( thisArg, get( src, i ), i, count, src ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next2a() {\n\t\ti = (i+1) % src.length;\n\t\tcount += 1;\n\t\tif ( FLG || count > opts.iter || src.length === 0 ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': get( src, i ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next2b() {\n\t\ti -= 1;\n\t\tif ( i < 0 ) {\n\t\t\ti += src.length;\n\t\t}\n\t\tcount += 1;\n\t\tif ( FLG || count > opts.iter || src.length === 0 ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': get( src, i ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Finishes an iterator.\n\t*\n\t* @private\n\t* @param {*} [value] - value to return\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction end( value ) {\n\t\tFLG = true;\n\t\tif ( arguments.length ) {\n\t\t\treturn {\n\t\t\t\t'value': value,\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'done': true\n\t\t};\n\t}\n\n\t/**\n\t* Returns a new iterator.\n\t*\n\t* @private\n\t* @returns {Iterator} iterator\n\t*/\n\tfunction factory() {\n\t\tif ( fcn ) {\n\t\t\treturn circarray2iterator( src, opts, fcn, thisArg );\n\t\t}\n\t\treturn circarray2iterator( src, opts );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = circarray2iterator;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an iterator which repeatedly iterates over the elements of an array-like object.\n*\n* @module @stdlib/array/to-circular-iterator\n*\n* @example\n* var circarray2iterator = require( '@stdlib/array/to-circular-iterator' );\n*\n* var iter = circarray2iterator( [ 1, 2, 3, 4 ] );\n*\n* var v = iter.next().value;\n* // returns 1\n*\n* v = iter.next().value;\n* // returns 2\n*\n* v = iter.next().value;\n* // returns 3\n*\n* // ...\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isAccessorArray = require( './../../base/assert/is-accessor-array' );\nvar iteratorSymbol = require( '@stdlib/symbol/iterator' );\nvar accessorGetter = require( './../../base/accessor-getter' );\nvar getter = require( './../../base/getter' );\nvar dtype = require( './../../dtype' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Returns an iterator which iterates over each element in an array-like object.\n*\n* @param {Collection} src - input value\n* @param {Function} [mapFcn] - function to invoke for each iterated value\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} first argument must be an array-like object\n* @throws {TypeError} second argument must be a function\n* @returns {Iterator} iterator\n*\n* @example\n* var iter = array2iterator( [ 1, 2, 3, 4 ] );\n*\n* var v = iter.next().value;\n* // returns 1\n*\n* v = iter.next().value;\n* // returns 2\n*\n* v = iter.next().value;\n* // returns 3\n*\n* // ...\n*/\nfunction array2iterator( src ) {\n\tvar thisArg;\n\tvar iter;\n\tvar FLG;\n\tvar fcn;\n\tvar get;\n\tvar dt;\n\tvar i;\n\tif ( !isCollection( src ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be an array-like object. Value: `%s`.', src ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tfcn = arguments[ 1 ];\n\t\tif ( !isFunction( fcn ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a function. Value: `%s`.', fcn ) );\n\t\t}\n\t\tthisArg = arguments[ 2 ];\n\t}\n\ti = -1;\n\n\t// Create an iterator protocol-compliant object:\n\titer = {};\n\tif ( fcn ) {\n\t\tsetReadOnly( iter, 'next', next1 );\n\t} else {\n\t\tsetReadOnly( iter, 'next', next2 );\n\t}\n\tsetReadOnly( iter, 'return', end );\n\n\t// If an environment supports `Symbol.iterator`, make the iterator iterable:\n\tif ( iteratorSymbol ) {\n\t\tsetReadOnly( iter, iteratorSymbol, factory );\n\t}\n\t// Resolve an accessor for retrieving array elements (e.g., to accommodate `Complex64Array`, etc):\n\tdt = dtype( src );\n\tif ( isAccessorArray( src ) ) {\n\t\tget = accessorGetter( dt );\n\t} else {\n\t\tget = getter( dt );\n\t}\n\treturn iter;\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next1() {\n\t\ti += 1;\n\t\tif ( FLG || i >= src.length ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': fcn.call( thisArg, get( src, i ), i, src ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next2() {\n\t\ti += 1;\n\t\tif ( FLG || i >= src.length ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': get( src, i ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Finishes an iterator.\n\t*\n\t* @private\n\t* @param {*} [value] - value to return\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction end( value ) {\n\t\tFLG = true;\n\t\tif ( arguments.length ) {\n\t\t\treturn {\n\t\t\t\t'value': value,\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'done': true\n\t\t};\n\t}\n\n\t/**\n\t* Returns a new iterator.\n\t*\n\t* @private\n\t* @returns {Iterator} iterator\n\t*/\n\tfunction factory() {\n\t\tif ( fcn ) {\n\t\t\treturn array2iterator( src, fcn, thisArg );\n\t\t}\n\t\treturn array2iterator( src );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = array2iterator;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an iterator from an array-like object.\n*\n* @module @stdlib/array/to-iterator\n*\n* @example\n* var array2iterator = require( '@stdlib/array/to-iterator' );\n*\n* var iter = array2iterator( [ 1, 2, 3, 4 ] );\n*\n* var v = iter.next().value;\n* // returns 1\n*\n* v = iter.next().value;\n* // returns 2\n*\n* v = iter.next().value;\n* // returns 3\n*\n* // ...\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isAccessorArray = require( './../../base/assert/is-accessor-array' );\nvar iteratorSymbol = require( '@stdlib/symbol/iterator' );\nvar accessorGetter = require( './../../base/accessor-getter' );\nvar getter = require( './../../base/getter' );\nvar dtype = require( './../../dtype' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Returns an iterator which iterates from right to left over each element in an array-like object.\n*\n* ## Notes\n*\n* -   For dynamic array resizing, the only behavior made intentionally consistent with iterating from left to right is when elements are pushed onto the beginning (end) of an array. In other words, iterating from left to right combined with `[].push()` is consistent with iterating from right to left combined with `[].unshift()`.\n*\n* @param {Collection} src - input value\n* @param {Function} [mapFcn] - function to invoke for each iterated value\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} first argument must be an array-like object\n* @throws {TypeError} second argument must be a function\n* @returns {Iterator} iterator\n*\n* @example\n* var iter = array2iteratorRight( [ 1, 2, 3, 4 ] );\n*\n* var v = iter.next().value;\n* // returns 4\n*\n* v = iter.next().value;\n* // returns 3\n*\n* v = iter.next().value;\n* // returns 2\n*\n* // ...\n*/\nfunction array2iteratorRight( src ) {\n\tvar thisArg;\n\tvar iter;\n\tvar FLG;\n\tvar fcn;\n\tvar len;\n\tvar get;\n\tvar dt;\n\tvar i;\n\tif ( !isCollection( src ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be an array-like object. Value: `%s`.', src ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tfcn = arguments[ 1 ];\n\t\tif ( !isFunction( fcn ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a function. Value: `%s`.', fcn ) );\n\t\t}\n\t\tthisArg = arguments[ 2 ];\n\t}\n\tlen = src.length;\n\ti = len;\n\n\t// Create an iterator protocol-compliant object:\n\titer = {};\n\tif ( fcn ) {\n\t\tsetReadOnly( iter, 'next', next1 );\n\t} else {\n\t\tsetReadOnly( iter, 'next', next2 );\n\t}\n\tsetReadOnly( iter, 'return', end );\n\n\t// If an environment supports `Symbol.iterator`, make the iterator iterable:\n\tif ( iteratorSymbol ) {\n\t\tsetReadOnly( iter, iteratorSymbol, factory );\n\t}\n\t// Resolve an accessor for retrieving array elements (e.g., to accommodate `Complex64Array`, etc):\n\tdt = dtype( src );\n\tif ( isAccessorArray( src ) ) {\n\t\tget = accessorGetter( dt );\n\t} else {\n\t\tget = getter( dt );\n\t}\n\treturn iter;\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next1() {\n\t\ti += src.length - len - 1; // accounts for a dynamic array\n\t\tlen = src.length;\n\t\tif ( FLG || i < 0 ) {\n\t\t\tFLG = true;\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': fcn.call( thisArg, get( src, i ), i, src ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next2() {\n\t\ti += src.length - len - 1; // accounts for a dynamic array\n\t\tlen = src.length;\n\t\tif ( FLG || i < 0 ) {\n\t\t\tFLG = true;\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': get( src, i ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Finishes an iterator.\n\t*\n\t* @private\n\t* @param {*} [value] - value to return\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction end( value ) {\n\t\tFLG = true;\n\t\tif ( arguments.length ) {\n\t\t\treturn {\n\t\t\t\t'value': value,\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'done': true\n\t\t};\n\t}\n\n\t/**\n\t* Returns a new iterator.\n\t*\n\t* @private\n\t* @returns {Iterator} iterator\n\t*/\n\tfunction factory() {\n\t\tif ( fcn ) {\n\t\t\treturn array2iteratorRight( src, fcn, thisArg );\n\t\t}\n\t\treturn array2iteratorRight( src );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = array2iteratorRight;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an iterator from an array-like object, iterating from right to left.\n*\n* @module @stdlib/array/to-iterator-right\n*\n* @example\n* var array2iteratorRight = require( '@stdlib/array/to-iterator-right' );\n*\n* var iter = array2iteratorRight( [ 1, 2, 3, 4 ] );\n*\n* var v = iter.next().value;\n* // returns 4\n*\n* v = iter.next().value;\n* // returns 3\n*\n* v = iter.next().value;\n* // returns 2\n*\n* // ...\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Int8Array = require( './../../int8' );\nvar Uint8Array = require( './../../uint8' );\nvar Uint8ClampedArray = require( './../../uint8c' );\nvar Int16Array = require( './../../int16' );\nvar Uint16Array = require( './../../uint16' );\nvar Int32Array = require( './../../int32' );\nvar Uint32Array = require( './../../uint32' );\nvar Float32Array = require( './../../float32' );\nvar Float64Array = require( './../../float64' );\nvar Complex64Array = require( './../../complex64' );\nvar Complex128Array = require( './../../complex128' );\n\n\n// MAIN //\n\nvar CTORS = [\n\t[ Float64Array, 'Float64Array' ],\n\t[ Float32Array, 'Float32Array' ],\n\t[ Int32Array, 'Int32Array' ],\n\t[ Uint32Array, 'Uint32Array' ],\n\t[ Int16Array, 'Int16Array' ],\n\t[ Uint16Array, 'Uint16Array' ],\n\t[ Int8Array, 'Int8Array' ],\n\t[ Uint8Array, 'Uint8Array' ],\n\t[ Uint8ClampedArray, 'Uint8ClampedArray' ],\n\t[ Complex64Array, 'Complex64Array' ],\n\t[ Complex128Array, 'Complex128Array' ]\n];\n\n\n// EXPORTS //\n\nmodule.exports = CTORS;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar instanceOf = require( '@stdlib/assert/instance-of' );\nvar ctorName = require( '@stdlib/utils/constructor-name' );\nvar getPrototypeOf = require( '@stdlib/utils/get-prototype-of' );\nvar CTORS = require( './ctors.js' );\n\n\n// MAIN //\n\n/**\n* Returns the typed array type.\n*\n* @private\n* @param {TypedArray} arr - typed array\n* @returns {(string|void)} typed array type\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var arr = new Float64Array( 5 );\n* var str = typeName( arr );\n* // returns 'Float64Array'\n*/\nfunction typeName( arr ) {\n\tvar v;\n\tvar i;\n\n\t// Check for typed array objects from the same realm (same Node.js `vm` or same `Window` object)...\n\tfor ( i = 0; i < CTORS.length; i++ ) {\n\t\tif ( instanceOf( arr, CTORS[ i ][ 0 ] ) ) {\n\t\t\treturn CTORS[ i ][ 1 ];\n\t\t}\n\t}\n\t// Walk the prototype tree until we find an object having a desired native class...\n\twhile ( arr ) {\n\t\tv = ctorName( arr );\n\t\tfor ( i = 0; i < CTORS.length; i++ ) {\n\t\t\tif ( v === CTORS[ i ][ 1 ] ) {\n\t\t\t\treturn CTORS[ i ][ 1 ];\n\t\t\t}\n\t\t}\n\t\tarr = getPrototypeOf( arr );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = typeName;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isTypedArray = require( '@stdlib/assert/is-typed-array' );\nvar isComplexTypedArray = require( '@stdlib/assert/is-complex-typed-array' );\nvar reinterpret64 = require( '@stdlib/strided/base/reinterpret-complex64' );\nvar reinterpret128 = require( '@stdlib/strided/base/reinterpret-complex128' );\nvar format = require( '@stdlib/string/format' );\nvar typeName = require( './type.js' );\n\n\n// MAIN //\n\n/**\n* Returns a JSON representation of a typed array.\n*\n* ## Notes\n*\n* -   We build a JSON object representing a typed array similar to how Node.js `Buffer` objects are represented. See [Buffer][1].\n*\n* [1]: https://nodejs.org/api/buffer.html#buffer_buf_tojson\n*\n* @param {TypedArray} arr - typed array to serialize\n* @throws {TypeError} first argument must be a typed array\n* @returns {Object} JSON representation\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var arr = new Float64Array( [ 5.0, 3.0 ] );\n* var json = typedarray2json( arr );\n* // returns { 'type': 'Float64Array', 'data': [ 5.0, 3.0 ] }\n*/\nfunction typedarray2json( arr ) {\n\tvar data;\n\tvar out;\n\tvar i;\n\n\tif ( isTypedArray( arr ) ) {\n\t\tdata = arr;\n\t} else if ( isComplexTypedArray( arr ) ) {\n\t\tif ( arr.BYTES_PER_ELEMENT === 8 ) {\n\t\t\tdata = reinterpret64( arr, 0 );\n\t\t} else { // arr.BYTES_PER_ELEMENT === 16\n\t\t\tdata = reinterpret128( arr, 0 );\n\t\t}\n\t} else {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a typed array. Value: `%s`.', arr ) );\n\t}\n\tout = {\n\t\t'type': typeName( arr ),\n\t\t'data': []\n\t};\n\tfor ( i = 0; i < data.length; i++ ) {\n\t\tout.data.push( data[ i ] );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = typedarray2json;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a JSON representation of a typed array.\n*\n* @module @stdlib/array/to-json\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var typedarray2json = require( '@stdlib/array/to-json' );\n*\n* var arr = new Float64Array( [ 5.0, 3.0 ] );\n* var json = typedarray2json( arr );\n* // returns { 'type': 'Float64Array', 'data': [ 5.0, 3.0 ] }\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2019 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isAccessorArray = require( './../../base/assert/is-accessor-array' );\nvar iteratorSymbol = require( '@stdlib/symbol/iterator' );\nvar accessorGetter = require( './../../base/accessor-getter' );\nvar getter = require( './../../base/getter' );\nvar dtype = require( './../../dtype' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Returns an iterator which iterates over each element in a sparse array-like object.\n*\n* @param {Collection} src - input value\n* @param {Function} [mapFcn] - function to invoke for each iterated value\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} first argument must be an array-like object\n* @throws {TypeError} second argument must be a function\n* @returns {Iterator} iterator\n*\n* @example\n* var iter = sparsearray2iterator( [ 1, , 3, 4 ] );\n*\n* var v = iter.next().value;\n* // returns 1\n*\n* v = iter.next().value;\n* // returns 3\n*\n* v = iter.next().value;\n* // returns 4\n*/\nfunction sparsearray2iterator( src ) {\n\tvar thisArg;\n\tvar iter;\n\tvar FLG;\n\tvar fcn;\n\tvar get;\n\tvar dt;\n\tvar i;\n\tif ( !isCollection( src ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be an array-like object. Value: `%s`.', src ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tfcn = arguments[ 1 ];\n\t\tif ( !isFunction( fcn ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a function. Value: `%s`.', fcn ) );\n\t\t}\n\t\tthisArg = arguments[ 2 ];\n\t}\n\ti = -1;\n\n\t// Create an iterator protocol-compliant object:\n\titer = {};\n\tif ( fcn ) {\n\t\tsetReadOnly( iter, 'next', next1 );\n\t} else {\n\t\tsetReadOnly( iter, 'next', next2 );\n\t}\n\tsetReadOnly( iter, 'return', end );\n\n\t// If an environment supports `Symbol.iterator`, make the iterator iterable:\n\tif ( iteratorSymbol ) {\n\t\tsetReadOnly( iter, iteratorSymbol, factory );\n\t}\n\t// Resolve an accessor for retrieving array elements (e.g., to accommodate `Complex64Array`, etc):\n\tdt = dtype( src );\n\tif ( isAccessorArray( src ) ) {\n\t\tget = accessorGetter( dt );\n\t} else {\n\t\tget = getter( dt );\n\t}\n\treturn iter;\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next1() {\n\t\tvar len;\n\t\tif ( FLG ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tlen = src.length;\n\t\ti += 1;\n\t\twhile ( i < len && get( src, i ) === void 0 ) {\n\t\t\ti += 1;\n\t\t}\n\t\tif ( i >= len ) {\n\t\t\tFLG = true;\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': fcn.call( thisArg, get( src, i ), i, src ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next2() {\n\t\tvar len;\n\t\tif ( FLG ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tlen = src.length;\n\t\ti += 1;\n\t\twhile ( i < len && get( src, i ) === void 0 ) {\n\t\t\ti += 1;\n\t\t}\n\t\tif ( i >= len ) {\n\t\t\tFLG = true;\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': get( src, i ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Finishes an iterator.\n\t*\n\t* @private\n\t* @param {*} [value] - value to return\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction end( value ) {\n\t\tFLG = true;\n\t\tif ( arguments.length ) {\n\t\t\treturn {\n\t\t\t\t'value': value,\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'done': true\n\t\t};\n\t}\n\n\t/**\n\t* Returns a new iterator.\n\t*\n\t* @private\n\t* @returns {Iterator} iterator\n\t*/\n\tfunction factory() {\n\t\tif ( fcn ) {\n\t\t\treturn sparsearray2iterator( src, fcn, thisArg );\n\t\t}\n\t\treturn sparsearray2iterator( src );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = sparsearray2iterator;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2019 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an iterator from a sparse array-like value.\n*\n* @module @stdlib/array/to-sparse-iterator\n*\n* @example\n* var sparsearray2iterator = require( '@stdlib/array/to-sparse-iterator' );\n*\n* var iter = sparsearray2iterator( [ 1, , 3, 4 ] );\n*\n* var v = iter.next().value;\n* // returns 1\n*\n* v = iter.next().value;\n* // returns 3\n*\n* v = iter.next().value;\n* // returns 4\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2019 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isAccessorArray = require( './../../base/assert/is-accessor-array' );\nvar iteratorSymbol = require( '@stdlib/symbol/iterator' );\nvar accessorGetter = require( './../../base/accessor-getter' );\nvar getter = require( './../../base/getter' );\nvar dtype = require( './../../dtype' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Returns an iterator which iterates from right to left over each element in a sparse array-like object.\n*\n* ## Notes\n*\n* -   For dynamic array resizing, the only behavior made intentionally consistent with iterating from left to right is when elements are pushed onto the beginning (end) of an array. In other words, iterating from left to right combined with `[].push()` is consistent with iterating from right to left combined with `[].unshift()`.\n*\n* @param {Collection} src - input value\n* @param {Function} [mapFcn] - function to invoke for each iterated value\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} first argument must be an array-like object\n* @throws {TypeError} second argument must be a function\n* @returns {Iterator} iterator\n*\n* @example\n* var iter = sparsearray2iteratorRight( [ 1, , 3, 4 ] );\n*\n* var v = iter.next().value;\n* // returns 4\n*\n* v = iter.next().value;\n* // returns 3\n*\n* v = iter.next().value;\n* // returns 1\n*/\nfunction sparsearray2iteratorRight( src ) {\n\tvar thisArg;\n\tvar iter;\n\tvar FLG;\n\tvar fcn;\n\tvar len;\n\tvar get;\n\tvar dt;\n\tvar i;\n\tif ( !isCollection( src ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be an array-like object. Value: `%s`.', src ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tfcn = arguments[ 1 ];\n\t\tif ( !isFunction( fcn ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a function. Value: `%s`.', fcn ) );\n\t\t}\n\t\tthisArg = arguments[ 2 ];\n\t}\n\tlen = src.length;\n\ti = len;\n\n\t// Create an iterator protocol-compliant object:\n\titer = {};\n\tif ( fcn ) {\n\t\tsetReadOnly( iter, 'next', next1 );\n\t} else {\n\t\tsetReadOnly( iter, 'next', next2 );\n\t}\n\tsetReadOnly( iter, 'return', end );\n\n\t// If an environment supports `Symbol.iterator`, make the iterator iterable:\n\tif ( iteratorSymbol ) {\n\t\tsetReadOnly( iter, iteratorSymbol, factory );\n\t}\n\t// Resolve an accessor for retrieving array elements (e.g., to accommodate `Complex64Array`, etc):\n\tdt = dtype( src );\n\tif ( isAccessorArray( src ) ) {\n\t\tget = accessorGetter( dt );\n\t} else {\n\t\tget = getter( dt );\n\t}\n\treturn iter;\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next1() {\n\t\tif ( FLG ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\ti += src.length - len - 1; // accounts for a dynamic array\n\t\tlen = src.length;\n\t\twhile ( i >= 0 && get( src, i ) === void 0 ) {\n\t\t\ti -= 1;\n\t\t}\n\t\tif ( i < 0 ) {\n\t\t\tFLG = true;\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': fcn.call( thisArg, get( src, i ), i, src ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next2() {\n\t\tif ( FLG ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\ti += src.length - len - 1; // accounts for a dynamic array\n\t\tlen = src.length;\n\t\twhile ( i >= 0 && get( src, i ) === void 0 ) {\n\t\t\ti -= 1;\n\t\t}\n\t\tif ( i < 0 ) {\n\t\t\tFLG = true;\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': get( src, i ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Finishes an iterator.\n\t*\n\t* @private\n\t* @param {*} [value] - value to return\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction end( value ) {\n\t\tFLG = true;\n\t\tif ( arguments.length ) {\n\t\t\treturn {\n\t\t\t\t'value': value,\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'done': true\n\t\t};\n\t}\n\n\t/**\n\t* Returns a new iterator.\n\t*\n\t* @private\n\t* @returns {Iterator} iterator\n\t*/\n\tfunction factory() {\n\t\tif ( fcn ) {\n\t\t\treturn sparsearray2iteratorRight( src, fcn, thisArg );\n\t\t}\n\t\treturn sparsearray2iteratorRight( src );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = sparsearray2iteratorRight;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2019 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an iterator from a sparse array-like value, iterating from right to left.\n*\n* @module @stdlib/array/to-sparse-iterator-right\n*\n* @example\n* var sparsearray2iteratorRight = require( '@stdlib/array/to-sparse-iterator-right' );\n*\n* var iter = sparsearray2iteratorRight( [ 1, , 3, 4 ] );\n*\n* var v = iter.next().value;\n* // returns 4\n*\n* v = iter.next().value;\n* // returns 3\n*\n* v = iter.next().value;\n* // returns 1\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar isAccessorArray = require( './../../base/assert/is-accessor-array' );\nvar iteratorSymbol = require( '@stdlib/symbol/iterator' );\nvar accessorGetter = require( './../../base/accessor-getter' );\nvar getter = require( './../../base/getter' );\nvar dtype = require( './../../dtype' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Returns an iterator which iterates over elements in an array-like object according to specified stride parameters.\n*\n* @param {NonNegativeInteger} N - number of values to iterate\n* @param {Collection} src - input value\n* @param {integer} stride - stride length\n* @param {NonNegativeInteger} offset - starting index\n* @param {Function} [mapFcn] - function to invoke for each iterated value\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} first argument must be a nonnegative integer\n* @throws {TypeError} second argument must be an array-like object\n* @throws {TypeError} third argument must be an integer\n* @throws {TypeError} fourth argument must be a nonnegative integer\n* @throws {TypeError} fifth argument must be a function\n* @returns {Iterator} iterator\n*\n* @example\n* var values = [ 1, 2, 3, 4, 5, 6, 7, 8 ];\n*\n* var N = 4;\n* var stride = -2;\n* var offset = 6;\n*\n* var iter = stridedarray2iterator( N, values, stride, offset );\n*\n* var v = iter.next().value;\n* // returns 7\n*\n* v = iter.next().value;\n* // returns 5\n*\n* v = iter.next().value;\n* // returns 3\n*\n* // ...\n*/\nfunction stridedarray2iterator( N, src, stride, offset ) {\n\tvar thisArg;\n\tvar iter;\n\tvar FLG;\n\tvar fcn;\n\tvar idx;\n\tvar get;\n\tvar dt;\n\tvar i;\n\tif ( !isNonNegativeInteger( N ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a nonnegative integer. Value: `%s`.', N ) );\n\t}\n\tif ( !isCollection( src ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an array-like object. Value: `%s`.', src ) );\n\t}\n\tif ( !isInteger( stride ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Third argument must be an integer. Value: `%s`.', stride ) );\n\t}\n\tif ( !isNonNegativeInteger( offset ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Fourth argument must be a nonnegative integer. Value: `%s`.', offset ) );\n\t}\n\tif ( arguments.length > 4 ) {\n\t\tfcn = arguments[ 4 ];\n\t\tif ( !isFunction( fcn ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Fifth argument must be a function. Value: `%s`.', fcn ) );\n\t\t}\n\t\tthisArg = arguments[ 5 ];\n\t}\n\tidx = offset;\n\ti = -1;\n\n\t// Create an iterator protocol-compliant object:\n\titer = {};\n\tif ( fcn ) {\n\t\tsetReadOnly( iter, 'next', next1 );\n\t} else {\n\t\tsetReadOnly( iter, 'next', next2 );\n\t}\n\tsetReadOnly( iter, 'return', end );\n\n\t// If an environment supports `Symbol.iterator`, make the iterator iterable:\n\tif ( iteratorSymbol ) {\n\t\tsetReadOnly( iter, iteratorSymbol, factory );\n\t}\n\t// Resolve an accessor for retrieving array elements (e.g., to accommodate `Complex64Array`, etc):\n\tdt = dtype( src );\n\tif ( isAccessorArray( src ) ) {\n\t\tget = accessorGetter( dt );\n\t} else {\n\t\tget = getter( dt );\n\t}\n\treturn iter;\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next1() {\n\t\tvar v;\n\t\ti += 1;\n\t\tif ( FLG || i >= N ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tv = fcn.call( thisArg, get( src, idx ), idx, i, src );\n\t\tidx += stride;\n\t\treturn {\n\t\t\t'value': v,\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next2() {\n\t\tvar v;\n\t\ti += 1;\n\t\tif ( FLG || i >= N ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tv = get( src, idx );\n\t\tidx += stride;\n\t\treturn {\n\t\t\t'value': v,\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Finishes an iterator.\n\t*\n\t* @private\n\t* @param {*} [value] - value to return\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction end( value ) {\n\t\tFLG = true;\n\t\tif ( arguments.length ) {\n\t\t\treturn {\n\t\t\t\t'value': value,\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'done': true\n\t\t};\n\t}\n\n\t/**\n\t* Returns a new iterator.\n\t*\n\t* @private\n\t* @returns {Iterator} iterator\n\t*/\n\tfunction factory() {\n\t\tif ( fcn ) {\n\t\t\treturn stridedarray2iterator( N, src, stride, offset, fcn, thisArg ); // eslint-disable-line max-len\n\t\t}\n\t\treturn stridedarray2iterator( N, src, stride, offset );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = stridedarray2iterator;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an iterator from a strided array-like value.\n*\n* @module @stdlib/array/to-strided-iterator\n*\n* @example\n* var stridedarray2iterator = require( '@stdlib/array/to-strided-iterator' );\n*\n* var values = [ 1, 2, 3, 4, 5, 6, 7, 8 ];\n*\n* var N = 4;\n* var stride = -2;\n* var offset = 6;\n*\n* var iter = stridedarray2iterator( N, values, stride, offset );\n*\n* var v = iter.next().value;\n* // returns 7\n*\n* v = iter.next().value;\n* // returns 5\n*\n* v = iter.next().value;\n* // returns 3\n*\n* // ...\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2019 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar isAccessorArray = require( './../../base/assert/is-accessor-array' );\nvar iteratorSymbol = require( '@stdlib/symbol/iterator' );\nvar accessorGetter = require( './../../base/accessor-getter' );\nvar getter = require( './../../base/getter' );\nvar dtype = require( './../../dtype' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Returns an iterator which iterates over each element in an array-like object view.\n*\n* @param {Collection} src - input value\n* @param {integer} [begin=0] - starting index (inclusive)\n* @param {integer} [end=src.length] - ending index (non-inclusive)\n* @param {Function} [mapFcn] - function to invoke for each iterated value\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} first argument must be an array-like object\n* @throws {TypeError} second argument must be either an integer (starting index) or a function\n* @throws {TypeError} third argument must be either an integer (ending index) or a function\n* @throws {TypeError} fourth argument must be a function\n* @returns {Iterator} iterator\n*\n* @example\n* var iter = arrayview2iterator( [ 1, 2, 3, 4 ], 1, 3 );\n*\n* var v = iter.next().value;\n* // returns 2\n*\n* v = iter.next().value;\n* // returns 3\n*\n* var bool = iter.next().done;\n* // returns true\n*/\nfunction arrayview2iterator( src ) {\n\tvar thisArg;\n\tvar begin;\n\tvar nargs;\n\tvar iter;\n\tvar FLG;\n\tvar fcn;\n\tvar end;\n\tvar get;\n\tvar dt;\n\tvar i;\n\tif ( !isCollection( src ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be an array-like object. Value: `%s`.', src ) );\n\t}\n\tnargs = arguments.length;\n\tif ( nargs === 1 ) {\n\t\tbegin = 0;\n\t\tend = src.length;\n\t} else if ( nargs === 2 ) {\n\t\tif ( isFunction( arguments[ 1 ] ) ) {\n\t\t\tbegin = 0;\n\t\t\tfcn = arguments[ 1 ];\n\t\t} else {\n\t\t\tbegin = arguments[ 1 ];\n\t\t}\n\t\tend = src.length;\n\t} else if ( nargs === 3 ) {\n\t\tif ( isFunction( arguments[ 1 ] ) ) {\n\t\t\tbegin = 0;\n\t\t\tend = src.length;\n\t\t\tfcn = arguments[ 1 ];\n\t\t\tthisArg = arguments[ 2 ];\n\t\t} else if ( isFunction( arguments[ 2 ] ) ) {\n\t\t\tbegin = arguments[ 1 ];\n\t\t\tend = src.length;\n\t\t\tfcn = arguments[ 2 ];\n\t\t} else {\n\t\t\tbegin = arguments[ 1 ];\n\t\t\tend = arguments[ 2 ];\n\t\t}\n\t} else { // nargs >= 4\n\t\tbegin = arguments[ 1 ];\n\t\tend = arguments[ 2 ];\n\t\tfcn = arguments[ 3 ];\n\t\tif ( !isFunction( fcn ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Fourth argument must be a function. Value: `%s`.', fcn ) );\n\t\t}\n\t\tthisArg = arguments[ 4 ];\n\t}\n\tif ( !isInteger( begin ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be either an integer (starting index) or a function. Value: `%s`.', begin ) );\n\t}\n\tif ( !isInteger( end ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Third argument must be either an integer (ending index) or a function. Value: `%s`.', end ) );\n\t}\n\tif ( end < 0 ) {\n\t\tend = src.length + end;\n\t\tif ( end < 0 ) {\n\t\t\tend = 0;\n\t\t}\n\t} else if ( end > src.length ) {\n\t\tend = src.length;\n\t}\n\tif ( begin < 0 ) {\n\t\tbegin = src.length + begin;\n\t\tif ( begin < 0 ) {\n\t\t\tbegin = 0;\n\t\t}\n\t}\n\ti = begin - 1;\n\n\t// Create an iterator protocol-compliant object:\n\titer = {};\n\tif ( fcn ) {\n\t\tsetReadOnly( iter, 'next', next1 );\n\t} else {\n\t\tsetReadOnly( iter, 'next', next2 );\n\t}\n\tsetReadOnly( iter, 'return', finish );\n\n\t// If an environment supports `Symbol.iterator`, make the iterator iterable:\n\tif ( iteratorSymbol ) {\n\t\tsetReadOnly( iter, iteratorSymbol, factory );\n\t}\n\t// Resolve an accessor for retrieving array elements (e.g., to accommodate `Complex64Array`, etc):\n\tdt = dtype( src );\n\tif ( isAccessorArray( src ) ) {\n\t\tget = accessorGetter( dt );\n\t} else {\n\t\tget = getter( dt );\n\t}\n\treturn iter;\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next1() {\n\t\ti += 1;\n\t\tif ( FLG || i >= end ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': fcn.call( thisArg, get( src, i ), i, i-begin, src ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next2() {\n\t\ti += 1;\n\t\tif ( FLG || i >= end ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': get( src, i ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Finishes an iterator.\n\t*\n\t* @private\n\t* @param {*} [value] - value to return\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction finish( value ) {\n\t\tFLG = true;\n\t\tif ( arguments.length ) {\n\t\t\treturn {\n\t\t\t\t'value': value,\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'done': true\n\t\t};\n\t}\n\n\t/**\n\t* Returns a new iterator.\n\t*\n\t* @private\n\t* @returns {Iterator} iterator\n\t*/\n\tfunction factory() {\n\t\tif ( fcn ) {\n\t\t\treturn arrayview2iterator( src, begin, end, fcn, thisArg );\n\t\t}\n\t\treturn arrayview2iterator( src, begin, end );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = arrayview2iterator;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2019 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an iterator from an array-like object view.\n*\n* @module @stdlib/array/to-view-iterator\n*\n* @example\n* var arrayview2iterator = require( '@stdlib/array/to-view-iterator' );\n*\n* var iter = arrayview2iterator( [ 1, 2, 3, 4 ], 1, 3 );\n*\n* var v = iter.next().value;\n* // returns 2\n*\n* v = iter.next().value;\n* // returns 3\n*\n* var bool = iter.next().done;\n* // returns true\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2019 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar isAccessorArray = require( './../../base/assert/is-accessor-array' );\nvar iteratorSymbol = require( '@stdlib/symbol/iterator' );\nvar accessorGetter = require( './../../base/accessor-getter' );\nvar getter = require( './../../base/getter' );\nvar dtype = require( './../../dtype' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Returns an iterator which iterates from right to left over each element in an array-like object view.\n*\n* @param {Collection} src - input value\n* @param {integer} [begin=0] - starting **view** index (inclusive)\n* @param {integer} [end=src.length] - ending **view** index (non-inclusive)\n* @param {Function} [mapFcn] - function to invoke for each iterated value\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} first argument must be an array-like object\n* @throws {TypeError} second argument must be either an integer (starting index) or a function\n* @throws {TypeError} third argument must be either an integer (ending index) or a function\n* @throws {TypeError} fourth argument must be a function\n* @returns {Iterator} iterator\n*\n* @example\n* var iter = arrayview2iteratorRight( [ 1, 2, 3, 4 ], 1, 3 );\n*\n* var v = iter.next().value;\n* // returns 3\n*\n* v = iter.next().value;\n* // returns 2\n*\n* var bool = iter.next().done;\n* // returns true\n*/\nfunction arrayview2iteratorRight( src ) {\n\tvar thisArg;\n\tvar begin;\n\tvar nargs;\n\tvar iter;\n\tvar FLG;\n\tvar fcn;\n\tvar end;\n\tvar get;\n\tvar dt;\n\tvar i;\n\tif ( !isCollection( src ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be an array-like object. Value: `%s`.', src ) );\n\t}\n\tnargs = arguments.length;\n\tif ( nargs === 1 ) {\n\t\tbegin = 0;\n\t\tend = src.length;\n\t} else if ( nargs === 2 ) {\n\t\tif ( isFunction( arguments[ 1 ] ) ) {\n\t\t\tbegin = 0;\n\t\t\tfcn = arguments[ 1 ];\n\t\t} else {\n\t\t\tbegin = arguments[ 1 ];\n\t\t}\n\t\tend = src.length;\n\t} else if ( nargs === 3 ) {\n\t\tif ( isFunction( arguments[ 1 ] ) ) {\n\t\t\tbegin = 0;\n\t\t\tend = src.length;\n\t\t\tfcn = arguments[ 1 ];\n\t\t\tthisArg = arguments[ 2 ];\n\t\t} else if ( isFunction( arguments[ 2 ] ) ) {\n\t\t\tbegin = arguments[ 1 ];\n\t\t\tend = src.length;\n\t\t\tfcn = arguments[ 2 ];\n\t\t} else {\n\t\t\tbegin = arguments[ 1 ];\n\t\t\tend = arguments[ 2 ];\n\t\t}\n\t} else { // nargs >= 4\n\t\tbegin = arguments[ 1 ];\n\t\tend = arguments[ 2 ];\n\t\tfcn = arguments[ 3 ];\n\t\tif ( !isFunction( fcn ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Fourth argument must be a function. Value: `%s`.', fcn ) );\n\t\t}\n\t\tthisArg = arguments[ 4 ];\n\t}\n\tif ( !isInteger( begin ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be either an integer (starting view index) or a function. Value: `%s`.', begin ) );\n\t}\n\tif ( !isInteger( end ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Third argument must be either an integer (ending view index) or a function. Value: `%s`.', end ) );\n\t}\n\tif ( end < 0 ) {\n\t\tend = src.length + end;\n\t\tif ( end < 0 ) {\n\t\t\tend = 0;\n\t\t}\n\t} else if ( end > src.length ) {\n\t\tend = src.length;\n\t}\n\tif ( begin < 0 ) {\n\t\tbegin = src.length + begin;\n\t\tif ( begin < 0 ) {\n\t\t\tbegin = 0;\n\t\t}\n\t}\n\ti = end;\n\n\t// Create an iterator protocol-compliant object:\n\titer = {};\n\tif ( fcn ) {\n\t\tsetReadOnly( iter, 'next', next1 );\n\t} else {\n\t\tsetReadOnly( iter, 'next', next2 );\n\t}\n\tsetReadOnly( iter, 'return', finish );\n\n\t// If an environment supports `Symbol.iterator`, make the iterator iterable:\n\tif ( iteratorSymbol ) {\n\t\tsetReadOnly( iter, iteratorSymbol, factory );\n\t}\n\t// Resolve an accessor for retrieving array elements (e.g., to accommodate `Complex64Array`, etc):\n\tdt = dtype( src );\n\tif ( isAccessorArray( src ) ) {\n\t\tget = accessorGetter( dt );\n\t} else {\n\t\tget = getter( dt );\n\t}\n\treturn iter;\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next1() {\n\t\ti -= 1;\n\t\tif ( FLG || i < begin ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': fcn.call( thisArg, get( src, i ), i, end-i-1, src ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next2() {\n\t\ti -= 1;\n\t\tif ( FLG || i < begin ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': get( src, i ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Finishes an iterator.\n\t*\n\t* @private\n\t* @param {*} [value] - value to return\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction finish( value ) {\n\t\tFLG = true;\n\t\tif ( arguments.length ) {\n\t\t\treturn {\n\t\t\t\t'value': value,\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'done': true\n\t\t};\n\t}\n\n\t/**\n\t* Returns a new iterator.\n\t*\n\t* @private\n\t* @returns {Iterator} iterator\n\t*/\n\tfunction factory() {\n\t\tif ( fcn ) {\n\t\t\treturn arrayview2iteratorRight( src, begin, end, fcn, thisArg );\n\t\t}\n\t\treturn arrayview2iteratorRight( src, begin, end );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = arrayview2iteratorRight;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2019 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an iterator from an array-like object view, iterating from right to left.\n*\n* @module @stdlib/array/to-view-iterator-right\n*\n* @example\n* var arrayview2iteratorRight = require( '@stdlib/array/to-view-iterator-right' );\n*\n* var iter = arrayview2iteratorRight( [ 1, 2, 3, 4 ], 1, 3 );\n*\n* var v = iter.next().value;\n* // returns 3\n*\n* v = iter.next().value;\n* // returns 2\n*\n* var bool = iter.next().done;\n* // returns true\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar ctors = require( './../../typed-ctors' );\nvar reinterpret128 = require( '@stdlib/strided/base/reinterpret-complex128' );\nvar reinterpret64 = require( '@stdlib/strided/base/reinterpret-complex64' );\nvar format = require( '@stdlib/string/format' );\n\n\n// VARIABLES //\n\nvar Complex64Array = ctors( 'complex64' );\nvar Complex128Array = ctors( 'complex128' );\n\n\n// MAIN //\n\n/**\n* Creates a typed array.\n*\n* @param {(NonNegativeInteger|ComplexArray|TypedArray|ArrayLikeObject|ArrayBuffer)} [arg] - a length, typed array, array-like object, or buffer\n* @param {NonNegativeInteger} [byteOffset=0] - byte offset\n* @param {NonNegativeInteger} [length] - view length\n* @param {string} [dtype=\"float64\"] - data type\n* @throws {TypeError} must provide a recognized data type\n* @returns {(ComplexArray|TypedArray)} typed array\n*\n* @example\n* var arr = typedarray();\n* // returns <Float64Array>\n*\n* @example\n* var arr = typedarray( 2 );\n* // returns <Float64Array>[ 0.0, 0.0 ]\n*\n* @example\n* var arr = typedarray( 2, 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0 ]\n*\n* @example\n* var arr = typedarray( [ 0.5, 0.5 ] );\n* // returns <Float64Array>[ 0.5, 0.5 ]\n*\n* @example\n* var arr = typedarray( [ 5, -3 ], 'int32' );\n* // returns <Int32Array>[ 5, -3 ]\n*\n* @example\n* var arr1 = typedarray( [ 5, 3 ], 'int32' );\n* var arr2 = typedarray( arr1 );\n* // returns <Float64Array>[ 5.0, 3.0 ]\n*\n* @example\n* var arr1 = typedarray( [ 5, 3 ], 'int32' );\n* var arr2 = typedarray( arr1, 'uint32' );\n* // returns <Uint32Array>[ 5, 3 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = typedarray( buf );\n* // returns <Float64Array>[ 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = typedarray( buf, 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0, 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = typedarray( buf, 8 );\n* // returns <Float64Array>[ 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = typedarray( buf, 8, 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = typedarray( buf, 8, 2 );\n* // returns <Float64Array>[ 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = typedarray( buf, 8, 2, 'int32' );\n* // returns <Int32Array>[ 0, 0 ]\n*/\nfunction typedarray() {\n\tvar nargs;\n\tvar dtype;\n\tvar ctor;\n\tvar arg;\n\n\tnargs = arguments.length;\n\tif ( nargs && isString( arguments[ nargs-1 ] ) ) {\n\t\tnargs -= 1;\n\t\tdtype = arguments[ nargs ];\n\t} else {\n\t\tdtype = 'float64';\n\t}\n\tctor = ctors( dtype );\n\tif ( ctor === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a recognized data type. Value: `%s`.', dtype ) );\n\t}\n\tif ( nargs <= 0 ) {\n\t\treturn new ctor( 0 );\n\t}\n\tif ( nargs === 1 ) {\n\t\targ = arguments[ 0 ];\n\n\t\t// Note: the following checks are not particularly robust, as `instanceof` will fail for cross-realm instances...\n\t\tif ( arg instanceof Complex64Array ) {\n\t\t\targ = reinterpret64( arg, 0 );\n\t\t} else if ( arg instanceof Complex128Array ) {\n\t\t\targ = reinterpret128( arg, 0 );\n\t\t}\n\t\treturn new ctor( arg );\n\t}\n\tif ( nargs === 2 ) {\n\t\treturn new ctor( arguments[0], arguments[1] );\n\t}\n\treturn new ctor( arguments[0], arguments[1], arguments[2] );\n}\n\n\n// EXPORTS //\n\nmodule.exports = typedarray;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a typed array.\n*\n* @module @stdlib/array/typed\n*\n* @example\n* var typedarray = require( '@stdlib/array/typed' );\n*\n* var arr = typedarray();\n* // returns <Float64Array>\n*\n* @example\n* var typedarray = require( '@stdlib/array/typed' );\n*\n* var arr = typedarray( 2 );\n* // returns <Float64Array>[ 0.0, 0.0 ]\n*\n* @example\n* var typedarray = require( '@stdlib/array/typed' );\n*\n* var arr = typedarray( 2, 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0 ]\n*\n* @example\n* var typedarray = require( '@stdlib/array/typed' );\n*\n* var arr = typedarray( [ 0.5, 0.5 ] );\n* // returns <Float64Array>[ 0.5, 0.5 ]\n*\n* @example\n* var typedarray = require( '@stdlib/array/typed' );\n*\n* var arr = typedarray( [ 5, -3 ], 'int32' );\n* // returns <Int32Array>[ 5, -3 ]\n*\n* @example\n* var typedarray = require( '@stdlib/array/typed' );\n*\n* var arr1 = typedarray( [ 5, 3 ], 'int32' );\n* var arr2 = typedarray( arr1 );\n* // returns <Float64Array>[ 5.0, 3.0 ]\n*\n* @example\n* var typedarray = require( '@stdlib/array/typed' );\n*\n* var arr1 = typedarray( [ 5, 3 ], 'int32' );\n* var arr2 = typedarray( arr1, 'uint32' );\n* // returns <Uint32Array>[ 5, 3 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var typedarray = require( '@stdlib/array/typed' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = typedarray( buf );\n* // returns <Float64Array>[ 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var typedarray = require( '@stdlib/array/typed' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = typedarray( buf, 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0, 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var typedarray = require( '@stdlib/array/typed' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = typedarray( buf, 8 );\n* // returns <Float64Array>[ 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var typedarray = require( '@stdlib/array/typed' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = typedarray( buf, 8, 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var typedarray = require( '@stdlib/array/typed' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = typedarray( buf, 8, 2 );\n* // returns <Float64Array>[ 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var typedarray = require( '@stdlib/array/typed' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = typedarray( buf, 8, 2, 'int32' );\n* // returns <Int32Array>[ 0, 0 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Complex128Array = require( './../../complex128' );\nvar Complex64Array = require( './../../complex64' );\n\n\n// MAIN //\n\n// Mapping from data types to constructors...\nvar ctors = {\n\t'complex128': Complex128Array,\n\t'complex64': Complex64Array\n};\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar table = require( './ctors.js' );\n\n\n// MAIN //\n\n/**\n* Returns a complex typed array constructor.\n*\n* @param {string} dtype - data type\n* @returns {(Function|null)} constructor or null\n*\n* @example\n* var ctor = ctors( 'complex128' );\n* // returns <Function>\n*\n* @example\n* var ctor = ctors( 'float64' );\n* // returns null\n*/\nfunction ctors( dtype ) {\n\treturn table[ dtype ] || null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Complex typed array constructors.\n*\n* @module @stdlib/array/typed-complex-ctors\n*\n* @example\n* var ctors = require( '@stdlib/array/typed-complex-ctors' );\n*\n* var ctor = ctors( 'complex128' );\n* // returns <Function>\n*\n* ctor = ctors( 'float64' );\n* // returns null\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( '@stdlib/string/format' );\nvar ctors = require( './../../typed-complex-ctors' );\n\n\n// MAIN //\n\n/**\n* Creates a complex number typed array.\n*\n* @param {(NonNegativeInteger|ComplexArray|ArrayLikeObject|ArrayBuffer)} [arg] - a length, typed array, array-like object, or buffer\n* @param {NonNegativeInteger} [byteOffset=0] - byte offset\n* @param {NonNegativeInteger} [length] - view length\n* @param {string} [dtype=\"complex128\"] - data type\n* @throws {TypeError} must provide a recognized data type\n* @returns {ComplexArray} typed array\n*\n* @example\n* var arr = complexarray();\n* // returns <Complex128Array>\n*\n* @example\n* var arr = complexarray( 2 );\n* // returns <Complex128Array>\n*\n* @example\n* var arr = complexarray( 2, 'complex64' );\n* // returns <Complex64Array>\n*\n* @example\n* var arr = complexarray( [ 0.5, 0.5 ] );\n* // returns <Complex128Array>\n*\n* @example\n* var arr = complexarray( [ 5.0, -3.0 ], 'complex64' );\n* // returns <Complex64Array>\n*\n* @example\n* var arr1 = complexarray( [ 5.0, 3.0 ], 'complex64' );\n* var arr2 = complexarray( arr1 );\n* // returns <Complex128Array>\n*\n* @example\n* var arr1 = complexarray( [ 5.0, 3.0 ], 'complex128' );\n* var arr2 = complexarray( arr1, 'complex64' );\n* // returns <Complex64Array>\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = complexarray( buf );\n* // returns <Complex128Array>\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = complexarray( buf, 'complex64' );\n* // returns <Complex64Array>\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = complexarray( buf, 16 );\n* // returns <Complex128Array>\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = complexarray( buf, 16, 'complex64' );\n* // returns <Complex64Array>\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 64 );\n* var arr = complexarray( buf, 16, 2 );\n* // returns <Complex128Array>\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 64 );\n* var arr = complexarray( buf, 16, 2, 'complex64' );\n* // returns <Complex64Array>\n*/\nfunction complexarray() {\n\tvar nargs;\n\tvar dtype;\n\tvar ctor;\n\n\tnargs = arguments.length;\n\tif ( nargs && isString( arguments[ nargs-1 ] ) ) {\n\t\tnargs -= 1;\n\t\tdtype = arguments[ nargs ];\n\t} else {\n\t\tdtype = 'complex128';\n\t}\n\tctor = ctors( dtype );\n\tif ( ctor === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a recognized data type. Value: `%s`.', dtype ) );\n\t}\n\tif ( nargs <= 0 ) {\n\t\treturn new ctor( 0 );\n\t}\n\tif ( nargs === 1 ) {\n\t\treturn new ctor( arguments[0] );\n\t}\n\tif ( nargs === 2 ) {\n\t\treturn new ctor( arguments[0], arguments[1] );\n\t}\n\treturn new ctor( arguments[0], arguments[1], arguments[2] );\n}\n\n\n// EXPORTS //\n\nmodule.exports = complexarray;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a complex number typed array.\n*\n* @module @stdlib/array/typed-complex\n*\n* @example\n* var complexarray = require( '@stdlib/array/typed-complex' );\n*\n* var arr = complexarray();\n* // returns <Complex128Array>\n*\n* @example\n* var complexarray = require( '@stdlib/array/typed-complex' );\n*\n* var arr = complexarray( 2 );\n* // returns <Complex128Array>\n*\n* @example\n* var complexarray = require( '@stdlib/array/typed-complex' );\n*\n* var arr = complexarray( 2, 'complex64' );\n* // returns <Complex64Array>\n*\n* @example\n* var complexarray = require( '@stdlib/array/typed-complex' );\n*\n* var arr = complexarray( [ 0.5, 0.5 ] );\n* // returns <Complex128Array>\n*\n* @example\n* var complexarray = require( '@stdlib/array/typed-complex' );\n*\n* var arr = complexarray( [ 5.0, -3.0 ], 'complex64' );\n* // returns <Complex64Array>\n*\n* @example\n* var complexarray = require( '@stdlib/array/typed-complex' );\n*\n* var arr1 = complexarray( [ 5.0, 3.0 ], 'complex64' );\n* var arr2 = complexarray( arr1 );\n* // returns <Complex128Array>\n*\n* @example\n* var complexarray = require( '@stdlib/array/typed-complex' );\n*\n* var arr1 = complexarray( [ 5.0, 3.0 ], 'complex128' );\n* var arr2 = complexarray( arr1, 'complex64' );\n* // returns <Complex64Array>\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var complexarray = require( '@stdlib/array/typed-complex' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = complexarray( buf );\n* // returns <Complex128Array>\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var complexarray = require( '@stdlib/array/typed-complex' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = complexarray( buf, 'complex64' );\n* // returns <Complex64Array>\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var complexarray = require( '@stdlib/array/typed-complex' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = complexarray( buf, 16 );\n* // returns <Complex128Array>\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var complexarray = require( '@stdlib/array/typed-complex' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = complexarray( buf, 16, 'complex64' );\n* // returns <Complex64Array>\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var complexarray = require( '@stdlib/array/typed-complex' );\n*\n* var buf = new ArrayBuffer( 64 );\n* var arr = complexarray( buf, 16, 2 );\n* // returns <Complex128Array>\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var complexarray = require( '@stdlib/array/typed-complex' );\n*\n* var buf = new ArrayBuffer( 64 );\n* var arr = complexarray( buf, 16, 2, 'complex64' );\n* // returns <Complex64Array>\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "[\n\t\"complex64\",\n\t\"complex128\"\n]\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar DTYPES = require( './dtypes.json' );\n\n\n// MAIN //\n\n/**\n* Returns a list of complex typed array data types.\n*\n* @returns {StringArray} list of complex typed array data types\n*\n* @example\n* var list = dtypes();\n* // returns [ 'complex64', 'complex128' ]\n*/\nfunction dtypes() {\n\treturn DTYPES.slice();\n}\n\n\n// EXPORTS //\n\nmodule.exports = dtypes;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a list of complex typed array data types.\n*\n* @module @stdlib/array/typed-complex-dtypes\n*\n* @example\n* var dtypes = require( '@stdlib/array/typed-complex-dtypes' );\n*\n* var list = dtypes();\n* // returns [ 'complex64', 'complex128' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "[\n\t\"float32\",\n\t\"float64\",\n\t\"int16\",\n\t\"int32\",\n\t\"int8\",\n\t\"uint16\",\n\t\"uint32\",\n\t\"uint8\",\n\t\"uint8c\",\n  \"complex64\",\n  \"complex128\"\n]\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar DTYPES = require( './dtypes.json' );\n\n\n// MAIN //\n\n/**\n* Returns a list of typed array data types.\n*\n* @returns {StringArray} list of typed array data types\n*\n* @example\n* var list = dtypes();\n* // e.g., returns [ 'float32', 'float64', 'int16', 'int32', 'int8', 'uint16', 'uint32', 'uint8', 'uint8c', 'complex128', 'complex64' ]\n*/\nfunction dtypes() {\n\treturn DTYPES.slice();\n}\n\n\n// EXPORTS //\n\nmodule.exports = dtypes;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a list of typed array data types.\n*\n* @module @stdlib/array/typed-dtypes\n*\n* @example\n* var dtypes = require( '@stdlib/array/typed-dtypes' );\n*\n* var list = dtypes();\n* // e.g., returns [ 'float32', 'float64', 'int16', 'int32', 'int8', 'uint16', 'uint32', 'uint8', 'uint8c', 'complex128', 'complex64' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "[\n\t\"float32\",\n\t\"float64\",\n\t\"complex64\",\n  \"complex128\"\n]\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar DTYPES = require( './dtypes.json' );\n\n\n// MAIN //\n\n/**\n* Returns a list of typed array floating-point data types.\n*\n* @returns {StringArray} list of typed array floating-point data types\n*\n* @example\n* var list = dtypes();\n* // e.g., returns [ 'float32', 'float64', 'complex64', 'complex128' ]\n*/\nfunction dtypes() {\n\treturn DTYPES.slice();\n}\n\n\n// EXPORTS //\n\nmodule.exports = dtypes;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a list of typed array floating-point data types.\n*\n* @module @stdlib/array/typed-float-dtypes\n*\n* @example\n* var dtypes = require( '@stdlib/array/typed-float-dtypes' );\n*\n* var list = dtypes();\n* // e.g., returns [ 'float32', 'float64', 'complex64', 'complex128' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Int16Array = require( './../../int16' );\nvar Int32Array = require( './../../int32' );\nvar Int8Array = require( './../../int8' );\nvar Uint16Array = require( './../../uint16' );\nvar Uint32Array = require( './../../uint32' );\nvar Uint8Array = require( './../../uint8' );\nvar Uint8ClampedArray = require( './../../uint8c' );\n\n\n// MAIN //\n\n// Mapping from data types to constructors...\nvar ctors = {\n\t'int16': Int16Array,\n\t'int32': Int32Array,\n\t'int8': Int8Array,\n\t'uint16': Uint16Array,\n\t'uint32': Uint32Array,\n\t'uint8': Uint8Array,\n\t'uint8c': Uint8ClampedArray\n};\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar table = require( './ctors.js' );\n\n\n// MAIN //\n\n/**\n* Returns an integer-valued typed array constructor.\n*\n* @param {string} dtype - data type\n* @returns {(Function|null)} constructor or null\n*\n* @example\n* var ctor = ctors( 'int32' );\n* // returns <Function>\n*\n* @example\n* var ctor = ctors( 'int' );\n* // returns null\n*/\nfunction ctors( dtype ) {\n\treturn table[ dtype ] || null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Integer-valued typed array constructors.\n*\n* @module @stdlib/array/typed-integer-ctors\n*\n* @example\n* var ctors = require( '@stdlib/array/typed-integer-ctors' );\n*\n* var ctor = ctors( 'int32' );\n* // returns <Function>\n*\n* ctor = ctors( 'int' );\n* // returns null\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "[\n\t\"int16\",\n\t\"int32\",\n\t\"int8\",\n\t\"uint16\",\n\t\"uint32\",\n\t\"uint8\",\n\t\"uint8c\"\n]\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar DTYPES = require( './dtypes.json' );\n\n\n// MAIN //\n\n/**\n* Returns a list of typed array integer data types.\n*\n* @returns {StringArray} list of typed array integer data types\n*\n* @example\n* var list = dtypes();\n* // e.g., returns [ 'int16', 'int32', 'int8', 'uint16', 'uint32', 'uint8', 'uint8c' ]\n*/\nfunction dtypes() {\n\treturn DTYPES.slice();\n}\n\n\n// EXPORTS //\n\nmodule.exports = dtypes;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a list of typed array integer data types.\n*\n* @module @stdlib/array/typed-integer-dtypes\n*\n* @example\n* var dtypes = require( '@stdlib/array/typed-integer-dtypes' );\n*\n* var list = dtypes();\n* // e.g., returns [ 'int16', 'int32', 'int8', 'uint16', 'uint32', 'uint8', 'uint8c' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( '@stdlib/string/format' );\nvar ctors = require( './../../typed-ctors' );\n\n\n// MAIN //\n\n/**\n* Creates a typed array.\n*\n* @param {(NonNegativeInteger|TypedArray|ArrayLikeObject|ArrayBuffer)} [arg] - a length, typed array, array-like object, or buffer\n* @param {NonNegativeInteger} [byteOffset=0] - byte offset\n* @param {NonNegativeInteger} [length] - view length\n* @param {string} [dtype=\"float64\"] - data type\n* @throws {TypeError} must provide a recognized data type\n* @returns {TypedArray} typed array\n*\n* @example\n* var arr = realarray();\n* // returns <Float64Array>\n*\n* @example\n* var arr = realarray( 2 );\n* // returns <Float64Array>[ 0.0, 0.0 ]\n*\n* @example\n* var arr = realarray( 2, 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0 ]\n*\n* @example\n* var arr = realarray( [ 0.5, 0.5 ] );\n* // returns <Float64Array>[ 0.5, 0.5 ]\n*\n* @example\n* var arr = realarray( [ 5, -3 ], 'int32' );\n* // returns <Int32Array>[ 5, -3 ]\n*\n* @example\n* var arr1 = realarray( [ 5, 3 ], 'int32' );\n* var arr2 = realarray( arr1 );\n* // returns <Float64Array>[ 5.0, 3.0 ]\n*\n* @example\n* var arr1 = realarray( [ 5, 3 ], 'int32' );\n* var arr2 = realarray( arr1, 'uint32' );\n* // returns <Uint32Array>[ 5, 3 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = realarray( buf );\n* // returns <Float64Array>[ 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = realarray( buf, 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0, 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = realarray( buf, 8 );\n* // returns <Float64Array>[ 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = realarray( buf, 8, 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = realarray( buf, 8, 2 );\n* // returns <Float64Array>[ 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = realarray( buf, 8, 2, 'int32' );\n* // returns <Int32Array>[ 0, 0 ]\n*/\nfunction realarray() {\n\tvar nargs;\n\tvar dtype;\n\tvar ctor;\n\n\tnargs = arguments.length;\n\tif ( nargs && isString( arguments[ nargs-1 ] ) ) {\n\t\tnargs -= 1;\n\t\tdtype = arguments[ nargs ];\n\t} else {\n\t\tdtype = 'float64';\n\t}\n\tctor = ctors( dtype );\n\tif ( ctor === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a recognized data type. Value: `%s`.', dtype ) );\n\t}\n\tif ( nargs <= 0 ) {\n\t\treturn new ctor( 0 );\n\t}\n\tif ( nargs === 1 ) {\n\t\treturn new ctor( arguments[0] );\n\t}\n\tif ( nargs === 2 ) {\n\t\treturn new ctor( arguments[0], arguments[1] );\n\t}\n\treturn new ctor( arguments[0], arguments[1], arguments[2] );\n}\n\n\n// EXPORTS //\n\nmodule.exports = realarray;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a typed array.\n*\n* @module @stdlib/array/typed-real\n*\n* @example\n* var realarray = require( '@stdlib/array/typed-real' );\n*\n* var arr = realarray();\n* // returns <Float64Array>\n*\n* @example\n* var realarray = require( '@stdlib/array/typed-real' );\n*\n* var arr = realarray( 2 );\n* // returns <Float64Array>[ 0.0, 0.0 ]\n*\n* @example\n* var realarray = require( '@stdlib/array/typed-real' );\n*\n* var arr = realarray( 2, 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0 ]\n*\n* @example\n* var realarray = require( '@stdlib/array/typed-real' );\n*\n* var arr = realarray( [ 0.5, 0.5 ] );\n* // returns <Float64Array>[ 0.5, 0.5 ]\n*\n* @example\n* var realarray = require( '@stdlib/array/typed-real' );\n*\n* var arr = realarray( [ 5, -3 ], 'int32' );\n* // returns <Int32Array>[ 5, -3 ]\n*\n* @example\n* var realarray = require( '@stdlib/array/typed-real' );\n*\n* var arr1 = realarray( [ 5, 3 ], 'int32' );\n* var arr2 = realarray( arr1 );\n* // returns <Float64Array>[ 5.0, 3.0 ]\n*\n* @example\n* var realarray = require( '@stdlib/array/typed-real' );\n*\n* var arr1 = realarray( [ 5, 3 ], 'int32' );\n* var arr2 = realarray( arr1, 'uint32' );\n* // returns <Uint32Array>[ 5, 3 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var realarray = require( '@stdlib/array/typed-real' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = realarray( buf );\n* // returns <Float64Array>[ 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var realarray = require( '@stdlib/array/typed-real' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = realarray( buf, 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0, 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var realarray = require( '@stdlib/array/typed-real' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = realarray( buf, 8 );\n* // returns <Float64Array>[ 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var realarray = require( '@stdlib/array/typed-real' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = realarray( buf, 8, 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var realarray = require( '@stdlib/array/typed-real' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = realarray( buf, 8, 2 );\n* // returns <Float64Array>[ 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var realarray = require( '@stdlib/array/typed-real' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = realarray( buf, 8, 2, 'int32' );\n* // returns <Int32Array>[ 0, 0 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Float64Array = require( './../../float64' );\nvar Float32Array = require( './../../float32' );\nvar Int16Array = require( './../../int16' );\nvar Int32Array = require( './../../int32' );\nvar Int8Array = require( './../../int8' );\nvar Uint16Array = require( './../../uint16' );\nvar Uint32Array = require( './../../uint32' );\nvar Uint8Array = require( './../../uint8' );\nvar Uint8ClampedArray = require( './../../uint8c' );\n\n\n// MAIN //\n\n// Mapping from data types to constructors...\nvar ctors = {\n\t'float64': Float64Array,\n\t'float32': Float32Array,\n\t'int16': Int16Array,\n\t'int32': Int32Array,\n\t'int8': Int8Array,\n\t'uint16': Uint16Array,\n\t'uint32': Uint32Array,\n\t'uint8': Uint8Array,\n\t'uint8c': Uint8ClampedArray\n};\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar table = require( './ctors.js' );\n\n\n// MAIN //\n\n/**\n* Returns a typed array constructor.\n*\n* @param {string} dtype - data type\n* @returns {(Function|null)} constructor or null\n*\n* @example\n* var ctor = ctors( 'float64' );\n* // returns <Function>\n*\n* @example\n* var ctor = ctors( 'float' );\n* // returns null\n*/\nfunction ctors( dtype ) {\n\treturn table[ dtype ] || null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Typed array constructors.\n*\n* @module @stdlib/array/typed-real-ctors\n*\n* @example\n* var ctors = require( '@stdlib/array/typed-real-ctors' );\n*\n* var ctor = ctors( 'float64' );\n* // returns <Function>\n*\n* ctor = ctors( 'int' );\n* // returns null\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "[\n\t\"float32\",\n\t\"float64\",\n\t\"int16\",\n\t\"int32\",\n\t\"int8\",\n\t\"uint16\",\n\t\"uint32\",\n\t\"uint8\",\n\t\"uint8c\"\n]\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar DTYPES = require( './dtypes.json' );\n\n\n// MAIN //\n\n/**\n* Returns a list of typed array data types.\n*\n* @returns {StringArray} list of typed array data types\n*\n* @example\n* var list = dtypes();\n* // e.g., returns [ 'float32', 'float64', 'int16', 'int32', 'int8', 'uint16', 'uint32', 'uint8', 'uint8c' ]\n*/\nfunction dtypes() {\n\treturn DTYPES.slice();\n}\n\n\n// EXPORTS //\n\nmodule.exports = dtypes;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a list of typed array data types.\n*\n* @module @stdlib/array/typed-real-dtypes\n*\n* @example\n* var dtypes = require( '@stdlib/array/typed-real-dtypes' );\n*\n* var list = dtypes();\n* // e.g., returns [ 'float32', 'float64', 'int16', 'int32', 'int8', 'uint16', 'uint32', 'uint8', 'uint8c' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Float64Array = require( './../../float64' );\nvar Float32Array = require( './../../float32' );\n\n\n// MAIN //\n\n// Mapping from data types to constructors...\nvar ctors = {\n\t'float64': Float64Array,\n\t'float32': Float32Array\n};\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar table = require( './ctors.js' );\n\n\n// MAIN //\n\n/**\n* Returns a real-valued floating-point typed array constructor.\n*\n* @param {string} dtype - data type\n* @returns {(Function|null)} constructor or null\n*\n* @example\n* var ctor = ctors( 'float64' );\n* // returns <Function>\n*\n* @example\n* var ctor = ctors( 'float' );\n* // returns null\n*/\nfunction ctors( dtype ) {\n\treturn table[ dtype ] || null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Real-valued floating-point typed array constructors.\n*\n* @module @stdlib/array/typed-real-float-ctors\n*\n* @example\n* var ctors = require( '@stdlib/array/typed-real-float-ctors' );\n*\n* var ctor = ctors( 'float64' );\n* // returns <Function>\n*\n* ctor = ctors( 'int' );\n* // returns null\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "[\n\t\"float32\",\n\t\"float64\"\n]\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar DTYPES = require( './dtypes.json' );\n\n\n// MAIN //\n\n/**\n* Returns a list of typed array real-valued floating-point data types.\n*\n* @returns {StringArray} list of typed array real-valued floating-point data types\n*\n* @example\n* var list = dtypes();\n* // e.g., returns [ 'float32', 'float64' ]\n*/\nfunction dtypes() {\n\treturn DTYPES.slice();\n}\n\n\n// EXPORTS //\n\nmodule.exports = dtypes;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a list of typed array real-valued floating-point data types.\n*\n* @module @stdlib/array/typed-real-float-dtypes\n*\n* @example\n* var dtypes = require( '@stdlib/array/typed-real-float-dtypes' );\n*\n* var list = dtypes();\n* // e.g., returns [ 'float32', 'float64' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Int16Array = require( './../../int16' );\nvar Int32Array = require( './../../int32' );\nvar Int8Array = require( './../../int8' );\n\n\n// MAIN //\n\n// Mapping from data types to constructors...\nvar ctors = {\n\t'int16': Int16Array,\n\t'int32': Int32Array,\n\t'int8': Int8Array\n};\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar table = require( './ctors.js' );\n\n\n// MAIN //\n\n/**\n* Returns a signed integer typed array constructor.\n*\n* @param {string} dtype - data type\n* @returns {(Function|null)} constructor or null\n*\n* @example\n* var ctor = ctors( 'int32' );\n* // returns <Function>\n*\n* @example\n* var ctor = ctors( 'int' );\n* // returns null\n*/\nfunction ctors( dtype ) {\n\treturn table[ dtype ] || null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Signed integer typed array constructors.\n*\n* @module @stdlib/array/typed-signed-integer-ctors\n*\n* @example\n* var ctors = require( '@stdlib/array/typed-signed-integer-ctors' );\n*\n* var ctor = ctors( 'int32' );\n* // returns <Function>\n*\n* ctor = ctors( 'int' );\n* // returns null\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "[\n\t\"int16\",\n\t\"int32\",\n\t\"int8\"\n]\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar DTYPES = require( './dtypes.json' );\n\n\n// MAIN //\n\n/**\n* Returns a list of typed array signed integer data types.\n*\n* @returns {StringArray} list of typed array signed integer data types\n*\n* @example\n* var list = dtypes();\n* // e.g., returns [ 'int16', 'int32', 'int8' ]\n*/\nfunction dtypes() {\n\treturn DTYPES.slice();\n}\n\n\n// EXPORTS //\n\nmodule.exports = dtypes;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a list of typed array signed integer data types.\n*\n* @module @stdlib/array/typed-signed-integer-dtypes\n*\n* @example\n* var dtypes = require( '@stdlib/array/typed-signed-integer-dtypes' );\n*\n* var list = dtypes();\n* // e.g., returns [ 'int16', 'int32', 'int8' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Uint16Array = require( './../../uint16' );\nvar Uint32Array = require( './../../uint32' );\nvar Uint8Array = require( './../../uint8' );\nvar Uint8ClampedArray = require( './../../uint8c' );\n\n\n// MAIN //\n\n// Mapping from data types to constructors...\nvar ctors = {\n\t'uint16': Uint16Array,\n\t'uint32': Uint32Array,\n\t'uint8': Uint8Array,\n\t'uint8c': Uint8ClampedArray\n};\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar table = require( './ctors.js' );\n\n\n// MAIN //\n\n/**\n* Returns an unsigned integer typed array constructor.\n*\n* @param {string} dtype - data type\n* @returns {(Function|null)} constructor or null\n*\n* @example\n* var ctor = ctors( 'uint32' );\n* // returns <Function>\n*\n* @example\n* var ctor = ctors( 'uint' );\n* // returns null\n*/\nfunction ctors( dtype ) {\n\treturn table[ dtype ] || null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Unsigned integer typed array constructors.\n*\n* @module @stdlib/array/typed-unsigned-integer-ctors\n*\n* @example\n* var ctors = require( '@stdlib/array/typed-unsigned-integer-ctors' );\n*\n* var ctor = ctors( 'uint32' );\n* // returns <Function>\n*\n* ctor = ctors( 'uint' );\n* // returns null\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "[\n\t\"uint16\",\n\t\"uint32\",\n\t\"uint8\",\n\t\"uint8c\"\n]\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar DTYPES = require( './dtypes.json' );\n\n\n// MAIN //\n\n/**\n* Returns a list of typed array unsigned integer data types.\n*\n* @returns {StringArray} list of typed array unsigned integer data types\n*\n* @example\n* var list = dtypes();\n* // e.g., returns [ 'uint16', 'uint32', 'uint8', 'uint8c' ]\n*/\nfunction dtypes() {\n\treturn DTYPES.slice();\n}\n\n\n// EXPORTS //\n\nmodule.exports = dtypes;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a list of typed array unsigned integer data types.\n*\n* @module @stdlib/array/typed-unsigned-integer-dtypes\n*\n* @example\n* var dtypes = require( '@stdlib/array/typed-unsigned-integer-dtypes' );\n*\n* var list = dtypes();\n* // e.g., returns [ 'uint16', 'uint32', 'uint8', 'uint8c' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar format = require( '@stdlib/string/format' );\nvar dtype = require( './../../dtype' );\nvar zeros = require( './../../zeros' );\n\n\n// MAIN //\n\n/**\n* Creates a zero-filled array having the same length and data type as a provided input array.\n*\n* @param {(Array|TypedArray|ComplexArray)} x - input array\n* @param {string} [dtype] - data type\n* @throws {TypeError} first argument must be an array or typed array\n* @throws {TypeError} second argument must be a recognized data type\n* @returns {(TypedArray|Array|ComplexArray)} array or typed array\n*\n* @example\n* var arr = zerosLike( [ 0.0, 0.0 ] );\n* // returns [ 0.0, 0.0 ]\n*\n* @example\n* var arr = zerosLike( [ 0.0, 0.0 ], 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0 ]\n*/\nfunction zerosLike( x ) {\n\tvar dt = dtype( x ); // delegate input argument validation to dtype resolution\n\tif ( dt === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be either an array, typed array, or complex typed array. Value: `%s`.', x ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tdt = arguments[ 1 ];\n\t}\n\treturn zeros( x.length, dt );\n}\n\n\n// EXPORTS //\n\nmodule.exports = zerosLike;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a zero-filled array having the same length and data type as a provided input array.\n*\n* @module @stdlib/array/zeros-like\n*\n* @example\n* var zerosLike = require( '@stdlib/array/zeros-like' );\n*\n* var arr = zerosLike( [ 0.0, 0.0 ] );\n* // returns [ 0.0, 0.0 ]\n*\n* @example\n* var zerosLike = require( '@stdlib/array/zeros-like' );\n*\n* var arr = zerosLike( [ 0.0, 0.0 ], 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/*\n* When adding modules to the namespace, ensure that they are added in alphabetical order according to module name.\n*/\n\n/*\n* The following modules are intentionally not exported: generic\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-read-only-property' );\n\n\n// MAIN //\n\n/**\n* Top-level namespace.\n*\n* @namespace ns\n*/\nvar ns = {};\n\n/**\n* @name base\n* @memberof ns\n* @readonly\n* @type {Namespace}\n* @see {@link module:@stdlib/array/base}\n*/\nsetReadOnly( ns, 'base', require( './../base' ) );\n\n/**\n* @name ArrayBuffer\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/buffer}\n*/\nsetReadOnly( ns, 'ArrayBuffer', require( './../buffer' ) );\n\n/**\n* @name Complex64Array\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/complex64}\n*/\nsetReadOnly( ns, 'Complex64Array', require( './../complex64' ) );\n\n/**\n* @name Complex128Array\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/complex128}\n*/\nsetReadOnly( ns, 'Complex128Array', require( './../complex128' ) );\n\n/**\n* @name convertArray\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/convert}\n*/\nsetReadOnly( ns, 'convertArray', require( './../convert' ) );\n\n/**\n* @name convertArraySame\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/convert-same}\n*/\nsetReadOnly( ns, 'convertArraySame', require( './../convert-same' ) );\n\n/**\n* @name arrayCtors\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/ctors}\n*/\nsetReadOnly( ns, 'arrayCtors', require( './../ctors' ) );\n\n/**\n* @name DataView\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/dataview}\n*/\nsetReadOnly( ns, 'DataView', require( './../dataview' ) );\n\n/**\n* @name datespace\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/datespace}\n*/\nsetReadOnly( ns, 'datespace', require( './../datespace' ) );\n\n/**\n* @name arrayDefaults\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/defaults}\n*/\nsetReadOnly( ns, 'arrayDefaults', require( './../defaults' ) );\n\n/**\n* @name arrayDataType\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/dtype}\n*/\nsetReadOnly( ns, 'arrayDataType', require( './../dtype' ) );\n\n/**\n* @name arrayDataTypes\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/dtypes}\n*/\nsetReadOnly( ns, 'arrayDataTypes', require( './../dtypes' ) );\n\n/**\n* @name aempty\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/empty}\n*/\nsetReadOnly( ns, 'aempty', require( './../empty' ) );\n\n/**\n* @name aemptyLike\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/empty-like}\n*/\nsetReadOnly( ns, 'aemptyLike', require( './../empty-like' ) );\n\n/**\n* @name filledarray\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/filled}\n*/\nsetReadOnly( ns, 'filledarray', require( './../filled' ) );\n\n/**\n* @name filledarrayBy\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/filled-by}\n*/\nsetReadOnly( ns, 'filledarrayBy', require( './../filled-by' ) );\n\n/**\n* @name Float32Array\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/float32}\n*/\nsetReadOnly( ns, 'Float32Array', require( './../float32' ) );\n\n/**\n* @name Float64Array\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/float64}\n*/\nsetReadOnly( ns, 'Float64Array', require( './../float64' ) );\n\n/**\n* @name iterator2array\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/from-iterator}\n*/\nsetReadOnly( ns, 'iterator2array', require( './../from-iterator' ) );\n\n/**\n* @name afull\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/full}\n*/\nsetReadOnly( ns, 'afull', require( './../full' ) );\n\n/**\n* @name afullLike\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/full-like}\n*/\nsetReadOnly( ns, 'afullLike', require( './../full-like' ) );\n\n/**\n* @name incrspace\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/incrspace}\n*/\nsetReadOnly( ns, 'incrspace', require( './../incrspace' ) );\n\n/**\n* @name Int8Array\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/int8}\n*/\nsetReadOnly( ns, 'Int8Array', require( './../int8' ) );\n\n/**\n* @name Int16Array\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/int16}\n*/\nsetReadOnly( ns, 'Int16Array', require( './../int16' ) );\n\n/**\n* @name Int32Array\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/int32}\n*/\nsetReadOnly( ns, 'Int32Array', require( './../int32' ) );\n\n/**\n* @name linspace\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/linspace}\n*/\nsetReadOnly( ns, 'linspace', require( './../linspace' ) );\n\n/**\n* @name logspace\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/logspace}\n*/\nsetReadOnly( ns, 'logspace', require( './../logspace' ) );\n\n/**\n* @name arrayMinDataType\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/min-dtype}\n*/\nsetReadOnly( ns, 'arrayMinDataType', require( './../min-dtype' ) );\n\n/**\n* @name anans\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/nans}\n*/\nsetReadOnly( ns, 'anans', require( './../nans' ) );\n\n/**\n* @name anansLike\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/nans-like}\n*/\nsetReadOnly( ns, 'anansLike', require( './../nans-like' ) );\n\n/**\n* @name arrayNextDataType\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/next-dtype}\n*/\nsetReadOnly( ns, 'arrayNextDataType', require( './../next-dtype' ) );\n\n/**\n* @name aones\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/ones}\n*/\nsetReadOnly( ns, 'aones', require( './../ones' ) );\n\n/**\n* @name aonesLike\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/ones-like}\n*/\nsetReadOnly( ns, 'aonesLike', require( './../ones-like' ) );\n\n/**\n* @name typedarraypool\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/pool}\n*/\nsetReadOnly( ns, 'typedarraypool', require( './../pool' ) );\n\n/**\n* @name arrayPromotionRules\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/promotion-rules}\n*/\nsetReadOnly( ns, 'arrayPromotionRules', require( './../promotion-rules' ) );\n\n/**\n* @name reviveTypedArray\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/reviver}\n*/\nsetReadOnly( ns, 'reviveTypedArray', require( './../reviver' ) );\n\n/**\n* @name arraySafeCasts\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/safe-casts}\n*/\nsetReadOnly( ns, 'arraySafeCasts', require( './../safe-casts' ) );\n\n/**\n* @name arraySameKindCasts\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/same-kind-casts}\n*/\nsetReadOnly( ns, 'arraySameKindCasts', require( './../same-kind-casts' ) );\n\n/**\n* @name arrayShape\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/shape}\n*/\nsetReadOnly( ns, 'arrayShape', require( './../shape' ) );\n\n/**\n* @name SharedArrayBuffer\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/shared-buffer}\n*/\nsetReadOnly( ns, 'SharedArrayBuffer', require( './../shared-buffer' ) );\n\n/**\n* @name circarray2iterator\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/to-circular-iterator}\n*/\nsetReadOnly( ns, 'circarray2iterator', require( './../to-circular-iterator' ) );\n\n/**\n* @name array2iterator\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/to-iterator}\n*/\nsetReadOnly( ns, 'array2iterator', require( './../to-iterator' ) );\n\n/**\n* @name array2iteratorRight\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/to-iterator-right}\n*/\nsetReadOnly( ns, 'array2iteratorRight', require( './../to-iterator-right' ) );\n\n/**\n* @name typedarray2json\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/to-json}\n*/\nsetReadOnly( ns, 'typedarray2json', require( './../to-json' ) );\n\n/**\n* @name sparsearray2iterator\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/to-sparse-iterator}\n*/\nsetReadOnly( ns, 'sparsearray2iterator', require( './../to-sparse-iterator' ) );\n\n/**\n* @name sparsearray2iteratorRight\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/to-sparse-iterator-right}\n*/\nsetReadOnly( ns, 'sparsearray2iteratorRight', require( './../to-sparse-iterator-right' ) );\n\n/**\n* @name stridedarray2iterator\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/to-strided-iterator}\n*/\nsetReadOnly( ns, 'stridedarray2iterator', require( './../to-strided-iterator' ) );\n\n/**\n* @name arrayview2iterator\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/to-view-iterator}\n*/\nsetReadOnly( ns, 'arrayview2iterator', require( './../to-view-iterator' ) );\n\n/**\n* @name arrayview2iteratorRight\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/to-view-iterator-right}\n*/\nsetReadOnly( ns, 'arrayview2iteratorRight', require( './../to-view-iterator-right' ) );\n\n/**\n* @name typedarray\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed}\n*/\nsetReadOnly( ns, 'typedarray', require( './../typed' ) );\n\n/**\n* @name complexarray\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-complex}\n*/\nsetReadOnly( ns, 'complexarray', require( './../typed-complex' ) );\n\n/**\n* @name complexarrayCtors\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-complex-ctors}\n*/\nsetReadOnly( ns, 'complexarrayCtors', require( './../typed-complex-ctors' ) );\n\n/**\n* @name complexarrayDataTypes\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-complex-dtypes}\n*/\nsetReadOnly( ns, 'complexarrayDataTypes', require( './../typed-complex-dtypes' ) );\n\n/**\n* @name typedarrayCtors\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-ctors}\n*/\nsetReadOnly( ns, 'typedarrayCtors', require( './../typed-ctors' ) );\n\n/**\n* @name typedarrayDataTypes\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-dtypes}\n*/\nsetReadOnly( ns, 'typedarrayDataTypes', require( './../typed-dtypes' ) );\n\n/**\n* @name floatarrayCtors\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-float-ctors}\n*/\nsetReadOnly( ns, 'floatarrayCtors', require( './../typed-float-ctors' ) );\n\n/**\n* @name floatarrayDataTypes\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-float-dtypes}\n*/\nsetReadOnly( ns, 'floatarrayDataTypes', require( './../typed-float-dtypes' ) );\n\n/**\n* @name intarrayCtors\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-integer-ctors}\n*/\nsetReadOnly( ns, 'intarrayCtors', require( './../typed-integer-ctors' ) );\n\n/**\n* @name intarrayDataTypes\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-integer-dtypes}\n*/\nsetReadOnly( ns, 'intarrayDataTypes', require( './../typed-integer-dtypes' ) );\n\n/**\n* @name realarray\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-real}\n*/\nsetReadOnly( ns, 'realarray', require( './../typed-real' ) );\n\n/**\n* @name realarrayCtors\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-real-ctors}\n*/\nsetReadOnly( ns, 'realarrayCtors', require( './../typed-real-ctors' ) );\n\n/**\n* @name realarrayDataTypes\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-real-dtypes}\n*/\nsetReadOnly( ns, 'realarrayDataTypes', require( './../typed-real-dtypes' ) );\n\n/**\n* @name realarrayFloatCtors\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-real-float-ctors}\n*/\nsetReadOnly( ns, 'realarrayFloatCtors', require( './../typed-real-float-ctors' ) );\n\n/**\n* @name realarrayFloatDataTypes\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-real-float-dtypes}\n*/\nsetReadOnly( ns, 'realarrayFloatDataTypes', require( './../typed-real-float-dtypes' ) );\n\n/**\n* @name intarraySignedCtors\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-signed-integer-ctors}\n*/\nsetReadOnly( ns, 'intarraySignedCtors', require( './../typed-signed-integer-ctors' ) );\n\n/**\n* @name intarraySignedDataTypes\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-signed-integer-dtypes}\n*/\nsetReadOnly( ns, 'intarraySignedDataTypes', require( './../typed-signed-integer-dtypes' ) );\n\n/**\n* @name intarrayUnsignedCtors\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-unsigned-integer-ctors}\n*/\nsetReadOnly( ns, 'intarrayUnsignedCtors', require( './../typed-unsigned-integer-ctors' ) );\n\n/**\n* @name intarrayUnsignedDataTypes\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-unsigned-integer-dtypes}\n*/\nsetReadOnly( ns, 'intarrayUnsignedDataTypes', require( './../typed-unsigned-integer-dtypes' ) );\n\n/**\n* @name Uint8Array\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/uint8}\n*/\nsetReadOnly( ns, 'Uint8Array', require( './../uint8' ) );\n\n/**\n* @name Uint8ClampedArray\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/uint8c}\n*/\nsetReadOnly( ns, 'Uint8ClampedArray', require( './../uint8c' ) );\n\n/**\n* @name Uint16Array\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/uint16}\n*/\nsetReadOnly( ns, 'Uint16Array', require( './../uint16' ) );\n\n/**\n* @name Uint32Array\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/uint32}\n*/\nsetReadOnly( ns, 'Uint32Array', require( './../uint32' ) );\n\n/**\n* @name azeros\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/zeros}\n*/\nsetReadOnly( ns, 'azeros', require( './../zeros' ) );\n\n/**\n* @name azerosLike\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/zeros-like}\n*/\nsetReadOnly( ns, 'azerosLike', require( './../zeros-like' ) );\n\n/**\n* @name constants\n* @memberof ns\n* @readonly\n* @type {Namespace}\n* @see {@link module:@stdlib/constants/array}\n*/\nsetReadOnly( ns, 'constants', require( '@stdlib/constants/array' ) );\n\n\n// EXPORTS //\n\nmodule.exports = ns;\n"],
+  "sourcesContent": ["/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar TYPE = 'function';\n\n\n// MAIN //\n\n/**\n* Tests if an array-like object supports the accessor (get/set) protocol.\n*\n* @param {Object} value - value to test\n* @returns {boolean} boolean indicating whether a value is an accessor array\n*\n* @example\n* var Complex128Array = require( '@stdlib/array/complex128' );\n*\n* var bool = isAccessorArray( new Complex128Array( 10 ) );\n* // returns true\n*\n* @example\n* var bool = isAccessorArray( [] );\n* // returns false\n*/\nfunction isAccessorArray( value ) {\n\treturn ( typeof value.get === TYPE && typeof value.set === TYPE ); // eslint-disable-line valid-typeof\n}\n\n\n// EXPORTS //\n\nmodule.exports = isAccessorArray;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test if an array-like object supports the accessor (get/set) protocol.\n*\n* @module @stdlib/array/base/assert/is-accessor-array\n*\n* @example\n* var Complex128Array = require( '@stdlib/array/complex128array' );\n* var isAccessorArray = require( '@stdlib/array/base/assert/is-accessor-array' );\n*\n* var bool = isAccessorArray( new Complex128Array( 10 ) );\n* // returns true\n*\n* bool = isAccessorArray( [] );\n* // returns false\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar GETTERS = {\n\t'float64': getFloat64,\n\t'float32': getFloat32,\n\t'int32': getInt32,\n\t'int16': getInt16,\n\t'int8': getInt8,\n\t'uint32': getUint32,\n\t'uint16': getUint16,\n\t'uint8': getUint8,\n\t'uint8c': getUint8c,\n\t'generic': getGeneric,\n\t'default': getArrayLike\n};\n\n\n// FUNCTIONS //\n\n/**\n* Returns an element from a `Float64Array`.\n*\n* @private\n* @param {Float64Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @returns {number} element value\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var arr = new Float64Array( [ 1, 2, 3, 4 ] );\n*\n* var v = getFloat64( arr, 2 );\n* // returns 3.0\n*/\nfunction getFloat64( arr, idx ) {\n\treturn arr[ idx ];\n}\n\n/**\n* Returns an element from a `Float32Array`.\n*\n* @private\n* @param {Float32Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @returns {number} element value\n*\n* @example\n* var Float32Array = require( '@stdlib/array/float32' );\n*\n* var arr = new Float32Array( [ 1, 2, 3, 4 ] );\n*\n* var v = getFloat32( arr, 2 );\n* // returns 3.0\n*/\nfunction getFloat32( arr, idx ) {\n\treturn arr[ idx ];\n}\n\n/**\n* Returns an element from an `Int32Array`.\n*\n* @private\n* @param {Int32Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @returns {number} element value\n*\n* @example\n* var Int32Array = require( '@stdlib/array/int32' );\n*\n* var arr = new Int32Array( [ 1, 2, 3, 4 ] );\n*\n* var v = getInt32( arr, 2 );\n* // returns 3\n*/\nfunction getInt32( arr, idx ) { // eslint-disable-line stdlib/jsdoc-doctest-decimal-point\n\treturn arr[ idx ];\n}\n\n/**\n* Returns an element from an `Int16Array`.\n*\n* @private\n* @param {Int16Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @returns {number} element value\n*\n* @example\n* var Int16Array = require( '@stdlib/array/int16' );\n*\n* var arr = new Int16Array( [ 1, 2, 3, 4 ] );\n*\n* var v = getInt16( arr, 2 );\n* // returns 3\n*/\nfunction getInt16( arr, idx ) { // eslint-disable-line stdlib/jsdoc-doctest-decimal-point\n\treturn arr[ idx ];\n}\n\n/**\n* Returns an element from an `Int8Array`.\n*\n* @private\n* @param {Int8Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @returns {number} element value\n*\n* @example\n* var Int8Array = require( '@stdlib/array/int8' );\n*\n* var arr = new Int8Array( [ 1, 2, 3, 4 ] );\n*\n* var v = getInt8( arr, 2 );\n* // returns 3\n*/\nfunction getInt8( arr, idx ) { // eslint-disable-line stdlib/jsdoc-doctest-decimal-point\n\treturn arr[ idx ];\n}\n\n/**\n* Returns an element from a `Uint32Array`.\n*\n* @private\n* @param {Uint32Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @returns {number} element value\n*\n* @example\n* var Uint32Array = require( '@stdlib/array/uint32' );\n*\n* var arr = new Uint32Array( [ 1, 2, 3, 4 ] );\n*\n* var v = getUint32( arr, 2 );\n* // returns 3\n*/\nfunction getUint32( arr, idx ) { // eslint-disable-line stdlib/jsdoc-doctest-decimal-point\n\treturn arr[ idx ];\n}\n\n/**\n* Returns an element from a `Uint16Array`.\n*\n* @private\n* @param {Uint16Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @returns {number} element value\n*\n* @example\n* var Uint16Array = require( '@stdlib/array/uint16' );\n*\n* var arr = new Uint16Array( [ 1, 2, 3, 4 ] );\n*\n* var v = getUint16( arr, 2 );\n* // returns 3\n*/\nfunction getUint16( arr, idx ) { // eslint-disable-line stdlib/jsdoc-doctest-decimal-point\n\treturn arr[ idx ];\n}\n\n/**\n* Returns an element from a `Uint8Array`.\n*\n* @private\n* @param {Uint8Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @returns {number} element value\n*\n* @example\n* var Uint8Array = require( '@stdlib/array/uint8' );\n*\n* var arr = new Uint8Array( [ 1, 2, 3, 4 ] );\n*\n* var v = getUint8( arr, 2 );\n* // returns 3\n*/\nfunction getUint8( arr, idx ) { // eslint-disable-line stdlib/jsdoc-doctest-decimal-point\n\treturn arr[ idx ];\n}\n\n/**\n* Returns an element from a `Uint8ClampedArray`.\n*\n* @private\n* @param {Uint8ClampedArray} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @returns {number} element value\n*\n* @example\n* var Uint8ClampedArray = require( '@stdlib/array/uint8c' );\n*\n* var arr = new Uint8ClampedArray( [ 1, 2, 3, 4 ] );\n*\n* var v = getUint8c( arr, 2 );\n* // returns 3\n*/\nfunction getUint8c( arr, idx ) { // eslint-disable-line stdlib/jsdoc-doctest-decimal-point\n\treturn arr[ idx ];\n}\n\n/**\n* Returns an element from a generic `Array`.\n*\n* @private\n* @param {Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @returns {*} element value\n*\n* @example\n* var arr = [ 1, 2, 3, 4 ];\n*\n* var v = getGeneric( arr, 2 );\n* // returns 3\n*/\nfunction getGeneric( arr, idx ) {\n\treturn arr[ idx ];\n}\n\n/**\n* Returns an element from an indexed array-like object.\n*\n* @private\n* @param {Collection} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @returns {*} element value\n*\n* @example\n* var arr = [ 1, 2, 3, 4 ];\n*\n* var v = getArrayLike( arr, 2 );\n* // returns 3\n*/\nfunction getArrayLike( arr, idx ) {\n\treturn arr[ idx ];\n}\n\n\n// MAIN //\n\n/**\n* Returns an accessor function for retrieving an element from an indexed array-like object.\n*\n* @param {string} dtype - array dtype\n* @returns {Function} accessor\n*\n* @example\n* var dtype = require( '@stdlib/array/dtype' );\n*\n* var arr = [ 1, 2, 3, 4 ];\n*\n* var get = getter( dtype( arr ) );\n* var v = get( arr, 2 );\n* // returns 3\n*/\nfunction getter( dtype ) {\n\tvar f = GETTERS[ dtype ];\n\tif ( typeof f === 'function' ) {\n\t\treturn f;\n\t}\n\treturn GETTERS.default;\n}\n\n\n// EXPORTS //\n\nmodule.exports = getter;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return an accessor function for retrieving an element from an indexed array-like object.\n*\n* @module @stdlib/array/base/getter\n*\n* @example\n* var dtype = require( '@stdlib/array/dtype' );\n* var getter = require( '@stdlib/array/base/getter' );\n*\n* var arr = [ 1, 2, 3, 4 ];\n*\n* var get = getter( dtype( arr ) );\n* var v = get( arr, 2 );\n* // returns 3\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar SETTERS = {\n\t'float64': setFloat64,\n\t'float32': setFloat32,\n\t'int32': setInt32,\n\t'int16': setInt16,\n\t'int8': setInt8,\n\t'uint32': setUint32,\n\t'uint16': setUint16,\n\t'uint8': setUint8,\n\t'uint8c': setUint8c,\n\t'generic': setGeneric,\n\t'default': setArrayLike\n};\n\n\n// FUNCTIONS //\n\n/**\n* Sets an element in a `Float64Array`.\n*\n* @private\n* @param {Float64Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @param {number} value - value to set\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var arr = new Float64Array( 4 );\n*\n* setFloat64( arr, 2, 3.0 );\n*\n* var v = arr[ 2 ];\n* // returns 3.0\n*/\nfunction setFloat64( arr, idx, value ) {\n\tarr[ idx ] = value;\n}\n\n/**\n* Sets an element in a `Float32Array`.\n*\n* @private\n* @param {Float32Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @param {number} value - value to set\n*\n* @example\n* var Float32Array = require( '@stdlib/array/float32' );\n*\n* var arr = new Float32Array( 4 );\n*\n* setFloat32( arr, 2, 3.0 );\n*\n* var v = arr[ 2 ];\n* // returns 3.0\n*/\nfunction setFloat32( arr, idx, value ) {\n\tarr[ idx ] = value;\n}\n\n/**\n* Sets an element in an `Int32Array`.\n*\n* @private\n* @param {Int32Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @param {number} value - value to set\n*\n* @example\n* var Int32Array = require( '@stdlib/array/int32' );\n*\n* var arr = new Int32Array( 4 );\n*\n* setInt32( arr, 2, 3 );\n*\n* var v = arr[ 2 ];\n* // returns 3\n*/\nfunction setInt32( arr, idx, value ) {\n\tarr[ idx ] = value;\n}\n\n/**\n* Sets an element in an `Int16Array`.\n*\n* @private\n* @param {Int16Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @param {number} value - value to set\n*\n* @example\n* var Int16Array = require( '@stdlib/array/int16' );\n*\n* var arr = new Int16Array( 4 );\n*\n* setInt16( arr, 2, 3 );\n*\n* var v = arr[ 2 ];\n* // returns 3\n*/\nfunction setInt16( arr, idx, value ) {\n\tarr[ idx ] = value;\n}\n\n/**\n* Sets an element in an `Int8Array`.\n*\n* @private\n* @param {Int8Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @param {number} value - value to set\n*\n* @example\n* var Int8Array = require( '@stdlib/array/int8' );\n*\n* var arr = new Int8Array( 4 );\n*\n* setInt8( arr, 2, 3 );\n*\n* var v = arr[ 2 ];\n* // returns 3\n*/\nfunction setInt8( arr, idx, value ) {\n\tarr[ idx ] = value;\n}\n\n/**\n* Sets an element in a `Uint32Array`.\n*\n* @private\n* @param {Uint32Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @param {number} value - value to set\n*\n* @example\n* var Uint32Array = require( '@stdlib/array/uint32' );\n*\n* var arr = new Uint32Array( 4 );\n*\n* setUint32( arr, 2, 3 );\n*\n* var v = arr[ 2 ];\n* // returns 3\n*/\nfunction setUint32( arr, idx, value ) {\n\tarr[ idx ] = value;\n}\n\n/**\n* Sets an element in a `Uint16Array`.\n*\n* @private\n* @param {Uint16Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @param {number} value - value to set\n*\n* @example\n* var Uint16Array = require( '@stdlib/array/uint16' );\n*\n* var arr = new Uint16Array( 4 );\n*\n* setUint16( arr, 2, 3 );\n*\n* var v = arr[ 2 ];\n* // returns 3\n*/\nfunction setUint16( arr, idx, value ) {\n\tarr[ idx ] = value;\n}\n\n/**\n* Sets an element in a `Uint8Array`.\n*\n* @private\n* @param {Uint8Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @param {number} value - value to set\n*\n* @example\n* var Uint8Array = require( '@stdlib/array/uint8' );\n*\n* var arr = new Uint8Array( 4 );\n*\n* setUint8( arr, 2, 3 );\n*\n* var v = arr[ 2 ];\n* // returns 3\n*/\nfunction setUint8( arr, idx, value ) {\n\tarr[ idx ] = value;\n}\n\n/**\n* Sets an element in a `Uint8ClampedArray`.\n*\n* @private\n* @param {Uint8ClampedArray} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @param {number} value - value to set\n*\n* @example\n* var Uint8ClampedArray = require( '@stdlib/array/uint8c' );\n*\n* var arr = new Uint8ClampedArray( 4 );\n*\n* setUint8c( arr, 2, 3 );\n*\n* var v = arr[ 2 ];\n* // returns 3\n*/\nfunction setUint8c( arr, idx, value ) {\n\tarr[ idx ] = value;\n}\n\n/**\n* Sets an element in a generic `Array`.\n*\n* @private\n* @param {Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @param {*} value - value to set\n*\n* @example\n* var arr = [ 1, 2, 3, 4 ];\n*\n* setGeneric( arr, 2, 3 );\n*\n* var v = arr[ 2 ];\n* // returns 3\n*/\nfunction setGeneric( arr, idx, value ) {\n\tarr[ idx ] = value;\n}\n\n/**\n* Sets an element in an indexed array-like object.\n*\n* @private\n* @param {Collection} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @param {*} value - value to set\n*\n* @example\n* var arr = [ 1, 2, 3, 4 ];\n*\n* setArrayLike( arr, 2, 3 );\n*\n* var v = arr[ 2 ];\n* // returns 3\n*/\nfunction setArrayLike( arr, idx, value ) {\n\tarr[ idx ] = value;\n}\n\n\n// MAIN //\n\n/**\n* Returns an accessor function for setting an element in an indexed array-like object.\n*\n* @param {string} dtype - array dtype\n* @returns {Function} accessor\n*\n* @example\n* var dtype = require( '@stdlib/array/dtype' );\n*\n* var arr = [ 1, 2, 3, 4 ];\n*\n* var set = setter( dtype( arr ) );\n* set( arr, 2, 3 );\n*\n* var v = arr[ 2 ];\n* // returns 3\n*/\nfunction setter( dtype ) {\n\tvar f = SETTERS[ dtype ];\n\tif ( typeof f === 'function' ) {\n\t\treturn f;\n\t}\n\treturn SETTERS.default;\n}\n\n\n// EXPORTS //\n\nmodule.exports = setter;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return an accessor function for setting an element in an indexed array-like object.\n*\n* @module @stdlib/array/base/setter\n*\n* @example\n* var dtype = require( '@stdlib/array/dtype' );\n* var set = require( '@stdlib/array/base/setter' );\n*\n* var arr = [ 1, 2, 3, 4 ];\n*\n* var set = setter( dtype( arr ) );\n* set( arr, 2, 10 );\n*\n* var v = arr[ 2 ];\n* // returns 10\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar GETTERS = {\n\t'complex128': getComplex128,\n\t'complex64': getComplex64,\n\t'default': getArrayLike\n};\n\n\n// FUNCTIONS //\n\n/**\n* Returns an element from a `Complex128Array`.\n*\n* @private\n* @param {Complex128Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @returns {number} element value\n*\n* @example\n* var Complex128Array = require( '@stdlib/array/complex128' );\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* var arr = new Complex128Array( [ 1, 2, 3, 4 ] );\n*\n* var v = getComplex128( arr, 1 );\n* // returns <Complex128>\n*\n* var re = real( v );\n* // returns 3.0\n*\n* var im = imag( v );\n* // returns 4.0\n*/\nfunction getComplex128( arr, idx ) {\n\treturn arr.get( idx );\n}\n\n/**\n* Returns an element from a `Complex64Array`.\n*\n* @private\n* @param {Complex64Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @returns {number} element value\n*\n* @example\n* var Complex64Array = require( '@stdlib/array/complex64' );\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* var arr = new Complex64Array( [ 1, 2, 3, 4 ] );\n*\n* var v = getComplex64( arr, 1 );\n* // returns <Complex64>\n*\n* var re = realf( v );\n* // returns 3.0\n*\n* var im = imagf( v );\n* // returns 4.0\n*/\nfunction getComplex64( arr, idx ) {\n\treturn arr.get( idx );\n}\n\n/**\n* Returns an element from an array-like object supporting the get/set protocol.\n*\n* @private\n* @param {Collection} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @returns {*} element value\n*\n* @example\n* var arr = [ 1, 2, 3, 4 ];\n*\n* function get( idx ) {\n*    return arr[ idx ];\n* }\n*\n* function set( value, idx ) {\n*    arr[ idx ] = value;\n* }\n*\n* arr.get = get;\n* arr.set = set;\n*\n* var v = getArrayLike( arr, 2 );\n* // returns 3\n*/\nfunction getArrayLike( arr, idx ) {\n\treturn arr.get( idx );\n}\n\n\n// MAIN //\n\n/**\n* Returns an accessor function for retrieving an element from an array-like object supporting the get/set protocol.\n*\n* @param {string} dtype - array dtype\n* @returns {Function} accessor\n*\n* @example\n* var Complex64Array = require( '@stdlib/array/complex64' );\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n* var dtype = require( '@stdlib/array/dtype' );\n*\n* var arr = new Complex64Array( [ 1, 2, 3, 4 ] );\n*\n* var get = getter( dtype( arr ) );\n* var v = get( arr, 1 );\n* // returns <Complex64>\n*\n* var re = realf( v );\n* // returns 3.0\n*\n* var im = imagf( v );\n* // returns 4.0\n*/\nfunction getter( dtype ) {\n\tvar f = GETTERS[ dtype ];\n\tif ( typeof f === 'function' ) {\n\t\treturn f;\n\t}\n\treturn GETTERS.default;\n}\n\n\n// EXPORTS //\n\nmodule.exports = getter;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return an accessor function for retrieving an element from an array-like object supporting the get/set protocol.\n*\n* @module @stdlib/array/base/accessor-getter\n*\n* @example\n* var Complex64Array = require( '@stdlib/array/complex64' );\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n* var dtype = require( '@stdlib/array/dtype' );\n* var getter = require( '@stdlib/array/base/accessor-getter' );\n*\n* var arr = new Complex64Array( [ 1, 2, 3, 4 ] );\n*\n* var get = getter( dtype( arr ) );\n* var v = get( arr, 1 );\n* // returns <Complex64>\n*\n* var re = realf( v );\n* // returns 3.0\n*\n* var im = imagf( v );\n* // returns 4.0\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar SETTERS = {\n\t'complex128': setComplex128,\n\t'complex64': setComplex64,\n\t'default': setArrayLike\n};\n\n\n// FUNCTIONS //\n\n/**\n* Sets an element in a `Complex128Array`.\n*\n* @private\n* @param {Complex128Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @param {(Collection|Complex|ComplexArray)} value - value(s)\n*\n* @example\n* var Complex128Array = require( '@stdlib/array/complex128' );\n* var Complex128 = require( '@stdlib/complex/float64' );\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* var arr = new Complex128Array( [ 1, 2, 3, 4 ] );\n*\n* setComplex128( arr, 1, new Complex128( 10.0, 11.0 ) );\n* var v = arr.get( 1 );\n* // returns <Complex128>\n*\n* var re = real( v );\n* // returns 10.0\n*\n* var im = imag( v );\n* // returns 11.0\n*/\nfunction setComplex128( arr, idx, value ) {\n\tarr.set( value, idx );\n}\n\n/**\n* Sets an element in a `Complex64Array`.\n*\n* @private\n* @param {Complex64Array} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @param {(Collection|Complex|ComplexArray)} value - value(s)\n*\n* @example\n* var Complex64Array = require( '@stdlib/array/complex64' );\n* var Complex64 = require( '@stdlib/complex/float32' );\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* var arr = new Complex64Array( [ 1, 2, 3, 4 ] );\n*\n* setComplex64( arr, 1, new Complex64( 10.0, 11.0 ) );\n* var v = arr.get( 1 );\n* // returns <Complex64>\n*\n* var re = realf( v );\n* // returns 10.0\n*\n* var im = imagf( v );\n* // returns 11.0\n*/\nfunction setComplex64( arr, idx, value ) {\n\tarr.set( value, idx );\n}\n\n/**\n* Sets an element in an array-like object supporting the get/set protocol.\n*\n* @private\n* @param {Collection} arr - input array\n* @param {NonNegativeInteger} idx - element index\n* @param {(Collection|Complex|ComplexArray)} value - value(s)\n*\n* @example\n* var arr = [ 1, 2, 3, 4 ];\n*\n* function get( idx ) {\n*    return arr[ idx ];\n* }\n*\n* function set( value, idx ) {\n*    arr[ idx ] = value;\n* }\n*\n* arr.get = get;\n* arr.set = set;\n*\n* setArrayLike( arr, 2, 10 );\n*\n* var v = arr[ 2 ];\n* // returns 10\n*/\nfunction setArrayLike( arr, idx, value ) {\n\tarr.set( value, idx );\n}\n\n\n// MAIN //\n\n/**\n* Returns an accessor function for setting an element in an array-like object supporting the get/set protocol.\n*\n* @param {string} dtype - array dtype\n* @returns {Function} accessor\n*\n* @example\n* var Complex64Array = require( '@stdlib/array/complex64' );\n* var Complex64 = require( '@stdlib/complex/float32' );\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n* var dtype = require( '@stdlib/array/dtype' );\n*\n* var arr = new Complex64Array( [ 1, 2, 3, 4 ] );\n*\n* var set = setter( dtype( arr ) );\n* set( arr, 1, new Complex64( 10.0, 11.0 ) );\n*\n* var v = arr.get( 1 );\n* // returns <Complex64>\n*\n* var re = realf( v );\n* // returns 10.0\n*\n* var im = imagf( v );\n* // returns 11.0\n*/\nfunction setter( dtype ) {\n\tvar f = SETTERS[ dtype ];\n\tif ( typeof f === 'function' ) {\n\t\treturn f;\n\t}\n\treturn SETTERS.default;\n}\n\n\n// EXPORTS //\n\nmodule.exports = setter;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return an accessor function for setting an element in an array-like object supporting the get/set protocol.\n*\n* @module @stdlib/array/base/accessor-setter\n*\n* @example\n* var Complex64Array = require( '@stdlib/array/complex64' );\n* var Complex64 = require( '@stdlib/complex/float32' );\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n* var dtype = require( '@stdlib/array/dtype' );\n* var setter = require( '@stdlib/array/base/accessor-setter' );\n*\n* var arr = new Complex64Array( [ 1, 2, 3, 4 ] );\n*\n* var set = setter( dtype( arr ) );\n* set( arr, 1, new Complex64( 10.0, 11.0 ) );\n*\n* var v = arr.get( 1 );\n* // returns <Complex64>\n*\n* var re = realf( v );\n* // returns 10.0\n*\n* var im = imagf( v );\n* // returns 11.0\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n// Mapping from array constructors to data types...\nvar ctor2dtypes = {\n\t'Float32Array': 'float32',\n\t'Float64Array': 'float64',\n\t'Array': 'generic',\n\t'Int16Array': 'int16',\n\t'Int32Array': 'int32',\n\t'Int8Array': 'int8',\n\t'Uint16Array': 'uint16',\n\t'Uint32Array': 'uint32',\n\t'Uint8Array': 'uint8',\n\t'Uint8ClampedArray': 'uint8c',\n\t'Complex64Array': 'complex64',\n\t'Complex128Array': 'complex128'\n};\n\n\n// EXPORTS //\n\nmodule.exports = ctor2dtypes;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar ctor = ( typeof Float64Array === 'function' ) ? Float64Array : void 0; // eslint-disable-line stdlib/require-globals\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// TODO: write polyfill\n\n// MAIN //\n\n/**\n* Typed array which represents an array of double-precision floating-point numbers in the platform byte order.\n*\n* @throws {Error} not implemented\n*/\nfunction polyfill() {\n\tthrow new Error( 'not implemented' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = polyfill;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Typed array constructor which returns a typed array representing an array of double-precision floating-point numbers in the platform byte order.\n*\n* @module @stdlib/array/float64\n*\n* @example\n* var ctor = require( '@stdlib/array/float64' );\n*\n* var arr = new ctor( 10 );\n* // returns <Float64Array>\n*/\n\n// MODULES //\n\nvar hasFloat64ArraySupport = require( '@stdlib/assert/has-float64array-support' );\nvar builtin = require( './main.js' );\nvar polyfill = require( './polyfill.js' );\n\n\n// MAIN //\n\nvar ctor;\nif ( hasFloat64ArraySupport() ) {\n\tctor = builtin;\n} else {\n\tctor = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar ctor = ( typeof Float32Array === 'function' ) ? Float32Array : void 0; // eslint-disable-line stdlib/require-globals\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// TODO: write polyfill\n\n// MAIN //\n\n/**\n* Typed array which represents an array of single-precision floating-point numbers in the platform byte order.\n*\n* @throws {Error} not implemented\n*/\nfunction polyfill() {\n\tthrow new Error( 'not implemented' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = polyfill;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Typed array constructor which returns a typed array representing an array of single-precision floating-point numbers in the platform byte order.\n*\n* @module @stdlib/array/float32\n*\n* @example\n* var ctor = require( '@stdlib/array/float32' );\n*\n* var arr = new ctor( 10 );\n* // returns <Float32Array>\n*/\n\n// MODULES //\n\nvar hasFloat32ArraySupport = require( '@stdlib/assert/has-float32array-support' );\nvar builtin = require( './main.js' );\nvar polyfill = require( './polyfill.js' );\n\n\n// MAIN //\n\nvar ctor;\nif ( hasFloat32ArraySupport() ) {\n\tctor = builtin;\n} else {\n\tctor = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar ctor = ( typeof Uint32Array === 'function' ) ? Uint32Array : void 0; // eslint-disable-line stdlib/require-globals\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// TODO: write polyfill\n\n// MAIN //\n\n/**\n* Typed array which represents an array of 32-bit unsigned integers in the platform byte order.\n*\n* @throws {Error} not implemented\n*/\nfunction polyfill() {\n\tthrow new Error( 'not implemented' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = polyfill;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Typed array constructor which returns a typed array representing an array of 32-bit unsigned integers in the platform byte order.\n*\n* @module @stdlib/array/uint32\n*\n* @example\n* var ctor = require( '@stdlib/array/uint32' );\n*\n* var arr = new ctor( 10 );\n* // returns <Uint32Array>\n*/\n\n// MODULES //\n\nvar hasUint32ArraySupport = require( '@stdlib/assert/has-uint32array-support' );\nvar builtin = require( './main.js' );\nvar polyfill = require( './polyfill.js' );\n\n\n// MAIN //\n\nvar ctor;\nif ( hasUint32ArraySupport() ) {\n\tctor = builtin;\n} else {\n\tctor = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar ctor = ( typeof Int32Array === 'function' ) ? Int32Array : void 0; // eslint-disable-line stdlib/require-globals\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// TODO: write polyfill\n\n// MAIN //\n\n/**\n* Typed array which represents an array of twos-complement 32-bit signed integers in the platform byte order.\n*\n* @throws {Error} not implemented\n*/\nfunction polyfill() {\n\tthrow new Error( 'not implemented' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = polyfill;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Typed array constructor which returns a typed array representing an array of twos-complement 32-bit signed integers in the platform byte order.\n*\n* @module @stdlib/array/int32\n*\n* @example\n* var ctor = require( '@stdlib/array/int32' );\n*\n* var arr = new ctor( 10 );\n* // returns <Int32Array>\n*/\n\n// MODULES //\n\nvar hasInt32ArraySupport = require( '@stdlib/assert/has-int32array-support' );\nvar builtin = require( './main.js' );\nvar polyfill = require( './polyfill.js' );\n\n\n// MAIN //\n\nvar ctor;\nif ( hasInt32ArraySupport() ) {\n\tctor = builtin;\n} else {\n\tctor = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar ctor = ( typeof Uint16Array === 'function' ) ? Uint16Array : void 0; // eslint-disable-line stdlib/require-globals\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// TODO: write polyfill\n\n// MAIN //\n\n/**\n* Typed array which represents an array of 16-bit unsigned integers in the platform byte order.\n*\n* @throws {Error} not implemented\n*/\nfunction polyfill() {\n\tthrow new Error( 'not implemented' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = polyfill;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Typed array constructor which returns a typed array representing an array of 16-bit unsigned integers in the platform byte order.\n*\n* @module @stdlib/array/uint16\n*\n* @example\n* var ctor = require( '@stdlib/array/uint16' );\n*\n* var arr = new ctor( 10 );\n* // returns <Uint16Array>\n*/\n\n// MODULES //\n\nvar hasUint16ArraySupport = require( '@stdlib/assert/has-uint16array-support' );\nvar builtin = require( './main.js' );\nvar polyfill = require( './polyfill.js' );\n\n\n// MAIN //\n\nvar ctor;\nif ( hasUint16ArraySupport() ) {\n\tctor = builtin;\n} else {\n\tctor = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar ctor = ( typeof Int16Array === 'function' ) ? Int16Array : void 0; // eslint-disable-line stdlib/require-globals\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// TODO: write polyfill\n\n// MAIN //\n\n/**\n* Typed array which represents an array of twos-complement 16-bit signed integers in the platform byte order.\n*\n* @throws {Error} not implemented\n*/\nfunction polyfill() {\n\tthrow new Error( 'not implemented' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = polyfill;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Typed array constructor which returns a typed array representing an array of twos-complement 16-bit signed integers in the platform byte order.\n*\n* @module @stdlib/array/int16\n*\n* @example\n* var ctor = require( '@stdlib/array/int16' );\n*\n* var arr = new ctor( 10 );\n* // returns <Int16Array>\n*/\n\n// MODULES //\n\nvar hasInt16ArraySupport = require( '@stdlib/assert/has-int16array-support' );\nvar builtin = require( './main.js' );\nvar polyfill = require( './polyfill.js' );\n\n\n// MAIN //\n\nvar ctor;\nif ( hasInt16ArraySupport() ) {\n\tctor = builtin;\n} else {\n\tctor = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar ctor = ( typeof Uint8Array === 'function' ) ? Uint8Array : void 0; // eslint-disable-line stdlib/require-globals\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// TODO: write polyfill\n\n// MAIN //\n\n/**\n* Typed array which represents an array of 8-bit unsigned integers in the platform byte order.\n*\n* @throws {Error} not implemented\n*/\nfunction polyfill() {\n\tthrow new Error( 'not implemented' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = polyfill;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Typed array constructor which returns a typed array representing an array of 8-bit unsigned integers in the platform byte order.\n*\n* @module @stdlib/array/uint8\n*\n* @example\n* var ctor = require( '@stdlib/array/uint8' );\n*\n* var arr = new ctor( 10 );\n* // returns <Uint8Array>\n*/\n\n// MODULES //\n\nvar hasUint8ArraySupport = require( '@stdlib/assert/has-uint8array-support' );\nvar builtin = require( './main.js' );\nvar polyfill = require( './polyfill.js' );\n\n\n// MAIN //\n\nvar ctor;\nif ( hasUint8ArraySupport() ) {\n\tctor = builtin;\n} else {\n\tctor = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar ctor = ( typeof Uint8ClampedArray === 'function' ) ? Uint8ClampedArray : void 0; // eslint-disable-line stdlib/require-globals\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// TODO: write polyfill\n\n// MAIN //\n\n/**\n* Typed array which represents an array of 8-bit unsigned integers in the platform byte order clamped to 0-255.\n*\n* @throws {Error} not implemented\n*/\nfunction polyfill() {\n\tthrow new Error( 'not implemented' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = polyfill;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Typed array constructor which returns a typed array representing an array of 8-bit unsigned integers in the platform byte order clamped to 0-255.\n*\n* @module @stdlib/array/uint8c\n*\n* @example\n* var ctor = require( '@stdlib/array/uint8c' );\n*\n* var arr = new ctor( 10 );\n* // returns <Uint8ClampedArray>\n*/\n\n// MODULES //\n\nvar hasUint8ClampedArraySupport = require( '@stdlib/assert/has-uint8clampedarray-support' ); // eslint-disable-line id-length\nvar builtin = require( './main.js' );\nvar polyfill = require( './polyfill.js' );\n\n\n// MAIN //\n\nvar ctor;\nif ( hasUint8ClampedArraySupport() ) {\n\tctor = builtin;\n} else {\n\tctor = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar ctor = ( typeof Int8Array === 'function' ) ? Int8Array : void 0; // eslint-disable-line stdlib/require-globals\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// TODO: write polyfill\n\n// MAIN //\n\n/**\n* Typed array which represents an array of twos-complement 8-bit signed integers in the platform byte order.\n*\n* @throws {Error} not implemented\n*/\nfunction polyfill() {\n\tthrow new Error( 'not implemented' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = polyfill;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Typed array constructor which returns a typed array representing an array of twos-complement 8-bit signed integers in the platform byte order.\n*\n* @module @stdlib/array/int8\n*\n* @example\n* var ctor = require( '@stdlib/array/int8' );\n*\n* var arr = new ctor( 10 );\n* // returns <Int8Array>\n*/\n\n// MODULES //\n\nvar hasInt8ArraySupport = require( '@stdlib/assert/has-int8array-support' );\nvar builtin = require( './main.js' );\nvar polyfill = require( './polyfill.js' );\n\n\n// MAIN //\n\nvar ctor;\nif ( hasInt8ArraySupport() ) {\n\tctor = builtin;\n} else {\n\tctor = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar BYTES_PER_ELEMENT = 8; // 4 bytes per float32 x (1 real + 1 imag component)\n\n\n// MAIN //\n\n/**\n* Returns a boolean indicating if a value is a `Complex64Array`.\n*\n* @param {*} value - value to test\n* @returns {boolean} boolean indicating if a value is a `Complex64Array`\n*\n* @example\n* var Complex64Array = require( '@stdlib/array/complex64' );\n*\n* var bool = isComplex64Array( new Complex64Array( 10 ) );\n* // returns true\n*\n* bool = isComplex64Array( [] );\n* // returns false\n*/\nfunction isComplex64Array( value ) {\n\t// Note: the following is not robust and that is intentional. In this case, we are seeking a lower cost way to reasonably determine whether an input value is a `Complex64Array` in order to avoid walking the prototype chain and resolving constructors, which is necessary for robust identification of cross-realm instances. For more robust validation, see `@stdlib/assert/is-complex64array`.\n\treturn (\n\t\ttypeof value === 'object' &&\n\t\tvalue !== null &&\n\t\tvalue.constructor.name === 'Complex64Array' &&\n\t\tvalue.BYTES_PER_ELEMENT === BYTES_PER_ELEMENT\n\t);\n}\n\n\n// EXPORTS //\n\nmodule.exports = isComplex64Array;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test if a value is a `Complex64Array`.\n*\n* @module @stdlib/array/base/assert/is-complex64array\n*\n* @example\n* var Complex64Array = require( '@stdlib/array/complex64' );\n* var isComplex64Array = require( '@stdlib/array/base/assert/is-complex64array' );\n*\n* var bool = isComplex64Array( new Complex64Array( 10 ) );\n* // returns true\n*\n* bool = isComplex64Array( [] );\n* // returns false\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar BYTES_PER_ELEMENT = 16; // 8 bytes per float64 x (1 real + 1 imag component)\n\n\n// MAIN //\n\n/**\n* Returns a boolean indicating if a value is a `Complex128Array`.\n*\n* @param {*} value - value to test\n* @returns {boolean} boolean indicating if a value is a `Complex128Array`\n*\n* @example\n* var Complex128Array = require( '@stdlib/array/complex128' );\n*\n* var bool = isComplex128Array( new Complex128Array( 10 ) );\n* // returns true\n*\n* bool = isComplex128Array( [] );\n* // returns false\n*/\nfunction isComplex128Array( value ) {\n\t// Note: the following is not robust and that is intentional. In this case, we are seeking a lower cost way to reasonably determine whether an input value is a `Complex128Array` in order to avoid walking the prototype chain and resolving constructors, which is necessary for robust identification of cross-realm instances. For more robust validation, see `@stdlib/assert/is-complex128array`.\n\treturn (\n\t\ttypeof value === 'object' &&\n\t\tvalue !== null &&\n\t\tvalue.constructor.name === 'Complex128Array' &&\n\t\tvalue.BYTES_PER_ELEMENT === BYTES_PER_ELEMENT\n\t);\n}\n\n\n// EXPORTS //\n\nmodule.exports = isComplex128Array;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test if a value is a `Complex128Array`.\n*\n* @module @stdlib/array/base/assert/is-complex128array\n*\n* @example\n* var Complex128Array = require( '@stdlib/array/complex128' );\n* var isComplex128Array = require( '@stdlib/array/base/assert/is-complex128array' );\n*\n* var bool = isComplex128Array( new Complex128Array( 10 ) );\n* // returns true\n*\n* bool = isComplex128Array( [] );\n* // returns false\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isArrayLikeObject = require( '@stdlib/assert/is-array-like-object' );\nvar isComplexLike = require( '@stdlib/assert/is-complex-like' );\nvar realf = require( '@stdlib/complex/realf' );\nvar imagf = require( '@stdlib/complex/imagf' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Returns an array of iterated values.\n*\n* @private\n* @param {Object} it - iterator\n* @returns {(Array|TypeError)} array or an error\n*/\nfunction fromIterator( it ) {\n\tvar out;\n\tvar v;\n\tvar z;\n\n\tout = [];\n\twhile ( true ) {\n\t\tv = it.next();\n\t\tif ( v.done ) {\n\t\t\tbreak;\n\t\t}\n\t\tz = v.value;\n\t\tif ( isArrayLikeObject( z ) && z.length >= 2 ) {\n\t\t\tout.push( z[ 0 ], z[ 1 ] );\n\t\t} else if ( isComplexLike( z ) ) {\n\t\t\tout.push( realf( z ), imagf( z ) );\n\t\t} else {\n\t\t\treturn new TypeError( format( 'invalid argument. An iterator must return either a two-element array containing real and imaginary components or a complex number. Value: `%s`.', z ) );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = fromIterator;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isArrayLikeObject = require( '@stdlib/assert/is-array-like-object' );\nvar isComplexLike = require( '@stdlib/assert/is-complex-like' );\nvar realf = require( '@stdlib/complex/realf' );\nvar imagf = require( '@stdlib/complex/imagf' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Returns an array of iterated values.\n*\n* @private\n* @param {Object} it - iterator\n* @param {Function} clbk - callback to invoke for each iterated value\n* @param {*} thisArg - invocation context\n* @returns {(Array|TypeError)} array or an error\n*/\nfunction fromIteratorMap( it, clbk, thisArg ) {\n\tvar out;\n\tvar v;\n\tvar z;\n\tvar i;\n\n\tout = [];\n\ti = -1;\n\twhile ( true ) {\n\t\tv = it.next();\n\t\tif ( v.done ) {\n\t\t\tbreak;\n\t\t}\n\t\ti += 1;\n\t\tz = clbk.call( thisArg, v.value, i );\n\t\tif ( isArrayLikeObject( z ) && z.length >= 2 ) {\n\t\t\tout.push( z[ 0 ], z[ 1 ] );\n\t\t} else if ( isComplexLike( z ) ) {\n\t\t\tout.push( realf( z ), imagf( z ) );\n\t\t} else {\n\t\t\treturn new TypeError( format( 'invalid argument. Callback must return either a two-element array containing real and imaginary components or a complex number. Value: `%s`.', z ) );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = fromIteratorMap;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isComplexLike = require( '@stdlib/assert/is-complex-like' );\nvar realf = require( '@stdlib/complex/realf' );\nvar imagf = require( '@stdlib/complex/imagf' );\n\n\n// MAIN //\n\n/**\n* Returns a strided array of real and imaginary components.\n*\n* @private\n* @param {Float32Array} buf - output array\n* @param {Array} arr - array containing complex numbers\n* @returns {(Float32Array|null)} output array or null\n*/\nfunction fromArray( buf, arr ) {\n\tvar len;\n\tvar v;\n\tvar i;\n\tvar j;\n\n\tlen = arr.length;\n\tj = 0;\n\tfor ( i = 0; i < len; i++ ) {\n\t\tv = arr[ i ];\n\t\tif ( !isComplexLike( v ) ) {\n\t\t\treturn null;\n\t\t}\n\t\tbuf[ j ] = realf( v );\n\t\tbuf[ j+1 ] = imagf( v );\n\t\tj += 2; // stride\n\t}\n\treturn buf;\n}\n\n\n// EXPORTS //\n\nmodule.exports = fromArray;\n", "/* eslint-disable no-restricted-syntax, max-lines, no-invalid-this */\n\n/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isArrayLikeObject = require( '@stdlib/assert/is-array-like-object' );\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' );\nvar isObject = require( '@stdlib/assert/is-object' );\nvar isArray = require( '@stdlib/assert/is-array' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isComplexLike = require( '@stdlib/assert/is-complex-like' );\nvar isEven = require( '@stdlib/math/base/assert/is-even' );\nvar isInteger = require( '@stdlib/math/base/assert/is-integer' );\nvar isComplex64Array = require( './../../base/assert/is-complex64array' );\nvar isComplex128Array = require( './../../base/assert/is-complex128array' );\nvar hasIteratorSymbolSupport = require( '@stdlib/assert/has-iterator-symbol-support' );\nvar ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' );\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar setReadOnlyAccessor = require( '@stdlib/utils/define-nonenumerable-read-only-accessor' );\nvar Float32Array = require( './../../float32' );\nvar Complex64 = require( '@stdlib/complex/float32' );\nvar format = require( '@stdlib/string/format' );\nvar realf = require( '@stdlib/complex/realf' );\nvar imagf = require( '@stdlib/complex/imagf' );\nvar floor = require( '@stdlib/math/base/special/floor' );\nvar reinterpret64 = require( '@stdlib/strided/base/reinterpret-complex64' );\nvar reinterpret128 = require( '@stdlib/strided/base/reinterpret-complex128' );\nvar getter = require( './../../base/getter' );\nvar accessorGetter = require( './../../base/accessor-getter' );\nvar fromIterator = require( './from_iterator.js' );\nvar fromIteratorMap = require( './from_iterator_map.js' );\nvar fromArray = require( './from_array.js' );\n\n\n// VARIABLES //\n\nvar BYTES_PER_ELEMENT = Float32Array.BYTES_PER_ELEMENT * 2;\nvar HAS_ITERATOR_SYMBOL = hasIteratorSymbolSupport();\n\n\n// FUNCTIONS //\n\n/**\n* Returns a boolean indicating if a value is a complex typed array.\n*\n* @private\n* @param {*} value - value to test\n* @returns {boolean} boolean indicating if a value is a complex typed array\n*/\nfunction isComplexArray( value ) {\n\treturn (\n\t\tvalue instanceof Complex64Array ||\n\t\t(\n\t\t\ttypeof value === 'object' &&\n\t\t\tvalue !== null &&\n\t\t\t(\n\t\t\t\tvalue.constructor.name === 'Complex64Array' ||\n\t\t\t\tvalue.constructor.name === 'Complex128Array'\n\t\t\t) &&\n\t\t\ttypeof value._length === 'number' && // eslint-disable-line no-underscore-dangle\n\n\t\t\t// NOTE: we don't perform a more rigorous test here for a typed array for performance reasons, as robustly checking for a typed array instance could require walking the prototype tree and performing relatively expensive constructor checks...\n\t\t\ttypeof value._buffer === 'object' // eslint-disable-line no-underscore-dangle\n\t\t)\n\t);\n}\n\n/**\n* Returns a boolean indicating if a value is a complex typed array constructor.\n*\n* @private\n* @param {*} value - value to test\n* @returns {boolean} boolean indicating if a value is a complex typed array constructor\n*/\nfunction isComplexArrayConstructor( value ) {\n\treturn (\n\t\tvalue === Complex64Array ||\n\n\t\t// NOTE: weaker test in order to avoid a circular dependency with Complex128Array...\n\t\tvalue.name === 'Complex128Array'\n\t);\n}\n\n/**\n* Retrieves a complex number from a complex number array buffer.\n*\n* @private\n* @param {Float32Array} buf - array buffer\n* @param {NonNegativeInteger} idx - element index\n* @returns {Complex64} complex number\n*/\nfunction getComplex64( buf, idx ) {\n\tidx *= 2;\n\treturn new Complex64( buf[ idx ], buf[ idx+1 ] );\n}\n\n\n// MAIN //\n\n/**\n* 64-bit complex number array constructor.\n*\n* @constructor\n* @param {(NonNegativeInteger|Collection|ArrayBuffer|Iterable)} [arg] - length, typed array, array-like object, buffer, or an iterable\n* @param {NonNegativeInteger} [byteOffset=0] - byte offset\n* @param {NonNegativeInteger} [length] - view length\n* @throws {RangeError} ArrayBuffer byte length must be a multiple of `8`\n* @throws {RangeError} array-like object and typed array input arguments must have a length which is a multiple of two\n* @throws {TypeError} if provided only a single argument, must provide a valid argument\n* @throws {TypeError} byte offset must be a nonnegative integer\n* @throws {RangeError} byte offset must be a multiple of `8`\n* @throws {TypeError} view length must be a positive multiple of `8`\n* @throws {RangeError} must provide sufficient memory to accommodate byte offset and view length requirements\n* @throws {TypeError} an iterator must return either a two element array containing real and imaginary components or a complex number\n* @returns {Complex64Array} complex number array\n*\n* @example\n* var arr = new Complex64Array();\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 0\n*\n* @example\n* var arr = new Complex64Array( 2 );\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 2\n*\n* @example\n* var arr = new Complex64Array( [ 1.0, -1.0 ] );\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 1\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = new Complex64Array( buf );\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 2\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = new Complex64Array( buf, 8 );\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 1\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = new Complex64Array( buf, 8, 2 );\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 2\n*/\nfunction Complex64Array() {\n\tvar byteOffset;\n\tvar nargs;\n\tvar buf;\n\tvar len;\n\n\tnargs = arguments.length;\n\tif ( !(this instanceof Complex64Array) ) {\n\t\tif ( nargs === 0 ) {\n\t\t\treturn new Complex64Array();\n\t\t}\n\t\tif ( nargs === 1 ) {\n\t\t\treturn new Complex64Array( arguments[0] );\n\t\t}\n\t\tif ( nargs === 2 ) {\n\t\t\treturn new Complex64Array( arguments[0], arguments[1] );\n\t\t}\n\t\treturn new Complex64Array( arguments[0], arguments[1], arguments[2] );\n\t}\n\t// Create the underlying data buffer...\n\tif ( nargs === 0 ) {\n\t\tbuf = new Float32Array( 0 ); // backward-compatibility\n\t} else if ( nargs === 1 ) {\n\t\tif ( isNonNegativeInteger( arguments[0] ) ) {\n\t\t\tbuf = new Float32Array( arguments[0]*2 );\n\t\t} else if ( isCollection( arguments[0] ) ) {\n\t\t\tbuf = arguments[ 0 ];\n\t\t\tlen = buf.length;\n\n\t\t\t// If provided a \"generic\" array, peak at the first value, and, if the value is a complex number, try to process as an array of complex numbers, falling back to \"normal\" typed array initialization if we fail and ensuring consistency if the first value had not been a complex number...\n\t\t\tif ( len && isArray( buf ) && isComplexLike( buf[0] ) ) {\n\t\t\t\tbuf = fromArray( new Float32Array( len*2 ), buf );\n\t\t\t\tif ( buf === null ) {\n\t\t\t\t\t// We failed and we are now forced to allocate a new array :-(\n\t\t\t\t\tif ( !isEven( len ) ) {\n\t\t\t\t\t\tthrow new RangeError( format( 'invalid argument. Array-like object arguments must have a length which is a multiple of two. Length: `%u`.', len ) );\n\t\t\t\t\t}\n\t\t\t\t\t// We failed, so fall back to directly setting values...\n\t\t\t\t\tbuf = new Float32Array( arguments[0] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( isComplex64Array( buf ) ) {\n\t\t\t\t\tbuf = reinterpret64( buf, 0 );\n\t\t\t\t} else if ( isComplex128Array( buf ) ) {\n\t\t\t\t\tbuf = reinterpret128( buf, 0 );\n\t\t\t\t} else if ( !isEven( len ) ) {\n\t\t\t\t\tthrow new RangeError( format( 'invalid argument. Array-like object and typed array arguments must have a length which is a multiple of two. Length: `%u`.', len ) );\n\t\t\t\t}\n\t\t\t\tbuf = new Float32Array( buf );\n\t\t\t}\n\t\t} else if ( isArrayBuffer( arguments[0] ) ) {\n\t\t\tbuf = arguments[ 0 ];\n\t\t\tif ( !isInteger( buf.byteLength/BYTES_PER_ELEMENT ) ) {\n\t\t\t\tthrow new RangeError( format( 'invalid argument. ArrayBuffer byte length must be a multiple of %u. Byte length: `%u`.', BYTES_PER_ELEMENT, buf.byteLength ) );\n\t\t\t}\n\t\t\tbuf = new Float32Array( buf );\n\t\t} else if ( isObject( arguments[0] ) ) {\n\t\t\tbuf = arguments[ 0 ];\n\t\t\tif ( HAS_ITERATOR_SYMBOL === false ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Environment lacks Symbol.iterator support. Must provide a length, ArrayBuffer, typed array, or array-like object. Value: `%s`.', buf ) );\n\t\t\t}\n\t\t\tif ( !isFunction( buf[ ITERATOR_SYMBOL ] ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, ArrayBuffer, typed array, array-like object, or an iterable. Value: `%s`.', buf ) );\n\t\t\t}\n\t\t\tbuf = buf[ ITERATOR_SYMBOL ]();\n\t\t\tif ( !isFunction( buf.next ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, ArrayBuffer, typed array, array-like object, or an iterable. Value: `%s`.', buf ) ); // FIXME: `buf` is what is returned from above, NOT the original value\n\t\t\t}\n\t\t\tbuf = fromIterator( buf );\n\t\t\tif ( buf instanceof Error ) {\n\t\t\t\tthrow buf;\n\t\t\t}\n\t\t\tbuf = new Float32Array( buf );\n\t\t} else {\n\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, ArrayBuffer, typed array, array-like object, or an iterable. Value: `%s`.', arguments[0] ) );\n\t\t}\n\t} else {\n\t\tbuf = arguments[ 0 ];\n\t\tif ( !isArrayBuffer( buf ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. First argument must be an ArrayBuffer. Value: `%s`.', buf ) );\n\t\t}\n\t\tbyteOffset = arguments[ 1 ];\n\t\tif ( !isNonNegativeInteger( byteOffset ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Byte offset must be a nonnegative integer. Value: `%s`.', byteOffset ) );\n\t\t}\n\t\tif ( !isInteger( byteOffset/BYTES_PER_ELEMENT ) ) {\n\t\t\tthrow new RangeError( format( 'invalid argument. Byte offset must be a multiple of %u. Value: `%u`.', BYTES_PER_ELEMENT, byteOffset ) );\n\t\t}\n\t\tif ( nargs === 2 ) {\n\t\t\tlen = buf.byteLength - byteOffset;\n\t\t\tif ( !isInteger( len/BYTES_PER_ELEMENT ) ) {\n\t\t\t\tthrow new RangeError( format( 'invalid arguments. ArrayBuffer view byte length must be a multiple of %u. View byte length: `%u`.', BYTES_PER_ELEMENT, len ) );\n\t\t\t}\n\t\t\tbuf = new Float32Array( buf, byteOffset );\n\t\t} else {\n\t\t\tlen = arguments[ 2 ];\n\t\t\tif ( !isNonNegativeInteger( len ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Length must be a nonnegative integer. Value: `%s`.', len ) );\n\t\t\t}\n\t\t\tif ( (len*BYTES_PER_ELEMENT) > (buf.byteLength-byteOffset) ) {\n\t\t\t\tthrow new RangeError( format( 'invalid arguments. ArrayBuffer has insufficient capacity. Either decrease the array length or provide a bigger buffer. Minimum capacity: `%u`.', len*BYTES_PER_ELEMENT ) );\n\t\t\t}\n\t\t\tbuf = new Float32Array( buf, byteOffset, len*2 );\n\t\t}\n\t}\n\tsetReadOnly( this, '_buffer', buf );\n\tsetReadOnly( this, '_length', buf.length/2 );\n\n\treturn this;\n}\n\n/**\n* Size (in bytes) of each array element.\n*\n* @name BYTES_PER_ELEMENT\n* @memberof Complex64Array\n* @readonly\n* @type {PositiveInteger}\n* @default 8\n*\n* @example\n* var nbytes = Complex64Array.BYTES_PER_ELEMENT;\n* // returns 8\n*/\nsetReadOnly( Complex64Array, 'BYTES_PER_ELEMENT', BYTES_PER_ELEMENT );\n\n/**\n* Constructor name.\n*\n* @name name\n* @memberof Complex64Array\n* @readonly\n* @type {string}\n* @default 'Complex64Array'\n*\n* @example\n* var str = Complex64Array.name;\n* // returns 'Complex64Array'\n*/\nsetReadOnly( Complex64Array, 'name', 'Complex64Array' );\n\n/**\n* Creates a new 64-bit complex number array from an array-like object or an iterable.\n*\n* @name from\n* @memberof Complex64Array\n* @type {Function}\n* @param {(Collection|Iterable)} src - array-like object or iterable\n* @param {Function} [clbk] - callback to invoke for each source element\n* @param {*} [thisArg] - context\n* @throws {TypeError} `this` context must be a constructor\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be an array-like object or an iterable\n* @throws {TypeError} second argument must be a function\n* @throws {RangeError} array-like objects must have a length which is a multiple of two\n* @throws {TypeError} an iterator must return either a two element array containing real and imaginary components or a complex number\n* @throws {TypeError} when provided an iterator, a callback must return either a two element array containing real and imaginary components or a complex number\n* @returns {Complex64Array} 64-bit complex number array\n*\n* @example\n* var arr = Complex64Array.from( [ 1.0, -1.0 ] );\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 1\n*\n* @example\n* var Complex64 = require( '@stdlib/complex/float32' );\n*\n* var arr = Complex64Array.from( [ new Complex64( 1.0, 1.0 ) ] );\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 1\n*\n* @example\n* var Complex64 = require( '@stdlib/complex/float32' );\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* function clbk( v ) {\n*     return new Complex64( realf(v)*2.0, imagf(v)*2.0 );\n* }\n*\n* var arr = Complex64Array.from( [ new Complex64( 1.0, 1.0 ) ], clbk );\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 1\n*/\nsetReadOnly( Complex64Array, 'from', function from( src ) {\n\tvar thisArg;\n\tvar nargs;\n\tvar clbk;\n\tvar out;\n\tvar buf;\n\tvar tmp;\n\tvar get;\n\tvar len;\n\tvar flg;\n\tvar v;\n\tvar i;\n\tvar j;\n\tif ( !isFunction( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` context must be a constructor.' );\n\t}\n\tif ( !isComplexArrayConstructor( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tnargs = arguments.length;\n\tif ( nargs > 1 ) {\n\t\tclbk = arguments[ 1 ];\n\t\tif ( !isFunction( clbk ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a function. Value: `%s`.', clbk ) );\n\t\t}\n\t\tif ( nargs > 2 ) {\n\t\t\tthisArg = arguments[ 2 ];\n\t\t}\n\t}\n\tif ( isComplexArray( src ) ) {\n\t\tlen = src.length;\n\t\tif ( clbk ) {\n\t\t\tout = new this( len );\n\t\t\tbuf = out._buffer; // eslint-disable-line no-underscore-dangle\n\t\t\tj = 0;\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tv = clbk.call( thisArg, src.get( i ), i );\n\t\t\t\tif ( isComplexLike( v ) ) {\n\t\t\t\t\tbuf[ j ] = realf( v );\n\t\t\t\t\tbuf[ j+1 ] = imagf( v );\n\t\t\t\t} else if ( isArrayLikeObject( v ) && v.length >= 2 ) {\n\t\t\t\t\tbuf[ j ] = v[ 0 ];\n\t\t\t\t\tbuf[ j+1 ] = v[ 1 ];\n\t\t\t\t} else {\n\t\t\t\t\tthrow new TypeError( format( 'invalid argument. Callback must return either a two-element array containing real and imaginary components or a complex number. Value: `%s`.', v ) );\n\t\t\t\t}\n\t\t\t\tj += 2; // stride\n\t\t\t}\n\t\t\treturn out;\n\t\t}\n\t\treturn new this( src );\n\t}\n\tif ( isCollection( src ) ) {\n\t\tif ( clbk ) {\n\t\t\t// Note: array contents affect how we iterate over a provided data source. If only complex number objects, we can extract real and imaginary components. Otherwise, for non-complex number arrays (e.g., `Float64Array`, etc), we assume a strided array where real and imaginary components are interleaved. In the former case, we expect a callback to return real and imaginary components (possibly as a complex number). In the latter case, we expect a callback to return *either* a real or imaginary component.\n\n\t\t\tlen = src.length;\n\t\t\tif ( src.get && src.set ) {\n\t\t\t\tget = accessorGetter( 'default' );\n\t\t\t} else {\n\t\t\t\tget = getter( 'default' );\n\t\t\t}\n\t\t\t// Detect whether we've been provided an array which returns complex number objects...\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tif ( !isComplexLike( get( src, i ) ) ) {\n\t\t\t\t\tflg = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If an array does not contain only complex number objects, then we assume interleaved real and imaginary components...\n\t\t\tif ( flg ) {\n\t\t\t\tif ( !isEven( len ) ) {\n\t\t\t\t\tthrow new RangeError( format( 'invalid argument. First argument must have a length which is a multiple of %u. Length: `%u`.', 2, len ) );\n\t\t\t\t}\n\t\t\t\tout = new this( len/2 );\n\t\t\t\tbuf = out._buffer; // eslint-disable-line no-underscore-dangle\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tbuf[ i ] = clbk.call( thisArg, get( src, i ), i );\n\t\t\t\t}\n\t\t\t\treturn out;\n\t\t\t}\n\t\t\t// If an array contains only complex number objects, then we need to extract real and imaginary components...\n\t\t\tout = new this( len );\n\t\t\tbuf = out._buffer; // eslint-disable-line no-underscore-dangle\n\t\t\tj = 0;\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tv = clbk.call( thisArg, get( src, i ), i );\n\t\t\t\tif ( isComplexLike( v ) ) {\n\t\t\t\t\tbuf[ j ] = realf( v );\n\t\t\t\t\tbuf[ j+1 ] = imagf( v );\n\t\t\t\t} else if ( isArrayLikeObject( v ) && v.length >= 2 ) {\n\t\t\t\t\tbuf[ j ] = v[ 0 ];\n\t\t\t\t\tbuf[ j+1 ] = v[ 1 ];\n\t\t\t\t} else {\n\t\t\t\t\tthrow new TypeError( format( 'invalid argument. Callback must return either a two-element array containing real and imaginary components or a complex number. Value: `%s`.', v ) );\n\t\t\t\t}\n\t\t\t\tj += 2; // stride\n\t\t\t}\n\t\t\treturn out;\n\t\t}\n\t\treturn new this( src );\n\t}\n\tif ( isObject( src ) && HAS_ITERATOR_SYMBOL && isFunction( src[ ITERATOR_SYMBOL ] ) ) { // eslint-disable-line max-len\n\t\tbuf = src[ ITERATOR_SYMBOL ]();\n\t\tif ( !isFunction( buf.next ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. First argument must be an array-like object or an iterable. Value: `%s`.', src ) );\n\t\t}\n\t\tif ( clbk ) {\n\t\t\ttmp = fromIteratorMap( buf, clbk, thisArg );\n\t\t} else {\n\t\t\ttmp = fromIterator( buf );\n\t\t}\n\t\tif ( tmp instanceof Error ) {\n\t\t\tthrow tmp;\n\t\t}\n\t\tlen = tmp.length / 2;\n\t\tout = new this( len );\n\t\tbuf = out._buffer; // eslint-disable-line no-underscore-dangle\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tbuf[ i ] = tmp[ i ];\n\t\t}\n\t\treturn out;\n\t}\n\tthrow new TypeError( format( 'invalid argument. First argument must be an array-like object or an iterable. Value: `%s`.', src ) );\n});\n\n/**\n* Creates a new 64-bit complex number array from a variable number of arguments.\n*\n* @name of\n* @memberof Complex64Array\n* @type {Function}\n* @param {...*} element - array elements\n* @throws {TypeError} `this` context must be a constructor\n* @throws {TypeError} `this` must be a complex number array\n* @returns {Complex64Array} 64-bit complex number array\n*\n* @example\n* var arr = Complex64Array.of( 1.0, 1.0, 1.0, 1.0 );\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 2\n*/\nsetReadOnly( Complex64Array, 'of', function of() {\n\tvar args;\n\tvar i;\n\tif ( !isFunction( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` context must be a constructor.' );\n\t}\n\tif ( !isComplexArrayConstructor( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\targs = [];\n\tfor ( i = 0; i < arguments.length; i++ ) {\n\t\targs.push( arguments[ i ] );\n\t}\n\treturn new this( args );\n});\n\n/**\n* Returns an array element with support for both nonnegative and negative integer indices.\n*\n* @name at\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {integer} idx - element index\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} must provide an integer\n* @returns {(Complex64|void)} array element\n*\n* @example\n* var arr = new Complex64Array( 10 );\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* var z = arr.at( 0 );\n* // returns <Complex64>\n*\n* var re = realf( z );\n* // returns 0.0\n*\n* var im = imagf( z );\n* // returns 0.0\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 9.0, -9.0 ], 9 );\n*\n* z = arr.at( 0 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 1.0\n*\n* im = imagf( z );\n* // returns -1.0\n*\n* z = arr.at( -1 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 9.0\n*\n* im = imagf( z );\n* // returns -9.0\n*\n* z = arr.at( 100 );\n* // returns undefined\n*\n* z = arr.at( -100 );\n* // returns undefined\n*/\nsetReadOnly( Complex64Array.prototype, 'at', function at( idx ) {\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isInteger( idx ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide an integer. Value: `%s`.', idx ) );\n\t}\n\tif ( idx < 0 ) {\n\t\tidx += this._length;\n\t}\n\tif ( idx < 0 || idx >= this._length ) {\n\t\treturn;\n\t}\n\treturn getComplex64( this._buffer, idx );\n});\n\n/**\n* Pointer to the underlying data buffer.\n*\n* @name buffer\n* @memberof Complex64Array.prototype\n* @readonly\n* @type {ArrayBuffer}\n*\n* @example\n* var arr = new Complex64Array( 10 );\n*\n* var buf = arr.buffer;\n* // returns <ArrayBuffer>\n*/\nsetReadOnlyAccessor( Complex64Array.prototype, 'buffer', function get() {\n\treturn this._buffer.buffer;\n});\n\n/**\n* Size (in bytes) of the array.\n*\n* @name byteLength\n* @memberof Complex64Array.prototype\n* @readonly\n* @type {NonNegativeInteger}\n*\n* @example\n* var arr = new Complex64Array( 10 );\n*\n* var byteLength = arr.byteLength;\n* // returns 80\n*/\nsetReadOnlyAccessor( Complex64Array.prototype, 'byteLength', function get() {\n\treturn this._buffer.byteLength;\n});\n\n/**\n* Offset (in bytes) of the array from the start of its underlying `ArrayBuffer`.\n*\n* @name byteOffset\n* @memberof Complex64Array.prototype\n* @readonly\n* @type {NonNegativeInteger}\n*\n* @example\n* var arr = new Complex64Array( 10 );\n*\n* var byteOffset = arr.byteOffset;\n* // returns 0\n*/\nsetReadOnlyAccessor( Complex64Array.prototype, 'byteOffset', function get() {\n\treturn this._buffer.byteOffset;\n});\n\n/**\n* Size (in bytes) of each array element.\n*\n* @name BYTES_PER_ELEMENT\n* @memberof Complex64Array.prototype\n* @readonly\n* @type {PositiveInteger}\n* @default 8\n*\n* @example\n* var arr = new Complex64Array( 10 );\n*\n* var nbytes = arr.BYTES_PER_ELEMENT;\n* // returns 8\n*/\nsetReadOnly( Complex64Array.prototype, 'BYTES_PER_ELEMENT', Complex64Array.BYTES_PER_ELEMENT );\n\n/**\n* Copies a sequence of elements within the array to the position starting at `target`.\n*\n* @name copyWithin\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {integer} target - index at which to start copying elements\n* @param {integer} start - source index at which to copy elements from\n* @param {integer} [end] - source index at which to stop copying elements from\n* @throws {TypeError} `this` must be a complex number array\n* @returns {Complex64Array} modified array\n*\n* @example\n* var Complex64 = require( '@stdlib/complex/float32' );\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* var arr = new Complex64Array( 4 );\n*\n* // Set the array elements:\n* arr.set( new Complex64( 1.0, 1.0 ), 0 );\n* arr.set( new Complex64( 2.0, 2.0 ), 1 );\n* arr.set( new Complex64( 3.0, 3.0 ), 2 );\n* arr.set( new Complex64( 4.0, 4.0 ), 3 );\n*\n* // Copy the first two elements to the last two elements:\n* arr.copyWithin( 2, 0, 2 );\n*\n* // Get the last array element:\n* var z = arr.get( 3 );\n*\n* var re = realf( z );\n* // returns 2.0\n*\n* var im = imagf( z );\n* // returns 2.0\n*/\nsetReadOnly( Complex64Array.prototype, 'copyWithin', function copyWithin( target, start ) {\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\t// FIXME: prefer a functional `copyWithin` implementation which addresses lack of universal browser support (e.g., IE11 and Safari) or ensure that typed arrays are polyfilled\n\tif ( arguments.length === 2 ) {\n\t\tthis._buffer.copyWithin( target*2, start*2 );\n\t} else {\n\t\tthis._buffer.copyWithin( target*2, start*2, arguments[2]*2 );\n\t}\n\treturn this;\n});\n\n/**\n* Returns an iterator for iterating over array key-value pairs.\n*\n* @name entries\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @throws {TypeError} `this` must be a complex number array\n* @returns {Iterator} iterator\n*\n* @example\n* var Complex64 = require( '@stdlib/complex/float32' );\n*\n* var arr = [\n*     new Complex64( 1.0, 1.0 ),\n*     new Complex64( 2.0, 2.0 ),\n*     new Complex64( 3.0, 3.0 )\n* ];\n* arr = new Complex64Array( arr );\n*\n* // Create an iterator:\n* var it = arr.entries();\n*\n* // Iterate over the key-value pairs...\n* var v = it.next().value;\n* // returns [ 0, <Complex64> ]\n*\n* v = it.next().value;\n* // returns [ 1, <Complex64> ]\n*\n* v = it.next().value;\n* // returns [ 2, <Complex64> ]\n*\n* var bool = it.next().done;\n* // returns true\n*/\nsetReadOnly( Complex64Array.prototype, 'entries', function entries() {\n\tvar buffer;\n\tvar self;\n\tvar iter;\n\tvar len;\n\tvar FLG;\n\tvar i;\n\tvar j;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tself = this;\n\tbuffer = this._buffer;\n\tlen = this._length;\n\n\t// Initialize the iteration indices:\n\ti = -1;\n\tj = -2;\n\n\t// Create an iterator protocol-compliant object:\n\titer = {};\n\tsetReadOnly( iter, 'next', next );\n\tsetReadOnly( iter, 'return', end );\n\n\tif ( ITERATOR_SYMBOL ) {\n\t\tsetReadOnly( iter, ITERATOR_SYMBOL, factory );\n\t}\n\treturn iter;\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next() {\n\t\tvar z;\n\t\ti += 1;\n\t\tif ( FLG || i >= len ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tj += 2;\n\t\tz = new Complex64( buffer[ j ], buffer[ j+1 ] );\n\t\treturn {\n\t\t\t'value': [ i, z ],\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Finishes an iterator.\n\t*\n\t* @private\n\t* @param {*} [value] - value to return\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction end( value ) {\n\t\tFLG = true;\n\t\tif ( arguments.length ) {\n\t\t\treturn {\n\t\t\t\t'value': value,\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'done': true\n\t\t};\n\t}\n\n\t/**\n\t* Returns a new iterator.\n\t*\n\t* @private\n\t* @returns {Iterator} iterator\n\t*/\n\tfunction factory() {\n\t\treturn self.entries();\n\t}\n});\n\n/**\n* Tests whether all elements in an array pass a test implemented by a predicate function.\n*\n* @name every\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - predicate function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {boolean} boolean indicating whether all elements pass a test\n*\n* @example\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* function predicate( v ) {\n*     return ( realf( v ) === imagf( v ) );\n* }\n*\n* var arr = new Complex64Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* var bool = arr.every( predicate );\n* // returns true\n*/\nsetReadOnly( Complex64Array.prototype, 'every', function every( predicate, thisArg ) {\n\tvar buf;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( predicate ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', predicate ) );\n\t}\n\tbuf = this._buffer;\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tif ( !predicate.call( thisArg, getComplex64( buf, i ), i, this ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n});\n\n/**\n* Returns a modified typed array filled with a fill value.\n*\n* @name fill\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {ComplexLike} value - fill value\n* @param {integer} [start=0] - starting index (inclusive)\n* @param {integer} [end] - ending index (exclusive)\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a complex number\n* @throws {TypeError} second argument must be an integer\n* @throws {TypeError} third argument must be an integer\n*\n* @example\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* var arr = new Complex64Array( 3 );\n*\n* arr.fill( new Complex64( 1.0, 1.0 ), 1 );\n*\n* var z = arr.get( 1 );\n* // returns <Complex64>\n*\n* var re = realf( z );\n* // returns 1.0\n*\n* var im = imagf( z );\n* // returns 1.0\n*\n* z = arr.get( 1 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 1.0\n*\n* im = imagf( z );\n* // returns 1.0\n*/\nsetReadOnly( Complex64Array.prototype, 'fill', function fill( value, start, end ) {\n\tvar buf;\n\tvar len;\n\tvar idx;\n\tvar re;\n\tvar im;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isComplexLike( value ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a complex number. Value: `%s`.', value ) );\n\t}\n\tbuf = this._buffer;\n\tlen = this._length;\n\tif ( arguments.length > 1 ) {\n\t\tif ( !isInteger( start ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', start ) );\n\t\t}\n\t\tif ( start < 0 ) {\n\t\t\tstart += len;\n\t\t\tif ( start < 0 ) {\n\t\t\t\tstart = 0;\n\t\t\t}\n\t\t}\n\t\tif ( arguments.length > 2 ) {\n\t\t\tif ( !isInteger( end ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be an integer. Value: `%s`.', end ) );\n\t\t\t}\n\t\t\tif ( end < 0 ) {\n\t\t\t\tend += len;\n\t\t\t\tif ( end < 0 ) {\n\t\t\t\t\tend = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( end > len ) {\n\t\t\t\tend = len;\n\t\t\t}\n\t\t} else {\n\t\t\tend = len;\n\t\t}\n\t} else {\n\t\tstart = 0;\n\t\tend = len;\n\t}\n\tre = realf( value );\n\tim = imagf( value );\n\tfor ( i = start; i < end; i++ ) {\n\t\tidx = 2*i;\n\t\tbuf[ idx ] = re;\n\t\tbuf[ idx+1 ] = im;\n\t}\n\treturn this;\n});\n\n/**\n* Returns a new array containing the elements of an array which pass a test implemented by a predicate function.\n*\n* @name filter\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - predicate function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {Complex64Array} complex number array\n*\n* @example\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* function predicate( v ) {\n*     return ( realf( v ) === imagf( v ) );\n* }\n*\n* var arr = new Complex64Array( 3 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n*\n* var out = arr.filter( predicate );\n* // returns <Complex64Array>\n*\n* var len = out.length;\n* // returns 1\n*\n* var z = out.get( 0 );\n* // returns <Complex64>\n*\n* var re = realf( z );\n* // returns 2.0\n*\n* var im = imagf( z );\n* // returns 2.0\n*/\nsetReadOnly( Complex64Array.prototype, 'filter', function filter( predicate, thisArg ) {\n\tvar buf;\n\tvar out;\n\tvar i;\n\tvar z;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( predicate ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', predicate ) );\n\t}\n\tbuf = this._buffer;\n\tout = [];\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tz = getComplex64( buf, i );\n\t\tif ( predicate.call( thisArg, z, i, this ) ) {\n\t\t\tout.push( z );\n\t\t}\n\t}\n\treturn new this.constructor( out );\n});\n\n/**\n* Returns the first element in an array for which a predicate function returns a truthy value.\n*\n* @name find\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - predicate function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {(Complex64|void)} array element or undefined\n*\n* @example\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n* var Complex64 = require( '@stdlib/complex/float32' );\n*\n* function predicate( v ) {\n*     return ( realf( v ) === imagf( v ) );\n* }\n*\n* var arr = new Complex64Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* var z = arr.find( predicate );\n* // returns <Complex64>\n*\n* var re = realf( z );\n* // returns 1.0\n*\n* var im = imagf( z );\n* // returns 1.0\n*/\nsetReadOnly( Complex64Array.prototype, 'find', function find( predicate, thisArg ) {\n\tvar buf;\n\tvar i;\n\tvar z;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( predicate ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', predicate ) );\n\t}\n\tbuf = this._buffer;\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tz = getComplex64( buf, i );\n\t\tif ( predicate.call( thisArg, z, i, this ) ) {\n\t\t\treturn z;\n\t\t}\n\t}\n});\n\n/**\n* Returns the index of the first element in an array for which a predicate function returns a truthy value.\n*\n* @name findIndex\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - predicate function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {integer} index or -1\n*\n* @example\n* var Complex64 = require( '@stdlib/complex/float32' );\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* function predicate( v ) {\n*     return ( realf( v ) === imagf( v ) );\n* }\n*\n* var arr = new Complex64Array( 3 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* var idx = arr.findIndex( predicate );\n* // returns 2\n*/\nsetReadOnly( Complex64Array.prototype, 'findIndex', function findIndex( predicate, thisArg ) {\n\tvar buf;\n\tvar i;\n\tvar z;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( predicate ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', predicate ) );\n\t}\n\tbuf = this._buffer;\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tz = getComplex64( buf, i );\n\t\tif ( predicate.call( thisArg, z, i, this ) ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n});\n\n/**\n* Returns the last element in an array for which a predicate function returns a truthy value.\n*\n* @name findLast\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - predicate function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {(Complex64|void)} array element or undefined\n*\n* @example\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n* var Complex64 = require( '@stdlib/complex/float32' );\n*\n* function predicate( v ) {\n*     return ( realf( v ) === imagf( v ) );\n* }\n*\n* var arr = new Complex64Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* var z = arr.findLast( predicate );\n* // returns <Complex64>\n*\n* var re = realf( z );\n* // returns 3.0\n*\n* var im = imagf( z );\n* // returns 3.0\n*/\nsetReadOnly( Complex64Array.prototype, 'findLast', function findLast( predicate, thisArg ) {\n\tvar buf;\n\tvar i;\n\tvar z;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( predicate ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', predicate ) );\n\t}\n\tbuf = this._buffer;\n\tfor ( i = this._length-1; i >= 0; i-- ) {\n\t\tz = getComplex64( buf, i );\n\t\tif ( predicate.call( thisArg, z, i, this ) ) {\n\t\t\treturn z;\n\t\t}\n\t}\n});\n\n/**\n* Returns the index of the last element in an array for which a predicate function returns a truthy value.\n*\n* @name findLastIndex\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - predicate function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {integer} index or -1\n*\n* @example\n* var Complex64 = require( '@stdlib/complex/float32' );\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* function predicate( v ) {\n*     return ( realf( v ) === imagf( v ) );\n* }\n*\n* var arr = new Complex64Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n*\n* var idx = arr.findLastIndex( predicate );\n* // returns 1\n*/\nsetReadOnly( Complex64Array.prototype, 'findLastIndex', function findLastIndex( predicate, thisArg ) {\n\tvar buf;\n\tvar i;\n\tvar z;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( predicate ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', predicate ) );\n\t}\n\tbuf = this._buffer;\n\tfor ( i = this._length-1; i >= 0; i-- ) {\n\t\tz = getComplex64( buf, i );\n\t\tif ( predicate.call( thisArg, z, i, this ) ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n});\n\n/**\n* Invokes a function once for each array element.\n*\n* @name forEach\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {Function} fcn - function to invoke\n* @param {*} [thisArg] - function invocation context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n*\n* @example\n* var Complex64 = require( '@stdlib/complex/float32' );\n*\n* function log( v, i ) {\n*     console.log( '%s: %s', i, v.toString() );\n* }\n*\n* var arr = new Complex64Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* arr.forEach( log );\n*/\nsetReadOnly( Complex64Array.prototype, 'forEach', function forEach( fcn, thisArg ) {\n\tvar buf;\n\tvar i;\n\tvar z;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( fcn ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', fcn ) );\n\t}\n\tbuf = this._buffer;\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tz = getComplex64( buf, i );\n\t\tfcn.call( thisArg, z, i, this );\n\t}\n});\n\n/**\n* Returns an array element.\n*\n* @name get\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {NonNegativeInteger} idx - element index\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} must provide a nonnegative integer\n* @returns {(Complex64|void)} array element\n*\n* @example\n* var arr = new Complex64Array( 10 );\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* var z = arr.get( 0 );\n* // returns <Complex64>\n*\n* var re = realf( z );\n* // returns 0.0\n*\n* var im = imagf( z );\n* // returns 0.0\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n*\n* z = arr.get( 0 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 1.0\n*\n* im = imagf( z );\n* // returns -1.0\n*\n* z = arr.get( 100 );\n* // returns undefined\n*/\nsetReadOnly( Complex64Array.prototype, 'get', function get( idx ) {\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isNonNegativeInteger( idx ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a nonnegative integer. Value: `%s`.', idx ) );\n\t}\n\tif ( idx >= this._length ) {\n\t\treturn;\n\t}\n\treturn getComplex64( this._buffer, idx );\n});\n\n/**\n* Returns a boolean indicating whether an array includes a provided value.\n*\n* @name includes\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {ComplexLike} searchElement - search element\n* @param {integer} [fromIndex=0] - starting index (inclusive)\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a complex number\n* @throws {TypeError} second argument must be an integer\n* @returns {boolean} boolean indicating whether an array includes a provided value\n*\n* @example\n* var Complex64 = require( '@stdlib/complex/float32' );\n*\n* var arr = new Complex64Array( 5 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n* arr.set( [ 4.0, -4.0 ], 3 );\n* arr.set( [ 5.0, -5.0 ], 4 );\n*\n* var bool = arr.includes( new Complex64( 3.0, -3.0 ) );\n* // returns true\n*\n* bool = arr.includes( new Complex64( 3.0, -3.0 ), 3 );\n* // returns false\n*\n* bool = arr.includes( new Complex64( 4.0, -4.0 ), -3 );\n* // returns true\n*/\nsetReadOnly( Complex64Array.prototype, 'includes', function includes( searchElement, fromIndex ) {\n\tvar buf;\n\tvar idx;\n\tvar re;\n\tvar im;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isComplexLike( searchElement ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a complex number. Value: `%s`.', searchElement ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', fromIndex ) );\n\t\t}\n\t\tif ( fromIndex < 0 ) {\n\t\t\tfromIndex += this._length;\n\t\t\tif ( fromIndex < 0 ) {\n\t\t\t\tfromIndex = 0;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfromIndex = 0;\n\t}\n\tre = realf( searchElement );\n\tim = imagf( searchElement );\n\tbuf = this._buffer;\n\tfor ( i = fromIndex; i < this._length; i++ ) {\n\t\tidx = 2 * i;\n\t\tif ( re === buf[ idx ] && im === buf[ idx+1 ] ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n});\n\n/**\n* Returns the first index at which a given element can be found.\n*\n* @name indexOf\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {ComplexLike} searchElement - element to find\n* @param {integer} [fromIndex=0] - starting index (inclusive)\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a complex number\n* @throws {TypeError} second argument must be an integer\n* @returns {integer} index or -1\n*\n* @example\n* var Complex64 = require( '@stdlib/complex/float32' );\n*\n* var arr = new Complex64Array( 10 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n* arr.set( [ 4.0, -4.0 ], 3 );\n* arr.set( [ 5.0, -5.0 ], 4 );\n*\n* var idx = arr.indexOf( new Complex64( 3.0, -3.0 ) );\n* // returns 2\n*\n* idx = arr.indexOf( new Complex64( 3.0, -3.0 ), 3 );\n* // returns -1\n*\n* idx = arr.indexOf( new Complex64( 4.0, -4.0 ), -3 );\n* // returns -1\n*/\nsetReadOnly( Complex64Array.prototype, 'indexOf', function indexOf( searchElement, fromIndex ) {\n\tvar buf;\n\tvar idx;\n\tvar re;\n\tvar im;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isComplexLike( searchElement ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a complex number. Value: `%s`.', searchElement ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', fromIndex ) );\n\t\t}\n\t\tif ( fromIndex < 0 ) {\n\t\t\tfromIndex += this._length;\n\t\t\tif ( fromIndex < 0 ) {\n\t\t\t\tfromIndex = 0;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfromIndex = 0;\n\t}\n\tre = realf( searchElement );\n\tim = imagf( searchElement );\n\tbuf = this._buffer;\n\tfor ( i = fromIndex; i < this._length; i++ ) {\n\t\tidx = 2 * i;\n\t\tif ( re === buf[ idx ] && im === buf[ idx+1 ] ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n});\n\n/**\n* Returns a new string by concatenating all array elements.\n*\n* @name join\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {string} [separator=','] - element separator\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a string\n* @returns {string} string representation\n*\n* @example\n* var arr = new Complex64Array( 2 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n*\n* var str = arr.join();\n* // returns '1 + 1i,2 + 2i'\n*\n* str = arr.join( '/' );\n* // returns '1 + 1i/2 + 2i'\n*/\nsetReadOnly( Complex64Array.prototype, 'join', function join( separator ) {\n\tvar out;\n\tvar buf;\n\tvar sep;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( arguments.length === 0 ) {\n\t\tsep = ',';\n\t} else if ( isString( separator ) ) {\n\t\tsep = separator;\n\t} else {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', separator ) );\n\t}\n\tout = [];\n\tbuf = this._buffer;\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tout.push( getComplex64( buf, i ).toString() );\n\t}\n\treturn out.join( sep );\n});\n\n/**\n* Returns the last index at which a given element can be found.\n*\n* @name lastIndexOf\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {ComplexLike} searchElement - element to find\n* @param {integer} [fromIndex] - index at which to start searching backward (inclusive)\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a complex number\n* @throws {TypeError} second argument must be an integer\n* @returns {integer} index or -1\n*\n* @example\n* var Complex64 = require( '@stdlib/complex/float32' );\n*\n* var arr = new Complex64Array( 5 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n* arr.set( [ 4.0, -4.0 ], 3 );\n* arr.set( [ 3.0, -3.0 ], 4 );\n*\n* var idx = arr.lastIndexOf( new Complex64( 3.0, -3.0 ) );\n* // returns 4\n*\n* idx = arr.lastIndexOf( new Complex64( 3.0, -3.0 ), 3 );\n* // returns 2\n*\n* idx = arr.lastIndexOf( new Complex64( 5.0, -5.0 ), 3 );\n* // returns -1\n*\n* idx = arr.lastIndexOf( new Complex64( 2.0, -2.0 ), -3 );\n* // returns 1\n*/\nsetReadOnly( Complex64Array.prototype, 'lastIndexOf', function lastIndexOf( searchElement, fromIndex ) {\n\tvar buf;\n\tvar idx;\n\tvar re;\n\tvar im;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isComplexLike( searchElement ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a complex number. Value: `%s`.', searchElement ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', fromIndex ) );\n\t\t}\n\t\tif ( fromIndex >= this._length ) {\n\t\t\tfromIndex = this._length - 1;\n\t\t} else if ( fromIndex < 0 ) {\n\t\t\tfromIndex += this._length;\n\t\t}\n\t} else {\n\t\tfromIndex = this._length - 1;\n\t}\n\tre = realf( searchElement );\n\tim = imagf( searchElement );\n\tbuf = this._buffer;\n\tfor ( i = fromIndex; i >= 0; i-- ) {\n\t\tidx = 2 * i;\n\t\tif ( re === buf[ idx ] && im === buf[ idx+1 ] ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n});\n\n/**\n* Number of array elements.\n*\n* @name length\n* @memberof Complex64Array.prototype\n* @readonly\n* @type {NonNegativeInteger}\n*\n* @example\n* var arr = new Complex64Array( 10 );\n*\n* var len = arr.length;\n* // returns 10\n*/\nsetReadOnlyAccessor( Complex64Array.prototype, 'length', function get() {\n\treturn this._length;\n});\n\n/**\n* Returns a new array with each element being the result of a provided callback function.\n*\n* @name map\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {Function} fcn - callback function\n* @param {*} [thisArg] - callback function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {Complex64Array} complex number array\n*\n* @example\n* var Complex64 = require( '@stdlib/complex/float32' );\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* function scale( v, i ) {\n*     return new Complex64( 2.0*realf( v ), 2.0*imagf( v ) );\n* }\n*\n* var arr = new Complex64Array( 3 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n*\n* var out = arr.map( scale );\n* // returns <Complex64Array>\n*\n* var z = out.get( 0 );\n* // returns <Complex64>\n*\n* var re = realf( z );\n* // returns 2\n*\n* var im = imagf( z );\n* // returns -2\n*/\nsetReadOnly( Complex64Array.prototype, 'map', function map( fcn, thisArg ) {\n\tvar outbuf;\n\tvar buf;\n\tvar out;\n\tvar i;\n\tvar v;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( fcn ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', fcn ) );\n\t}\n\tbuf = this._buffer;\n\tout = new this.constructor( this._length );\n\toutbuf = out._buffer; // eslint-disable-line no-underscore-dangle\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tv = fcn.call( thisArg, getComplex64( buf, i ), i, this );\n\t\tif ( isComplexLike( v ) ) {\n\t\t\toutbuf[ 2*i ] = realf( v );\n\t\t\toutbuf[ (2*i)+1 ] = imagf( v );\n\t\t} else if ( isArrayLikeObject( v ) && v.length === 2 ) {\n\t\t\toutbuf[ 2*i ] = v[ 0 ];\n\t\t\toutbuf[ (2*i)+1 ] = v[ 1 ];\n\t\t} else {\n\t\t\tthrow new TypeError( format( 'invalid argument. Callback must return either a two-element array containing real and imaginary components or a complex number. Value: `%s`.', v ) );\n\t\t}\n\t}\n\treturn out;\n});\n\n/**\n* Reverses an array in-place.\n*\n* @name reverse\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @throws {TypeError} `this` must be a complex number array\n* @returns {Complex64Array} reversed array\n*\n* @example\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* var arr = new Complex64Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* var out = arr.reverse();\n* // returns <Complex64Array>\n*\n* var z = out.get( 0 );\n* // returns <Complex64>\n*\n* var re = realf( z );\n* // returns 3.0\n*\n* var im = imagf( z );\n* // returns 3.0\n*\n* z = out.get( 1 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 2.0\n*\n* im = imagf( z );\n* // returns 2.0\n*\n* z = out.get( 2 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 1.0\n*\n* im = imagf( z );\n* // returns 1.0\n*/\nsetReadOnly( Complex64Array.prototype, 'reverse', function reverse() {\n\tvar buf;\n\tvar tmp;\n\tvar len;\n\tvar N;\n\tvar i;\n\tvar j;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tlen = this._length;\n\tbuf = this._buffer;\n\tN = floor( len / 2 );\n\tfor ( i = 0; i < N; i++ ) {\n\t\tj = len - i - 1;\n\t\ttmp = buf[ (2*i) ];\n\t\tbuf[ (2*i) ] = buf[ (2*j) ];\n\t\tbuf[ (2*j) ] = tmp;\n\t\ttmp = buf[ (2*i)+1 ];\n\t\tbuf[ (2*i)+1 ] = buf[ (2*j)+1 ];\n\t\tbuf[ (2*j)+1 ] = tmp;\n\t}\n\treturn this;\n});\n\n/**\n* Sets an array element.\n*\n* ## Notes\n*\n* -   When provided a typed array, real or complex, we must check whether the source array shares the same buffer as the target array and whether the underlying memory overlaps. In particular, we are concerned with the following scenario:\n*\n*     ```text\n*     buf:                ---------------------\n*     src: ---------------------\n*     ```\n*\n*     In the above, as we copy values from `src`, we will overwrite values in the `src` view, resulting in duplicated values copied into the end of `buf`, which is not intended. Hence, to avoid overwriting source values, we must **copy** source values to a temporary array.\n*\n*     In the other overlapping scenario,\n*\n*     ```text\n*     buf: ---------------------\n*     src:                ---------------------\n*     ```\n*\n*     by the time we begin copying into the overlapping region, we are copying from the end of `src`, a non-overlapping region, which means we don't run the risk of copying copied values, rather than the original `src` values, as intended.\n*\n* @name set\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {(Collection|Complex|ComplexArray)} value - value(s)\n* @param {NonNegativeInteger} [i=0] - element index at which to start writing values\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be either a complex number, an array-like object, or a complex number array\n* @throws {TypeError} index argument must be a nonnegative integer\n* @throws {RangeError} array-like objects must have a length which is a multiple of two\n* @throws {RangeError} index argument is out-of-bounds\n* @throws {RangeError} target array lacks sufficient storage to accommodate source values\n* @returns {void}\n*\n* @example\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* var arr = new Complex64Array( 10 );\n*\n* var z = arr.get( 0 );\n* // returns <Complex64>\n*\n* var re = realf( z );\n* // returns 0.0\n*\n* var im = imagf( z );\n* // returns 0.0\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n*\n* z = arr.get( 0 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 1.0\n*\n* im = imagf( z );\n* // returns -1.0\n*/\nsetReadOnly( Complex64Array.prototype, 'set', function set( value ) {\n\t/* eslint-disable no-underscore-dangle */\n\tvar sbuf;\n\tvar idx;\n\tvar buf;\n\tvar tmp;\n\tvar flg;\n\tvar N;\n\tvar v;\n\tvar i;\n\tvar j;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tbuf = this._buffer;\n\tif ( arguments.length > 1 ) {\n\t\tidx = arguments[ 1 ];\n\t\tif ( !isNonNegativeInteger( idx ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Index argument must be a nonnegative integer. Value: `%s`.', idx ) );\n\t\t}\n\t} else {\n\t\tidx = 0;\n\t}\n\tif ( isComplexLike( value ) ) {\n\t\tif ( idx >= this._length ) {\n\t\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%u`.', idx ) );\n\t\t}\n\t\tidx *= 2;\n\t\tbuf[ idx ] = realf( value );\n\t\tbuf[ idx+1 ] = imagf( value );\n\t\treturn;\n\t}\n\tif ( isComplexArray( value ) ) {\n\t\tN = value._length;\n\t\tif ( idx+N > this._length ) {\n\t\t\tthrow new RangeError( 'invalid arguments. Target array lacks sufficient storage to accommodate source values.' );\n\t\t}\n\t\tsbuf = value._buffer;\n\n\t\t// Check for overlapping memory...\n\t\tj = buf.byteOffset + (idx*BYTES_PER_ELEMENT);\n\t\tif (\n\t\t\tsbuf.buffer === buf.buffer &&\n\t\t\t(\n\t\t\t\tsbuf.byteOffset < j &&\n\t\t\t\tsbuf.byteOffset+sbuf.byteLength > j\n\t\t\t)\n\t\t) {\n\t\t\t// We need to copy source values...\n\t\t\ttmp = new Float32Array( sbuf.length );\n\t\t\tfor ( i = 0; i < sbuf.length; i++ ) {\n\t\t\t\ttmp[ i ] = sbuf[ i ];\n\t\t\t}\n\t\t\tsbuf = tmp;\n\t\t}\n\t\tidx *= 2;\n\t\tj = 0;\n\t\tfor ( i = 0; i < N; i++ ) {\n\t\t\tbuf[ idx ] = sbuf[ j ];\n\t\t\tbuf[ idx+1 ] = sbuf[ j+1 ];\n\t\t\tidx += 2; // stride\n\t\t\tj += 2; // stride\n\t\t}\n\t\treturn;\n\t}\n\tif ( isCollection( value ) ) {\n\t\t// Detect whether we've been provided an array of complex numbers...\n\t\tN = value.length;\n\t\tfor ( i = 0; i < N; i++ ) {\n\t\t\tif ( !isComplexLike( value[ i ] ) ) {\n\t\t\t\tflg = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t// If an array does not contain only complex numbers, then we assume interleaved real and imaginary components...\n\t\tif ( flg ) {\n\t\t\tif ( !isEven( N ) ) {\n\t\t\t\tthrow new RangeError( format( 'invalid argument. Array-like object arguments must have a length which is a multiple of two. Length: `%u`.', N ) );\n\t\t\t}\n\t\t\tif ( idx+(N/2) > this._length ) {\n\t\t\t\tthrow new RangeError( 'invalid arguments. Target array lacks sufficient storage to accommodate source values.' );\n\t\t\t}\n\t\t\tsbuf = value;\n\n\t\t\t// Check for overlapping memory...\n\t\t\tj = buf.byteOffset + (idx*BYTES_PER_ELEMENT);\n\t\t\tif (\n\t\t\t\tsbuf.buffer === buf.buffer &&\n\t\t\t\t(\n\t\t\t\t\tsbuf.byteOffset < j &&\n\t\t\t\t\tsbuf.byteOffset+sbuf.byteLength > j\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// We need to copy source values...\n\t\t\t\ttmp = new Float32Array( N );\n\t\t\t\tfor ( i = 0; i < N; i++ ) {\n\t\t\t\t\ttmp[ i ] = sbuf[ i ]; // TODO: handle accessor arrays\n\t\t\t\t}\n\t\t\t\tsbuf = tmp;\n\t\t\t}\n\t\t\tidx *= 2;\n\t\t\tN /= 2;\n\t\t\tj = 0;\n\t\t\tfor ( i = 0; i < N; i++ ) {\n\t\t\t\tbuf[ idx ] = sbuf[ j ];\n\t\t\t\tbuf[ idx+1 ] = sbuf[ j+1 ];\n\t\t\t\tidx += 2; // stride\n\t\t\t\tj += 2; // stride\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\t// If an array contains only complex numbers, then we need to extract real and imaginary components...\n\t\tif ( idx+N > this._length ) {\n\t\t\tthrow new RangeError( 'invalid arguments. Target array lacks sufficient storage to accommodate source values.' );\n\t\t}\n\t\tidx *= 2;\n\t\tfor ( i = 0; i < N; i++ ) {\n\t\t\tv = value[ i ];\n\t\t\tbuf[ idx ] = realf( v );\n\t\t\tbuf[ idx+1 ] = imagf( v );\n\t\t\tidx += 2; // stride\n\t\t}\n\t\treturn;\n\t}\n\tthrow new TypeError( format( 'invalid argument. First argument must be either a complex number, an array-like object, or a complex number array. Value: `%s`.', value ) );\n\n\t/* eslint-enable no-underscore-dangle */\n});\n\n/**\n* Copies a portion of a typed array to a new typed array.\n*\n* @name slice\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {integer} [start=0] - starting index (inclusive)\n* @param {integer} [end] - ending index (exclusive)\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be an integer\n* @throws {TypeError} second argument must be an integer\n* @returns {Complex64Array} complex number array\n*\n* @example\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* var arr = new Complex64Array( 5 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n* arr.set( [ 4.0, -4.0 ], 3 );\n* arr.set( [ 5.0, -5.0 ], 4 );\n*\n* var out = arr.slice();\n* // returns <Complex64Array>\n*\n* var len = out.length;\n* // returns 5\n*\n* var z = out.get( 0 );\n* // returns <Complex64>\n*\n* var re = realf( z );\n* // returns 1.0\n*\n* var im = imagf( z );\n* // returns -1.0\n*\n* z = out.get( len-1 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 5.0\n*\n* im = imagf( z );\n* // returns -5.0\n*\n* out = arr.slice( 1, -2 );\n* // returns <Complex64Array>\n*\n* len = out.length;\n* // returns 2\n*\n* z = out.get( 0 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 2.0\n*\n* im = imagf( z );\n* // returns -2.0\n*\n* z = out.get( len-1 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 3.0\n*\n* im = imagf( z );\n* // returns -3.0\n*/\nsetReadOnly( Complex64Array.prototype, 'slice', function slice( start, end ) {\n\tvar outlen;\n\tvar outbuf;\n\tvar out;\n\tvar idx;\n\tvar buf;\n\tvar len;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tbuf = this._buffer;\n\tlen = this._length;\n\tif ( arguments.length === 0 ) {\n\t\tstart = 0;\n\t\tend = len;\n\t} else {\n\t\tif ( !isInteger( start ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. First argument must be an integer. Value: `%s`.', start ) );\n\t\t}\n\t\tif ( start < 0 ) {\n\t\t\tstart += len;\n\t\t\tif ( start < 0 ) {\n\t\t\t\tstart = 0;\n\t\t\t}\n\t\t}\n\t\tif ( arguments.length === 1 ) {\n\t\t\tend = len;\n\t\t} else {\n\t\t\tif ( !isInteger( end ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', end ) );\n\t\t\t}\n\t\t\tif ( end < 0 ) {\n\t\t\t\tend += len;\n\t\t\t\tif ( end < 0 ) {\n\t\t\t\t\tend = 0;\n\t\t\t\t}\n\t\t\t} else if ( end > len ) {\n\t\t\t\tend = len;\n\t\t\t}\n\t\t}\n\t}\n\tif ( start < end ) {\n\t\toutlen = end - start;\n\t} else {\n\t\toutlen = 0;\n\t}\n\tout = new this.constructor( outlen );\n\toutbuf = out._buffer; // eslint-disable-line no-underscore-dangle\n\tfor ( i = 0; i < outlen; i++ ) {\n\t\tidx = 2*(i+start);\n\t\toutbuf[ 2*i ] = buf[ idx ];\n\t\toutbuf[ (2*i)+1 ] = buf[ idx+1 ];\n\t}\n\treturn out;\n});\n\n/**\n* Tests whether at least one element in an array passes a test implemented by a predicate function.\n*\n* @name some\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - predicate function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {boolean} boolean indicating whether at least one element passes a test\n*\n* @example\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* function predicate( v ) {\n*     return ( realf( v ) === imagf( v ) );\n* }\n*\n* var arr = new Complex64Array( 3 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n*\n* var bool = arr.some( predicate );\n* // returns true\n*/\nsetReadOnly( Complex64Array.prototype, 'some', function some( predicate, thisArg ) {\n\tvar buf;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( predicate ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', predicate ) );\n\t}\n\tbuf = this._buffer;\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tif ( predicate.call( thisArg, getComplex64( buf, i ), i, this ) ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n});\n\n/**\n* Creates a new typed array view over the same underlying `ArrayBuffer` and with the same underlying data type as the host array.\n*\n* @name subarray\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {integer} [begin=0] - starting index (inclusive)\n* @param {integer} [end] - ending index (exclusive)\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be an integer\n* @throws {TypeError} second argument must be an integer\n* @returns {Complex64Array} subarray\n*\n* @example\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* var arr = new Complex64Array( 5 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n* arr.set( [ 4.0, -4.0 ], 3 );\n* arr.set( [ 5.0, -5.0 ], 4 );\n*\n* var subarr = arr.subarray();\n* // returns <Complex64Array>\n*\n* var len = subarr.length;\n* // returns 5\n*\n* var z = subarr.get( 0 );\n* // returns <Complex64>\n*\n* var re = realf( z );\n* // returns 1.0\n*\n* var im = imagf( z );\n* // returns -1.0\n*\n* z = subarr.get( len-1 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 5.0\n*\n* im = imagf( z );\n* // returns -5.0\n*\n* subarr = arr.subarray( 1, -2 );\n* // returns <Complex64Array>\n*\n* len = subarr.length;\n* // returns 2\n*\n* z = subarr.get( 0 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 2.0\n*\n* im = imagf( z );\n* // returns -2.0\n*\n* z = subarr.get( len-1 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 3.0\n*\n* im = imagf( z );\n* // returns -3.0\n*/\nsetReadOnly( Complex64Array.prototype, 'subarray', function subarray( begin, end ) {\n\tvar offset;\n\tvar buf;\n\tvar len;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tbuf = this._buffer;\n\tlen = this._length;\n\tif ( arguments.length === 0 ) {\n\t\tbegin = 0;\n\t\tend = len;\n\t} else {\n\t\tif ( !isInteger( begin ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. First argument must be an integer. Value: `%s`.', begin ) );\n\t\t}\n\t\tif ( begin < 0 ) {\n\t\t\tbegin += len;\n\t\t\tif ( begin < 0 ) {\n\t\t\t\tbegin = 0;\n\t\t\t}\n\t\t}\n\t\tif ( arguments.length === 1 ) {\n\t\t\tend = len;\n\t\t} else {\n\t\t\tif ( !isInteger( end ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', end ) );\n\t\t\t}\n\t\t\tif ( end < 0 ) {\n\t\t\t\tend += len;\n\t\t\t\tif ( end < 0 ) {\n\t\t\t\t\tend = 0;\n\t\t\t\t}\n\t\t\t} else if ( end > len ) {\n\t\t\t\tend = len;\n\t\t\t}\n\t\t}\n\t}\n\tif ( begin >= len ) {\n\t\tlen = 0;\n\t\toffset = buf.byteLength;\n\t} else if ( begin >= end ) {\n\t\tlen = 0;\n\t\toffset = buf.byteOffset + (begin*BYTES_PER_ELEMENT);\n\t} else {\n\t\tlen = end - begin;\n\t\toffset = buf.byteOffset + ( begin*BYTES_PER_ELEMENT );\n\t}\n\treturn new this.constructor( buf.buffer, offset, ( len < 0 ) ? 0 : len );\n});\n\n/**\n* Returns a new typed array containing the elements in reversed order.\n*\n* @name toReversed\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @throws {TypeError} `this` must be a complex number array\n* @returns {Complex64Array} reversed array\n*\n* @example\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n*\n* var arr = new Complex64Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* var out = arr.toReversed();\n* // returns <Complex64Array>\n*\n* var z = out.get( 0 );\n* // returns <Complex64>\n*\n* var re = realf( z );\n* // returns 3.0\n*\n* var im = imagf( z );\n* // returns 3.0\n*\n* z = out.get( 1 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 2.0\n*\n* im = imagf( z );\n* // returns 2.0\n*\n* z = out.get( 2 );\n* // returns <Complex64>\n*\n* re = realf( z );\n* // returns 1.0\n*\n* im = imagf( z );\n* // returns 1.0\n*/\nsetReadOnly( Complex64Array.prototype, 'toReversed', function toReversed() {\n\tvar outbuf;\n\tvar out;\n\tvar len;\n\tvar buf;\n\tvar i;\n\tvar j;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tlen = this._length;\n\tout = new this.constructor( len );\n\tbuf = this._buffer;\n\toutbuf = out._buffer; // eslint-disable-line no-underscore-dangle\n\tfor ( i = 0; i < len; i++ ) {\n\t\tj = len - i - 1;\n\t\toutbuf[ (2*i) ] = buf[ (2*j) ];\n\t\toutbuf[ (2*i)+1 ] = buf[ (2*j)+1 ];\n\t}\n\treturn out;\n});\n\n/**\n* Serializes an array as a string.\n*\n* @name toString\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @throws {TypeError} `this` must be a complex number array\n* @returns {string} string representation\n*\n* @example\n* var arr = new Complex64Array( 2 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n*\n* var str = arr.toString();\n* // returns '1 + 1i,2 + 2i'\n*/\nsetReadOnly( Complex64Array.prototype, 'toString', function toString() {\n\tvar out;\n\tvar buf;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tout = [];\n\tbuf = this._buffer;\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tout.push( getComplex64( buf, i ).toString() );\n\t}\n\treturn out.join( ',' );\n});\n\n/**\n* Returns a new typed array with the element at a provided index replaced with a provided value.\n*\n* @name with\n* @memberof Complex64Array.prototype\n* @type {Function}\n* @param {integer} index - element index\n* @param {ComplexLike} value - new value\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be an integer\n* @throws {RangeError} index argument is out-of-bounds\n* @throws {TypeError} second argument must be a complex number\n* @returns {Complex64Array} new typed array\n*\n* @example\n* var realf = require( '@stdlib/complex/realf' );\n* var imagf = require( '@stdlib/complex/imagf' );\n* var Complex64 = require( '@stdlib/complex/float32' );\n*\n* var arr = new Complex64Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* var out = arr.with( 0, new Complex64( 4.0, 4.0 ) );\n* // returns <Complex64Array>\n*\n* var z = out.get( 0 );\n* // returns <Complex64>\n*\n* var re = realf( z );\n* // returns 4.0\n*\n* var im = imagf( z );\n* // returns 4.0\n*/\nsetReadOnly( Complex64Array.prototype, 'with', function copyWith( index, value ) {\n\tvar buf;\n\tvar out;\n\tvar len;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isInteger( index ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be an integer. Value: `%s`.', index ) );\n\t}\n\tlen = this._length;\n\tif ( index < 0 ) {\n\t\tindex += len;\n\t}\n\tif ( index < 0 || index >= len ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%s`.', index ) );\n\t}\n\tif ( !isComplexLike( value ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a complex number. Value: `%s`.', value ) );\n\t}\n\tout = new this.constructor( this._buffer );\n\tbuf = out._buffer; // eslint-disable-line no-underscore-dangle\n\tbuf[ 2*index ] = realf( value );\n\tbuf[ (2*index)+1 ] = imagf( value );\n\treturn out;\n});\n\n\n// EXPORTS //\n\nmodule.exports = Complex64Array;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* 64-bit complex number array.\n*\n* @module @stdlib/array/complex64\n*\n* @example\n* var Complex64Array = require( '@stdlib/array/complex64' );\n*\n* var arr = new Complex64Array();\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 0\n*\n* @example\n* var Complex64Array = require( '@stdlib/array/complex64' );\n*\n* var arr = new Complex64Array( 2 );\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 2\n*\n* @example\n* var Complex64Array = require( '@stdlib/array/complex64' );\n*\n* var arr = new Complex64Array( [ 1.0, -1.0 ] );\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 1\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var Complex64Array = require( '@stdlib/array/complex64' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = new Complex64Array( buf );\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 2\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var Complex64Array = require( '@stdlib/array/complex64' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = new Complex64Array( buf, 8 );\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 2\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var Complex64Array = require( '@stdlib/array/complex64' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = new Complex64Array( buf, 8, 2 );\n* // returns <Complex64Array>\n*\n* var len = arr.length;\n* // returns 2\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isArrayLikeObject = require( '@stdlib/assert/is-array-like-object' );\nvar isComplexLike = require( '@stdlib/assert/is-complex-like' );\nvar format = require( '@stdlib/string/format' );\nvar real = require( '@stdlib/complex/real' );\nvar imag = require( '@stdlib/complex/imag' );\n\n\n// MAIN //\n\n/**\n* Returns an array of iterated values.\n*\n* @private\n* @param {Object} it - iterator\n* @returns {(Array|TypeError)} array or an error\n*/\nfunction fromIterator( it ) {\n\tvar out;\n\tvar v;\n\tvar z;\n\n\tout = [];\n\twhile ( true ) {\n\t\tv = it.next();\n\t\tif ( v.done ) {\n\t\t\tbreak;\n\t\t}\n\t\tz = v.value;\n\t\tif ( isArrayLikeObject( z ) && z.length >= 2 ) {\n\t\t\tout.push( z[ 0 ], z[ 1 ] );\n\t\t} else if ( isComplexLike( z ) ) {\n\t\t\tout.push( real( z ), imag( z ) );\n\t\t} else {\n\t\t\treturn new TypeError( format( 'invalid argument. An iterator must return either a two-element array containing real and imaginary components or a complex number. Value: `%s`.', z ) );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = fromIterator;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isArrayLikeObject = require( '@stdlib/assert/is-array-like-object' );\nvar isComplexLike = require( '@stdlib/assert/is-complex-like' );\nvar format = require( '@stdlib/string/format' );\nvar real = require( '@stdlib/complex/real' );\nvar imag = require( '@stdlib/complex/imag' );\n\n\n// MAIN //\n\n/**\n* Returns an array of iterated values.\n*\n* @private\n* @param {Object} it - iterator\n* @param {Function} clbk - callback to invoke for each iterated value\n* @param {*} thisArg - invocation context\n* @returns {(Array|TypeError)} array or an error\n*/\nfunction fromIteratorMap( it, clbk, thisArg ) {\n\tvar out;\n\tvar v;\n\tvar z;\n\tvar i;\n\n\tout = [];\n\ti = -1;\n\twhile ( true ) {\n\t\tv = it.next();\n\t\tif ( v.done ) {\n\t\t\tbreak;\n\t\t}\n\t\ti += 1;\n\t\tz = clbk.call( thisArg, v.value, i );\n\t\tif ( isArrayLikeObject( z ) && z.length >= 2 ) {\n\t\t\tout.push( z[ 0 ], z[ 1 ] );\n\t\t} else if ( isComplexLike( z ) ) {\n\t\t\tout.push( real( z ), imag( z ) );\n\t\t} else {\n\t\t\treturn new TypeError( format( 'invalid argument. Callback must return either a two-element array containing real and imaginary components or a complex number. Value: `%s`.', z ) );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = fromIteratorMap;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isComplexLike = require( '@stdlib/assert/is-complex-like' );\nvar real = require( '@stdlib/complex/real' );\nvar imag = require( '@stdlib/complex/imag' );\n\n\n// MAIN //\n\n/**\n* Returns a strided array of real and imaginary components.\n*\n* @private\n* @param {Float64Array} buf - output array\n* @param {Array} arr - array containing complex numbers\n* @returns {(Float64Array|null)} output array or null\n*/\nfunction fromArray( buf, arr ) {\n\tvar len;\n\tvar v;\n\tvar i;\n\tvar j;\n\n\tlen = arr.length;\n\tj = 0;\n\tfor ( i = 0; i < len; i++ ) {\n\t\tv = arr[ i ];\n\t\tif ( !isComplexLike( v ) ) {\n\t\t\treturn null;\n\t\t}\n\t\tbuf[ j ] = real( v );\n\t\tbuf[ j+1 ] = imag( v );\n\t\tj += 2; // stride\n\t}\n\treturn buf;\n}\n\n\n// EXPORTS //\n\nmodule.exports = fromArray;\n", "/* eslint-disable no-restricted-syntax, max-lines, no-invalid-this */\n\n/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isArrayLikeObject = require( '@stdlib/assert/is-array-like-object' );\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' );\nvar isObject = require( '@stdlib/assert/is-object' );\nvar isArray = require( '@stdlib/assert/is-array' );\nvar isString = require( '@stdlib/assert/is-string' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isComplexLike = require( '@stdlib/assert/is-complex-like' );\nvar isEven = require( '@stdlib/math/base/assert/is-even' );\nvar isInteger = require( '@stdlib/math/base/assert/is-integer' );\nvar isComplex64Array = require( './../../base/assert/is-complex64array' );\nvar isComplex128Array = require( './../../base/assert/is-complex128array' );\nvar hasIteratorSymbolSupport = require( '@stdlib/assert/has-iterator-symbol-support' );\nvar ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' );\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar setReadOnlyAccessor = require( '@stdlib/utils/define-nonenumerable-read-only-accessor' );\nvar Float64Array = require( './../../float64' );\nvar Complex128 = require( '@stdlib/complex/float64' );\nvar real = require( '@stdlib/complex/real' );\nvar imag = require( '@stdlib/complex/imag' );\nvar floor = require( '@stdlib/math/base/special/floor' );\nvar reinterpret64 = require( '@stdlib/strided/base/reinterpret-complex64' );\nvar reinterpret128 = require( '@stdlib/strided/base/reinterpret-complex128' );\nvar getter = require( './../../base/getter' );\nvar accessorGetter = require( './../../base/accessor-getter' );\nvar format = require( '@stdlib/string/format' );\nvar fromIterator = require( './from_iterator.js' );\nvar fromIteratorMap = require( './from_iterator_map.js' );\nvar fromArray = require( './from_array.js' );\n\n\n// VARIABLES //\n\nvar BYTES_PER_ELEMENT = Float64Array.BYTES_PER_ELEMENT * 2;\nvar HAS_ITERATOR_SYMBOL = hasIteratorSymbolSupport();\n\n\n// FUNCTIONS //\n\n/**\n* Returns a boolean indicating if a value is a complex typed array.\n*\n* @private\n* @param {*} value - value to test\n* @returns {boolean} boolean indicating if a value is a complex typed array\n*/\nfunction isComplexArray( value ) {\n\treturn (\n\t\tvalue instanceof Complex128Array ||\n\t\t(\n\t\t\ttypeof value === 'object' &&\n\t\t\tvalue !== null &&\n\t\t\t(\n\t\t\t\tvalue.constructor.name === 'Complex64Array' ||\n\t\t\t\tvalue.constructor.name === 'Complex128Array'\n\t\t\t) &&\n\t\t\ttypeof value._length === 'number' && // eslint-disable-line no-underscore-dangle\n\n\t\t\t// NOTE: we don't perform a more rigorous test here for a typed array for performance reasons, as robustly checking for a typed array instance could require walking the prototype tree and performing relatively expensive constructor checks...\n\t\t\ttypeof value._buffer === 'object' // eslint-disable-line no-underscore-dangle\n\t\t)\n\t);\n}\n\n/**\n* Returns a boolean indicating if a value is a complex typed array constructor.\n*\n* @private\n* @param {*} value - value to test\n* @returns {boolean} boolean indicating if a value is a complex typed array constructor\n*/\nfunction isComplexArrayConstructor( value ) {\n\treturn (\n\t\tvalue === Complex128Array ||\n\n\t\t// NOTE: weaker test in order to avoid a circular dependency with Complex64Array...\n\t\tvalue.name === 'Complex64Array'\n\t);\n}\n\n/**\n* Retrieves a complex number from a complex number array buffer.\n*\n* @private\n* @param {Float64Array} buf - array buffer\n* @param {NonNegativeInteger} idx - element index\n* @returns {Complex128} complex number\n*/\nfunction getComplex128( buf, idx ) {\n\tidx *= 2;\n\treturn new Complex128( buf[ idx ], buf[ idx+1 ] );\n}\n\n\n// MAIN //\n\n/**\n* 128-bit complex number array constructor.\n*\n* @constructor\n* @param {(NonNegativeInteger|Collection|ArrayBuffer|Iterable)} [arg] - length, typed array, array-like object, buffer, or iterable\n* @param {NonNegativeInteger} [byteOffset=0] - byte offset\n* @param {NonNegativeInteger} [length] - view length\n* @throws {RangeError} ArrayBuffer byte length must be a multiple of `16`\n* @throws {RangeError} array-like object and typed array input arguments must have a length which is a multiple of two\n* @throws {TypeError} if provided only a single argument, must provide a valid argument\n* @throws {TypeError} byte offset must be a nonnegative integer\n* @throws {RangeError} byte offset must be a multiple of `16`\n* @throws {TypeError} view length must be a positive multiple of `16`\n* @throws {RangeError} must provide sufficient memory to accommodate byte offset and view length requirements\n* @throws {TypeError} an iterator must return either a two element array containing real and imaginary components or a complex number\n* @returns {Complex128Array} complex number array\n*\n* @example\n* var arr = new Complex128Array();\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 0\n*\n* @example\n* var arr = new Complex128Array( 2 );\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 2\n*\n* @example\n* var arr = new Complex128Array( [ 1.0, -1.0 ] );\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 1\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = new Complex128Array( buf );\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 2\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = new Complex128Array( buf, 16 );\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 1\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 64 );\n* var arr = new Complex128Array( buf, 16, 2 );\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 2\n*/\nfunction Complex128Array() {\n\tvar byteOffset;\n\tvar nargs;\n\tvar buf;\n\tvar len;\n\n\tnargs = arguments.length;\n\tif ( !(this instanceof Complex128Array) ) {\n\t\tif ( nargs === 0 ) {\n\t\t\treturn new Complex128Array();\n\t\t}\n\t\tif ( nargs === 1 ) {\n\t\t\treturn new Complex128Array( arguments[0] );\n\t\t}\n\t\tif ( nargs === 2 ) {\n\t\t\treturn new Complex128Array( arguments[0], arguments[1] );\n\t\t}\n\t\treturn new Complex128Array( arguments[0], arguments[1], arguments[2] );\n\t}\n\t// Create the underlying data buffer...\n\tif ( nargs === 0 ) {\n\t\tbuf = new Float64Array( 0 ); // backward-compatibility\n\t} else if ( nargs === 1 ) {\n\t\tif ( isNonNegativeInteger( arguments[0] ) ) {\n\t\t\tbuf = new Float64Array( arguments[0]*2 );\n\t\t} else if ( isCollection( arguments[0] ) ) {\n\t\t\tbuf = arguments[ 0 ];\n\t\t\tlen = buf.length;\n\n\t\t\t// If provided a \"generic\" array, peak at the first value, and, if the value is a complex number, try to process as an array of complex numbers, falling back to \"normal\" typed array initialization if we fail and ensuring consistency if the first value had not been a complex number...\n\t\t\tif ( len && isArray( buf ) && isComplexLike( buf[0] ) ) {\n\t\t\t\tbuf = fromArray( new Float64Array( len*2 ), buf );\n\t\t\t\tif ( buf === null ) {\n\t\t\t\t\t// We failed and we are now forced to allocate a new array :-(\n\t\t\t\t\tif ( !isEven( len ) ) {\n\t\t\t\t\t\tthrow new RangeError( format( 'invalid argument. Array-like object arguments must have a length which is a multiple of two. Length: `%u`.', len ) );\n\t\t\t\t\t}\n\t\t\t\t\t// We failed, so fall back to directly setting values...\n\t\t\t\t\tbuf = new Float64Array( arguments[0] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( isComplex64Array( buf ) ) {\n\t\t\t\t\tbuf = reinterpret64( buf, 0 );\n\t\t\t\t} else if ( isComplex128Array( buf ) ) {\n\t\t\t\t\tbuf = reinterpret128( buf, 0 );\n\t\t\t\t} else if ( !isEven( len ) ) {\n\t\t\t\t\tthrow new RangeError( format( 'invalid argument. Array-like object and typed array arguments must have a length which is a multiple of two. Length: `%u`.', len ) );\n\t\t\t\t}\n\t\t\t\tbuf = new Float64Array( buf );\n\t\t\t}\n\t\t} else if ( isArrayBuffer( arguments[0] ) ) {\n\t\t\tbuf = arguments[ 0 ];\n\t\t\tif ( !isInteger( buf.byteLength/BYTES_PER_ELEMENT ) ) {\n\t\t\t\tthrow new RangeError( format( 'invalid argument. ArrayBuffer byte length must be a multiple of %u. Byte length: `%u`.', BYTES_PER_ELEMENT, buf.byteLength ) );\n\t\t\t}\n\t\t\tbuf = new Float64Array( buf );\n\t\t} else if ( isObject( arguments[0] ) ) {\n\t\t\tbuf = arguments[ 0 ];\n\t\t\tif ( HAS_ITERATOR_SYMBOL === false ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Environment lacks Symbol.iterator support. Must provide a length, ArrayBuffer, typed array, or array-like object. Value: `%s`.', buf ) );\n\t\t\t}\n\t\t\tif ( !isFunction( buf[ ITERATOR_SYMBOL ] ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, ArrayBuffer, typed array, array-like object, or an iterable. Value: `%s`.', buf ) );\n\t\t\t}\n\t\t\tbuf = buf[ ITERATOR_SYMBOL ]();\n\t\t\tif ( !isFunction( buf.next ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, ArrayBuffer, typed array, array-like object, or an iterable. Value: `%s`.', buf ) );\n\t\t\t}\n\t\t\tbuf = fromIterator( buf );\n\t\t\tif ( buf instanceof Error ) {\n\t\t\t\tthrow buf;\n\t\t\t}\n\t\t\tbuf = new Float64Array( buf );\n\t\t} else {\n\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, ArrayBuffer, typed array, array-like object, or an iterable. Value: `%s`.', arguments[0] ) );\n\t\t}\n\t} else {\n\t\tbuf = arguments[ 0 ];\n\t\tif ( !isArrayBuffer( buf ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. First argument must be an ArrayBuffer. Value: `%s`.', buf ) );\n\t\t}\n\t\tbyteOffset = arguments[ 1 ];\n\t\tif ( !isNonNegativeInteger( byteOffset ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Byte offset must be a nonnegative integer. Value: `%s`.', byteOffset ) );\n\t\t}\n\t\tif ( !isInteger( byteOffset/BYTES_PER_ELEMENT ) ) {\n\t\t\tthrow new RangeError( format( 'invalid argument. Byte offset must be a multiple of %u. Value: `%u`.', BYTES_PER_ELEMENT, byteOffset ) );\n\t\t}\n\t\tif ( nargs === 2 ) {\n\t\t\tlen = buf.byteLength - byteOffset;\n\t\t\tif ( !isInteger( len/BYTES_PER_ELEMENT ) ) {\n\t\t\t\tthrow new RangeError( format( 'invalid arguments. ArrayBuffer view byte length must be a multiple of %u. View byte length: `%u`.', BYTES_PER_ELEMENT, len ) );\n\t\t\t}\n\t\t\tbuf = new Float64Array( buf, byteOffset );\n\t\t} else {\n\t\t\tlen = arguments[ 2 ];\n\t\t\tif ( !isNonNegativeInteger( len ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Length must be a nonnegative integer. Value: `%s`.', len ) );\n\t\t\t}\n\t\t\tif ( (len*BYTES_PER_ELEMENT) > (buf.byteLength-byteOffset) ) {\n\t\t\t\tthrow new RangeError( format( 'invalid arguments. ArrayBuffer has insufficient capacity. Either decrease the array length or provide a bigger buffer. Minimum capacity: `%u`.', len*BYTES_PER_ELEMENT ) );\n\t\t\t}\n\t\t\tbuf = new Float64Array( buf, byteOffset, len*2 );\n\t\t}\n\t}\n\tsetReadOnly( this, '_buffer', buf );\n\tsetReadOnly( this, '_length', buf.length/2 );\n\n\treturn this;\n}\n\n/**\n* Size (in bytes) of each array element.\n*\n* @name BYTES_PER_ELEMENT\n* @memberof Complex128Array\n* @readonly\n* @type {PositiveInteger}\n* @default 16\n*\n* @example\n* var nbytes = Complex128Array.BYTES_PER_ELEMENT;\n* // returns 16\n*/\nsetReadOnly( Complex128Array, 'BYTES_PER_ELEMENT', BYTES_PER_ELEMENT );\n\n/**\n* Constructor name.\n*\n* @name name\n* @memberof Complex128Array\n* @readonly\n* @type {string}\n* @default 'Complex128Array'\n*\n* @example\n* var name = Complex128Array.name;\n* // returns 'Complex128Array'\n*/\nsetReadOnly( Complex128Array, 'name', 'Complex128Array' );\n\n/**\n* Creates a new 128-bit complex number array from an array-like object or an iterable.\n*\n* @name from\n* @memberof Complex128Array\n* @type {Function}\n* @param {(Collection|Object)} src - array-like object or iterable\n* @param {Function} [clbk] - callback to invoke for each source element\n* @param {*} [thisArg] - context\n* @throws {TypeError} `this` context must be a constructor\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be an array-like object or an iterable\n* @throws {TypeError} second argument must be a function\n* @throws {RangeError} array-like objects must have a length which is a multiple of two\n* @throws {TypeError} an iterator must return either a two element array containing real and imaginary components or a complex number\n* @throws {TypeError} when provided an iterator, a callback must return either a two element array containing real and imaginary components or a complex number\n* @returns {Complex128Array} 128-bit complex number array\n*\n* @example\n* var arr = Complex128Array.from( [ 1.0, -1.0 ] );\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 1\n*\n* @example\n* var Complex128 = require( '@stdlib/complex/float64' );\n*\n* var arr = Complex128Array.from( [ new Complex128( 1.0, 1.0 ) ] );\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 1\n*\n* @example\n* var Complex128 = require( '@stdlib/complex/float64' );\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* function clbk( v ) {\n*     return new Complex128( real(v)*2.0, imag(v)*2.0 );\n* }\n*\n* var arr = Complex128Array.from( [ new Complex128( 1.0, 1.0 ) ], clbk );\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 1\n*/\nsetReadOnly( Complex128Array, 'from', function from( src ) {\n\tvar thisArg;\n\tvar nargs;\n\tvar clbk;\n\tvar out;\n\tvar buf;\n\tvar tmp;\n\tvar get;\n\tvar len;\n\tvar flg;\n\tvar v;\n\tvar i;\n\tvar j;\n\tif ( !isFunction( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` context must be a constructor.' );\n\t}\n\tif ( !isComplexArrayConstructor( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tnargs = arguments.length;\n\tif ( nargs > 1 ) {\n\t\tclbk = arguments[ 1 ];\n\t\tif ( !isFunction( clbk ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a function. Value: `%s`.', clbk ) );\n\t\t}\n\t\tif ( nargs > 2 ) {\n\t\t\tthisArg = arguments[ 2 ];\n\t\t}\n\t}\n\tif ( isComplexArray( src ) ) {\n\t\tlen = src.length;\n\t\tif ( clbk ) {\n\t\t\tout = new this( len );\n\t\t\tbuf = out._buffer; // eslint-disable-line no-underscore-dangle\n\t\t\tj = 0;\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tv = clbk.call( thisArg, src.get( i ), i );\n\t\t\t\tif ( isComplexLike( v ) ) {\n\t\t\t\t\tbuf[ j ] = real( v );\n\t\t\t\t\tbuf[ j+1 ] = imag( v );\n\t\t\t\t} else if ( isArrayLikeObject( v ) && v.length >= 2 ) {\n\t\t\t\t\tbuf[ j ] = v[ 0 ];\n\t\t\t\t\tbuf[ j+1 ] = v[ 1 ];\n\t\t\t\t} else {\n\t\t\t\t\tthrow new TypeError( format( 'invalid argument. Callback must return either a two-element array containing real and imaginary components or a complex number. Value: `%s`.', v ) );\n\t\t\t\t}\n\t\t\t\tj += 2; // stride\n\t\t\t}\n\t\t\treturn out;\n\t\t}\n\t\treturn new this( src );\n\t}\n\tif ( isCollection( src ) ) {\n\t\tif ( clbk ) {\n\t\t\t// Note: array contents affect how we iterate over a provided data source. If only complex number objects, we can extract real and imaginary components. Otherwise, for non-complex number arrays (e.g., `Float64Array`, etc), we assume a strided array where real and imaginary components are interleaved. In the former case, we expect a callback to return real and imaginary components (possibly as a complex number). In the latter case, we expect a callback to return *either* a real or imaginary component.\n\n\t\t\tlen = src.length;\n\t\t\tif ( src.get && src.set ) {\n\t\t\t\tget = accessorGetter( 'default' );\n\t\t\t} else {\n\t\t\t\tget = getter( 'default' );\n\t\t\t}\n\t\t\t// Detect whether we've been provided an array which returns complex number objects...\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tif ( !isComplexLike( get( src, i ) ) ) {\n\t\t\t\t\tflg = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If an array does not contain only complex number objects, then we assume interleaved real and imaginary components...\n\t\t\tif ( flg ) {\n\t\t\t\tif ( !isEven( len ) ) {\n\t\t\t\t\tthrow new RangeError( format( 'invalid argument. First argument must have a length which is a multiple of two. Length: `%u`.', len ) );\n\t\t\t\t}\n\t\t\t\tout = new this( len/2 );\n\t\t\t\tbuf = out._buffer; // eslint-disable-line no-underscore-dangle\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tbuf[ i ] = clbk.call( thisArg, get( src, i ), i );\n\t\t\t\t}\n\t\t\t\treturn out;\n\t\t\t}\n\t\t\t// If an array contains only complex number objects, then we need to extract real and imaginary components...\n\t\t\tout = new this( len );\n\t\t\tbuf = out._buffer; // eslint-disable-line no-underscore-dangle\n\t\t\tj = 0;\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tv = clbk.call( thisArg, get( src, i ), i );\n\t\t\t\tif ( isComplexLike( v ) ) {\n\t\t\t\t\tbuf[ j ] = real( v );\n\t\t\t\t\tbuf[ j+1 ] = imag( v );\n\t\t\t\t} else if ( isArrayLikeObject( v ) && v.length >= 2 ) {\n\t\t\t\t\tbuf[ j ] = v[ 0 ];\n\t\t\t\t\tbuf[ j+1 ] = v[ 1 ];\n\t\t\t\t} else {\n\t\t\t\t\tthrow new TypeError( format( 'invalid argument. Callback must return either a two-element array containing real and imaginary components or a complex number. Value: `%s`.', v ) );\n\t\t\t\t}\n\t\t\t\tj += 2; // stride\n\t\t\t}\n\t\t\treturn out;\n\t\t}\n\t\treturn new this( src );\n\t}\n\tif ( isObject( src ) && HAS_ITERATOR_SYMBOL && isFunction( src[ ITERATOR_SYMBOL ] ) ) { // eslint-disable-line max-len\n\t\tbuf = src[ ITERATOR_SYMBOL ]();\n\t\tif ( !isFunction( buf.next ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. First argument must be an array-like object or an iterable. Value: `%s`.', src ) );\n\t\t}\n\t\tif ( clbk ) {\n\t\t\ttmp = fromIteratorMap( buf, clbk, thisArg );\n\t\t} else {\n\t\t\ttmp = fromIterator( buf );\n\t\t}\n\t\tif ( tmp instanceof Error ) {\n\t\t\tthrow tmp;\n\t\t}\n\t\tlen = tmp.length / 2;\n\t\tout = new this( len );\n\t\tbuf = out._buffer; // eslint-disable-line no-underscore-dangle\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tbuf[ i ] = tmp[ i ];\n\t\t}\n\t\treturn out;\n\t}\n\tthrow new TypeError( format( 'invalid argument. First argument must be an array-like object or an iterable. Value: `%s`.', src ) );\n});\n\n/**\n* Creates a new 128-bit complex number array from a variable number of arguments.\n*\n* @name of\n* @memberof Complex128Array\n* @type {Function}\n* @param {...*} element - array elements\n* @throws {TypeError} `this` context must be a constructor\n* @throws {TypeError} `this` must be a complex number array\n* @returns {Complex128Array} 128-bit complex number array\n*\n* @example\n* var arr = Complex128Array.of( 1.0, 1.0, 1.0, 1.0 );\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 2\n*/\nsetReadOnly( Complex128Array, 'of', function of() {\n\tvar args;\n\tvar i;\n\tif ( !isFunction( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` context must be a constructor.' );\n\t}\n\tif ( !isComplexArrayConstructor( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\targs = [];\n\tfor ( i = 0; i < arguments.length; i++ ) {\n\t\targs.push( arguments[ i ] );\n\t}\n\treturn new this( args );\n});\n\n/**\n* Returns an array element with support for both nonnegative and negative integer indices.\n*\n* @name at\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {integer} idx - element index\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} must provide an integer\n* @returns {(Complex128|void)} array element\n*\n* @example\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* var arr = new Complex128Array( 10 );\n*\n* var z = arr.at( 0 );\n* // returns <Complex128>\n*\n* var re = real( z );\n* // returns 0.0\n*\n* var im = imag( z );\n* // returns 0.0\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 9.0, -9.0 ], 9 );\n*\n* z = arr.at( 0 );\n* // returns <Complex128>\n*\n* re = real( z );\n* // returns 1.0\n*\n* im = imag( z );\n* // returns -1.0\n*\n* z = arr.at( -1 );\n* // returns <Complex128>\n*\n* re = real( z );\n* // returns 9.0\n*\n* im = imag( z );\n* // returns -9.0\n*\n* z = arr.at( 100 );\n* // returns undefined\n*\n* z = arr.at( -100 );\n* // returns undefined\n*/\nsetReadOnly( Complex128Array.prototype, 'at', function at( idx ) {\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isInteger( idx ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide an integer. Value: `%s`.', idx ) );\n\t}\n\tif ( idx < 0 ) {\n\t\tidx += this._length;\n\t}\n\tif ( idx < 0 || idx >= this._length ) {\n\t\treturn;\n\t}\n\treturn getComplex128( this._buffer, idx );\n});\n\n/**\n* Pointer to the underlying data buffer.\n*\n* @name buffer\n* @memberof Complex128Array.prototype\n* @readonly\n* @type {ArrayBuffer}\n*\n* @example\n* var arr = new Complex128Array( 10 );\n*\n* var buf = arr.buffer;\n* // returns <ArrayBuffer>\n*/\nsetReadOnlyAccessor( Complex128Array.prototype, 'buffer', function get() {\n\treturn this._buffer.buffer;\n});\n\n/**\n* Size (in bytes) of the array.\n*\n* @name byteLength\n* @memberof Complex128Array.prototype\n* @readonly\n* @type {NonNegativeInteger}\n*\n* @example\n* var arr = new Complex128Array( 10 );\n*\n* var byteLength = arr.byteLength;\n* // returns 160\n*/\nsetReadOnlyAccessor( Complex128Array.prototype, 'byteLength', function get() {\n\treturn this._buffer.byteLength;\n});\n\n/**\n* Offset (in bytes) of the array from the start of its underlying `ArrayBuffer`.\n*\n* @name byteOffset\n* @memberof Complex128Array.prototype\n* @readonly\n* @type {NonNegativeInteger}\n*\n* @example\n* var arr = new Complex128Array( 10 );\n*\n* var byteOffset = arr.byteOffset;\n* // returns 0\n*/\nsetReadOnlyAccessor( Complex128Array.prototype, 'byteOffset', function get() {\n\treturn this._buffer.byteOffset;\n});\n\n/**\n* Size (in bytes) of each array element.\n*\n* @name BYTES_PER_ELEMENT\n* @memberof Complex128Array.prototype\n* @readonly\n* @type {PositiveInteger}\n* @default 16\n*\n* @example\n* var arr = new Complex128Array( 10 );\n*\n* var nbytes = arr.BYTES_PER_ELEMENT;\n* // returns 16\n*/\nsetReadOnly( Complex128Array.prototype, 'BYTES_PER_ELEMENT', Complex128Array.BYTES_PER_ELEMENT );\n\n/**\n* Copies a sequence of elements within the array to the position starting at `target`.\n*\n* @name copyWithin\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {integer} target - index at which to start copying elements\n* @param {integer} start - source index at which to copy elements from\n* @param {integer} [end] - source index at which to stop copying elements from\n* @throws {TypeError} `this` must be a complex number array\n* @returns {Complex128Array} modified array\n*\n* @example\n* var Complex128 = require( '@stdlib/complex/float64' );\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* var arr = new Complex128Array( 4 );\n*\n* // Set the array elements:\n* arr.set( new Complex128( 1.0, 1.0 ), 0 );\n* arr.set( new Complex128( 2.0, 2.0 ), 1 );\n* arr.set( new Complex128( 3.0, 3.0 ), 2 );\n* arr.set( new Complex128( 4.0, 4.0 ), 3 );\n*\n* // Copy the first two elements to the last two elements:\n* arr.copyWithin( 2, 0, 2 );\n*\n* // Get the last array element:\n* var z = arr.get( 3 );\n*\n* var re = real( z );\n* // returns 2.0\n*\n* var im = imag( z );\n* // returns 2.0\n*/\nsetReadOnly( Complex128Array.prototype, 'copyWithin', function copyWithin( target, start ) {\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\t// FIXME: prefer a functional `copyWithin` implementation which addresses lack of universal browser support (e.g., IE11 and Safari) or ensure that typed arrays are polyfilled\n\tif ( arguments.length === 2 ) {\n\t\tthis._buffer.copyWithin( target*2, start*2 );\n\t} else {\n\t\tthis._buffer.copyWithin( target*2, start*2, arguments[2]*2 );\n\t}\n\treturn this;\n});\n\n/**\n* Returns an iterator for iterating over array key-value pairs.\n*\n* @name entries\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @throws {TypeError} `this` must be a complex number array\n* @returns {Iterator} iterator\n*\n* @example\n* var Complex128 = require( '@stdlib/complex/float64' );\n*\n* var arr = [\n*     new Complex128( 1.0, 1.0 ),\n*     new Complex128( 2.0, 2.0 ),\n*     new Complex128( 3.0, 3.0 )\n* ];\n* arr = new Complex128Array( arr );\n*\n* // Create an iterator:\n* var it = arr.entries();\n*\n* // Iterate over the key-value pairs...\n* var v = it.next().value;\n* // returns [ 0, <Complex128> ]\n*\n* v = it.next().value;\n* // returns [ 1, <Complex128> ]\n*\n* v = it.next().value;\n* // returns [ 2, <Complex128> ]\n*\n* var bool = it.next().done;\n* // returns true\n*/\nsetReadOnly( Complex128Array.prototype, 'entries', function entries() {\n\tvar buffer;\n\tvar self;\n\tvar iter;\n\tvar len;\n\tvar FLG;\n\tvar i;\n\tvar j;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tself = this;\n\tbuffer = this._buffer;\n\tlen = this._length;\n\n\t// Initialize the iteration indices:\n\ti = -1;\n\tj = -2;\n\n\t// Create an iterator protocol-compliant object:\n\titer = {};\n\tsetReadOnly( iter, 'next', next );\n\tsetReadOnly( iter, 'return', end );\n\n\tif ( ITERATOR_SYMBOL ) {\n\t\tsetReadOnly( iter, ITERATOR_SYMBOL, factory );\n\t}\n\treturn iter;\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next() {\n\t\tvar z;\n\t\ti += 1;\n\t\tif ( FLG || i >= len ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tj += 2;\n\t\tz = new Complex128( buffer[ j ], buffer[ j+1 ] );\n\t\treturn {\n\t\t\t'value': [ i, z ],\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Finishes an iterator.\n\t*\n\t* @private\n\t* @param {*} [value] - value to return\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction end( value ) {\n\t\tFLG = true;\n\t\tif ( arguments.length ) {\n\t\t\treturn {\n\t\t\t\t'value': value,\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'done': true\n\t\t};\n\t}\n\n\t/**\n\t* Returns a new iterator.\n\t*\n\t* @private\n\t* @returns {Iterator} iterator\n\t*/\n\tfunction factory() {\n\t\treturn self.entries();\n\t}\n});\n\n/**\n* Tests whether all elements in an array pass a test implemented by a predicate function.\n*\n* @name every\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - predicate function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {boolean} boolean indicating whether all elements pass a test\n*\n* @example\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* function predicate( v ) {\n*     return ( real( v ) === imag( v ) );\n* }\n*\n* var arr = new Complex128Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* var bool = arr.every( predicate );\n* // returns true\n*/\nsetReadOnly( Complex128Array.prototype, 'every', function every( predicate, thisArg ) {\n\tvar buf;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( predicate ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', predicate ) );\n\t}\n\tbuf = this._buffer;\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tif ( !predicate.call( thisArg, getComplex128( buf, i ), i, this ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n});\n\n/**\n* Returns a modified typed array filled with a fill value.\n*\n* @name fill\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {ComplexLike} value - fill value\n* @param {integer} [start=0] - starting index (inclusive)\n* @param {integer} [end] - ending index (exclusive)\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a complex number\n* @throws {TypeError} second argument must be an integer\n* @throws {TypeError} third argument must be an integer\n*\n* @example\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* var arr = new Complex128Array( 3 );\n*\n* arr.fill( new Complex128( 1.0, 1.0 ), 1 );\n*\n* var z = arr.get( 1 );\n* // returns <Complex128>\n*\n* var re = real( z );\n* // returns 1.0\n*\n* var im = imag( z );\n* // returns 1.0\n*\n* z = arr.get( 1 );\n* // returns <Complex128>\n*\n* re = real( z );\n* // returns 1.0\n*\n* im = imag( z );\n* // returns 1.0\n*/\nsetReadOnly( Complex128Array.prototype, 'fill', function fill( value, start, end ) {\n\tvar buf;\n\tvar len;\n\tvar idx;\n\tvar re;\n\tvar im;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isComplexLike( value ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a complex number. Value: `%s`.', value ) );\n\t}\n\tbuf = this._buffer;\n\tlen = this._length;\n\tif ( arguments.length > 1 ) {\n\t\tif ( !isInteger( start ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', start ) );\n\t\t}\n\t\tif ( start < 0 ) {\n\t\t\tstart += len;\n\t\t\tif ( start < 0 ) {\n\t\t\t\tstart = 0;\n\t\t\t}\n\t\t}\n\t\tif ( arguments.length > 2 ) {\n\t\t\tif ( !isInteger( end ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be an integer. Value: `%s`.', end ) );\n\t\t\t}\n\t\t\tif ( end < 0 ) {\n\t\t\t\tend += len;\n\t\t\t\tif ( end < 0 ) {\n\t\t\t\t\tend = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( end > len ) {\n\t\t\t\tend = len;\n\t\t\t}\n\t\t} else {\n\t\t\tend = len;\n\t\t}\n\t} else {\n\t\tstart = 0;\n\t\tend = len;\n\t}\n\tre = real( value );\n\tim = imag( value );\n\tfor ( i = start; i < end; i++ ) {\n\t\tidx = 2*i;\n\t\tbuf[ idx ] = re;\n\t\tbuf[ idx+1 ] = im;\n\t}\n\treturn this;\n});\n\n/**\n* Returns a new array containing the elements of an array which pass a test implemented by a predicate function.\n*\n* @name filter\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - predicate function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {Complex128Array} complex number array\n*\n* @example\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* function predicate( v ) {\n*     return ( real( v ) === imag( v ) );\n* }\n*\n* var arr = new Complex128Array( 3 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n*\n* var out = arr.filter( predicate );\n* // returns <Complex128Array>\n*\n* var len = out.length;\n* // returns 1\n*\n* var z = out.get( 0 );\n* // returns <Complex128>\n*\n* var re = real( z );\n* // returns 2.0\n*\n* var im = imag( z );\n* // returns 2.0\n*/\nsetReadOnly( Complex128Array.prototype, 'filter', function filter( predicate, thisArg ) {\n\tvar buf;\n\tvar out;\n\tvar i;\n\tvar z;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( predicate ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', predicate ) );\n\t}\n\tbuf = this._buffer;\n\tout = [];\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tz = getComplex128( buf, i );\n\t\tif ( predicate.call( thisArg, z, i, this ) ) {\n\t\t\tout.push( z );\n\t\t}\n\t}\n\treturn new this.constructor( out );\n});\n\n/**\n* Returns the first element in an array for which a predicate function returns a truthy value.\n*\n* @name find\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - predicate function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {(Complex128|void)} array element or undefined\n*\n* @example\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* function predicate( v ) {\n*     return ( real( v ) === imag( v ) );\n* }\n*\n* var arr = new Complex128Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* var z = arr.find( predicate );\n* // returns <Complex128>\n*\n* var re = real( z );\n* // returns 1.0\n*\n* var im = imag( z );\n* // returns 1.0\n*/\nsetReadOnly( Complex128Array.prototype, 'find', function find( predicate, thisArg ) {\n\tvar buf;\n\tvar i;\n\tvar z;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( predicate ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', predicate ) );\n\t}\n\tbuf = this._buffer;\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tz = getComplex128( buf, i );\n\t\tif ( predicate.call( thisArg, z, i, this ) ) {\n\t\t\treturn z;\n\t\t}\n\t}\n});\n\n/**\n* Returns the index of the first element in an array for which a predicate function returns a truthy value.\n*\n* @name findIndex\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - predicate function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {integer} index or -1\n*\n* @example\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* function predicate( v ) {\n*     return ( real( v ) === imag( v ) );\n* }\n*\n* var arr = new Complex128Array( 3 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* var idx = arr.findIndex( predicate );\n* // returns 2\n*/\nsetReadOnly( Complex128Array.prototype, 'findIndex', function findIndex( predicate, thisArg ) {\n\tvar buf;\n\tvar i;\n\tvar z;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( predicate ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', predicate ) );\n\t}\n\tbuf = this._buffer;\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tz = getComplex128( buf, i );\n\t\tif ( predicate.call( thisArg, z, i, this ) ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n});\n\n/**\n* Returns the last element in an array for which a predicate function returns a truthy value.\n*\n* @name findLast\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - predicate function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {(Complex128|void)} array element or undefined\n*\n* @example\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* function predicate( v ) {\n*     return ( real( v ) === imag( v ) );\n* }\n*\n* var arr = new Complex128Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* var z = arr.findLast( predicate );\n* // returns <Complex128>\n*\n* var re = real( z );\n* // returns 3.0\n*\n* var im = imag( z );\n* // returns 3.0\n*/\nsetReadOnly( Complex128Array.prototype, 'findLast', function findLast( predicate, thisArg ) {\n\tvar buf;\n\tvar i;\n\tvar z;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( predicate ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', predicate ) );\n\t}\n\tbuf = this._buffer;\n\tfor ( i = this._length-1; i >= 0; i-- ) {\n\t\tz = getComplex128( buf, i );\n\t\tif ( predicate.call( thisArg, z, i, this ) ) {\n\t\t\treturn z;\n\t\t}\n\t}\n});\n\n/**\n* Returns the index of the last element in an array for which a predicate function returns a truthy value.\n*\n* @name findLastIndex\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - predicate function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {integer} index or -1\n*\n* @example\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* function predicate( v ) {\n*     return ( real( v ) === imag( v ) );\n* }\n*\n* var arr = new Complex128Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n*\n* var idx = arr.findLastIndex( predicate );\n* // returns 1\n*/\nsetReadOnly( Complex128Array.prototype, 'findLastIndex', function findLastIndex( predicate, thisArg ) {\n\tvar buf;\n\tvar i;\n\tvar z;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( predicate ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', predicate ) );\n\t}\n\tbuf = this._buffer;\n\tfor ( i = this._length-1; i >= 0; i-- ) {\n\t\tz = getComplex128( buf, i );\n\t\tif ( predicate.call( thisArg, z, i, this ) ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n});\n\n/**\n* Invokes a function once for each array element.\n*\n* @name forEach\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {Function} fcn - function to invoke\n* @param {*} [thisArg] - function invocation context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n*\n* @example\n* var Complex128 = require( '@stdlib/complex/float64' );\n*\n* function log( v, i ) {\n*     console.log( '%s: %s', i, v.toString() );\n* }\n*\n* var arr = new Complex128Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* arr.forEach( log );\n*/\nsetReadOnly( Complex128Array.prototype, 'forEach', function forEach( fcn, thisArg ) {\n\tvar buf;\n\tvar i;\n\tvar z;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( fcn ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', fcn ) );\n\t}\n\tbuf = this._buffer;\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tz = getComplex128( buf, i );\n\t\tfcn.call( thisArg, z, i, this );\n\t}\n});\n\n/**\n* Returns an array element.\n*\n* @name get\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {NonNegativeInteger} idx - element index\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} must provide a nonnegative integer\n* @returns {(Complex128|void)} array element\n*\n* @example\n* var arr = new Complex128Array( 10 );\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* var z = arr.get( 0 );\n* // returns <Complex128>\n*\n* var re = real( z );\n* // returns 0.0\n*\n* var im = imag( z );\n* // returns 0.0\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n*\n* z = arr.get( 0 );\n* // returns <Complex128>\n*\n* re = real( z );\n* // returns 1.0\n*\n* im = imag( z );\n* // returns -1.0\n*\n* z = arr.get( 100 );\n* // returns undefined\n*/\nsetReadOnly( Complex128Array.prototype, 'get', function get( idx ) {\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isNonNegativeInteger( idx ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a nonnegative integer. Value: `%s`.', idx ) );\n\t}\n\tif ( idx >= this._length ) {\n\t\treturn;\n\t}\n\treturn getComplex128( this._buffer, idx );\n});\n\n/**\n* Number of array elements.\n*\n* @name length\n* @memberof Complex128Array.prototype\n* @readonly\n* @type {NonNegativeInteger}\n*\n* @example\n* var arr = new Complex128Array( 10 );\n*\n* var len = arr.length;\n* // returns 10\n*/\nsetReadOnlyAccessor( Complex128Array.prototype, 'length', function get() {\n\treturn this._length;\n});\n\n/**\n* Returns a boolean indicating whether an array includes a provided value.\n*\n* @name includes\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {ComplexLike} searchElement - search element\n* @param {integer} [fromIndex=0] - starting index (inclusive)\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a complex number\n* @throws {TypeError} second argument must be an integer\n* @returns {boolean} boolean indicating whether an array includes a provided value\n*\n* @example\n* var Complex128 = require( '@stdlib/complex/float64' );\n*\n* var arr = new Complex128Array( 5 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n* arr.set( [ 4.0, -4.0 ], 3 );\n* arr.set( [ 5.0, -5.0 ], 4 );\n*\n* var bool = arr.includes( new Complex128( 3.0, -3.0 ) );\n* // returns true\n*\n* bool = arr.includes( new Complex128( 3.0, -3.0 ), 3 );\n* // returns false\n*\n* bool = arr.includes( new Complex128( 4.0, -4.0 ), -3 );\n* // returns true\n*/\nsetReadOnly( Complex128Array.prototype, 'includes', function includes( searchElement, fromIndex ) {\n\tvar buf;\n\tvar idx;\n\tvar re;\n\tvar im;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isComplexLike( searchElement ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a complex number. Value: `%s`.', searchElement ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', fromIndex ) );\n\t\t}\n\t\tif ( fromIndex < 0 ) {\n\t\t\tfromIndex += this._length;\n\t\t\tif ( fromIndex < 0 ) {\n\t\t\t\tfromIndex = 0;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfromIndex = 0;\n\t}\n\tre = real( searchElement );\n\tim = imag( searchElement );\n\tbuf = this._buffer;\n\tfor ( i = fromIndex; i < this._length; i++ ) {\n\t\tidx = 2 * i;\n\t\tif ( re === buf[ idx ] && im === buf[ idx+1 ] ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n});\n\n/**\n* Returns the first index at which a given element can be found.\n*\n* @name indexOf\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {ComplexLike} searchElement - element to find\n* @param {integer} [fromIndex=0] - starting index (inclusive)\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a complex number\n* @throws {TypeError} second argument must be an integer\n* @returns {integer} index or -1\n*\n* @example\n* var Complex128 = require( '@stdlib/complex/float64' );\n*\n* var arr = new Complex128Array( 5 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n* arr.set( [ 4.0, -4.0 ], 3 );\n* arr.set( [ 5.0, -5.0 ], 4 );\n*\n* var idx = arr.indexOf( new Complex128( 3.0, -3.0 ) );\n* // returns 2\n*\n* idx = arr.indexOf( new Complex128( 3.0, -3.0 ), 3 );\n* // returns -1\n*\n* idx = arr.indexOf( new Complex128( 4.0, -4.0 ), -3 );\n* // returns 3\n*/\nsetReadOnly( Complex128Array.prototype, 'indexOf', function indexOf( searchElement, fromIndex ) {\n\tvar buf;\n\tvar idx;\n\tvar re;\n\tvar im;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isComplexLike( searchElement ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a complex number. Value: `%s`.', searchElement ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', fromIndex ) );\n\t\t}\n\t\tif ( fromIndex < 0 ) {\n\t\t\tfromIndex += this._length;\n\t\t\tif ( fromIndex < 0 ) {\n\t\t\t\tfromIndex = 0;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfromIndex = 0;\n\t}\n\tre = real( searchElement );\n\tim = imag( searchElement );\n\tbuf = this._buffer;\n\tfor ( i = fromIndex; i < this._length; i++ ) {\n\t\tidx = 2 * i;\n\t\tif ( re === buf[ idx ] && im === buf[ idx+1 ] ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n});\n\n/**\n* Returns a new string by concatenating all array elements.\n*\n* @name join\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {string} [separator=','] - element separator\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a string\n* @returns {string} string representation\n*\n* @example\n* var arr = new Complex128Array( 2 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n*\n* var str = arr.join();\n* // returns '1 + 1i,2 + 2i'\n*\n* str = arr.join( '/' );\n* // returns '1 + 1i/2 + 2i'\n*/\nsetReadOnly( Complex128Array.prototype, 'join', function join( separator ) {\n\tvar out;\n\tvar buf;\n\tvar sep;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( arguments.length === 0 ) {\n\t\tsep = ',';\n\t} else if ( isString( separator ) ) {\n\t\tsep = separator;\n\t} else {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', separator ) );\n\t}\n\tout = [];\n\tbuf = this._buffer;\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tout.push( getComplex128( buf, i ).toString() );\n\t}\n\treturn out.join( sep );\n});\n\n/**\n* Returns the last index at which a given element can be found.\n*\n* @name lastIndexOf\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {ComplexLike} searchElement - element to find\n* @param {integer} [fromIndex] - index at which to start searching backward (inclusive)\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a complex number\n* @throws {TypeError} second argument must be an integer\n* @returns {integer} index or -1\n*\n* @example\n* var Complex128 = require( '@stdlib/complex/float64' );\n*\n* var arr = new Complex128Array( 5 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n* arr.set( [ 4.0, -4.0 ], 3 );\n* arr.set( [ 3.0, -3.0 ], 4 );\n*\n* var idx = arr.lastIndexOf( new Complex128( 3.0, -3.0 ) );\n* // returns 4\n*\n* idx = arr.lastIndexOf( new Complex128( 3.0, -3.0 ), 3 );\n* // returns 2\n*\n* idx = arr.lastIndexOf( new Complex128( 5.0, -5.0 ), 3 );\n* // returns -1\n*\n* idx = arr.lastIndexOf( new Complex128( 2.0, -2.0 ), -3 );\n* // returns 1\n*/\nsetReadOnly( Complex128Array.prototype, 'lastIndexOf', function lastIndexOf( searchElement, fromIndex ) {\n\tvar buf;\n\tvar idx;\n\tvar re;\n\tvar im;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isComplexLike( searchElement ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a complex number. Value: `%s`.', searchElement ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', fromIndex ) );\n\t\t}\n\t\tif ( fromIndex >= this._length ) {\n\t\t\tfromIndex = this._length - 1;\n\t\t} else if ( fromIndex < 0 ) {\n\t\t\tfromIndex += this._length;\n\t\t}\n\t} else {\n\t\tfromIndex = this._length - 1;\n\t}\n\tre = real( searchElement );\n\tim = imag( searchElement );\n\tbuf = this._buffer;\n\tfor ( i = fromIndex; i >= 0; i-- ) {\n\t\tidx = 2 * i;\n\t\tif ( re === buf[ idx ] && im === buf[ idx+1 ] ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n});\n\n/**\n* Returns a new array with each element being the result of a provided callback function.\n*\n* @name map\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {Function} fcn - callback function\n* @param {*} [thisArg] - callback function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {Complex128Array} complex number array\n*\n* @example\n* var Complex128 = require( '@stdlib/complex/float64' );\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* function scale( v, i ) {\n*     return new Complex128( 2.0*real( v ), 2.0*imag( v ) );\n* }\n*\n* var arr = new Complex128Array( 3 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n*\n* var out = arr.map( scale );\n* // returns <Complex128Array>\n*\n* var z = out.get( 0 );\n* // returns <Complex128>\n*\n* var re = real( z );\n* // returns 2.0\n*\n* var im = imag( z );\n* // returns -2.0\n*/\nsetReadOnly( Complex128Array.prototype, 'map', function map( fcn, thisArg ) {\n\tvar outbuf;\n\tvar buf;\n\tvar out;\n\tvar i;\n\tvar v;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( fcn ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', fcn ) );\n\t}\n\tbuf = this._buffer;\n\tout = new this.constructor( this._length );\n\toutbuf = out._buffer; // eslint-disable-line no-underscore-dangle\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tv = fcn.call( thisArg, getComplex128( buf, i ), i, this );\n\t\tif ( isComplexLike( v ) ) {\n\t\t\toutbuf[ 2*i ] = real( v );\n\t\t\toutbuf[ (2*i)+1 ] = imag( v );\n\t\t} else if ( isArrayLikeObject( v ) && v.length === 2 ) {\n\t\t\toutbuf[ 2*i ] = v[ 0 ];\n\t\t\toutbuf[ (2*i)+1 ] = v[ 1 ];\n\t\t} else {\n\t\t\tthrow new TypeError( format( 'invalid argument. Callback must return either a two-element array containing real and imaginary components or a complex number. Value: `%s`.', v ) );\n\t\t}\n\t}\n\treturn out;\n});\n\n/**\n* Reverses an array in-place.\n*\n* @name reverse\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @throws {TypeError} `this` must be a complex number array\n* @returns {Complex128Array} reversed array\n*\n* @example\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* var arr = new Complex128Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* var out = arr.reverse();\n* // returns <Complex128Array>\n*\n* var z = out.get( 0 );\n* // returns <Complex128>\n*\n* var re = real( z );\n* // returns 3.0\n*\n* var im = imag( z );\n* // returns 3.0\n*\n* z = out.get( 1 );\n* // returns <Complex128>\n*\n* re = real( z );\n* // returns 2.0\n*\n* im = imag( z );\n* // returns 2.0\n*\n* z = out.get( 2 );\n* // returns <Complex128>\n*\n* re = real( z );\n* // returns 1.0\n*\n* im = imag( z );\n* // returns 1.0\n*/\nsetReadOnly( Complex128Array.prototype, 'reverse', function reverse() {\n\tvar buf;\n\tvar tmp;\n\tvar len;\n\tvar N;\n\tvar i;\n\tvar j;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tlen = this._length;\n\tbuf = this._buffer;\n\tN = floor( len / 2 );\n\tfor ( i = 0; i < N; i++ ) {\n\t\tj = len - i - 1;\n\t\ttmp = buf[ (2*i) ];\n\t\tbuf[ (2*i) ] = buf[ (2*j) ];\n\t\tbuf[ (2*j) ] = tmp;\n\t\ttmp = buf[ (2*i)+1 ];\n\t\tbuf[ (2*i)+1 ] = buf[ (2*j)+1 ];\n\t\tbuf[ (2*j)+1 ] = tmp;\n\t}\n\treturn this;\n});\n\n/**\n* Sets an array element.\n*\n* ## Notes\n*\n* -   When provided a typed array, real or complex, we must check whether the source array shares the same buffer as the target array and whether the underlying memory overlaps. In particular, we are concerned with the following scenario:\n*\n*     ```text\n*     buf:                ---------------------\n*     src: ---------------------\n*     ```\n*\n*     In the above, as we copy values from `src`, we will overwrite values in the `src` view, resulting in duplicated values copied into the end of `buf`, which is not intended. Hence, to avoid overwriting source values, we must **copy** source values to a temporary array.\n*\n*     In the other overlapping scenario,\n*\n*     ```text\n*     buf: ---------------------\n*     src:                ---------------------\n*     ```\n*\n*     by the time we begin copying into the overlapping region, we are copying from the end of `src`, a non-overlapping region, which means we don't run the risk of copying copied values, rather than the original `src` values as intended.\n*\n* @name set\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {(Collection|Complex|ComplexArray)} value - value(s)\n* @param {NonNegativeInteger} [i=0] - element index at which to start writing values\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be either a complex number, an array-like object, or a complex number array\n* @throws {TypeError} index argument must be a nonnegative integer\n* @throws {RangeError} array-like objects must have a length which is a multiple of two\n* @throws {RangeError} index argument is out-of-bounds\n* @throws {RangeError} target array lacks sufficient storage to accommodate source values\n* @returns {void}\n*\n* @example\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* var arr = new Complex128Array( 10 );\n*\n* var z = arr.get( 0 );\n* // returns <Complex128>\n*\n* var re = real( z );\n* // returns 0.0\n*\n* var im = imag( z );\n* // returns 0.0\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n*\n* z = arr.get( 0 );\n* // returns <Complex128>\n*\n* re = real( z );\n* // returns 1.0\n*\n* im = imag( z );\n* // returns -1.0\n*/\nsetReadOnly( Complex128Array.prototype, 'set', function set( value ) {\n\t/* eslint-disable no-underscore-dangle */\n\tvar sbuf;\n\tvar idx;\n\tvar buf;\n\tvar tmp;\n\tvar flg;\n\tvar N;\n\tvar v;\n\tvar i;\n\tvar j;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tbuf = this._buffer;\n\tif ( arguments.length > 1 ) {\n\t\tidx = arguments[ 1 ];\n\t\tif ( !isNonNegativeInteger( idx ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Index argument must be a nonnegative integer. Value: `%s`.', idx ) );\n\t\t}\n\t} else {\n\t\tidx = 0;\n\t}\n\tif ( isComplexLike( value ) ) {\n\t\tif ( idx >= this._length ) {\n\t\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%u`.', idx ) );\n\t\t}\n\t\tidx *= 2;\n\t\tbuf[ idx ] = real( value );\n\t\tbuf[ idx+1 ] = imag( value );\n\t\treturn;\n\t}\n\tif ( isComplexArray( value ) ) {\n\t\tN = value._length;\n\t\tif ( idx+N > this._length ) {\n\t\t\tthrow new RangeError( 'invalid arguments. Target array lacks sufficient storage to accommodate source values.' );\n\t\t}\n\t\tsbuf = value._buffer;\n\n\t\t// Check for overlapping memory...\n\t\tj = buf.byteOffset + (idx*BYTES_PER_ELEMENT);\n\t\tif (\n\t\t\tsbuf.buffer === buf.buffer &&\n\t\t\t(\n\t\t\t\tsbuf.byteOffset < j &&\n\t\t\t\tsbuf.byteOffset+sbuf.byteLength > j\n\t\t\t)\n\t\t) {\n\t\t\t// We need to copy source values...\n\t\t\ttmp = new Float64Array( sbuf.length );\n\t\t\tfor ( i = 0; i < sbuf.length; i++ ) {\n\t\t\t\ttmp[ i ] = sbuf[ i ];\n\t\t\t}\n\t\t\tsbuf = tmp;\n\t\t}\n\t\tidx *= 2;\n\t\tj = 0;\n\t\tfor ( i = 0; i < N; i++ ) {\n\t\t\tbuf[ idx ] = sbuf[ j ];\n\t\t\tbuf[ idx+1 ] = sbuf[ j+1 ];\n\t\t\tidx += 2; // stride\n\t\t\tj += 2; // stride\n\t\t}\n\t\treturn;\n\t}\n\tif ( isCollection( value ) ) {\n\t\t// Detect whether we've been provided an array of complex numbers...\n\t\tN = value.length;\n\t\tfor ( i = 0; i < N; i++ ) {\n\t\t\tif ( !isComplexLike( value[ i ] ) ) {\n\t\t\t\tflg = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t// If an array does not contain only complex numbers, then we assume interleaved real and imaginary components...\n\t\tif ( flg ) {\n\t\t\tif ( !isEven( N ) ) {\n\t\t\t\tthrow new RangeError( format( 'invalid argument. Array-like object arguments must have a length which is a multiple of two. Length: `%u`.', N ) );\n\t\t\t}\n\t\t\tif ( idx+(N/2) > this._length ) {\n\t\t\t\tthrow new RangeError( 'invalid arguments. Target array lacks sufficient storage to accommodate source values.' );\n\t\t\t}\n\t\t\tsbuf = value;\n\n\t\t\t// Check for overlapping memory...\n\t\t\tj = buf.byteOffset + (idx*BYTES_PER_ELEMENT);\n\t\t\tif (\n\t\t\t\tsbuf.buffer === buf.buffer &&\n\t\t\t\t(\n\t\t\t\t\tsbuf.byteOffset < j &&\n\t\t\t\t\tsbuf.byteOffset+sbuf.byteLength > j\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// We need to copy source values...\n\t\t\t\ttmp = new Float64Array( N );\n\t\t\t\tfor ( i = 0; i < N; i++ ) {\n\t\t\t\t\ttmp[ i ] = sbuf[ i ];\n\t\t\t\t}\n\t\t\t\tsbuf = tmp;\n\t\t\t}\n\t\t\tidx *= 2;\n\t\t\tN /= 2;\n\t\t\tj = 0;\n\t\t\tfor ( i = 0; i < N; i++ ) {\n\t\t\t\tbuf[ idx ] = sbuf[ j ];\n\t\t\t\tbuf[ idx+1 ] = sbuf[ j+1 ];\n\t\t\t\tidx += 2; // stride\n\t\t\t\tj += 2; // stride\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\t// If an array contains only complex numbers, then we need to extract real and imaginary components...\n\t\tif ( idx+N > this._length ) {\n\t\t\tthrow new RangeError( 'invalid arguments. Target array lacks sufficient storage to accommodate source values.' );\n\t\t}\n\t\tidx *= 2;\n\t\tfor ( i = 0; i < N; i++ ) {\n\t\t\tv = value[ i ];\n\t\t\tbuf[ idx ] = real( v );\n\t\t\tbuf[ idx+1 ] = imag( v );\n\t\t\tidx += 2; // stride\n\t\t}\n\t\treturn;\n\t}\n\tthrow new TypeError( format( 'invalid argument. First argument must be either a complex number, an array-like object, or a complex number array. Value: `%s`.', value ) );\n\n\t/* eslint-enable no-underscore-dangle */\n});\n\n/**\n* Tests whether at least one element in an array passes a test implemented by a predicate function.\n*\n* @name some\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - predicate function execution context\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be a function\n* @returns {boolean} boolean indicating whether at least one element passes a test\n*\n* @example\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* function predicate( v ) {\n*     return ( real( v ) === imag( v ) );\n* }\n*\n* var arr = new Complex128Array( 3 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n*\n* var bool = arr.some( predicate );\n* // returns true\n*/\nsetReadOnly( Complex128Array.prototype, 'some', function some( predicate, thisArg ) {\n\tvar buf;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isFunction( predicate ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a function. Value: `%s`.', predicate ) );\n\t}\n\tbuf = this._buffer;\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tif ( predicate.call( thisArg, getComplex128( buf, i ), i, this ) ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n});\n\n/**\n* Creates a new typed array view over the same underlying `ArrayBuffer` and with the same underlying data type as the host array.\n*\n* @name subarray\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {integer} [begin=0] - starting index (inclusive)\n* @param {integer} [end] - ending index (exclusive)\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be an integer\n* @throws {TypeError} second argument must be an integer\n* @returns {Complex64Array} subarray\n*\n* @example\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n*\n* var arr = new Complex128Array( 5 );\n*\n* arr.set( [ 1.0, -1.0 ], 0 );\n* arr.set( [ 2.0, -2.0 ], 1 );\n* arr.set( [ 3.0, -3.0 ], 2 );\n* arr.set( [ 4.0, -4.0 ], 3 );\n* arr.set( [ 5.0, -5.0 ], 4 );\n*\n* var subarr = arr.subarray();\n* // returns <Complex128Array>\n*\n* var len = subarr.length;\n* // returns 5\n*\n* var z = subarr.get( 0 );\n* // returns <Complex128>\n*\n* var re = real( z );\n* // returns 1.0\n*\n* var im = imag( z );\n* // returns -1.0\n*\n* z = subarr.get( len-1 );\n* // returns <Complex128>\n*\n* re = real( z );\n* // returns 5.0\n*\n* im = imag( z );\n* // returns -5.0\n*\n* subarr = arr.subarray( 1, -2 );\n* // returns <Complex128Array>\n*\n* len = subarr.length;\n* // returns 2\n*\n* z = subarr.get( 0 );\n* // returns <Complex128>\n*\n* re = real( z );\n* // returns 2.0\n*\n* im = imag( z );\n* // returns -2.0\n*\n* z = subarr.get( len-1 );\n* // returns <Complex128>\n*\n* re = real( z );\n* // returns 3.0\n*\n* im = imag( z );\n* // returns -3.0\n*/\nsetReadOnly( Complex128Array.prototype, 'subarray', function subarray( begin, end ) {\n\tvar offset;\n\tvar buf;\n\tvar len;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tbuf = this._buffer;\n\tlen = this._length;\n\tif ( arguments.length === 0 ) {\n\t\tbegin = 0;\n\t\tend = len;\n\t} else {\n\t\tif ( !isInteger( begin ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. First argument must be an integer. Value: `%s`.', begin ) );\n\t\t}\n\t\tif ( begin < 0 ) {\n\t\t\tbegin += len;\n\t\t\tif ( begin < 0 ) {\n\t\t\t\tbegin = 0;\n\t\t\t}\n\t\t}\n\t\tif ( arguments.length === 1 ) {\n\t\t\tend = len;\n\t\t} else {\n\t\t\tif ( !isInteger( end ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', end ) );\n\t\t\t}\n\t\t\tif ( end < 0 ) {\n\t\t\t\tend += len;\n\t\t\t\tif ( end < 0 ) {\n\t\t\t\t\tend = 0;\n\t\t\t\t}\n\t\t\t} else if ( end > len ) {\n\t\t\t\tend = len;\n\t\t\t}\n\t\t}\n\t}\n\tif ( begin >= len ) {\n\t\tlen = 0;\n\t\toffset = buf.byteLength;\n\t} else if ( begin >= end ) {\n\t\tlen = 0;\n\t\toffset = buf.byteOffset + ( begin*BYTES_PER_ELEMENT );\n\t} else {\n\t\tlen = end - begin;\n\t\toffset = buf.byteOffset + ( begin*BYTES_PER_ELEMENT );\n\t}\n\treturn new this.constructor( buf.buffer, offset, ( len < 0 ) ? 0 : len );\n});\n\n/**\n* Serializes an array as a string.\n*\n* @name toString\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @throws {TypeError} `this` must be a complex number array\n* @returns {string} string representation\n*\n* @example\n* var arr = new Complex128Array( 2 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n*\n* var str = arr.toString();\n* // returns '1 + 1i,2 + 2i'\n*/\nsetReadOnly( Complex128Array.prototype, 'toString', function toString() {\n\tvar out;\n\tvar buf;\n\tvar i;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tout = [];\n\tbuf = this._buffer;\n\tfor ( i = 0; i < this._length; i++ ) {\n\t\tout.push( getComplex128( buf, i ).toString() );\n\t}\n\treturn out.join( ',' );\n});\n\n/**\n* Returns a new typed array with the element at a provided index replaced with a provided value.\n*\n* @name with\n* @memberof Complex128Array.prototype\n* @type {Function}\n* @param {integer} index - element index\n* @param {ComplexLike} value - new value\n* @throws {TypeError} `this` must be a complex number array\n* @throws {TypeError} first argument must be an integer\n* @throws {RangeError} index argument is out-of-bounds\n* @throws {TypeError} second argument must be a complex number\n* @returns {Complex128Array} new typed array\n*\n* @example\n* var real = require( '@stdlib/complex/real' );\n* var imag = require( '@stdlib/complex/imag' );\n* var Complex128 = require( '@stdlib/complex/float64' );\n*\n* var arr = new Complex128Array( 3 );\n*\n* arr.set( [ 1.0, 1.0 ], 0 );\n* arr.set( [ 2.0, 2.0 ], 1 );\n* arr.set( [ 3.0, 3.0 ], 2 );\n*\n* var out = arr.with( 0, new Complex128( 4.0, 4.0 ) );\n* // returns <Complex128Array>\n*\n* var z = out.get( 0 );\n* // returns <Complex128>\n*\n* var re = real( z );\n* // returns 4.0\n*\n* var im = imag( z );\n* // returns 4.0\n*/\nsetReadOnly( Complex128Array.prototype, 'with', function copyWith( index, value ) {\n\tvar buf;\n\tvar out;\n\tvar len;\n\tif ( !isComplexArray( this ) ) {\n\t\tthrow new TypeError( 'invalid invocation. `this` is not a complex number array.' );\n\t}\n\tif ( !isInteger( index ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be an integer. Value: `%s`.', index ) );\n\t}\n\tlen = this._length;\n\tif ( index < 0 ) {\n\t\tindex += len;\n\t}\n\tif ( index < 0 || index >= len ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%s`.', index ) );\n\t}\n\tif ( !isComplexLike( value ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a complex number. Value: `%s`.', value ) );\n\t}\n\tout = new this.constructor( this._buffer );\n\tbuf = out._buffer; // eslint-disable-line no-underscore-dangle\n\tbuf[ 2*index ] = real( value );\n\tbuf[ (2*index)+1 ] = imag( value );\n\treturn out;\n});\n\n\n// EXPORTS //\n\nmodule.exports = Complex128Array;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* 128-bit complex number array.\n*\n* @module @stdlib/array/complex128\n*\n* @example\n* var Complex128Array = require( '@stdlib/array/complex128' );\n*\n* var arr = new Complex128Array();\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 0\n*\n* @example\n* var Complex128Array = require( '@stdlib/array/complex128' );\n*\n* var arr = new Complex128Array( 2 );\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 2\n*\n* @example\n* var Complex128Array = require( '@stdlib/array/complex128' );\n*\n* var arr = new Complex128Array( [ 1.0, -1.0 ] );\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 1\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var Complex128Array = require( '@stdlib/array/complex128' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = new Complex128Array( buf );\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 2\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var Complex128Array = require( '@stdlib/array/complex128' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = new Complex128Array( buf, 16 );\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 2\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var Complex128Array = require( '@stdlib/array/complex128' );\n*\n* var buf = new ArrayBuffer( 64 );\n* var arr = new Complex128Array( buf, 16, 2 );\n* // returns <Complex128Array>\n*\n* var len = arr.length;\n* // returns 2\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Float64Array = require( './../../float64' );\nvar Float32Array = require( './../../float32' );\nvar Uint32Array = require( './../../uint32' );\nvar Int32Array = require( './../../int32' );\nvar Uint16Array = require( './../../uint16' );\nvar Int16Array = require( './../../int16' );\nvar Uint8Array = require( './../../uint8' );\nvar Uint8ClampedArray = require( './../../uint8c' );\nvar Int8Array = require( './../../int8' );\nvar Complex64Array = require( './../../complex64' );\nvar Complex128Array = require( './../../complex128' );\n\n\n// MAIN //\n\n// Note: order should match `dtypes` order\nvar CTORS = [\n\tFloat64Array,\n\tFloat32Array,\n\tInt32Array,\n\tUint32Array,\n\tInt16Array,\n\tUint16Array,\n\tInt8Array,\n\tUint8Array,\n\tUint8ClampedArray,\n\tComplex64Array,\n\tComplex128Array\n];\n\n\n// EXPORTS //\n\nmodule.exports = CTORS;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n// Note: order should match `ctors` order\nvar DTYPES = [\n\t'float64',\n\t'float32',\n\t'int32',\n\t'uint32',\n\t'int16',\n\t'uint16',\n\t'int8',\n\t'uint8',\n\t'uint8c',\n\t'complex64',\n\t'complex128'\n];\n\n\n// EXPORTS //\n\nmodule.exports = DTYPES;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isBuffer = require( '@stdlib/assert/is-buffer' );\nvar isArray = require( '@stdlib/assert/is-array' );\nvar constructorName = require( '@stdlib/utils/constructor-name' );\nvar ctor2dtype = require( './ctor2dtype.js' );\nvar CTORS = require( './ctors.js' );\nvar DTYPES = require( './dtypes.js' );\n\n\n// VARIABLES //\n\nvar NTYPES = DTYPES.length;\n\n\n// MAIN //\n\n/**\n* Returns the data type of an array.\n*\n* @param {*} value - input value\n* @returns {(string|null)} data type\n*\n* @example\n* var dt = dtype( [ 1, 2, 3 ] );\n* // returns 'generic'\n*\n* var dt = dtype( 'beep' );\n* // returns null\n*/\nfunction dtype( value ) {\n\tvar i;\n\tif ( isArray( value ) ) {\n\t\treturn 'generic';\n\t}\n\tif ( isBuffer( value ) ) {\n\t\treturn null;\n\t}\n\tfor ( i = 0; i < NTYPES; i++ ) {\n\t\tif ( value instanceof CTORS[ i ] ) {\n\t\t\treturn DTYPES[ i ];\n\t\t}\n\t}\n\t// If the above failed, fall back to a more robust (and significantly slower) means for resolving underlying data types:\n\treturn ctor2dtype[ constructorName( value ) ] || null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = dtype;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the data type of an array.\n*\n* @module @stdlib/array/dtype\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var dtype = require( '@stdlib/array/dtype' );\n*\n* var arr = new Float64Array( 10 );\n*\n* var dt = dtype( arr );\n* // returns 'float64'\n*\n* dt = dtype( {} );\n* // returns null\n*\n* dt = dtype( 'beep' );\n* // returns null\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isAccessorArray = require( './../../../base/assert/is-accessor-array' );\nvar getter = require( './../../../base/getter' );\nvar setter = require( './../../../base/setter' );\nvar accessorGetter = require( './../../../base/accessor-getter' );\nvar accessorSetter = require( './../../../base/accessor-setter' );\nvar dtype = require( './../../../dtype' );\n\n\n// MAIN //\n\n/**\n* Returns element accessors for a provided array-like object.\n*\n* ## Notes\n*\n* -   The returned object has the following properties:\n*\n*     -   **accessorProtocol**: `boolean` indicating whether the provided array-like object supports the get/set protocol (i.e., uses accessors for getting and setting elements).\n*     -   **accessors**: a two-element array whose first element is an accessor for retrieving an array element and whose second element is an accessor for setting an array element.\n*\n* @param {Collection} x - array-like object\n* @returns {Object} object containing accessor data\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n* var obj = accessors( x );\n* // returns {...}\n*\n* var bool = obj.accessorProtocol;\n* // returns false\n*\n* var fcns = obj.accessors;\n* // returns [ <Function>, <Function> ]\n*\n* var v = fcns[ 0 ]( x, 2 );\n* // returns 3\n*/\nfunction accessors( x ) {\n\tvar dt = dtype( x );\n\tif ( isAccessorArray( x ) ) {\n\t\treturn {\n\t\t\t'accessorProtocol': true,\n\t\t\t'accessors': [\n\t\t\t\taccessorGetter( dt ),\n\t\t\t\taccessorSetter( dt )\n\t\t\t]\n\t\t};\n\t}\n\treturn {\n\t\t'accessorProtocol': false,\n\t\t'accessors': [\n\t\t\tgetter( dt ),\n\t\t\tsetter( dt )\n\t\t]\n\t};\n}\n\n\n// EXPORTS //\n\nmodule.exports = accessors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return element accessors for a provided array-like object.\n*\n* @module @stdlib/array/base/accessors\n*\n* @example\n* var accessors = require( '@stdlib/array/base/accessors' );\n*\n* var x = [ 1, 2, 3, 4 ];\n* var obj = accessors( x );\n* // returns {...}\n*\n* var bool = obj.accessorProtocol;\n* // returns false\n*\n* var fcns = obj.accessors;\n* // returns [ <Function>, <Function> ]\n*\n* var v = fcns[ 0 ]( x, 2 );\n* // returns 3\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable no-restricted-syntax, no-invalid-this */\n\n'use strict';\n\n// MODULES //\n\nvar setReadWriteAccessor = require( '@stdlib/utils/define-nonenumerable-read-write-accessor' );\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar accessors = require( './../../../base/accessors' );\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar format = require( '@stdlib/string/format' );\n\n\n// FUNCTIONS //\n\n/**\n* Sets the length of an array-like object.\n*\n* @private\n* @param {NonNegativeInteger} len - length\n*/\nfunction setLength( len ) {\n\tthis._buffer.length = len;\n}\n\n/**\n* Returns the length of an array-like object.\n*\n* @private\n* @returns {NonNegativeInteger} length\n*/\nfunction getLength() {\n\treturn this._buffer.length;\n}\n\n\n// MAIN //\n\n/**\n* Creates a minimal array-like object supporting the accessor protocol from another array-like object.\n*\n* @constructor\n* @param {Collection} arr - input array\n* @throws {TypeError} must provide an array-like object\n* @returns {AccessorArray} accessor array instance\n*\n* @example\n* var arr = new AccessorArray( [ 1, 2, 3 ] );\n* // returns <AccessorArray>\n*\n* var v = arr.get( 0 );\n* // returns 1\n*/\nfunction AccessorArray( arr ) {\n\tvar o;\n\tif ( !(this instanceof AccessorArray) ) {\n\t\treturn new AccessorArray( arr );\n\t}\n\tif ( !isCollection( arr ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide an array-like object. Value: `%s`.', arr ) );\n\t}\n\to = accessors( arr );\n\tthis._buffer = arr;\n\tthis._getter = o.accessors[ 0 ];\n\tthis._setter = o.accessors[ 1 ];\n\treturn this;\n}\n\n/**\n* Constructor name.\n*\n* @name name\n* @memberof AccessorArray\n* @readonly\n* @type {string}\n* @default 'AccessorArray'\n*\n* @example\n* var name = AccessorArray.name;\n* // returns 'AccessorArray'\n*/\nsetReadOnly( AccessorArray, 'name', 'AccessorArray' );\n\n/**\n* Read/write accessor for getting/setting the number of elements.\n*\n* @name length\n* @memberof AccessorArray.prototype\n* @type {NonNegativeInteger}\n*/\nsetReadWriteAccessor( AccessorArray.prototype, 'length', getLength, setLength );\n\n/**\n* Returns an element.\n*\n* @name get\n* @memberof AccessorArray.prototype\n* @type {Function}\n* @param {integer} idx - element index\n* @returns {*} element\n*\n* @example\n* var arr = new AccessorArray( [ 1, 2, 3 ] );\n* // returns <AccessorArray>\n*\n* var v = arr.get( 0 );\n* // returns 1\n*/\nsetReadOnly( AccessorArray.prototype, 'get', function get( idx ) {\n\treturn this._getter( this._buffer, idx );\n});\n\n/**\n* Sets one or more elements.\n*\n* @name set\n* @memberof AccessorArray.prototype\n* @type {Function}\n* @param {*} value - value to set\n* @param {integer} [idx] - element index\n* @returns {void}\n*\n* @example\n* var arr = new AccessorArray( [ 1, 2, 3 ] );\n* // returns <AccessorArray>\n*\n* var v = arr.get( 0 );\n* // returns 1\n*\n* arr.set( 5, 0 );\n*\n* v = arr.get( 0 );\n* // returns 5\n*/\nsetReadOnly( AccessorArray.prototype, 'set', function set( value, idx ) {\n\tif ( arguments.length < 2 ) {\n\t\tthis._setter( this._buffer, 0, value );\n\t\treturn;\n\t}\n\tthis._setter( this._buffer, idx, value );\n});\n\n\n// EXPORTS //\n\nmodule.exports = AccessorArray;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a minimal array-like object supporting the accessor protocol from another array-like object.\n*\n* @module @stdlib/array/base/accessor\n*\n* @example\n* var AccessorArray = require( '@stdlib/array/base/accessor' );\n*\n* var arr = new AccessorArray( [ 1, 2, 3 ] );\n* // returns <AccessorArray>\n*\n* var v = arr.get( 0 );\n* // returns 1\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar accessors = require( './../../../base/accessors' );\n\n\n// MAIN //\n\n/**\n* Converts an array-like to an object likely to have the same \"shape\".\n*\n* ## Notes\n*\n* -   This function is intended as a potential performance optimization. In V8, for example, even if two objects share common properties, if those properties were added in different orders or if one object has additional properties not shared by the other object, then those objects will have different \"hidden\" classes. If a function is provided many objects having different \"shapes\", some JavaScript VMs (e.g., V8) will consider the function \"megamorphic\" and fail to perform various runtime optimizations. Accordingly, the intent of this function is to standardize the \"shape\" of the object holding array meta data to ensure that internal functions operating on arrays are provided consistent argument \"shapes\".\n*\n* -   The returned object has the following properties:\n*\n*     -   **data**: reference to the input array.\n*     -   **accessorProtocol**: `boolean` indicating whether the input array uses accessors for getting and setting elements.\n*     -   **accessors**: a two-element array whose first element is an accessor for retrieving an array element and whose second element is an accessor for setting an array element.\n*\n* @param {Collection} x - array-like object\n* @returns {Object} object containing array meta data\n*\n* @example\n* var obj = arraylike2object( [ 1, 2, 3, 4 ] );\n* // returns {...}\n*/\nfunction arraylike2object( x ) {\n\tvar o = accessors( x );\n\treturn {\n\t\t'data': x,\n\t\t'accessorProtocol': o.accessorProtocol,\n\t\t'accessors': o.accessors\n\t};\n}\n\n\n// EXPORTS //\n\nmodule.exports = arraylike2object;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert an array-like object to an object likely to have the same \"shape\".\n*\n* @module @stdlib/array/base/arraylike2object\n*\n* @example\n* var arraylike2object = require( '@stdlib/array/base/arraylike2object' );\n*\n* var obj = arraylike2object( [ 1, 2, 3, 4 ] );\n* // returns {...}\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isAccessorArray = require( './../../../../base/assert/is-accessor-array' );\nvar accessorGetter = require( './../../../../base/accessor-getter' );\nvar getter = require( './../../../../base/getter' );\nvar dtype = require( './../../../../dtype' );\n\n\n// MAIN //\n\n/**\n* Tests if an array contains a provided search value.\n*\n* @param {Collection} x - input array\n* @param {*} value - search value\n* @returns {boolean} boolean indicating if an array contains a search value\n*\n* @example\n* var out = contains( [ 1, 2, 3 ], 2 );\n* // returns true\n*/\nfunction contains( x, value ) {\n\tvar len;\n\tvar get;\n\tvar dt;\n\tvar i;\n\n\t// Resolve the input array data type:\n\tdt = dtype( x );\n\n\t// Resolve an accessor for retrieving input array elements:\n\tif ( isAccessorArray( x ) ) {\n\t\tget = accessorGetter( dt );\n\t} else {\n\t\tget = getter( dt );\n\t}\n\t// Get the number of elements over which to iterate:\n\tlen = x.length;\n\n\t// Loop over the elements...\n\tfor ( i = 0; i < len; i++ ) {\n\t\tif ( get( x, i ) === value ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\n\n// EXPORTS //\n\nmodule.exports = contains;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isAccessorArray = require( './../../../../base/assert/is-accessor-array' );\nvar accessorGetter = require( './../../../../base/accessor-getter' );\nvar dtype = require( './../../../../dtype' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Returns a function to tests if an array contains a provided search value.\n*\n* @param {Collection} x - input array\n* @throws {TypeError} must provide an array-like object\n* @returns {Function} function to test if an array contains a search value\n*\n* @example\n* var contains = factory( [ 1, 2, 3 ] );\n* // returns <Function>\n*\n* var bool = contains( 2 );\n* // returns true\n*/\nfunction factory( x ) {\n\tvar get;\n\tvar len;\n\tvar dt;\n\n\tif ( !isCollection( x ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide an array-like object. Value: `%s`.', x ) );\n\t}\n\t// Resolve the input array data type:\n\tdt = dtype( x );\n\n\t// Resolve an accessor for retrieving input array elements:\n\tif ( isAccessorArray( x ) ) {\n\t\tget = accessorGetter( dt );\n\t}\n\t// Get the number of elements over which to iterate:\n\tlen = x.length;\n\n\treturn ( get === void 0 ) ? contains : accessors;\n\t/**\n\t* Tests if an array contains a provided search value.\n\t*\n\t* @private\n\t* @param {*} value - search value\n\t* @returns {boolean} boolean indicating if an array contains a search value\n\t*\n\t* @example\n\t* var out = contains( [ 1, 2, 3 ], 2 );\n\t* // returns true\n\t*/\n\tfunction contains( value ) {\n\t\tvar i;\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tif ( x[ i ] === value ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\t/**\n\t* Tests if an array contains a provided search value.\n\t*\n\t* @private\n\t* @param {*} value - search value\n\t* @returns {boolean} boolean indicating if an array contains a search value\n\t*/\n\tfunction accessors( value ) {\n\t\tvar i;\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tif ( get( x, i ) === value ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = factory;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test if an array contains a provided search value.\n*\n* @module @stdlib/array/base/assert/contains\n*\n* @example\n* var contains = require( '@stdlib/array/base/assert/contains' );\n*\n* var out = contains( [ 1, 2, 3 ], 2 );\n* // returns true\n*/\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar factory = require( './factory.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'factory', factory );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n\n// exports: { \"factory\": \"main.factory\" }\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/*\n* When adding modules to the namespace, ensure that they are added in alphabetical order according to module name.\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-read-only-property' );\n\n\n// MAIN //\n\n/**\n* Namespace.\n*\n* @namespace ns\n*/\nvar ns = {};\n\n/**\n* @name contains\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/assert/contains}\n*/\nsetReadOnly( ns, 'contains', require( './../../../base/assert/contains' ) );\n\n/**\n* @name isAccessorArray\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/assert/is-accessor-array}\n*/\nsetReadOnly( ns, 'isAccessorArray', require( './../../../base/assert/is-accessor-array' ) );\n\n/**\n* @name isComplex64Array\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/assert/is-complex64array}\n*/\nsetReadOnly( ns, 'isComplex64Array', require( './../../../base/assert/is-complex64array' ) );\n\n/**\n* @name isComplex128Array\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/assert/is-complex128array}\n*/\nsetReadOnly( ns, 'isComplex128Array', require( './../../../base/assert/is-complex128array' ) );\n\n\n// EXPORTS //\n\nmodule.exports = ns;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isAccessorArray = require( './../../../base/assert/is-accessor-array' );\nvar accessorGetter = require( './../../../base/accessor-getter' );\nvar getter = require( './../../../base/getter' );\nvar dtype = require( './../../../dtype' );\n\n\n// MAIN //\n\n/**\n* Returns an accessor function for retrieving an element from an array-like object.\n*\n* @param {Collection} x - input array\n* @returns {Function} accessor\n*\n* @example\n* var arr = [ 1, 2, 3, 4 ];\n*\n* var get = resolveGetter( arr );\n* var v = get( arr, 2 );\n* // returns 3\n*/\nfunction resolveGetter( x ) {\n\tvar dt = dtype( x );\n\tif ( isAccessorArray( x ) ) {\n\t\treturn accessorGetter( dt );\n\t}\n\treturn getter( dt );\n}\n\n\n// EXPORTS //\n\nmodule.exports = resolveGetter;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return an accessor function for retrieving an element from an array-like object.\n*\n* @module @stdlib/array/base/resolve-getter\n*\n* @example\n* var resolveGetter = require( '@stdlib/array/base/resolve-getter' );\n*\n* var arr = [ 1, 2, 3, 4 ];\n*\n* var get = resolveGetter( arr );\n* var v = get( arr, 2 );\n* // returns 3\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Splits array element entries into two groups.\n*\n* @param {Collection} x - input array\n* @param {Collection} filter - array indicating which group an element in the input array belongs to\n* @throws {RangeError} must provide arrays having the same length\n* @returns {ArrayArray} results\n*\n* @example\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n* var filter = [ true, true, false, true ];\n*\n* var out = bifurcateEntries( x, filter );\n* // returns [ [ [ 0, 'beep' ], [ 1, 'boop' ], [ 3, 'bar' ] ], [ [ 2, 'foo' ] ] ]\n*/\nfunction bifurcateEntries( x, filter ) {\n\tvar xget;\n\tvar gget;\n\tvar len;\n\tvar out;\n\tvar g;\n\tvar v;\n\tvar i;\n\n\t// Get the number of elements to group:\n\tlen = x.length;\n\tif ( filter.length !== len ) {\n\t\tthrow new RangeError( 'invalid argument. The first and second arguments must have the same length.' );\n\t}\n\tif ( len === 0 ) {\n\t\treturn [];\n\t}\n\t// Resolve accessors for retrieving array elements:\n\txget = resolveGetter( x );\n\tgget = resolveGetter( filter );\n\n\t// Loop over the elements and assign each to a group...\n\tout = [ [], [] ];\n\tfor ( i = 0; i < len; i++ ) {\n\t\tv = xget( x, i );\n\t\tg = gget( filter, i );\n\t\tif ( g ) {\n\t\t\tout[ 0 ].push( [ i, v ] );\n\t\t} else {\n\t\t\tout[ 1 ].push( [ i, v ] );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = bifurcateEntries;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Split array element entries into two groups.\n*\n* @module @stdlib/array/base/bifurcate-entries\n*\n* @example\n* var bifurcateEntries = require( '@stdlib/array/base/bifurcate-entries' );\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n* var filter = [ true, true, false, true ];\n*\n* var out = bifurcateEntries( x, filter );\n* // returns [ [ [ 0, 'beep' ], [ 1, 'boop' ], [ 3, 'bar' ] ], [ [ 2, 'foo' ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Splits element entries into two groups according to a predicate function.\n*\n* @param {Collection} x - input array\n* @param {Function} predicate - predicate function specifying which group an element in the input collection belongs to\n* @param {*} [thisArg] - predicate function execution context\n* @returns {Object} group results\n*\n* @example\n* function predicate( v ) {\n*     return v[ 0 ] === 'b';\n* }\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n*\n* var out = bifurcateEntriesBy( x, predicate );\n* // returns [ [ [ 0, 'beep' ], [ 1, 'boop' ], [ 3, 'bar' ] ], [ [ 2, 'foo' ] ] ]\n*/\nfunction bifurcateEntriesBy( x, predicate, thisArg ) {\n\tvar get;\n\tvar len;\n\tvar out;\n\tvar v;\n\tvar i;\n\n\t// Get the number of elements to group:\n\tlen = x.length;\n\tif ( len === 0 ) {\n\t\treturn [];\n\t}\n\t// Resolve an accessor for retrieving array elements:\n\tget = resolveGetter( x );\n\n\t// Loop over the elements and assign each to a group...\n\tout = [ [], [] ];\n\tfor ( i = 0; i < len; i++ ) {\n\t\tv = get( x, i );\n\t\tif ( predicate.call( thisArg, v, i, x ) ) {\n\t\t\tout[ 0 ].push( [ i, v ] );\n\t\t} else {\n\t\t\tout[ 1 ].push( [ i, v ] );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = bifurcateEntriesBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Split element entries into two groups according to a predicate function.\n*\n* @module @stdlib/array/base/bifurcate-entries-by\n*\n* @example\n* var bifurcateEntriesBy = require( '@stdlib/array/base/bifurcate-entries-by' );\n*\n* function predicate( v ) {\n*     return v[ 0 ] === 'b';\n* }\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n*\n* var out = bifurcateEntriesBy( x, predicate );\n* // returns [ [ [ 0, 'beep' ], [ 1, 'boop' ], [ 3, 'bar' ] ], [ [ 2, 'foo' ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Splits array element indices into two groups.\n*\n* @param {Collection} x - input array\n* @param {Collection} filter - array indicating which group an element in the input array belongs to\n* @throws {RangeError} must provide arrays having the same length\n* @returns {ArrayArray} results\n*\n* @example\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n* var filter = [ true, true, false, true ];\n*\n* var out = bifurcateIndices( x, filter );\n* // returns [ [ 0, 1, 3 ], [ 2 ] ]\n*/\nfunction bifurcateIndices( x, filter ) {\n\tvar gget;\n\tvar len;\n\tvar out;\n\tvar g;\n\tvar i;\n\n\t// Get the number of elements to group:\n\tlen = x.length;\n\tif ( filter.length !== len ) {\n\t\tthrow new RangeError( 'invalid argument. The first and second arguments must have the same length.' );\n\t}\n\tif ( len === 0 ) {\n\t\treturn [];\n\t}\n\t// Resolve accessors for retrieving array elements:\n\tgget = resolveGetter( filter );\n\n\t// Loop over the elements and assign each to a group...\n\tout = [ [], [] ];\n\tfor ( i = 0; i < len; i++ ) {\n\t\tg = gget( filter, i );\n\t\tif ( g ) {\n\t\t\tout[ 0 ].push( i );\n\t\t} else {\n\t\t\tout[ 1 ].push( i );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = bifurcateIndices;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Split array element indices into two groups.\n*\n* @module @stdlib/array/base/bifurcate-indices\n*\n* @example\n* var bifurcateIndices = require( '@stdlib/array/base/bifurcate-indices' );\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n* var filter = [ true, true, false, true ];\n*\n* var out = bifurcateIndices( x, filter );\n* // returns [ [ 0, 1, 3 ], [ 2 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Splits element indices into two groups according to a predicate function.\n*\n* @param {Collection} x - input array\n* @param {Function} predicate - predicate function specifying which group an element in the input collection belongs to\n* @param {*} [thisArg] - predicate function execution context\n* @returns {Object} group results\n*\n* @example\n* function predicate( v ) {\n*     return v[ 0 ] === 'b';\n* }\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n*\n* var out = bifurcateIndicesBy( x, predicate );\n* // returns [ [ 0, 1, 3 ], [ 2 ] ]\n*/\nfunction bifurcateIndicesBy( x, predicate, thisArg ) {\n\tvar get;\n\tvar len;\n\tvar out;\n\tvar i;\n\n\t// Get the number of elements to group:\n\tlen = x.length;\n\tif ( len === 0 ) {\n\t\treturn [];\n\t}\n\t// Resolve an accessor for retrieving array elements:\n\tget = resolveGetter( x );\n\n\t// Loop over the elements and assign each to a group...\n\tout = [ [], [] ];\n\tfor ( i = 0; i < len; i++ ) {\n\t\tif ( predicate.call( thisArg, get( x, i ), i, x ) ) {\n\t\t\tout[ 0 ].push( i );\n\t\t} else {\n\t\t\tout[ 1 ].push( i );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = bifurcateIndicesBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Split element indices into two groups according to a predicate function.\n*\n* @module @stdlib/array/base/bifurcate-indices-by\n*\n* @example\n* var bifurcateIndicesBy = require( '@stdlib/array/base/bifurcate-indices-by' );\n*\n* function predicate( v ) {\n*     return v[ 0 ] === 'b';\n* }\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n*\n* var out = bifurcateIndicesBy( x, predicate );\n* // returns [ [ 0, 1, 3 ], [ 2 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Splits array element values into two groups.\n*\n* @param {Collection} x - input array\n* @param {Collection} filter - array indicating which group an element in the input array belongs to\n* @throws {RangeError} must provide arrays having the same length\n* @returns {ArrayArray} results\n*\n* @example\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n* var filter = [ true, true, false, true ];\n*\n* var out = bifurcateValues( x, filter );\n* // returns [ [ 'beep', 'boop', 'bar' ], [ 'foo' ] ]\n*/\nfunction bifurcateValues( x, filter ) {\n\tvar xget;\n\tvar gget;\n\tvar len;\n\tvar out;\n\tvar g;\n\tvar v;\n\tvar i;\n\n\t// Get the number of elements to group:\n\tlen = x.length;\n\tif ( filter.length !== len ) {\n\t\tthrow new RangeError( 'invalid argument. The first and second arguments must have the same length.' );\n\t}\n\tif ( len === 0 ) {\n\t\treturn [];\n\t}\n\t// Resolve accessors for retrieving array elements:\n\txget = resolveGetter( x );\n\tgget = resolveGetter( filter );\n\n\t// Loop over the elements and assign each to a group...\n\tout = [ [], [] ];\n\tfor ( i = 0; i < len; i++ ) {\n\t\tv = xget( x, i );\n\t\tg = gget( filter, i );\n\t\tif ( g ) {\n\t\t\tout[ 0 ].push( v );\n\t\t} else {\n\t\t\tout[ 1 ].push( v );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = bifurcateValues;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Split array element values into two groups.\n*\n* @module @stdlib/array/base/bifurcate-values\n*\n* @example\n* var bifurcateValues = require( '@stdlib/array/base/bifurcate-values' );\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n* var filter = [ true, true, false, true ];\n*\n* var out = bifurcateValues( x, filter );\n* // returns [ [ 'beep', 'boop', 'bar' ], [ 'foo' ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Splits element values into two groups according to a predicate function.\n*\n* @param {Collection} x - input array\n* @param {Function} predicate - predicate function specifying which group an element in the input collection belongs to\n* @param {*} [thisArg] - predicate function execution context\n* @returns {Object} group results\n*\n* @example\n* function predicate( v ) {\n*     return v[ 0 ] === 'b';\n* }\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n*\n* var out = bifurcateValuesBy( x, predicate );\n* // returns [ [ 'beep', 'boop', 'bar' ], [ 'foo' ] ]\n*/\nfunction bifurcateValuesBy( x, predicate, thisArg ) {\n\tvar get;\n\tvar len;\n\tvar out;\n\tvar v;\n\tvar i;\n\n\t// Get the number of elements to group:\n\tlen = x.length;\n\tif ( len === 0 ) {\n\t\treturn [];\n\t}\n\t// Resolve an accessor for retrieving array elements:\n\tget = resolveGetter( x );\n\n\t// Loop over the elements and assign each to a group...\n\tout = [ [], [] ];\n\tfor ( i = 0; i < len; i++ ) {\n\t\tv = get( x, i );\n\t\tif ( predicate.call( thisArg, v, i, x ) ) {\n\t\t\tout[ 0 ].push( v );\n\t\t} else {\n\t\t\tout[ 1 ].push( v );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = bifurcateValuesBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Split element values into two groups according to a predicate function.\n*\n* @module @stdlib/array/base/bifurcate-values-by\n*\n* @example\n* var bifurcateValuesBy = require( '@stdlib/array/base/bifurcate-values-by' );\n*\n* function predicate( v ) {\n*     return v[ 0 ] === 'b';\n* }\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n*\n* var out = bifurcateValuesBy( x, predicate );\n* // returns [ [ 'beep', 'boop', 'bar' ], [ 'foo' ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a binary callback to elements in two two-dimensional nested input arrays and assigns results to elements in a two-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing two input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - binary callback\n* @returns {void}\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = ones2d( shape );\n* var z = zeros2d( shape );\n*\n* binary2d( [ x, y, z ], shape, add );\n*\n* console.log( z );\n* // => [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ]\n*/\nfunction binary2d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar x;\n\tvar y;\n\tvar z;\n\n\tS0 = shape[ 1 ];\n\tS1 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tx0 = x[ i1 ];\n\t\ty0 = y[ i1 ];\n\t\tz0 = z[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tz0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ] );\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = binary2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a binary callback to elements in two two-dimensional nested input arrays and assign results to elements in a two-dimensional nested output array.\n*\n* @module @stdlib/array/base/binary2d\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n* var binary2d = require( '@stdlib/array/base/binary2d' );\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = ones2d( shape );\n* var z = zeros2d( shape );\n*\n* binary2d( [ x, y, z ], shape, add );\n*\n* console.log( z );\n* // => [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a binary callback to elements in two three-dimensional nested input arrays and assigns results to elements in a three-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array>} arrays - array-like object containing two input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - binary callback\n* @returns {void}\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n*\n* var shape = [ 2, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = ones3d( shape );\n* var z = zeros3d( shape );\n*\n* binary3d( [ x, y, z ], shape, add );\n*\n* console.log( z );\n* // => [ [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ], [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ] ]\n*/\nfunction binary3d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar x0;\n\tvar x1;\n\tvar y0;\n\tvar y1;\n\tvar z0;\n\tvar z1;\n\tvar x;\n\tvar y;\n\tvar z;\n\n\tS0 = shape[ 2 ];\n\tS1 = shape[ 1 ];\n\tS2 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\tx1 = x[ i2 ];\n\t\ty1 = y[ i2 ];\n\t\tz1 = z[ i2 ];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\tx0 = x1[ i1 ];\n\t\t\ty0 = y1[ i1 ];\n\t\t\tz0 = z1[ i1 ];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\tz0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ] );\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = binary3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a binary callback to elements in two three-dimensional nested input arrays and assign results to elements in a three-dimensional nested output array.\n*\n* @module @stdlib/array/base/binary3d\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n* var binary3d = require( '@stdlib/array/base/binary3d' );\n*\n* var shape = [ 2, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = ones3d( shape );\n* var z = zeros3d( shape );\n*\n* binary3d( [ x, y, z ], shape, add );\n*\n* console.log( z );\n* // => [ [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ], [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a binary callback to elements in two four-dimensional nested input arrays and assigns results to elements in a four-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing two input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - binary callback\n* @returns {void}\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n*\n* var shape = [ 1, 2, 2, 2 ];\n*\n* var x = ones4d( shape );\n* var y = ones4d( shape );\n* var z = zeros4d( shape );\n*\n* binary4d( [ x, y, z ], shape, add );\n*\n* console.log( z );\n* // => [ [ [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ], [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ] ] ]\n*/\nfunction binary4d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar x0;\n\tvar x1;\n\tvar x2;\n\tvar y0;\n\tvar y1;\n\tvar y2;\n\tvar z0;\n\tvar z1;\n\tvar z2;\n\tvar x;\n\tvar y;\n\tvar z;\n\n\tS0 = shape[ 3 ];\n\tS1 = shape[ 2 ];\n\tS2 = shape[ 1 ];\n\tS3 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\tx2 = x[ i3 ];\n\t\ty2 = y[ i3 ];\n\t\tz2 = z[ i3 ];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\tx1 = x2[ i2 ];\n\t\t\ty1 = y2[ i2 ];\n\t\t\tz1 = z2[ i2 ];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tx0 = x1[ i1 ];\n\t\t\t\ty0 = y1[ i1 ];\n\t\t\t\tz0 = z1[ i1 ];\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\tz0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = binary4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a binary callback to elements in two four-dimensional nested input arrays and assign results to elements in a four-dimensional nested output array.\n*\n* @module @stdlib/array/base/binary4d\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n* var binary4d = require( '@stdlib/array/base/binary4d' );\n*\n* var shape = [ 1, 2, 2, 2 ];\n*\n* var x = ones4d( shape );\n* var y = ones4d( shape );\n* var z = zeros4d( shape );\n*\n* binary4d( [ x, y, z ], shape, add );\n*\n* console.log( z );\n* // => [ [ [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ], [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a binary callback to elements in two five-dimensional nested input arrays and assigns results to elements in a five-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing two input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - binary callback\n* @returns {void}\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n*\n* var shape = [ 1, 1, 2, 2, 2 ];\n*\n* var x = ones5d( shape );\n* var y = ones5d( shape );\n* var z = zeros5d( shape );\n*\n* binary5d( [ x, y, z ], shape, add );\n*\n* console.log( z );\n* // => [ [ [ [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ], [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ] ] ] ]\n*/\nfunction binary5d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar x0;\n\tvar x1;\n\tvar x2;\n\tvar x3;\n\tvar y0;\n\tvar y1;\n\tvar y2;\n\tvar y3;\n\tvar z0;\n\tvar z1;\n\tvar z2;\n\tvar z3;\n\tvar x;\n\tvar y;\n\tvar z;\n\n\tS0 = shape[ 4 ];\n\tS1 = shape[ 3 ];\n\tS2 = shape[ 2 ];\n\tS3 = shape[ 1 ];\n\tS4 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 || S4 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\tx3 = x[ i4 ];\n\t\ty3 = y[ i4 ];\n\t\tz3 = z[ i4 ];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\tx2 = x3[ i3 ];\n\t\t\ty2 = y3[ i3 ];\n\t\t\tz2 = z3[ i3 ];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\tx1 = x2[ i2 ];\n\t\t\t\ty1 = y2[ i2 ];\n\t\t\t\tz1 = z2[ i2 ];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\tx0 = x1[ i1 ];\n\t\t\t\t\ty0 = y1[ i1 ];\n\t\t\t\t\tz0 = z1[ i1 ];\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\tz0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = binary5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a binary callback to elements in two five-dimensional nested input arrays and assign results to elements in a five-dimensional nested output array.\n*\n* @module @stdlib/array/base/binary5d\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n* var binary5d = require( '@stdlib/array/base/binary5d' );\n*\n* var shape = [ 1, 1, 2, 2, 2 ];\n*\n* var x = ones5d( shape );\n* var y = ones5d( shape );\n* var z = zeros5d( shape );\n*\n* binary5d( [ x, y, z ], shape, add );\n*\n* console.log( z );\n* // => [ [ [ [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ], [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// FUNCTIONS //\n\n/**\n* Recursively applies a binary callback.\n*\n* @private\n* @param {ArrayLikeObject} x - input array\n* @param {ArrayLikeObject} y - input array\n* @param {ArrayLikeObject} z - output array\n* @param {NonNegativeInteger} ndims - number of dimensions\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {NonNegativeInteger} dim - dimension index\n* @param {Callback} fcn - binary callback\n* @returns {void}\n*/\nfunction recurse( x, y, z, ndims, shape, dim, fcn ) {\n\tvar S;\n\tvar d;\n\tvar i;\n\n\tS = shape[ dim ];\n\n\t// Check whether we've reached the innermost dimension:\n\td = dim + 1;\n\n\tif ( d === ndims ) {\n\t\t// Apply the provided callback...\n\t\tfor ( i = 0; i < S; i++ ) {\n\t\t\tz[ i ] = fcn( x[ i ], y[ i ] );\n\t\t}\n\t\treturn;\n\t}\n\t// Continue recursing into the nested arrays...\n\tfor ( i = 0; i < S; i++ ) {\n\t\trecurse( x[ i ], y[ i ], z[ i ], ndims, shape, d, fcn );\n\t}\n}\n\n\n// MAIN //\n\n/**\n* Applies a binary callback to elements in two n-dimensional nested input arrays and assigns results to elements in an n-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject} arrays - array-like object containing two input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - binary callback\n* @returns {void}\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add' );\n* var onesnd = require( '@stdlib/array/base/onesnd' );\n* var zerosnd = require( '@stdlib/array/base/zerosnd' );\n*\n* var shape = [ 2, 2 ];\n*\n* var x = onesnd( shape );\n* var y = onesnd( shape );\n* var z = zerosnd( shape );\n*\n* binarynd( [ x, y, z ], shape, add );\n*\n* console.log( z );\n* // => [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ]\n*/\nfunction binarynd( arrays, shape, fcn ) {\n\treturn recurse( arrays[ 0 ], arrays[ 1 ], arrays[ 2 ], shape.length, shape, 0, fcn ); // eslint-disable-line max-len\n}\n\n\n// EXPORTS //\n\nmodule.exports = binarynd;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a binary callback to elements in an n-dimensional nested input array and assign results to elements in an n-dimensional nested output array.\n*\n* @module @stdlib/array/base/binarynd\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add' );\n* var onesnd = require( '@stdlib/array/base/onesnd' );\n* var zerosnd = require( '@stdlib/array/base/zerosnd' );\n* var binarynd = require( '@stdlib/array/base/binarynd' );\n*\n* var shape = [ 2, 2 ];\n*\n* var x = onesnd( shape );\n* var y = onesnd( shape );\n* var z = zerosnd( shape );\n*\n* binarynd( [ x, y, z ], shape, add );\n*\n* console.log( z );\n* // => [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Copies the elements of an indexed array-like object to a new \"generic\" array.\n*\n* @param {Collection} x - input array\n* @returns {Array} output array\n*\n* @example\n* var out = copy( [ 1, 2, 3 ] );\n* // returns [ 1, 2, 3 ]\n*/\nfunction copy( x ) {\n\tvar out;\n\tvar len;\n\tvar i;\n\n\tlen = x.length;\n\tout = [];\n\tfor ( i = 0; i < len; i++ ) {\n\t\tout.push( x[ i ] ); // use `Array#push` to ensure \"fast\" elements\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = copy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Copy the elements of an indexed array-like object to a new \"generic\" array.\n*\n* @module @stdlib/array/base/copy-indexed\n*\n* @example\n* var copy = require( '@stdlib/array/base/copy-indexed' );\n*\n* var out = copy( [ 1, 2, 3 ] );\n* // returns [ 1, 2, 3 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Returns a filled \"generic\" array.\n*\n* @param {*} value - fill value\n* @param {NonNegativeInteger} len - array length\n* @returns {Array} filled array\n*\n* @example\n* var out = filled( 0.0, 3 );\n* // returns [ 0.0, 0.0, 0.0 ]\n*\n* @example\n* var out = filled( 'beep', 3 );\n* // returns [ 'beep', 'beep', 'beep' ]\n*/\nfunction filled( value, len ) {\n\tvar arr;\n\tvar i;\n\n\t// Manually push elements in order to ensure \"fast\" elements...\n\tarr = [];\n\tfor ( i = 0; i < len; i++ ) {\n\t\tarr.push( value );\n\t}\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = filled;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled \"generic\" array.\n*\n* @module @stdlib/array/base/filled\n*\n* @example\n* var filled = require( '@stdlib/array/base/filled' );\n*\n* var out = filled( 0.0, 3 );\n* // returns [ 0.0, 0.0, 0.0 ]\n*\n* @example\n* var filled = require( '@stdlib/array/base/filled' );\n*\n* var out = filled( 'beep', 3 );\n* // returns [ 'beep', 'beep', 'beep' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled = require( './../../../base/filled' );\n\n\n// MAIN //\n\n/**\n* Returns a zero-filled \"generic\" array.\n*\n* @param {NonNegativeInteger} len - array length\n* @returns {Array} output array\n*\n* @example\n* var out = zeros( 3 );\n* // returns [ 0.0, 0.0, 0.0 ]\n*/\nfunction zeros( len ) {\n\treturn filled( 0.0, len );\n}\n\n\n// EXPORTS //\n\nmodule.exports = zeros;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a zero-filled \"generic\" array.\n*\n* @module @stdlib/array/base/zeros\n*\n* @example\n* var zeros = require( '@stdlib/array/base/zeros' );\n*\n* var out = zeros( 3 );\n* // returns [ 0.0, 0.0, 0.0 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar copy = require( './../../../base/copy-indexed' );\nvar zeros = require( './../../../base/zeros' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Broadcasts an array to a specified shape.\n*\n* @param {Collection} x - input array\n* @param {NonNegativeIntegerArray} inShape - input array shape\n* @param {NonNegativeIntegerArray} outShape - output array shape\n* @throws {Error} input array cannot have more dimensions than the desired shape\n* @throws {Error} input array dimension sizes must be `1` or equal to the corresponding dimension in the provided output shape\n* @throws {Error} input array and desired shape must be broadcast compatible\n* @returns {Object} broadcast object\n*\n* @example\n* var x = [ 1, 2 ];\n*\n* var out = broadcastArray( x, [ 2 ], [ 2, 2 ] );\n* // returns {...}\n*\n* var shape = out.shape;\n* // returns [ 2, 2 ]\n*\n* var strides = out.strides;\n* // returns [ 0, 1 ]\n*\n* var ref = out.ref;\n* // returns [ 1, 2 ]\n*\n* var bool = ( x === ref );\n* // returns true\n*\n* var data = out.data;\n* // returns [ [ 1, 2 ] ]\n*\n* @example\n* var x = [ 1, 2 ];\n*\n* var out = broadcastArray( x, [ 2 ], [ 2, 1, 2 ] );\n* // returns {...}\n*\n* var data = out.data;\n* // returns [ [ [ 1, 2 ] ] ]\n*\n* var strides = out.strides;\n* // returns [ 0, 0, 1 ]\n*\n* @example\n* var x = [ [ 1 ], [ 2 ] ];\n*\n* var out = broadcastArray( x, [ 2, 1 ], [ 3, 2, 2 ] );\n* // returns {...}\n*\n* var data = out.data;\n* // returns [ [ [ 1 ], [ 2 ] ] ]\n*\n* var strides = out.strides;\n* // returns [ 0, 1, 0 ]\n*/\nfunction broadcastArray( x, inShape, outShape ) {\n\tvar data;\n\tvar dim;\n\tvar st;\n\tvar N;\n\tvar M;\n\tvar d;\n\tvar i;\n\tvar j;\n\n\tN = outShape.length;\n\tM = inShape.length;\n\tif ( N < M ) {\n\t\tthrow new Error( 'invalid argument. Cannot broadcast an array to a shape having fewer dimensions. Arrays can only be broadcasted to shapes having the same or more dimensions.' );\n\t}\n\t// Prepend additional dimensions...\n\tdata = x;\n\tfor ( i = M; i < N; i++ ) {\n\t\tdata = [ data ];\n\t}\n\n\t// Initialize a strides array:\n\tst = zeros( N );\n\n\t// Determine the output array strides...\n\tfor ( i = N-1; i >= 0; i-- ) {\n\t\tj = M - N + i;\n\t\tif ( j < 0 ) {\n\t\t\t// Prepended singleton dimension; stride is zero...\n\t\t\tcontinue;\n\t\t}\n\t\td = inShape[ j ];\n\t\tdim = outShape[ i ];\n\t\tif ( dim !== 0 && dim < d ) {\n\t\t\tthrow new Error( format( 'invalid argument. Input array cannot be broadcast to the specified shape, as the specified shape has a dimension whose size is less than the size of the corresponding dimension in the input array. Array shape: (%s). Desired shape: (%s). Dimension: %u.', copy( inShape ).join( ', ' ), copy( outShape ).join( ', ' ), i ) );\n\t\t}\n\t\tif ( d === dim ) {\n\t\t\t// As the dimension sizes are equal, the stride is one, meaning that each element in the array should be iterated over as normal...\n\t\t\tst[ i ] = 1;\n\t\t} else if ( d === 1 ) {\n\t\t\t// In order to broadcast a dimension, we set the stride for that dimension to zero...\n\t\t\tst[ i ] = 0;\n\t\t} else {\n\t\t\t// At this point, we know that `dim > d` and that `d` does not equal `1` (e.g., `dim=3` and `d=2`); in which case, the shapes are considered incompatible (even for desired shapes which are multiples of array dimensions, as might be desired when \"tiling\" an array; e.g., `dim=4` and `d=2`)...\n\t\t\tthrow new Error( format( 'invalid argument. Input array and the specified shape are broadcast incompatible. Array shape: (%s). Desired shape: (%s). Dimension: %u.', copy( inShape ).join( ', ' ), copy( outShape ).join( ', ' ), i ) );\n\t\t}\n\t}\n\t// Return broadcast results:\n\treturn {\n\t\t'ref': x,                  // reference to the original input array\n\t\t'data': data,              // broadcasted array\n\t\t'shape': copy( outShape ), // copy in order to prevent mutation\n\t\t'strides': st\n\t};\n}\n\n\n// EXPORTS //\n\nmodule.exports = broadcastArray;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Broadcast an array to a specified shape.\n*\n* @module @stdlib/array/base/broadcast-array\n*\n* @example\n* var broadcastArray = require( '@stdlib/array/base/broadcast-array' );\n*\n* var x = [ 1, 2 ];\n*\n* var out = broadcastArray( x, [ 2 ], [ 2, 2 ] );\n* // returns {...}\n*\n* var shape = out.shape;\n* // returns [ 2, 2 ]\n*\n* var strides = out.strides;\n* // returns [ 0, 1 ]\n*\n* var ref = out.ref;\n* // returns [ 1, 2 ]\n*\n* var bool = ( x === ref );\n* // returns true\n*\n* var data = out.data;\n* // returns [ [ 1, 2 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar broadcastArray = require( './../../../base/broadcast-array' );\n\n\n// MAIN //\n\n/**\n* Applies a binary callback to elements in two broadcasted input arrays and assigns results to elements in a two-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing two input nested arrays and one output nested array\n* @param {ArrayLikeObject<NonNegativeIntegerArray>} shapes - array shapes\n* @param {Callback} fcn - binary callback\n* @returns {void}\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n*\n* var shapes = [\n*     [ 1, 2 ],\n*     [ 2, 1 ],\n*     [ 2, 2 ]\n* ];\n*\n* var x = ones2d( shapes[ 0 ] );\n* var y = ones2d( shapes[ 1 ] );\n* var z = zeros2d( shapes[ 2 ] );\n*\n* bbinary2d( [ x, y, z ], shapes, add );\n*\n* console.log( z );\n* // => [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ]\n*/\nfunction bbinary2d( arrays, shapes, fcn ) {\n\tvar dx0;\n\tvar dx1;\n\tvar dy0;\n\tvar dy1;\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar j0;\n\tvar j1;\n\tvar k0;\n\tvar k1;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar sh;\n\tvar st;\n\tvar o;\n\tvar x;\n\tvar y;\n\tvar z;\n\n\tsh = shapes[ 2 ];\n\tS0 = sh[ 1 ];\n\tS1 = sh[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 ) {\n\t\treturn;\n\t}\n\to = broadcastArray( arrays[ 0 ], shapes[ 0 ], sh );\n\tx = o.data;\n\tst = o.strides;\n\tdx0 = st[ 1 ];\n\tdx1 = st[ 0 ];\n\n\to = broadcastArray( arrays[ 1 ], shapes[ 1 ], sh );\n\ty = o.data;\n\tst = o.strides;\n\tdy0 = st[ 1 ];\n\tdy1 = st[ 0 ];\n\n\tz = arrays[ 2 ];\n\n\tj1 = 0;\n\tk1 = 0;\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tj0 = 0;\n\t\tk0 = 0;\n\t\tx0 = x[ j1 ];\n\t\ty0 = y[ k1 ];\n\t\tz0 = z[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tz0[ i0 ] = fcn( x0[ j0 ], y0[ k0 ] );\n\t\t\tj0 += dx0;\n\t\t\tk0 += dy0;\n\t\t}\n\t\tj1 += dx1;\n\t\tk1 += dy1;\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = bbinary2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a binary callback to elements in two broadcasted input arrays and assign results to elements in a two-dimensional nested output array.\n*\n* @module @stdlib/array/base/broadcasted-binary2d\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n* var bbinary2d = require( '@stdlib/array/base/broadcasted-binary2d' );\n*\n* var shapes = [\n*     [ 1, 2 ],\n*     [ 2, 1 ],\n*     [ 2, 2 ]\n* ];\n*\n* var x = ones2d( shapes[ 0 ] );\n* var y = ones2d( shapes[ 1 ] );\n* var z = zeros2d( shapes[ 2 ] );\n*\n* bbinary2d( [ x, y, z ], shapes, add );\n*\n* console.log( z );\n* // => [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar broadcastArray = require( './../../../base/broadcast-array' );\n\n\n// MAIN //\n\n/**\n* Applies a binary callback to elements in two broadcasted input arrays and assigns results to elements in a three-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Array>} arrays - array-like object containing two input nested arrays and one output nested array\n* @param {ArrayLikeObject<NonNegativeIntegerArray>} shapes - array shapes\n* @param {Callback} fcn - binary callback\n* @returns {void}\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n*\n* var shapes = [\n*     [ 1, 1, 2 ],\n*     [ 2, 1, 1 ],\n*     [ 2, 2, 2 ]\n* ];\n*\n* var x = ones3d( shapes[ 0 ] );\n* var y = ones3d( shapes[ 1 ] );\n* var z = zeros3d( shapes[ 2 ] );\n*\n* bbinary3d( [ x, y, z ], shapes, add );\n*\n* console.log( z );\n* // => [ [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ], [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ] ]\n*/\nfunction bbinary3d( arrays, shapes, fcn ) {\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dy0;\n\tvar dy1;\n\tvar dy2;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar k0;\n\tvar k1;\n\tvar k2;\n\tvar x0;\n\tvar x1;\n\tvar y0;\n\tvar y1;\n\tvar z0;\n\tvar z1;\n\tvar sh;\n\tvar st;\n\tvar o;\n\tvar x;\n\tvar y;\n\tvar z;\n\n\tsh = shapes[ 2 ];\n\tS0 = sh[ 2 ];\n\tS1 = sh[ 1 ];\n\tS2 = sh[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 ) {\n\t\treturn;\n\t}\n\to = broadcastArray( arrays[ 0 ], shapes[ 0 ], sh );\n\tx = o.data;\n\tst = o.strides;\n\tdx0 = st[ 2 ];\n\tdx1 = st[ 1 ];\n\tdx2 = st[ 0 ];\n\n\to = broadcastArray( arrays[ 1 ], shapes[ 1 ], sh );\n\ty = o.data;\n\tst = o.strides;\n\tdy0 = st[ 2 ];\n\tdy1 = st[ 1 ];\n\tdy2 = st[ 0 ];\n\n\tz = arrays[ 2 ];\n\n\tj2 = 0;\n\tk2 = 0;\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\tj1 = 0;\n\t\tk1 = 0;\n\t\tx1 = x[ j2 ];\n\t\ty1 = y[ k2 ];\n\t\tz1 = z[ i2 ];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\tj0 = 0;\n\t\t\tk0 = 0;\n\t\t\tx0 = x1[ j1 ];\n\t\t\ty0 = y1[ k1 ];\n\t\t\tz0 = z1[ i1 ];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\tz0[ i0 ] = fcn( x0[ j0 ], y0[ k0 ] );\n\t\t\t\tj0 += dx0;\n\t\t\t\tk0 += dy0;\n\t\t\t}\n\t\t\tj1 += dx1;\n\t\t\tk1 += dy1;\n\t\t}\n\t\tj2 += dx2;\n\t\tk2 += dy2;\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = bbinary3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a binary callback to elements in two broadcasted input arrays and assign results to elements in a three-dimensional nested output array.\n*\n* @module @stdlib/array/base/broadcasted-binary3d\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n* var bbinary3d = require( '@stdlib/array/base/broadcasted-binary3d' );\n*\n* var shapes = [\n*     [ 1, 1, 2 ],\n*     [ 2, 1, 1 ],\n*     [ 2, 2, 2 ]\n* ];\n*\n* var x = ones3d( shapes[ 0 ] );\n* var y = ones3d( shapes[ 1 ] );\n* var z = zeros3d( shapes[ 2 ] );\n*\n* bbinary3d( [ x, y, z ], shapes, add );\n*\n* console.log( z );\n* // => [ [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ], [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar broadcastArray = require( './../../../base/broadcast-array' );\n\n\n// MAIN //\n\n/**\n* Applies a binary callback to elements in two broadcasted input arrays and assigns results to elements in a four-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Array>} arrays - array-like object containing two input nested arrays and one output nested array\n* @param {ArrayLikeObject<NonNegativeIntegerArray>} shapes - array shapes\n* @param {Callback} fcn - binary callback\n* @returns {void}\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n*\n* var shapes = [\n*     [ 1, 1, 1, 2 ],\n*     [ 1, 2, 1, 1 ],\n*     [ 1, 2, 2, 2 ]\n* ];\n*\n* var x = ones4d( shapes[ 0 ] );\n* var y = ones4d( shapes[ 1 ] );\n* var z = zeros4d( shapes[ 2 ] );\n*\n* bbinary4d( [ x, y, z ], shapes, add );\n*\n* console.log( z );\n* // => [ [ [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ], [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ] ] ]\n*/\nfunction bbinary4d( arrays, shapes, fcn ) {\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dy0;\n\tvar dy1;\n\tvar dy2;\n\tvar dy3;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar k0;\n\tvar k1;\n\tvar k2;\n\tvar k3;\n\tvar x0;\n\tvar x1;\n\tvar x2;\n\tvar y0;\n\tvar y1;\n\tvar y2;\n\tvar z0;\n\tvar z1;\n\tvar z2;\n\tvar sh;\n\tvar st;\n\tvar o;\n\tvar x;\n\tvar y;\n\tvar z;\n\n\tsh = shapes[ 2 ];\n\tS0 = sh[ 3 ];\n\tS1 = sh[ 2 ];\n\tS2 = sh[ 1 ];\n\tS3 = sh[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 ) {\n\t\treturn;\n\t}\n\to = broadcastArray( arrays[ 0 ], shapes[ 0 ], sh );\n\tx = o.data;\n\tst = o.strides;\n\tdx0 = st[ 3 ];\n\tdx1 = st[ 2 ];\n\tdx2 = st[ 1 ];\n\tdx3 = st[ 0 ];\n\n\to = broadcastArray( arrays[ 1 ], shapes[ 1 ], sh );\n\ty = o.data;\n\tst = o.strides;\n\tdy0 = st[ 3 ];\n\tdy1 = st[ 2 ];\n\tdy2 = st[ 1 ];\n\tdy3 = st[ 0 ];\n\n\tz = arrays[ 2 ];\n\n\tj3 = 0;\n\tk3 = 0;\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\tj2 = 0;\n\t\tk2 = 0;\n\t\tx2 = x[ j3 ];\n\t\ty2 = y[ k3 ];\n\t\tz2 = z[ i3 ];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\tj1 = 0;\n\t\t\tk1 = 0;\n\t\t\tx1 = x2[ j2 ];\n\t\t\ty1 = y2[ k2 ];\n\t\t\tz1 = z2[ i2 ];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tj0 = 0;\n\t\t\t\tk0 = 0;\n\t\t\t\tx0 = x1[ j1 ];\n\t\t\t\ty0 = y1[ k1 ];\n\t\t\t\tz0 = z1[ i1 ];\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\tz0[ i0 ] = fcn( x0[ j0 ], y0[ k0 ] );\n\t\t\t\t\tj0 += dx0;\n\t\t\t\t\tk0 += dy0;\n\t\t\t\t}\n\t\t\t\tj1 += dx1;\n\t\t\t\tk1 += dy1;\n\t\t\t}\n\t\t\tj2 += dx2;\n\t\t\tk2 += dy2;\n\t\t}\n\t\tj3 += dx3;\n\t\tk3 += dy3;\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = bbinary4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a binary callback to elements in two broadcasted input arrays and assign results to elements in a four-dimensional nested output array.\n*\n* @module @stdlib/array/base/broadcasted-binary4d\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n* var bbinary4d = require( '@stdlib/array/base/broadcasted-binary4d' );\n*\n* var shapes = [\n*     [ 1, 1, 1, 2 ],\n*     [ 1, 2, 1, 1 ],\n*     [ 1, 2, 2, 2 ]\n* ];\n*\n* var x = ones4d( shapes[ 0 ] );\n* var y = ones4d( shapes[ 1 ] );\n* var z = zeros4d( shapes[ 2 ] );\n*\n* bbinary4d( [ x, y, z ], shapes, add );\n*\n* console.log( z );\n* // => [ [ [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ], [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar broadcastArray = require( './../../../base/broadcast-array' );\n\n\n// MAIN //\n\n/**\n* Applies a binary callback to elements in two broadcasted input arrays and assigns results to elements in a five-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Array>} arrays - array-like object containing two input nested arrays and one output nested array\n* @param {ArrayLikeObject<NonNegativeIntegerArray>} shapes - array shapes\n* @param {Callback} fcn - binary callback\n* @returns {void}\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n*\n* var shapes = [\n*     [ 1, 1, 1, 1, 2 ],\n*     [ 1, 1, 2, 1, 1 ],\n*     [ 1, 1, 2, 2, 2 ]\n* ];\n*\n* var x = ones5d( shapes[ 0 ] );\n* var y = ones5d( shapes[ 1 ] );\n* var z = zeros5d( shapes[ 2 ] );\n*\n* bbinary5d( [ x, y, z ], shapes, add );\n*\n* console.log( z );\n* // => [ [ [ [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ], [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ] ] ] ]\n*/\nfunction bbinary5d( arrays, shapes, fcn ) { // eslint-disable-line max-statements\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dy0;\n\tvar dy1;\n\tvar dy2;\n\tvar dy3;\n\tvar dy4;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar k0;\n\tvar k1;\n\tvar k2;\n\tvar k3;\n\tvar k4;\n\tvar x0;\n\tvar x1;\n\tvar x2;\n\tvar x3;\n\tvar y0;\n\tvar y1;\n\tvar y2;\n\tvar y3;\n\tvar z0;\n\tvar z1;\n\tvar z2;\n\tvar z3;\n\tvar sh;\n\tvar st;\n\tvar o;\n\tvar x;\n\tvar y;\n\tvar z;\n\n\tsh = shapes[ 2 ];\n\tS0 = sh[ 4 ];\n\tS1 = sh[ 3 ];\n\tS2 = sh[ 2 ];\n\tS3 = sh[ 1 ];\n\tS4 = sh[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 || S4 <= 0 ) {\n\t\treturn;\n\t}\n\to = broadcastArray( arrays[ 0 ], shapes[ 0 ], sh );\n\tx = o.data;\n\tst = o.strides;\n\tdx0 = st[ 4 ];\n\tdx1 = st[ 3 ];\n\tdx2 = st[ 2 ];\n\tdx3 = st[ 1 ];\n\tdx4 = st[ 0 ];\n\n\to = broadcastArray( arrays[ 1 ], shapes[ 1 ], sh );\n\ty = o.data;\n\tst = o.strides;\n\tdy0 = st[ 4 ];\n\tdy1 = st[ 3 ];\n\tdy2 = st[ 2 ];\n\tdy3 = st[ 1 ];\n\tdy4 = st[ 0 ];\n\n\tz = arrays[ 2 ];\n\n\tj4 = 0;\n\tk4 = 0;\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\tj3 = 0;\n\t\tk3 = 0;\n\t\tx3 = x[ j4 ];\n\t\ty3 = y[ k4 ];\n\t\tz3 = z[ i4 ];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\tj2 = 0;\n\t\t\tk2 = 0;\n\t\t\tx2 = x3[ j3 ];\n\t\t\ty2 = y3[ k3 ];\n\t\t\tz2 = z3[ i3 ];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\tj1 = 0;\n\t\t\t\tk1 = 0;\n\t\t\t\tx1 = x2[ j2 ];\n\t\t\t\ty1 = y2[ k2 ];\n\t\t\t\tz1 = z2[ i2 ];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\tj0 = 0;\n\t\t\t\t\tk0 = 0;\n\t\t\t\t\tx0 = x1[ j1 ];\n\t\t\t\t\ty0 = y1[ k1 ];\n\t\t\t\t\tz0 = z1[ i1 ];\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\tz0[ i0 ] = fcn( x0[ j0 ], y0[ k0 ] );\n\t\t\t\t\t\tj0 += dx0;\n\t\t\t\t\t\tk0 += dy0;\n\t\t\t\t\t}\n\t\t\t\t\tj1 += dx1;\n\t\t\t\t\tk1 += dy1;\n\t\t\t\t}\n\t\t\t\tj2 += dx2;\n\t\t\t\tk2 += dy2;\n\t\t\t}\n\t\t\tj3 += dx3;\n\t\t\tk3 += dy3;\n\t\t}\n\t\tj4 += dx4;\n\t\tk4 += dy4;\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = bbinary5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a binary callback to elements in two broadcasted input arrays and assign results to elements in a five-dimensional nested output array.\n*\n* @module @stdlib/array/base/broadcasted-binary5d\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n* var bbinary5d = require( '@stdlib/array/base/broadcasted-binary5d' );\n*\n* var shapes = [\n*     [ 1, 1, 1, 1, 2 ],\n*     [ 1, 1, 2, 1, 1 ],\n*     [ 1, 1, 2, 2, 2 ]\n* ];\n*\n* var x = ones5d( shapes[ 0 ] );\n* var y = ones5d( shapes[ 1 ] );\n* var z = zeros5d( shapes[ 2 ] );\n*\n* bbinary5d( [ x, y, z ], shapes, add );\n*\n* console.log( z );\n* // => [ [ [ [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ], [ [ 2.0, 2.0 ], [ 2.0, 2.0 ] ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar broadcastArray = require( './../../../base/broadcast-array' );\n\n\n// MAIN //\n\n/**\n* Applies a quaternary callback to elements in four broadcasted input arrays and assigns results to elements in a two-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing four input nested arrays and one output nested array\n* @param {ArrayLikeObject<NonNegativeIntegerArray>} shapes - array shapes\n* @param {Callback} fcn - quaternary callback\n* @returns {void}\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add4' );\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n*\n* var shapes = [\n*     [ 1, 2 ],\n*     [ 2, 1 ],\n*     [ 1, 1 ],\n*     [ 2, 2 ],\n*     [ 2, 2 ]\n* ];\n*\n* var x = ones2d( shapes[ 0 ] );\n* var y = ones2d( shapes[ 1 ] );\n* var z = ones2d( shapes[ 2 ] );\n* var w = ones2d( shapes[ 3 ] );\n* var out = zeros2d( shapes[ 4 ] );\n*\n* bquaternary2d( [ x, y, z, w, out ], shapes, add );\n*\n* console.log( out );\n* // => [ [ 4.0, 4.0 ], [ 4.0, 4.0 ] ]\n*/\nfunction bquaternary2d( arrays, shapes, fcn ) {\n\tvar dx0;\n\tvar dx1;\n\tvar dy0;\n\tvar dy1;\n\tvar dz0;\n\tvar dz1;\n\tvar dw0;\n\tvar dw1;\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar j0;\n\tvar j1;\n\tvar k0;\n\tvar k1;\n\tvar m0;\n\tvar m1;\n\tvar n0;\n\tvar n1;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar u0;\n\tvar sh;\n\tvar st;\n\tvar o;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\tvar u;\n\n\tsh = shapes[ 4 ];\n\tS0 = sh[ 1 ];\n\tS1 = sh[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 ) {\n\t\treturn;\n\t}\n\to = broadcastArray( arrays[ 0 ], shapes[ 0 ], sh );\n\tx = o.data;\n\tst = o.strides;\n\tdx0 = st[ 1 ];\n\tdx1 = st[ 0 ];\n\n\to = broadcastArray( arrays[ 1 ], shapes[ 1 ], sh );\n\ty = o.data;\n\tst = o.strides;\n\tdy0 = st[ 1 ];\n\tdy1 = st[ 0 ];\n\n\to = broadcastArray( arrays[ 2 ], shapes[ 2 ], sh );\n\tz = o.data;\n\tst = o.strides;\n\tdz0 = st[ 1 ];\n\tdz1 = st[ 0 ];\n\n\to = broadcastArray( arrays[ 3 ], shapes[ 3 ], sh );\n\tw = o.data;\n\tst = o.strides;\n\tdw0 = st[ 1 ];\n\tdw1 = st[ 0 ];\n\n\tu = arrays[ 4 ];\n\n\tj1 = 0;\n\tk1 = 0;\n\tm1 = 0;\n\tn1 = 0;\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tj0 = 0;\n\t\tk0 = 0;\n\t\tm0 = 0;\n\t\tn0 = 0;\n\t\tx0 = x[ j1 ];\n\t\ty0 = y[ k1 ];\n\t\tz0 = z[ m1 ];\n\t\tw0 = w[ n1 ];\n\t\tu0 = u[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tu0[ i0 ] = fcn( x0[ j0 ], y0[ k0 ], z0[ m0 ], w0[ n0 ] );\n\t\t\tj0 += dx0;\n\t\t\tk0 += dy0;\n\t\t\tm0 += dz0;\n\t\t\tn0 += dw0;\n\t\t}\n\t\tj1 += dx1;\n\t\tk1 += dy1;\n\t\tm1 += dz1;\n\t\tn1 += dw1;\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = bquaternary2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a quaternary callback to elements in four broadcasted input arrays and assign results to elements in a two-dimensional nested output array.\n*\n* @module @stdlib/array/base/broadcasted-quaternary2d\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add4' );\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var bquaternary2d = require( '@stdlib/array/base/broadcasted-quaternary2d' );\n*\n* var shapes = [\n*     [ 1, 2 ],\n*     [ 2, 1 ],\n*     [ 1, 1 ],\n*     [ 2, 2 ],\n*     [ 2, 2 ]\n* ];\n*\n* var x = ones2d( shapes[ 0 ] );\n* var y = ones2d( shapes[ 1 ] );\n* var z = ones2d( shapes[ 2 ] );\n* var w = ones2d( shapes[ 3 ] );\n* var out = zeros2d( shapes[ 4 ] );\n*\n* bquaternary2d( [ x, y, z, w, out ], shapes, add );\n*\n* console.log( out );\n* // => [ [ 4.0, 4.0 ], [ 4.0, 4.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar broadcastArray = require( './../../../base/broadcast-array' );\n\n\n// MAIN //\n\n/**\n* Applies a quinary callback to elements in five broadcasted input arrays and assigns results to elements in a two-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing five input nested arrays and one output nested array\n* @param {ArrayLikeObject<NonNegativeIntegerArray>} shapes - array shapes\n* @param {Callback} fcn - quinary callback\n* @returns {void}\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n*\n* function add( x, y, z, w, v ) {\n*     return x + y + z + w + v;\n* }\n*\n* var shapes = [\n*     [ 1, 2 ],\n*     [ 2, 1 ],\n*     [ 1, 1 ],\n*     [ 2, 2 ],\n*     [ 1, 1 ],\n*     [ 2, 2 ]\n* ];\n*\n* var x = ones2d( shapes[ 0 ] );\n* var y = ones2d( shapes[ 1 ] );\n* var z = ones2d( shapes[ 2 ] );\n* var w = ones2d( shapes[ 3 ] );\n* var v = ones2d( shapes[ 4 ] );\n* var out = zeros2d( shapes[ 5 ] );\n*\n* bquinary2d( [ x, y, z, w, v, out ], shapes, add );\n*\n* console.log( out );\n* // => [ [ 5.0, 5.0 ], [ 5.0, 5.0 ] ]\n*/\nfunction bquinary2d( arrays, shapes, fcn ) {\n\tvar dx0;\n\tvar dx1;\n\tvar dy0;\n\tvar dy1;\n\tvar dz0;\n\tvar dz1;\n\tvar dw0;\n\tvar dw1;\n\tvar du0;\n\tvar du1;\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar j0;\n\tvar j1;\n\tvar k0;\n\tvar k1;\n\tvar m0;\n\tvar m1;\n\tvar n0;\n\tvar n1;\n\tvar p0;\n\tvar p1;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar u0;\n\tvar v0;\n\tvar sh;\n\tvar st;\n\tvar o;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\tvar u;\n\tvar v;\n\n\tsh = shapes[ 5 ];\n\tS0 = sh[ 1 ];\n\tS1 = sh[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 ) {\n\t\treturn;\n\t}\n\to = broadcastArray( arrays[ 0 ], shapes[ 0 ], sh );\n\tx = o.data;\n\tst = o.strides;\n\tdx0 = st[ 1 ];\n\tdx1 = st[ 0 ];\n\n\to = broadcastArray( arrays[ 1 ], shapes[ 1 ], sh );\n\ty = o.data;\n\tst = o.strides;\n\tdy0 = st[ 1 ];\n\tdy1 = st[ 0 ];\n\n\to = broadcastArray( arrays[ 2 ], shapes[ 2 ], sh );\n\tz = o.data;\n\tst = o.strides;\n\tdz0 = st[ 1 ];\n\tdz1 = st[ 0 ];\n\n\to = broadcastArray( arrays[ 3 ], shapes[ 3 ], sh );\n\tw = o.data;\n\tst = o.strides;\n\tdw0 = st[ 1 ];\n\tdw1 = st[ 0 ];\n\n\to = broadcastArray( arrays[ 4 ], shapes[ 4 ], sh );\n\tu = o.data;\n\tst = o.strides;\n\tdu0 = st[ 1 ];\n\tdu1 = st[ 0 ];\n\n\tv = arrays[ 5 ];\n\n\tj1 = 0;\n\tk1 = 0;\n\tm1 = 0;\n\tn1 = 0;\n\tp1 = 0;\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tj0 = 0;\n\t\tk0 = 0;\n\t\tm0 = 0;\n\t\tn0 = 0;\n\t\tp0 = 0;\n\t\tx0 = x[ j1 ];\n\t\ty0 = y[ k1 ];\n\t\tz0 = z[ m1 ];\n\t\tw0 = w[ n1 ];\n\t\tu0 = u[ p1 ];\n\t\tv0 = v[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tv0[ i0 ] = fcn( x0[ j0 ], y0[ k0 ], z0[ m0 ], w0[ n0 ], u0[ p0 ] );\n\t\t\tj0 += dx0;\n\t\t\tk0 += dy0;\n\t\t\tm0 += dz0;\n\t\t\tn0 += dw0;\n\t\t\tp0 += du0;\n\t\t}\n\t\tj1 += dx1;\n\t\tk1 += dy1;\n\t\tm1 += dz1;\n\t\tn1 += dw1;\n\t\tp1 += du1;\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = bquinary2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a quinary callback to elements in five broadcasted input arrays and assign results to elements in a two-dimensional nested output array.\n*\n* @module @stdlib/array/base/broadcasted-quinary2d\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var bquinary2d = require( '@stdlib/array/base/broadcasted-quinary2d' );\n*\n* function add( x, y, z, w, v ) {\n*     return x + y + z + w + v;\n* }\n*\n* var shapes = [\n*     [ 1, 2 ],\n*     [ 2, 1 ],\n*     [ 1, 1 ],\n*     [ 2, 2 ],\n*     [ 1, 1 ],\n*     [ 2, 2 ]\n* ];\n*\n* var x = ones2d( shapes[ 0 ] );\n* var y = ones2d( shapes[ 1 ] );\n* var z = ones2d( shapes[ 2 ] );\n* var w = ones2d( shapes[ 3 ] );\n* var v = ones2d( shapes[ 4 ] );\n* var out = zeros2d( shapes[ 5 ] );\n*\n* bquinary2d( [ x, y, z, w, v, out ], shapes, add );\n*\n* console.log( out );\n* // => [ [ 5.0, 5.0 ], [ 5.0, 5.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar broadcastArray = require( './../../../base/broadcast-array' );\n\n\n// MAIN //\n\n/**\n* Applies a ternary callback to elements in three broadcasted input arrays and assigns results to elements in a two-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing three input nested arrays and one output nested array\n* @param {ArrayLikeObject<NonNegativeIntegerArray>} shapes - array shapes\n* @param {Callback} fcn - ternary callback\n* @returns {void}\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var add = require( '@stdlib/math/base/ops/add3' );\n*\n* var shapes = [\n*     [ 1, 2 ],\n*     [ 2, 1 ],\n*     [ 1, 1 ],\n*     [ 2, 2 ]\n* ];\n*\n* var x = ones2d( shapes[ 0 ] );\n* var y = ones2d( shapes[ 1 ] );\n* var z = ones2d( shapes[ 2 ] );\n* var out = zeros2d( shapes[ 3 ] );\n*\n* bternary2d( [ x, y, z, out ], shapes, add );\n*\n* console.log( out );\n* // => [ [ 3.0, 3.0 ], [ 3.0, 3.0 ] ]\n*/\nfunction bternary2d( arrays, shapes, fcn ) {\n\tvar dx0;\n\tvar dx1;\n\tvar dy0;\n\tvar dy1;\n\tvar dz0;\n\tvar dz1;\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar j0;\n\tvar j1;\n\tvar k0;\n\tvar k1;\n\tvar m0;\n\tvar m1;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar sh;\n\tvar st;\n\tvar o;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\n\tsh = shapes[ 3 ];\n\tS0 = sh[ 1 ];\n\tS1 = sh[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 ) {\n\t\treturn;\n\t}\n\to = broadcastArray( arrays[ 0 ], shapes[ 0 ], sh );\n\tx = o.data;\n\tst = o.strides;\n\tdx0 = st[ 1 ];\n\tdx1 = st[ 0 ];\n\n\to = broadcastArray( arrays[ 1 ], shapes[ 1 ], sh );\n\ty = o.data;\n\tst = o.strides;\n\tdy0 = st[ 1 ];\n\tdy1 = st[ 0 ];\n\n\to = broadcastArray( arrays[ 2 ], shapes[ 2 ], sh );\n\tz = o.data;\n\tst = o.strides;\n\tdz0 = st[ 1 ];\n\tdz1 = st[ 0 ];\n\n\tw = arrays[ 3 ];\n\n\tj1 = 0;\n\tk1 = 0;\n\tm1 = 0;\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tj0 = 0;\n\t\tk0 = 0;\n\t\tm0 = 0;\n\t\tx0 = x[ j1 ];\n\t\ty0 = y[ k1 ];\n\t\tz0 = z[ m1 ];\n\t\tw0 = w[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tw0[ i0 ] = fcn( x0[ j0 ], y0[ k0 ], z0[ m0 ] );\n\t\t\tj0 += dx0;\n\t\t\tk0 += dy0;\n\t\t\tm0 += dz0;\n\t\t}\n\t\tj1 += dx1;\n\t\tk1 += dy1;\n\t\tm1 += dz1;\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = bternary2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a ternary callback to elements in three broadcasted input arrays and assign results to elements in a two-dimensional nested output array.\n*\n* @module @stdlib/array/base/broadcasted-ternary2d\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var add = require( '@stdlib/math/base/ops/add3' );\n* var bternary2d = require( '@stdlib/array/base/broadcasted-ternary2d' );\n*\n* var shapes = [\n*     [ 1, 2 ],\n*     [ 2, 1 ],\n*     [ 1, 1 ],\n*     [ 2, 2 ]\n* ];\n*\n* var x = ones2d( shapes[ 0 ] );\n* var y = ones2d( shapes[ 1 ] );\n* var z = ones2d( shapes[ 2 ] );\n* var out = zeros2d( shapes[ 3 ] );\n*\n* bternary2d( [ x, y, z, out ], shapes, add );\n*\n* console.log( out );\n* // => [ [ 3.0, 3.0 ], [ 3.0, 3.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar broadcastArray = require( './../../../base/broadcast-array' );\n\n\n// MAIN //\n\n/**\n* Applies a unary callback to elements in a broadcasted nested input array and assigns results to elements in a two-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing one input nested array and one output nested array\n* @param {ArrayLikeObject<NonNegativeIntegerArray>} shapes - array shapes\n* @param {Callback} fcn - unary callback\n* @returns {void}\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shapes = [\n*     [ 1, 2 ],\n*     [ 2, 2 ]\n* ];\n*\n* var x = ones2d( shapes[ 0 ] );\n* var y = zeros2d( shapes[ 1 ] );\n*\n* bunary2d( [ x, y ], shapes, scale );\n*\n* console.log( y );\n* // => [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ]\n*/\nfunction bunary2d( arrays, shapes, fcn ) {\n\tvar dx0;\n\tvar dx1;\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar j0;\n\tvar j1;\n\tvar x0;\n\tvar y0;\n\tvar sh;\n\tvar st;\n\tvar o;\n\tvar x;\n\tvar y;\n\n\tsh = shapes[ 1 ];\n\tS0 = sh[ 1 ];\n\tS1 = sh[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 ) {\n\t\treturn;\n\t}\n\to = broadcastArray( arrays[ 0 ], shapes[ 0 ], sh );\n\tx = o.data;\n\tst = o.strides;\n\tdx0 = st[ 1 ];\n\tdx1 = st[ 0 ];\n\n\ty = arrays[ 1 ];\n\n\tj1 = 0;\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tj0 = 0;\n\t\tx0 = x[ j1 ];\n\t\ty0 = y[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\ty0[ i0 ] = fcn( x0[ j0 ] );\n\t\t\tj0 += dx0;\n\t\t}\n\t\tj1 += dx1;\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = bunary2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a unary callback to elements in a broadcasted nested input array and assign results to elements in a two-dimensional nested output array.\n*\n* @module @stdlib/array/base/broadcasted-unary2d\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var bunary2d = require( '@stdlib/array/base/broadcasted-unary2d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shapes = [\n*     [ 1, 2 ],\n*     [ 2, 2 ]\n* ];\n*\n* var x = ones2d( shapes[ 0 ] );\n* var y = zeros2d( shapes[ 1 ] );\n*\n* bunary2d( [ x, y ], shapes, scale );\n*\n* console.log( y );\n* // => [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar broadcastArray = require( './../../../base/broadcast-array' );\n\n\n// MAIN //\n\n/**\n* Applies a unary callback to elements in a broadcasted nested input array and assigns results to elements in a three-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing one input nested array and one output nested array\n* @param {ArrayLikeObject<NonNegativeIntegerArray>} shapes - array shapes\n* @param {Callback} fcn - unary callback\n* @returns {void}\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shapes = [\n*     [ 1, 1, 2 ],\n*     [ 1, 2, 2 ]\n* ];\n*\n* var x = ones3d( shapes[ 0 ] );\n* var y = zeros3d( shapes[ 1 ] );\n*\n* bunary3d( [ x, y ], shapes, scale );\n*\n* console.log( y );\n* // => [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ]\n*/\nfunction bunary3d( arrays, shapes, fcn ) {\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar x0;\n\tvar x1;\n\tvar y0;\n\tvar y1;\n\tvar sh;\n\tvar st;\n\tvar o;\n\tvar x;\n\tvar y;\n\n\tsh = shapes[ 1 ];\n\tS0 = sh[ 2 ];\n\tS1 = sh[ 1 ];\n\tS2 = sh[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 ) {\n\t\treturn;\n\t}\n\to = broadcastArray( arrays[ 0 ], shapes[ 0 ], sh );\n\tx = o.data;\n\tst = o.strides;\n\tdx0 = st[ 2 ];\n\tdx1 = st[ 1 ];\n\tdx2 = st[ 0 ];\n\n\ty = arrays[ 1 ];\n\tj2 = 0;\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\tj1 = 0;\n\t\tx1 = x[ j2 ];\n\t\ty1 = y[ i2 ];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\tj0 = 0;\n\t\t\tx0 = x1[ j1 ];\n\t\t\ty0 = y1[ i1 ];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\ty0[ i0 ] = fcn( x0[ j0 ] );\n\t\t\t\tj0 += dx0;\n\t\t\t}\n\t\t\tj1 += dx1;\n\t\t}\n\t\tj2 += dx2;\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = bunary3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a unary callback to elements in a broadcasted nested input array and assign results to elements in a three-dimensional nested output array.\n*\n* @module @stdlib/array/base/broadcasted-unary3d\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n* var bunary3d = require( '@stdlib/array/base/broadcasted-unary3d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shapes = [\n*     [ 1, 1, 2 ],\n*     [ 1, 2, 2 ]\n* ];\n*\n* var x = ones3d( shapes[ 0 ] );\n* var y = zeros3d( shapes[ 1 ] );\n*\n* bunary3d( [ x, y ], shapes, scale );\n*\n* console.log( y );\n* // => [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar broadcastArray = require( './../../../base/broadcast-array' );\n\n\n// MAIN //\n\n/**\n* Applies a unary callback to elements in a broadcasted nested input array and assigns results to elements in a four-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing one input nested array and one output nested array\n* @param {ArrayLikeObject<NonNegativeIntegerArray>} shapes - array shapes\n* @param {Callback} fcn - unary callback\n* @returns {void}\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shapes = [\n*     [ 1, 1, 1, 2 ],\n*     [ 1, 1, 2, 2 ]\n* ];\n*\n* var x = ones4d( shapes[ 0 ] );\n* var y = zeros4d( shapes[ 1 ] );\n*\n* bunary4d( [ x, y ], shapes, scale );\n*\n* console.log( y );\n* // => [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ]\n*/\nfunction bunary4d( arrays, shapes, fcn ) {\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar x0;\n\tvar x1;\n\tvar x2;\n\tvar y0;\n\tvar y1;\n\tvar y2;\n\tvar sh;\n\tvar st;\n\tvar o;\n\tvar x;\n\tvar y;\n\n\tsh = shapes[ 1 ];\n\tS0 = sh[ 3 ];\n\tS1 = sh[ 2 ];\n\tS2 = sh[ 1 ];\n\tS3 = sh[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 ) {\n\t\treturn;\n\t}\n\to = broadcastArray( arrays[ 0 ], shapes[ 0 ], sh );\n\tx = o.data;\n\tst = o.strides;\n\tdx0 = st[ 3 ];\n\tdx1 = st[ 2 ];\n\tdx2 = st[ 1 ];\n\tdx3 = st[ 0 ];\n\n\ty = arrays[ 1 ];\n\tj3 = 0;\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\tj2 = 0;\n\t\tx2 = x[ j3 ];\n\t\ty2 = y[ i3 ];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\tj1 = 0;\n\t\t\tx1 = x2[ j2 ];\n\t\t\ty1 = y2[ i2 ];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tj0 = 0;\n\t\t\t\tx0 = x1[ j1 ];\n\t\t\t\ty0 = y1[ i1 ];\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\ty0[ i0 ] = fcn( x0[ j0 ] );\n\t\t\t\t\tj0 += dx0;\n\t\t\t\t}\n\t\t\t\tj1 += dx1;\n\t\t\t}\n\t\t\tj2 += dx2;\n\t\t}\n\t\tj3 += dx3;\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = bunary4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a unary callback to elements in a broadcasted nested input array and assign results to elements in a four-dimensional nested output array.\n*\n* @module @stdlib/array/base/broadcasted-unary4d\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n* var bunary4d = require( '@stdlib/array/base/broadcasted-unary4d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shapes = [\n*     [ 1, 1, 1, 2 ],\n*     [ 1, 1, 2, 2 ]\n* ];\n*\n* var x = ones4d( shapes[ 0 ] );\n* var y = zeros4d( shapes[ 1 ] );\n*\n* bunary4d( [ x, y ], shapes, scale );\n*\n* console.log( y );\n* // => [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar broadcastArray = require( './../../../base/broadcast-array' );\n\n\n// MAIN //\n\n/**\n* Applies a unary callback to elements in a broadcasted nested input array and assigns results to elements in a five-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing one input nested array and one output nested array\n* @param {ArrayLikeObject<NonNegativeIntegerArray>} shapes - array shapes\n* @param {Callback} fcn - unary callback\n* @returns {void}\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shapes = [\n*     [ 1, 1, 1, 1, 2 ],\n*     [ 1, 1, 1, 2, 2 ]\n* ];\n*\n* var x = ones5d( shapes[ 0 ] );\n* var y = zeros5d( shapes[ 1 ] );\n*\n* bunary5d( [ x, y ], shapes, scale );\n*\n* console.log( y );\n* // => [ [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ] ]\n*/\nfunction bunary5d( arrays, shapes, fcn ) {\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar j0;\n\tvar j1;\n\tvar j2;\n\tvar j3;\n\tvar j4;\n\tvar x0;\n\tvar x1;\n\tvar x2;\n\tvar x3;\n\tvar y0;\n\tvar y1;\n\tvar y2;\n\tvar y3;\n\tvar sh;\n\tvar st;\n\tvar o;\n\tvar x;\n\tvar y;\n\n\tsh = shapes[ 1 ];\n\tS0 = sh[ 4 ];\n\tS1 = sh[ 3 ];\n\tS2 = sh[ 2 ];\n\tS3 = sh[ 1 ];\n\tS4 = sh[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 || S4 <= 0 ) {\n\t\treturn;\n\t}\n\to = broadcastArray( arrays[ 0 ], shapes[ 0 ], sh );\n\tx = o.data;\n\tst = o.strides;\n\tdx0 = st[ 4 ];\n\tdx1 = st[ 3 ];\n\tdx2 = st[ 2 ];\n\tdx3 = st[ 1 ];\n\tdx4 = st[ 0 ];\n\n\ty = arrays[ 1 ];\n\tj4 = 0;\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\tj3 = 0;\n\t\tx3 = x[ j4 ];\n\t\ty3 = y[ i4 ];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\tj2 = 0;\n\t\t\tx2 = x3[ j3 ];\n\t\t\ty2 = y3[ i3 ];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\tj1 = 0;\n\t\t\t\tx1 = x2[ j2 ];\n\t\t\t\ty1 = y2[ i2 ];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\tj0 = 0;\n\t\t\t\t\tx0 = x1[ j1 ];\n\t\t\t\t\ty0 = y1[ i1 ];\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\ty0[ i0 ] = fcn( x0[ j0 ] );\n\t\t\t\t\t\tj0 += dx0;\n\t\t\t\t\t}\n\t\t\t\t\tj1 += dx1;\n\t\t\t\t}\n\t\t\t\tj2 += dx2;\n\t\t\t}\n\t\t\tj3 += dx3;\n\t\t}\n\t\tj4 += dx4;\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = bunary5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a unary callback to elements in a broadcasted nested input array and assign results to elements in a five-dimensional nested output array.\n*\n* @module @stdlib/array/base/broadcasted-unary5d\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n* var bunary5d = require( '@stdlib/array/base/broadcasted-unary5d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shapes = [\n*     [ 1, 1, 1, 1, 2 ],\n*     [ 1, 1, 1, 2, 2 ]\n* ];\n*\n* var x = ones5d( shapes[ 0 ] );\n* var y = zeros5d( shapes[ 1 ] );\n*\n* bunary5d( [ x, y ], shapes, scale );\n*\n* console.log( y );\n* // => [ [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar pow = require( '@stdlib/math/base/special/pow' );\n\n\n// MAIN //\n\n/**\n* Returns the Cartesian power.\n*\n* ## Notes\n*\n* -   The Cartesian power is an n-fold Cartesian product involving a single array. The main insight of this implementation is that the n-fold Cartesian product can be presented as an n-dimensional array stored in row-major order. As such, we can\n*\n*     -   Compute the total number of tuples, which is simply the size of the provided array (set) raised to the specified power `n`. For n-dimensional arrays, this is the equivalent of computing the product of array dimensions to determine the total number of elements.\n*     -   Initialize an array for storing indices for indexing into the provided array. For n-dimensional arrays, the index array is equivalent to an array of subscripts for indexing into each dimension.\n*     -   For the outermost loop, treat the loop index as a linear index into an n-dimensional array and resolve the corresponding subscripts.\n*     -   Continue iterating until all tuples have been generated.\n*\n* @param {ArrayLikeObject} x - input array\n* @param {NonNegativeInteger} n - power\n* @returns {Array<Array>} list of ordered tuples comprising the Cartesian product\n*\n* @example\n* var x = [ 1, 2 ];\n*\n* var out = cartesianPower( x, 2 );\n* // returns [ [ 1, 1 ], [ 1, 2 ], [ 2, 1 ], [ 2, 2 ] ]\n*/\nfunction cartesianPower( x, n ) {\n\tvar out;\n\tvar tmp;\n\tvar idx;\n\tvar len;\n\tvar N;\n\tvar s;\n\tvar i;\n\tvar j;\n\tvar k;\n\n\tN = x.length;\n\tif ( N <= 0 || n <= 0 ) {\n\t\treturn [];\n\t}\n\t// Compute the total number of ordered tuples:\n\tlen = pow( N, n );\n\n\t// Initialize a list of indices for indexing into the array (equivalent to ndarray subscripts):\n\tidx = [];\n\tfor ( i = 0; i < n; i++ ) {\n\t\tidx.push( 0 );\n\t}\n\t// Compute the n-fold Cartesian product...\n\tout = [];\n\tfor ( i = 0; i < len; i++ ) {\n\t\t// Resolve a linear index to array indices (logic is equivalent to what is found in ndarray/base/ind2sub for an ndarray stored in row-major order; see https://github.com/stdlib-js/stdlib/blob/215ca5355f3404f15996fd0ced58a98e46f22be6/lib/node_modules/%40stdlib/ndarray/base/ind2sub/lib/assign.js)...\n\t\tk = i;\n\t\tfor ( j = n-1; j >= 0; j-- ) {\n\t\t\ts = k % N;\n\t\t\tk -= s;\n\t\t\tk /= N;\n\t\t\tidx[ j ] = s;\n\t\t}\n\t\t// Generate the next ordered tuple...\n\t\ttmp = [];\n\t\tfor ( j = 0; j < n; j++ ) {\n\t\t\ttmp.push( x[ idx[ j ] ] );\n\t\t}\n\t\tout.push( tmp );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = cartesianPower;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the Cartesian power.\n*\n* @module @stdlib/array/base/cartesian-power\n*\n* @example\n* var cartesianPower = require( '@stdlib/array/base/cartesian-power' );\n*\n* var x = [ 1, 2 ];\n*\n* var out = cartesianPower( x, 2 );\n* // returns [ [ 1, 1 ], [ 1, 2 ], [ 2, 1 ], [ 2, 2 ] ]\n*/\n\n// MAIN //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Returns the Cartesian product.\n*\n* @param {ArrayLikeObject} x1 - first input array\n* @param {ArrayLikeObject} x2 - second input array\n* @returns {Array<Array>} list of ordered tuples comprising the Cartesian product\n*\n* @example\n* var x1 = [ 1, 2, 3 ];\n* var x2 = [ 4, 5 ];\n*\n* var out = cartesianProduct( x1, x2 );\n* // returns [ [ 1, 4 ], [ 1, 5 ], [ 2, 4 ], [ 2, 5 ], [ 3, 4 ], [ 3, 5 ] ]\n*/\nfunction cartesianProduct( x1, x2 ) {\n\tvar out;\n\tvar M;\n\tvar N;\n\tvar v;\n\tvar i;\n\tvar j;\n\n\tM = x1.length;\n\tN = x2.length;\n\tout = [];\n\tfor ( i = 0; i < M; i++ ) {\n\t\tv = x1[ i ];\n\t\tfor ( j = 0; j < N; j++ ) {\n\t\t\tout.push( [ v, x2[ j ] ] );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = cartesianProduct;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the Cartesian product.\n*\n* @module @stdlib/array/base/cartesian-product\n*\n* @example\n* var cartesianProduct = require( '@stdlib/array/base/cartesian-product' );\n*\n* var x1 = [ 1, 2, 3 ];\n* var x2 = [ 4, 5 ];\n*\n* var out = cartesianProduct( x1, x2 );\n* // returns [ [ 1, 4 ], [ 1, 5 ], [ 2, 4 ], [ 2, 5 ], [ 3, 4 ], [ 3, 5 ] ]\n*/\n\n// MAIN //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Returns the Cartesian square.\n*\n* @param {ArrayLikeObject} x - input array\n* @returns {Array<Array>} list of ordered tuples comprising the Cartesian product\n*\n* @example\n* var x = [ 1, 2 ];\n*\n* var out = cartesianSquare( x );\n* // returns [ [ 1, 1 ], [ 1, 2 ], [ 2, 1 ], [ 2, 2 ] ]\n*/\nfunction cartesianSquare( x ) {\n\tvar out;\n\tvar N;\n\tvar v;\n\tvar i;\n\tvar j;\n\n\tN = x.length;\n\tout = [];\n\tfor ( i = 0; i < N; i++ ) {\n\t\tv = x[ i ];\n\t\tfor ( j = 0; j < N; j++ ) {\n\t\t\tout.push( [ v, x[ j ] ] );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = cartesianSquare;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the Cartesian square.\n*\n* @module @stdlib/array/base/cartesian-square\n*\n* @example\n* var cartesianSquare = require( '@stdlib/array/base/cartesian-square' );\n*\n* var x = [ 1, 2 ];\n*\n* var out = cartesianSquare( x );\n* // returns [ [ 1, 1 ], [ 1, 2 ], [ 2, 1 ], [ 2, 2 ] ]\n*/\n\n// MAIN //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Copies the elements of an array-like object to a new \"generic\" array.\n*\n* @param {Collection} x - input array\n* @returns {Array} output array\n*\n* @example\n* var out = copy( [ 1, 2, 3 ] );\n* // returns [ 1, 2, 3 ]\n*/\nfunction copy( x ) {\n\tvar out;\n\tvar len;\n\tvar get;\n\tvar i;\n\n\t// Resolve an accessor for retrieving input array elements:\n\tget = resolveGetter( x );\n\n\t// Get the number of elements to copy:\n\tlen = x.length;\n\n\t// Loop over the elements...\n\tout = [];\n\tfor ( i = 0; i < len; i++ ) {\n\t\tout.push( get( x, i ) ); // ensure \"fast\" elements\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = copy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Copy the elements of an array-like object to a new \"generic\" array.\n*\n* @module @stdlib/array/base/copy\n*\n* @example\n* var copy = require( '@stdlib/array/base/copy' );\n*\n* var out = copy( [ 1, 2, 3 ] );\n* // returns [ 1, 2, 3 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isnan = require( '@stdlib/math/base/assert/is-nan' );\n\n\n// FUNCTIONS //\n\n/**\n* De-duplicates values in-place.\n*\n* @private\n* @param {Array} x - input array\n* @param {PositiveInteger} limit - number of allowed consecutive duplicates\n* @returns {Array} input array\n*\n* @example\n* var x = [ 1, 1, 2, 3, 3 ];\n*\n* var y = dedupeInPlace( x, 1 );\n* // returns [ 1, 2, 3 ]\n*\n* var bool = ( x === y );\n* // returns true\n*\n* @example\n* var x = [ 1, 1, 1, 2, 1, 1, 3, 3 ];\n*\n* var y = dedupeInPlace( x, 2 );\n* // returns [ 1, 1, 2, 1, 1, 3, 3 ]\n*\n* var bool = ( x === y );\n* // returns true\n*/\nfunction dedupeInPlace( x, limit ) {\n\tvar count;\n\tvar prev;\n\tvar len;\n\tvar ptr;\n\tvar v;\n\tvar i;\n\n\tlen = x.length;\n\tif ( len === 0 ) {\n\t\treturn x;\n\t}\n\tprev = x[ 0 ];\n\tcount = 1;\n\tptr = 1;\n\tfor ( i = 1; i < len; i++ ) {\n\t\tv = x[ i ];\n\t\tif ( v === prev ) {\n\t\t\tcount += 1;\n\t\t\tif ( count <= limit ) {\n\t\t\t\tx[ ptr ] = prev;\n\t\t\t\tptr += 1;\n\t\t\t}\n\t\t} else {\n\t\t\tprev = v;\n\t\t\tcount = 1;\n\t\t\tx[ ptr ] = prev;\n\t\t\tptr += 1;\n\t\t}\n\t}\n\tx.length = ptr;\n\treturn x;\n}\n\n/**\n* De-duplicates values in-place, treating `NaN` values as equal.\n*\n* @private\n* @param {Array} x - input array\n* @param {PositiveInteger} limit - number of allowed consecutive duplicates\n* @returns {Array} input array\n*\n* @example\n* var x = [ 1, 1, 2, NaN, NaN, 3, 3 ];\n*\n* var y = dedupeEqualNaNs( x, 1 );\n* // returns [ 1, 2, NaN, 3 ]\n*\n* var bool = ( x === y );\n* // returns true\n*\n* @example\n* var x = [ 1, 1, 1, 2, 1, 1, NaN, NaN, NaN, 3, 3 ];\n*\n* var y = dedupeEqualNaNs( x, 2 );\n* // returns [ 1, 1, 2, 1, 1, NaN, NaN, 3, 3 ]\n*\n* var bool = ( x === y );\n* // returns true\n*/\nfunction dedupeEqualNaNs( x, limit ) {\n\tvar count;\n\tvar prev;\n\tvar len;\n\tvar ptr;\n\tvar FLG;\n\tvar v;\n\tvar i;\n\n\tlen = x.length;\n\tif ( len === 0 ) {\n\t\treturn x;\n\t}\n\tFLG = false;\n\tprev = x[ 0 ];\n\tif ( isnan( prev ) ) {\n\t\tFLG = true;\n\t}\n\tcount = 1;\n\tptr = 1;\n\tfor ( i = 1; i < len; i++ ) {\n\t\tv = x[ i ];\n\t\tif ( v === prev || ( FLG && isnan( v ) ) ) {\n\t\t\tcount += 1;\n\t\t\tif ( count <= limit ) {\n\t\t\t\tx[ ptr ] = prev;\n\t\t\t\tptr += 1;\n\t\t\t}\n\t\t} else {\n\t\t\tprev = v;\n\t\t\tcount = 1;\n\t\t\tx[ ptr ] = prev;\n\t\t\tptr += 1;\n\t\t\tFLG = false;\n\t\t\tif ( isnan( prev ) ) {\n\t\t\t\tFLG = true;\n\t\t\t}\n\t\t}\n\t}\n\tx.length = ptr;\n\treturn x;\n}\n\n\n// MAIN //\n\n/**\n* Removes consecutive duplicated values.\n*\n* @param {Array} x - input array\n* @param {PositiveInteger} limit - number of allowed consecutive duplicates\n* @param {boolean} equalNaNs - boolean indicating whether NaNs should be considered equal\n* @returns {Array} de-duplicated values\n*\n* @example\n* var x = [ 1, 1, 2, 3, 3 ];\n*\n* var y = dedupe( x, 1, false );\n* // returns [ 1, 2, 3 ]\n*\n* var bool = ( x === y );\n* // returns true\n*\n* @example\n* var x = [ 1, 1, 1, 2, 1, 1, 3, 3 ];\n*\n* var y = dedupe( x, 2, false );\n* // returns [ 1, 1, 2, 1, 1, 3, 3 ]\n*\n* var bool = ( x === y );\n* // returns true\n*/\nfunction dedupe( x, limit, equalNaNs ) {\n\tif ( equalNaNs ) {\n\t\treturn dedupeEqualNaNs( x, limit );\n\t}\n\treturn dedupeInPlace( x, limit );\n}\n\n\n// EXPORTS //\n\nmodule.exports = dedupe;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove consecutive duplicated values.\n*\n* @module @stdlib/array/base/dedupe\n*\n* @example\n* var dedupe = require( '@stdlib/array/base/dedupe' );\n*\n* var x = [ 1, 1, 2, 3, 3 ];\n*\n* var y = dedupe( x, 1, false );\n* // returns [ 1, 2, 3 ]\n*\n* var bool = ( x === y );\n* // returns true\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isComplex128Array = require( './../../../base/assert/is-complex128array' );\nvar isComplex64Array = require( './../../../base/assert/is-complex64array' );\nvar arraylike2object = require( './../../../base/arraylike2object' );\nvar reinterpret128 = require( '@stdlib/strided/base/reinterpret-complex128' );\nvar reinterpret64 = require( '@stdlib/strided/base/reinterpret-complex64' );\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether all elements in an array are truthy.\n*\n* @private\n* @param {Collection} x - input array\n* @returns {boolean} boolean indicating whether all elements are truthy\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = internal( x );\n* // returns true\n*\n* @example\n* var x = [ 1, 2, 0, 4 ];\n*\n* var out = internal( x );\n* // returns false\n*/\nfunction internal( x ) {\n\tvar i;\n\tfor ( i = 0; i < x.length; i++ ) {\n\t\tif ( !x[ i ] ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n/**\n* Tests whether all elements in a complex number array are truthy.\n*\n* @private\n* @param {Collection} x - underlying data buffer\n* @returns {boolean} boolean indicating whether all elements are truthy\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = internalComplex( x );\n* // returns true\n*\n* @example\n* var x = [ 1, 2, 0, 4 ];\n*\n* var out = internalComplex( x );\n* // returns true\n*\n* @example\n* var x = [ 1, 2, 0, 0 ];\n*\n* var out = internalComplex( x );\n* // returns false\n*/\nfunction internalComplex( x ) {\n\tvar i;\n\tfor ( i = 0; i < x.length; i += 2 ) {\n\t\tif ( !( x[ i ] || x[ i+1 ] ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n/**\n* Tests whether all elements in an array are truthy.\n*\n* @private\n* @param {Object} x - input array object\n* @returns {boolean} boolean indicating whether all elements are truthy\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' );\n* var arraylike2object = require( '@stdlib/array/base/arraylike2object' );\n*\n* var x = arraylike2object( toAccessorArray( [ 1, 2, 3, 4 ] ) );\n*\n* var out = accessors( x );\n* // returns true\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' );\n* var arraylike2object = require( '@stdlib/array/base/arraylike2object' );\n*\n* var x = arraylike2object( toAccessorArray( [ 1, 2, 0, 4 ] ) );\n*\n* var out = accessors( x );\n* // returns false\n*/\nfunction accessors( x ) {\n\tvar data;\n\tvar get;\n\tvar i;\n\n\tdata = x.data;\n\tget = x.accessors[ 0 ];\n\n\tfor ( i = 0; i < data.length; i++ ) {\n\t\tif ( !get( data, i ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n\n// MAIN //\n\n/**\n* Tests whether all elements in an array are truthy.\n*\n* @param {Collection} x - input array\n* @returns {boolean} boolean indicating whether all elements are truthy\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = every( x );\n* // returns true\n*\n* @example\n* var x = [ 1, 2, 0, 4 ];\n*\n* var out = every( x );\n* // returns false\n*/\nfunction every( x ) {\n\tvar obj = arraylike2object( x );\n\tif ( obj.accessorProtocol ) {\n\t\t// If provided a complex number array, reinterpret as a real typed array and test interleaved real and imaginary components, where we consider a complex number to be truthy if at least one component is non-zero...\n\t\tif ( isComplex128Array( x ) ) {\n\t\t\treturn internalComplex( reinterpret128( x, 0 ) );\n\t\t}\n\t\tif ( isComplex64Array( x ) ) {\n\t\t\treturn internalComplex( reinterpret64( x, 0 ) );\n\t\t}\n\t\treturn accessors( obj );\n\t}\n\treturn internal( x );\n}\n\n\n// EXPORTS //\n\nmodule.exports = every;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test whether all elements in a collection are truthy.\n*\n* @module @stdlib/array/base/every\n*\n* @example\n* var every = require( '@stdlib/array/base/every' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = every( x );\n* // returns true\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar arraylike2object = require( './../../../base/arraylike2object' );\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether an object has a specified method.\n*\n* @private\n* @param {Object} obj - input object\n* @param {string} method - method name\n* @returns {boolean} boolean indicating whether an object has a specified method\n*\n* @example\n* var bool = hasMethod( [], 'every' );\n* // returns true\n*\n* @example\n* var bool = hasMethod( [], 'beep' );\n* // returns false\n*/\nfunction hasMethod( obj, method ) {\n\treturn ( typeof obj[ method ] === 'function' );\n}\n\n/**\n* Tests whether all elements in an array pass a test implemented by a predicate function.\n*\n* @private\n* @param {Collection} x - input array\n* @param {Function} predicate - test function\n* @param {*} thisArg - execution context\n* @returns {boolean} boolean indicating whether all elements pass a test\n*\n* @example\n* function isPositive( v ) {\n*     return v > 0;\n* }\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = internal( x, isPositive );\n* // returns true\n*/\nfunction internal( x, predicate, thisArg ) {\n\tvar i;\n\tfor ( i = 0; i < x.length; i++ ) {\n\t\tif ( !predicate.call( thisArg, x[ i ], i, x ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n/**\n* Tests whether all elements in an array pass a test implemented by a predicate function.\n*\n* @private\n* @param {Object} x - input array object\n* @param {Function} predicate - test function\n* @param {*} thisArg - execution context\n* @returns {boolean} boolean indicating whether all elements pass a test\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' );\n* var arraylike2object = require( '@stdlib/array/base/arraylike2object' );\n*\n* function isPositive( v ) {\n*     return v > 0;\n* }\n*\n* var x = arraylike2object( toAccessorArray( [ 1, 2, 3, 4 ] ) );\n*\n* var out = accessors( x, isPositive );\n* // returns true\n*/\nfunction accessors( x, predicate, thisArg ) {\n\tvar data;\n\tvar get;\n\tvar i;\n\n\tdata = x.data;\n\tget = x.accessors[ 0 ];\n\n\tfor ( i = 0; i < data.length; i++ ) {\n\t\tif ( !predicate.call( thisArg, get( data, i ), i, data ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n\n// MAIN //\n\n/**\n* Tests whether all elements in an array pass a test implemented by a predicate function.\n*\n* @param {Collection} x - input array\n* @param {Function} predicate - test function\n* @param {*} [thisArg] - execution context\n* @returns {boolean} boolean indicating whether all elements pass a test\n*\n* @example\n* function isPositive( v ) {\n*     return v > 0;\n* }\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = everyBy( x, isPositive );\n* // returns true\n*/\nfunction everyBy( x, predicate, thisArg ) {\n\tvar obj;\n\tif ( hasMethod( x, 'every' ) ) {\n\t\treturn x.every( predicate, thisArg );\n\t}\n\tobj = arraylike2object( x );\n\tif ( obj.accessorProtocol ) {\n\t\treturn accessors( obj, predicate, thisArg );\n\t}\n\treturn internal( x, predicate, thisArg );\n}\n\n\n// EXPORTS //\n\nmodule.exports = everyBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test whether all elements in a collection pass a test implemented by a predicate function.\n*\n* @module @stdlib/array/base/every-by\n*\n* @example\n* var everyBy = require( '@stdlib/array/base/every-by' );\n*\n* function isPositive( v ) {\n*     return v > 0;\n* }\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = everyBy( x, isPositive );\n* // returns true\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Returns a filled \"generic\" array according to a provided callback function.\n*\n* @param {NonNegativeInteger} len - array length\n* @param {Callback} clbk - callback function\n* @param {*} [thisArg] - callback function execution context\n* @returns {Array} filled array\n*\n* @example\n* var constantFunction = require( '@stdlib/utils/constant-function' );\n*\n* var out = filledBy( 3, constantFunction( 'beep' ) );\n* // returns [ 'beep', 'beep', 'beep' ]\n*/\nfunction filledBy( len, clbk, thisArg ) {\n\tvar arr;\n\tvar i;\n\n\t// Manually push elements in order to ensure \"fast\" elements...\n\tarr = [];\n\tfor ( i = 0; i < len; i++ ) {\n\t\tarr.push( clbk.call( thisArg, i ) );\n\t}\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = filledBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled \"generic\" array according to a provided callback function.\n*\n* @module @stdlib/array/base/filled-by\n*\n* @example\n* var constantFunction = require( '@stdlib/utils/constant-function' );\n* var filledBy = require( '@stdlib/array/base/filled-by' );\n*\n* var out = filledBy( 3, constantFunction( 'beep' ) );\n* // returns [ 'beep', 'beep', 'beep' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled = require( './../../../base/filled' );\n\n\n// MAIN //\n\n/**\n* Returns a filled two-dimensional nested array.\n*\n* @param {*} value - fill value\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {Array} filled array\n*\n* @example\n* var out = filled2d( 0.0, [ 1, 3 ] );\n* // returns [ [ 0.0, 0.0, 0.0 ] ]\n*\n* @example\n* var out = filled2d( 'beep', [ 3, 1 ] );\n* // returns [ [ 'beep' ], [ 'beep' ], [ 'beep' ] ]\n*/\nfunction filled2d( value, shape ) {\n\tvar arr;\n\tvar S0;\n\tvar S1;\n\tvar i;\n\n\tS0 = shape[ 1 ];\n\tS1 = shape[ 0 ];\n\n\t// Manually push elements in order to ensure \"fast\" elements...\n\tarr = [];\n\tfor ( i = 0; i < S1; i++ ) {\n\t\tarr.push( filled( value, S0 ) );\n\t}\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = filled2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled two-dimensional nested array.\n*\n* @module @stdlib/array/base/filled2d\n*\n* @example\n* var filled2d = require( '@stdlib/array/base/filled2d' );\n*\n* var out = filled2d( 0.0, [ 1, 3 ] );\n* // returns [ [ 0.0, 0.0, 0.0 ] ]\n*\n* @example\n* var filled2d = require( '@stdlib/array/base/filled2d' );\n*\n* var out = filled2d( 'beep', [ 3, 1 ] );\n* // returns [ [ 'beep' ], [ 'beep' ], [ 'beep' ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Returns a filled two-dimensional nested array according to a provided callback function.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} clbk - callback function\n* @param {*} [thisArg] - callback function execution context\n* @returns {Array} filled array\n*\n* @example\n* var constantFunction = require( '@stdlib/utils/constant-function' );\n*\n* var out = filled2dBy( [ 1, 3 ], constantFunction( 'beep' ) );\n* // returns [ [ 'beep', 'beep', 'beep' ] ]\n*/\nfunction filled2dBy( shape, clbk, thisArg ) {\n\tvar arr;\n\tvar a0;\n\tvar S0;\n\tvar S1;\n\tvar i;\n\tvar j;\n\n\tS0 = shape[ 1 ];\n\tS1 = shape[ 0 ];\n\n\t// Manually push elements in order to ensure \"fast\" elements...\n\tarr = [];\n\tfor ( i = 0; i < S1; i++ ) {\n\t\ta0 = [];\n\t\tfor ( j = 0; j < S0; j++ ) {\n\t\t\ta0.push( clbk.call( thisArg, [ i, j ] ) );\n\t\t}\n\t\tarr.push( a0 );\n\t}\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = filled2dBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled two-dimensional nested array according to a provided callback function.\n*\n* @module @stdlib/array/base/filled2d-by\n*\n* @example\n* var constantFunction = require( '@stdlib/utils/constant-function' );\n* var filled2dBy = require( '@stdlib/array/base/filled2d-by' );\n*\n* var out = filled2dBy( [ 1, 3 ], constantFunction( 'beep' ) );\n* // returns [ [ 'beep', 'beep', 'beep' ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled = require( './../../../base/filled' );\n\n\n// MAIN //\n\n/**\n* Returns a filled three-dimensional nested array.\n*\n* @param {*} value - fill value\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {Array} filled array\n*\n* @example\n* var out = filled3d( 0.0, [ 1, 1, 3 ] );\n* // returns [ [ [ 0.0, 0.0, 0.0 ] ] ]\n*\n* @example\n* var out = filled3d( 'beep', [ 1, 3, 1 ] );\n* // returns [ [ [ 'beep' ], [ 'beep' ], [ 'beep' ] ] ]\n*/\nfunction filled3d( value, shape ) {\n\tvar out;\n\tvar a1;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i2;\n\tvar i1;\n\n\tS0 = shape[ 2 ];\n\tS1 = shape[ 1 ];\n\tS2 = shape[ 0 ];\n\n\t// Manually push elements in order to ensure \"fast\" elements...\n\tout = [];\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\ta1 = [];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\ta1.push( filled( value, S0 ) );\n\t\t}\n\t\tout.push( a1 );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = filled3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled three-dimensional nested array.\n*\n* @module @stdlib/array/base/filled3d\n*\n* @example\n* var filled3d = require( '@stdlib/array/base/filled3d' );\n*\n* var out = filled3d( 0.0, [ 1, 1, 3 ] );\n* // returns [ [ [ 0.0, 0.0, 0.0 ] ] ]\n*\n* @example\n* var filled3d = require( '@stdlib/array/base/filled3d' );\n*\n* var out = filled3d( 'beep', [ 1, 3, 1 ] );\n* // returns [ [ [ 'beep' ], [ 'beep' ], [ 'beep' ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Returns a filled three-dimensional nested array according to a provided callback function.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} clbk - callback function\n* @param {*} [thisArg] - callback function execution context\n* @returns {Array} filled array\n*\n* @example\n* var constantFunction = require( '@stdlib/utils/constant-function' );\n*\n* var out = filled3dBy( [ 1, 1, 3 ], constantFunction( 'beep' ) );\n* // returns [ [ [ 'beep', 'beep', 'beep' ] ] ]\n*/\nfunction filled3dBy( shape, clbk, thisArg ) {\n\tvar arr;\n\tvar a0;\n\tvar a1;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\n\tS0 = shape[ 2 ];\n\tS1 = shape[ 1 ];\n\tS2 = shape[ 0 ];\n\n\t// Manually push elements in order to ensure \"fast\" elements...\n\tarr = [];\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\ta1 = [];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\ta0 = [];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\ta0.push( clbk.call( thisArg, [ i2, i1, i0 ] ) );\n\t\t\t}\n\t\t\ta1.push( a0 );\n\t\t}\n\t\tarr.push( a1 );\n\t}\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = filled3dBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled three-dimensional nested array according to a provided callback function.\n*\n* @module @stdlib/array/base/filled3d-by\n*\n* @example\n* var constantFunction = require( '@stdlib/utils/constant-function' );\n* var filled3dBy = require( '@stdlib/array/base/filled3d-by' );\n*\n* var out = filled3dBy( [ 1, 1, 3 ], constantFunction( 'beep' ) );\n* // returns [ [ [ 'beep', 'beep', 'beep' ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled = require( './../../../base/filled' );\n\n\n// MAIN //\n\n/**\n* Returns a filled four-dimensional nested array.\n*\n* @param {*} value - fill value\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {Array} filled array\n*\n* @example\n* var out = filled4d( 0.0, [ 1, 1, 1, 3 ] );\n* // returns [ [ [ [ 0.0, 0.0, 0.0 ] ] ] ]\n*\n* @example\n* var out = filled4d( 'beep', [ 1, 1, 3, 1 ] );\n* // returns [ [ [ [ 'beep' ], [ 'beep' ], [ 'beep' ] ] ] ]\n*/\nfunction filled4d( value, shape ) {\n\tvar out;\n\tvar a1;\n\tvar a2;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\n\tS0 = shape[ 3 ];\n\tS1 = shape[ 2 ];\n\tS2 = shape[ 1 ];\n\tS3 = shape[ 0 ];\n\n\t// Manually push elements in order to ensure \"fast\" elements...\n\tout = [];\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\ta2 = [];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\ta1 = [];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\ta1.push( filled( value, S0 ) );\n\t\t\t}\n\t\t\ta2.push( a1 );\n\t\t}\n\t\tout.push( a2 );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = filled4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled four-dimensional nested array.\n*\n* @module @stdlib/array/base/filled4d\n*\n* @example\n* var filled4d = require( '@stdlib/array/base/filled4d' );\n*\n* var out = filled4d( 0.0, [ 1, 1, 1, 3 ] );\n* // returns [ [ [ [ 0.0, 0.0, 0.0 ] ] ] ]\n*\n* @example\n* var filled4d = require( '@stdlib/array/base/filled4d' );\n*\n* var out = filled4d( 'beep', [ 1, 1, 3, 1 ] );\n* // returns [ [ [ [ 'beep' ], [ 'beep' ], [ 'beep' ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Returns a filled four-dimensional nested array according to a provided callback function.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} clbk - callback function\n* @param {*} [thisArg] - callback function execution context\n* @returns {Array} filled array\n*\n* @example\n* var constantFunction = require( '@stdlib/utils/constant-function' );\n*\n* var out = filled4dBy( [ 1, 1, 1, 3 ], constantFunction( 'beep' ) );\n* // returns [ [ [ [ 'beep', 'beep', 'beep' ] ] ] ]\n*/\nfunction filled4dBy( shape, clbk, thisArg ) {\n\tvar arr;\n\tvar a0;\n\tvar a1;\n\tvar a2;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\n\tS0 = shape[ 3 ];\n\tS1 = shape[ 2 ];\n\tS2 = shape[ 1 ];\n\tS3 = shape[ 0 ];\n\n\t// Manually push elements in order to ensure \"fast\" elements...\n\tarr = [];\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\ta2 = [];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\ta1 = [];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\ta0 = [];\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\ta0.push( clbk.call( thisArg, [ i3, i2, i1, i0 ] ) );\n\t\t\t\t}\n\t\t\t\ta1.push( a0 );\n\t\t\t}\n\t\t\ta2.push( a1 );\n\t\t}\n\t\tarr.push( a2 );\n\t}\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = filled4dBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled four-dimensional nested array according to a provided callback function.\n*\n* @module @stdlib/array/base/filled4d-by\n*\n* @example\n* var constantFunction = require( '@stdlib/utils/constant-function' );\n* var filled4dBy = require( '@stdlib/array/base/filled4d-by' );\n*\n* var out = filled4dBy( [ 1, 1, 1, 3 ], constantFunction( 'beep' ) );\n* // returns [ [ [ [ 'beep', 'beep', 'beep' ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled = require( './../../../base/filled' );\n\n\n// MAIN //\n\n/**\n* Returns a filled five-dimensional nested array.\n*\n* @param {*} value - fill value\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {Array} filled array\n*\n* @example\n* var out = filled5d( 0.0, [ 1, 1, 1, 1, 3 ] );\n* // returns [ [ [ [ [ 0.0, 0.0, 0.0 ] ] ] ] ]\n*\n* @example\n* var out = filled5d( 'beep', [ 1, 1, 1, 3, 1 ] );\n* // returns [ [ [ [ [ 'beep' ], [ 'beep' ], [ 'beep' ] ] ] ] ]\n*/\nfunction filled5d( value, shape ) {\n\tvar out;\n\tvar a1;\n\tvar a2;\n\tvar a3;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\n\tS0 = shape[ 4 ];\n\tS1 = shape[ 3 ];\n\tS2 = shape[ 2 ];\n\tS3 = shape[ 1 ];\n\tS4 = shape[ 0 ];\n\n\t// Manually push elements in order to ensure \"fast\" elements...\n\tout = [];\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\ta3 = [];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\ta2 = [];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\ta1 = [];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\ta1.push( filled( value, S0 ) );\n\t\t\t\t}\n\t\t\t\ta2.push( a1 );\n\t\t\t}\n\t\t\ta3.push( a2 );\n\t\t}\n\t\tout.push( a3 );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = filled5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled five-dimensional nested array.\n*\n* @module @stdlib/array/base/filled5d\n*\n* @example\n* var filled5d = require( '@stdlib/array/base/filled5d' );\n*\n* var out = filled5d( 0.0, [ 1, 1, 1, 1, 3 ] );\n* // returns [ [ [ [ [ 0.0, 0.0, 0.0 ] ] ] ] ]\n*\n* @example\n* var filled5d = require( '@stdlib/array/base/filled5d' );\n*\n* var out = filled5d( 'beep', [ 1, 1, 1, 3, 1 ] );\n* // returns [ [ [ [ [ 'beep' ], [ 'beep' ], [ 'beep' ] ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Returns a filled five-dimensional nested array according to a provided callback function.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} clbk - callback function\n* @param {*} [thisArg] - callback function execution context\n* @returns {Array} filled array\n*\n* @example\n* var constantFunction = require( '@stdlib/utils/constant-function' );\n*\n* var out = filled5dBy( [ 1, 1, 1, 1, 3 ], constantFunction( 'beep' ) );\n* // returns [ [ [ [ [ 'beep', 'beep', 'beep' ] ] ] ] ]\n*/\nfunction filled5dBy( shape, clbk, thisArg ) {\n\tvar arr;\n\tvar a0;\n\tvar a1;\n\tvar a2;\n\tvar a3;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\n\tS0 = shape[ 4 ];\n\tS1 = shape[ 3 ];\n\tS2 = shape[ 2 ];\n\tS3 = shape[ 1 ];\n\tS4 = shape[ 0 ];\n\n\t// Manually push elements in order to ensure \"fast\" elements...\n\tarr = [];\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\ta3 = [];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\ta2 = [];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\ta1 = [];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\ta0 = [];\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\ta0.push( clbk.call( thisArg, [ i4, i3, i2, i1, i0 ] ) );\n\t\t\t\t\t}\n\t\t\t\t\ta1.push( a0 );\n\t\t\t\t}\n\t\t\t\ta2.push( a1 );\n\t\t\t}\n\t\t\ta3.push( a2 );\n\t\t}\n\t\tarr.push( a3 );\n\t}\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = filled5dBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled five-dimensional nested array according to a provided callback function.\n*\n* @module @stdlib/array/base/filled5d-by\n*\n* @example\n* var constantFunction = require( '@stdlib/utils/constant-function' );\n* var filled5dBy = require( '@stdlib/array/base/filled5d-by' );\n*\n* var out = filled5dBy( [ 1, 1, 1, 1, 3 ], constantFunction( 'beep' ) );\n* // returns [ [ [ [ [ 'beep', 'beep', 'beep' ] ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled = require( './../../../base/filled' );\n\n\n// FUNCTIONS //\n\n/**\n* Recursive fills an array.\n*\n* @private\n* @param {*} value - fill value\n* @param {NonNegativeInteger} ndims - number of dimensions\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {NonNegativeInteger} dim - dimension index\n* @param {Array} out - output array\n* @returns {Array} output array\n*/\nfunction recurse( value, ndims, shape, dim, out ) {\n\tvar S;\n\tvar d;\n\tvar i;\n\n\tS = shape[ dim ];\n\n\t// Check whether we're filling the last dimension:\n\td = dim + 1;\n\tif ( d === ndims ) {\n\t\treturn filled( value, S );\n\t}\n\n\t// Fill nested dimensions...\n\tfor ( i = 0; i < S; i++ ) {\n\t\tout.push( recurse( value, ndims, shape, d, [] ) );\n\t}\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Returns a filled two-dimensional nested array.\n*\n* @param {*} value - fill value\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {Array} filled array\n*\n* @example\n* var out = fillednd( 0.0, [ 3 ] );\n* // returns [ 0.0, 0.0, 0.0 ]\n*\n* @example\n* var out = fillednd( 0.0, [ 1, 3 ] );\n* // returns [ [ 0.0, 0.0, 0.0 ] ]\n*\n* @example\n* var out = fillednd( 'beep', [ 3, 1 ] );\n* // returns [ [ 'beep' ], [ 'beep' ], [ 'beep' ] ]\n*/\nfunction fillednd( value, shape ) {\n\treturn recurse( value, shape.length, shape, 0, [] );\n}\n\n\n// EXPORTS //\n\nmodule.exports = fillednd;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled n-dimensional nested array.\n*\n* @module @stdlib/array/base/fillednd\n*\n* @example\n* var fillednd = require( '@stdlib/array/base/fillednd' );\n*\n* var out = fillednd( 0.0, [ 1, 3 ] );\n* // returns [ [ 0.0, 0.0, 0.0 ] ]\n*\n* @example\n* var fillednd = require( '@stdlib/array/base/fillednd' );\n*\n* var out = fillednd( 'beep', [ 3, 1 ] );\n* // returns [ [ 'beep' ], [ 'beep' ], [ 'beep' ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// FUNCTIONS //\n\n/**\n* Recursive fills an array.\n*\n* @private\n* @param {NonNegativeInteger} ndims - number of dimensions\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {NonNegativeInteger} dim - dimension index\n* @param {NonNegativeIntegerArray} indices - outer array element indices\n* @param {Array} out - output array\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n* @returns {Array} output array\n*/\nfunction recurse( ndims, shape, dim, indices, out, clbk, thisArg ) {\n\tvar idx;\n\tvar FLG;\n\tvar S;\n\tvar d;\n\tvar i;\n\n\t// Check whether we're filling the last dimension:\n\td = dim + 1;\n\tFLG = ( d === ndims );\n\n\tS = shape[ dim ];\n\tfor ( i = 0; i < S; i++ ) {\n\t\tidx = indices.slice(); // we explicitly copy in order to avoid potential mutation when calling `clbk`\n\t\tidx.push( i );\n\t\tif ( FLG ) {\n\t\t\tout.push( clbk.call( thisArg, idx ) );\n\t\t} else {\n\t\t\tout.push( recurse( ndims, shape, d, idx, [], clbk, thisArg ) );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Returns a filled two-dimensional nested array according to a provided callback function.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n* @returns {Array} filled array\n*\n* @example\n* var constantFunction = require( '@stdlib/utils/constant-function' );\n*\n* var out = filledndBy( [ 3, 1 ], constantFunction( 'beep' ) );\n* // returns [ [ 'beep' ], [ 'beep' ], [ 'beep' ] ]\n*/\nfunction filledndBy( shape, clbk, thisArg ) {\n\treturn recurse( shape.length, shape, 0, [], [], clbk, thisArg );\n}\n\n\n// EXPORTS //\n\nmodule.exports = filledndBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled n-dimensional nested array according to a callback function.\n*\n* @module @stdlib/array/base/fillednd-by\n*\n* @example\n* var constantFunction = require( '@stdlib/utils/constant-function' );\n* var filledndBy = require( '@stdlib/array/base/fillednd-by' );\n*\n* var out = filledndBy( [ 3, 1 ], constantFunction( 'beep' ) );\n* // returns [ [ 'beep' ], [ 'beep' ], [ 'beep' ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Returns the first element of an array-like object.\n*\n* @param {Collection} arr - input array\n* @returns {*} - first element\n*\n* @example\n* var out = first( [ 1, 2, 3 ] );\n* // returns 1\n*/\nfunction first( arr ) {\n\tvar get;\n\n\tif ( arr.length === 0 ) {\n\t\treturn;\n\t}\n\t// Resolve an accessor for retrieving input array elements:\n\tget = resolveGetter( arr );\n\n\t// Return the first element:\n\treturn get( arr, 0 );\n}\n\n\n// EXPORTS //\n\nmodule.exports = first;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the first element of an array-like object.\n*\n* @module @stdlib/array/base/first\n*\n* @example\n* var first = require( '@stdlib/array/base/first' );\n*\n* var out = first( [ 1, 2, 3 ] );\n* // returns 1\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar shape2strides = require( '@stdlib/ndarray/base/shape2strides' );\nvar vind2bind = require( '@stdlib/ndarray/base/vind2bind' );\nvar numel = require( '@stdlib/ndarray/base/numel' );\nvar grev = require( '@stdlib/blas/ext/base/grev' );\nvar zeros = require( './../../../base/zeros' );\n\n\n// VARIABLES //\n\nvar MODE = 'throw';\n\n\n// FUNCTIONS //\n\n/**\n* Copies a specified number of array elements to a provided array.\n*\n* @private\n* @param {Array} x - input array\n* @param {NonNegativeInteger} N - number of elements to copy\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0 ];\n* copy( x, 3, out, 1, 0 );\n*\n* var o = out;\n* // returns [ 1, 2, 3 ]\n*/\nfunction copy( x, N, out, stride, offset ) {\n\tvar i;\n\tfor ( i = 0; i < N; i++ ) {\n\t\tout[ offset ] = x[ i ];\n\t\toffset += stride;\n\t}\n}\n\n/**\n* Recursively flattens an array in lexicographic order.\n*\n* @private\n* @param {Array} x - array to flatten\n* @param {NonNegativeInteger} ndims - number of dimensions in the input array\n* @param {NonNegativeIntegerArray} shape - shape of the input array\n* @param {NonNegativeInteger} dim - dimension index\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @returns {NonNegativeInteger} offset for next output array element\n*/\nfunction recurseLexicographic( x, ndims, shape, dim, out, stride, offset ) {\n\tvar FLG;\n\tvar S;\n\tvar d;\n\tvar i;\n\n\t// Check whether we've reached the last dimension:\n\td = dim + 1;\n\tFLG = ( d === ndims );\n\n\tS = shape[ dim ];\n\tfor ( i = 0; i < S; i++ ) {\n\t\tif ( FLG ) {\n\t\t\tout[ offset ] = x[ i ];\n\t\t\toffset += stride;\n\t\t} else {\n\t\t\toffset = recurseLexicographic( x[ i ], ndims, shape, d, out, stride, offset ); // eslint-disable-line max-len\n\t\t}\n\t}\n\treturn offset;\n}\n\n/**\n* Flattens an array in colexicographic order.\n*\n* @private\n* @param {Array} x - array to flatten\n* @param {NonNegativeInteger} ndims - number of dimensions in the input array\n* @param {NonNegativeIntegerArray} shape - shape of the input array\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n*/\nfunction flattenColexicographic( x, ndims, shape, out, stride, offset ) {\n\tvar len;\n\tvar tmp;\n\tvar ord;\n\tvar sh;\n\tvar sx;\n\tvar j;\n\tvar i;\n\n\t// Note that, in contrast to lexicographic iteration, we cannot readily define a straightforward recursive definition for colexicographic iteration. Accordingly, we have to perform a workaround in which we first flatten in lexicographic order and then perform an out-of-place transposition to return an array in colexicographic order.\n\n\t// Determine how many elements will be in the output array:\n\tlen = numel( shape );\n\n\t// For input arrays having an arbitrary number of dimensions, first flatten in lexicographic order:\n\ttmp = zeros( len );\n\trecurseLexicographic( x, ndims, shape, 0, tmp, 1, 0 );\n\n\t// Define the memory layout:\n\tord = 'row-major';\n\n\t// Generate a stride array for lexicographic order:\n\tsx = shape2strides( shape, ord );\n\n\t// Reverse the dimensions and strides (i.e., define the shape and strides of the transpose):\n\tsh = zeros( ndims );\n\tcopy( shape, ndims, sh, 1, 0 );\n\tgrev( ndims, sh, 1 );\n\tgrev( ndims, sx, 1 );\n\n\t// Iterate over each element based on the linear **view** index (note: this has negative performance implications due to lack of data locality)...\n\tfor ( i = 0; i < len; i++ ) {\n\t\tj = vind2bind( sh, sx, 0, ord, i, MODE );\n\t\tout[ offset ] = tmp[ j ];\n\t\toffset += stride;\n\t}\n}\n\n\n// MAIN //\n\n/**\n* Flattens an n-dimensional nested array and assigns elements to a provided output array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array index offset\n* @returns {Collection} output array\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten( x, [ 2, 2 ], false, new Float64Array( 4 ), 1, 0 );\n* // returns <Float64Array>[ 1, 2, 3, 4 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten( x, [ 2, 2 ], true, new Float64Array( 4 ), 1, 0 );\n* // returns <Float64Array>[ 1, 3, 2, 4 ]\n*/\nfunction flatten( x, shape, colexicographic, out, stride, offset ) {\n\tvar ndims = shape.length;\n\tif ( ndims === 0 ) { // 0-dimensional array\n\t\treturn out;\n\t}\n\tif ( ndims === 1 ) { // 1-dimensional array\n\t\t// For 1-dimensional arrays, we can perform a simple copy:\n\t\tcopy( x, shape[ 0 ], out, stride, offset );\n\t\treturn out;\n\t}\n\tif ( colexicographic ) {\n\t\tflattenColexicographic( x, ndims, shape, out, stride, offset );\n\t\treturn out;\n\t}\n\trecurseLexicographic( x, ndims, shape, 0, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar numel = require( '@stdlib/ndarray/base/numel' );\nvar zeros = require( './../../../base/zeros' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\n/**\n* Flattens an n-dimensional nested array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @returns {Array} flattened array\n*\n* @example\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten( x, [ 2, 2 ], false );\n* // returns [ 1, 2, 3, 4 ]\n*\n* @example\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten( x, [ 2, 2 ], true );\n* // returns [ 1, 3, 2, 4 ]\n*/\nfunction flatten( x, shape, colexicographic ) {\n\tvar out = zeros( numel( shape ) );\n\treturn assign( x, shape, colexicographic, out, 1, 0 );\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Flatten an n-dimensional nested array.\n*\n* @module @stdlib/array/base/flatten\n*\n* @example\n* var flatten = require( '@stdlib/array/base/flatten' );\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten( x, [ 2, 2 ], false );\n* // returns [ 1, 2, 3, 4 ]\n*\n* @example\n* var flatten = require( '@stdlib/array/base/flatten' );\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten( x, [ 2, 2 ], true );\n* // returns [ 1, 3, 2, 4 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var flatten = require( '@stdlib/array/base/flatten' );\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = new Float64Array( 4 );\n* var y = flatten.assign( x, [ 2, 2 ], true, out, 1, 0 );\n* // returns <Float64Array>[ 1, 3, 2, 4 ]\n*\n* var bool = ( y === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-len */\n\n'use strict';\n\n// MODULES //\n\nvar shape2strides = require( '@stdlib/ndarray/base/shape2strides' );\nvar vind2bind = require( '@stdlib/ndarray/base/vind2bind' );\nvar numel = require( '@stdlib/ndarray/base/numel' );\nvar grev = require( '@stdlib/blas/ext/base/grev' );\nvar zeros = require( './../../../base/zeros' );\nvar copy = require( './../../../base/copy-indexed' );\n\n\n// VARIABLES //\n\nvar MODE = 'throw';\n\n\n// FUNCTIONS //\n\n/**\n* Copies a specified number of array elements to a provided array according to a callback function.\n*\n* @private\n* @param {Array} x - input array\n* @param {NonNegativeInteger} N - number of elements to copy\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n*\n* @example\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0 ];\n* copyBy( x, 3, out, 1, 0, scale );\n*\n* var o = out;\n* // returns [ 2, 4, 6 ]\n*/\nfunction copyBy( x, N, out, stride, offset, clbk, thisArg ) {\n\tvar i;\n\tfor ( i = 0; i < N; i++ ) {\n\t\tout[ offset ] = clbk.call( thisArg, x[ i ], [ i ], x );\n\t\toffset += stride;\n\t}\n}\n\n/**\n* Recursively flattens an array in lexicographic order.\n*\n* @private\n* @param {Array} orig - original input array\n* @param {Array} x - array to flatten\n* @param {NonNegativeInteger} ndims - number of dimensions in the input array\n* @param {NonNegativeIntegerArray} shape - shape of the input array\n* @param {NonNegativeInteger} dim - dimension index\n* @param {NonNegativeIntegerArray} indices - outer array element indices\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n* @returns {NonNegativeInteger} offset for next output array element\n*/\nfunction recurseLexicographic( orig, x, ndims, shape, dim, indices, out, stride, offset, clbk, thisArg ) { // eslint-disable-line max-params\n\tvar FLG;\n\tvar idx;\n\tvar S;\n\tvar d;\n\tvar i;\n\n\t// Check whether we've reached the last dimension:\n\td = dim + 1;\n\tFLG = ( d === ndims );\n\n\tS = shape[ dim ];\n\tfor ( i = 0; i < S; i++ ) {\n\t\tidx = indices.slice(); // we explicitly copy in order to avoid potential mutation when calling `clbk`\n\t\tidx.push( i );\n\t\tif ( FLG ) {\n\t\t\tout[ offset ] = clbk.call( thisArg, x[ i ], idx, orig );\n\t\t\toffset += stride;\n\t\t} else {\n\t\t\toffset = recurseLexicographic( orig, x[ i ], ndims, shape, d, idx, out, stride, offset, clbk, thisArg );\n\t\t}\n\t}\n\treturn offset;\n}\n\n/**\n* Flattens an array in colexicographic order.\n*\n* @private\n* @param {Array} x - array to flatten\n* @param {NonNegativeInteger} ndims - number of dimensions in the input array\n* @param {NonNegativeIntegerArray} shape - shape of the input array\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n*/\nfunction flattenColexicographic( x, ndims, shape, out, stride, offset, clbk, thisArg ) {\n\tvar len;\n\tvar tmp;\n\tvar ord;\n\tvar sh;\n\tvar sx;\n\tvar j;\n\tvar i;\n\n\t// Note that, in contrast to lexicographic iteration, we cannot readily define a straightforward recursive definition for colexicographic iteration. Accordingly, we have to perform a workaround in which we first flatten in lexicographic order and then perform an out-of-place transposition to return an array in colexicographic order.\n\n\t// Determine how many elements will be in the output array:\n\tlen = numel( shape );\n\n\t// For input arrays having an arbitrary number of dimensions, first flatten in lexicographic order:\n\ttmp = zeros( len );\n\trecurseLexicographic( x, x, ndims, shape, 0, [], tmp, 1, 0, clbk, thisArg );\n\n\t// Define the memory layout:\n\tord = 'row-major';\n\n\t// Generate a stride array for lexicographic order:\n\tsx = shape2strides( shape, ord );\n\n\t// Reverse the dimensions and strides (i.e., define the shape and strides of the transpose):\n\tsh = copy( shape );\n\tgrev( ndims, sh, 1 );\n\tgrev( ndims, sx, 1 );\n\n\t// Iterate over each element based on the linear **view** index (note: this has negative performance implications due to lack of data locality)...\n\tfor ( i = 0; i < len; i++ ) {\n\t\tj = vind2bind( sh, sx, 0, ord, i, MODE );\n\t\tout[ offset ] = tmp[ j ];\n\t\toffset += stride;\n\t}\n}\n\n\n// MAIN //\n\n/**\n* Flattens an n-dimensional nested array according to a callback function and assigns elements to a provided output array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array index offset\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n* @returns {Collection} output array\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flattenBy( x, [ 2, 2 ], false, new Float64Array( 4 ), 1, 0, scale );\n* // returns <Float64Array>[ 2, 4, 6, 8 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flattenBy( x, [ 2, 2 ], true, new Float64Array( 4 ), 1, 0, scale );\n* // returns <Float64Array>[ 2, 6, 4, 8 ]\n*/\nfunction flattenBy( x, shape, colexicographic, out, stride, offset, clbk, thisArg ) {\n\tvar ndims = shape.length;\n\tif ( ndims === 0 ) { // 0-dimensional array\n\t\treturn out;\n\t}\n\tif ( ndims === 1 ) { // 1-dimensional array\n\t\t// For 1-dimensional arrays, we can perform simple iteration:\n\t\tcopyBy( x, shape[ 0 ], out, stride, offset, clbk, thisArg );\n\t\treturn out;\n\t}\n\tif ( colexicographic ) {\n\t\tflattenColexicographic( x, ndims, shape, out, stride, offset, clbk, thisArg );\n\t\treturn out;\n\t}\n\trecurseLexicographic( x, x, ndims, shape, 0, [], out, stride, offset, clbk, thisArg );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flattenBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar numel = require( '@stdlib/ndarray/base/numel' );\nvar zeros = require( './../../../base/zeros' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\n/**\n* Flattens an n-dimensional nested array according to a callback function.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n* @returns {Array} flattened array\n*\n* @example\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flattenBy( x, [ 2, 2 ], false, scale );\n* // returns [ 2, 4, 6, 8 ]\n*\n* @example\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flattenBy( x, [ 2, 2 ], true, scale );\n* // returns [ 2, 6, 4, 8 ]\n*/\nfunction flattenBy( x, shape, colexicographic, clbk, thisArg ) {\n\tvar out = zeros( numel( shape ) );\n\treturn assign( x, shape, colexicographic, out, 1, 0, clbk, thisArg );\n}\n\n\n// EXPORTS //\n\nmodule.exports = flattenBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Flatten an n-dimensional nested array according to a callback function.\n*\n* @module @stdlib/array/base/flatten-by\n*\n* @example\n* var flattenBy = require( '@stdlib/array/base/flatten-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flattenBy( x, [ 2, 2 ], false, scale );\n* // returns [ 2, 4, 6, 8 ]\n*\n* @example\n* var flattenBy = require( '@stdlib/array/base/flatten-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flattenBy( x, [ 2, 2 ], true, scale );\n* // returns [ 2, 6, 4, 8 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var flattenBy = require( '@stdlib/array/base/flatten-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = new Float64Array( 4 );\n* var y = flattenBy.assign( x, [ 2, 2 ], true, out, 1, 0, scale );\n* // returns <Float64Array>[ 2, 6, 4, 8 ]\n*\n* var bool = ( y === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a two-dimensional nested array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Collection>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @returns {Array} flattened array\n*\n* @example\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten2d( x, [ 2, 2 ], false );\n* // returns [ 1, 2, 3, 4 ]\n*\n* @example\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten2d( x, [ 2, 2 ], true );\n* // returns [ 1, 3, 2, 4 ]\n*/\nfunction flatten2d( x, shape, colexicographic ) {\n\tvar out;\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar a0;\n\n\t// Extract loop variables:\n\tS0 = shape[ 1 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 0 ];\n\n\t// Initialize an output array:\n\tout = [];\n\n\t// Iterate over the array dimensions...\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tout.push( x[ i1 ][ i0 ] ); // equivalent to storing in column-major (Fortran-style) order\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\ta0 = x[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tout.push( a0[ i0 ] ); // equivalent to storing in row-major (C-style) order\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a two-dimensional nested array and assigns elements to a provided output array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Collection>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array index offset\n* @returns {Collection} output array\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten2d( x, [ 2, 2 ], false, new Float64Array( 4 ), 1, 0 );\n* // returns <Float64Array>[ 1, 2, 3, 4 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten2d( x, [ 2, 2 ], true, new Float64Array( 4 ), 1, 0 );\n* // returns <Float64Array>[ 1, 3, 2, 4 ]\n*/\nfunction flatten2d( x, shape, colexicographic, out, stride, offset ) {\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar a0;\n\tvar io;\n\n\t// Extract loop variables:\n\tS0 = shape[ 1 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 0 ];\n\n\t// Iterate over the array dimensions...\n\tio = offset;\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tout[ io ] = x[ i1 ][ i0 ]; // equivalent to storing in column-major (Fortran-style) order\n\t\t\t\tio += stride;\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\ta0 = x[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tout[ io ] = a0[ i0 ]; // equivalent to storing in row-major (C-style) order\n\t\t\tio += stride;\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Flatten a two-dimensional nested array.\n*\n* @module @stdlib/array/base/flatten2d\n*\n* @example\n* var flatten2d = require( '@stdlib/array/base/flatten2d' );\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten2d( x, [ 2, 2 ], false );\n* // returns [ 1, 2, 3, 4 ]\n*\n* @example\n* var flatten2d = require( '@stdlib/array/base/flatten2d' );\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten2d( x, [ 2, 2 ], true );\n* // returns [ 1, 3, 2, 4 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var flatten2d = require( '@stdlib/array/base/flatten2d' );\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = new Float64Array( 4 );\n* var y = flatten2d.assign( x, [ 2, 2 ], true, out, 1, 0 );\n* // returns <Float64Array>[ 1, 3, 2, 4 ]\n*\n* var bool = ( y === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a two-dimensional nested array according to a callback function.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Collection>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n* @returns {Array} flattened array\n*\n* @example\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten2dBy( x, [ 2, 2 ], false, scale );\n* // returns [ 2, 4, 6, 8 ]\n*\n* @example\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten2dBy( x, [ 2, 2 ], true, scale );\n* // returns [ 2, 6, 4, 8 ]\n*/\nfunction flatten2dBy( x, shape, colexicographic, clbk, thisArg ) {\n\tvar out;\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar a0;\n\n\t// Extract loop variables:\n\tS0 = shape[ 1 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 0 ];\n\n\t// Initialize an output array:\n\tout = [];\n\n\t// Iterate over the array dimensions...\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tout.push( clbk.call( thisArg, x[ i1 ][ i0 ], [ i1, i0 ], x ) ); // equivalent to storing in column-major (Fortran-style) order\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\ta0 = x[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tout.push( clbk.call( thisArg, a0[ i0 ], [ i1, i0 ], x ) ); // equivalent to storing in row-major (C-style) order\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten2dBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a two-dimensional nested array according to a callback function and assigns elements to a provided output array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Collection>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array index offset\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n* @returns {Collection} output array\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten2dBy( x, [ 2, 2 ], false, new Float64Array( 4 ), 1, 0, scale );\n* // returns <Float64Array>[ 2, 4, 6, 8 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten2dBy( x, [ 2, 2 ], true, new Float64Array( 4 ), 1, 0, scale );\n* // returns <Float64Array>[ 2, 6, 4, 8 ]\n*/\nfunction flatten2dBy( x, shape, colexicographic, out, stride, offset, clbk, thisArg ) { // eslint-disable-line max-len\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar a0;\n\tvar io;\n\n\t// Extract loop variables:\n\tS0 = shape[ 1 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 0 ];\n\n\t// Iterate over the array dimensions...\n\tio = offset;\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tout[ io ] = clbk.call( thisArg, x[ i1 ][ i0 ], [ i1, i0 ], x ); // equivalent to storing in column-major (Fortran-style) order\n\t\t\t\tio += stride;\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\ta0 = x[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tout[ io ] = clbk.call( thisArg, a0[ i0 ], [ i1, i0 ], x ); // equivalent to storing in row-major (C-style) order\n\t\t\tio += stride;\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten2dBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Flatten a two-dimensional nested array according to a callback function.\n*\n* @module @stdlib/array/base/flatten2d-by\n*\n* @example\n* var flatten2dBy = require( '@stdlib/array/base/flatten2d-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten2dBy( x, [ 2, 2 ], false, scale );\n* // returns [ 2, 4, 6, 8 ]\n*\n* @example\n* var flatten2dBy = require( '@stdlib/array/base/flatten2d-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = flatten2dBy( x, [ 2, 2 ], true, scale );\n* // returns [ 2, 6, 4, 8 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var flatten2dBy = require( '@stdlib/array/base/flatten2d-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n*\n* var out = new Float64Array( 4 );\n* var y = flatten2dBy( x, [ 2, 2 ], true, out, 1, 0, scale );\n* // returns <Float64Array>[ 2, 6, 4, 8 ]\n*\n* var bool = ( y === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a three-dimensional nested array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Array<Collection>>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @returns {Array} flattened array\n*\n* @example\n* var x = [ [ [ 1, 2 ] ], [ [ 3, 4 ] ] ];\n*\n* var out = flatten3d( x, [ 2, 1, 2 ], false );\n* // returns [ 1, 2, 3, 4 ]\n*\n* @example\n* var x = [ [ [ 1, 2 ] ], [ [ 3, 4 ] ] ];\n*\n* var out = flatten3d( x, [ 2, 1, 2 ], true );\n* // returns [ 1, 3, 2, 4 ]\n*/\nfunction flatten3d( x, shape, colexicographic ) {\n\tvar out;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar a0;\n\tvar a1;\n\n\t// Extract loop variables:\n\tS0 = shape[ 2 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 1 ];\n\tS2 = shape[ 0 ];\n\n\t// Initialize an output array:\n\tout = [];\n\n\t// Iterate over the array dimensions...\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tout.push( x[ i2 ][ i1 ][ i0 ] ); // equivalent to storing in column-major (Fortran-style) order\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\ta1 = x[ i2 ];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\ta0 = a1[ i1 ];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\tout.push( a0[ i0 ] ); // equivalent to storing in row-major (C-style) order\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a three-dimensional nested array and assigns elements to a provided output array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Array<Collection>>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array index offset\n* @returns {Collection} output array\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var x = [ [ [ 1, 2 ] ], [ [ 3, 4 ] ] ];\n*\n* var out = flatten3d( x, [ 2, 1, 2 ], false, new Float64Array( 4 ), 1, 0 );\n* // returns <Float64Array>[ 1, 2, 3, 4 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var x = [ [ [ 1, 2 ] ], [ [ 3, 4 ] ] ];\n*\n* var out = flatten3d( x, [ 2, 1, 2 ], true, new Float64Array( 4 ), 1, 0 );\n* // returns <Float64Array>[ 1, 3, 2, 4 ]\n*/\nfunction flatten3d( x, shape, colexicographic, out, stride, offset ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar a0;\n\tvar a1;\n\tvar io;\n\n\t// Extract loop variables:\n\tS0 = shape[ 2 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 1 ];\n\tS2 = shape[ 0 ];\n\n\t// Iterate over the array dimensions...\n\tio = offset;\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tout[ io ] = x[ i2 ][ i1 ][ i0 ]; // equivalent to storing in column-major (Fortran-style) order\n\t\t\t\t\tio += stride;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\ta1 = x[ i2 ];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\ta0 = a1[ i1 ];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\tout[ io ] = a0[ i0 ]; // equivalent to storing in row-major (C-style) order\n\t\t\t\tio += stride;\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Flatten a three-dimensional nested array.\n*\n* @module @stdlib/array/base/flatten3d\n*\n* @example\n* var flatten3d = require( '@stdlib/array/base/flatten3d' );\n*\n* var x = [ [ [ 1, 2 ] ], [ [ 3, 4 ] ] ];\n*\n* var out = flatten3d( x, [ 2, 1, 2 ], false );\n* // returns [ 1, 2, 3, 4 ]\n*\n* @example\n* var flatten3d = require( '@stdlib/array/base/flatten3d' );\n*\n* var x = [ [ [ 1, 2 ] ], [ [ 3, 4 ] ] ];\n*\n* var out = flatten3d( x, [ 2, 1, 2 ], true );\n* // returns [ 1, 3, 2, 4 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var flatten3d = require( '@stdlib/array/base/flatten3d' );\n*\n* var x = [ [ [ 1, 2 ] ], [ [ 3, 4 ] ] ];\n*\n* var out = new Float64Array( 4 );\n* var y = flatten3d.assign( x, [ 2, 1, 2 ], true, out, 1, 0 );\n* // returns <Float64Array>[ 1, 3, 2, 4 ]\n*\n* var bool = ( y === out );\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-len */\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a three-dimensional nested array according to a callback function.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Array<Collection>>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n* @returns {Array} flattened array\n*\n* @example\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ 1, 2 ] ], [ [ 3, 4 ] ] ];\n*\n* var out = flatten3dBy( x, [ 2, 1, 2 ], false, scale );\n* // returns [ 2, 4, 6, 8 ]\n*\n* @example\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ 1, 2 ] ], [ [ 3, 4 ] ] ];\n*\n* var out = flatten3dBy( x, [ 2, 1, 2 ], true, scale );\n* // returns [ 2, 6, 4, 8 ]\n*/\nfunction flatten3dBy( x, shape, colexicographic, clbk, thisArg ) {\n\tvar out;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar a0;\n\tvar a1;\n\n\t// Extract loop variables:\n\tS0 = shape[ 2 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 1 ];\n\tS2 = shape[ 0 ];\n\n\t// Initialize an output array:\n\tout = [];\n\n\t// Iterate over the array dimensions...\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tout.push( clbk.call( thisArg, x[ i2 ][ i1 ][ i0 ], [ i2, i1, i0 ], x ) ); // equivalent to storing in column-major (Fortran-style) order\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\ta1 = x[ i2 ];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\ta0 = a1[ i1 ];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\tout.push( clbk.call( thisArg, a0[ i0 ], [ i2, i1, i0 ], x ) ); // equivalent to storing in row-major (C-style) order\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten3dBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-len */\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a three-dimensional nested array according to a callback function and assigns elements to a provided output array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Array<Collection>>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array index offset\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n* @returns {Collection} output array\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ 1, 2 ] ], [ [ 3, 4 ] ] ];\n*\n* var out = flatten3dBy( x, [ 2, 1, 2 ], false, new Float64Array( 4 ), 1, 0, scale );\n* // returns <Float64Array>[ 2, 4, 6, 8 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ 1, 2 ] ], [ [ 3, 4 ] ] ];\n*\n* var out = flatten3dBy( x, [ 2, 1, 2 ], true, new Float64Array( 4 ), 1, 0, scale );\n* // returns <Float64Array>[ 2, 6, 4, 8 ]\n*/\nfunction flatten3dBy( x, shape, colexicographic, out, stride, offset, clbk, thisArg ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar a0;\n\tvar a1;\n\tvar io;\n\n\t// Extract loop variables:\n\tS0 = shape[ 2 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 1 ];\n\tS2 = shape[ 0 ];\n\n\t// Iterate over the array dimensions...\n\tio = offset;\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tout[ io ] = clbk.call( thisArg, x[ i2 ][ i1 ][ i0 ], [ i2, i1, i0 ], x ); // equivalent to storing in column-major (Fortran-style) order\n\t\t\t\t\tio += stride;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\ta1 = x[ i2 ];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\ta0 = a1[ i1 ];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\tout[ io ] = clbk.call( thisArg, a0[ i0 ], [ i2, i1, i0 ], x ); // equivalent to storing in row-major (C-style) order\n\t\t\t\tio += stride;\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten3dBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Flatten a three-dimensional nested array according to a callback function.\n*\n* @module @stdlib/array/base/flatten3d-by\n*\n* @example\n* var flatten3dBy = require( '@stdlib/array/base/flatten3d-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ 1, 2 ] ], [ [ 3, 4 ] ] ];\n*\n* var out = flatten3dBy( x, [ 2, 1, 2 ], false, scale );\n* // returns [ 2, 4, 6, 8 ]\n*\n* @example\n* var flatten3dBy = require( '@stdlib/array/base/flatten3d-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ 1, 2 ] ], [ [ 3, 4 ] ] ];\n*\n* var out = flatten3dBy( x, [ 2, 1, 2 ], true, scale );\n* // returns [ 2, 6, 4, 8 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var flatten3dBy = require( '@stdlib/array/base/flatten3d-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ 1, 2 ] ], [ [ 3, 4 ] ] ];\n*\n* var out = new Float64Array( 4 );\n* var y = flatten3dBy.assign( x, [ 2, 1, 2 ], true, out, 1, 0, scale );\n* // returns <Float64Array>[ 2, 6, 4, 8 ]\n*\n* var bool = ( y === out );\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a four-dimensional nested array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Array<Array<Collection>>>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @returns {Array} flattened array\n*\n* @example\n* var x = [ [ [ [ 1, 2 ] ] ], [ [ [ 3, 4 ] ] ] ];\n*\n* var out = flatten4d( x, [ 2, 1, 1, 2 ], false );\n* // returns [ 1, 2, 3, 4 ]\n*\n* @example\n* var x = [ [ [ [ 1, 2 ] ] ], [ [ [ 3, 4 ] ] ] ];\n*\n* var out = flatten4d( x, [ 2, 1, 1, 2 ], true );\n* // returns [ 1, 3, 2, 4 ]\n*/\nfunction flatten4d( x, shape, colexicographic ) {\n\tvar out;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar a0;\n\tvar a1;\n\tvar a2;\n\n\t// Extract loop variables:\n\tS0 = shape[ 3 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 2 ];\n\tS2 = shape[ 1 ];\n\tS3 = shape[ 0 ];\n\n\t// Initialize an output array:\n\tout = [];\n\n\t// Iterate over the array dimensions...\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\tout.push( x[ i3 ][ i2 ][ i1 ][ i0 ] ); // equivalent to storing in column-major (Fortran-style) order\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\ta2 = x[ i3 ];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\ta1 = a2[ i2 ];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\ta0 = a1[ i1 ];\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\tout.push( a0[ i0 ] ); // equivalent to storing in row-major (C-style) order\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a four-dimensional nested array and assigns elements to a provided output array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Array<Array<Collection>>>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array index offset\n* @returns {Collection} output array\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var x = [ [ [ [ 1, 2 ] ] ], [ [ [ 3, 4 ] ] ] ];\n*\n* var out = flatten4d( x, [ 2, 1, 1, 2 ], false, new Float64Array( 4 ), 1, 0 );\n* // returns <Float64Array>[ 1, 2, 3, 4 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var x = [ [ [ [ 1, 2 ] ] ], [ [ [ 3, 4 ] ] ] ];\n*\n* var out = flatten4d( x, [ 2, 1, 1, 2 ], true, new Float64Array( 4 ), 1, 0 );\n* // returns <Float64Array>[ 1, 3, 2, 4 ]\n*/\nfunction flatten4d( x, shape, colexicographic, out, stride, offset ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar a0;\n\tvar a1;\n\tvar a2;\n\tvar io;\n\n\t// Extract loop variables:\n\tS0 = shape[ 3 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 2 ];\n\tS2 = shape[ 1 ];\n\tS3 = shape[ 0 ];\n\n\t// Iterate over the array dimensions...\n\tio = offset;\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\tout[ io ] = x[ i3 ][ i2 ][ i1 ][ i0 ]; // equivalent to storing in column-major (Fortran-style) order\n\t\t\t\t\t\tio += stride;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\ta2 = x[ i3 ];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\ta1 = a2[ i2 ];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\ta0 = a1[ i1 ];\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\tout[ io ] = a0[ i0 ]; // equivalent to storing in row-major (C-style) order\n\t\t\t\t\tio += stride;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Flatten a four-dimensional nested array.\n*\n* @module @stdlib/array/base/flatten4d\n*\n* @example\n* var flatten4d = require( '@stdlib/array/base/flatten4d' );\n*\n* var x = [ [ [ [ 1, 2 ] ] ], [ [ [ 3, 4 ] ] ] ];\n*\n* var out = flatten4d( x, [ 2, 1, 1, 2 ], false );\n* // returns [ 1, 2, 3, 4 ]\n*\n* @example\n* var flatten4d = require( '@stdlib/array/base/flatten4d' );\n*\n* var x = [ [ [ [ 1, 2 ] ] ], [ [ [ 3, 4 ] ] ] ];\n*\n* var out = flatten4d( x, [ 2, 1, 1, 2 ], true );\n* // returns [ 1, 3, 2, 4 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var flatten4d = require( '@stdlib/array/base/flatten4d' );\n*\n* var x = [ [ [ [ 1, 2 ] ] ], [ [ [ 3, 4 ] ] ] ];\n*\n* var out = new Float64Array( 4 );\n* var y = flatten4d.assign( x, [ 2, 1, 1, 2 ], true, out, 1, 0 );\n* // returns <Float64Array>[ 1, 3, 2, 4 ]\n*\n* var bool = ( y === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-len */\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a four-dimensional nested array according to a callback function.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Array<Array<Collection>>>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n* @returns {Array} flattened array\n*\n* @example\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ [ 1, 2 ] ] ], [ [ [ 3, 4 ] ] ] ];\n*\n* var out = flatten4dBy( x, [ 2, 1, 1, 2 ], false, scale );\n* // returns [ 2, 4, 6, 8 ]\n*\n* @example\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ [ 1, 2 ] ] ], [ [ [ 3, 4 ] ] ] ];\n*\n* var out = flatten4dBy( x, [ 2, 1, 1, 2 ], true, scale );\n* // returns [ 2, 6, 4, 8 ]\n*/\nfunction flatten4dBy( x, shape, colexicographic, clbk, thisArg ) {\n\tvar out;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar a0;\n\tvar a1;\n\tvar a2;\n\n\t// Extract loop variables:\n\tS0 = shape[ 3 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 2 ];\n\tS2 = shape[ 1 ];\n\tS3 = shape[ 0 ];\n\n\t// Initialize an output array:\n\tout = [];\n\n\t// Iterate over the array dimensions...\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\tout.push( clbk.call( thisArg, x[ i3 ][ i2 ][ i1 ][ i0 ], [ i3, i2, i1, i0 ], x ) ); // equivalent to storing in column-major (Fortran-style) order\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\ta2 = x[ i3 ];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\ta1 = a2[ i2 ];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\ta0 = a1[ i1 ];\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\tout.push( clbk.call( thisArg, a0[ i0 ], [ i3, i2, i1, i0 ], x ) ); // equivalent to storing in row-major (C-style) order\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten4dBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-len */\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a four-dimensional nested array according to a callback function and assigns elements to a provided output array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Array<Array<Collection>>>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array index offset\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n* @returns {Collection} output array\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ [ 1, 2 ] ] ], [ [ [ 3, 4 ] ] ] ];\n*\n* var out = flatten4dBy( x, [ 2, 1, 1, 2 ], false, new Float64Array( 4 ), 1, 0, scale );\n* // returns <Float64Array>[ 2, 4, 6, 8 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ [ 1, 2 ] ] ], [ [ [ 3, 4 ] ] ] ];\n*\n* var out = flatten4dBy( x, [ 2, 1, 1, 2 ], true, new Float64Array( 4 ), 1, 0, scale );\n* // returns <Float64Array>[ 2, 6, 4, 8 ]\n*/\nfunction flatten4dBy( x, shape, colexicographic, out, stride, offset, clbk, thisArg ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar a0;\n\tvar a1;\n\tvar a2;\n\tvar io;\n\n\t// Extract loop variables:\n\tS0 = shape[ 3 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 2 ];\n\tS2 = shape[ 1 ];\n\tS3 = shape[ 0 ];\n\n\t// Iterate over the array dimensions...\n\tio = offset;\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\tout[ io ] = clbk.call( thisArg, x[ i3 ][ i2 ][ i1 ][ i0 ], [ i3, i2, i1, i0 ], x ); // equivalent to storing in column-major (Fortran-style) order\n\t\t\t\t\t\tio += stride;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\ta2 = x[ i3 ];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\ta1 = a2[ i2 ];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\ta0 = a1[ i1 ];\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\tout[ io ] = clbk.call( thisArg, a0[ i0 ], [ i3, i2, i1, i0 ], x ); // equivalent to storing in row-major (C-style) order\n\t\t\t\t\tio += stride;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten4dBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Flatten a four-dimensional nested array according to a callback function.\n*\n* @module @stdlib/array/base/flatten4d-by\n*\n* @example\n* var flatten4dBy = require( '@stdlib/array/base/flatten4d-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ [ 1, 2 ] ] ], [ [ [ 3, 4 ] ] ] ];\n*\n* var out = flatten4dBy( x, [ 2, 1, 1, 2 ], false, scale );\n* // returns [ 2, 4, 6, 8 ]\n*\n* @example\n* var flatten4dBy = require( '@stdlib/array/base/flatten4d-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ [ 1, 2 ] ] ], [ [ [ 3, 4 ] ] ] ];\n*\n* var out = flatten4dBy( x, [ 2, 1, 1, 2 ], true, scale );\n* // returns [ 2, 6, 4, 8 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var flatten4dBy = require( '@stdlib/array/base/flatten4d-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ [ 1, 2 ] ] ], [ [ [ 3, 4 ] ] ] ];\n*\n* var out = new Float64Array( 4 );\n* var y = flatten4dBy.assign( x, [ 2, 1, 1, 2 ], true, out, 1, 0, scale );\n* // returns <Float64Array>[ 2, 6, 4, 8 ]\n*\n* var bool = ( y === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a five-dimensional nested array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Array<Array<Array<Collection>>>>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @returns {Array} flattened array\n*\n* @example\n* var x = [ [ [ [ [ 1, 2 ] ] ] ], [ [ [ [ 3, 4 ] ] ] ] ];\n*\n* var out = flatten5d( x, [ 2, 1, 1, 1, 2 ], false );\n* // returns [ 1, 2, 3, 4 ]\n*\n* @example\n* var x = [ [ [ [ [ 1, 2 ] ] ] ], [ [ [ [ 3, 4 ] ] ] ] ];\n*\n* var out = flatten5d( x, [ 2, 1, 1, 1, 2 ], true );\n* // returns [ 1, 3, 2, 4 ]\n*/\nfunction flatten5d( x, shape, colexicographic ) {\n\tvar out;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar a0;\n\tvar a1;\n\tvar a2;\n\tvar a3;\n\n\t// Extract loop variables:\n\tS0 = shape[ 4 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 3 ];\n\tS2 = shape[ 2 ];\n\tS3 = shape[ 1 ];\n\tS4 = shape[ 0 ];\n\n\t// Initialize an output array:\n\tout = [];\n\n\t// Iterate over the array dimensions...\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\t\t\t\tout.push( x[ i4 ][ i3 ][ i2 ][ i1 ][ i0 ] ); // equivalent to storing in column-major (Fortran-style) order\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\ta3 = x[ i4 ];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\ta2 = a3[ i3 ];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\ta1 = a2[ i2 ];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\ta0 = a1[ i1 ];\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\tout.push( a0[ i0 ] ); // equivalent to storing in row-major (C-style) order\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth */\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a five-dimensional nested array and assigns elements to a provided output array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Array<Array<Array<Collection>>>>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array index offset\n* @returns {Collection} output array\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var x = [ [ [ [ [ 1, 2 ] ] ] ], [ [ [ [ 3, 4 ] ] ] ] ];\n*\n* var out = flatten5d( x, [ 2, 1, 1, 1, 2 ], false, new Float64Array( 4 ), 1, 0 );\n* // returns <Float64Array>[ 1, 2, 3, 4 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var x = [ [ [ [ [ 1, 2 ] ] ] ], [ [ [ [ 3, 4 ] ] ] ] ];\n*\n* var out = flatten5d( x, [ 2, 1, 1, 1, 2 ], true, new Float64Array( 4 ), 1, 0 );\n* // returns <Float64Array>[ 1, 3, 2, 4 ]\n*/\nfunction flatten5d( x, shape, colexicographic, out, stride, offset ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar a0;\n\tvar a1;\n\tvar a2;\n\tvar a3;\n\tvar io;\n\n\t// Extract loop variables:\n\tS0 = shape[ 4 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 3 ];\n\tS2 = shape[ 2 ];\n\tS3 = shape[ 1 ];\n\tS4 = shape[ 0 ];\n\n\t// Iterate over the array dimensions...\n\tio = offset;\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\t\t\t\tout[ io ] = x[ i4 ][ i3 ][ i2 ][ i1 ][ i0 ]; // equivalent to storing in column-major (Fortran-style) order\n\t\t\t\t\t\t\tio += stride;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\ta3 = x[ i4 ];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\ta2 = a3[ i3 ];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\ta1 = a2[ i2 ];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\ta0 = a1[ i1 ];\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\tout[ io ] = a0[ i0 ]; // equivalent to storing in row-major (C-style) order\n\t\t\t\t\t\tio += stride;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Flatten a five-dimensional nested array.\n*\n* @module @stdlib/array/base/flatten5d\n*\n* @example\n* var flatten5d = require( '@stdlib/array/base/flatten5d' );\n*\n* var x = [ [ [ [ [ 1, 2 ] ] ] ], [ [ [ [ 3, 4 ] ] ] ] ];\n*\n* var out = flatten5d( x, [ 2, 1, 1, 1, 2 ], false );\n* // returns [ 1, 2, 3, 4 ]\n*\n* @example\n* var flatten5d = require( '@stdlib/array/base/flatten5d' );\n*\n* var x = [ [ [ [ [ 1, 2 ] ] ] ], [ [ [ [ 3, 4 ] ] ] ] ];\n*\n* var out = flatten5d( x, [ 2, 1, 1, 1, 2 ], true );\n* // returns [ 1, 3, 2, 4 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var flatten5d = require( '@stdlib/array/base/flatten5d' );\n*\n* var x = [ [ [ [ [ 1, 2 ] ] ] ], [ [ [ [ 3, 4 ] ] ] ] ];\n*\n* var out = new Float64Array( 4 );\n* var y = flatten5d.assign( x, [ 2, 1, 1, 1, 2 ], true, out, 1, 0 );\n* // returns <Float64Array>[ 1, 3, 2, 4 ]\n*\n* var bool = ( y === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a five-dimensional nested array according to a callback function.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Array<Array<Array<Collection>>>>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n* @returns {Array} flattened array\n*\n* @example\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ [ [ 1, 2 ] ] ] ], [ [ [ [ 3, 4 ] ] ] ] ];\n*\n* var out = flatten5dBy( x, [ 2, 1, 1, 1, 2 ], false, scale );\n* // returns [ 2, 4, 6, 8 ]\n*\n* @example\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ [ [ 1, 2 ] ] ] ], [ [ [ [ 3, 4 ] ] ] ] ];\n*\n* var out = flatten5dBy( x, [ 2, 1, 1, 1, 2 ], true, scale );\n* // returns [ 2, 6, 4, 8 ]\n*/\nfunction flatten5dBy( x, shape, colexicographic, clbk, thisArg ) {\n\tvar out;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar a0;\n\tvar a1;\n\tvar a2;\n\tvar a3;\n\n\t// Extract loop variables:\n\tS0 = shape[ 4 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 3 ];\n\tS2 = shape[ 2 ];\n\tS3 = shape[ 1 ];\n\tS4 = shape[ 0 ];\n\n\t// Initialize an output array:\n\tout = [];\n\n\t// Iterate over the array dimensions...\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\t\t\t\tout.push( clbk.call( thisArg, x[ i4 ][ i3 ][ i2 ][ i1 ][ i0 ], [ i4, i3, i2, i1, i0 ], x ) ); // equivalent to storing in column-major (Fortran-style) order\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\ta3 = x[ i4 ];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\ta2 = a3[ i3 ];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\ta1 = a2[ i2 ];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\ta0 = a1[ i1 ];\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\tout.push( clbk.call( thisArg, a0[ i0 ], [ i4, i3, i2, i1, i0 ], x ) ); // equivalent to storing in row-major (C-style) order\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten5dBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n/* eslint-disable max-depth, max-len */\n\n'use strict';\n\n// MAIN //\n\n/**\n* Flattens a five-dimensional nested array according to a callback function and assigns elements to a provided output array.\n*\n* ## Notes\n*\n* -   The function assumes that all nested arrays have the same length (i.e., the input array is **not** a ragged array).\n*\n* @param {Array<Array<Array<Array<Collection>>>>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {boolean} colexicographic - specifies whether to flatten array values in colexicographic order\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array index offset\n* @param {Function} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n* @returns {Collection} output array\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ [ [ 1, 2 ] ] ] ], [ [ [ [ 3, 4 ] ] ] ] ];\n*\n* var out = flatten5dBy( x, [ 2, 1, 1, 1, 2 ], false, new Float64Array( 4 ), 1, 0, scale );\n* // returns <Float64Array>[ 2, 4, 6, 8 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ [ [ 1, 2 ] ] ] ], [ [ [ [ 3, 4 ] ] ] ] ];\n*\n* var out = flatten5dBy( x, [ 2, 1, 1, 1, 2 ], true, new Float64Array( 4 ), 1, 0, scale );\n* // returns <Float64Array>[ 2, 6, 4, 8 ]\n*/\nfunction flatten5dBy( x, shape, colexicographic, out, stride, offset, clbk, thisArg ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar a0;\n\tvar a1;\n\tvar a2;\n\tvar a3;\n\tvar io;\n\n\t// Extract loop variables:\n\tS0 = shape[ 4 ]; // for nested arrays, the last dimensions have the fastest changing indices\n\tS1 = shape[ 3 ];\n\tS2 = shape[ 2 ];\n\tS3 = shape[ 1 ];\n\tS4 = shape[ 0 ];\n\n\t// Iterate over the array dimensions...\n\tio = offset;\n\tif ( colexicographic ) {\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\t\t\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\t\t\t\tout[ io ] = clbk.call( thisArg, x[ i4 ][ i3 ][ i2 ][ i1 ][ i0 ], [ i4, i3, i2, i1, i0 ], x ); // equivalent to storing in column-major (Fortran-style) order\n\t\t\t\t\t\t\tio += stride;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\ta3 = x[ i4 ];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\ta2 = a3[ i3 ];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\ta1 = a2[ i2 ];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\ta0 = a1[ i1 ];\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\tout[ io ] = clbk.call( thisArg, a0[ i0 ], [ i4, i3, i2, i1, i0 ], x ); // equivalent to storing in row-major (C-style) order\n\t\t\t\t\t\tio += stride;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flatten5dBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Flatten a five-dimensional nested array according to a callback function.\n*\n* @module @stdlib/array/base/flatten5d-by\n*\n* @example\n* var flatten5dBy = require( '@stdlib/array/base/flatten5d-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ [ [ 1, 2 ] ] ] ], [ [ [ [ 3, 4 ] ] ] ] ];\n*\n* var out = flatten5dBy( x, [ 2, 1, 1, 1, 2 ], false, scale );\n* // returns [ 2, 4, 6, 8 ]\n*\n* @example\n* var flatten5dBy = require( '@stdlib/array/base/flatten5d-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ [ [ 1, 2 ] ] ] ], [ [ [ [ 3, 4 ] ] ] ] ];\n*\n* var out = flatten5dBy( x, [ 2, 1, 1, 1, 2 ], true, scale );\n* // returns [ 2, 6, 4, 8 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var flatten5dBy = require( '@stdlib/array/base/flatten5d-by' );\n*\n* function scale( v ) {\n*     return v * 2;\n* }\n*\n* var x = [ [ [ [ [ 1, 2 ] ] ] ], [ [ [ [ 3, 4 ] ] ] ] ];\n*\n* var out = new Float64Array( 4 );\n* var y = flatten5dBy.assign( x, [ 2, 1, 1, 1, 2 ], true, out, 1, 0, scale );\n* // returns <Float64Array>[ 2, 6, 4, 8 ]\n*\n* var bool = ( y === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Reverses the order of elements along the last dimension of a two-dimensional nested input array.\n*\n* ## Notes\n*\n* -   The function does **not** perform a deep copy of nested array elements.\n*\n* @param {ArrayLikeObject<Collection>} x - nested input array\n* @returns {Array<Collection>} output array\n*\n* @example\n* var x = [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ];\n*\n* var out = fliplr2d( x );\n* // returns [ [ 2, 1 ], [ 4, 3 ], [ 6, 5 ] ]\n*/\nfunction fliplr2d( x ) {\n\tvar out;\n\tvar x0;\n\tvar y0;\n\tvar i1;\n\tvar i0;\n\n\tout = [];\n\tfor ( i1 = 0; i1 < x.length; i1++ ) {\n\t\tx0 = x[ i1 ];\n\t\ty0 = [];\n\t\tfor ( i0 = x0.length-1; i0 >= 0; i0-- ) {\n\t\t\ty0.push( x0[ i0 ] );\n\t\t}\n\t\tout.push( y0 );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = fliplr2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Reverse the order of elements along the last dimension of a two-dimensional nested input array.\n*\n* @module @stdlib/array/base/fliplr2d\n*\n* @example\n* var fliplr = require( '@stdlib/array/base/fliplr2d' );\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ];\n*\n* var out = fliplr2d( x );\n* // returns [ [ 2, 1 ], [ 4, 3 ], [ 6, 5 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar fliplr2d = require( './../../../base/fliplr2d' );\n\n\n// MAIN //\n\n/**\n* Reverses the order of elements along the last dimension of a three-dimensional nested input array.\n*\n* ## Notes\n*\n* -   The function does **not** perform a deep copy of nested array elements.\n*\n* @param {ArrayLikeObject<ArrayLikeObject<Collection>>} x - nested input array\n* @returns {Array<Array<Collection>>} output array\n*\n* @example\n* var x = [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ];\n*\n* var out = fliplr3d( x );\n* // returns [ [ [ 2, 1 ], [ 4, 3 ], [ 6, 5 ] ] ]\n*/\nfunction fliplr3d( x ) {\n\tvar out;\n\tvar i;\n\n\tout = [];\n\tfor ( i = 0; i < x.length; i++ ) {\n\t\tout.push( fliplr2d( x[ i ] ) );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = fliplr3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Reverse the order of elements along the last dimension of a three-dimensional nested input array.\n*\n* @module @stdlib/array/base/fliplr3d\n*\n* @example\n* var fliplr = require( '@stdlib/array/base/fliplr3d' );\n*\n* var x = [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ];\n*\n* var out = fliplr3d( x );\n* // returns [ [ [ 2, 1 ], [ 4, 3 ], [ 6, 5 ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar fliplr3d = require( './../../../base/fliplr3d' );\n\n\n// MAIN //\n\n/**\n* Reverses the order of elements along the last dimension of a four-dimensional nested input array.\n*\n* ## Notes\n*\n* -   The function does **not** perform a deep copy of nested array elements.\n*\n* @param {ArrayLikeObject<ArrayLikeObject<ArrayLikeObject<Collection>>>} x - nested input array\n* @returns {Array<Array<Array<Collection>>>} output array\n*\n* @example\n* var x = [ [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ] ];\n*\n* var out = fliplr4d( x );\n* // returns [ [ [ [ 2, 1 ], [ 4, 3 ], [ 6, 5 ] ] ] ]\n*/\nfunction fliplr4d( x ) {\n\tvar out;\n\tvar i;\n\n\tout = [];\n\tfor ( i = 0; i < x.length; i++ ) {\n\t\tout.push( fliplr3d( x[ i ] ) );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = fliplr4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Reverse the order of elements along the last dimension of a four-dimensional nested input array.\n*\n* @module @stdlib/array/base/fliplr4d\n*\n* @example\n* var fliplr = require( '@stdlib/array/base/fliplr4d' );\n*\n* var x = [ [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ] ];\n*\n* var out = fliplr4d( x );\n* // returns [ [ [ [ 2, 1 ], [ 4, 3 ], [ 6, 5 ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar fliplr4d = require( './../../../base/fliplr4d' );\n\n\n// MAIN //\n\n/**\n* Reverses the order of elements along the last dimension of a five-dimensional nested input array.\n*\n* ## Notes\n*\n* -   The function does **not** perform a deep copy of nested array elements.\n*\n* @param {ArrayLikeObject<ArrayLikeObject<ArrayLikeObject<ArrayLikeObject<Collection>>>>} x - nested input array\n* @returns {Array<Array<Array<Array<Collection>>>>} output array\n*\n* @example\n* var x = [ [ [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ] ] ];\n*\n* var out = fliplr5d( x );\n* // returns [ [ [ [ [ 2, 1 ], [ 4, 3 ], [ 6, 5 ] ] ] ] ]\n*/\nfunction fliplr5d( x ) {\n\tvar out;\n\tvar i;\n\n\tout = [];\n\tfor ( i = 0; i < x.length; i++ ) {\n\t\tout.push( fliplr4d( x[ i ] ) );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = fliplr5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Reverse the order of elements along the last dimension of a five-dimensional nested input array.\n*\n* @module @stdlib/array/base/fliplr5d\n*\n* @example\n* var fliplr = require( '@stdlib/array/base/fliplr5d' );\n*\n* var x = [ [ [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ] ] ];\n*\n* var out = fliplr5d( x );\n* // returns [ [ [ [ [ 2, 1 ], [ 4, 3 ], [ 6, 5 ] ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Reverses the order of elements along the first dimension of a two-dimensional nested input array.\n*\n* ## Notes\n*\n* -   The function does **not** perform a deep copy of nested array elements.\n*\n* @param {ArrayLikeObject<Collection>} x - nested input array\n* @returns {Array<Collection>} output array\n*\n* @example\n* var x = [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ];\n*\n* var out = flipud2d( x );\n* // returns [ [ 5, 6 ], [ 3, 4 ], [ 1, 2 ] ]\n*/\nfunction flipud2d( x ) {\n\tvar out;\n\tvar i;\n\n\tout = [];\n\tfor ( i = x.length-1; i >= 0; i-- ) {\n\t\tout.push( x[ i ] );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flipud2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Reverse the order of elements along the first dimension of a two-dimensional nested input array.\n*\n* @module @stdlib/array/base/flipud2d\n*\n* @example\n* var flipud = require( '@stdlib/array/base/flipud2d' );\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ];\n*\n* var out = flipud2d( x );\n* // returns [ [ 5, 6 ], [ 3, 4 ], [ 1, 2 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar flipud2d = require( './../../../base/flipud2d' );\n\n\n// MAIN //\n\n/**\n* Reverses the order of elements along the second-to-last dimension of a three-dimensional nested input array.\n*\n* ## Notes\n*\n* -   The function does **not** perform a deep copy of nested array elements.\n*\n* @param {ArrayLikeObject<ArrayLikeObject<Collection>>} x - nested input array\n* @returns {Array<Array<Collection>>} output array\n*\n* @example\n* var x = [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ];\n*\n* var out = flipud3d( x );\n* // returns [ [ [ 5, 6 ], [ 3, 4 ], [ 1, 2 ] ] ]\n*/\nfunction flipud3d( x ) {\n\tvar out;\n\tvar i;\n\n\tout = [];\n\tfor ( i = 0; i < x.length; i++ ) {\n\t\tout.push( flipud2d( x[ i ] ) );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flipud3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Reverse the order of elements along the second-to-last dimension of a three-dimensional nested input array.\n*\n* @module @stdlib/array/base/flipud3d\n*\n* @example\n* var flipud = require( '@stdlib/array/base/flipud3d' );\n*\n* var x = [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ];\n*\n* var out = flipud3d( x );\n* // returns [ [ [ 5, 6 ], [ 3, 4 ], [ 1, 2 ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar flipud3d = require( './../../../base/flipud3d' );\n\n\n// MAIN //\n\n/**\n* Reverses the order of elements along the second-to-last dimension of a four-dimensional nested input array.\n*\n* ## Notes\n*\n* -   The function does **not** perform a deep copy of nested array elements.\n*\n* @param {ArrayLikeObject<ArrayLikeObject<ArrayLikeObject<Collection>>>} x - nested input array\n* @returns {Array<Array<Array<Collection>>>} output array\n*\n* @example\n* var x = [ [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ] ];\n*\n* var out = flipud4d( x );\n* // returns [ [ [ [ 5, 6 ], [ 3, 4 ], [ 1, 2 ] ] ] ]\n*/\nfunction flipud4d( x ) {\n\tvar out;\n\tvar i;\n\n\tout = [];\n\tfor ( i = 0; i < x.length; i++ ) {\n\t\tout.push( flipud3d( x[ i ] ) );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flipud4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Reverse the order of elements along the second-to-last dimension of a four-dimensional nested input array.\n*\n* @module @stdlib/array/base/flipud4d\n*\n* @example\n* var flipud = require( '@stdlib/array/base/flipud4d' );\n*\n* var x = [ [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ] ];\n*\n* var out = flipud4d( x );\n* // returns [ [ [ [ 5, 6 ], [ 3, 4 ], [ 1, 2 ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar flipud4d = require( './../../../base/flipud4d' );\n\n\n// MAIN //\n\n/**\n* Reverses the order of elements along the second-to-last dimension of a five-dimensional nested input array.\n*\n* ## Notes\n*\n* -   The function does **not** perform a deep copy of nested array elements.\n*\n* @param {ArrayLikeObject<ArrayLikeObject<ArrayLikeObject<ArrayLikeObject<Collection>>>>} x - nested input array\n* @returns {Array<Array<Array<Array<Collection>>>>} output array\n*\n* @example\n* var x = [ [ [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ] ] ];\n*\n* var out = flipud5d( x );\n* // returns [ [ [ [ [ 5, 6 ], [ 3, 4 ], [ 1, 2 ] ] ] ] ]\n*/\nfunction flipud5d( x ) {\n\tvar out;\n\tvar i;\n\n\tout = [];\n\tfor ( i = 0; i < x.length; i++ ) {\n\t\tout.push( flipud4d( x[ i ] ) );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = flipud5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Reverse the order of elements along the second-to-last dimension of a five-dimensional nested input array.\n*\n* @module @stdlib/array/base/flipud5d\n*\n* @example\n* var flipud = require( '@stdlib/array/base/flipud5d' );\n*\n* var x = [ [ [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ] ] ];\n*\n* var out = flipud5d( x );\n* // returns [ [ [ [ [ 5, 6 ], [ 3, 4 ], [ 1, 2 ] ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Converts a strided array to a non-strided generic array.\n*\n* ## Notes\n*\n* -   The function assumes that the input array is compatible with the specified number of elements, index stride, and index offset.\n*\n* @param {NonNegativeInteger} N - number of indexed elements\n* @param {Collection} x - input array\n* @param {integer} stride - index stride\n* @param {NonNegativeInteger} offset - index of the first indexed value in the input array\n* @returns {Array} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4, 5, 6 ];\n*\n* var arr = strided2array( 3, x, 2, 0 );\n* // returns [ 1, 3, 5 ]\n*/\nfunction strided2array( N, x, stride, offset ) {\n\tvar out;\n\tvar get;\n\tvar ix;\n\tvar i;\n\n\t// Resolve an accessor function for retrieving array elements:\n\tget = resolveGetter( x );\n\n\t// Copy strided elements to a dense non-strided array...\n\tix = offset;\n\tout = [];\n\tfor ( i = 0; i < N; i++ ) {\n\t\tout.push( get( x, ix ) );\n\t\tix += stride;\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = strided2array;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a strided array to a non-strided generic array.\n*\n* @module @stdlib/array/base/from-strided\n*\n* @example\n* var strided2array = require( '@stdlib/array/base/from-strided' );\n*\n* var x = [ 1, 2, 3, 4, 5, 6 ];\n*\n* var arr = strided2array( 3, x, 2, 0 );\n* // returns [ 1, 3, 5 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isArray = require( '@stdlib/assert/is-array' );\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Groups element entries as arrays associated with distinct keys.\n*\n* @param {Collection} x - input array\n* @param {Collection} groups - array defining which group an element in the input array belongs to\n* @throws {RangeError} must provide arrays having the same length\n* @returns {Object} group results\n*\n* @example\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n* var groups = [ 'b', 'b', 'f', 'b' ];\n*\n* var out = groupEntries( x, groups );\n* // returns { 'b': [ [ 0, 'beep' ], [ 1, 'boop' ], [ 3, 'bar' ] ], 'f': [ [ 2, 'foo' ] ] }\n*/\nfunction groupEntries( x, groups ) {\n\tvar xget;\n\tvar gget;\n\tvar len;\n\tvar out;\n\tvar g;\n\tvar o;\n\tvar v;\n\tvar i;\n\n\t// Get the number of elements to group:\n\tlen = x.length;\n\tif ( groups.length !== len ) {\n\t\tthrow new RangeError( 'invalid argument. The first and second arguments must have the same length.' );\n\t}\n\t// Resolve accessors for retrieving array elements:\n\txget = resolveGetter( x );\n\tgget = resolveGetter( groups );\n\n\t// Loop over the elements and assign each to a group...\n\tout = {};\n\tfor ( i = 0; i < len; i++ ) {\n\t\tv = xget( x, i );\n\t\tg = gget( groups, i ).toString();\n\t\to = out[ g ];\n\t\tif ( isArray( o ) ) {\n\t\t\to.push( [ i, v ] );\n\t\t} else {\n\t\t\tout[ g ] = [ [ i, v ] ];\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = groupEntries;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Group element entries as arrays associated with distinct keys.\n*\n* @module @stdlib/array/base/group-entries\n*\n* @example\n* var groupEntries = require( '@stdlib/array/base/group-entries' );\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n* var groups = [ 'b', 'b', 'f', 'b' ];\n*\n* var out = groupEntries( x, groups );\n* // returns { 'b': [ [ 0, 'beep' ], [ 1, 'boop' ], [ 3, 'bar' ] ], 'f': [ [ 2, 'foo' ] ] }\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isArray = require( '@stdlib/assert/is-array' );\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Groups element entries according to an indicator function.\n*\n* @param {Collection} x - input array\n* @param {Function} indicator - indicator function specifying which group an element in the input collection belongs to\n* @param {*} [thisArg] - indicator function execution context\n* @returns {Object} group results\n*\n* @example\n* function indicator( v ) {\n*     return v[ 0 ];\n* }\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n*\n* var out = groupEntriesBy( x, indicator );\n* // returns { 'b': [ [ 0, 'beep' ], [ 1, 'boop' ], [ 3, 'bar' ] ], 'f': [ [ 2, 'foo' ] ] }\n*/\nfunction groupEntriesBy( x, indicator, thisArg ) {\n\tvar get;\n\tvar len;\n\tvar out;\n\tvar g;\n\tvar o;\n\tvar v;\n\tvar i;\n\n\t// Get the number of elements to group:\n\tlen = x.length;\n\n\t// Resolve an accessor for retrieving array elements:\n\tget = resolveGetter( x );\n\n\t// Loop over the elements and assign each to a group...\n\tout = {};\n\tfor ( i = 0; i < len; i++ ) {\n\t\tv = get( x, i );\n\t\tg = indicator.call( thisArg, v, i, x );\n\t\to = out[ g ];\n\t\tif ( isArray( o ) ) {\n\t\t\to.push( [ i, v ] );\n\t\t} else {\n\t\t\tout[ g ] = [ [ i, v ] ];\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = groupEntriesBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Group element entries according to an indicator function.\n*\n* @module @stdlib/array/base/group-entries-by\n*\n* @example\n* var groupEntriesBy = require( '@stdlib/array/base/group-entries-by' );\n*\n* function indicator( v ) {\n*     return v[ 0 ];\n* }\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n*\n* var out = groupEntriesBy( x, indicator );\n* // returns { 'b': [ [ 0, 'beep' ], [ 1, 'boop' ], [ 3, 'bar' ] ], 'f': [ [ 2, 'foo' ] ] }\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isArray = require( '@stdlib/assert/is-array' );\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Groups element indices as arrays associated with distinct keys.\n*\n* @param {Collection} x - input array\n* @param {Collection} groups - array defining which group an element in the input array belongs to\n* @throws {RangeError} must provide arrays having the same length\n* @returns {Object} group results\n*\n* @example\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n* var groups = [ 'b', 'b', 'f', 'b' ];\n*\n* var out = groupIndices( x, groups );\n* // returns { 'b': [ 0, 1, 3 ], 'f': [ 2 ] }\n*/\nfunction groupIndices( x, groups ) {\n\tvar gget;\n\tvar len;\n\tvar out;\n\tvar g;\n\tvar o;\n\tvar i;\n\n\t// Get the number of elements to group:\n\tlen = x.length;\n\tif ( groups.length !== len ) {\n\t\tthrow new RangeError( 'invalid argument. The first and second arguments must have the same length.' );\n\t}\n\t// Resolve accessors for retrieving array elements:\n\tgget = resolveGetter( groups );\n\n\t// Loop over the elements and assign each to a group...\n\tout = {};\n\tfor ( i = 0; i < len; i++ ) {\n\t\tg = gget( groups, i ).toString();\n\t\to = out[ g ];\n\t\tif ( isArray( o ) ) {\n\t\t\to.push( i );\n\t\t} else {\n\t\t\tout[ g ] = [ i ];\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = groupIndices;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Group element indices as arrays associated with distinct keys.\n*\n* @module @stdlib/array/base/group-indices\n*\n* @example\n* var groupIndices = require( '@stdlib/array/base/group-indices' );\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n* var groups = [ 'b', 'b', 'f', 'b' ];\n*\n* var out = groupIndices( x, groups );\n* // returns { 'b': [ 0, 1, 3 ], 'f': [ 2 ] }\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isArray = require( '@stdlib/assert/is-array' );\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Groups element indices according to an indicator function.\n*\n* @param {Collection} x - input array\n* @param {Function} indicator - indicator function specifying which group an element in the input collection belongs to\n* @param {*} [thisArg] - indicator function execution context\n* @returns {Object} group results\n*\n* @example\n* function indicator( v ) {\n*     return v[ 0 ];\n* }\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n*\n* var out = groupIndicesBy( x, indicator );\n* // returns { 'b': [ 0, 1, 3 ], 'f': [ 2 ] }\n*/\nfunction groupIndicesBy( x, indicator, thisArg ) {\n\tvar get;\n\tvar len;\n\tvar out;\n\tvar g;\n\tvar o;\n\tvar i;\n\n\t// Get the number of elements to group:\n\tlen = x.length;\n\n\t// Resolve an accessor for retrieving array elements:\n\tget = resolveGetter( x );\n\n\t// Loop over the elements and assign each to a group...\n\tout = {};\n\tfor ( i = 0; i < len; i++ ) {\n\t\tg = indicator.call( thisArg, get( x, i ), i, x );\n\t\to = out[ g ];\n\t\tif ( isArray( o ) ) {\n\t\t\to.push( i );\n\t\t} else {\n\t\t\tout[ g ] = [ i ];\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = groupIndicesBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Group element indices according to an indicator function.\n*\n* @module @stdlib/array/base/group-indices-by\n*\n* @example\n* var groupIndicesBy = require( '@stdlib/array/base/group-indices-by' );\n*\n* function indicator( v ) {\n*     return v[ 0 ];\n* }\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n*\n* var out = groupIndicesBy( x, indicator );\n* // returns { 'b': [ 0, 1, 3 ], 'f': [ 2 ] }\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isArray = require( '@stdlib/assert/is-array' );\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Groups elements as arrays associated with distinct keys.\n*\n* @param {Collection} x - input array\n* @param {Collection} groups - array defining which group an element in the input array belongs to\n* @throws {RangeError} must provide arrays having the same length\n* @returns {Object} group results\n*\n* @example\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n* var groups = [ 'b', 'b', 'f', 'b' ];\n*\n* var out = groupValues( x, groups );\n* // returns { 'b': [ 'beep', 'boop', 'bar' ], 'f': [ 'foo' ] }\n*/\nfunction groupValues( x, groups ) {\n\tvar xget;\n\tvar gget;\n\tvar len;\n\tvar out;\n\tvar g;\n\tvar o;\n\tvar v;\n\tvar i;\n\n\t// Get the number of elements to group:\n\tlen = x.length;\n\tif ( groups.length !== len ) {\n\t\tthrow new RangeError( 'invalid argument. The first and second arguments must have the same length.' );\n\t}\n\t// Resolve accessors for retrieving array elements:\n\txget = resolveGetter( x );\n\tgget = resolveGetter( groups );\n\n\t// Loop over the elements and assign each to a group...\n\tout = {};\n\tfor ( i = 0; i < len; i++ ) {\n\t\tv = xget( x, i );\n\t\tg = gget( groups, i ).toString();\n\t\to = out[ g ];\n\t\tif ( isArray( o ) ) {\n\t\t\to.push( v );\n\t\t} else {\n\t\t\tout[ g ] = [ v ];\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = groupValues;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Group elements as arrays associated with distinct keys.\n*\n* @module @stdlib/array/base/group-values\n*\n* @example\n* var groupValues = require( '@stdlib/array/base/group-values' );\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n* var groups = [ 'b', 'b', 'f', 'b' ];\n*\n* var out = groupValues( x, groups );\n* // returns { 'b': [ 'beep', 'boop', 'bar' ], 'f': [ 'foo' ] }\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isArray = require( '@stdlib/assert/is-array' );\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Groups element values according to an indicator function.\n*\n* @param {Collection} x - input array\n* @param {Function} indicator - indicator function specifying which group an element in the input collection belongs to\n* @param {*} [thisArg] - indicator function execution context\n* @returns {Object} group results\n*\n* @example\n* function indicator( v ) {\n*     return v[ 0 ];\n* }\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n*\n* var out = groupValuesBy( x, indicator );\n* // returns { 'b': [ 'beep', 'boop', 'bar' ], 'f': [ 'foo' ] }\n*/\nfunction groupValuesBy( x, indicator, thisArg ) {\n\tvar get;\n\tvar len;\n\tvar out;\n\tvar g;\n\tvar o;\n\tvar v;\n\tvar i;\n\n\t// Get the number of elements to group:\n\tlen = x.length;\n\n\t// Resolve an accessor for retrieving array elements:\n\tget = resolveGetter( x );\n\n\t// Loop over the elements and assign each to a group...\n\tout = {};\n\tfor ( i = 0; i < len; i++ ) {\n\t\tv = get( x, i );\n\t\tg = indicator.call( thisArg, v, i, x );\n\t\to = out[ g ];\n\t\tif ( isArray( o ) ) {\n\t\t\to.push( v );\n\t\t} else {\n\t\t\tout[ g ] = [ v ];\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = groupValuesBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Group element values according to an indicator function.\n*\n* @module @stdlib/array/base/group-values-by\n*\n* @example\n* var groupValuesBy = require( '@stdlib/array/base/group-values-by' );\n*\n* function indicator( v ) {\n*     return v[ 0 ];\n* }\n*\n* var x = [ 'beep', 'boop', 'foo', 'bar' ];\n*\n* var out = groupValuesBy( x, indicator );\n* // returns { 'b': [ 'beep', 'boop', 'bar' ], 'f': [ 'foo' ] }\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar ceil = require( '@stdlib/math/base/special/ceil' );\n\n\n// MAIN //\n\n/**\n* Generates a linearly spaced numeric array according to a provided increment.\n*\n* @param {number} x1 - first array value\n* @param {number} x2 - array element bound\n* @param {number} increment - increment\n* @returns {Array} linearly spaced numeric array\n*\n* @example\n* var arr = incrspace( 0, 11, 2 );\n* // returns [ 0, 2, 4, 6, 8, 10 ]\n*/\nfunction incrspace( x1, x2, increment ) {\n\tvar arr;\n\tvar len;\n\tvar i;\n\n\tlen = ceil( ( x2-x1 ) / increment );\n\tif ( len <= 1 ) {\n\t\treturn [ x1 ];\n\t}\n\tarr = [ x1 ];\n\tfor ( i = 1; i < len; i++ ) {\n\t\tarr.push( x1 + (increment*i) );\n\t}\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = incrspace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Generate a linearly spaced numeric array according to a provided increment.\n*\n* @module @stdlib/array/base/incrspace\n*\n* @example\n* var incrspace = require( '@stdlib/array/base/incrspace' );\n*\n* var arr = incrspace( 0, 11, 2 );\n* // returns [ 0, 2, 4, 6, 8, 10 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar arraylike2object = require( './../../../base/arraylike2object' );\nvar isnan = require( '@stdlib/math/base/assert/is-nan' );\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether an object has a specified method.\n*\n* @private\n* @param {Object} obj - input object\n* @param {string} method - method name\n* @returns {boolean} boolean indicating whether an object has a specified method\n*\n* @example\n* var bool = hasMethod( [], 'indexOf' );\n* // returns true\n*\n* @example\n* var bool = hasMethod( [], 'beep' );\n* // returns false\n*/\nfunction hasMethod( obj, method ) {\n\treturn ( typeof obj[ method ] === 'function' );\n}\n\n/**\n* Returns the index of the first element which equals a provided search element.\n*\n* @private\n* @param {Collection} x - input array\n* @param {*} searchElement - search element\n* @param {NonNegativeInteger} fromIndex - starting index (inclusive)\n* @param {boolean} equalNaNs - boolean indicating whether NaNs should be considered equal\n* @returns {integer} index\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var idx = internal( x, 2, 0, false );\n* // returns 1\n*/\nfunction internal( x, searchElement, fromIndex, equalNaNs ) {\n\tvar i;\n\tif ( equalNaNs && isnan( searchElement ) ) {\n\t\tfor ( i = fromIndex; i < x.length; i++ ) {\n\t\t\tif ( isnan( x[ i ] ) ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t}\n\tfor ( i = fromIndex; i < x.length; i++ ) {\n\t\tif ( searchElement === x[ i ] ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\n/**\n* Returns the index of the first element which equals a provided search element.\n*\n* @private\n* @param {Object} x - input array object\n* @param {*} searchElement - search element\n* @param {NonNegativeInteger} fromIndex - starting index (inclusive)\n* @param {boolean} equalNaNs - boolean indicating whether NaNs should be considered equal\n* @returns {integer} index\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' );\n* var arraylike2object = require( '@stdlib/array/base/arraylike2object' );\n*\n* var x = arraylike2object( toAccessorArray( [ 1, 2, 3, 4 ] ) );\n*\n* var idx = accessors( x, 2, 0, false );\n* // returns 1\n*/\nfunction accessors( x, searchElement, fromIndex, equalNaNs ) {\n\tvar data;\n\tvar get;\n\tvar i;\n\n\tdata = x.data;\n\tget = x.accessors[ 0 ];\n\n\tif ( equalNaNs && isnan( searchElement ) ) {\n\t\tfor ( i = fromIndex; i < data.length; i++ ) {\n\t\t\tif ( isnan( get( data, i ) ) ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t}\n\tfor ( i = fromIndex; i < data.length; i++ ) {\n\t\tif ( searchElement === get( data, i ) ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\n\n// MAIN //\n\n/**\n* Returns the index of the first element which equals a provided search element.\n*\n* ## Notes\n*\n* -   If unable to find an element which equals a provided search element, the function returns `-1`.\n*\n* @param {Collection} x - input array\n* @param {*} searchElement - search element\n* @param {integer} fromIndex - starting index (inclusive)\n* @param {boolean} equalNaNs - boolean indicating whether NaNs should be considered equal\n* @returns {integer} index\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var idx = indexOf( x, 2, 0, false );\n* // returns 1\n*\n* @example\n* var Int32Array = require( '@stdlib/array/int32' );\n*\n* var x = new Int32Array( [ 1, 2, 3, 4 ] );\n*\n* var idx = indexOf( x, 2, 0, false );\n* // returns 1\n*/\nfunction indexOf( x, searchElement, fromIndex, equalNaNs ) {\n\tvar obj;\n\tif ( hasMethod( x, 'indexOf' ) && equalNaNs === false ) {\n\t\treturn x.indexOf( searchElement, fromIndex );\n\t}\n\tif ( fromIndex < 0 ) {\n\t\tfromIndex += x.length;\n\t\tif ( fromIndex < 0 ) {\n\t\t\tfromIndex = 0;\n\t\t}\n\t}\n\tobj = arraylike2object( x );\n\tif ( obj.accessorProtocol ) {\n\t\treturn accessors( obj, searchElement, fromIndex, equalNaNs );\n\t}\n\treturn internal( x, searchElement, fromIndex, equalNaNs );\n}\n\n\n// EXPORTS //\n\nmodule.exports = indexOf;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the index of the first element which equals a provided search element.\n*\n* @module @stdlib/array/base/index-of\n*\n* @example\n* var indexOf = require( '@stdlib/array/base/index-of' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var idx = indexOf( x, 2, 0, false );\n* // returns 1\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Returns the last element of an array-like object.\n*\n* @param {Collection} arr - input array\n* @returns {*} - last element\n*\n* @example\n* var out = last( [ 1, 2, 3 ] );\n* // returns 3\n*/\nfunction last( arr ) {\n\tvar get;\n\tvar idx;\n\n\t// Resolve an accessor for retrieving input array elements:\n\tget = resolveGetter( arr );\n\n\t// Resolve the last index:\n\tidx = arr.length - 1;\n\n\t// Return the last element:\n\tif ( idx < 0 ) {\n\t\treturn;\n\t}\n\treturn get( arr, idx );\n}\n\n\n// EXPORTS //\n\nmodule.exports = last;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the last element of an array-like object.\n*\n* @module @stdlib/array/base/last\n*\n* @example\n* var last = require( '@stdlib/array/base/last' );\n*\n* var out = last( [ 1, 2, 3 ] );\n* // returns 3\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar arraylike2object = require( './../../../base/arraylike2object' );\nvar isnan = require( '@stdlib/math/base/assert/is-nan' );\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether an object has a specified method.\n*\n* @private\n* @param {Object} obj - input object\n* @param {string} method - method name\n* @returns {boolean} boolean indicating whether an object has a specified method\n*\n* @example\n* var bool = hasMethod( [], 'lastIndexOf' );\n* // returns true\n*\n* @example\n* var bool = hasMethod( [], 'beep' );\n* // returns false\n*/\nfunction hasMethod( obj, method ) {\n\treturn ( typeof obj[ method ] === 'function' );\n}\n\n/**\n* Returns the index of the last element which equals a provided search element.\n*\n* @private\n* @param {Collection} x - input array\n* @param {*} searchElement - search element\n* @param {NonNegativeInteger} fromIndex - starting index (inclusive)\n* @param {boolean} equalNaNs - boolean indicating whether NaNs should be considered equal\n* @returns {integer} index\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var idx = internal( x, 2, 3, false );\n* // returns 1\n*/\nfunction internal( x, searchElement, fromIndex, equalNaNs ) {\n\tvar i;\n\tif ( equalNaNs && isnan( searchElement ) ) {\n\t\tfor ( i = fromIndex; i >= 0; i-- ) {\n\t\t\tif ( isnan( x[ i ] ) ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t}\n\tfor ( i = fromIndex; i >= 0; i-- ) {\n\t\tif ( searchElement === x[ i ] ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\n/**\n* Returns the index of the last element which equals a provided search element.\n*\n* @private\n* @param {Object} x - input array object\n* @param {*} searchElement - search element\n* @param {NonNegativeInteger} fromIndex - starting index (inclusive)\n* @param {boolean} equalNaNs - boolean indicating whether NaNs should be considered equal\n* @returns {integer} index\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' );\n* var arraylike2object = require( '@stdlib/array/base/arraylike2object' );\n*\n* var x = arraylike2object( toAccessorArray( [ 1, 2, 3, 4 ] ) );\n*\n* var idx = accessors( x, 2, 3, false );\n* // returns 1\n*/\nfunction accessors( x, searchElement, fromIndex, equalNaNs ) {\n\tvar data;\n\tvar get;\n\tvar i;\n\n\tdata = x.data;\n\tget = x.accessors[ 0 ];\n\n\tif ( equalNaNs && isnan( searchElement ) ) {\n\t\tfor ( i = fromIndex; i >= 0; i-- ) {\n\t\t\tif ( isnan( get( data, i ) ) ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t}\n\tfor ( i = fromIndex; i >= 0; i-- ) {\n\t\tif ( searchElement === get( data, i ) ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\n\n// MAIN //\n\n/**\n* Returns the index of the last element which equals a provided search element.\n*\n* ## Notes\n*\n* -   If unable to find an element which equals a provided search element, the function returns `-1`.\n*\n* @param {Collection} x - input array\n* @param {*} searchElement - search element\n* @param {integer} fromIndex - starting index (inclusive)\n* @param {boolean} equalNaNs - boolean indicating whether NaNs should be considered equal\n* @returns {integer} index\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var idx = lastIndexOf( x, 2, 3, false );\n* // returns 1\n*\n* @example\n* var Int32Array = require( '@stdlib/array/int32' );\n*\n* var x = new Int32Array( [ 1, 2, 3, 4 ] );\n*\n* var idx = lastIndexOf( x, 2, 3, false );\n* // returns 1\n*/\nfunction lastIndexOf( x, searchElement, fromIndex, equalNaNs ) {\n\tvar obj;\n\tif ( hasMethod( x, 'lastIndexOf' ) && equalNaNs === false ) {\n\t\treturn x.lastIndexOf( searchElement, fromIndex );\n\t}\n\tif ( fromIndex < 0 ) {\n\t\tfromIndex += x.length;\n\t\tif ( fromIndex < 0 ) {\n\t\t\treturn -1;\n\t\t}\n\t} else if ( fromIndex > x.length ) {\n\t\tfromIndex = x.length - 1;\n\t}\n\tobj = arraylike2object( x );\n\tif ( obj.accessorProtocol ) {\n\t\treturn accessors( obj, searchElement, fromIndex, equalNaNs );\n\t}\n\treturn internal( x, searchElement, fromIndex, equalNaNs );\n}\n\n\n// EXPORTS //\n\nmodule.exports = lastIndexOf;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the index of the last element which equals a provided search element.\n*\n* @module @stdlib/array/base/last-index-of\n*\n* @example\n* var lastIndexOf = require( '@stdlib/array/base/last-index-of' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var idx = lastIndexOf( x, 2, 3, false );\n* // returns 1\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Generates a linearly spaced numeric array.\n*\n* @param {number} x1 - first array value\n* @param {number} x2 - last array value\n* @param {NonNegativeInteger} len - length of output array\n* @returns {Array} linearly spaced numeric array\n*\n* @example\n* var arr = linspace( 0, 100, 6 );\n* // returns [ 0, 20, 40, 60, 80, 100 ]\n*/\nfunction linspace( x1, x2, len ) {\n\tvar arr;\n\tvar N;\n\tvar d;\n\tvar i;\n\n\tif ( len === 0 ) {\n\t\treturn [];\n\t}\n\t// Calculate the increment:\n\tN = len - 1;\n\td = ( x2-x1 ) / N;\n\n\t// Build the output array...\n\tarr = [ x1 ];\n\tfor ( i = 1; i < N; i++ ) {\n\t\tarr.push( x1 + (d*i) );\n\t}\n\tarr.push( x2 );\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = linspace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Generate a linearly spaced numeric array.\n*\n* @module @stdlib/array/base/linspace\n*\n* @example\n* var linspace = require( '@stdlib/array/base/linspace' );\n*\n* var arr = linspace( 0, 100, 6 );\n* // returns [ 0, 20, 40, 60, 80, 100 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar pow = require( '@stdlib/math/base/special/pow' );\n\n\n// MAIN //\n\n/**\n* Generates a logarithmically spaced numeric array.\n*\n* @param {number} a - exponent of start value\n* @param {number} b - exponent of end value\n* @param {NonNegativeInteger} len - length of output array\n* @returns {Array} logarithmically spaced numeric array\n*\n* @example\n* var arr = logspace( 0, 2, 6 );\n* // returns [ 1, ~2.5, ~6.31, ~15.85, ~39.81, 100 ]\n*/\nfunction logspace( a, b, len ) {\n\tvar arr;\n\tvar N;\n\tvar d;\n\tvar i;\n\n\tif ( len === 0 ) {\n\t\treturn [];\n\t}\n\t// Calculate the increment:\n\tN = len - 1;\n\td = ( b-a ) / N;\n\n\t// Build the output array...\n\tarr = [ pow( 10, a ) ];\n\tfor ( i = 1; i < N; i++ ) {\n\t\tarr.push( pow( 10, a+(d*i) ) );\n\t}\n\tarr.push( pow( 10, b ) );\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = logspace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Generate a logarithmically spaced numeric array.\n*\n* @module @stdlib/array/base/logspace\n*\n* @example\n* var logspace = require( '@stdlib/array/base/logspace' );\n*\n* var arr = logspace( 0, 2, 6 );\n* // returns [ 1, ~2.5, ~6.31, ~15.85, ~39.81, 100 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a function to elements in a two-dimensional nested input array and assigns results to elements in a new two-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Collection>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Function} fcn - function to apply\n* @param {*} [thisArg] - function execution context\n* @returns {Array<Array>} output array\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = map2d( x, shape, scale );\n* // returns [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ]\n*/\nfunction map2d( x, shape, fcn, thisArg ) {\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar x0;\n\tvar y0;\n\tvar y;\n\n\tS0 = shape[ 1 ];\n\tS1 = shape[ 0 ];\n\ty = [];\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tx0 = x[ i1 ];\n\t\ty0 = [];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\ty0.push( fcn.call( thisArg, x0[ i0 ], [ i1, i0 ], x ) );\n\t\t}\n\t\ty.push( y0 );\n\t}\n\treturn y;\n}\n\n\n// EXPORTS //\n\nmodule.exports = map2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a function to elements in a two-dimensional nested input array and assigns results to elements in a two-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Collection>} x - input nested array\n* @param {ArrayLikeObject<Collection>} y - output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Function} fcn - function to apply\n* @param {*} [thisArg] - function execution context\n* @returns {Array<Array>} output array\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = zeros2d( shape );\n*\n* var out = map2d( x, y, shape, scale );\n* // returns [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ]\n*\n* var bool = ( out === y );\n* // returns true\n*/\nfunction map2d( x, y, shape, fcn, thisArg ) {\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar x0;\n\tvar y0;\n\n\tS0 = shape[ 1 ];\n\tS1 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 ) {\n\t\treturn y;\n\t}\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tx0 = x[ i1 ];\n\t\ty0 = y[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\ty0[ i0 ] = fcn.call( thisArg, x0[ i0 ], [ i1, i0 ], x );\n\t\t}\n\t}\n\treturn y;\n}\n\n\n// EXPORTS //\n\nmodule.exports = map2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a function to elements in a two-dimensional nested input array and assign results to elements in a new two-dimensional nested output array.\n*\n* @module @stdlib/array/base/map2d\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var map2d = require( '@stdlib/array/base/map2d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = map2d( x, shape, scale );\n* // returns [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ]\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var map2d = require( '@stdlib/array/base/map2d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = zeros2d( shape );\n*\n* var out = map2d.assign( x, y, shape, scale );\n* // returns [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ]\n*\n* var bool = ( out === y );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a function to elements in a three-dimensional nested input array and assigns results to elements in a new three-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Collection>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Function} fcn - function to apply\n* @param {*} [thisArg] - function execution context\n* @returns {Array<Array>} output array\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = map3d( x, shape, scale );\n* // returns [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ]\n*/\nfunction map3d( x, shape, fcn, thisArg ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar x0;\n\tvar y0;\n\tvar x1;\n\tvar y1;\n\tvar y;\n\n\tS0 = shape[ 2 ];\n\tS1 = shape[ 1 ];\n\tS2 = shape[ 0 ];\n\ty = [];\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\tx1 = x[ i2 ];\n\t\ty1 = [];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\tx0 = x1[ i1 ];\n\t\t\ty0 = [];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\ty0.push( fcn.call( thisArg, x0[ i0 ], [ i2, i1, i0 ], x ) );\n\t\t\t}\n\t\t\ty1.push( y0 );\n\t\t}\n\t\ty.push( y1 );\n\t}\n\treturn y;\n}\n\n\n// EXPORTS //\n\nmodule.exports = map3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a function to elements in a three-dimensional nested input array and assigns results to elements in a three-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Collection>} x - input nested array\n* @param {ArrayLikeObject<Collection>} y - output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Function} fcn - function to apply\n* @param {*} [thisArg] - function execution context\n* @returns {Array<Array>} output array\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = zeros3d( shape );\n*\n* var out = map3d( x, y, shape, scale );\n* // returns [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ]\n*\n* var bool = ( out === y );\n* // returns true\n*/\nfunction map3d( x, y, shape, fcn, thisArg ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar x0;\n\tvar y0;\n\tvar x1;\n\tvar y1;\n\n\tS0 = shape[ 2 ];\n\tS1 = shape[ 1 ];\n\tS2 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 ) {\n\t\treturn y;\n\t}\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\tx1 = x[ i2 ];\n\t\ty1 = y[ i2 ];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\tx0 = x1[ i1 ];\n\t\t\ty0 = y1[ i1 ];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\ty0[ i0 ] = fcn.call( thisArg, x0[ i0 ], [ i2, i1, i0 ], x );\n\t\t\t}\n\t\t}\n\t}\n\treturn y;\n}\n\n\n// EXPORTS //\n\nmodule.exports = map3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a function to elements in a three-dimensional nested input array and assign results to elements in a new three-dimensional nested output array.\n*\n* @module @stdlib/array/base/map3d\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var map3d = require( '@stdlib/array/base/map3d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = map3d( x, shape, scale );\n* // returns [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ]\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n* var map3d = require( '@stdlib/array/base/map3d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = zeros3d( shape );\n*\n* var out = map3d.assign( x, y, shape, scale );\n* // returns [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ]\n*\n* var bool = ( out === y );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a function to elements in a four-dimensional nested input array and assigns results to elements in a new four-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Collection>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Function} fcn - function to apply\n* @param {*} [thisArg] - function execution context\n* @returns {Array<Array>} output array\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 1, 2, 2 ];\n*\n* var x = ones4d( shape );\n* var y = map4d( x, shape, scale );\n* // returns [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ]\n*/\nfunction map4d( x, shape, fcn, thisArg ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar x0;\n\tvar y0;\n\tvar x1;\n\tvar y1;\n\tvar x2;\n\tvar y2;\n\tvar y;\n\n\tS0 = shape[ 3 ];\n\tS1 = shape[ 2 ];\n\tS2 = shape[ 1 ];\n\tS3 = shape[ 0 ];\n\ty = [];\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\tx2 = x[ i3 ];\n\t\ty2 = [];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\tx1 = x2[ i2 ];\n\t\t\ty1 = [];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tx0 = x1[ i1 ];\n\t\t\t\ty0 = [];\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\ty0.push( fcn.call( thisArg, x0[ i0 ], [ i3, i2, i1, i0 ], x ) ); // eslint-disable-line max-len\n\t\t\t\t}\n\t\t\t\ty1.push( y0 );\n\t\t\t}\n\t\t\ty2.push( y1 );\n\t\t}\n\t\ty.push( y2 );\n\t}\n\treturn y;\n}\n\n\n// EXPORTS //\n\nmodule.exports = map4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a function to elements in a four-dimensional nested input array and assigns results to elements in a four-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Collection>} x - input nested array\n* @param {ArrayLikeObject<Collection>} y - output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Function} fcn - function to apply\n* @param {*} [thisArg] - function execution context\n* @returns {Array<Array>} output array\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 1, 2, 2 ];\n*\n* var x = ones4d( shape );\n* var y = zeros4d( shape );\n*\n* var out = map4d( x, y, shape, scale );\n* // returns [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ]\n*\n* var bool = ( out === y );\n* // returns true\n*/\nfunction map4d( x, y, shape, fcn, thisArg ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar x0;\n\tvar y0;\n\tvar x1;\n\tvar y1;\n\tvar x2;\n\tvar y2;\n\n\tS0 = shape[ 3 ];\n\tS1 = shape[ 2 ];\n\tS2 = shape[ 1 ];\n\tS3 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 ) {\n\t\treturn y;\n\t}\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\tx2 = x[ i3 ];\n\t\ty2 = y[ i3 ];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\tx1 = x2[ i2 ];\n\t\t\ty1 = y2[ i2 ];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tx0 = x1[ i1 ];\n\t\t\t\ty0 = y1[ i1 ];\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\ty0[ i0 ] = fcn.call( thisArg, x0[ i0 ], [ i3, i2, i1, i0 ], x ); // eslint-disable-line max-len\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn y;\n}\n\n\n// EXPORTS //\n\nmodule.exports = map4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a function to elements in a four-dimensional nested input array and assign results to elements in a new four-dimensional nested output array.\n*\n* @module @stdlib/array/base/map4d\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var map4d = require( '@stdlib/array/base/map4d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 1, 2, 2 ];\n*\n* var x = ones4d( shape );\n* var y = map4d( x, shape, scale );\n* // returns [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ]\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n* var map4d = require( '@stdlib/array/base/map4d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 1, 2, 2 ];\n*\n* var x = ones4d( shape );\n* var y = zeros4d( shape );\n*\n* var out = map4d.assign( x, y, shape, scale );\n* // returns [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ]\n*\n* var bool = ( out === y );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a function to elements in a five-dimensional nested input array and assigns results to elements in a new five-dimensional nested output array.\n*\n* @param {ArrayLikeObject<Collection>} x - input nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Function} fcn - function to apply\n* @param {*} [thisArg] - function execution context\n* @returns {Array<Array>} output array\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* var x = ones5d( shape );\n* var y = map5d( x, shape, scale );\n* // returns [ [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ] ]\n*/\nfunction map5d( x, shape, fcn, thisArg ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar x0;\n\tvar y0;\n\tvar x1;\n\tvar y1;\n\tvar x2;\n\tvar y2;\n\tvar x3;\n\tvar y3;\n\tvar y;\n\n\tS0 = shape[ 4 ];\n\tS1 = shape[ 3 ];\n\tS2 = shape[ 2 ];\n\tS3 = shape[ 1 ];\n\tS4 = shape[ 0 ];\n\ty = [];\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\tx3 = x[ i4 ];\n\t\ty3 = [];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\tx2 = x3[ i3 ];\n\t\t\ty2 = [];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\tx1 = x2[ i2 ];\n\t\t\t\ty1 = [];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\tx0 = x1[ i1 ];\n\t\t\t\t\ty0 = [];\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\ty0.push( fcn.call( thisArg, x0[ i0 ], [ i4, i3, i2, i1, i0 ], x ) ); // eslint-disable-line max-len\n\t\t\t\t\t}\n\t\t\t\t\ty1.push( y0 );\n\t\t\t\t}\n\t\t\t\ty2.push( y1 );\n\t\t\t}\n\t\t\ty3.push( y2 );\n\t\t}\n\t\ty.push( y3 );\n\t}\n\treturn y;\n}\n\n\n// EXPORTS //\n\nmodule.exports = map5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a function to elements in a five-dimensional nested input array and assigns results to elements in a five-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Collection>} x - input nested array\n* @param {ArrayLikeObject<Collection>} y - output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Function} fcn - function to apply\n* @param {*} [thisArg] - function execution context\n* @returns {Array<Array>} output array\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* var x = ones5d( shape );\n* var y = zeros5d( shape );\n*\n* var out = map5d( x, y, shape, scale );\n* // returns [ [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ] ]\n*\n* var bool = ( out === y );\n* // returns true\n*/\nfunction map5d( x, y, shape, fcn, thisArg ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar x0;\n\tvar y0;\n\tvar x1;\n\tvar y1;\n\tvar x2;\n\tvar y2;\n\tvar x3;\n\tvar y3;\n\n\tS0 = shape[ 4 ];\n\tS1 = shape[ 3 ];\n\tS2 = shape[ 2 ];\n\tS3 = shape[ 1 ];\n\tS4 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 || S4 <= 0 ) {\n\t\treturn y;\n\t}\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\tx3 = x[ i4 ];\n\t\ty3 = y[ i4 ];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\tx2 = x3[ i3 ];\n\t\t\ty2 = y3[ i3 ];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\tx1 = x2[ i2 ];\n\t\t\t\ty1 = y2[ i2 ];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\tx0 = x1[ i1 ];\n\t\t\t\t\ty0 = y1[ i1 ];\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\ty0[ i0 ] = fcn.call( thisArg, x0[ i0 ], [ i4, i3, i2, i1, i0 ], x ); // eslint-disable-line max-len\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn y;\n}\n\n\n// EXPORTS //\n\nmodule.exports = map5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a function to elements in a five-dimensional nested input array and assign results to elements in a new five-dimensional nested output array.\n*\n* @module @stdlib/array/base/map5d\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var map5d = require( '@stdlib/array/base/map5d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* var x = ones5d( shape );\n* var y = map5d( x, shape, scale );\n* // returns [ [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ] ]\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n* var map5d = require( '@stdlib/array/base/map5d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* var x = ones5d( shape );\n* var y = zeros5d( shape );\n*\n* var out = map5d.assign( x, y, shape, scale );\n* // returns [ [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ] ]\n*\n* var bool = ( out === y );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a binary callback to elements in two two-dimensional nested input arrays according to elements in a two-dimensional nested mask array and assigns results to elements in a two-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing two input nested arrays, an input nested mask array, and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - unary callback\n* @returns {void}\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = ones2d( shape );\n* var z = zeros2d( shape );\n*\n* var mask = [ [ 0, 1 ], [ 0, 0 ] ];\n*\n* mskbinary2d( [ x, y, mask, z ], shape, add );\n*\n* console.log( z );\n* // => [ [ 2.0, 0.0 ], [ 2.0, 2.0 ] ]\n*/\nfunction mskbinary2d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar m0;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar m;\n\n\tS0 = shape[ 1 ];\n\tS1 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 3 ];\n\tm = arrays[ 2 ];\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tx0 = x[ i1 ];\n\t\ty0 = y[ i1 ];\n\t\tz0 = z[ i1 ];\n\t\tm0 = m[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tif ( m0[ i0 ] === 0 ) {\n\t\t\t\tz0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ] );\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = mskbinary2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a binary callback to elements in two two-dimensional nested input arrays according to elements in a two-dimensional nested mask array and assign results to elements in a two-dimensional nested output array.\n*\n* @module @stdlib/array/base/mskbinary2d\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var add = require( '@stdlib/math/base/ops/add' );\n* var mskbinary2d = require( '@stdlib/array/base/mskbinary2d' );\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = ones2d( shape );\n* var z = zeros2d( shape );\n*\n* var mask = [ [ 0, 1 ], [ 0, 0 ] ];\n*\n* mskbinary2d( [ x, y, mask, z ], shape, add );\n*\n* console.log( z );\n* // => [ [ 2.0, 0.0 ], [ 2.0, 2.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a unary callback to elements in a two-dimensional nested input array according to elements in a two-dimensional nested mask array and assigns results to elements in a two-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing one input nested array, an input nested mask array, and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - unary callback\n* @returns {void}\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = zeros2d( shape );\n*\n* var mask = [ [ 0, 1 ], [ 0, 0 ] ];\n*\n* mskunary2d( [ x, mask, y ], shape, scale );\n*\n* console.log( y );\n* // => [ [ 10.0, 0.0 ], [ 10.0, 10.0 ] ]\n*/\nfunction mskunary2d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar x0;\n\tvar y0;\n\tvar m0;\n\tvar x;\n\tvar y;\n\tvar m;\n\n\tS0 = shape[ 1 ];\n\tS1 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 2 ];\n\tm = arrays[ 1 ];\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tx0 = x[ i1 ];\n\t\ty0 = y[ i1 ];\n\t\tm0 = m[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tif ( m0[ i0 ] === 0 ) {\n\t\t\t\ty0[ i0 ] = fcn( x0[ i0 ] );\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = mskunary2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a unary callback to elements in a two-dimensional nested input array according to elements in a two-dimensional nested mask array and assign results to elements in a two-dimensional nested output array.\n*\n* @module @stdlib/array/base/mskunary2d\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var mskunary2d = require( '@stdlib/array/base/mskunary2d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = zeros2d( shape );\n*\n* var mask = [ [ 0, 1 ], [ 0, 0 ] ];\n*\n* mskunary2d( [ x, mask, y ], shape, scale );\n*\n* console.log( y );\n* // => [ [ 10.0, 0.0 ], [ 10.0, 10.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a unary callback to elements in a three-dimensional nested input array according to elements in a three-dimensional nested mask array and assigns results to elements in a three-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing one input nested array, an input nested mask array, and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - unary callback\n* @returns {void}\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = zeros3d( shape );\n*\n* var mask = [ [ [ 0, 1 ], [ 0, 0 ] ] ];\n*\n* mskunary3d( [ x, mask, y ], shape, scale );\n*\n* console.log( y );\n* // => [ [ [ 10.0, 0.0 ], [ 10.0, 10.0 ] ] ]\n*/\nfunction mskunary3d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar x0;\n\tvar x1;\n\tvar y0;\n\tvar y1;\n\tvar m0;\n\tvar m1;\n\tvar x;\n\tvar y;\n\tvar m;\n\n\tS0 = shape[ 2 ];\n\tS1 = shape[ 1 ];\n\tS2 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 2 ];\n\tm = arrays[ 1 ];\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\tx1 = x[ i2 ];\n\t\ty1 = y[ i2 ];\n\t\tm1 = m[ i2 ];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\tx0 = x1[ i1 ];\n\t\t\ty0 = y1[ i1 ];\n\t\t\tm0 = m1[ i1 ];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\tif ( m0[ i0 ] === 0 ) {\n\t\t\t\t\ty0[ i0 ] = fcn( x0[ i0 ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = mskunary3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a unary callback to elements in a three-dimensional nested input array according to elements in a three-dimensional nested mask array and assign results to elements in a three-dimensional nested output array.\n*\n* @module @stdlib/array/base/mskunary3d\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n* var mskunary3d = require( '@stdlib/array/base/mskunary3d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = zeros3d( shape );\n*\n* var mask = [ [ [ 0, 1 ], [ 0, 0 ] ] ];\n*\n* mskunary3d( [ x, mask, y ], shape, scale );\n*\n* console.log( y );\n* // => [ [ [ 10.0, 0.0 ], [ 10.0, 10.0 ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Returns the n-fold Cartesian product.\n*\n* ## Notes\n*\n* -   The main insight of this implementation is that the n-fold Cartesian product can be presented as an n-dimensional array stored in row-major order. As such, we can\n*\n*     -   Compute the total number of tuples, which is simply the product of the size of each provided array (set). For n-dimensional arrays, this is the equivalent of computing the product of array dimensions to determine the total number of elements.\n*     -   Initialize an array for storing indices for indexing into each provided array. For n-dimensional arrays, the index array is equivalent to an array of subscripts for indexing into each dimension.\n*     -   For the outermost loop, treat the loop index as a linear index into an n-dimensional array and resolve the corresponding subscripts.\n*     -   Continue iterating until all tuples have been generated.\n*\n* @param {ArrayLikeObject} x1 - first input array\n* @param {ArrayLikeObject} x2 - second input array\n* @param {ArrayLikeObject} [...args] - additional input arrays\n* @returns {Array<Array>} list of ordered tuples comprising the n-fold Cartesian product\n*\n* @example\n* var x1 = [ 1, 2, 3 ];\n* var x2 = [ 4, 5 ];\n*\n* var out = nCartesianProduct( x1, x2 );\n* // returns [ [ 1, 4 ], [ 1, 5 ], [ 2, 4 ], [ 2, 5 ], [ 3, 4 ], [ 3, 5 ] ]\n*/\nfunction nCartesianProduct( x1, x2 ) {\n\tvar nargs;\n\tvar dims;\n\tvar arr;\n\tvar out;\n\tvar tmp;\n\tvar arg;\n\tvar idx;\n\tvar N;\n\tvar s;\n\tvar i;\n\tvar j;\n\tvar k;\n\n\tnargs = arguments.length;\n\n\t// Initialize the list of arrays:\n\tarr = [ x1, x2 ];\n\n\t// Initialize the list of array dimensions (equivalent to ndarray shape):\n\tdims = [ x1.length, x2.length ];\n\n\t// Initialize a list of indices for indexing into each array (equivalent to ndarray subscripts):\n\tidx = [ 0, 0 ];\n\n\t// Compute the total number of ordered tuples:\n\tN = dims[ 0 ] * dims[ 1 ];\n\n\t// Update loop variables for any additional arrays...\n\tfor ( i = 2; i < nargs; i++ ) {\n\t\targ = arguments[ i ];\n\t\tarr.push( arg );\n\t\tdims.push( arg.length );\n\t\tidx.push( 0 );\n\t\tN *= dims[ i ];\n\t}\n\t// Compute the n-fold Cartesian product...\n\tout = [];\n\tfor ( i = 0; i < N; i++ ) {\n\t\t// Resolve a linear index to array indices (logic is equivalent to what is found in ndarray/base/ind2sub for an ndarray stored in row-major order; see https://github.com/stdlib-js/stdlib/blob/215ca5355f3404f15996fd0ced58a98e46f22be6/lib/node_modules/%40stdlib/ndarray/base/ind2sub/lib/assign.js)...\n\t\tk = i;\n\t\tfor ( j = nargs-1; j >= 0; j-- ) {\n\t\t\ts = k % dims[ j ];\n\t\t\tk -= s;\n\t\t\tk /= dims[ j ];\n\t\t\tidx[ j ] = s;\n\t\t}\n\t\t// Generate the next ordered tuple...\n\t\ttmp = [];\n\t\tfor ( j = 0; j < nargs; j++ ) {\n\t\t\ttmp.push( arr[ j ][ idx[ j ] ] );\n\t\t}\n\t\tout.push( tmp );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = nCartesianProduct;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the n-fold Cartesian product.\n*\n* @module @stdlib/array/base/n-cartesian-product\n*\n* @example\n* var nCartesianProduct = require( '@stdlib/array/base/n-cartesian-product' );\n*\n* var x1 = [ 1, 2, 3 ];\n* var x2 = [ 4, 5 ];\n*\n* var out = nCartesianProduct( x1, x2 );\n* // returns [ [ 1, 4 ], [ 1, 5 ], [ 2, 4 ], [ 2, 5 ], [ 3, 4 ], [ 3, 5 ] ]\n*/\n\n// MAIN //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Generates a linearly spaced numeric array whose elements increment by 1 starting from one.\n*\n* @param {number} n - number of elements\n* @returns {Array<number>} linearly spaced numeric array\n*\n* @example\n* var arr = oneTo( 6 );\n* // returns [ 1, 2, 3, 4, 5, 6 ]\n*/\nfunction oneTo( n ) {\n\tvar arr;\n\tvar i;\n\n\tarr = [];\n\tif ( n <= 0 ) {\n\t\treturn arr;\n\t}\n\tfor ( i = 1; i < n+1; i++ ) {\n\t\tarr.push( i );\n\t}\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = oneTo;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Generate a linearly spaced numeric array whose elements increment by 1 starting from one.\n*\n* @module @stdlib/array/base/one-to\n*\n* @example\n* var oneTo = require( '@stdlib/array/base/one-to' );\n*\n* var arr = oneTo( 6 );\n* // returns [ 1, 2, 3, 4, 5, 6 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled = require( './../../../base/filled' );\n\n\n// MAIN //\n\n/**\n* Returns a \"generic\" array filled with ones.\n*\n* @param {NonNegativeInteger} len - array length\n* @returns {Array} output array\n*\n* @example\n* var out = ones( 3 );\n* // returns [ 1.0, 1.0, 1.0 ]\n*/\nfunction ones( len ) {\n\treturn filled( 1.0, len );\n}\n\n\n// EXPORTS //\n\nmodule.exports = ones;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a \"generic\" array filled with ones.\n*\n* @module @stdlib/array/base/ones\n*\n* @example\n* var ones = require( '@stdlib/array/base/ones' );\n*\n* var out = ones( 3 );\n* // returns [ 1.0, 1.0, 1.0 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled2d = require( './../../../base/filled2d' );\n\n\n// MAIN //\n\n/**\n* Returns a two-dimensional nested array filled with ones.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {ArrayArray} filled array\n*\n* @example\n* var out = ones2d( [ 1, 3 ] );\n* // returns [ [ 1.0, 1.0, 1.0 ] ]\n*/\nfunction ones2d( shape ) {\n\treturn filled2d( 1.0, shape );\n}\n\n\n// EXPORTS //\n\nmodule.exports = ones2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a two-dimensional nested array filled with ones.\n*\n* @module @stdlib/array/base/ones2d\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n*\n* var out = ones2d( [ 1, 3 ] );\n* // returns [ [ 1.0, 1.0, 1.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled3d = require( './../../../base/filled3d' );\n\n\n// MAIN //\n\n/**\n* Returns a three-dimensional nested array filled with ones.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {Array} filled array\n*\n* @example\n* var out = ones3d( [ 1, 1, 3 ] );\n* // returns [ [ [ 1.0, 1.0, 1.0 ] ] ]\n*/\nfunction ones3d( shape ) {\n\treturn filled3d( 1.0, shape );\n}\n\n\n// EXPORTS //\n\nmodule.exports = ones3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a three-dimensional nested array filled with ones.\n*\n* @module @stdlib/array/base/ones3d\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n*\n* var out = ones3d( [ 1, 1, 3 ] );\n* // returns [ [ [ 1.0, 1.0, 1.0 ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled4d = require( './../../../base/filled4d' );\n\n\n// MAIN //\n\n/**\n* Returns a four-dimensional nested array filled with ones.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {Array} filled array\n*\n* @example\n* var out = ones4d( [ 1, 1, 1, 3 ] );\n* // returns [ [ [ [ 1.0, 1.0, 1.0 ] ] ] ]\n*/\nfunction ones4d( shape ) {\n\treturn filled4d( 1.0, shape );\n}\n\n\n// EXPORTS //\n\nmodule.exports = ones4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a four-dimensional nested array filled with ones.\n*\n* @module @stdlib/array/base/ones4d\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n*\n* var out = ones4d( [ 1, 1, 1, 3 ] );\n* // returns [ [ [ [ 1.0, 1.0, 1.0 ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled5d = require( './../../../base/filled5d' );\n\n\n// MAIN //\n\n/**\n* Returns a five-dimensional nested array filled with ones.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {Array} filled array\n*\n* @example\n* var out = ones5d( [ 1, 1, 1, 1, 3 ] );\n* // returns [ [ [ [ [ 1.0, 1.0, 1.0 ] ] ] ] ]\n*/\nfunction ones5d( shape ) {\n\treturn filled5d( 1.0, shape );\n}\n\n\n// EXPORTS //\n\nmodule.exports = ones5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a five-dimensional nested array filled with ones.\n*\n* @module @stdlib/array/base/ones5d\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n*\n* var out = ones5d( [ 1, 1, 1, 1, 3 ] );\n* // returns [ [ [ [ [ 1.0, 1.0, 1.0 ] ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar fillednd = require( './../../../base/fillednd' );\n\n\n// MAIN //\n\n/**\n* Returns an n-dimensional nested array filled with ones.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {Array} filled array\n*\n* @example\n* var out = onesnd( [ 3 ] );\n* // returns [ 1.0, 1.0, 1.0 ]\n*\n* @example\n* var out = onesnd( [ 1, 3 ] );\n* // returns [ [ 1.0, 1.0, 1.0 ] ]\n*/\nfunction onesnd( shape ) {\n\treturn fillednd( 1.0, shape );\n}\n\n\n// EXPORTS //\n\nmodule.exports = onesnd;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an n-dimensional nested array filled with ones.\n*\n* @module @stdlib/array/base/onesnd\n*\n* @example\n* var onesnd = require( '@stdlib/array/base/onesnd' );\n*\n* var out = onesnd( [ 1, 3 ] );\n* // returns [ [ 1.0, 1.0, 1.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a quaternary callback to elements in four two-dimensional nested input arrays and assigns results to elements in a two-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing four input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - quaternary callback\n* @returns {void}\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add4' );\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = ones2d( shape );\n* var z = ones2d( shape );\n* var w = ones2d( shape );\n* var out = zeros2d( shape );\n*\n* quaternary2d( [ x, y, z, w, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ 4.0, 4.0 ], [ 4.0, 4.0 ] ]\n*/\nfunction quaternary2d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar v0;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\tvar v;\n\n\tS0 = shape[ 1 ];\n\tS1 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tw = arrays[ 3 ];\n\tv = arrays[ 4 ];\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tx0 = x[ i1 ];\n\t\ty0 = y[ i1 ];\n\t\tz0 = z[ i1 ];\n\t\tw0 = w[ i1 ];\n\t\tv0 = v[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tv0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ], z0[ i0 ], w0[ i0 ] );\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = quaternary2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a quaternary callback to elements in four two-dimensional nested input arrays and assign results to elements in a two-dimensional nested output array.\n*\n* @module @stdlib/array/base/quaternary2d\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var add = require( '@stdlib/math/base/ops/add4' );\n* var quaternary2d = require( '@stdlib/array/base/quaternary2d' );\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = ones2d( shape );\n* var z = ones2d( shape );\n* var w = ones2d( shape );\n* var out = zeros2d( shape );\n*\n* quaternary2d( [ x, y, z, w, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ 4.0, 4.0 ], [ 4.0, 4.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a quaternary callback to elements in four three-dimensional nested input arrays and assigns results to elements in a three-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Array<Collection>>>} arrays - array-like object containing four input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - quaternary callback\n* @returns {void}\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add4' );\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n*\n* var shape = [ 1, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = ones3d( shape );\n* var z = ones3d( shape );\n* var w = ones3d( shape );\n* var out = zeros3d( shape );\n*\n* quaternary3d( [ x, y, z, w, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ 4.0, 4.0 ], [ 4.0, 4.0 ] ] ]\n*/\nfunction quaternary3d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar v0;\n\tvar x1;\n\tvar y1;\n\tvar z1;\n\tvar w1;\n\tvar v1;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\tvar v;\n\n\tS0 = shape[ 2 ];\n\tS1 = shape[ 1 ];\n\tS2 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tw = arrays[ 3 ];\n\tv = arrays[ 4 ];\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\tx1 = x[ i2 ];\n\t\ty1 = y[ i2 ];\n\t\tz1 = z[ i2 ];\n\t\tw1 = w[ i2 ];\n\t\tv1 = v[ i2 ];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\tx0 = x1[ i1 ];\n\t\t\ty0 = y1[ i1 ];\n\t\t\tz0 = z1[ i1 ];\n\t\t\tw0 = w1[ i1 ];\n\t\t\tv0 = v1[ i1 ];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\tv0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ], z0[ i0 ], w0[ i0 ] );\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = quaternary3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a quaternary callback to elements in four three-dimensional nested input arrays and assign results to elements in a three-dimensional nested output array.\n*\n* @module @stdlib/array/base/quaternary3d\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n* var add = require( '@stdlib/math/base/ops/add4' );\n* var quaternary3d = require( '@stdlib/array/base/quaternary3d' );\n*\n* var shape = [ 1, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = ones3d( shape );\n* var z = ones3d( shape );\n* var w = ones3d( shape );\n* var out = zeros3d( shape );\n*\n* quaternary3d( [ x, y, z, w, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ 4.0, 4.0 ], [ 4.0, 4.0 ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a quaternary callback to elements in four four-dimensional nested input arrays and assigns results to elements in a four-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Array<Array<Collection>>>>} arrays - array-like object containing four input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - quaternary callback\n* @returns {void}\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add4' );\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n*\n* var shape = [ 1, 1, 2, 2 ];\n*\n* var x = ones4d( shape );\n* var y = ones4d( shape );\n* var z = ones4d( shape );\n* var w = ones4d( shape );\n* var out = zeros4d( shape );\n*\n* quaternary4d( [ x, y, z, w, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ [ 4.0, 4.0 ], [ 4.0, 4.0 ] ] ] ]\n*/\nfunction quaternary4d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar v0;\n\tvar x1;\n\tvar y1;\n\tvar z1;\n\tvar w1;\n\tvar v1;\n\tvar x2;\n\tvar y2;\n\tvar z2;\n\tvar w2;\n\tvar v2;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\tvar v;\n\n\tS0 = shape[ 3 ];\n\tS1 = shape[ 2 ];\n\tS2 = shape[ 1 ];\n\tS3 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tw = arrays[ 3 ];\n\tv = arrays[ 4 ];\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\tx2 = x[ i3 ];\n\t\ty2 = y[ i3 ];\n\t\tz2 = z[ i3 ];\n\t\tw2 = w[ i3 ];\n\t\tv2 = v[ i3 ];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\tx1 = x2[ i2 ];\n\t\t\ty1 = y2[ i2 ];\n\t\t\tz1 = z2[ i2 ];\n\t\t\tw1 = w2[ i2 ];\n\t\t\tv1 = v2[ i2 ];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tx0 = x1[ i1 ];\n\t\t\t\ty0 = y1[ i1 ];\n\t\t\t\tz0 = z1[ i1 ];\n\t\t\t\tw0 = w1[ i1 ];\n\t\t\t\tv0 = v1[ i1 ];\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\tv0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ], z0[ i0 ], w0[ i0 ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = quaternary4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a quaternary callback to elements in four four-dimensional nested input arrays and assign results to elements in a four-dimensional nested output array.\n*\n* @module @stdlib/array/base/quaternary4d\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n* var add = require( '@stdlib/math/base/ops/add4' );\n* var quaternary4d = require( '@stdlib/array/base/quaternary4d' );\n*\n* var shape = [ 1, 1, 2, 2 ];\n*\n* var x = ones4d( shape );\n* var y = ones4d( shape );\n* var z = ones4d( shape );\n* var w = ones4d( shape );\n* var out = zeros4d( shape );\n*\n* quaternary4d( [ x, y, z, w, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ [ 4.0, 4.0 ], [ 4.0, 4.0 ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a quaternary callback to elements in four five-dimensional nested input arrays and assigns results to elements in a five-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Array<Array<Collection>>>>} arrays - array-like object containing four input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - quaternary callback\n* @returns {void}\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add4' );\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n*\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* var x = ones5d( shape );\n* var y = ones5d( shape );\n* var z = ones5d( shape );\n* var w = ones5d( shape );\n* var out = zeros5d( shape );\n*\n* quaternary5d( [ x, y, z, w, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ [ [ 4.0, 4.0 ], [ 4.0, 4.0 ] ] ] ] ]\n*/\nfunction quaternary5d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar v0;\n\tvar x1;\n\tvar y1;\n\tvar z1;\n\tvar w1;\n\tvar v1;\n\tvar x2;\n\tvar y2;\n\tvar z2;\n\tvar w2;\n\tvar v2;\n\tvar x3;\n\tvar y3;\n\tvar z3;\n\tvar w3;\n\tvar v3;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\tvar v;\n\n\tS0 = shape[ 4 ];\n\tS1 = shape[ 3 ];\n\tS2 = shape[ 2 ];\n\tS3 = shape[ 1 ];\n\tS4 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 || S4 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tw = arrays[ 3 ];\n\tv = arrays[ 4 ];\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\tx3 = x[ i4 ];\n\t\ty3 = y[ i4 ];\n\t\tz3 = z[ i4 ];\n\t\tw3 = w[ i4 ];\n\t\tv3 = v[ i4 ];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\tx2 = x3[ i3 ];\n\t\t\ty2 = y3[ i3 ];\n\t\t\tz2 = z3[ i3 ];\n\t\t\tw2 = w3[ i3 ];\n\t\t\tv2 = v3[ i3 ];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\tx1 = x2[ i2 ];\n\t\t\t\ty1 = y2[ i2 ];\n\t\t\t\tz1 = z2[ i2 ];\n\t\t\t\tw1 = w2[ i2 ];\n\t\t\t\tv1 = v2[ i2 ];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\tx0 = x1[ i1 ];\n\t\t\t\t\ty0 = y1[ i1 ];\n\t\t\t\t\tz0 = z1[ i1 ];\n\t\t\t\t\tw0 = w1[ i1 ];\n\t\t\t\t\tv0 = v1[ i1 ];\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\tv0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ], z0[ i0 ], w0[ i0 ] ); // eslint-disable-line max-len\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = quaternary5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a quaternary callback to elements in four five-dimensional nested input arrays and assign results to elements in a five-dimensional nested output array.\n*\n* @module @stdlib/array/base/quaternary5d\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n* var add = require( '@stdlib/math/base/ops/add4' );\n* var quaternary5d = require( '@stdlib/array/base/quaternary5d' );\n*\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* var x = ones5d( shape );\n* var y = ones5d( shape );\n* var z = ones5d( shape );\n* var w = ones5d( shape );\n* var out = zeros5d( shape );\n*\n* quaternary5d( [ x, y, z, w, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ [ [ 4.0, 4.0 ], [ 4.0, 4.0 ] ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a quinary callback to elements in five two-dimensional nested input arrays and assigns results to elements in a two-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing five input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - quinary callback\n* @returns {void}\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var add = require( '@stdlib/math/base/ops/add5' );\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = ones2d( shape );\n* var z = ones2d( shape );\n* var w = ones2d( shape );\n* var v = ones2d( shape );\n* var out = zeros2d( shape );\n*\n* quinary2d( [ x, y, z, w, v, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ 5.0, 5.0 ], [ 5.0, 5.0 ] ]\n*/\nfunction quinary2d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar u0;\n\tvar v0;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\tvar u;\n\tvar v;\n\n\tS0 = shape[ 1 ];\n\tS1 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tw = arrays[ 3 ];\n\tu = arrays[ 4 ];\n\tv = arrays[ 5 ];\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tx0 = x[ i1 ];\n\t\ty0 = y[ i1 ];\n\t\tz0 = z[ i1 ];\n\t\tw0 = w[ i1 ];\n\t\tu0 = u[ i1 ];\n\t\tv0 = v[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tv0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ], z0[ i0 ], w0[ i0 ], u0[ i0 ] );\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = quinary2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a quinary callback to elements in five two-dimensional nested input arrays and assign results to elements in a two-dimensional nested output array.\n*\n* @module @stdlib/array/base/quinary2d\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var add = require( '@stdlib/math/base/ops/add5' );\n* var quinary2d = require( '@stdlib/array/base/quinary2d' );\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = ones2d( shape );\n* var z = ones2d( shape );\n* var w = ones2d( shape );\n* var v = ones2d( shape );\n* var out = zeros2d( shape );\n*\n* quinary2d( [ x, y, z, w, v, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ 5.0, 5.0 ], [ 5.0, 5.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a quinary callback to elements in five three-dimensional nested input arrays and assigns results to elements in a three-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Array<Collection>>>} arrays - array-like object containing five input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - quinary callback\n* @returns {void}\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n* var add = require( '@stdlib/math/base/ops/add5' );\n*\n* var shape = [ 1, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = ones3d( shape );\n* var z = ones3d( shape );\n* var w = ones3d( shape );\n* var v = ones3d( shape );\n* var out = zeros3d( shape );\n*\n* quinary3d( [ x, y, z, w, v, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ 5.0, 5.0 ], [ 5.0, 5.0 ] ] ]\n*/\nfunction quinary3d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar u0;\n\tvar v0;\n\tvar x1;\n\tvar y1;\n\tvar z1;\n\tvar w1;\n\tvar u1;\n\tvar v1;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\tvar u;\n\tvar v;\n\n\tS0 = shape[ 2 ];\n\tS1 = shape[ 1 ];\n\tS2 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tw = arrays[ 3 ];\n\tu = arrays[ 4 ];\n\tv = arrays[ 5 ];\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\tx1 = x[ i2 ];\n\t\ty1 = y[ i2 ];\n\t\tz1 = z[ i2 ];\n\t\tw1 = w[ i2 ];\n\t\tu1 = u[ i2 ];\n\t\tv1 = v[ i2 ];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\tx0 = x1[ i1 ];\n\t\t\ty0 = y1[ i1 ];\n\t\t\tz0 = z1[ i1 ];\n\t\t\tw0 = w1[ i1 ];\n\t\t\tu0 = u1[ i1 ];\n\t\t\tv0 = v1[ i1 ];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\tv0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ], z0[ i0 ], w0[ i0 ], u0[ i0 ] ); // eslint-disable-line max-len\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = quinary3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a quinary callback to elements in five three-dimensional nested input arrays and assign results to elements in a three-dimensional nested output array.\n*\n* @module @stdlib/array/base/quinary3d\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n* var add = require( '@stdlib/math/base/ops/add5' );\n* var quinary3d = require( '@stdlib/array/base/quinary3d' );\n*\n* var shape = [ 1, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = ones3d( shape );\n* var z = ones3d( shape );\n* var w = ones3d( shape );\n* var v = ones3d( shape );\n* var out = zeros3d( shape );\n*\n* quinary3d( [ x, y, z, w, v, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ 5.0, 5.0 ], [ 5.0, 5.0 ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a quinary callback to elements in five four-dimensional nested input arrays and assigns results to elements in a four-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Array<Array<Collection>>>>} arrays - array-like object containing five input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - quinary callback\n* @returns {void}\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n* var add = require( '@stdlib/math/base/ops/add5' );\n*\n* var shape = [ 1, 1, 2, 2 ];\n*\n* var x = ones4d( shape );\n* var y = ones4d( shape );\n* var z = ones4d( shape );\n* var w = ones4d( shape );\n* var v = ones4d( shape );\n* var out = zeros4d( shape );\n*\n* quinary4d( [ x, y, z, w, v, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ [ 5.0, 5.0 ], [ 5.0, 5.0 ] ] ] ]\n*/\nfunction quinary4d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar u0;\n\tvar v0;\n\tvar x1;\n\tvar y1;\n\tvar z1;\n\tvar w1;\n\tvar u1;\n\tvar v1;\n\tvar x2;\n\tvar y2;\n\tvar z2;\n\tvar w2;\n\tvar u2;\n\tvar v2;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\tvar u;\n\tvar v;\n\n\tS0 = shape[ 3 ];\n\tS1 = shape[ 2 ];\n\tS2 = shape[ 1 ];\n\tS3 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tw = arrays[ 3 ];\n\tu = arrays[ 4 ];\n\tv = arrays[ 5 ];\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\tx2 = x[ i3 ];\n\t\ty2 = y[ i3 ];\n\t\tz2 = z[ i3 ];\n\t\tw2 = w[ i3 ];\n\t\tu2 = u[ i3 ];\n\t\tv2 = v[ i3 ];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\tx1 = x2[ i2 ];\n\t\t\ty1 = y2[ i2 ];\n\t\t\tz1 = z2[ i2 ];\n\t\t\tw1 = w2[ i2 ];\n\t\t\tu1 = u2[ i2 ];\n\t\t\tv1 = v2[ i2 ];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tx0 = x1[ i1 ];\n\t\t\t\ty0 = y1[ i1 ];\n\t\t\t\tz0 = z1[ i1 ];\n\t\t\t\tw0 = w1[ i1 ];\n\t\t\t\tu0 = u1[ i1 ];\n\t\t\t\tv0 = v1[ i1 ];\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\tv0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ], z0[ i0 ], w0[ i0 ], u0[ i0 ] ); // eslint-disable-line max-len\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = quinary4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a quinary callback to elements in five four-dimensional nested input arrays and assign results to elements in a four-dimensional nested output array.\n*\n* @module @stdlib/array/base/quinary4d\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n* var add = require( '@stdlib/math/base/ops/add5' );\n* var quinary4d = require( '@stdlib/array/base/quinary4d' );\n*\n* var shape = [ 1, 1, 2, 2 ];\n*\n* var x = ones4d( shape );\n* var y = ones4d( shape );\n* var z = ones4d( shape );\n* var w = ones4d( shape );\n* var v = ones4d( shape );\n* var out = zeros4d( shape );\n*\n* quinary4d( [ x, y, z, w, v, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ [ 5.0, 5.0 ], [ 5.0, 5.0 ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a quinary callback to elements in five five-dimensional nested input arrays and assigns results to elements in a five-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Array<Array<Array<Collection>>>>>} arrays - array-like object containing five input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - quinary callback\n* @returns {void}\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n* var add = require( '@stdlib/math/base/ops/add5' );\n*\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* var x = ones5d( shape );\n* var y = ones5d( shape );\n* var z = ones5d( shape );\n* var w = ones5d( shape );\n* var v = ones5d( shape );\n* var out = zeros5d( shape );\n*\n* quinary5d( [ x, y, z, w, v, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ [ [ 5.0, 5.0 ], [ 5.0, 5.0 ] ] ] ] ]\n*/\nfunction quinary5d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar u0;\n\tvar v0;\n\tvar x1;\n\tvar y1;\n\tvar z1;\n\tvar w1;\n\tvar u1;\n\tvar v1;\n\tvar x2;\n\tvar y2;\n\tvar z2;\n\tvar w2;\n\tvar u2;\n\tvar v2;\n\tvar x3;\n\tvar y3;\n\tvar z3;\n\tvar w3;\n\tvar u3;\n\tvar v3;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\tvar u;\n\tvar v;\n\n\tS0 = shape[ 4 ];\n\tS1 = shape[ 3 ];\n\tS2 = shape[ 2 ];\n\tS3 = shape[ 1 ];\n\tS4 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 || S4 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tw = arrays[ 3 ];\n\tu = arrays[ 4 ];\n\tv = arrays[ 5 ];\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\tx3 = x[ i4 ];\n\t\ty3 = y[ i4 ];\n\t\tz3 = z[ i4 ];\n\t\tw3 = w[ i4 ];\n\t\tu3 = u[ i4 ];\n\t\tv3 = v[ i4 ];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\tx2 = x3[ i3 ];\n\t\t\ty2 = y3[ i3 ];\n\t\t\tz2 = z3[ i3 ];\n\t\t\tw2 = w3[ i3 ];\n\t\t\tu2 = u3[ i3 ];\n\t\t\tv2 = v3[ i3 ];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\tx1 = x2[ i2 ];\n\t\t\t\ty1 = y2[ i2 ];\n\t\t\t\tz1 = z2[ i2 ];\n\t\t\t\tw1 = w2[ i2 ];\n\t\t\t\tu1 = u2[ i2 ];\n\t\t\t\tv1 = v2[ i2 ];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\tx0 = x1[ i1 ];\n\t\t\t\t\ty0 = y1[ i1 ];\n\t\t\t\t\tz0 = z1[ i1 ];\n\t\t\t\t\tw0 = w1[ i1 ];\n\t\t\t\t\tu0 = u1[ i1 ];\n\t\t\t\t\tv0 = v1[ i1 ];\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\tv0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ], z0[ i0 ], w0[ i0 ], u0[ i0 ] ); // eslint-disable-line max-len\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = quinary5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a quinary callback to elements in five five-dimensional nested input arrays and assign results to elements in a five-dimensional nested output array.\n*\n* @module @stdlib/array/base/quinary5d\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n* var add = require( '@stdlib/math/base/ops/add5' );\n* var quinary5d = require( '@stdlib/array/base/quinary5d' );\n*\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* var x = ones5d( shape );\n* var y = ones5d( shape );\n* var z = ones5d( shape );\n* var w = ones5d( shape );\n* var v = ones5d( shape );\n* var out = zeros5d( shape );\n*\n* quinary5d( [ x, y, z, w, v, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ [ [ 5.0, 5.0 ], [ 5.0, 5.0 ] ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar arraylike2object = require( './../../../base/arraylike2object' );\n\n\n// VARIABLES //\n\nvar arraySlice = Array.prototype.slice;\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether an object has a specified method.\n*\n* @private\n* @param {Object} obj - input object\n* @param {string} method - method name\n* @returns {boolean} boolean indicating whether an object has a specified method\n*\n* @example\n* var bool = hasMethod( [], 'slice' );\n* // returns true\n*\n* @example\n* var bool = hasMethod( [], 'beep' );\n* // returns false\n*/\nfunction hasMethod( obj, method ) {\n\treturn ( typeof obj[ method ] === 'function' );\n}\n\n/**\n* Returns a shallow copy of a portion of an array using the `Array#slice` built-in.\n*\n* @private\n* @param {Collection} x - input array\n* @param {integer} start - starting index (inclusive)\n* @param {integer} end - ending index (exclusive)\n* @returns {Array} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = builtin( x, 1, 3 );\n* // returns [ 2, 3 ]\n*/\nfunction builtin( x, start, end ) {\n\treturn arraySlice.call( x, start, end );\n}\n\n/**\n* Returns a shallow copy of a portion of an accessor array.\n*\n* @private\n* @param {Object} x - input array object\n* @param {integer} start - starting index (inclusive)\n* @param {integer} end - ending index (exclusive)\n* @returns {Array} output array\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' );\n* var arraylike2object = require( '@stdlib/array/base/arraylike2object' );\n*\n* var x = arraylike2object( toAccessorArray( [ 1, 2, 3, 4 ] ) );\n*\n* var out = accessors( x, 1, 3 );\n* // returns [ 2, 3 ]\n*/\nfunction accessors( x, start, end ) {\n\tvar data;\n\tvar get;\n\tvar out;\n\tvar i;\n\n\tdata = x.data;\n\tget = x.accessors[ 0 ];\n\tout = [];\n\tfor ( i = start; i < end; i++ ) {\n\t\tout.push( get( data, i ) );\n\t}\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Returns a shallow copy of a portion of an array.\n*\n* @param {Collection} x - input array\n* @param {integer} start - starting index (inclusive)\n* @param {integer} end - ending index (exclusive)\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = slice( x, 1, 3 );\n* // returns [ 2, 3 ]\n*\n* var bool = ( out === x );\n* // returns false\n*\n* @example\n* var Int32Array = require( '@stdlib/array/int32' );\n*\n* var x = new Int32Array( [ 1, 2, 3, 4 ] );\n*\n* var out = slice( x, 1, 3 );\n* // returns <Int32Array>[ 2, 3 ]\n*\n* var bool = ( out === x );\n* // returns false\n*/\nfunction slice( x, start, end ) {\n\tvar obj;\n\tif ( hasMethod( x, 'slice' ) ) {\n\t\treturn x.slice( start, end );\n\t}\n\tobj = arraylike2object( x );\n\tif ( obj.accessorProtocol ) {\n\t\treturn accessors( obj, start, end );\n\t}\n\t// Assume we can use the built-in `Array#slice` method to copy elements to a generic array:\n\treturn builtin( x, start, end );\n}\n\n\n// EXPORTS //\n\nmodule.exports = slice;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a shallow copy of a portion of an array.\n*\n* @module @stdlib/array/base/slice\n*\n* @example\n* var slice = require( '@stdlib/array/base/slice' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = slice( x, 1, 3 );\n* // returns [ 2, 3 ]\n*\n* var bool = ( out === x );\n* // returns false\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Converts a strided array to a two-dimensional nested array.\n*\n* ## Notes\n*\n* -   The function assumes that the input array is compatible with the specified array shape, dimension strides, and index offset.\n*\n* @param {Collection} x - input array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {IntegerArray} strides - dimension strides\n* @param {NonNegativeInteger} offset - index of the first indexed value in the input array\n* @returns {Array<Array>} two-dimensional nested array\n*\n* @example\n* var x = [ 1, 2, 3, 4, 5, 6 ];\n*\n* var arr = strided2array2d( x, [ 3, 2 ], [ 2, 1 ], 0 );\n* // returns [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ]\n*\n* @example\n* var x = [ 1, 2, 3, 4, 5, 6 ];\n*\n* var arr = strided2array2d( x, [ 3, 2 ], [ 1, 3 ], 0 );\n* // returns [ [ 1, 4 ], [ 2, 5 ], [ 3, 6 ] ]\n*/\nfunction strided2array2d( x, shape, strides, offset ) {\n\tvar get;\n\tvar out;\n\tvar tmp;\n\tvar dx0;\n\tvar dx1;\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar ix;\n\n\tget = resolveGetter( x );\n\n\tS1 = shape[ 0 ];\n\tS0 = shape[ 1 ];\n\n\tdx1 = strides[ 0 ];\n\tdx0 = strides[ 1 ];\n\n\tout = [];\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\ttmp = [];\n\t\tix = offset + ( dx1*i1 );\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\ttmp.push( get( x, ix ) );\n\t\t\tix += dx0;\n\t\t}\n\t\tout.push( tmp );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = strided2array2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a strided array to a two-dimensional nested array.\n*\n* @module @stdlib/array/base/strided2array2d\n*\n* @example\n* var strided2array2d = require( '@stdlib/array/base/strided2array2d' );\n*\n* var x = [ 1, 2, 3, 4, 5, 6 ];\n*\n* var arr = strided2array2d( x, [ 3, 2 ], [ 2, 1 ], 0 );\n* // returns [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ]\n*\n* arr = strided2array2d( x, [ 3, 2 ], [ 1, 3 ], 0 );\n* // returns [ [ 1, 4 ], [ 2, 5 ], [ 3, 6 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Converts a strided array to a three-dimensional nested array.\n*\n* ## Notes\n*\n* -   The function assumes that the input array is compatible with the specified array shape, dimension strides, and index offset.\n*\n* @param {Collection} x - input array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {IntegerArray} strides - dimension strides\n* @param {NonNegativeInteger} offset - index of the first indexed value in the input array\n* @returns {Array<Array<Array>>} three-dimensional nested array\n*\n* @example\n* var x = [ 1, 2, 3, 4, 5, 6 ];\n*\n* var arr = strided2array3d( x, [ 1, 3, 2 ], [ 6, 2, 1 ], 0 );\n* // returns [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ]\n*\n* @example\n* var x = [ 1, 2, 3, 4, 5, 6 ];\n*\n* var arr = strided2array3d( x, [ 1, 3, 2 ], [ 1, 1, 3 ], 0 );\n* // returns [ [ [ 1, 4 ], [ 2, 5 ], [ 3, 6 ] ] ]\n*/\nfunction strided2array3d( x, shape, strides, offset ) {\n\tvar get;\n\tvar out;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar ix1;\n\tvar ix0;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar t2;\n\tvar t1;\n\n\tget = resolveGetter( x );\n\n\tS2 = shape[ 0 ];\n\tS1 = shape[ 1 ];\n\tS0 = shape[ 2 ];\n\n\tdx2 = strides[ 0 ];\n\tdx1 = strides[ 1 ];\n\tdx0 = strides[ 2 ];\n\n\tout = [];\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\tt2 = [];\n\t\tix1 = offset + ( dx2*i2 );\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\tt1 = [];\n\t\t\tix0 = ix1 + ( dx1*i1 );\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\tt1.push( get( x, ix0 ) );\n\t\t\t\tix0 += dx0;\n\t\t\t}\n\t\t\tt2.push( t1 );\n\t\t}\n\t\tout.push( t2 );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = strided2array3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a strided array to a three-dimensional nested array.\n*\n* @module @stdlib/array/base/strided2array3d\n*\n* @example\n* var strided2array3d = require( '@stdlib/array/base/strided2array3d' );\n*\n* var x = [ 1, 2, 3, 4, 5, 6 ];\n*\n* var arr = strided2array3d( x, [ 1, 3, 2 ], [ 6, 2, 1 ], 0 );\n* // returns [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ]\n*\n* arr = strided2array3d( x, [ 1, 3, 2 ], [ 1, 1, 3 ], 0 );\n* // returns [ [ [ 1, 4 ], [ 2, 5 ], [ 3, 6 ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Converts a strided array to a four-dimensional nested array.\n*\n* ## Notes\n*\n* -   The function assumes that the input array is compatible with the specified array shape, dimension strides, and index offset.\n*\n* @param {Collection} x - input array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {IntegerArray} strides - dimension strides\n* @param {NonNegativeInteger} offset - index of the first indexed value in the input array\n* @returns {Array<Array<Array<Array>>>} four-dimensional nested array\n*\n* @example\n* var x = [ 1, 2, 3, 4, 5, 6 ];\n*\n* var arr = strided2array4d( x, [ 1, 1, 3, 2 ], [ 6, 6, 2, 1 ], 0 );\n* // returns [ [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ] ]\n*\n* @example\n* var x = [ 1, 2, 3, 4, 5, 6 ];\n*\n* var arr = strided2array4d( x, [ 1, 1, 3, 2 ], [ 1, 1, 1, 3 ], 0 );\n* // returns [ [ [ [ 1, 4 ], [ 2, 5 ], [ 3, 6 ] ] ] ]\n*/\nfunction strided2array4d( x, shape, strides, offset ) {\n\tvar get;\n\tvar out;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar ix2;\n\tvar ix1;\n\tvar ix0;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar t3;\n\tvar t2;\n\tvar t1;\n\n\tget = resolveGetter( x );\n\n\tS3 = shape[ 0 ];\n\tS2 = shape[ 1 ];\n\tS1 = shape[ 2 ];\n\tS0 = shape[ 3 ];\n\n\tdx3 = strides[ 0 ];\n\tdx2 = strides[ 1 ];\n\tdx1 = strides[ 2 ];\n\tdx0 = strides[ 3 ];\n\n\tout = [];\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\tt3 = [];\n\t\tix2 = offset + ( dx3*i3 );\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\tt2 = [];\n\t\t\tix1 = ix2 + ( dx2*i2 );\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tt1 = [];\n\t\t\t\tix0 = ix1 + ( dx1*i1 );\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\tt1.push( get( x, ix0 ) );\n\t\t\t\t\tix0 += dx0;\n\t\t\t\t}\n\t\t\t\tt2.push( t1 );\n\t\t\t}\n\t\t\tt3.push( t2 );\n\t\t}\n\t\tout.push( t3 );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = strided2array4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a strided array to a four-dimensional nested array.\n*\n* @module @stdlib/array/base/strided2array4d\n*\n* @example\n* var strided2array4d = require( '@stdlib/array/base/strided2array4d' );\n*\n* var x = [ 1, 2, 3, 4, 5, 6 ];\n*\n* var arr = strided2array4d( x, [ 1, 1, 3, 2 ], [ 6, 6, 2, 1 ], 0 );\n* // returns [ [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ] ]\n*\n* arr = strided2array4d( x, [ 1, 1, 3, 2 ], [ 1, 1, 1, 3 ], 0 );\n* // returns [ [ [ [ 1, 4 ], [ 2, 5 ], [ 3, 6 ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Converts a strided array to a five-dimensional nested array.\n*\n* ## Notes\n*\n* -   The function assumes that the input array is compatible with the specified array shape, dimension strides, and index offset.\n*\n* @param {Collection} x - input array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {IntegerArray} strides - dimension strides\n* @param {NonNegativeInteger} offset - index of the first indexed value in the input array\n* @returns {Array<Array<Array<Array<Array>>>>} five-dimensional nested array\n*\n* @example\n* var x = [ 1, 2, 3, 4, 5, 6 ];\n*\n* var arr = strided2array5d( x, [ 1, 1, 1, 3, 2 ], [ 6, 6, 6, 2, 1 ], 0 );\n* // returns [ [ [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ] ] ]\n*\n* @example\n* var x = [ 1, 2, 3, 4, 5, 6 ];\n*\n* var arr = strided2array5d( x, [ 1, 1, 1, 3, 2 ], [ 1, 1, 1, 1, 3 ], 0 );\n* // returns [ [ [ [ [ 1, 4 ], [ 2, 5 ], [ 3, 6 ] ] ] ] ]\n*/\nfunction strided2array5d( x, shape, strides, offset ) {\n\tvar get;\n\tvar out;\n\tvar dx0;\n\tvar dx1;\n\tvar dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar ix3;\n\tvar ix2;\n\tvar ix1;\n\tvar ix0;\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar t4;\n\tvar t3;\n\tvar t2;\n\tvar t1;\n\n\tget = resolveGetter( x );\n\n\tS4 = shape[ 0 ];\n\tS3 = shape[ 1 ];\n\tS2 = shape[ 2 ];\n\tS1 = shape[ 3 ];\n\tS0 = shape[ 4 ];\n\n\tdx4 = strides[ 0 ];\n\tdx3 = strides[ 1 ];\n\tdx2 = strides[ 2 ];\n\tdx1 = strides[ 3 ];\n\tdx0 = strides[ 4 ];\n\n\tout = [];\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\tt4 = [];\n\t\tix3 = offset + ( dx4*i4 );\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\tt3 = [];\n\t\t\tix2 = ix3 + ( dx3*i3 );\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\tt2 = [];\n\t\t\t\tix1 = ix2 + ( dx2*i2 );\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\tt1 = [];\n\t\t\t\t\tix0 = ix1 + ( dx1*i1 );\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\tt1.push( get( x, ix0 ) );\n\t\t\t\t\t\tix0 += dx0;\n\t\t\t\t\t}\n\t\t\t\t\tt2.push( t1 );\n\t\t\t\t}\n\t\t\t\tt3.push( t2 );\n\t\t\t}\n\t\t\tt4.push( t3 );\n\t\t}\n\t\tout.push( t4 );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = strided2array5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a strided array to a five-dimensional nested array.\n*\n* @module @stdlib/array/base/strided2array5d\n*\n* @example\n* var strided2array5d = require( '@stdlib/array/base/strided2array5d' );\n*\n* var x = [ 1, 2, 3, 4, 5, 6 ];\n*\n* var arr = strided2array5d( x, [ 1, 1, 1, 3, 2 ], [ 6, 6, 6, 2, 1 ], 0 );\n* // returns [ [ [ [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] ] ] ]\n*\n* arr = strided2array5d( x, [ 1, 1, 1, 3, 2 ], [ 1, 1, 1, 1, 3 ], 0 );\n* // returns [ [ [ [ [ 1, 4 ], [ 2, 5 ], [ 3, 6 ] ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar resolveGetter = require( './../../../base/resolve-getter' );\n\n\n// MAIN //\n\n/**\n* Takes elements from an array.\n*\n* @param {Collection} x - input array\n* @param {NonNegativeIntegerArray} indices - list of indices\n* @returns {Array} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n* var indices = [ 3, 1, 2, 0 ];\n*\n* var y = take( x, indices );\n* // returns [ 4, 2, 3, 1 ]\n*/\nfunction take( x, indices ) {\n\tvar get;\n\tvar out;\n\tvar i;\n\n\t// Resolve an accessor for retrieving input array elements:\n\tget = resolveGetter( x );\n\n\t// Extract each desired element from the provided array...\n\tout = [];\n\tfor ( i = 0; i < indices.length; i++ ) {\n\t\tout.push( get( x, indices[ i ] ) ); // use `Array#push` to ensure \"fast\" elements\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = take;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Take elements from an array.\n*\n* @module @stdlib/array/base/take\n*\n* @example\n* var take = require( '@stdlib/array/base/take' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var indices = [ 0, 0, 1, 1, 3, 3 ];\n* var y = take( x, indices );\n* // returns [ 1, 1, 2, 2, 4, 4 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Takes elements from an indexed array.\n*\n* @param {Collection} x - input array\n* @param {NonNegativeIntegerArray} indices - list of indices\n* @returns {Array} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n* var indices = [ 3, 1, 2, 0 ];\n*\n* var y = take( x, indices );\n* // returns [ 4, 2, 3, 1 ]\n*/\nfunction take( x, indices ) {\n\tvar out;\n\tvar i;\n\n\tout = [];\n\tfor ( i = 0; i < indices.length; i++ ) {\n\t\tout.push( x[ indices[ i ] ] ); // use `Array#push` to ensure \"fast\" elements\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = take;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Take elements from an indexed array.\n*\n* @module @stdlib/array/base/take-indexed\n*\n* @example\n* var take = require( '@stdlib/array/base/take-indexed' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var indices = [ 0, 0, 1, 1, 3, 3 ];\n* var y = take( x, indices );\n* // returns [ 1, 1, 2, 2, 4, 4 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar normalizeIndex = require( '@stdlib/ndarray/base/normalize-index' );\nvar indexFunction = require( '@stdlib/ndarray/base/ind' ).factory;\nvar format = require( '@stdlib/string/format' );\n\n\n// VARIABLES //\n\nvar NDIMS = 2;\n\n\n// MAIN //\n\n/**\n* Takes elements from a two-dimensional nested array.\n*\n* ## Notes\n*\n* -   The function does **not** deep copy nested array elements.\n*\n* @param {ArrayLikeObject<Collection>} x - input array\n* @param {NonNegativeIntegerArray} indices - list of indices\n* @param {integer} dimension - dimension along which to take elements\n* @param {string} mode - index mode specifying how to handle an index which is out-of-bounds\n* @throws {RangeError} third argument exceeds the number of dimensions\n* @throws {TypeError} fourth argument must be a recognized index mode\n* @returns {(Array<Array>|Array<Collection>)} output array\n*\n* @example\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n* var indices = [ 1, 1, 0, 0, -1, -1 ];\n*\n* var y = take2d( x, indices, 1, 'normalize' );\n* // returns [ [ 2, 2, 1, 1, 2, 2 ], [ 4, 4, 3, 3, 4, 4 ] ]\n*/\nfunction take2d( x, indices, dimension, mode ) {\n\tvar lastIndex;\n\tvar out;\n\tvar dim;\n\tvar ind;\n\tvar idx;\n\tvar i0;\n\tvar i1;\n\tvar x0;\n\tvar y0;\n\n\tdim = normalizeIndex( dimension, NDIMS-1 );\n\tif ( dim === -1 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Third argument exceeds the number of dimensions. Number of dimensions: %d. Value: `%d`.', NDIMS, dimension ) );\n\t}\n\tind = indexFunction( mode );\n\tout = [];\n\tif ( dim === 0 ) {\n\t\tlastIndex = x.length - 1;\n\t\tfor ( i1 = 0; i1 < indices.length; i1++ ) {\n\t\t\tidx = ind( indices[ i1 ], lastIndex );\n\t\t\tout.push( x[ idx ] );\n\t\t}\n\t\treturn out;\n\t}\n\t// Case: dim === 1\n\tfor ( i1 = 0; i1 < x.length; i1++ ) {\n\t\tx0 = x[ i1 ];\n\t\ty0 = [];\n\t\tlastIndex = x0.length - 1;\n\t\tfor ( i0 = 0; i0 < indices.length; i0++ ) {\n\t\t\tidx = ind( indices[ i0 ], lastIndex );\n\t\t\ty0.push( x0[ idx ] );\n\t\t}\n\t\tout.push( y0 );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = take2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Take elements from a two-dimensional nested array.\n*\n* @module @stdlib/array/base/take2d\n*\n* @example\n* var take2d = require( '@stdlib/array/base/take2d' );\n*\n* var x = [ [ 1, 2 ], [ 3, 4 ] ];\n* var indices = [ 1, 1, 0, 0, -1, -1 ];\n*\n* var y = take2d( x, indices, 1, 'normalize' );\n* // returns [ [ 2, 2, 1, 1, 2, 2 ], [ 4, 4, 3, 3, 4, 4 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar normalizeIndex = require( '@stdlib/ndarray/base/normalize-index' );\nvar indexFunction = require( '@stdlib/ndarray/base/ind' ).factory;\nvar take2d = require( './../../../base/take2d' );\nvar format = require( '@stdlib/string/format' );\n\n\n// VARIABLES //\n\nvar NDIMS = 3;\n\n\n// MAIN //\n\n/**\n* Takes elements from a three-dimensional nested array.\n*\n* ## Notes\n*\n* -   The function does **not** deep copy nested array elements.\n*\n* @param {ArrayLikeObject<Collection>} x - input array\n* @param {NonNegativeIntegerArray} indices - list of indices\n* @param {integer} dimension - dimension along which to take elements\n* @param {string} mode - index mode specifying how to handle an index which is out-of-bounds\n* @throws {RangeError} third argument exceeds the number of dimensions\n* @throws {TypeError} fourth argument must be a recognized index mode\n* @returns {(Array<Array>|Array<Collection>)} output array\n*\n* @example\n* var x = [ [ [ 1, 2 ], [ 3, 4 ] ] ];\n* var indices = [ 1, 1, 0, 0, -1, -1 ];\n*\n* var y = take3d( x, indices, 2, 'normalize' );\n* // returns [ [ [ 2, 2, 1, 1, 2, 2 ], [ 4, 4, 3, 3, 4, 4 ] ] ]\n*/\nfunction take3d( x, indices, dimension, mode ) {\n\tvar lastIndex;\n\tvar out;\n\tvar dim;\n\tvar ind;\n\tvar idx;\n\tvar i;\n\n\tdim = normalizeIndex( dimension, NDIMS-1 );\n\tif ( dim === -1 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Third argument exceeds the number of dimensions. Number of dimensions: %d. Value: `%d`.', NDIMS, dimension ) );\n\t}\n\tout = [];\n\tif ( dim === 0 ) {\n\t\tind = indexFunction( mode );\n\t\tlastIndex = x.length - 1;\n\t\tfor ( i = 0; i < indices.length; i++ ) {\n\t\t\tidx = ind( indices[ i ], lastIndex );\n\t\t\tout.push( x[ idx ] );\n\t\t}\n\t\treturn out;\n\t}\n\t// Case: dim > 0\n\tdim = dimension - 1;\n\tfor ( i = 0; i < x.length; i++ ) {\n\t\tout.push( take2d( x[ i ], indices, dim, mode ) );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = take3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Take elements from a three-dimensional nested array.\n*\n* @module @stdlib/array/base/take3d\n*\n* @example\n* var take3d = require( '@stdlib/array/base/take3d' );\n*\n* var x = [ [ [ 1, 2 ], [ 3, 4 ] ] ];\n* var indices = [ 1, 1, 0, 0, -1, -1 ];\n*\n* var y = take3d( x, indices, 2, 'normalize' );\n* // returns [ [ [ 2, 2, 1, 1, 2, 2 ], [ 4, 4, 3, 3, 4, 4 ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a ternary callback to elements in three two-dimensional nested input arrays and assigns results to elements in a two-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing three input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - ternary callback\n* @returns {void}\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add3' );\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = ones2d( shape );\n* var z = ones2d( shape );\n* var out = zeros2d( shape );\n*\n* ternary2d( [ x, y, z, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ 3.0, 3.0 ], [ 3.0, 3.0 ] ]\n*/\nfunction ternary2d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\n\tS0 = shape[ 1 ];\n\tS1 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tw = arrays[ 3 ];\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tx0 = x[ i1 ];\n\t\ty0 = y[ i1 ];\n\t\tz0 = z[ i1 ];\n\t\tw0 = w[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tw0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ], z0[ i0 ] );\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = ternary2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a ternary callback to elements in three two-dimensional nested input arrays and assign results to elements in a two-dimensional nested output array.\n*\n* @module @stdlib/array/base/ternary2d\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add3' );\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var ternary2d = require( '@stdlib/array/base/ternary2d' );\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = ones2d( shape );\n* var z = ones2d( shape );\n* var out = zeros2d( shape );\n*\n* ternary2d( [ x, y, z, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ 3.0, 3.0 ], [ 3.0, 3.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a ternary callback to elements in three three-dimensional nested input arrays and assigns results to elements in a three-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Array<Collection>>>} arrays - array-like object containing three input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - ternary callback\n* @returns {void}\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add3' );\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n*\n* var shape = [ 1, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = ones3d( shape );\n* var z = ones3d( shape );\n* var out = zeros3d( shape );\n*\n* ternary3d( [ x, y, z, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ 3.0, 3.0 ], [ 3.0, 3.0 ] ] ]\n*/\nfunction ternary3d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar x1;\n\tvar y1;\n\tvar z1;\n\tvar w1;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\n\tS0 = shape[ 2 ];\n\tS1 = shape[ 1 ];\n\tS2 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tw = arrays[ 3 ];\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\tx1 = x[ i2 ];\n\t\ty1 = y[ i2 ];\n\t\tz1 = z[ i2 ];\n\t\tw1 = w[ i2 ];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\tx0 = x1[ i1 ];\n\t\t\ty0 = y1[ i1 ];\n\t\t\tz0 = z1[ i1 ];\n\t\t\tw0 = w1[ i1 ];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\tw0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ], z0[ i0 ] );\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = ternary3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a ternary callback to elements in three three-dimensional nested input arrays and assign results to elements in a three-dimensional nested output array.\n*\n* @module @stdlib/array/base/ternary3d\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add3' );\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n* var ternary3d = require( '@stdlib/array/base/ternary3d' );\n*\n* var shape = [ 1, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = ones3d( shape );\n* var z = ones3d( shape );\n* var out = zeros3d( shape );\n*\n* ternary3d( [ x, y, z, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ 3.0, 3.0 ], [ 3.0, 3.0 ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a ternary callback to elements in three four-dimensional nested input arrays and assigns results to elements in a four-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Array<Array<Collection>>>>} arrays - array-like object containing three input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - ternary callback\n* @returns {void}\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add3' );\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n*\n* var shape = [ 1, 1, 2, 2 ];\n*\n* var x = ones4d( shape );\n* var y = ones4d( shape );\n* var z = ones4d( shape );\n* var out = zeros4d( shape );\n*\n* ternary4d( [ x, y, z, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ [ 3.0, 3.0 ], [ 3.0, 3.0 ] ] ] ]\n*/\nfunction ternary4d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar x1;\n\tvar y1;\n\tvar z1;\n\tvar w1;\n\tvar x2;\n\tvar y2;\n\tvar z2;\n\tvar w2;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\n\tS0 = shape[ 3 ];\n\tS1 = shape[ 2 ];\n\tS2 = shape[ 1 ];\n\tS3 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tw = arrays[ 3 ];\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\tx2 = x[ i3 ];\n\t\ty2 = y[ i3 ];\n\t\tz2 = z[ i3 ];\n\t\tw2 = w[ i3 ];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\tx1 = x2[ i2 ];\n\t\t\ty1 = y2[ i2 ];\n\t\t\tz1 = z2[ i2 ];\n\t\t\tw1 = w2[ i2 ];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tx0 = x1[ i1 ];\n\t\t\t\ty0 = y1[ i1 ];\n\t\t\t\tz0 = z1[ i1 ];\n\t\t\t\tw0 = w1[ i1 ];\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\tw0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ], z0[ i0 ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = ternary4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a ternary callback to elements in three four-dimensional nested input arrays and assign results to elements in a four-dimensional nested output array.\n*\n* @module @stdlib/array/base/ternary4d\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add3' );\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n* var ternary4d = require( '@stdlib/array/base/ternary4d' );\n*\n* var shape = [ 1, 1, 2, 2 ];\n*\n* var x = ones4d( shape );\n* var y = ones4d( shape );\n* var z = ones4d( shape );\n* var out = zeros4d( shape );\n*\n* ternary4d( [ x, y, z, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ [ 3.0, 3.0 ], [ 3.0, 3.0 ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a ternary callback to elements in three five-dimensional nested input arrays and assigns results to elements in a five-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Array<Array<Array<Collection>>>>>} arrays - array-like object containing three input nested arrays and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - ternary callback\n* @returns {void}\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add3' );\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n*\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* var x = ones5d( shape );\n* var y = ones5d( shape );\n* var z = ones5d( shape );\n* var out = zeros5d( shape );\n*\n* ternary5d( [ x, y, z, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ [ [ 3.0, 3.0 ], [ 3.0, 3.0 ] ] ] ] ]\n*/\nfunction ternary5d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar x0;\n\tvar y0;\n\tvar z0;\n\tvar w0;\n\tvar x1;\n\tvar y1;\n\tvar z1;\n\tvar w1;\n\tvar x2;\n\tvar y2;\n\tvar z2;\n\tvar w2;\n\tvar x3;\n\tvar y3;\n\tvar z3;\n\tvar w3;\n\tvar x;\n\tvar y;\n\tvar z;\n\tvar w;\n\n\tS0 = shape[ 4 ];\n\tS1 = shape[ 3 ];\n\tS2 = shape[ 2 ];\n\tS3 = shape[ 1 ];\n\tS4 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tz = arrays[ 2 ];\n\tw = arrays[ 3 ];\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\tx3 = x[ i4 ];\n\t\ty3 = y[ i4 ];\n\t\tz3 = z[ i4 ];\n\t\tw3 = w[ i4 ];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\tx2 = x3[ i3 ];\n\t\t\ty2 = y3[ i3 ];\n\t\t\tz2 = z3[ i3 ];\n\t\t\tw2 = w3[ i3 ];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\tx1 = x2[ i2 ];\n\t\t\t\ty1 = y2[ i2 ];\n\t\t\t\tz1 = z2[ i2 ];\n\t\t\t\tw1 = w2[ i2 ];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\tx0 = x1[ i1 ];\n\t\t\t\t\ty0 = y1[ i1 ];\n\t\t\t\t\tz0 = z1[ i1 ];\n\t\t\t\t\tw0 = w1[ i1 ];\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\tw0[ i0 ] = fcn( x0[ i0 ], y0[ i0 ], z0[ i0 ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = ternary5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a ternary callback to elements in three five-dimensional nested input arrays and assign results to elements in a five-dimensional nested output array.\n*\n* @module @stdlib/array/base/ternary5d\n*\n* @example\n* var add = require( '@stdlib/math/base/ops/add3' );\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n* var ternary5d = require( '@stdlib/array/base/ternary5d' );\n*\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* var x = ones5d( shape );\n* var y = ones5d( shape );\n* var z = ones5d( shape );\n* var out = zeros5d( shape );\n*\n* ternary5d( [ x, y, z, out ], shape, add );\n*\n* console.log( out );\n* // => [ [ [ [ [ 3.0, 3.0 ], [ 3.0, 3.0 ] ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isAccessorArray = require( './../../../base/assert/is-accessor-array' );\nvar AccessorArray = require( './../../../base/accessor' );\n\n\n// MAIN //\n\n/**\n* Converts an array-like object to a minimal array-like object supporting the accessor protocol.\n*\n* ## Notes\n*\n* -   If a provided array-like object already supports the accessor protocol, the function returns the provided array-like object; otherwise, the function wraps the provided value in a object which uses accessors for getting and setting elements.\n*\n* @param {Collection} arr - input array\n* @throws {TypeError} must provide an array-like object\n* @returns {(Collection|AccessorArray)} array-like object supporting the accessor protocol\n*\n* @example\n* var o = toAccessorArray( [ 1, 2, 3 ] );\n* // returns <AccessorArray>\n*\n* var v = o.get( 0 );\n* // returns 1\n*/\nfunction toAccessorArray( arr ) {\n\tif ( arr && typeof arr === 'object' && isAccessorArray( arr ) ) {\n\t\treturn arr;\n\t}\n\treturn new AccessorArray( arr );\n}\n\n\n// EXPORTS //\n\nmodule.exports = toAccessorArray;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert an array-like object to a minimal array-like object supporting the accessor protocol.\n*\n* @module @stdlib/array/base/to-accessor-array\n*\n* @example\n* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' );\n*\n* var o = toAccessorArray( [ 1, 2, 3 ] );\n* // returns <Object>\n*\n* var v = o.get( 0 );\n* // returns 1\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isnan = require( '@stdlib/math/base/assert/is-nan' );\n\n\n// FUNCTIONS //\n\n/**\n* Copies de-duplicated values to a new array.\n*\n* @private\n* @param {Array} x - input array\n* @param {PositiveInteger} limit - number of allowed consecutive duplicates\n* @returns {Array} output array\n*\n* @example\n* var x = [ 1, 1, 2, 3, 3 ];\n*\n* var y = dedupeCopy( x, 1 );\n* // returns [ 1, 2, 3 ]\n*\n* var bool = ( x === y );\n* // returns false\n*\n* @example\n* var x = [ 1, 1, 1, 2, 1, 1, 3, 3 ];\n*\n* var y = dedupeCopy( x, 2 );\n* // returns [ 1, 1, 2, 1, 1, 3, 3 ]\n*\n* var bool = ( x === y );\n* // returns false\n*/\nfunction dedupeCopy( x, limit ) {\n\tvar count;\n\tvar prev;\n\tvar len;\n\tvar out;\n\tvar v;\n\tvar i;\n\n\tout = [];\n\tlen = x.length;\n\tif ( len === 0 ) {\n\t\treturn out;\n\t}\n\tprev = NaN; // we leverage the fact that `NaN` is not equal to anything, including itself, to handle the initial condition\n\tcount = 0;\n\tfor ( i = 0; i < len; i++ ) {\n\t\tv = x[ i ];\n\t\tif ( v === prev ) {\n\t\t\tcount += 1;\n\t\t\tif ( count <= limit ) {\n\t\t\t\tout.push( prev );\n\t\t\t}\n\t\t} else {\n\t\t\tprev = v;\n\t\t\tcount = 1;\n\t\t\tout.push( prev );\n\t\t}\n\t}\n\treturn out;\n}\n\n/**\n* Copies de-duplicated values to a new array, treating `NaN` values as equal.\n*\n* @private\n* @param {Array} x - input array\n* @param {PositiveInteger} limit - number of allowed consecutive duplicates\n* @returns {Array} output array\n*\n* @example\n* var x = [ 1, 1, 2, NaN, NaN, 3, 3 ];\n*\n* var y = dedupeEqualNaNs( x, 1 );\n* // returns [ 1, 2, NaN, 3 ]\n*\n* var bool = ( x === y );\n* // returns false\n*\n* @example\n* var x = [ 1, 1, 1, 2, 1, 1, NaN, NaN, NaN, 3, 3 ];\n*\n* var y = dedupeEqualNaNs( x, 2 );\n* // returns [ 1, 1, 2, 1, 1, NaN, NaN, 3, 3 ]\n*\n* var bool = ( x === y );\n* // returns false\n*/\nfunction dedupeEqualNaNs( x, limit ) {\n\tvar count;\n\tvar prev;\n\tvar len;\n\tvar out;\n\tvar FLG;\n\tvar v;\n\tvar i;\n\n\tout = [];\n\tlen = x.length;\n\tif ( len === 0 ) {\n\t\treturn out;\n\t}\n\tFLG = false;\n\tprev = NaN; // we leverage the fact that `NaN` is not equal to anything, including itself, to handle the initial condition\n\tcount = 0;\n\tfor ( i = 0; i < len; i++ ) {\n\t\tv = x[ i ];\n\t\tif ( v === prev || ( FLG && isnan( v ) ) ) {\n\t\t\tcount += 1;\n\t\t\tif ( count <= limit ) {\n\t\t\t\tout.push( prev );\n\t\t\t}\n\t\t} else {\n\t\t\tprev = v;\n\t\t\tcount = 1;\n\t\t\tout.push( prev );\n\t\t\tFLG = false;\n\t\t\tif ( isnan( prev ) ) {\n\t\t\t\tFLG = true;\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements to a new \"generic\" array after removing consecutive duplicated values.\n*\n* @param {Array} x - input array\n* @param {PositiveInteger} limit - number of allowed consecutive duplicates\n* @param {boolean} equalNaNs - boolean indicating whether NaNs should be considered equal\n* @returns {Array} de-duplicated values\n*\n* @example\n* var x = [ 1, 1, 2, 3, 3 ];\n*\n* var y = dedupe( x, 1, false );\n* // returns [ 1, 2, 3 ]\n*\n* var bool = ( x === y );\n* // returns false\n*\n* @example\n* var x = [ 1, 1, 1, 2, 1, 1, 3, 3 ];\n*\n* var y = dedupe( x, 2, false );\n* // returns [ 1, 1, 2, 1, 1, 3, 3 ]\n*\n* var bool = ( x === y );\n* // returns false\n*/\nfunction dedupe( x, limit, equalNaNs ) {\n\tif ( equalNaNs ) {\n\t\treturn dedupeEqualNaNs( x, limit );\n\t}\n\treturn dedupeCopy( x, limit );\n}\n\n\n// EXPORTS //\n\nmodule.exports = dedupe;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Copy elements to a new \"generic\" array after removing consecutive duplicated values.\n*\n* @module @stdlib/array/base/to-deduped\n*\n* @example\n* var toDeduped = require( '@stdlib/array/base/to-deduped' );\n*\n* var x = [ 1, 1, 2, 3, 3 ];\n*\n* var y = toDeduped( x, 1, false );\n* // returns [ 1, 2, 3 ]\n*\n* var bool = ( x === y );\n* // returns false\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a unary callback to elements in a two-dimensional nested input array and assigns results to elements in a two-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing one input nested array and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - unary callback\n* @returns {void}\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = zeros2d( shape );\n*\n* unary2d( [ x, y ], shape, scale );\n*\n* console.log( y );\n* // => [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ]\n*/\nfunction unary2d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar x0;\n\tvar y0;\n\tvar x;\n\tvar y;\n\n\tS0 = shape[ 1 ];\n\tS1 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tx0 = x[ i1 ];\n\t\ty0 = y[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\ty0[ i0 ] = fcn( x0[ i0 ] );\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = unary2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a unary callback to elements in a two-dimensional nested input array and assign results to elements in a two-dimensional nested output array.\n*\n* @module @stdlib/array/base/unary2d\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var unary2d = require( '@stdlib/array/base/unary2d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = zeros2d( shape );\n*\n* unary2d( [ x, y ], shape, scale );\n*\n* console.log( y );\n* // => [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a unary function to each element retrieved from a two-dimensional nested input array according to a callback function and assigns results to elements in a two-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Collection>>} arrays - array-like object containing one input nested array and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Function} fcn - unary function to apply to callback return values\n* @param {Callback} clbk - callback function\n* @param {*} [thisArg] - callback execution context\n* @returns {void}\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n*\n* function accessor( v ) {\n*     return v - 2.0;\n* }\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = zeros2d( shape );\n*\n* unary2dBy( [ x, y ], shape, scale, accessor );\n*\n* console.log( y );\n* // => [ [ -10.0, -10.0 ], [ -10.0, -10.0 ] ]\n*/\nfunction unary2dBy( arrays, shape, fcn, clbk ) {\n\tvar thisArg;\n\tvar S0;\n\tvar S1;\n\tvar i0;\n\tvar i1;\n\tvar x0;\n\tvar y0;\n\tvar x;\n\tvar y;\n\tvar v;\n\n\tS0 = shape[ 1 ];\n\tS1 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 ) {\n\t\treturn;\n\t}\n\tif ( arguments.length > 4 ) {\n\t\tthisArg = arguments[ 4 ];\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\tx0 = x[ i1 ];\n\t\ty0 = y[ i1 ];\n\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\tv = clbk.call( thisArg, x0[ i0 ], [ i1, i0 ], [ x, y ] );\n\t\t\tif ( v !== void 0 ) {\n\t\t\t\ty0[ i0 ] = fcn( v );\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = unary2dBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a unary function to each element retrieved from a two-dimensional nested input array according to a callback function and assign results to elements in a two-dimensional nested output array.\n*\n* @module @stdlib/array/base/unary2d-by\n*\n* @example\n* var ones2d = require( '@stdlib/array/base/ones2d' );\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n* var unary2dBy = require( '@stdlib/array/base/unary2d-by' );\n*\n* function accessor( v ) {\n*     return v - 2.0;\n* }\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 2, 2 ];\n*\n* var x = ones2d( shape );\n* var y = zeros2d( shape );\n*\n* unary2dBy( [ x, y ], shape, scale, accessor );\n*\n* console.log( y );\n* // => [ [ -10.0, -10.0 ], [ -10.0, -10.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a unary callback to elements in a three-dimensional nested input array and assigns results to elements in a three-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Array<Collection>>>} arrays - array-like object containing one input nested array and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - unary callback\n* @returns {void}\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = zeros3d( shape );\n*\n* unary3d( [ x, y ], shape, scale );\n*\n* console.log( y );\n* // => [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ]\n*/\nfunction unary3d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar x0;\n\tvar x1;\n\tvar y0;\n\tvar y1;\n\tvar x;\n\tvar y;\n\n\tS0 = shape[ 2 ];\n\tS1 = shape[ 1 ];\n\tS2 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\tx1 = x[ i2 ];\n\t\ty1 = y[ i2 ];\n\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\tx0 = x1[ i1 ];\n\t\t\ty0 = y1[ i1 ];\n\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\ty0[ i0 ] = fcn( x0[ i0 ] );\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = unary3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a unary callback to elements in a three-dimensional nested input array and assign results to elements in a three-dimensional nested output array.\n*\n* @module @stdlib/array/base/unary3d\n*\n* @example\n* var ones3d = require( '@stdlib/array/base/ones3d' );\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n* var unary3d = require( '@stdlib/array/base/unary3d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 2, 2 ];\n*\n* var x = ones3d( shape );\n* var y = zeros3d( shape );\n*\n* unary3d( [ x, y ], shape, scale );\n*\n* console.log( y );\n* // => [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a unary callback to elements in a four-dimensional nested input array and assigns results to elements in a four-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Array<Collection>>>} arrays - array-like object containing one input nested array and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - unary callback\n* @returns {void}\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 1, 2, 2 ];\n*\n* var x = ones4d( shape );\n* var y = zeros4d( shape );\n*\n* unary4d( [ x, y ], shape, scale );\n*\n* console.log( y );\n* // => [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ]\n*/\nfunction unary4d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar x0;\n\tvar x1;\n\tvar x2;\n\tvar y0;\n\tvar y1;\n\tvar y2;\n\tvar x;\n\tvar y;\n\n\tS0 = shape[ 3 ];\n\tS1 = shape[ 2 ];\n\tS2 = shape[ 1 ];\n\tS3 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\tx2 = x[ i3 ];\n\t\ty2 = y[ i3 ];\n\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\tx1 = x2[ i2 ];\n\t\t\ty1 = y2[ i2 ];\n\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\tx0 = x1[ i1 ];\n\t\t\t\ty0 = y1[ i1 ];\n\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\ty0[ i0 ] = fcn( x0[ i0 ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = unary4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a unary callback to elements in a four-dimensional nested input array and assign results to elements in a four-dimensional nested output array.\n*\n* @module @stdlib/array/base/unary4d\n*\n* @example\n* var ones4d = require( '@stdlib/array/base/ones4d' );\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n* var unary4d = require( '@stdlib/array/base/unary4d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 1, 2, 2 ];\n*\n* var x = ones4d( shape );\n* var y = zeros4d( shape );\n*\n* unary4d( [ x, y ], shape, scale );\n*\n* console.log( y );\n* // => [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Applies a unary callback to elements in a five-dimensional nested input array and assigns results to elements in a five-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject<Array<Array<Collection>>>} arrays - array-like object containing one input nested array and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - unary callback\n* @returns {void}\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* var x = ones5d( shape );\n* var y = zeros5d( shape );\n*\n* unary5d( [ x, y ], shape, scale );\n*\n* console.log( y );\n* // => [ [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ] ]\n*/\nfunction unary5d( arrays, shape, fcn ) {\n\tvar S0;\n\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar x0;\n\tvar x1;\n\tvar x2;\n\tvar x3;\n\tvar y0;\n\tvar y1;\n\tvar y2;\n\tvar y3;\n\tvar x;\n\tvar y;\n\n\tS0 = shape[ 4 ];\n\tS1 = shape[ 3 ];\n\tS2 = shape[ 2 ];\n\tS3 = shape[ 1 ];\n\tS4 = shape[ 0 ];\n\tif ( S0 <= 0 || S1 <= 0 || S2 <= 0 || S3 <= 0 || S4 <= 0 ) {\n\t\treturn;\n\t}\n\tx = arrays[ 0 ];\n\ty = arrays[ 1 ];\n\tfor ( i4 = 0; i4 < S4; i4++ ) {\n\t\tx3 = x[ i4 ];\n\t\ty3 = y[ i4 ];\n\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\tx2 = x3[ i3 ];\n\t\t\ty2 = y3[ i3 ];\n\t\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\tx1 = x2[ i2 ];\n\t\t\t\ty1 = y2[ i2 ];\n\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ ) {\n\t\t\t\t\tx0 = x1[ i1 ];\n\t\t\t\t\ty0 = y1[ i1 ];\n\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\ty0[ i0 ] = fcn( x0[ i0 ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = unary5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a unary callback to elements in a five-dimensional nested input array and assign results to elements in a five-dimensional nested output array.\n*\n* @module @stdlib/array/base/unary5d\n*\n* @example\n* var ones5d = require( '@stdlib/array/base/ones5d' );\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n* var unary5d = require( '@stdlib/array/base/unary5d' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 1, 1, 1, 2, 2 ];\n*\n* var x = ones5d( shape );\n* var y = zeros5d( shape );\n*\n* unary5d( [ x, y ], shape, scale );\n*\n* console.log( y );\n* // => [ [ [ [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// FUNCTIONS //\n\n/**\n* Recursively applies a unary callback.\n*\n* @private\n* @param {ArrayLikeObject} x - input array\n* @param {ArrayLikeObject} y - output array\n* @param {NonNegativeInteger} ndims - number of dimensions\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {NonNegativeInteger} dim - dimension index\n* @param {Callback} fcn - unary callback\n* @returns {void}\n*/\nfunction recurse( x, y, ndims, shape, dim, fcn ) {\n\tvar S;\n\tvar d;\n\tvar i;\n\n\tS = shape[ dim ];\n\n\t// Check whether we've reached the innermost dimension:\n\td = dim + 1;\n\n\tif ( d === ndims ) {\n\t\t// Apply the provided callback...\n\t\tfor ( i = 0; i < S; i++ ) {\n\t\t\ty[ i ] = fcn( x[ i ] );\n\t\t}\n\t\treturn;\n\t}\n\t// Continue recursing into the nested arrays...\n\tfor ( i = 0; i < S; i++ ) {\n\t\trecurse( x[ i ], y[ i ], ndims, shape, d, fcn );\n\t}\n}\n\n\n// MAIN //\n\n/**\n* Applies a unary callback to elements in an n-dimensional nested input array and assigns results to elements in an n-dimensional nested output array.\n*\n* ## Notes\n*\n* -   The function assumes that the input and output arrays have the same shape.\n*\n* @param {ArrayLikeObject} arrays - array-like object containing one input nested array and one output nested array\n* @param {NonNegativeIntegerArray} shape - array shape\n* @param {Callback} fcn - unary callback\n* @returns {void}\n*\n* @example\n* var onesnd = require( '@stdlib/array/base/onesnd' );\n* var zerosnd = require( '@stdlib/array/base/zerosnd' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 2, 2 ];\n*\n* var x = onesnd( shape );\n* var y = zerosnd( shape );\n*\n* unarynd( [ x, y ], shape, scale );\n*\n* console.log( y );\n* // => [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ]\n*/\nfunction unarynd( arrays, shape, fcn ) {\n\treturn recurse( arrays[ 0 ], arrays[ 1 ], shape.length, shape, 0, fcn );\n}\n\n\n// EXPORTS //\n\nmodule.exports = unarynd;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Apply a unary callback to elements in an n-dimensional nested input array and assign results to elements in an n-dimensional nested output array.\n*\n* @module @stdlib/array/base/unarynd\n*\n* @example\n* var onesnd = require( '@stdlib/array/base/onesnd' );\n* var zerosnd = require( '@stdlib/array/base/zerosnd' );\n* var unarynd = require( '@stdlib/array/base/unarynd' );\n*\n* function scale( x ) {\n*     return x * 10.0;\n* }\n*\n* var shape = [ 2, 2 ];\n*\n* var x = onesnd( shape );\n* var y = zerosnd( shape );\n*\n* unarynd( [ x, y ], shape, scale );\n*\n* console.log( y );\n* // => [ [ 10.0, 10.0 ], [ 10.0, 10.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Generates a linearly spaced numeric array whose elements increment by 1.\n*\n* @param {number} x1 - first array value\n* @param {number} x2 - array element bound\n* @returns {Array} linearly spaced numeric array\n*\n* @example\n* var arr = unitspace( 0, 6 );\n* // returns [ 0, 1, 2, 3, 4, 5 ]\n*/\nfunction unitspace( x1, x2 ) {\n\tvar arr;\n\tvar len;\n\tvar i;\n\n\tlen = x2 - x1;\n\tif ( len <= 1 ) {\n\t\treturn [ x1 ];\n\t}\n\tarr = [ x1 ];\n\tfor ( i = 1; i < len; i++ ) {\n\t\tarr.push( x1 + i );\n\t}\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = unitspace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Generate a linearly spaced numeric array whose elements increment by 1.\n*\n* @module @stdlib/array/base/unitspace\n*\n* @example\n* var unitspace = require( '@stdlib/array/base/unitspace' );\n*\n* var arr = unitspace( 0, 6 );\n* // returns [ 0, 1, 2, 3, 4, 5 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Generates a linearly spaced numeric array whose elements increment by 1 starting from zero.\n*\n* @param {number} n - number of elements\n* @returns {Array<number>} linearly spaced numeric array\n*\n* @example\n* var arr = zeroTo( 6 );\n* // returns [ 0, 1, 2, 3, 4, 5 ]\n*/\nfunction zeroTo( n ) {\n\tvar arr;\n\tvar i;\n\n\tarr = [];\n\tif ( n <= 0 ) {\n\t\treturn arr;\n\t}\n\tfor ( i = 0; i < n; i++ ) {\n\t\tarr.push( i );\n\t}\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = zeroTo;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Generate a linearly spaced numeric array whose elements increment by 1 starting from zero.\n*\n* @module @stdlib/array/base/zero-to\n*\n* @example\n* var zeroTo = require( '@stdlib/array/base/zero-to' );\n*\n* var arr = zeroTo( 6 );\n* // returns [ 0, 1, 2, 3, 4, 5 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled2d = require( './../../../base/filled2d' );\n\n\n// MAIN //\n\n/**\n* Returns a zero-filled two-dimensional nested array.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {ArrayArray} filled array\n*\n* @example\n* var out = zeros2d( [ 1, 3 ] );\n* // returns [ [ 0.0, 0.0, 0.0 ] ]\n*/\nfunction zeros2d( shape ) {\n\treturn filled2d( 0.0, shape );\n}\n\n\n// EXPORTS //\n\nmodule.exports = zeros2d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a zero-filled two-dimensional nested array.\n*\n* @module @stdlib/array/base/zeros2d\n*\n* @example\n* var zeros2d = require( '@stdlib/array/base/zeros2d' );\n*\n* var out = zeros2d( [ 1, 3 ] );\n* // returns [ [ 0.0, 0.0, 0.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled3d = require( './../../../base/filled3d' );\n\n\n// MAIN //\n\n/**\n* Returns a zero-filled three-dimensional nested array.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {Array} filled array\n*\n* @example\n* var out = zeros3d( [ 1, 1, 3 ] );\n* // returns [ [ [ 0.0, 0.0, 0.0 ] ] ]\n*/\nfunction zeros3d( shape ) {\n\treturn filled3d( 0.0, shape );\n}\n\n\n// EXPORTS //\n\nmodule.exports = zeros3d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a zero-filled three-dimensional nested array.\n*\n* @module @stdlib/array/base/zeros3d\n*\n* @example\n* var zeros3d = require( '@stdlib/array/base/zeros3d' );\n*\n* var out = zeros3d( [ 1, 1, 3 ] );\n* // returns [ [ [ 0.0, 0.0, 0.0 ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled4d = require( './../../../base/filled4d' );\n\n\n// MAIN //\n\n/**\n* Returns a zero-filled four-dimensional nested array.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {Array} filled array\n*\n* @example\n* var out = zeros4d( [ 1, 1, 1, 3 ] );\n* // returns [ [ [ [ 0.0, 0.0, 0.0 ] ] ] ]\n*/\nfunction zeros4d( shape ) {\n\treturn filled4d( 0.0, shape );\n}\n\n\n// EXPORTS //\n\nmodule.exports = zeros4d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a zero-filled four-dimensional nested array.\n*\n* @module @stdlib/array/base/zeros4d\n*\n* @example\n* var zeros4d = require( '@stdlib/array/base/zeros4d' );\n*\n* var out = zeros4d( [ 1, 1, 1, 3 ] );\n* // returns [ [ [ [ 0.0, 0.0, 0.0 ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar filled5d = require( './../../../base/filled5d' );\n\n\n// MAIN //\n\n/**\n* Returns a zero-filled five-dimensional nested array.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {Array} filled array\n*\n* @example\n* var out = zeros5d( [ 1, 1, 1, 1, 3 ] );\n* // returns [ [ [ [ [ 0.0, 0.0, 0.0 ] ] ] ] ]\n*/\nfunction zeros5d( shape ) {\n\treturn filled5d( 0.0, shape );\n}\n\n\n// EXPORTS //\n\nmodule.exports = zeros5d;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a zero-filled five-dimensional nested array.\n*\n* @module @stdlib/array/base/zeros5d\n*\n* @example\n* var zeros5d = require( '@stdlib/array/base/zeros5d' );\n*\n* var out = zeros5d( [ 1, 1, 1, 1, 3 ] );\n* // returns [ [ [ [ [ 0.0, 0.0, 0.0 ] ] ] ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar fillednd = require( './../../../base/fillednd' );\n\n\n// MAIN //\n\n/**\n* Returns a zero-filled n-dimensional nested array.\n*\n* @param {NonNegativeIntegerArray} shape - array shape\n* @returns {Array} filled array\n*\n* @example\n* var out = zerosnd( [ 3 ] );\n* // returns [ 0.0, 0.0, 0.0 ]\n*\n* @example\n* var out = zerosnd( [ 1, 3 ] );\n* // returns [ [ 0.0, 0.0, 0.0 ] ]\n*/\nfunction zerosnd( shape ) {\n\treturn fillednd( 0.0, shape );\n}\n\n\n// EXPORTS //\n\nmodule.exports = zerosnd;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a zero-filled n-dimensional nested array.\n*\n* @module @stdlib/array/base/zerosnd\n*\n* @example\n* var zerosnd = require( '@stdlib/array/base/zerosnd' );\n*\n* var out = zerosnd( [ 1, 3 ] );\n* // returns [ [ 0.0, 0.0, 0.0 ] ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/*\n* When adding modules to the namespace, ensure that they are added in alphabetical order according to module name.\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-read-only-property' );\n\n\n// MAIN //\n\n/**\n* Namespace.\n*\n* @namespace ns\n*/\nvar ns = {};\n\n/**\n* @name AccessorArray\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/accessor}\n*/\nsetReadOnly( ns, 'AccessorArray', require( './../../base/accessor' ) );\n\n/**\n* @name accessorGetter\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/accessor-getter}\n*/\nsetReadOnly( ns, 'accessorGetter', require( './../../base/accessor-getter' ) );\n\n/**\n* @name accessorSetter\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/accessor-setter}\n*/\nsetReadOnly( ns, 'accessorSetter', require( './../../base/accessor-setter' ) );\n\n/**\n* @name accessors\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/accessors}\n*/\nsetReadOnly( ns, 'accessors', require( './../../base/accessors' ) );\n\n/**\n* @name arraylike2object\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/arraylike2object}\n*/\nsetReadOnly( ns, 'arraylike2object', require( './../../base/arraylike2object' ) );\n\n/**\n* @name assert\n* @memberof ns\n* @readonly\n* @type {Namespace}\n* @see {@link module:@stdlib/array/base/assert}\n*/\nsetReadOnly( ns, 'assert', require( './../../base/assert' ) );\n\n/**\n* @name bifurcateEntries\n* @memberof ns\n* @readonly\n* @type {Namespace}\n* @see {@link module:@stdlib/array/base/bifurcate-entries}\n*/\nsetReadOnly( ns, 'bifurcateEntries', require( './../../base/bifurcate-entries' ) );\n\n/**\n* @name bifurcateEntriesBy\n* @memberof ns\n* @readonly\n* @type {Namespace}\n* @see {@link module:@stdlib/array/base/bifurcate-entries-by}\n*/\nsetReadOnly( ns, 'bifurcateEntriesBy', require( './../../base/bifurcate-entries-by' ) );\n\n/**\n* @name bifurcateIndices\n* @memberof ns\n* @readonly\n* @type {Namespace}\n* @see {@link module:@stdlib/array/base/bifurcate-indices}\n*/\nsetReadOnly( ns, 'bifurcateIndices', require( './../../base/bifurcate-indices' ) );\n\n/**\n* @name bifurcateIndicesBy\n* @memberof ns\n* @readonly\n* @type {Namespace}\n* @see {@link module:@stdlib/array/base/bifurcate-indices-by}\n*/\nsetReadOnly( ns, 'bifurcateIndicesBy', require( './../../base/bifurcate-indices-by' ) );\n\n/**\n* @name bifurcateValues\n* @memberof ns\n* @readonly\n* @type {Namespace}\n* @see {@link module:@stdlib/array/base/bifurcate-values}\n*/\nsetReadOnly( ns, 'bifurcateValues', require( './../../base/bifurcate-values' ) );\n\n/**\n* @name bifurcateValuesBy\n* @memberof ns\n* @readonly\n* @type {Namespace}\n* @see {@link module:@stdlib/array/base/bifurcate-values-by}\n*/\nsetReadOnly( ns, 'bifurcateValuesBy', require( './../../base/bifurcate-values-by' ) );\n\n/**\n* @name binary2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/binary2d}\n*/\nsetReadOnly( ns, 'binary2d', require( './../../base/binary2d' ) );\n\n/**\n* @name binary3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/binary3d}\n*/\nsetReadOnly( ns, 'binary3d', require( './../../base/binary3d' ) );\n\n/**\n* @name binary4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/binary4d}\n*/\nsetReadOnly( ns, 'binary4d', require( './../../base/binary4d' ) );\n\n/**\n* @name binary5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/binary5d}\n*/\nsetReadOnly( ns, 'binary5d', require( './../../base/binary5d' ) );\n\n/**\n* @name binarynd\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/binarynd}\n*/\nsetReadOnly( ns, 'binarynd', require( './../../base/binarynd' ) );\n\n/**\n* @name broadcastArray\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/broadcast-array}\n*/\nsetReadOnly( ns, 'broadcastArray', require( './../../base/broadcast-array' ) );\n\n/**\n* @name bbinary2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/broadcasted-binary2d}\n*/\nsetReadOnly( ns, 'bbinary2d', require( './../../base/broadcasted-binary2d' ) );\n\n/**\n* @name bbinary3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/broadcasted-binary3d}\n*/\nsetReadOnly( ns, 'bbinary3d', require( './../../base/broadcasted-binary3d' ) );\n\n/**\n* @name bbinary4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/broadcasted-binary4d}\n*/\nsetReadOnly( ns, 'bbinary4d', require( './../../base/broadcasted-binary4d' ) );\n\n/**\n* @name bbinary5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/broadcasted-binary5d}\n*/\nsetReadOnly( ns, 'bbinary5d', require( './../../base/broadcasted-binary5d' ) );\n\n/**\n* @name bquaternary2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/broadcasted-quaternary2d}\n*/\nsetReadOnly( ns, 'bquaternary2d', require( './../../base/broadcasted-quaternary2d' ) );\n\n/**\n* @name bquinary2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/broadcasted-quinary2d}\n*/\nsetReadOnly( ns, 'bquinary2d', require( './../../base/broadcasted-quinary2d' ) );\n\n/**\n* @name bternary2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/broadcasted-ternary2d}\n*/\nsetReadOnly( ns, 'bternary2d', require( './../../base/broadcasted-ternary2d' ) );\n\n/**\n* @name bunary2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/broadcasted-unary2d}\n*/\nsetReadOnly( ns, 'bunary2d', require( './../../base/broadcasted-unary2d' ) );\n\n/**\n* @name bunary3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/broadcasted-unary3d}\n*/\nsetReadOnly( ns, 'bunary3d', require( './../../base/broadcasted-unary3d' ) );\n\n/**\n* @name bunary4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/broadcasted-unary4d}\n*/\nsetReadOnly( ns, 'bunary4d', require( './../../base/broadcasted-unary4d' ) );\n\n/**\n* @name bunary5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/broadcasted-unary5d}\n*/\nsetReadOnly( ns, 'bunary5d', require( './../../base/broadcasted-unary5d' ) );\n\n/**\n* @name cartesianPower\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/cartesian-power}\n*/\nsetReadOnly( ns, 'cartesianPower', require( './../../base/cartesian-power' ) );\n\n/**\n* @name cartesianProduct\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/cartesian-product}\n*/\nsetReadOnly( ns, 'cartesianProduct', require( './../../base/cartesian-product' ) );\n\n/**\n* @name cartesianSquare\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/cartesian-square}\n*/\nsetReadOnly( ns, 'cartesianSquare', require( './../../base/cartesian-square' ) );\n\n/**\n* @name copy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/copy}\n*/\nsetReadOnly( ns, 'copy', require( './../../base/copy' ) );\n\n/**\n* @name copyIndexed\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/copy-indexed}\n*/\nsetReadOnly( ns, 'copyIndexed', require( './../../base/copy-indexed' ) );\n\n/**\n* @name dedupe\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/dedupe}\n*/\nsetReadOnly( ns, 'dedupe', require( './../../base/dedupe' ) );\n\n/**\n* @name every\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/every}\n*/\nsetReadOnly( ns, 'every', require( './../../base/every' ) );\n\n/**\n* @name everyBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/every-by}\n*/\nsetReadOnly( ns, 'everyBy', require( './../../base/every-by' ) );\n\n/**\n* @name filled\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/filled}\n*/\nsetReadOnly( ns, 'filled', require( './../../base/filled' ) );\n\n/**\n* @name filledBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/filled-by}\n*/\nsetReadOnly( ns, 'filledBy', require( './../../base/filled-by' ) );\n\n/**\n* @name filled2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/filled2d}\n*/\nsetReadOnly( ns, 'filled2d', require( './../../base/filled2d' ) );\n\n/**\n* @name filled2dBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/filled2d-by}\n*/\nsetReadOnly( ns, 'filled2dBy', require( './../../base/filled2d-by' ) );\n\n/**\n* @name filled3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/filled3d}\n*/\nsetReadOnly( ns, 'filled3d', require( './../../base/filled3d' ) );\n\n/**\n* @name filled3dBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/filled3d-by}\n*/\nsetReadOnly( ns, 'filled3dBy', require( './../../base/filled3d-by' ) );\n\n/**\n* @name filled4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/filled4d}\n*/\nsetReadOnly( ns, 'filled4d', require( './../../base/filled4d' ) );\n\n/**\n* @name filled4dBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/filled4d-by}\n*/\nsetReadOnly( ns, 'filled4dBy', require( './../../base/filled4d-by' ) );\n\n/**\n* @name filled5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/filled5d}\n*/\nsetReadOnly( ns, 'filled5d', require( './../../base/filled5d' ) );\n\n/**\n* @name filled5dBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/filled5d-by}\n*/\nsetReadOnly( ns, 'filled5dBy', require( './../../base/filled5d-by' ) );\n\n/**\n* @name fillednd\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/fillednd}\n*/\nsetReadOnly( ns, 'fillednd', require( './../../base/fillednd' ) );\n\n/**\n* @name filledndBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/fillednd-by}\n*/\nsetReadOnly( ns, 'filledndBy', require( './../../base/fillednd-by' ) );\n\n/**\n* @name first\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/first}\n*/\nsetReadOnly( ns, 'first', require( './../../base/first' ) );\n\n/**\n* @name flatten\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/flatten}\n*/\nsetReadOnly( ns, 'flatten', require( './../../base/flatten' ) );\n\n/**\n* @name flattenBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/flatten-by}\n*/\nsetReadOnly( ns, 'flattenBy', require( './../../base/flatten-by' ) );\n\n/**\n* @name flatten2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/flatten2d}\n*/\nsetReadOnly( ns, 'flatten2d', require( './../../base/flatten2d' ) );\n\n/**\n* @name flatten2dBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/flatten2d-by}\n*/\nsetReadOnly( ns, 'flatten2dBy', require( './../../base/flatten2d-by' ) );\n\n/**\n* @name flatten3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/flatten3d}\n*/\nsetReadOnly( ns, 'flatten3d', require( './../../base/flatten3d' ) );\n\n/**\n* @name flatten3dBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/flatten3d-by}\n*/\nsetReadOnly( ns, 'flatten3dBy', require( './../../base/flatten3d-by' ) );\n\n/**\n* @name flatten4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/flatten4d}\n*/\nsetReadOnly( ns, 'flatten4d', require( './../../base/flatten4d' ) );\n\n/**\n* @name flatten4dBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/flatten4d-by}\n*/\nsetReadOnly( ns, 'flatten4dBy', require( './../../base/flatten4d-by' ) );\n\n/**\n* @name flatten5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/flatten5d}\n*/\nsetReadOnly( ns, 'flatten5d', require( './../../base/flatten5d' ) );\n\n/**\n* @name flatten5dBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/flatten5d-by}\n*/\nsetReadOnly( ns, 'flatten5dBy', require( './../../base/flatten5d-by' ) );\n\n/**\n* @name fliplr2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/fliplr2d}\n*/\nsetReadOnly( ns, 'fliplr2d', require( './../../base/fliplr2d' ) );\n\n/**\n* @name fliplr3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/fliplr3d}\n*/\nsetReadOnly( ns, 'fliplr3d', require( './../../base/fliplr3d' ) );\n\n/**\n* @name fliplr4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/fliplr4d}\n*/\nsetReadOnly( ns, 'fliplr4d', require( './../../base/fliplr4d' ) );\n\n/**\n* @name fliplr5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/fliplr5d}\n*/\nsetReadOnly( ns, 'fliplr5d', require( './../../base/fliplr5d' ) );\n\n/**\n* @name flipud2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/flipud2d}\n*/\nsetReadOnly( ns, 'flipud2d', require( './../../base/flipud2d' ) );\n\n/**\n* @name flipud3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/flipud3d}\n*/\nsetReadOnly( ns, 'flipud3d', require( './../../base/flipud3d' ) );\n\n/**\n* @name flipud4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/flipud4d}\n*/\nsetReadOnly( ns, 'flipud4d', require( './../../base/flipud4d' ) );\n\n/**\n* @name flipud5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/flipud5d}\n*/\nsetReadOnly( ns, 'flipud5d', require( './../../base/flipud5d' ) );\n\n/**\n* @name strided2array\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/from-strided}\n*/\nsetReadOnly( ns, 'strided2array', require( './../../base/from-strided' ) );\n\n/**\n* @name getter\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/getter}\n*/\nsetReadOnly( ns, 'getter', require( './../../base/getter' ) );\n\n/**\n* @name groupEntries\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/group-entries}\n*/\nsetReadOnly( ns, 'groupEntries', require( './../../base/group-entries' ) );\n\n/**\n* @name groupEntriesBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/group-entries-by}\n*/\nsetReadOnly( ns, 'groupEntriesBy', require( './../../base/group-entries-by' ) );\n\n/**\n* @name groupIndices\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/group-indices}\n*/\nsetReadOnly( ns, 'groupIndices', require( './../../base/group-indices' ) );\n\n/**\n* @name groupIndicesBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/group-indices-by}\n*/\nsetReadOnly( ns, 'groupIndicesBy', require( './../../base/group-indices-by' ) );\n\n/**\n* @name groupValues\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/group-values}\n*/\nsetReadOnly( ns, 'groupValues', require( './../../base/group-values' ) );\n\n/**\n* @name groupValuesBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/group-values-by}\n*/\nsetReadOnly( ns, 'groupValuesBy', require( './../../base/group-values-by' ) );\n\n/**\n* @name incrspace\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/incrspace}\n*/\nsetReadOnly( ns, 'incrspace', require( './../../base/incrspace' ) );\n\n/**\n* @name indexOf\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/index-of}\n*/\nsetReadOnly( ns, 'indexOf', require( './../../base/index-of' ) );\n\n/**\n* @name last\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/last}\n*/\nsetReadOnly( ns, 'last', require( './../../base/last' ) );\n\n/**\n* @name lastIndexOf\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/last-index-of}\n*/\nsetReadOnly( ns, 'lastIndexOf', require( './../../base/last-index-of' ) );\n\n/**\n* @name linspace\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/linspace}\n*/\nsetReadOnly( ns, 'linspace', require( './../../base/linspace' ) );\n\n/**\n* @name logspace\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/logspace}\n*/\nsetReadOnly( ns, 'logspace', require( './../../base/logspace' ) );\n\n/**\n* @name map2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/map2d}\n*/\nsetReadOnly( ns, 'map2d', require( './../../base/map2d' ) );\n\n/**\n* @name map3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/map3d}\n*/\nsetReadOnly( ns, 'map3d', require( './../../base/map3d' ) );\n\n/**\n* @name map4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/map4d}\n*/\nsetReadOnly( ns, 'map4d', require( './../../base/map4d' ) );\n\n/**\n* @name map5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/map5d}\n*/\nsetReadOnly( ns, 'map5d', require( './../../base/map5d' ) );\n\n/**\n* @name mskbinary2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/mskbinary2d}\n*/\nsetReadOnly( ns, 'mskbinary2d', require( './../../base/mskbinary2d' ) );\n\n/**\n* @name mskunary2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/mskunary2d}\n*/\nsetReadOnly( ns, 'mskunary2d', require( './../../base/mskunary2d' ) );\n\n/**\n* @name mskunary3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/mskunary3d}\n*/\nsetReadOnly( ns, 'mskunary3d', require( './../../base/mskunary3d' ) );\n\n/**\n* @name nCartesianProduct\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/n-cartesian-product}\n*/\nsetReadOnly( ns, 'nCartesianProduct', require( './../../base/n-cartesian-product' ) );\n\n/**\n* @name oneTo\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/one-to}\n*/\nsetReadOnly( ns, 'oneTo', require( './../../base/one-to' ) );\n\n/**\n* @name ones\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/ones}\n*/\nsetReadOnly( ns, 'ones', require( './../../base/ones' ) );\n\n/**\n* @name ones2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/ones2d}\n*/\nsetReadOnly( ns, 'ones2d', require( './../../base/ones2d' ) );\n\n/**\n* @name ones3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/ones3d}\n*/\nsetReadOnly( ns, 'ones3d', require( './../../base/ones3d' ) );\n\n/**\n* @name ones4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/ones4d}\n*/\nsetReadOnly( ns, 'ones4d', require( './../../base/ones4d' ) );\n\n/**\n* @name ones5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/ones5d}\n*/\nsetReadOnly( ns, 'ones5d', require( './../../base/ones5d' ) );\n\n/**\n* @name onesnd\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/onesnd}\n*/\nsetReadOnly( ns, 'onesnd', require( './../../base/onesnd' ) );\n\n/**\n* @name quaternary2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/quaternary2d}\n*/\nsetReadOnly( ns, 'quaternary2d', require( './../../base/quaternary2d' ) );\n\n/**\n* @name quaternary3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/quaternary3d}\n*/\nsetReadOnly( ns, 'quaternary3d', require( './../../base/quaternary3d' ) );\n\n/**\n* @name quaternary4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/quaternary4d}\n*/\nsetReadOnly( ns, 'quaternary4d', require( './../../base/quaternary4d' ) );\n\n/**\n* @name quaternary5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/quaternary5d}\n*/\nsetReadOnly( ns, 'quaternary5d', require( './../../base/quaternary5d' ) );\n\n/**\n* @name quinary2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/quinary2d}\n*/\nsetReadOnly( ns, 'quinary2d', require( './../../base/quinary2d' ) );\n\n/**\n* @name quinary3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/quinary3d}\n*/\nsetReadOnly( ns, 'quinary3d', require( './../../base/quinary3d' ) );\n\n/**\n* @name quinary4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/quinary4d}\n*/\nsetReadOnly( ns, 'quinary4d', require( './../../base/quinary4d' ) );\n\n/**\n* @name quinary5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/quinary5d}\n*/\nsetReadOnly( ns, 'quinary5d', require( './../../base/quinary5d' ) );\n\n/**\n* @name resolveGetter\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/resolve-getter}\n*/\nsetReadOnly( ns, 'resolveGetter', require( './../../base/resolve-getter' ) );\n\n/**\n* @name setter\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/setter}\n*/\nsetReadOnly( ns, 'setter', require( './../../base/setter' ) );\n\n/**\n* @name slice\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/slice}\n*/\nsetReadOnly( ns, 'slice', require( './../../base/slice' ) );\n\n/**\n* @name strided2array2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/strided2array2d}\n*/\nsetReadOnly( ns, 'strided2array2d', require( './../../base/strided2array2d' ) );\n\n/**\n* @name strided2array3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/strided2array3d}\n*/\nsetReadOnly( ns, 'strided2array3d', require( './../../base/strided2array3d' ) );\n\n/**\n* @name strided2array4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/strided2array4d}\n*/\nsetReadOnly( ns, 'strided2array4d', require( './../../base/strided2array4d' ) );\n\n/**\n* @name strided2array5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/strided2array5d}\n*/\nsetReadOnly( ns, 'strided2array5d', require( './../../base/strided2array5d' ) );\n\n/**\n* @name take\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/take}\n*/\nsetReadOnly( ns, 'take', require( './../../base/take' ) );\n\n/**\n* @name takeIndexed\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/take-indexed}\n*/\nsetReadOnly( ns, 'takeIndexed', require( './../../base/take-indexed' ) );\n\n/**\n* @name take2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/take2d}\n*/\nsetReadOnly( ns, 'take2d', require( './../../base/take2d' ) );\n\n/**\n* @name take3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/take3d}\n*/\nsetReadOnly( ns, 'take3d', require( './../../base/take3d' ) );\n\n/**\n* @name ternary2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/ternary2d}\n*/\nsetReadOnly( ns, 'ternary2d', require( './../../base/ternary2d' ) );\n\n/**\n* @name ternary3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/ternary3d}\n*/\nsetReadOnly( ns, 'ternary3d', require( './../../base/ternary3d' ) );\n\n/**\n* @name ternary4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/ternary4d}\n*/\nsetReadOnly( ns, 'ternary4d', require( './../../base/ternary4d' ) );\n\n/**\n* @name ternary5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/ternary5d}\n*/\nsetReadOnly( ns, 'ternary5d', require( './../../base/ternary5d' ) );\n\n/**\n* @name toAccessorArray\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/to-accessor-array}\n*/\nsetReadOnly( ns, 'toAccessorArray', require( './../../base/to-accessor-array' ) );\n\n/**\n* @name toDeduped\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/to-deduped}\n*/\nsetReadOnly( ns, 'toDeduped', require( './../../base/to-deduped' ) );\n\n/**\n* @name unary2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/unary2d}\n*/\nsetReadOnly( ns, 'unary2d', require( './../../base/unary2d' ) );\n\n/**\n* @name unary2dBy\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/unary2d-by}\n*/\nsetReadOnly( ns, 'unary2dBy', require( './../../base/unary2d-by' ) );\n\n/**\n* @name unary3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/unary3d}\n*/\nsetReadOnly( ns, 'unary3d', require( './../../base/unary3d' ) );\n\n/**\n* @name unary4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/unary4d}\n*/\nsetReadOnly( ns, 'unary4d', require( './../../base/unary4d' ) );\n\n/**\n* @name unary5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/unary5d}\n*/\nsetReadOnly( ns, 'unary5d', require( './../../base/unary5d' ) );\n\n/**\n* @name unarynd\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/unarynd}\n*/\nsetReadOnly( ns, 'unarynd', require( './../../base/unarynd' ) );\n\n/**\n* @name unitspace\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/unitspace}\n*/\nsetReadOnly( ns, 'unitspace', require( './../../base/unitspace' ) );\n\n/**\n* @name zeroTo\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/zero-to}\n*/\nsetReadOnly( ns, 'zeroTo', require( './../../base/zero-to' ) );\n\n/**\n* @name zeros\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/zeros}\n*/\nsetReadOnly( ns, 'zeros', require( './../../base/zeros' ) );\n\n/**\n* @name zeros2d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/zeros2d}\n*/\nsetReadOnly( ns, 'zeros2d', require( './../../base/zeros2d' ) );\n\n/**\n* @name zeros3d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/zeros3d}\n*/\nsetReadOnly( ns, 'zeros3d', require( './../../base/zeros3d' ) );\n\n/**\n* @name zeros4d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/zeros4d}\n*/\nsetReadOnly( ns, 'zeros4d', require( './../../base/zeros4d' ) );\n\n/**\n* @name zeros5d\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/zeros5d}\n*/\nsetReadOnly( ns, 'zeros5d', require( './../../base/zeros5d' ) );\n\n/**\n* @name zerosnd\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/base/zerosnd}\n*/\nsetReadOnly( ns, 'zerosnd', require( './../../base/zerosnd' ) );\n\n\n// EXPORTS //\n\nmodule.exports = ns;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar ctor = ( typeof ArrayBuffer === 'function' ) ? ArrayBuffer : void 0; // eslint-disable-line stdlib/require-globals\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// TODO: write polyfill\n\n// MAIN //\n\n/**\n* Constructor which returns an object used to represent a generic, fixed-length raw binary data buffer.\n*\n* @throws {Error} not implemented\n*/\nfunction polyfill() {\n\tthrow new Error( 'not implemented' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = polyfill;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Constructor which returns an object used to represent a generic, fixed-length raw binary data buffer.\n*\n* @module @stdlib/array/buffer\n*\n* @example\n* var ctor = require( '@stdlib/array/buffer' );\n*\n* var buf = new ctor( 10 );\n* // returns <ArrayBuffer>\n*/\n\n// MODULES //\n\nvar hasArrayBufferSupport = require( '@stdlib/assert/has-arraybuffer-support' );\nvar builtin = require( './main.js' );\nvar polyfill = require( './polyfill.js' );\n\n\n// MAIN //\n\nvar ctor;\nif ( hasArrayBufferSupport() ) {\n\tctor = builtin;\n} else {\n\tctor = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Float64Array = require( './../../float64' );\nvar Float32Array = require( './../../float32' );\nvar Int16Array = require( './../../int16' );\nvar Int32Array = require( './../../int32' );\nvar Int8Array = require( './../../int8' );\nvar Uint16Array = require( './../../uint16' );\nvar Uint32Array = require( './../../uint32' );\nvar Uint8Array = require( './../../uint8' );\nvar Uint8ClampedArray = require( './../../uint8c' );\nvar Complex64Array = require( './../../complex64' );\nvar Complex128Array = require( './../../complex128' );\n\n\n// MAIN //\n\n// Mapping from data types to constructors...\nvar ctors = {\n\t'float64': Float64Array,\n\t'float32': Float32Array,\n\t'generic': Array, // TODO: replace with `stdlib` pkg\n\t'int16': Int16Array,\n\t'int32': Int32Array,\n\t'int8': Int8Array,\n\t'uint16': Uint16Array,\n\t'uint32': Uint32Array,\n\t'uint8': Uint8Array,\n\t'uint8c': Uint8ClampedArray,\n\t'complex64': Complex64Array,\n\t'complex128': Complex128Array\n};\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar table = require( './ctors.js' );\n\n\n// MAIN //\n\n/**\n* Returns an array constructor.\n*\n* @param {string} dtype - data type\n* @returns {(Function|null)} constructor or null\n*\n* @example\n* var ctor = ctors( 'float64' );\n* // returns <Function>\n*\n* @example\n* var ctor = ctors( 'float' );\n* // returns null\n*/\nfunction ctors( dtype ) {\n\treturn table[ dtype ] || null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Array constructors.\n*\n* @module @stdlib/array/ctors\n*\n* @example\n* var ctors = require( '@stdlib/array/ctors' );\n*\n* var ctor = ctors( 'float64' );\n* // returns <Function>\n*\n* ctor = ctors( 'int' );\n* // returns null\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar getType = require( './../../dtype' );\nvar ctors = require( './../../ctors' );\nvar reinterpret128 = require( '@stdlib/strided/base/reinterpret-complex128' );\nvar reinterpret64 = require( '@stdlib/strided/base/reinterpret-complex64' );\nvar format = require( '@stdlib/string/format' );\nvar gcopy = require( '@stdlib/blas/base/gcopy' );\nvar copy = require( './../../base/copy' );\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether a data type is a single-precision complex floating-point number data type.\n*\n* @private\n* @param {string} dtype - data type\n* @returns {boolean} boolean indicating whether a provided data type is a single-precision complex floating-point number data type\n*\n* @example\n* var bool = isComplex64( 'float64' );\n* // returns false\n*\n* @example\n* var bool = isComplex64( 'complex64' );\n* // returns true\n*/\nfunction isComplex64( dtype ) {\n\treturn ( dtype === 'complex64' );\n}\n\n/**\n* Tests whether a data type is a double-precision complex floating-point number data type.\n*\n* @private\n* @param {string} dtype - data type\n* @returns {boolean} boolean indicating whether a provided data type is a double-precision complex floating-point number data type\n*\n* @example\n* var bool = isComplex128( 'float64' );\n* // returns false\n*\n* @example\n* var bool = isComplex128( 'complex128' );\n* // returns true\n*/\nfunction isComplex128( dtype ) {\n\treturn ( dtype === 'complex128' );\n}\n\n\n// MAIN //\n\n/**\n* Converts an array to an array of a different data type.\n*\n* @param {Collection} x - array to convert\n* @param {string} dtype - output data type\n* @throws {TypeError} first argument must be an array-like object\n* @throws {TypeError} second argument must be a recognized array data type\n* @returns {(Array|TypedArray|ComplexArray)} output array\n*\n* @example\n* var arr = [ 1.0, 2.0, 3.0, 4.0 ];\n*\n* var out = convert( arr, 'float64' );\n* // returns <Float64Array>[ 1.0, 2.0, 3.0, 4.0 ]\n*/\nfunction convert( x, dtype ) {\n\tvar isc64;\n\tvar ctor;\n\tvar xbuf;\n\tvar obuf;\n\tvar out;\n\tvar len;\n\tvar t;\n\n\tif ( !isCollection( x ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be an array-like object. Value: `%s`.', x ) );\n\t}\n\t// If the output data type is \"generic\", our task is relatively straightforward...\n\tif ( dtype === 'generic' ) {\n\t\treturn copy( x );\n\t}\n\tctor = ctors( dtype );\n\tif ( ctor === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a recognized array data type. Value: `%s`.', dtype ) );\n\t}\n\t// Cache the input array length:\n\tlen = x.length;\n\n\t// Get the input array data type:\n\tt = getType( x );\n\tisc64 = isComplex64( t );\n\n\t// Create the output array:\n\tout = new ctor( len );\n\n\t// As the output data type is not \"generic\", we need to explicitly handle complex number input arrays...\n\tif ( isc64 || isComplex128( t ) ) {\n\t\tif ( isc64 ) {\n\t\t\txbuf = reinterpret64( x, 0 );\n\t\t} else {\n\t\t\txbuf = reinterpret128( x, 0 );\n\t\t}\n\t\t// Check whether the output data type is a complex number data type...\n\t\tif ( isComplex64( dtype ) ) { // cmplx => cmplx\n\t\t\tobuf = reinterpret64( out, 0 );\n\t\t\tgcopy( len*2, xbuf, 1, obuf, 1 );\n\t\t\treturn out;\n\t\t}\n\t\tif ( isComplex128( dtype ) ) { // cmplx => cmplx\n\t\t\tobuf = reinterpret128( out, 0 );\n\t\t\tgcopy( len*2, xbuf, 1, obuf, 1 );\n\t\t\treturn out;\n\t\t}\n\t\t// We assume that the output data type is a real number data type, given that we're looking to convert a provided complex number array; in which case, we'll only extract the real components from the complex number input array...\n\t\tgcopy( len, xbuf, 2, out, 1 ); // cmplx => real\n\t\treturn out;\n\t}\n\t// Check whether we need to explicitly handle complex number output arrays...\n\tisc64 = isComplex64( dtype );\n\tif ( isc64 || isComplex128( dtype ) ) {\n\t\tif ( isc64 ) {\n\t\t\tobuf = reinterpret64( out, 0 );\n\t\t} else {\n\t\t\tobuf = reinterpret128( out, 0 );\n\t\t}\n\t\t// We assume that the input data type is a real number data type, given that we're looking to convert to a complex number array; in which case, we'll only set the real components... (WARNING: we're assuming that the output array has been zero-initialized! The imaginary components should be zero!)\n\t\tgcopy( len, x, 1, obuf, 2 ); // real => cmplx\n\t\treturn out;\n\t}\n\t// At this point, we're no longer handling complex number arrays, so we'll just assume that we can perform a straightforward copy...\n\tgcopy( len, x, 1, out, 1 ); // note: `gcopy` is assumed to support arrays using accessors\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = convert;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert an array to an array of a different data type.\n*\n* @module @stdlib/array/convert\n*\n* @example\n* var convert = require( '@stdlib/array/convert' );\n*\n* var arr = [ 1.0, 2.0, 3.0, 4.0 ];\n*\n* var out = convert( arr, 'float64' );\n* // returns <Float64Array>[ 1.0, 2.0, 3.0, 4.0 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar getType = require( './../../dtype' );\nvar convert = require( './../../convert' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Converts an array to the same data type as a second input array.\n*\n* @param {Collection} x - array to convert\n* @param {(Array|TypedArray|ComplexArray)} y - array having the desired output data type\n* @throws {TypeError} first argument must be an array-like object\n* @throws {TypeError} second argument must have a recognized data type\n* @returns {(Array|TypedArray|ComplexArray)} output array\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var x = [ 1.0, 2.0, 3.0, 4.0 ];\n* var y = new Float64Array( 0 );\n*\n* var out = convertSame( x, y );\n* // returns <Float64Array>[ 1.0, 2.0, 3.0, 4.0 ]\n*/\nfunction convertSame( x, y ) {\n\tvar dtype = getType( y );\n\tif ( dtype === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must have a recognized/supported data type. Type: `%s`. Value: `%s`.', dtype, y ) );\n\t}\n\treturn convert( x, dtype );\n}\n\n\n// EXPORTS //\n\nmodule.exports = convertSame;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert an array to the same data type as a second input array.\n*\n* @module @stdlib/array/convert-same\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var convertSame = require( '@stdlib/array/convert-same' );\n*\n* var x = [ 1.0, 2.0, 3.0, 4.0 ];\n* var y = new Float64Array( 0 );\n*\n* var out = convertSame( x, y );\n* // returns <Float64Array>[ 1.0, 2.0, 3.0, 4.0 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar ctor = ( typeof DataView === 'function' ) ? DataView : void 0; // eslint-disable-line stdlib/require-globals\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// TODO: write polyfill\n\n// MAIN //\n\n/**\n* Constructor which returns a data view representing a provided array buffer.\n*\n* @throws {Error} not implemented\n*/\nfunction polyfill() {\n\tthrow new Error( 'not implemented' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = polyfill;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Constructor which returns a data view representing a provided array buffer.\n*\n* @module @stdlib/array/dataview\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var DataView = require( '@stdlib/array/dataview' );\n*\n* var buf = new ArrayBuffer( 10 );\n* // returns <ArrayBuffer>\n*\n* var dv = new DataView( buf );\n* // returns <DataView>\n*/\n\n// MODULES //\n\nvar hasDataViewSupport = require( '@stdlib/assert/has-dataview-support' );\nvar builtin = require( './main.js' );\nvar polyfill = require( './polyfill.js' );\n\n\n// MAIN //\n\nvar ctor;\nif ( hasDataViewSupport() ) {\n\tctor = builtin;\n} else {\n\tctor = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar isInteger = require( '@stdlib/assert/is-integer' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isObject = require( '@stdlib/assert/is-object' );\nvar format = require( '@stdlib/string/format' );\nvar floor = require( '@stdlib/math/base/special/floor' );\nvar round = require( '@stdlib/math/base/special/round' );\nvar ceil = require( '@stdlib/math/base/special/ceil' );\n\n\n// VARIABLES //\n\nvar timestamp = /^\\d{10}$|^\\d{13}$/;\nvar rounders = [ 'floor', 'ceil', 'round' ];\n\n\n// FUNCTIONS //\n\n/**\n* Validates a date parameter.\n*\n* @private\n* @param {*} value - value to be validated\n* @param {string} name - name to be used in error messages\n* @throws {TypeError} value must either be a date string, Date object, Unix timestamp, or JavaScript timestamp\n* @throws {Error} numeric date must be either a Unix or JavaScript timestamp\n* @returns {Date} validated date\n*/\nfunction validDate( value, name ) {\n\tvar type;\n\n\ttype = typeof value;\n\tif ( type === 'string' ) {\n\t\tvalue = Date.parse( value );\n\t\tif ( value !== value ) {\n\t\t\tthrow new Error( format( 'invalid argument. Unable to parse %s date.', name.toLowerCase() ) );\n\t\t}\n\t\tvalue = new Date( value );\n\t}\n\tif ( type === 'number' ) {\n\t\tif ( !timestamp.test( value ) ) {\n\t\t\tthrow new Error( format( 'invalid argument. Numeric %s date must be either a Unix or JavaScript timestamp.', name.toLowerCase() ) );\n\t\t}\n\t\tif ( value.toString().length === 10 ) {\n\t\t\tvalue *= 1000; // sec to ms\n\t\t}\n\t\tvalue = new Date( value );\n\t}\n\tif ( !(value instanceof Date) ) {\n\t\tthrow new TypeError( format( 'invalid argument. %s date must either be a date string, Date object, Unix timestamp, or JavaScript timestamp.', name ) );\n\t}\n\treturn value;\n}\n\n\n// MAIN //\n\n/**\n* Generates an array of linearly spaced dates.\n*\n* @param {(Date|number|string)} start - start time as either a `Date` object, Unix timestamp, JavaScript timestamp, or date string\n* @param {(Date|number|string)} stop - stop time as either a `Date` object, Unix timestamp, JavaScript timestamp, or date string\n* @param {number} [length] - output array length (default: 100)\n* @param {Object} [options] - function options\n* @param {string} [options.round] - specifies how sub-millisecond times should be rounded: [ 'floor', 'ceil', 'round' ] (default: 'floor' )\n* @throws {TypeError} length argument must a positive integer\n* @throws {Error} must provide valid options\n* @returns {Array} array of dates\n*\n* @example\n* var stop = '2014-12-02T07:00:54.973Z';\n* var start = new Date( stop ) - 60000;\n*\n* var arr = datespace( start, stop, 6 );\n* // returns [...]\n*\n* @example\n* // Equivalent of Math.ceil():\n* var arr = datespace( 1417503655000, 1417503655001, 3, { 'round': 'ceil' } );\n* // returns [...]\n*\n* // Equivalent of Math.round():\n* arr = datespace( 1417503655000, 1417503655001, 3, { 'round': 'round' } );\n* // returns [...]\n*/\nfunction datespace( start, stop, length, options ) {\n\tvar opts;\n\tvar len;\n\tvar flg;\n\tvar arr;\n\tvar end;\n\tvar fcn;\n\tvar tmp;\n\tvar d;\n\tvar i;\n\n\tlen = 100;\n\tflg = true;\n\topts = {\n\t\t'round': 'floor'\n\t};\n\tstart = validDate( start, 'Start' );\n\tstop = validDate( stop, 'Stop' );\n\tif ( arguments.length > 2 ) {\n\t\tif ( arguments.length === 3 ) {\n\t\t\tif ( isObject( length ) ) {\n\t\t\t\topts = length;\n\t\t\t} else {\n\t\t\t\tlen = length;\n\n\t\t\t\t// Turn off checking the options object...\n\t\t\t\tflg = false;\n\t\t\t}\n\t\t} else {\n\t\t\topts = options;\n\t\t\tlen = length;\n\t\t}\n\t\tif ( len === 0 ) {\n\t\t\treturn [];\n\t\t}\n\t\tif ( !isInteger( len ) || len < 0 ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Length must be a positive integer. Value: `%s`.', len ) );\n\t\t}\n\t\tif ( flg ) {\n\t\t\tif ( !isObject( opts ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', opts ) );\n\t\t\t}\n\t\t\tif ( hasOwnProp( opts, 'round' ) ) {\n\t\t\t\tif ( !isString( opts.round ) ) {\n\t\t\t\t\tthrow new TypeError( format( 'invalid option. `%s` option must be a string. Option: `%s`.', 'round', opts.round ) );\n\t\t\t\t}\n\t\t\t\tif ( rounders.indexOf( opts.round ) === -1 ) {\n\t\t\t\t\tthrow new Error( format( 'invalid option. `%s` option must be one of the following: \"%s\". Option: `%s`.', 'round', rounders.join( '\", \"' ), opts.round ) );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tswitch ( opts.round ) {\n\tcase 'round':\n\t\tfcn = round;\n\t\tbreak;\n\tcase 'ceil':\n\t\tfcn = ceil;\n\t\tbreak;\n\tcase 'floor':\n\tdefault:\n\t\tfcn = floor;\n\t\tbreak;\n\t}\n\n\t// Calculate the increment...\n\tend = len - 1;\n\td = ( stop.getTime() - start.getTime() ) / end;\n\n\t// Build the output array...\n\tarr = new Array( len );\n\ttmp = start;\n\tarr[ 0 ] = tmp;\n\ttmp = tmp.getTime();\n\tfor ( i = 1; i < end; i++ ) {\n\t\ttmp += d;\n\t\tarr[ i ] = new Date( fcn( tmp ) );\n\t}\n\tarr[ end ] = stop;\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = datespace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Generate an array of linearly spaced dates.\n*\n* @module @stdlib/array/datespace\n*\n* @example\n* var datespace = require( '@stdlib/array/datespace' );\n*\n* var stop = '2014-12-02T07:00:54.973Z';\n* var start = new Date( stop ) - 60000;\n*\n* var arr = datespace( start, stop, 6 );\n* // returns [...]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Returns default array settings.\n*\n* @returns {Object} defaults\n*\n* @example\n* var o = defaults();\n* // returns {...}\n*/\nfunction defaults() {\n\treturn {\n\t\t// Data types:\n\t\t'dtypes': {\n\t\t\t'default': 'float64',\n\t\t\t'numeric': 'float64',\n\t\t\t'real': 'float64',\n\t\t\t'floating_point': 'float64',\n\t\t\t'real_floating_point': 'float64',\n\t\t\t'complex_floating_point': 'complex128',\n\t\t\t'integer': 'int32',\n\t\t\t'signed_integer': 'int32',\n\t\t\t'unsigned_integer': 'uint32'\n\t\t}\n\t};\n}\n\n\n// EXPORTS //\n\nmodule.exports = defaults;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar defaults = require( './main.js' );\n\n\n// VARIABLES //\n\nvar DEFAULTS = defaults();\nvar HASH = {\n\t'dtypes.default': DEFAULTS.dtypes.default,\n\t'dtypes.numeric': DEFAULTS.dtypes.numeric,\n\t'dtypes.real': DEFAULTS.dtypes.real,\n\t'dtypes.floating_point': DEFAULTS.dtypes.floating_point,\n\t'dtypes.real_floating_point': DEFAULTS.dtypes.real_floating_point,\n\t'dtypes.complex_floating_point': DEFAULTS.dtypes.complex_floating_point,\n\t'dtypes.integer': DEFAULTS.dtypes.integer,\n\t'dtypes.signed_integer': DEFAULTS.dtypes.signed_integer,\n\t'dtypes.unsigned_integer': DEFAULTS.dtypes.unsigned_integer\n};\n\n\n// MAIN //\n\n/**\n* Returns a default array setting.\n*\n* @param {string} name - setting name\n* @returns {*} default setting or null\n*\n* @example\n* var v = get( 'dtypes.default' );\n* // returns <string>\n*/\nfunction get( name ) {\n\tvar v = HASH[ name ];\n\treturn ( v === void 0 ) ? null : v;\n}\n\n\n// EXPORTS //\n\nmodule.exports = get;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return default array settings.\n*\n* @module @stdlib/array/defaults\n*\n* @example\n* var defaults = require( '@stdlib/array/defaults' );\n*\n* var o = defaults();\n* // returns {...}\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar get = require( './get.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'get', get );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "{\n  \"all\": [\n    \"complex64\",\n    \"complex128\",\n    \"float32\",\n    \"float64\",\n    \"generic\",\n    \"int16\",\n    \"int32\",\n    \"int8\",\n    \"uint16\",\n    \"uint32\",\n    \"uint8\",\n    \"uint8c\"\n  ],\n  \"floating_point\": [\n    \"complex64\",\n    \"complex128\",\n    \"float32\",\n    \"float64\"\n  ],\n  \"real_floating_point\": [\n    \"float32\",\n    \"float64\"\n  ],\n  \"complex_floating_point\": [\n    \"complex64\",\n    \"complex128\"\n  ],\n  \"integer\": [\n    \"int16\",\n    \"int32\",\n    \"int8\",\n    \"uint16\",\n    \"uint32\",\n    \"uint8\",\n    \"uint8c\"\n  ],\n  \"signed_integer\": [\n    \"int16\",\n    \"int32\",\n    \"int8\"\n  ],\n  \"unsigned_integer\": [\n    \"uint16\",\n    \"uint32\",\n    \"uint8\",\n    \"uint8c\"\n  ],\n  \"real\": [\n    \"float32\",\n    \"float64\",\n    \"int16\",\n    \"int32\",\n    \"int8\",\n    \"uint16\",\n    \"uint32\",\n    \"uint8\",\n    \"uint8c\"\n  ],\n  \"numeric\": [\n    \"complex64\",\n    \"complex128\",\n    \"float32\",\n    \"float64\",\n    \"int16\",\n    \"int32\",\n    \"int8\",\n    \"uint16\",\n    \"uint32\",\n    \"uint8\",\n    \"uint8c\"\n  ]\n}\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar replace = require( '@stdlib/string/base/replace' );\nvar DTYPES = require( './dtypes.json' );\n\n\n// VARIABLES //\n\nvar RE_SUFFIX = /_and_generic$/;\n\n\n// MAIN //\n\n/**\n* Returns a list of array data types.\n*\n* @param {string} [kind] - data type kind\n* @returns {StringArray} list of array data types\n*\n* @example\n* var list = dtypes();\n* // e.g., returns [ 'float32', 'float64', ... ]\n*\n* @example\n* var list = dtypes( 'floating_point' );\n* // returns [...]\n*/\nfunction dtypes() {\n\tvar kind;\n\tvar out;\n\tvar FLG;\n\tif ( arguments.length === 0 ) {\n\t\treturn DTYPES.all.slice();\n\t}\n\tFLG = false;\n\tkind = arguments[ 0 ];\n\tif ( RE_SUFFIX.test( kind ) ) {\n\t\tkind = replace( kind, RE_SUFFIX, '' );\n\t\tif ( kind !== 'all' ) {\n\t\t\tFLG = true;\n\t\t}\n\t}\n\tout = DTYPES[ kind ];\n\tout = ( out ) ? out.slice() : [];\n\tif ( FLG && out.length > 0 ) {\n\t\tout.push( 'generic' );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = dtypes;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a list of array data types.\n*\n* @module @stdlib/array/dtypes\n*\n* @example\n* var dtypes = require( '@stdlib/array/dtypes' );\n*\n* var list = dtypes();\n* // e.g., returns [ 'float32', 'float64', 'generic', 'int16', 'int32', 'int8', 'uint16', 'uint32', 'uint8', 'uint8c', 'complex128', 'complex64' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar allocUnsafe = require( '@stdlib/buffer/alloc-unsafe' );\nvar isUint8Array = require( '@stdlib/assert/is-uint8array' );\n\n\n// MAIN //\n\n/**\n* Checks whether an environment supports Node.js buffer instances which inherit from `Uint8Array`.\n*\n* @private\n* @returns {boolean} boolean indicating whether an environment supports Node.js buffer instances inheriting from `Uint8Array`\n*\n* @example\n* var bool = check();\n* // returns <boolean>\n*/\nfunction check() {\n\tvar buf = allocUnsafe( 1 );\n\treturn isUint8Array( buf );\n}\n\n\n// EXPORTS //\n\nmodule.exports = check;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Float64Array = require( './../../float64' );\nvar Float32Array = require( './../../float32' );\nvar Int16Array = require( './../../int16' );\nvar Int32Array = require( './../../int32' );\nvar Int8Array = require( './../../int8' );\nvar Uint16Array = require( './../../uint16' );\nvar Uint32Array = require( './../../uint32' );\nvar Uint8Array = require( './../../uint8' );\nvar Uint8ClampedArray = require( './../../uint8c' );\nvar Complex64Array = require( './../../complex64' );\nvar Complex128Array = require( './../../complex128' );\n\n\n// MAIN //\n\n// Mapping from data types to constructors...\nvar ctors = {\n\t'float64': Float64Array,\n\t'float32': Float32Array,\n\t'int16': Int16Array,\n\t'int32': Int32Array,\n\t'int8': Int8Array,\n\t'uint16': Uint16Array,\n\t'uint32': Uint32Array,\n\t'uint8': Uint8Array,\n\t'uint8c': Uint8ClampedArray,\n\t'complex64': Complex64Array,\n\t'complex128': Complex128Array\n};\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar table = require( './ctors.js' );\n\n\n// MAIN //\n\n/**\n* Returns a typed array constructor.\n*\n* @param {string} dtype - data type\n* @returns {(Function|null)} constructor or null\n*\n* @example\n* var ctor = ctors( 'float64' );\n* // returns <Function>\n*\n* @example\n* var ctor = ctors( 'float' );\n* // returns null\n*/\nfunction ctors( dtype ) {\n\treturn table[ dtype ] || null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Typed array constructors.\n*\n* @module @stdlib/array/typed-ctors\n*\n* @example\n* var ctors = require( '@stdlib/array/typed-ctors' );\n*\n* var ctor = ctors( 'float64' );\n* // returns <Function>\n*\n* ctor = ctors( 'int' );\n* // returns null\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar allocUnsafe = require( '@stdlib/buffer/alloc-unsafe' );\nvar ctors = require( './../../typed-ctors' );\nvar zeros = require( './../../base/zeros' );\nvar bytesPerElement = require( '@stdlib/ndarray/base/bytes-per-element' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Creates an uninitialized array having a specified length.\n*\n* @param {NonNegativeInteger} length - array length\n* @param {string} [dtype=\"float64\"] - data type\n* @throws {TypeError} first argument must be a nonnegative integer\n* @throws {TypeError} second argument must be a recognized data type\n* @returns {(TypedArray|Array|ComplexArray)} array or typed array\n*\n* @example\n* var arr = empty( 2 );\n* // returns <Float64Array>\n*\n* @example\n* var arr = empty( 2, 'float32' );\n* // returns <Float32Array>\n*/\nfunction empty( length ) {\n\tvar nbytes;\n\tvar offset;\n\tvar dtype;\n\tvar ctor;\n\tvar buf;\n\tvar out;\n\tvar nb;\n\n\tif ( !isNonNegativeInteger( length ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a nonnegative integer. Value: `%s`.', length ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tdtype = arguments[ 1 ];\n\t} else {\n\t\tdtype = 'float64';\n\t}\n\tif ( dtype === 'generic' ) {\n\t\treturn zeros( length );\n\t}\n\tnbytes = bytesPerElement( dtype );\n\tif ( nbytes === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a supported data type. Value: `%s`.', dtype ) );\n\t}\n\t// Resolve typed array constructor:\n\tctor = ctors( dtype );\n\n\t// Compute the number of bytes to allocate:\n\tnb = nbytes * length;\n\tif ( dtype === 'complex128' ) {\n\t\tnb += 8; // Note: need to allocate additional bytes to ensure alignment\n\t}\n\t// Allocate binary buffer:\n\tbuf = allocUnsafe( nb );\n\n\t// Resolve the byte offset:\n\toffset = buf.byteOffset;\n\tif ( dtype === 'complex128' ) {\n\t\tif ( !isNonNegativeInteger( offset/nbytes ) ) {\n\t\t\toffset += 8; // Note: ensure alignment\n\t\t}\n\t}\n\t// Reinterpret the binary buffer:\n\tout = new ctor( buf.buffer, offset, length );\n\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = empty;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar ctors = require( './../../ctors' );\nvar gzeros = require( './../../base/zeros' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Creates a zero-filled array having a specified length.\n*\n* @param {NonNegativeInteger} length - array length\n* @param {string} [dtype=\"float64\"] - data type\n* @throws {TypeError} first argument must be a nonnegative integer\n* @throws {TypeError} second argument must be a recognized data type\n* @returns {(TypedArray|Array|ComplexArray)} array or typed array\n*\n* @example\n* var arr = zeros( 2 );\n* // returns <Float64Array>[ 0.0, 0.0 ]\n*\n* @example\n* var arr = zeros( 2, 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0 ]\n*/\nfunction zeros( length ) {\n\tvar dtype;\n\tvar ctor;\n\tif ( !isNonNegativeInteger( length ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a nonnegative integer. Value: `%s`.', length ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tdtype = arguments[ 1 ];\n\t} else {\n\t\tdtype = 'float64';\n\t}\n\tif ( dtype === 'generic' ) {\n\t\treturn gzeros( length );\n\t}\n\tctor = ctors( dtype );\n\tif ( ctor === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a recognized data type. Value: `%s`.', dtype ) );\n\t}\n\treturn new ctor( length ); // WARNING: we assume that, apart from 'generic', the constructors for supported array data types are zero-filled by default\n}\n\n\n// EXPORTS //\n\nmodule.exports = zeros;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a zero-filled array having a specified length.\n*\n* @module @stdlib/array/zeros\n*\n* @example\n* var zeros = require( '@stdlib/array/zeros' );\n*\n* var arr = zeros( 2 );\n* // returns <Float64Array>[ 0.0, 0.0 ]\n*\n* @example\n* var zeros = require( '@stdlib/array/zeros' );\n*\n* var arr = zeros( 2, 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar zeros = require( './../../zeros' );\n\n\n// MAIN //\n\n/**\n* Creates an uninitialized array having a specified length.\n*\n* @private\n* @param {NonNegativeInteger} length - array length\n* @param {string} [dtype=\"float64\"] - data type\n* @throws {TypeError} first argument must be a nonnegative integer\n* @throws {TypeError} second argument must be a recognized data type\n* @returns {(TypedArray|Array|ComplexArray)} array or typed array\n*\n* @example\n* var arr = empty( 2 );\n* // returns <Float64Array>\n*\n* @example\n* var arr = empty( 2, 'float32' );\n* // returns <Float32Array>\n*/\nfunction empty( length ) {\n\tif ( arguments.length > 1 ) {\n\t\treturn zeros( length, arguments[ 1 ] );\n\t}\n\treturn zeros( length );\n}\n\n\n// EXPORTS //\n\nmodule.exports = empty;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an uninitialized array having a specified length.\n*\n* @module @stdlib/array/empty\n*\n* @example\n* var empty = require( '@stdlib/array/empty' );\n*\n* var arr = empty( 2 );\n* // returns <Float64Array>\n*\n* @example\n* var empty = require( '@stdlib/array/empty' );\n*\n* var arr = empty( 2, 'float32' );\n* // returns <Float32Array>\n*/\n\n// MODULES //\n\nvar isBufferUint8Array = require( './is_buffer_uint8array.js' );\nvar main = require( './main.js' );\nvar polyfill = require( './polyfill.js' );\n\n\n// MAIN //\n\nvar empty;\nif ( isBufferUint8Array() ) {\n\tempty = main;\n} else {\n\tempty = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = empty;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar dtype = require( './../../dtype' );\nvar empty = require( './../../empty' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Creates an uninitialized array having the same length and data type as a provided input array.\n*\n* @param {(Array|TypedArray|ComplexArray)} x - input array\n* @param {string} [dtype] - data type\n* @throws {TypeError} first argument must be an array or typed array\n* @throws {TypeError} second argument must be a recognized data type\n* @returns {(TypedArray|Array|ComplexArray)} array or typed array\n*\n* @example\n* var arr = emptyLike( [ 0.0, 0.0 ] );\n* // returns [ 0.0, 0.0 ]\n*\n* @example\n* var arr = emptyLike( [ 0.0, 0.0 ], 'float32' );\n* // returns <Float32Array>\n*/\nfunction emptyLike( x ) {\n\tvar dt = dtype( x ); // delegate input argument validation to dtype resolution\n\tif ( dt === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be either an array, typed array, or complex typed array. Value: `%s`.', x ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tdt = arguments[ 1 ];\n\t}\n\treturn empty( x.length, dt );\n}\n\n\n// EXPORTS //\n\nmodule.exports = emptyLike;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an uninitialized array having the same length and data type as a provided input array.\n*\n* @module @stdlib/array/empty-like\n*\n* @example\n* var emptyLike = require( '@stdlib/array/empty-like' );\n*\n* var arr = emptyLike( [ 0.0, 0.0 ] );\n* // returns [ 0.0, 0.0 ]\n*\n* @example\n* var emptyLike = require( '@stdlib/array/empty-like' );\n*\n* var arr = emptyLike( [ 0.0, 0.0 ], 'float32' );\n* // returns <Float32Array>\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' );\nvar isObject = require( '@stdlib/assert/is-object' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar ctors = require( './../../ctors' );\nvar gfill = require( '@stdlib/blas/ext/base/gfill' );\nvar filled = require( './../../base/filled' );\nvar hasIteratorSymbolSupport = require( '@stdlib/assert/has-iterator-symbol-support' );\nvar ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' );\nvar iterLength = require( '@stdlib/iter/length' );\nvar format = require( '@stdlib/string/format' );\n\n\n// VARIABLES //\n\nvar HAS_ITERATOR_SYMBOL = hasIteratorSymbolSupport();\n\n\n// FUNCTIONS //\n\n/**\n* Creates a filled \"generic\" array from an iterator.\n*\n* @private\n* @param {Iterator} it - iterator\n* @param {*} value - fill value\n* @returns {Array} filled array\n*/\nfunction filledIterator( it, value ) {\n\tvar arr;\n\tvar v;\n\n\tarr = [];\n\twhile ( true ) {\n\t\tv = it.next();\n\t\tif ( v.done ) {\n\t\t\tbreak;\n\t\t}\n\t\tarr.push( value );\n\t}\n\treturn arr;\n}\n\n/**\n* Fills an array exposing accessors for getting and setting array elements.\n*\n* @private\n* @param {Collection} arr - input array\n* @param {*} value - fill value\n* @returns {Collection} input array\n*/\nfunction filledAccessors( arr, value ) {\n\tvar i;\n\tfor ( i = 0; i < arr.length; i++ ) {\n\t\tarr.set( value, i );\n\t}\n\treturn arr;\n}\n\n\n// MAIN //\n\n/**\n* Creates a filled array.\n*\n* @param {*} [value] - fill value\n* @param {(NonNegativeInteger|TypedArray|ArrayLikeObject|ArrayBuffer|Iterable)} [arg] - a length, typed array, array-like object, buffer, or iterable\n* @param {NonNegativeInteger} [byteOffset=0] - byte offset\n* @param {NonNegativeInteger} [length] - view length\n* @param {string} [dtype=\"float64\"] - data type\n* @throws {TypeError} must provide a recognized data type\n* @throws {TypeError} must provide a length, typed array, array-like object, buffer, or iterable\n* @throws {Error} creating a generic array from an `ArrayBuffer` is not supported\n* @returns {(TypedArray|Array|ComplexArray)} array or typed array\n*\n* @example\n* var arr = filledarray();\n* // returns <Float64Array>\n*\n* @example\n* var arr = filledarray( 1.0, 2 );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var arr = filledarray( 1.0, 2, 'float32' );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*\n* @example\n* var arr = filledarray( 1.0, 2, 'generic' );\n* // returns [ 1.0, 1.0 ]\n*\n* @example\n* var arr = filledarray( 1.0, [ 0.5, 0.5 ] );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var arr = filledarray( 1, [ 5, -3 ], 'int32' );\n* // returns <Int32Array>[ 1, 1 ]\n*\n* @example\n* var arr1 = filledarray( 2, [ 5, 3 ], 'int32' );\n* var arr2 = filledarray( 1.0, arr1 );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var arr1 = filledarray( 2, [ 5, 3 ], 'int32' );\n* var arr2 = filledarray( 1, arr1, 'uint32' );\n* // returns <Uint32Array>[ 1, 1 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarray( 1.0, buf );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarray( 1.0, buf, 'float32' );\n* // returns <Float32Array>[ 1.0, 1.0, 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarray( 1.0, buf, 8 );\n* // returns <Float64Array>[ 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarray( 1.0, buf, 8, 'float32' );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = filledarray( 1.0, buf, 8, 2 );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = filledarray( 1, buf, 8, 2, 'int32' );\n* // returns <Int32Array>[ 1, 1 ]\n*/\nfunction filledarray() {\n\tvar value;\n\tvar nargs;\n\tvar dtype;\n\tvar ctor;\n\tvar arr;\n\tvar len;\n\tvar arg;\n\n\tnargs = arguments.length;\n\tnargs -= 1;\n\tif ( nargs >= 0 && isString( arguments[ nargs ] ) ) {\n\t\tdtype = arguments[ nargs ];\n\t\tnargs -= 1;\n\t} else {\n\t\tdtype = 'float64';\n\t}\n\tctor = ctors( dtype );\n\tif ( ctor === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a recognized data type. Value: `%s`.', dtype ) );\n\t}\n\tif ( dtype === 'generic' ) {\n\t\tif ( nargs <= 0 ) {\n\t\t\treturn [];\n\t\t}\n\t\tvalue = arguments[ 0 ];\n\t\targ = arguments[ 1 ];\n\t\tif ( nargs === 1 ) {\n\t\t\tif ( isNonNegativeInteger( arg ) ) {\n\t\t\t\tlen = arg;\n\t\t\t} else if ( isCollection( arg ) ) {\n\t\t\t\tlen = arg.length;\n\t\t\t}\n\t\t\tif ( len !== void 0 ) {\n\t\t\t\treturn filled( value, len );\n\t\t\t}\n\t\t\tif ( isArrayBuffer( arg ) ) {\n\t\t\t\tthrow new Error( 'invalid arguments. Creating a generic array from an ArrayBuffer is not supported.' );\n\t\t\t}\n\t\t\tif ( isObject( arg ) ) {\n\t\t\t\tif ( HAS_ITERATOR_SYMBOL === false ) {\n\t\t\t\t\tthrow new TypeError( format( 'invalid argument. Environment lacks Symbol.iterator support. Must provide a length, typed array, or array-like object. Value: `%s`.', arg ) );\n\t\t\t\t}\n\t\t\t\tif ( !isFunction( arg[ ITERATOR_SYMBOL ] ) ) {\n\t\t\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.', arg ) );\n\t\t\t\t}\n\t\t\t\targ = arg[ ITERATOR_SYMBOL ]();\n\t\t\t\tif ( !isFunction( arg.next ) ) {\n\t\t\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.', arg ) );\n\t\t\t\t}\n\t\t\t\treturn filledIterator( arg, value );\n\t\t\t}\n\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.', arg ) );\n\t\t} else if ( isArrayBuffer( arg ) ) {\n\t\t\tthrow new Error( 'invalid arguments. Creating a generic array from an ArrayBuffer is not supported.' );\n\t\t}\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.', arg ) );\n\t}\n\tif ( nargs <= 0 ) {\n\t\treturn new ctor( 0 );\n\t}\n\tif ( nargs === 1 ) { // length || array-like || ArrayBuffer || iterable\n\t\targ = arguments[ 1 ];\n\t\tif ( isCollection( arg ) ) {\n\t\t\tarr = new ctor( arg.length );\n\t\t} else if ( isArrayBuffer( arg ) ) {\n\t\t\tarr = new ctor( arg );\n\t\t} else if ( isNonNegativeInteger( arg ) ) {\n\t\t\tarr = new ctor( arg );\n\t\t} else if ( isObject( arg ) ) {\n\t\t\tif ( HAS_ITERATOR_SYMBOL === false ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Environment lacks Symbol.iterator support. Must provide a length, typed array, or array-like object. Value: `%s`.', arg ) );\n\t\t\t}\n\t\t\tif ( !isFunction( arg[ ITERATOR_SYMBOL ] ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.', arg ) );\n\t\t\t}\n\t\t\targ = arg[ ITERATOR_SYMBOL ]();\n\t\t\tif ( !isFunction( arg.next ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.', arg ) );\n\t\t\t}\n\t\t\tarr = new ctor( iterLength( arg ) );\n\t\t} else {\n\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.', arg ) );\n\t\t}\n\t} else if ( nargs === 2 ) {\n\t\tarr = new ctor( arguments[1], arguments[2] ); // (ArrayBuffer, byteOffset)\n\t} else {\n\t\tarr = new ctor( arguments[1], arguments[2], arguments[3] ); // (ArrayBuffer, byteOffset, length)\n\t}\n\tif ( arr.length > 0 ) {\n\t\tif ( /^complex/.test( dtype ) ) {\n\t\t\tfilledAccessors( arr, arguments[ 0 ] );\n\t\t} else {\n\t\t\tgfill( arr.length, arguments[ 0 ], arr, 1 );\n\t\t}\n\t}\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = filledarray;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled array.\n*\n* @module @stdlib/array/filled\n*\n* @example\n* var filledarray = require( '@stdlib/array/filled' );\n*\n* var arr = filledarray();\n* // returns <Float64Array>\n*\n* @example\n* var filledarray = require( '@stdlib/array/filled' );\n*\n* var arr = filledarray( 1.0, 2 );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var filledarray = require( '@stdlib/array/filled' );\n*\n* var arr = filledarray( 1.0, 2, 'float32' );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*\n* @example\n* var filledarray = require( '@stdlib/array/filled' );\n*\n* var arr = filledarray( 1.0, 2, 'generic' );\n* // returns [ 1.0, 1.0 ]\n*\n* @example\n* var filledarray = require( '@stdlib/array/filled' );\n*\n* var arr = filledarray( 1.0, [ 0.5, 0.5 ] );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var filledarray = require( '@stdlib/array/filled' );\n*\n* var arr = filledarray( 1, [ 5, -3 ], 'int32' );\n* // returns <Int32Array>[ 1, 1 ]\n*\n* @example\n* var filledarray = require( '@stdlib/array/filled' );\n*\n* var arr1 = filledarray( 10, [ 5, 3 ], 'int32' );\n* var arr2 = filledarray( 1.0, arr1 );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var filledarray = require( '@stdlib/array/filled' );\n*\n* var arr1 = filledarray( 1, [ 5, 3 ], 'int32' );\n* var arr2 = filledarray( 2, arr1, 'uint32' );\n* // returns <Uint32Array>[ 2, 2 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var filledarray = require( '@stdlib/array/filled' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarray( 1.0, buf );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var filledarray = require( '@stdlib/array/filled' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarray( 1.0, buf, 'float32' );\n* // returns <Float32Array>[ 1.0, 1.0, 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var filledarray = require( '@stdlib/array/filled' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarray( 1.0, buf, 8 );\n* // returns <Float64Array>[ 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var filledarray = require( '@stdlib/array/filled' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarray( 1.0, buf, 8, 'float32' );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var filledarray = require( '@stdlib/array/filled' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = filledarray( 1.0, buf, 8, 2 );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var filledarray = require( '@stdlib/array/filled' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = filledarray( 1, buf, 8, 2, 'int32' );\n* // returns <Int32Array>[ 1, 1 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' );\nvar isObject = require( '@stdlib/assert/is-object' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar ctors = require( './../../ctors' );\nvar gfillBy = require( '@stdlib/blas/ext/base/gfill-by' );\nvar filledArray = require( './../../base/filled-by' );\nvar hasIteratorSymbolSupport = require( '@stdlib/assert/has-iterator-symbol-support' );\nvar ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' );\nvar iterLength = require( '@stdlib/iter/length' );\nvar format = require( '@stdlib/string/format' );\n\n\n// VARIABLES //\n\nvar HAS_ITERATOR_SYMBOL = hasIteratorSymbolSupport();\nvar DEFAULT_DTYPE = 'float64';\n\n\n// FUNCTIONS //\n\n/**\n* Creates a filled \"generic\" array from an iterator.\n*\n* @private\n* @param {Iterable} it - iterator\n* @param {Callback} clbk - callback function\n* @param {*} thisArg - callback function execution context\n* @returns {Array} filled array\n*/\nfunction filledArrayIterator( it, clbk, thisArg ) {\n\tvar arr;\n\tvar i;\n\tvar v;\n\n\tarr = [];\n\ti = -1;\n\twhile ( true ) {\n\t\tv = it.next();\n\t\tif ( v.done ) {\n\t\t\tbreak;\n\t\t}\n\t\ti += 1;\n\t\tarr.push( clbk.call( thisArg, i ) );\n\t}\n\treturn arr;\n}\n\n/**\n* Fills an array exposing accessors for getting and setting array elements.\n*\n* @private\n* @param {Collection} arr - input array\n* @param {Callback} clbk - callback function\n* @param {*} thisArg - callback function execution context\n* @returns {Collection} input array\n*/\nfunction filledAccessors( arr, clbk, thisArg ) {\n\tvar i;\n\tfor ( i = 0; i < arr.length; i++ ) {\n\t\tarr.set( clbk.call( thisArg, i ), i );\n\t}\n\treturn arr;\n}\n\n\n// MAIN //\n\n/**\n* Creates a filled array according to a provided callback function.\n*\n* @param {(NonNegativeInteger|TypedArray|ArrayLikeObject|ArrayBuffer|Iterable)} [arg] - a length, typed array, array-like object, buffer, or iterable\n* @param {NonNegativeInteger} [byteOffset=0] - byte offset\n* @param {NonNegativeInteger} [length] - view length\n* @param {string} [dtype=\"float64\"] - data type\n* @param {Callback} [clbk] - callback to invoke\n* @param {*} [thisArg] - callback execution context\n* @throws {TypeError} must provide a recognized data type\n* @throws {TypeError} must provide a length, typed array, array-like object, buffer, or iterable\n* @throws {TypeError} callback argument must be a function.\n* @throws {Error} creating a generic array from an `ArrayBuffer` is not supported\n* @returns {(TypedArray|Array)} array or typed array\n*\n* @example\n* var arr = filledarrayBy();\n* // returns <Float64Array>\n*\n* @example\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var arr = filledarrayBy( 2, clbk );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var arr = filledarrayBy( 2, 'float32', clbk );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*\n* @example\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var arr = filledarrayBy( 2, 'generic', clbk );\n* // returns [ 1.0, 1.0 ]\n*\n* @example\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var arr = filledarrayBy( [ 0.5, 0.5 ], clbk );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* function clbk() {\n*     return 1;\n* }\n*\n* var arr = filledarrayBy( [ 5, -3 ], 'int32', clbk );\n* // returns <Int32Array>[ 1, 1 ]\n*\n* @example\n* function clbk1() {\n*     return 10;\n* }\n*\n* function clbk2() {\n*     return 1.0;\n* }\n*\n* var arr1 = filledarrayBy( [ 5, 3 ], 'int32', clbk1 );\n* var arr2 = filledarrayBy( arr1, clbk2 );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* function clbk1() {\n*     return 1.0;\n* }\n*\n* function clbk2() {\n*     return 2;\n* }\n*\n* var arr1 = filledarrayBy( [ 5, 3 ], 'int32', clbk1 );\n* var arr2 = filledarrayBy( arr1, 'uint32', clbk2 );\n* // returns <Uint32Array>[ 2, 2 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarrayBy( buf, clbk );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarrayBy( buf, 'float32', clbk );\n* // returns <Float32Array>[ 1.0, 1.0, 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarrayBy( buf, 8, clbk );\n* // returns <Float64Array>[ 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarrayBy( buf, 8, 'float32', clbk );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = filledarrayBy( buf, 8, 2, clbk );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* function clbk() {\n*     return 1;\n* }\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = filledarrayBy( buf, 8, 2, 'int32', clbk );\n* // returns <Int32Array>[ 1, 1 ]\n*/\nfunction filledarrayBy() {\n\tvar thisArg;\n\tvar nargs;\n\tvar dtype;\n\tvar clbk;\n\tvar ctor;\n\tvar arr;\n\tvar len;\n\tvar arg;\n\n\tnargs = arguments.length;\n\n\t// If we weren't provided any arguments, return an empty array...\n\tif ( nargs === 0 ) {\n\t\tctor = ctors( DEFAULT_DTYPE );\n\t\treturn new ctor( 0 );\n\t}\n\t// Check if we were provided a dtype as the first argument...\n\tdtype = arguments[ 0 ];\n\tif ( isString( dtype ) ) {\n\t\t// Invoking this function with arguments `f( dtype, clbk[, thisArg] )` is not allowed (otherwise, we'd need to also allow `f( clbk[, thisArg] )`)...\n\t\tif ( nargs > 1 ) {\n\t\t\tthrow new TypeError( 'invalid arguments. Must provide a length, typed array, array-like object, or an iterable.' );\n\t\t}\n\t\tctor = ctors( dtype );\n\t\tif ( ctor === null ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a recognized data type. Value: `%s`.', dtype ) );\n\t\t}\n\t\t// Return an empty array having the specified dtype:\n\t\treturn new ctor( 0 );\n\t}\n\t// For all other supported invocations, we need at least two arguments...\n\tif ( nargs < 2 ) {\n\t\tthrow new TypeError( 'invalid arguments. Must provide a length, typed array, array-like object, or an iterable.' );\n\t}\n\t// At this point, we need to do some argument juggling...\n\tnargs -= 1; // henceforth, the number of available arguments is `nargs+1`\n\n\t// Determine whether the last argument is a callback or \"this\" context...\n\tif ( isFunction( arguments[ nargs ] ) ) {\n\t\t// If the last argument is a function, we need to check the next-to-last argument, and, if the next-to-last argument is a function, assume that the next-to-last argument is the callback and the last argument is a \"this\" context...\n\t\tif ( isFunction( arguments[ nargs-1 ] ) ) {\n\t\t\tthisArg = arguments[ nargs ];\n\t\t\tnargs -= 1;\n\t\t\tclbk = arguments[ nargs ];\n\n\t\t\t// Check if we were provided only a callback and a \"this\" context..\n\t\t\tif ( nargs === 0 ) {\n\t\t\t\tthrow new TypeError( 'invalid arguments. Must provide a length, typed array, array-like object, or an iterable.' );\n\t\t\t}\n\t\t} else {\n\t\t\t// \"this\" context is left undefined...\n\t\t\tclbk = arguments[ nargs ];\n\t\t}\n\t}\n\t// If we were provided 3 or more arguments and the last argument was not a function, assume that we were provided a callback and a \"this\" context...\n\telse if ( nargs >= 2 ) {\n\t\tthisArg = arguments[ nargs ];\n\t\tnargs -= 1;\n\t\tclbk = arguments[ nargs ];\n\t\tif ( !isFunction( clbk ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Callback argument must be a function. Value: `%s`.', clbk ) );\n\t\t}\n\t}\n\t// If were were only provided 2 arguments and the last argument was not a function, we've been provided an insufficient number of arguments...\n\telse {\n\t\tthrow new TypeError( 'invalid arguments. Must provide a length, typed array, array-like object, or an iterable.' );\n\t}\n\t// Now that we've processed the callback arguments, let's continue working backward to see if we've been provided a `dtype` argument...\n\tnargs -= 1;\n\tif ( nargs >= 0 && isString( arguments[ nargs ] ) ) {\n\t\tdtype = arguments[ nargs ];\n\t\tnargs -= 1;\n\t} else {\n\t\tdtype = DEFAULT_DTYPE;\n\t}\n\tctor = ctors( dtype );\n\tif ( ctor === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a recognized data type. Value: `%s`.', dtype ) );\n\t}\n\t// At this point, we've resolved the output array data type, and now we can actually create the output array...\n\tif ( dtype === 'generic' ) {\n\t\targ = arguments[ 0 ];\n\t\tif ( nargs === 0 ) {\n\t\t\tif ( isNonNegativeInteger( arg ) ) {\n\t\t\t\tlen = arg;\n\t\t\t} else if ( isCollection( arg ) ) {\n\t\t\t\tlen = arg.length;\n\t\t\t}\n\t\t\tif ( len !== void 0 ) {\n\t\t\t\treturn filledArray( len, clbk, thisArg );\n\t\t\t}\n\t\t\tif ( isArrayBuffer( arg ) ) {\n\t\t\t\tthrow new Error( 'invalid arguments. Creating a generic array from an ArrayBuffer is not supported.' );\n\t\t\t}\n\t\t\tif ( isObject( arg ) ) {\n\t\t\t\tif ( HAS_ITERATOR_SYMBOL === false ) {\n\t\t\t\t\tthrow new TypeError( format( 'invalid argument. Environment lacks Symbol.iterator support. Must provide a length, typed array, or array-like object. Value: `%s`.', arg ) );\n\t\t\t\t}\n\t\t\t\tif ( !isFunction( arg[ ITERATOR_SYMBOL ] ) ) {\n\t\t\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.', arg ) );\n\t\t\t\t}\n\t\t\t\targ = arg[ ITERATOR_SYMBOL ]();\n\t\t\t\tif ( !isFunction( arg.next ) ) {\n\t\t\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.', arg ) );\n\t\t\t\t}\n\t\t\t\treturn filledArrayIterator( arg, clbk, thisArg );\n\t\t\t}\n\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.', arg ) );\n\t\t} else if ( isArrayBuffer( arg ) ) {\n\t\t\tthrow new Error( 'invalid arguments. Creating a generic array from an ArrayBuffer is not supported.' );\n\t\t}\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.', arg ) );\n\t}\n\tif ( nargs === 0 ) { // length || array-like || ArrayBuffer || iterable\n\t\targ = arguments[ 0 ];\n\t\tif ( isCollection( arg ) ) {\n\t\t\tarr = new ctor( arg.length );\n\t\t} else if ( isArrayBuffer( arg ) ) {\n\t\t\tarr = new ctor( arg );\n\t\t} else if ( isNonNegativeInteger( arg ) ) {\n\t\t\tarr = new ctor( arg );\n\t\t} else if ( isObject( arg ) ) {\n\t\t\tif ( HAS_ITERATOR_SYMBOL === false ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Environment lacks Symbol.iterator support. Must provide a length, typed array, or array-like object. Value: `%s`.', arg ) );\n\t\t\t}\n\t\t\tif ( !isFunction( arg[ ITERATOR_SYMBOL ] ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.', arg ) );\n\t\t\t}\n\t\t\targ = arg[ ITERATOR_SYMBOL ]();\n\t\t\tif ( !isFunction( arg.next ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.', arg ) );\n\t\t\t}\n\t\t\tarr = new ctor( iterLength( arg ) );\n\t\t} else {\n\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.', arg ) );\n\t\t}\n\t} else if ( nargs === 1 ) {\n\t\tarr = new ctor( arguments[0], arguments[1] ); // (ArrayBuffer, byteOffset)\n\t} else {\n\t\tarr = new ctor( arguments[0], arguments[1], arguments[2] ); // (ArrayBuffer, byteOffset, length)\n\t}\n\tif ( arr.length > 0 ) {\n\t\tif ( /^complex/.test( dtype ) ) {\n\t\t\tfilledAccessors( arr, clbk, thisArg );\n\t\t} else {\n\t\t\tgfillBy( arr.length, arr, 1, callback );\n\t\t}\n\t}\n\treturn arr;\n\n\t/**\n\t* Callback which wraps a provided callback and is invoked for each array element.\n\t*\n\t* @private\n\t* @param {*} value - element value\n\t* @param {NonNegativeInteger} aidx - array index\n\t* @param {NonNegativeInteger} sidx - strided index\n\t* @param {Collection} array - input array/collection\n\t* @returns {*} callback return value\n\t*/\n\tfunction callback( value, aidx ) {\n\t\treturn clbk.call( thisArg, aidx );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = filledarrayBy;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled array according to a provided callback function.\n*\n* @module @stdlib/array/filled-by\n*\n* @example\n* var filledarrayBy = require( '@stdlib/array/filled-by' );\n*\n* var arr = filledarrayBy();\n* // returns <Float64Array>\n*\n* @example\n* var filledarrayBy = require( '@stdlib/array/filled-by' );\n*\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var arr = filledarrayBy( 2, clbk );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var filledarrayBy = require( '@stdlib/array/filled-by' );\n*\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var arr = filledarrayBy( 2, 'float32', clbk );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*\n* @example\n* var filledarrayBy = require( '@stdlib/array/filled-by' );\n*\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var arr = filledarrayBy( 2, 'generic', clbk );\n* // returns [ 1.0, 1.0 ]\n*\n* @example\n* var filledarrayBy = require( '@stdlib/array/filled-by' );\n*\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var arr = filledarrayBy( [ 0.5, 0.5 ], clbk );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var filledarrayBy = require( '@stdlib/array/filled-by' );\n*\n* function clbk() {\n*     return 1;\n* }\n*\n* var arr = filledarrayBy( [ 5, -3 ], 'int32', clbk );\n* // returns <Int32Array>[ 1, 1 ]\n*\n* @example\n* var filledarrayBy = require( '@stdlib/array/filled-by' );\n*\n* function clbk1() {\n*     return 10;\n* }\n*\n* function clbk2() {\n*     return 1.0;\n* }\n*\n* var arr1 = filledarrayBy( [ 5, 3 ], 'int32', clbk1 );\n* var arr2 = filledarrayBy( arr1, clbk2 );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var filledarrayBy = require( '@stdlib/array/filled-by' );\n*\n* function clbk1() {\n*     return 1.0;\n* }\n*\n* function clbk2() {\n*     return 2;\n* }\n*\n* var arr1 = filledarrayBy( [ 5, 3 ], 'int32', clbk1 );\n* var arr2 = filledarrayBy( arr1, 'uint32', clbk2 );\n* // returns <Uint32Array>[ 2, 2 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var filledarrayBy = require( '@stdlib/array/filled-by' );\n*\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarrayBy( buf, clbk );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var filledarrayBy = require( '@stdlib/array/filled-by' );\n*\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarrayBy( buf, 'float32', clbk );\n* // returns <Float32Array>[ 1.0, 1.0, 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var filledarrayBy = require( '@stdlib/array/filled-by' );\n*\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarrayBy( buf, 8, clbk );\n* // returns <Float64Array>[ 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var filledarrayBy = require( '@stdlib/array/filled-by' );\n*\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = filledarrayBy( buf, 8, 'float32', clbk );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var filledarrayBy = require( '@stdlib/array/filled-by' );\n*\n* function clbk() {\n*     return 1.0;\n* }\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = filledarrayBy( buf, 8, 2, clbk );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var filledarrayBy = require( '@stdlib/array/filled-by' );\n*\n* function clbk() {\n*     return 1;\n* }\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = filledarrayBy( buf, 8, 2, 'int32', clbk );\n* // returns <Int32Array>[ 1, 1 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isIteratorLike = require( '@stdlib/assert/is-iterator-like' );\nvar isAccessorArray = require( './../../base/assert/is-accessor-array' );\nvar accessorSetter = require( './../../base/accessor-setter' );\nvar setter = require( './../../base/setter' );\nvar dtype = require( './../../dtype' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Creates (or fills) an array from an iterator.\n*\n* @param {Iterator} iterator - source iterator\n* @param {Collection} [out] - output array\n* @param {Function} [mapFcn] - function to invoke for each iterated value\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} iterator argument must be an iterator\n* @throws {TypeError} callback argument must be a function\n* @returns {Collection} output array\n*\n* @example\n* var randu = require( '@stdlib/random/iter/randu' );\n*\n* var iter = randu({\n*     'iter': 10\n* });\n*\n* var arr = iterator2array( iter );\n* // returns <Array>\n*/\nfunction iterator2array() {\n\tvar iterator;\n\tvar thisArg;\n\tvar fcn;\n\tvar out;\n\tvar len;\n\tvar set;\n\tvar dt;\n\tvar i;\n\tvar v;\n\n\titerator = arguments[ 0 ];\n\tif ( arguments.length > 1 ) {\n\t\tif ( isCollection( arguments[ 1 ] ) ) {\n\t\t\tout = arguments[ 1 ];\n\t\t\tif ( arguments.length > 2 ) {\n\t\t\t\tfcn = arguments[ 2 ];\n\t\t\t\tif ( !isFunction( fcn ) ) {\n\t\t\t\t\tthrow new TypeError( format( 'invalid argument. Callback argument must be a function. Value: `%s`.', fcn ) );\n\t\t\t\t}\n\t\t\t\tthisArg = arguments[ 3 ];\n\t\t\t}\n\t\t} else {\n\t\t\tfcn = arguments[ 1 ];\n\t\t\tif ( !isFunction( fcn ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Callback argument must be a function. Value: `%s`.', fcn ) );\n\t\t\t}\n\t\t\tthisArg = arguments[ 2 ];\n\t\t}\n\t}\n\tif ( !isIteratorLike( iterator ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Iterator argument must be an iterator protocol-compliant object. Value: `%s`.', iterator ) );\n\t}\n\ti = -1;\n\tif ( out === void 0 ) {\n\t\tout = [];\n\t\tif ( fcn ) {\n\t\t\twhile ( true ) {\n\t\t\t\ti += 1;\n\t\t\t\tv = iterator.next();\n\t\t\t\tif ( v.done ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tout.push( fcn.call( thisArg, v.value, i ) );\n\t\t\t}\n\t\t\treturn out;\n\t\t}\n\t\twhile ( true ) {\n\t\t\tv = iterator.next();\n\t\t\tif ( v.done ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tout.push( v.value );\n\t\t}\n\t\treturn out;\n\t}\n\tlen = out.length;\n\tdt = dtype( out );\n\tif ( isAccessorArray( out ) ) {\n\t\tset = accessorSetter( dt );\n\t} else {\n\t\tset = setter( dt );\n\t}\n\tif ( fcn ) {\n\t\twhile ( i < len-1 ) {\n\t\t\ti += 1;\n\t\t\tv = iterator.next();\n\t\t\tif ( v.done ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tset( out, i, fcn.call( thisArg, v.value, i ) );\n\t\t}\n\t\treturn out;\n\t}\n\twhile ( i < len-1 ) {\n\t\ti += 1;\n\t\tv = iterator.next();\n\t\tif ( v.done ) {\n\t\t\tbreak;\n\t\t}\n\t\tset( out, i, v.value );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = iterator2array;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create (or fill) an array from an iterator.\n*\n* @module @stdlib/array/from-iterator\n*\n* @example\n* var randu = require( '@stdlib/random/iter/randu' );\n* var iterator2array = require( '@stdlib/array/from-iterator' );\n*\n* var iter = randu({\n*     'iter': 10\n* });\n*\n* var arr = iterator2array( iter );\n* // returns <Array>\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar ctors = require( './../../ctors' );\nvar afill = require( './../../base/filled' );\nvar gfill = require( '@stdlib/blas/ext/base/gfill' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Creates a filled array having a specified length.\n*\n* @param {NonNegativeInteger} length - array length\n* @param {*} value - fill value\n* @param {string} [dtype=\"float64\"] - data type\n* @throws {TypeError} first argument must be a nonnegative integer\n* @throws {TypeError} third argument must be a recognized data type\n* @returns {(TypedArray|Array|ComplexArray)} array or typed array\n*\n* @example\n* var arr = full( 2, 1.0 );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var arr = full( 2, 1.0, 'float32' );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*/\nfunction full( length, value ) {\n\tvar dtype;\n\tvar ctor;\n\tvar out;\n\tif ( !isNonNegativeInteger( length ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a nonnegative integer. Value: `%s`.', length ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tdtype = arguments[ 2 ];\n\t} else {\n\t\tdtype = 'float64';\n\t}\n\tif ( dtype === 'generic' ) {\n\t\treturn afill( value, length );\n\t}\n\tctor = ctors( dtype );\n\tif ( ctor === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a recognized data type. Value: `%s`.', dtype ) );\n\t}\n\tout = new ctor( length );\n\n\t// TODO: revisit the following, as using `gfill` is not the most performant, especially for large arrays. We have two options: (1) use a native add-on which delegates to an appropriate C function which performs the loop or (2) use @stdlib/blas/ext/base/(d|s|c|z)fill functions which use native add-ons. The latter option is not great, as we only get perf boosts for large arrays for a select number of dtypes. The former option is more work, as we may need to write a bespoke add-on for handling the argument signature and the various types that `value` can assume (e.g., number, complex, etc). If we had a generic strided `copy` package with an add-on, we could wrap the value as a single element strided array with a stride of `0` and copy from `x` to `y`, and thus would not need to write a bespoke add-on. Note, however, that calling into a native add-on is not free. For shorter arrays, we'll likely observe a perf hit in Node.js. For now, we focus on just getting something working...\n\tgfill( length, value, out, 1 );\n\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = full;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled array having a specified length.\n*\n* @module @stdlib/array/full\n*\n* @example\n* var full = require( '@stdlib/array/full' );\n*\n* var arr = full( 2, 1.0 );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var full = require( '@stdlib/array/full' );\n*\n* var arr = full( 2, 1.0, 'float32' );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar format = require( '@stdlib/string/format' );\nvar dtype = require( './../../dtype' );\nvar full = require( './../../full' );\nvar Complex128 = require( '@stdlib/complex/float64' );\nvar Complex64 = require( '@stdlib/complex/float32' );\n\n\n// MAIN //\n\n/**\n* Creates a filled array having the same length and data type as a provided input array.\n*\n* @param {(Array|TypedArray|ComplexArray)} x - input array\n* @param {number} value - fill value\n* @param {string} [dtype] - data type\n* @throws {TypeError} first argument must be an array or typed array\n* @throws {TypeError} third argument must be a recognized data type\n* @returns {(TypedArray|Array|ComplexArray)} array or typed array\n*\n* @example\n* var arr = fullLike( [ 0.0, 0.0 ], 1.0 );\n* // returns [ 1.0, 1.0 ]\n*\n* @example\n* var arr = fullLike( [ 0.0, 0.0 ], 1.0, 'float32' );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*/\nfunction fullLike( x, value ) {\n\tvar dt;\n\tvar v;\n\n\tdt = dtype( x ); // delegate input argument validation to dtype resolution\n\tif ( dt === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be either an array, typed array, or complex typed array. Value: `%s`.', x ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tdt = arguments[ 2 ];\n\t}\n\tif ( typeof value === 'number' ) {\n\t\tif ( dt === 'complex128' ) {\n\t\t\tv = new Complex128( value, 0.0 );\n\t\t} else if ( dt === 'complex64' ) {\n\t\t\tv = new Complex64( value, 0.0 );\n\t\t} else {\n\t\t\tv = value;\n\t\t}\n\t} else {\n\t\tv = value;\n\t}\n\treturn full( x.length, v, dt );\n}\n\n\n// EXPORTS //\n\nmodule.exports = fullLike;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a filled array having the same length and data type as a provided input array.\n*\n* @module @stdlib/array/full-like\n*\n* @example\n* var fullLike = require( '@stdlib/array/full-like' );\n*\n* var arr = fullLike( [ 0.0, 0.0 ], 1.0 );\n* // returns [ 1.0, 1.0 ]\n*\n* @example\n* var fullLike = require( '@stdlib/array/full-like' );\n*\n* var arr = fullLike( [ 0.0, 0.0 ], 1.0, 'float32' );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar ceil = require( '@stdlib/math/base/special/ceil' );\nvar isNumber = require( '@stdlib/assert/is-number' ).isPrimitive;\nvar isnan = require( '@stdlib/math/base/assert/is-nan' );\nvar format = require( '@stdlib/string/format' );\nvar MAX_LENGTH = require( '@stdlib/constants/uint32/max' );\nvar gen = require( './../../base/incrspace' );\n\n\n// MAIN //\n\n/**\n* Generates a linearly spaced numeric array using a provided increment.\n*\n* @param {number} x1 - first array value\n* @param {number} x2 - array element bound\n* @param {number} [increment=1] - increment\n* @throws {TypeError} first argument must be numeric\n* @throws {TypeError} second argument must be numeric\n* @throws {TypeError} third argument must be numeric\n* @throws {RangeError} length of created array must be less than `4294967295` (`2**32 - 1`)\n* @returns {Array} linearly spaced numeric array\n*\n* @example\n* var arr = incrspace( 0, 11, 2 );\n* // returns [ 0, 2, 4, 6, 8, 10 ]\n*/\nfunction incrspace( x1, x2, increment ) {\n\tvar len;\n\tvar inc;\n\tif ( !isNumber( x1 ) || isnan( x1 ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Start must be numeric. Value: `%s`.', x1 ) );\n\t}\n\tif ( !isNumber( x2 ) || isnan( x2 ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Stop must be numeric. Value: `%s`.', x2 ) );\n\t}\n\tif ( arguments.length < 3 ) {\n\t\tinc = 1;\n\t} else {\n\t\tinc = increment;\n\t\tif ( !isNumber( inc ) || isnan( inc ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Increment must be numeric. Value: `%s`.', inc ) );\n\t\t}\n\t}\n\tlen = ceil( ( x2-x1 ) / inc );\n\tif ( len > MAX_LENGTH ) {\n\t\tthrow new RangeError( 'invalid arguments. Generated array exceeds maximum array length.' );\n\t}\n\treturn gen( x1, x2, inc );\n}\n\n\n// EXPORTS //\n\nmodule.exports = incrspace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Generate a linearly spaced numeric array using a provided increment.\n*\n* @module @stdlib/array/incrspace\n*\n* @example\n* var incrspace = require( '@stdlib/array/incrspace' );\n*\n* var arr = incrspace( 0, 11, 2 );\n* // returns [ 0, 2, 4, 6, 8, 10 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Float64Array = require( './../../float64' );\nvar Float32Array = require( './../../float32' );\nvar Complex128Array = require( './../../complex128' );\nvar Complex64Array = require( './../../complex64' );\n\n\n// MAIN //\n\n// Mapping from data types to constructors...\nvar ctors = {\n\t'float64': Float64Array,\n\t'float32': Float32Array,\n\t'complex128': Complex128Array,\n\t'complex64': Complex64Array\n};\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar table = require( './ctors.js' );\n\n\n// MAIN //\n\n/**\n* Returns a floating-point typed array constructor.\n*\n* @param {string} dtype - data type\n* @returns {(Function|null)} constructor or null\n*\n* @example\n* var ctor = ctors( 'float64' );\n* // returns <Function>\n*\n* @example\n* var ctor = ctors( 'float' );\n* // returns null\n*/\nfunction ctors( dtype ) {\n\treturn table[ dtype ] || null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Floating-point typed array constructors.\n*\n* @module @stdlib/array/typed-float-ctors\n*\n* @example\n* var ctors = require( '@stdlib/array/typed-float-ctors' );\n*\n* var ctor = ctors( 'float64' );\n* // returns <Function>\n*\n* ctor = ctors( 'int' );\n* // returns null\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Generates a linearly spaced array over a specified interval.\n*\n* @private\n* @param {number} start - start of interval\n* @param {number} stop - end of interval\n* @param {NonNegativeInteger} len - length of output array\n* @param {boolean} endpoint - boolean indicating whether to include `stop` in the output array\n* @returns {Array} linearly spaced array\n*\n* @example\n* var arr = linspace( 0, 100, 6, true );\n* // returns [ 0, 20, 40, 60, 80, 100 ]\n*\n* @example\n* var arr = linspace( 0, 100, 5, false );\n* // returns [ 0, 20, 40, 60, 80 ]\n*/\nfunction linspace( start, stop, len, endpoint ) {\n\tvar arr;\n\tvar N;\n\tvar d;\n\tvar i;\n\n\tif ( len === 0 ) {\n\t\treturn [];\n\t}\n\t// Set the first value:\n\tif ( len === 1 ) {\n\t\tif ( endpoint ) {\n\t\t\treturn [ stop ];\n\t\t}\n\t\treturn [ start ];\n\t}\n\tarr = [ start ];\n\n\t// Calculate the increment:\n\tif ( endpoint ) {\n\t\tN = len - 1;\n\t} else {\n\t\tN = len;\n\t}\n\td = ( stop-start ) / N;\n\n\t// Generate linearly spaced values:\n\tfor ( i = 1; i < N; i++ ) {\n\t\tarr.push( start + (d*i) );\n\t}\n\t// Check whether to include the `stop` value in the output array:\n\tif ( endpoint ) {\n\t\tarr.push( stop );\n\t}\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = linspace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Complex64 = require( '@stdlib/complex/float32' );\nvar Complex128 = require( '@stdlib/complex/float64' );\nvar real = require( '@stdlib/complex/real' );\nvar imag = require( '@stdlib/complex/imag' );\nvar realf = require( '@stdlib/complex/realf' );\nvar imagf = require( '@stdlib/complex/imagf' );\n\n\n// MAIN //\n\n/**\n* Generates a linearly spaced complex number array over a specified interval.\n*\n* @private\n* @param {string} dt1 - start value data type\n* @param {(number|ComplexLike)} start - start of interval\n* @param {string} dt2 - stop value data type\n* @param {(number|ComplexLike)} stop - end of interval\n* @param {NonNegativeInteger} len - length of output array\n* @param {boolean} endpoint - boolean indicating whether to include `stop` in the output array\n* @returns {Array} linearly spaced array\n*/\nfunction linspace( dt1, start, dt2, stop, len, endpoint ) {\n\tvar cmplx;\n\tvar isf32;\n\tvar arr;\n\tvar re1;\n\tvar re2;\n\tvar im1;\n\tvar im2;\n\tvar re;\n\tvar im;\n\tvar dr;\n\tvar di;\n\tvar N;\n\tvar i;\n\n\tif ( len === 0 ) {\n\t\treturn [];\n\t}\n\tisf32 = 0;\n\tif ( dt1 === 'float64' ) {\n\t\tre1 = start;\n\t\tim1 = 0.0;\n\t} else if ( dt1 === 'complex64' ) {\n\t\tisf32 += 1;\n\t\tre1 = realf( start );\n\t\tim1 = imagf( start );\n\t} else {\n\t\tre1 = real( start );\n\t\tim1 = imag( start );\n\t}\n\tif ( dt2 === 'float64' ) {\n\t\tre2 = stop;\n\t\tim2 = 0.0;\n\t} else if ( dt2 === 'complex64' ) {\n\t\tisf32 += 1;\n\t\tre2 = realf( stop );\n\t\tim2 = imagf( stop );\n\t} else {\n\t\tre2 = real( stop );\n\t\tim2 = imag( stop );\n\t}\n\t// Determine which complex number constructor to use according to type promotion rules:\n\tif ( isf32 === 2 ) {\n\t\tcmplx = Complex64;\n\t} else {\n\t\tcmplx = Complex128;\n\t}\n\t// Set the first value:\n\tif ( len === 1 ) {\n\t\tif ( endpoint ) {\n\t\t\treturn [ new cmplx( re2, im2 ) ];\n\t\t}\n\t\treturn [ new cmplx( re1, im1 ) ];\n\t}\n\tarr = [ new cmplx( re1, im1 ) ];\n\n\t// Calculate the increments:\n\tif ( endpoint ) {\n\t\tN = len - 1;\n\t} else {\n\t\tN = len;\n\t}\n\tdr = ( re2-re1 ) / N;\n\tdi = ( im2-im1 ) / N;\n\n\t// Generate linearly spaced values:\n\tfor ( i = 1; i < N; i++ ) {\n\t\tre = re1 + (dr*i);\n\t\tim = im1 + (di*i);\n\t\tarr.push( new cmplx( re, im ) );\n\t}\n\t// Check whether to include the `stop` value in the output array:\n\tif ( endpoint ) {\n\t\tarr.push( new cmplx( re2, im2 ) );\n\t}\n\treturn arr;\n}\n\n\n// EXPORTS //\n\nmodule.exports = linspace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Generates a linearly spaced sequence over a specified interval and assigns the results to a provided output array.\n*\n* @private\n* @param {TypedArray} out - output array\n* @param {number} start - start of interval\n* @param {number} stop - end of interval\n* @param {NonNegativeInteger} len - length of output array\n* @param {boolean} endpoint - boolean indicating whether to include `stop` in the output array\n* @returns {TypedArray} linearly spaced array\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var out = new Float64Array( 6 );\n* var arr = linspace( out, 0, 100, out.length, true );\n* // returns <Float64Array>[ 0.0, 20.0, 40.0, 60.0, 80.0, 100.0 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var out = new Float64Array( 5 );\n* var arr = linspace( out, 0, 100, out.length, false );\n* // returns <Float64Array>[ 0.0, 20.0, 40.0, 60.0, 80.0 ]\n*/\nfunction linspace( out, start, stop, len, endpoint ) {\n\tvar N;\n\tvar d;\n\tvar i;\n\n\tif ( len === 0 ) {\n\t\treturn out;\n\t}\n\t// Set the first value:\n\tif ( len === 1 ) {\n\t\tif ( endpoint ) {\n\t\t\tout[ 0 ] = stop;\n\t\t} else {\n\t\t\tout[ 0 ] = start;\n\t\t}\n\t\treturn out;\n\t}\n\tout[ 0 ] = start;\n\n\t// Calculate the increment:\n\tif ( endpoint ) {\n\t\tN = len - 1;\n\t} else {\n\t\tN = len;\n\t}\n\td = ( stop-start ) / N;\n\n\t// Generate linearly spaced values:\n\tfor ( i = 1; i < N; i++ ) {\n\t\tout[ i ] = start + (d*i);\n\t}\n\t// Check whether to include the `stop` value in the output array:\n\tif ( endpoint ) {\n\t\tout[ N ] = stop;\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = linspace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar real = require( '@stdlib/complex/real' );\nvar imag = require( '@stdlib/complex/imag' );\nvar realf = require( '@stdlib/complex/realf' );\nvar imagf = require( '@stdlib/complex/imagf' );\n\n\n// MAIN //\n\n/**\n* Generates a linearly spaced complex number sequence over a specified interval and assigns the results to a provided output array strided view.\n*\n* @private\n* @param {(Float32Array|Float64Array)} out - output array strided view\n* @param {string} dt1 - start value data type\n* @param {(number|ComplexLike)} start - start of interval\n* @param {string} dt2 - stop value data type\n* @param {(number|ComplexLike)} stop - end of interval\n* @param {NonNegativeInteger} len - length of output array\n* @param {boolean} endpoint - boolean indicating whether to include `stop` in the output array\n* @returns {(Float32Array|Float64Array)} complex number array view\n*/\nfunction linspace( out, dt1, start, dt2, stop, len, endpoint ) {\n\tvar re1;\n\tvar re2;\n\tvar im1;\n\tvar im2;\n\tvar dr;\n\tvar di;\n\tvar N;\n\tvar i;\n\tvar j;\n\n\tif ( len === 0 ) {\n\t\treturn out;\n\t}\n\tif ( dt1 === 'float64' ) {\n\t\tre1 = start;\n\t\tim1 = 0.0;\n\t} else if ( dt1 === 'complex64' ) {\n\t\tre1 = realf( start );\n\t\tim1 = imagf( start );\n\t} else {\n\t\tre1 = real( start );\n\t\tim1 = imag( start );\n\t}\n\tif ( dt2 === 'float64' ) {\n\t\tre2 = stop;\n\t\tim2 = 0.0;\n\t} else if ( dt2 === 'complex64' ) {\n\t\tre2 = realf( stop );\n\t\tim2 = imagf( stop );\n\t} else {\n\t\tre2 = real( stop );\n\t\tim2 = imag( stop );\n\t}\n\t// Set the first value:\n\tif ( len === 1 ) {\n\t\tif ( endpoint ) {\n\t\t\tout[ 0 ] = re2;\n\t\t\tout[ 1 ] = im2;\n\t\t} else {\n\t\t\tout[ 0 ] = re1;\n\t\t\tout[ 1 ] = im1;\n\t\t}\n\t\treturn out;\n\t}\n\tout[ 0 ] = re1;\n\tout[ 1 ] = im1;\n\n\t// Calculate the increments:\n\tif ( endpoint ) {\n\t\tN = len - 1;\n\t} else {\n\t\tN = len;\n\t}\n\tdr = ( re2-re1 ) / N;\n\tdi = ( im2-im1 ) / N;\n\n\t// Generate linearly spaced complex numbers:\n\tj = 2;\n\tfor ( i = 1; i < N; i++ ) {\n\t\tout[ j ] = re1 + (dr*i);\n\t\tout[ j+1 ] = im1 + (di*i);\n\t\tj += 2;\n\t}\n\t// Check whether to include the `stop` value in the output array:\n\tif ( endpoint ) {\n\t\tout[ j ] = re2;\n\t\tout[ j+1 ] = im2;\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = linspace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive;\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Validates function options.\n*\n* @private\n* @param {Object} opts - destination object\n* @param {Options} options - function options\n* @param {string} [options.dtype] - output array data type\n* @param {boolean} [options.endpoint] - boolean indicating whether the `stop` value in the output array\n* @returns {(Error|null)} null or an error object\n*\n* @example\n* var opts = {};\n* var options = {\n*     'endpoint': true\n* };\n* var err = validate( opts, options );\n* if ( err ) {\n*     throw err;\n* }\n*/\nfunction validate( opts, options ) {\n\tif ( !isObject( options ) ) {\n\t\treturn new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t}\n\tif ( hasOwnProp( options, 'dtype' ) ) {\n\t\topts.dtype = options.dtype;\n\t\tif ( !isString( opts.dtype ) ) {\n\t\t\treturn new TypeError( format( 'invalid option. `%s` option must be a string. Option: `%s`.', 'dtype', opts.dtype ) );\n\t\t}\n\t}\n\tif ( hasOwnProp( options, 'endpoint' ) ) {\n\t\topts.endpoint = options.endpoint;\n\t\tif ( !isBoolean( opts.endpoint ) ) {\n\t\t\treturn new TypeError( format( 'invalid option. `%s` option must be a boolean. Option: `%s`.', 'endpoint', opts.endpoint ) );\n\t\t}\n\t}\n\treturn null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = validate;\n", "{\n    \"endpoint\": true\n}\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isComplexLike = require( '@stdlib/assert/is-complex-like' );\nvar isNumber = require( '@stdlib/assert/is-number' ).isPrimitive;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isnan = require( '@stdlib/math/base/assert/is-nan' );\nvar dtype = require( '@stdlib/complex/dtype' );\nvar ctors = require( './../../typed-float-ctors' );\nvar reinterpret64 = require( '@stdlib/strided/base/reinterpret-complex64' );\nvar reinterpret128 = require( '@stdlib/strided/base/reinterpret-complex128' );\nvar format = require( '@stdlib/string/format' );\nvar genreal = require( './generic_real.js' );\nvar gencmplx = require( './generic_complex.js' );\nvar typedreal = require( './typed_real.js' );\nvar typedcmplx = require( './typed_complex.js' );\nvar validate = require( './validate.js' );\nvar defaults = require( './defaults.json' );\n\n\n// MAIN //\n\n/**\n* Generates a linearly spaced array over a specified interval.\n*\n* @param {(number|ComplexLike)} start - start of interval\n* @param {(number|ComplexLike)} stop - end of interval\n* @param {NonNegativeInteger} len - length of output array\n* @param {Options} [options] - options\n* @param {string} [options.dtype] - output array data type\n* @param {boolean} [options.endpoint=true] - boolean indicating whether to include the `stop` value in the output array\n* @throws {TypeError} first argument must be either a real or complex number\n* @throws {TypeError} second argument must be either a real or complex number\n* @throws {TypeError} third argument must be a nonnegative integer\n* @throws {TypeError} last argument must be an object\n* @throws {TypeError} must provide valid options\n* @throws {TypeError} the output array data type must be a complex number data type or \"generic\" when either `start` or `stop` is a complex number\n* @throws {TypeError} the output array data type must be a real or complex floating-point number data type or \"generic\"\n* @returns {(Array|TypedArray|ComplexArray)} linearly spaced array\n*\n* @example\n* var arr = linspace( 0, 100, 6, {\n*     'dtype': 'generic'\n* });\n* // returns [ 0, 20, 40, 60, 80, 100 ]\n*/\nfunction linspace( start, stop, len ) {\n\tvar opts;\n\tvar ctor;\n\tvar err;\n\tvar out;\n\tvar dt1;\n\tvar dt2;\n\tvar flg;\n\n\tif ( typeof start === 'object' ) {\n\t\tdt1 = dtype( start );\n\t\tif ( dt1 === null ) {\n\t\t\tif ( !isComplexLike( start ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. First argument must be either a real or complex number. Value: `%s`.', start ) );\n\t\t\t}\n\t\t\tdt1 = 'complex128';\n\t\t}\n\t\tflg = true;\n\t} else if ( !isNumber( start ) || isnan( start ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be either a real or complex number. Value: `%s`.', start ) );\n\t} else {\n\t\tdt1 = 'float64';\n\t}\n\tif ( typeof stop === 'object' ) {\n\t\tdt2 = dtype( stop );\n\t\tif ( dt2 === null ) {\n\t\t\tif ( !isComplexLike( stop ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be either a real or complex number. Value: `%s`.', stop ) );\n\t\t\t}\n\t\t\tdt2 = 'complex128';\n\t\t}\n\t\tflg = true;\n\t} else if ( !isNumber( stop ) || isnan( stop ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be either a real or complex number. Value: `%s`.', stop ) );\n\t} else {\n\t\tdt2 = 'float64';\n\t}\n\tif ( !isNonNegativeInteger( len ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a nonnegative integer. Value: `%s`.', len ) );\n\t}\n\topts = {\n\t\t'endpoint': defaults.endpoint\n\t};\n\tif ( dt1 === dt2 ) {\n\t\topts.dtype = dt1; // one of 'float64' || 'complex64' || 'complex128'\n\t} else {\n\t\t// If dtypes are different, then at least one is a complex number. According to type promotion rules, for all possible dtype permutations, the default output data type should be 'complex128'...\n\t\topts.dtype = 'complex128';\n\t}\n\tif ( arguments.length > 3 ) {\n\t\terr = validate( opts, arguments[ 3 ] );\n\t\tif ( err ) {\n\t\t\tthrow err;\n\t\t}\n\t}\n\tif ( opts.dtype === 'generic' ) {\n\t\tif ( flg ) {\n\t\t\treturn gencmplx( dt1, start, dt2, stop, len, opts.endpoint );\n\t\t}\n\t\treturn genreal( start, stop, len, opts.endpoint );\n\t}\n\tctor = ctors( opts.dtype );\n\tif ( ctor === null ) {\n\t\tthrow new TypeError( format( 'invalid option. `%s` option must be a real or complex floating-point data type or \"generic\". Option: `%s`.', 'dtype', opts.dtype ) );\n\t}\n\tout = new ctor( len );\n\tif ( opts.dtype === 'complex64' ) {\n\t\ttypedcmplx( reinterpret64( out, 0 ), dt1, start, dt2, stop, len, opts.endpoint ); // eslint-disable-line max-len\n\t\treturn out;\n\t}\n\tif ( opts.dtype === 'complex128' ) {\n\t\ttypedcmplx( reinterpret128( out, 0 ), dt1, start, dt2, stop, len, opts.endpoint ); // eslint-disable-line max-len\n\t\treturn out;\n\t}\n\tif ( flg ) {\n\t\tthrow new TypeError( 'invalid arguments. If either of the first two arguments are complex numbers, the output array data type must be a complex number data type or \"generic\".' );\n\t}\n\treturn typedreal( out, start, stop, len, opts.endpoint );\n}\n\n\n// EXPORTS //\n\nmodule.exports = linspace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Complex64 = require( '@stdlib/complex/float32' );\nvar Complex128 = require( '@stdlib/complex/float64' );\nvar real = require( '@stdlib/complex/real' );\nvar imag = require( '@stdlib/complex/imag' );\nvar realf = require( '@stdlib/complex/realf' );\nvar imagf = require( '@stdlib/complex/imagf' );\n\n\n// MAIN //\n\n/**\n* Generates a linearly spaced complex number sequence over a specified interval and assigns results to a provided output array.\n*\n* @private\n* @param {Object} out - output array object\n* @param {ArrayLikeObject} out.data - output array data\n* @param {Array<Function>} out.accessors - array element accessors\n* @param {string} dt1 - start value data type\n* @param {ComplexLike} start - start of interval\n* @param {string} dt2 - stop value data type\n* @param {ComplexLike} stop - end of interval\n* @param {NonNegativeInteger} len - length of output array\n* @param {boolean} endpoint - boolean indicating whether to include `stop` in the output array\n* @returns {Object} output array object\n*/\nfunction linspace( out, dt1, start, dt2, stop, len, endpoint ) {\n\tvar cmplx;\n\tvar isf32;\n\tvar re1;\n\tvar re2;\n\tvar im1;\n\tvar im2;\n\tvar set;\n\tvar buf;\n\tvar re;\n\tvar im;\n\tvar dr;\n\tvar di;\n\tvar N;\n\tvar i;\n\n\tif ( len === 0 ) {\n\t\treturn out;\n\t}\n\tisf32 = 0;\n\tif ( dt1 === 'float64' ) {\n\t\tre1 = start;\n\t\tim1 = 0.0;\n\t} else if ( dt1 === 'complex64' ) {\n\t\tisf32 += 1;\n\t\tre1 = realf( start );\n\t\tim1 = imagf( start );\n\t} else {\n\t\tre1 = real( start );\n\t\tim1 = imag( start );\n\t}\n\tif ( dt2 === 'float64' ) {\n\t\tre2 = stop;\n\t\tim2 = 0.0;\n\t} else if ( dt2 === 'complex64' ) {\n\t\tisf32 += 1;\n\t\tre2 = realf( stop );\n\t\tim2 = imagf( stop );\n\t} else {\n\t\tre2 = real( stop );\n\t\tim2 = imag( stop );\n\t}\n\t// Determine which complex number constructor to use according to type promotion rules:\n\tif ( isf32 === 2 ) {\n\t\tcmplx = Complex64;\n\t} else {\n\t\tcmplx = Complex128;\n\t}\n\t// Cache array object references:\n\tbuf = out.data;\n\tset = out.accessors[ 1 ];\n\n\t// Set the first value:\n\tif ( len === 1 ) {\n\t\tif ( endpoint ) {\n\t\t\tset( buf, 0, new cmplx( re2, im2 ) );\n\t\t} else {\n\t\t\tset( buf, 0, new cmplx( re1, im1 ) );\n\t\t}\n\t\treturn out;\n\t}\n\tset( buf, 0, new cmplx( re1, im1 ) );\n\n\t// Calculate the increments:\n\tif ( endpoint ) {\n\t\tN = len - 1;\n\t} else {\n\t\tN = len;\n\t}\n\tdr = ( re2-re1 ) / N;\n\tdi = ( im2-im1 ) / N;\n\n\t// Generate the linearly spaced values:\n\tfor ( i = 1; i < N; i++ ) {\n\t\tre = re1 + (dr*i);\n\t\tim = im1 + (di*i);\n\t\tset( buf, i, new cmplx( re, im ) );\n\t}\n\t// Check whether to include the `stop` value in the output array:\n\tif ( endpoint ) {\n\t\tset( buf, N, new cmplx( re2, im2 ) );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = linspace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Generates a linearly spaced sequence over a specified interval and assigns results to a provided output array.\n*\n* @private\n* @param {Object} out - output array object\n* @param {ArrayLikeObject} out.data - output array data\n* @param {Array<Function>} out.accessors - array element accessors\n* @param {number} start - start of interval\n* @param {number} stop - end of interval\n* @param {NonNegativeInteger} len - length of output array\n* @param {boolean} endpoint - boolean indicating whether to include `stop` in the output array\n* @returns {Object} output array object\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* function set( buf, i, v ) {\n*     buf[ i ] = v * 2.0;\n* }\n*\n* var out = new Float64Array( 6 );\n* var obj = {\n*     'data': out,\n*     'accessors': [ null, set ]\n* };\n* linspace( obj, 0, 100, out.length, true );\n*\n* var arr = obj.data;\n* // returns <Float64Array>[ 0.0, 40.0, 80.0, 120.0, 160.0, 200.0 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* function set( buf, i, v ) {\n*     buf[ i ] = v * 2.0;\n* }\n*\n* var out = new Float64Array( 5 );\n* var obj = {\n*     'data': out,\n*     'accessors': [ null, set ]\n* };\n* linspace( obj, 0, 100, out.length, false );\n*\n* var arr = obj.data;\n* // returns <Float64Array>[ 0.0, 40.0, 80.0, 120.0, 160.0 ]\n*/\nfunction linspace( out, start, stop, len, endpoint ) {\n\tvar buf;\n\tvar set;\n\tvar N;\n\tvar d;\n\tvar i;\n\n\tif ( len === 0 ) {\n\t\treturn out;\n\t}\n\t// Cache array object references:\n\tbuf = out.data;\n\tset = out.accessors[ 1 ];\n\n\t// Set the first value:\n\tif ( len === 1 ) {\n\t\tif ( endpoint ) {\n\t\t\tset( buf, 0, stop );\n\t\t} else {\n\t\t\tset( buf, 0, start );\n\t\t}\n\t\treturn out;\n\t}\n\tset( buf, 0, start );\n\n\t// Calculate the increment:\n\tif ( endpoint ) {\n\t\tN = len - 1;\n\t} else {\n\t\tN = len;\n\t}\n\td = ( stop-start ) / N;\n\n\t// Generate linearly spaced values:\n\tfor ( i = 1; i < N; i++ ) {\n\t\tset( buf, i, start + (d*i) );\n\t}\n\t// Check whether to include the `stop` value in the output array:\n\tif ( endpoint ) {\n\t\tset( buf, N, stop );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = linspace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isComplexLike = require( '@stdlib/assert/is-complex-like' );\nvar isNumber = require( '@stdlib/assert/is-number' ).isPrimitive;\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar format = require( '@stdlib/string/format' );\nvar isnan = require( '@stdlib/math/base/assert/is-nan' );\nvar dtype = require( '@stdlib/complex/dtype' );\nvar adtype = require( './../../dtype' );\nvar reinterpret64 = require( '@stdlib/strided/base/reinterpret-complex64' );\nvar reinterpret128 = require( '@stdlib/strided/base/reinterpret-complex128' );\nvar arraylike2object = require( './../../base/arraylike2object' );\nvar acccmplx = require( './accessors_complex.js' );\nvar accreal = require( './accessors_real.js' );\nvar typedcmplx = require( './typed_complex.js' );\nvar typedreal = require( './typed_real.js' );\nvar validate = require( './validate.js' );\nvar defaults = require( './defaults.json' );\n\n\n// MAIN //\n\n/**\n* Generates a linearly spaced sequence over a specified interval and assigns the results to a provided output array.\n*\n* @param {(number|ComplexLike)} start - start of interval\n* @param {(number|ComplexLike)} stop - end of interval\n* @param {Collection} out - output array\n* @param {Options} [options] - options\n* @param {boolean} [options.endpoint=true] - boolean indicating whether to include the `stop` value in the output array\n* @throws {TypeError} first argument must be either a real or complex number\n* @throws {TypeError} second argument must be either a real or complex number\n* @throws {TypeError} third argument must be an array-like object\n* @throws {TypeError} last argument must be an object\n* @throws {TypeError} must provide valid options\n* @throws {TypeError} the output array data type must be a complex number data type or \"generic\" when either `start` or `stop` is a complex number\n* @returns {Collection} output array\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var out = new Float64Array( 6 );\n* var arr = linspace( 0, 100, out );\n* // returns <Float64Array>[ 0.0, 20.0, 40.0, 60.0, 80.0, 100.0 ]\n*/\nfunction linspace( start, stop, out ) {\n\tvar opts;\n\tvar err;\n\tvar dt1;\n\tvar dt2;\n\tvar flg;\n\tvar odt;\n\tvar o;\n\n\tif ( typeof start === 'object' ) {\n\t\tdt1 = dtype( start );\n\t\tif ( dt1 === null ) {\n\t\t\tif ( !isComplexLike( start ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. First argument must be either a real or complex number. Value: `%s`.', start ) );\n\t\t\t}\n\t\t\tdt1 = 'complex128';\n\t\t}\n\t\tflg = true;\n\t} else if ( !isNumber( start ) || isnan( start ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be either a real or complex number. Value: `%s`.', start ) );\n\t} else {\n\t\tdt1 = 'float64';\n\t}\n\tif ( typeof stop === 'object' ) {\n\t\tdt2 = dtype( stop );\n\t\tif ( dt2 === null ) {\n\t\t\tif ( !isComplexLike( stop ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be either a real or complex number. Value: `%s`.', stop ) );\n\t\t\t}\n\t\t\tdt2 = 'complex128';\n\t\t}\n\t\tflg = true;\n\t} else if ( !isNumber( stop ) || isnan( stop ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be either a real or complex number. Value: `%s`.', stop ) );\n\t} else {\n\t\tdt2 = 'float64';\n\t}\n\tif ( !isCollection( out ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Third argument must be an array-like object. Value: `%s`.', out ) );\n\t}\n\topts = {\n\t\t'endpoint': defaults.endpoint\n\t};\n\tif ( arguments.length > 3 ) {\n\t\terr = validate( opts, arguments[ 3 ] );\n\t\tif ( err ) {\n\t\t\tthrow err;\n\t\t}\n\t}\n\todt = adtype( out );\n\tif ( odt === null ) {\n\t\todt = 'generic';\n\t}\n\tif ( odt === 'complex64' ) {\n\t\ttypedcmplx( reinterpret64( out, 0 ), dt1, start, dt2, stop, out.length, opts.endpoint ); // eslint-disable-line max-len\n\t\treturn out;\n\t}\n\tif ( odt === 'complex128' ) {\n\t\ttypedcmplx( reinterpret128( out, 0 ), dt1, start, dt2, stop, out.length, opts.endpoint ); // eslint-disable-line max-len\n\t\treturn out;\n\t}\n\tif ( flg ) {\n\t\tif ( odt === 'generic' ) {\n\t\t\to = arraylike2object( out );\n\t\t\tacccmplx( o, dt1, start, dt2, stop, out.length, opts.endpoint );\n\t\t\treturn out;\n\t\t}\n\t\tthrow new TypeError( 'invalid arguments. If either of the first two arguments are complex numbers, the output array must be a complex number array or a \"generic\" array-like object.' );\n\t}\n\to = arraylike2object( out );\n\tif ( o.accessorProtocol ) {\n\t\taccreal( o, start, stop, out.length, opts.endpoint );\n\t\treturn out;\n\t}\n\ttypedreal( out, start, stop, out.length, opts.endpoint );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = linspace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Generate a linearly spaced array.\n*\n* @module @stdlib/array/linspace\n*\n* @example\n* var linspace = require( '@stdlib/array/linspace' );\n*\n* var arr = linspace( 0, 100, 6 );\n* // returns <Float64Array>[ 0.0, 20.0, 40.0, 60.0, 80.0, 100.0 ]\n*\n* @example\n* var linspace = require( '@stdlib/array/linspace' );\n*\n* var arr = linspace( 0, 100, 5, {\n*     'endpoint': false\n* });\n* // returns <Float64Array>[ 0.0, 20.0, 40.0, 60.0, 80.0 ]\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var linspace = require( '@stdlib/array/linspace' );\n*\n* var arr = new Float64Array( 6 );\n* var out = linspace.assign( 0, 100, out );\n* // returns <Float64Array>[ 0.0, 20.0, 40.0, 60.0, 80.0, 100.0 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var linspace = require( '@stdlib/array/linspace' );\n*\n* var arr = new Float64Array( 5 );\n* var out = linspace.assign( 0, 100, out, {\n*     'endpoint': false\n* });\n* // returns <Float64Array>[ 0.0, 20.0, 40.0, 60.0, 80.0 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNumber = require( '@stdlib/assert/is-number' ).isPrimitive;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar format = require( '@stdlib/string/format' );\nvar isnan = require( '@stdlib/math/base/assert/is-nan' );\nvar gen = require( './../../base/logspace' );\n\n\n// MAIN //\n\n/**\n* Generates a logarithmically spaced numeric array.\n*\n* @param {number} a - exponent of start value\n* @param {number} b - exponent of end value\n* @param {NonNegativeInteger} [len=10] - length of output array\n* @throws {TypeError} first argument must be numeric\n* @throws {TypeError} second argument must be numeric\n* @throws {TypeError} third argument must be a nonnegative integer\n* @returns {Array} logarithmically spaced numeric array\n*\n* @example\n* var arr = logspace( 0, 2, 6 );\n* // returns [ 1, ~2.5, ~6.31, ~15.85, ~39.81, 100 ]\n*/\nfunction logspace( a, b, len ) {\n\tif ( !isNumber( a ) || isnan( a ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Exponent of start value must be numeric. Value: `%s`.', a ) );\n\t}\n\tif ( !isNumber( b ) || isnan( b ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Exponent of stop value must be numeric. Value: `%s`.', b ) );\n\t}\n\tif ( arguments.length < 3 ) {\n\t\tlen = 10;\n\t} else if ( !isNonNegativeInteger( len ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Length must be a nonnegative integer. Value: `%s`.', len ) );\n\t}\n\treturn gen( a, b, len );\n}\n\n\n// EXPORTS //\n\nmodule.exports = logspace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Generate a logarithmically spaced numeric array.\n*\n* @module @stdlib/array/logspace\n*\n* @example\n* var logspace = require( '@stdlib/array/logspace' );\n*\n* var arr = logspace( 0, 2, 6 );\n* // returns [ 1, ~2.5, ~6.31, ~15.85, ~39.81, 100 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isInteger = require( '@stdlib/math/base/assert/is-integer' );\nvar isNegativeZero = require( '@stdlib/math/base/assert/is-negative-zero' );\nvar isComplexLike = require( '@stdlib/assert/is-complex-like' );\nvar PINF = require( '@stdlib/constants/float64/pinf' );\nvar NINF = require( '@stdlib/constants/float64/ninf' );\nvar FLOAT32_SMALLEST_SUBNORMAL = require( '@stdlib/constants/float32/smallest-subnormal' ); // eslint-disable-line id-length\nvar FLOAT32_MAX_SAFE_INTEGER = require( '@stdlib/constants/float32/max-safe-integer' );\nvar FLOAT32_MIN_SAFE_INTEGER = require( '@stdlib/constants/float32/min-safe-integer' );\nvar INT8_MIN = require( '@stdlib/constants/int8/min' );\nvar INT16_MIN = require( '@stdlib/constants/int16/min' );\nvar INT32_MIN = require( '@stdlib/constants/int32/min' );\nvar UINT8_MAX = require( '@stdlib/constants/uint8/max' );\nvar UINT16_MAX = require( '@stdlib/constants/uint16/max' );\nvar UINT32_MAX = require( '@stdlib/constants/uint32/max' );\n\n\n// FUNCTIONS //\n\n/**\n* Returns the minimum floating-point array data type of the closest \"kind\" necessary for storing a provided scalar.\n*\n* @private\n* @param {number} value - real value\n* @returns {string} array data type\n*/\nfunction minFloatDataType( value ) {\n\tif ( value !== value || value === PINF || value === NINF ) {\n\t\treturn 'float32';\n\t}\n\tif ( isInteger( value ) ) {\n\t\tif ( value >= FLOAT32_MIN_SAFE_INTEGER && value <= FLOAT32_MAX_SAFE_INTEGER ) { // eslint-disable-line max-len\n\t\t\treturn 'float32';\n\t\t}\n\t\treturn 'float64';\n\t}\n\t// Assume that if we are provided a tiny value, we don't want to underflow to zero by storing as `float32`...\n\tif (\n\t\tvalue > -FLOAT32_SMALLEST_SUBNORMAL &&\n\t\tvalue < FLOAT32_SMALLEST_SUBNORMAL\n\t) {\n\t\treturn 'float64';\n\t}\n\t// Any number which reaches this point is less than the maximum single-precision floating-point number, as floating-point format supports a limited number of decimals (e.g., (1.0+EPS)*10**15 => 1000000000000000.2, which is less than ~3.4e38)...\n\treturn 'float32';\n}\n\n\n// MAIN //\n\n/**\n* Returns the minimum array data type of the closest \"kind\" necessary for storing a provided scalar value.\n*\n* @param {*} value - scalar value\n* @returns {string} array data type\n*\n* @example\n* var dt = minDataType( 3.141592653589793 );\n* // returns 'float32'\n*\n* @example\n* var dt = minDataType( 3 );\n* // returns 'uint8'\n*/\nfunction minDataType( value ) {\n\tif ( typeof value !== 'number' ) {\n\t\tif ( isComplexLike( value ) ) {\n\t\t\tif ( minFloatDataType( value.re ) === 'float64' || minFloatDataType( value.im ) === 'float64' ) {\n\t\t\t\treturn 'complex128';\n\t\t\t}\n\t\t\treturn 'complex64';\n\t\t}\n\t\treturn 'generic';\n\t}\n\tif ( value !== value || value === PINF || value === NINF ) {\n\t\treturn 'float32';\n\t}\n\tif ( isInteger( value ) ) {\n\t\tif ( value === 0 && isNegativeZero( value ) ) {\n\t\t\treturn 'float32';\n\t\t}\n\t\tif ( value < 0 ) {\n\t\t\tif ( value >= INT8_MIN ) {\n\t\t\t\treturn 'int8';\n\t\t\t}\n\t\t\tif ( value >= INT16_MIN ) {\n\t\t\t\treturn 'int16';\n\t\t\t}\n\t\t\tif ( value >= INT32_MIN ) {\n\t\t\t\treturn 'int32';\n\t\t\t}\n\t\t\treturn 'float64';\n\t\t}\n\t\tif ( value <= UINT8_MAX ) {\n\t\t\treturn 'uint8';\n\t\t}\n\t\tif ( value <= UINT16_MAX ) {\n\t\t\treturn 'uint16';\n\t\t}\n\t\tif ( value <= UINT32_MAX ) {\n\t\t\treturn 'uint32';\n\t\t}\n\t\treturn 'float64';\n\t}\n\t// Assume that if we are provided a tiny value, we don't want to underflow to zero by storing as `float32`...\n\tif (\n\t\tvalue > -FLOAT32_SMALLEST_SUBNORMAL &&\n\t\tvalue < FLOAT32_SMALLEST_SUBNORMAL\n\t) {\n\t\treturn 'float64';\n\t}\n\t// Any number which reaches this point is less than the maximum single-precision floating-point number, as floating-point format supports a limited number of decimals (e.g., (1.0+EPS)*10**15 => 1000000000000000.2, which is less than ~3.4e38)...\n\treturn 'float32';\n}\n\n\n// EXPORTS //\n\nmodule.exports = minDataType;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Determine the minimum array data type of the closest \"kind\" necessary for storing a provided scalar value.\n*\n* @module @stdlib/array/min-dtype\n*\n* @example\n* var minDataType = require( '@stdlib/array/min-dtype' );\n*\n* var dt = minDataType( 3.141592653589793 );\n* // returns 'float32'\n*\n* dt = minDataType( 3 );\n* // returns 'uint8'\n*/\n\n// MODULES //\n\nvar minDataType = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = minDataType;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Complex128 = require( '@stdlib/complex/float64' );\nvar Complex64 = require( '@stdlib/complex/float32' );\nvar full = require( './../../full' );\nvar format = require( '@stdlib/string/format' );\n\n\n// VARIABLES //\n\nvar Z128 = new Complex128( NaN, NaN );\nvar Z64 = new Complex64( NaN, NaN );\nvar DTYPES = [ 'float64', 'float32', 'complex128', 'complex64', 'generic' ];\n\n\n// MAIN //\n\n/**\n* Creates an array filled with NaNs and having a specified length.\n*\n* @param {NonNegativeInteger} length - array length\n* @param {string} [dtype=\"float64\"] - data type\n* @throws {TypeError} first argument must be a nonnegative integer\n* @throws {TypeError} second argument must be a supported data type\n* @returns {(TypedArray|Array|ComplexArray)} array or typed array\n*\n* @example\n* var arr = nans( 2 );\n* // returns <Float64Array>[ NaN, NaN ]\n*\n* @example\n* var arr = nans( 2, 'float32' );\n* // returns <Float32Array>[ NaN, NaN ]\n*/\nfunction nans( length ) {\n\tvar dtype;\n\tvar value;\n\n\tif ( arguments.length > 1 ) {\n\t\tdtype = arguments[ 1 ];\n\t\tif ( DTYPES.indexOf( dtype ) === -1 ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be one of the following: \"%s\". Value: `%s`.', DTYPES.join( '\", \"' ), dtype ) );\n\t\t}\n\t} else {\n\t\tdtype = 'float64';\n\t}\n\tif ( dtype === 'complex128' ) {\n\t\tvalue = Z128;\n\t} else if ( dtype === 'complex64' ) {\n\t\tvalue = Z64;\n\t} else {\n\t\tvalue = NaN;\n\t}\n\treturn full( length, value, dtype );\n}\n\n\n// EXPORTS //\n\nmodule.exports = nans;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an array filled with NaNs and having a specified length.\n*\n* @module @stdlib/array/nans\n*\n* @example\n* var nans = require( '@stdlib/array/nans' );\n*\n* var arr = nans( 2 );\n* // returns <Float64Array>[ NaN, NaN ]\n*\n* @example\n* var nans = require( '@stdlib/array/nans' );\n*\n* var arr = nans( 2, 'float32' );\n* // returns <Float32Array>[ NaN, NaN ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar dtype = require( './../../dtype' );\nvar full = require( './../../full' );\nvar Complex128 = require( '@stdlib/complex/float64' );\nvar Complex64 = require( '@stdlib/complex/float32' );\nvar format = require( '@stdlib/string/format' );\n\n\n// VARIABLES //\n\nvar Z128 = new Complex128( NaN, NaN );\nvar Z64 = new Complex64( NaN, NaN );\nvar DTYPES = [ 'float64', 'float32', 'complex128', 'complex64', 'generic' ];\n\n\n// MAIN //\n\n/**\n* Creates an array filled with NaNs and having the same length and data type as a provided input array.\n*\n* @param {(Array|TypedArray|ComplexArray)} x - input array\n* @param {string} [dtype] - data type\n* @throws {TypeError} first argument must be an array or typed array\n* @throws {TypeError} second argument must be a supported data type\n* @returns {(TypedArray|Array|ComplexArray)} array or typed array\n*\n* @example\n* var arr = nansLike( [ 0.0, 0.0 ] );\n* // returns [ NaN, NaN ]\n*\n* @example\n* var arr = nansLike( [ 0.0, 0.0 ], 'float32' );\n* // returns <Float32Array>[ NaN, NaN ]\n*/\nfunction nansLike( x ) {\n\tvar dt;\n\tvar v;\n\n\tdt = dtype( x ); // delegate input argument validation to dtype resolution\n\tif ( dt === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be either an array, typed array, or complex typed array. Value: `%s`.', x ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tdt = arguments[ 1 ];\n\t\tif ( DTYPES.indexOf( dt ) === -1 ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be one of the following: \"%s\". Value: `%s`.', DTYPES.join( '\", \"' ), dt ) );\n\t\t}\n\t} else if ( DTYPES.indexOf( dt ) === -1 ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be one of the following data types: \"%s\". Value: `%s`.', DTYPES.join( '\", \"' ), dt ) );\n\t}\n\tif ( dt === 'complex128' ) {\n\t\tv = Z128;\n\t} else if ( dt === 'complex64' ) {\n\t\tv = Z64;\n\t} else {\n\t\tv = NaN;\n\t}\n\treturn full( x.length, v, dt );\n}\n\n\n// EXPORTS //\n\nmodule.exports = nansLike;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an array filled with NaNs and having the same length and data type as a provided input array.\n*\n* @module @stdlib/array/nans-like\n*\n* @example\n* var nansLike = require( '@stdlib/array/nans-like' );\n*\n* var arr = nansLike( [ 0.0, 0.0 ] );\n* // returns [ NaN, NaN ]\n*\n* @example\n* var nansLike = require( '@stdlib/array/nans-like' );\n*\n* var arr = nansLike( [ 0.0, 0.0 ], 'float32' );\n* // returns <Float32Array>[ NaN, NaN ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "{\n\t\"float64\": -1,\n\t\"float32\": \"float64\",\n\t\"int32\": -1,\n\t\"int16\": \"int32\",\n\t\"int8\": \"int16\",\n\t\"uint32\": -1,\n\t\"uint16\": \"uint32\",\n\t\"uint8\": \"uint16\",\n\t\"uint8c\": \"uint16\",\n\t\"generic\": -1,\n  \"complex64\": \"complex128\",\n  \"complex128\": -1\n}\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar objectKeys = require( '@stdlib/utils/keys' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar NEXT_DTYPES = require( './next_dtypes.json' );\n\n\n// FUNCTIONS //\n\n/**\n* Generates a table.\n*\n* @private\n* @returns {Object} table\n*/\nfunction generateTable() {\n\tvar dtypes;\n\tvar ntypes;\n\tvar out;\n\tvar i;\n\n\tout = {};\n\tdtypes = objectKeys( NEXT_DTYPES );\n\tntypes = dtypes.length;\n\tfor ( i = 0; i < ntypes; i++ ) {\n\t\tout[ dtypes[i] ] = NEXT_DTYPES[ dtypes[i] ];\n\t}\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Returns the next larger array data type of the same kind.\n*\n* @param {string} [dtype] - array data type\n* @returns {(Object|string|integer|null)} next larger data type(s) or null\n*\n* @example\n* var dt = nextDataType( 'float32' );\n* // returns 'float64'\n*/\nfunction nextDataType( dtype ) {\n\tif ( arguments.length === 0 ) {\n\t\treturn generateTable();\n\t}\n\tif ( hasOwnProp( NEXT_DTYPES, dtype ) ) {\n\t\treturn NEXT_DTYPES[ dtype ];\n\t}\n\treturn null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = nextDataType;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the next larger array data type of the same kind.\n*\n* @module @stdlib/array/next-dtype\n*\n* @example\n* var nextDataType = require( '@stdlib/array/next-dtype' );\n*\n* var dt = nextDataType( 'float32' );\n* // returns 'float64'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Complex128 = require( '@stdlib/complex/float64' );\nvar Complex64 = require( '@stdlib/complex/float32' );\nvar full = require( './../../full' );\n\n\n// VARIABLES //\n\nvar Z128 = new Complex128( 1.0, 0.0 );\nvar Z64 = new Complex64( 1.0, 0.0 );\n\n\n// MAIN //\n\n/**\n* Creates an array filled with ones and having a specified length.\n*\n* @param {NonNegativeInteger} length - array length\n* @param {string} [dtype=\"float64\"] - data type\n* @throws {TypeError} first argument must be a nonnegative integer\n* @throws {TypeError} second argument must be a recognized data type\n* @returns {(TypedArray|Array|ComplexArray)} array or typed array\n*\n* @example\n* var arr = ones( 2 );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var arr = ones( 2, 'float32' );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*/\nfunction ones( length ) {\n\tvar dtype;\n\tvar value;\n\n\tif ( arguments.length > 1 ) {\n\t\tdtype = arguments[ 1 ];\n\t} else {\n\t\tdtype = 'float64';\n\t}\n\tif ( dtype === 'complex128' ) {\n\t\tvalue = Z128;\n\t} else if ( dtype === 'complex64' ) {\n\t\tvalue = Z64;\n\t} else {\n\t\tvalue = 1;\n\t}\n\treturn full( length, value, dtype );\n}\n\n\n// EXPORTS //\n\nmodule.exports = ones;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an array filled with ones and having a specified length.\n*\n* @module @stdlib/array/ones\n*\n* @example\n* var ones = require( '@stdlib/array/ones' );\n*\n* var arr = ones( 2 );\n* // returns <Float64Array>[ 1.0, 1.0 ]\n*\n* @example\n* var ones = require( '@stdlib/array/ones' );\n*\n* var arr = ones( 2, 'float32' );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar dtype = require( './../../dtype' );\nvar full = require( './../../full' );\nvar Complex128 = require( '@stdlib/complex/float64' );\nvar Complex64 = require( '@stdlib/complex/float32' );\nvar format = require( '@stdlib/string/format' );\n\n\n// VARIABLES //\n\nvar Z128 = new Complex128( 1.0, 0.0 );\nvar Z64 = new Complex64( 1.0, 0.0 );\n\n\n// MAIN //\n\n/**\n* Creates an array filled with ones and having the same length and data type as a provided input array.\n*\n* @param {(Array|TypedArray|ComplexArray)} x - input array\n* @param {string} [dtype] - data type\n* @throws {TypeError} first argument must be an array or typed array\n* @throws {TypeError} second argument must be a recognized data type\n* @returns {(TypedArray|Array|ComplexArray)} array or typed array\n*\n* @example\n* var arr = onesLike( [ 0.0, 0.0 ] );\n* // returns [ 1.0, 1.0 ]\n*\n* @example\n* var arr = onesLike( [ 0.0, 0.0 ], 'float32' );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*/\nfunction onesLike( x ) {\n\tvar dt;\n\tvar v;\n\n\tdt = dtype( x ); // delegate input argument validation to dtype resolution\n\tif ( dt === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be either an array, typed array, or complex typed array. Value: `%s`.', x ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tdt = arguments[ 1 ];\n\t}\n\tif ( dt === 'complex128' ) {\n\t\tv = Z128;\n\t} else if ( dt === 'complex64' ) {\n\t\tv = Z64;\n\t} else {\n\t\tv = 1.0;\n\t}\n\treturn full( x.length, v, dt );\n}\n\n\n// EXPORTS //\n\nmodule.exports = onesLike;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an array filled with ones and having the same length and data type as a provided input array.\n*\n* @module @stdlib/array/ones-like\n*\n* @example\n* var onesLike = require( '@stdlib/array/ones-like' );\n*\n* var arr = onesLike( [ 0.0, 0.0 ] );\n* // returns [ 1.0, 1.0 ]\n*\n* @example\n* var onesLike = require( '@stdlib/array/ones-like' );\n*\n* var arr = onesLike( [ 0.0, 0.0 ], 'float32' );\n* // returns <Float32Array>[ 1.0, 1.0 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Returns default options.\n*\n* @private\n* @returns {Object} default options\n*\n* @example\n* var o = defaults();\n* // returns {...}\n*/\nfunction defaults() {\n\treturn {\n\t\t'highWaterMark': 9007199254740992\n\t};\n}\n\n\n// EXPORTS //\n\nmodule.exports = defaults;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Validates function options.\n*\n* @private\n* @param {Object} opts - destination object\n* @param {Options} options - function options\n* @param {NonNegativeInteger} [options.highWaterMark] - maximum total memory which can be allocated\n* @returns {(Error|null)} null or an error object\n*\n* @example\n* var opts = {};\n* var options = {\n*     'highWaterMark': 1024\n* };\n* var err = validate( opts, options );\n* if ( err ) {\n*     throw err;\n* }\n*/\nfunction validate( opts, options ) {\n\tif ( !isObject( options ) ) {\n\t\treturn new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t}\n\tif ( hasOwnProp( options, 'highWaterMark' ) ) {\n\t\topts.highWaterMark = options.highWaterMark;\n\t\tif ( !isNonNegativeInteger( opts.highWaterMark ) ) {\n\t\t\treturn new TypeError( format( 'invalid option. `%s` option must be a nonnegative integer. Option: `%s`.', 'highWaterMark', opts.highWaterMark ) );\n\t\t}\n\t}\n\treturn null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = validate;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Initializes a cache for pooled typed array buffers.\n*\n* @private\n* @param {NonNegativeInteger} n - base-2 logarithm of the maximum typed array size\n* @returns {ArrayArray} initialized cache\n*/\nfunction pool( n ) {\n\tvar out;\n\tvar i;\n\n\tout = [];\n\tfor ( i = 0; i < n+1; i++ ) {\n\t\tout.push( [] );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = pool;\n", "{\n\t\"float64\": 8,\n\t\"float32\": 4,\n\t\"int16\": 2,\n\t\"int32\": 4,\n\t\"int8\": 1,\n\t\"uint16\": 2,\n\t\"uint32\": 4,\n\t\"uint8\": 1,\n\t\"uint8c\": 1,\n  \"complex64\": 8,\n  \"complex128\": 16\n}\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isTypedArrayLike = require( '@stdlib/assert/is-typed-array-like' );\nvar isArrayBuffer = require( '@stdlib/assert/is-arraybuffer' );\nvar isComplex64Array = require( '@stdlib/assert/is-complex64array' );\nvar isComplex128Array = require( '@stdlib/assert/is-complex128array' );\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar setReadOnlyAccessor = require( '@stdlib/utils/define-nonenumerable-read-only-accessor' );\nvar ctors = require( './../../typed-ctors' );\nvar reinterpret64 = require( '@stdlib/strided/base/reinterpret-complex64' );\nvar reinterpret128 = require( '@stdlib/strided/base/reinterpret-complex128' );\nvar accessors = require( './../../base/accessors' );\nvar adtype = require( './../../dtype' );\nvar format = require( '@stdlib/string/format' );\nvar ArrayBuffer = require( './../../buffer' );\nvar ceil = require( '@stdlib/math/base/special/ceil' );\nvar floor = require( '@stdlib/math/base/special/floor' );\nvar ceil2 = require( '@stdlib/math/base/special/ceil2' );\nvar log2 = require( '@stdlib/math/base/special/log2' );\nvar min = require( '@stdlib/math/base/special/min' );\nvar defaults = require( './defaults.js' );\nvar validate = require( './validate.js' );\nvar createPool = require( './pool.js' );\nvar BYTES_PER_ELEMENT = require( './bytes_per_element.json' );\n\n\n// VARIABLES //\n\nvar Complex64Array = ctors( 'complex64' );\nvar Complex128Array = ctors( 'complex128' );\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether an array is a single-precision complex floating-point number array.\n*\n* @private\n* @param {Collection} arr - input array\n* @returns {boolean} boolean indicating whether an input array is a single-precision complex floating-point number array\n*/\nfunction isCmplx64Array( arr ) {\n\treturn ( arr instanceof Complex64Array );\n}\n\n/**\n* Tests whether an array is a double-precision complex floating-point number array.\n*\n* @private\n* @param {Collection} arr - input array\n* @returns {boolean} boolean indicating whether an input array is a double-precision complex floating-point number array\n*/\nfunction isCmplx128Array( arr ) {\n\treturn ( arr instanceof Complex128Array );\n}\n\n\n// MAIN //\n\n/**\n* Creates a typed array pool.\n*\n* @param {Options} [options] - pool options\n* @param {NonNegativeInteger} [options.highWaterMark] - maximum total memory which can be allocated\n* @throws {TypeError} options argument must be an object\n* @throws {TypeError} must provide valid options\n* @returns {Function} allocator\n*\n* @example\n* var typedarraypool = factory();\n*\n* // Allocate an array of doubles:\n* var arr = typedarraypool( 5, 'float64' );\n* // returns <Float64Array>[ 0.0, 0.0, 0.0, 0.0, 0.0 ]\n*\n* arr[ 0 ] = 3.14;\n* arr[ 1 ] = 3.14;\n*\n* // ...\n*\n* // Free the allocated memory to be used in a future allocation:\n* typedarraypool.free( arr );\n*/\nfunction factory( options ) {\n\tvar nbytes;\n\tvar pool;\n\tvar opts;\n\tvar err;\n\n\topts = defaults();\n\tif ( arguments.length ) {\n\t\terr = validate( opts, options );\n\t\tif ( err ) {\n\t\t\tthrow err;\n\t\t}\n\t}\n\tpool = createPool( ceil( log2( opts.highWaterMark ) ) );\n\tnbytes = 0;\n\n\tsetReadOnly( malloc, 'malloc', malloc ); // circular reference\n\tsetReadOnly( malloc, 'calloc', calloc );\n\tsetReadOnly( malloc, 'free', free );\n\tsetReadOnly( malloc, 'clear', clear );\n\tsetReadOnly( malloc, 'highWaterMark', opts.highWaterMark );\n\tsetReadOnlyAccessor( malloc, 'nbytes', getBytes );\n\n\treturn malloc;\n\n\t/**\n\t* Returns the number of allocated bytes.\n\t*\n\t* @private\n\t* @returns {NonNegativeInteger} number of allocated bytes\n\t*/\n\tfunction getBytes() {\n\t\treturn nbytes;\n\t}\n\n\t/**\n\t* Returns an array buffer.\n\t*\n\t* @private\n\t* @param {NonNegativeInteger} n - number of bytes\n\t* @returns {(ArrayBuffer|null)} array buffer or null\n\t*/\n\tfunction arraybuffer( n ) {\n\t\tvar buf;\n\t\tvar i;\n\n\t\t// Convert the number of bytes to an index in our pool table:\n\t\ti = log2( n );\n\n\t\t// If we already have an available array buffer, use it...\n\t\tif ( i < pool.length && pool[ i ].length ) {\n\t\t\treturn pool[ i ].pop();\n\t\t}\n\t\t// Before allocating a new array buffer, ensure that we have not exceeded the maximum number of bytes we are allowed to allocate...\n\t\tif ( nbytes+n > opts.highWaterMark ) {\n\t\t\treturn null;\n\t\t}\n\t\tbuf = new ArrayBuffer( n );\n\n\t\t// Update the running counter of allocated bytes:\n\t\tnbytes += n;\n\n\t\treturn buf;\n\t}\n\n\t/**\n\t* Returns a typed array.\n\t*\n\t* @private\n\t* @param {Function} ctor - typed array constructor\n\t* @param {NonNegativeInteger} len - view length\n\t* @param {string} dtype - data type\n\t* @returns {(TypedArray|null)} typed array or null\n\t*/\n\tfunction typedarray( ctor, len, dtype ) {\n\t\tvar buf;\n\t\tif ( len === 0 ) {\n\t\t\treturn new ctor( 0 );\n\t\t}\n\t\tbuf = arraybuffer( ceil2( len )*BYTES_PER_ELEMENT[ dtype ] );\n\t\tif ( buf === null ) {\n\t\t\treturn buf;\n\t\t}\n\t\treturn new ctor( buf, 0, len );\n\t}\n\n\t/**\n\t* Returns an uninitialized typed array.\n\t*\n\t* ## Notes\n\t*\n\t* -   Memory is **not** initialized.\n\t* -   Memory is lazily allocated.\n\t* -   If the function returns `null`, the function was unable to allocate a new typed array from the typed array pool (most likely due to insufficient memory).\n\t*\n\t* @private\n\t* @param {(NonNegativeInteger|Collection)} [arg] - an array length or an array-like object\n\t* @param {string} [dtype=\"float64\"] - data type\n\t* @throws {TypeError} must provide a valid array length or an array-like object\n\t* @throws {TypeError} must provide a recognized data type\n\t* @returns {(TypedArray|null)} typed array or null\n\t*/\n\tfunction malloc() {\n\t\tvar nargs;\n\t\tvar dtype;\n\t\tvar ctor;\n\t\tvar arr;\n\t\tvar out;\n\t\tvar set;\n\t\tvar get;\n\t\tvar len;\n\t\tvar i;\n\n\t\tnargs = arguments.length;\n\t\tif ( nargs && isString( arguments[ nargs-1 ] ) ) {\n\t\t\tnargs -= 1;\n\t\t\tdtype = arguments[ nargs ];\n\t\t} else {\n\t\t\tdtype = 'float64';\n\t\t}\n\t\tctor = ctors( dtype );\n\t\tif ( ctor === null ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a recognized data type. Value: `%s`.', dtype ) );\n\t\t}\n\t\tif ( nargs <= 0 ) {\n\t\t\treturn new ctor( 0 );\n\t\t}\n\t\t// Check if provided a typed array length...\n\t\tif ( isNonNegativeInteger( arguments[ 0 ] ) ) {\n\t\t\treturn typedarray( ctor, arguments[ 0 ], dtype );\n\t\t}\n\t\t// Check if provided an array-like object containing data elements...\n\t\tif ( isCollection( arguments[ 0 ] ) ) {\n\t\t\tarr = arguments[ 0 ];\n\t\t\tlen = arr.length;\n\t\t\tif ( isComplex128Array( arr ) ) {\n\t\t\t\tarr = reinterpret128( arr, 0 );\n\t\t\t} else if ( isComplex64Array( arr ) ) {\n\t\t\t\tarr = reinterpret64( arr, 0 );\n\t\t\t} else if ( /^complex/.test( dtype ) ) {\n\t\t\t\t// Assume we've been provided an array of interleaved real and imaginary components...\n\t\t\t\tlen /= 2;\n\t\t\t}\n\t\t\tout = typedarray( ctor, len, dtype );\n\t\t\tif ( out === null ) {\n\t\t\t\treturn out;\n\t\t\t}\n\t\t\tif ( isCmplx128Array( out ) || isCmplx64Array( out ) ) {\n\t\t\t\tout.set( arr );\n\t\t\t\treturn out;\n\t\t\t}\n\t\t\t// Wrap the arrays in order to account for the possibility that `arr` is a complex number array. As we don't prohibit other \"unsafe\" casts (e.g., providing a `Float64Array` and specifying a `dtype` of `uint8`), we don't prohibit providing a complex number array and specifying a real `dtype`. The results will probably be unexpected/gibberish, but I am not sure we should be overly pedantic in ensuring users don't do ill-advised things...\n\t\t\tget = accessors( adtype( arr ) ).accessors[ 0 ];\n\t\t\tset = accessors( dtype ).accessors[ 1 ];\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tset( out, i, get( arr, i ) );\n\t\t\t}\n\t\t\treturn out;\n\t\t}\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be either an array length or an array-like object. Value: `%s`.', arguments[ 0 ] ) );\n\t}\n\n\t/**\n\t* Returns a zero-initialized typed array.\n\t*\n\t* ## Notes\n\t*\n\t* -   If the function returns `null`, the function was unable to allocate a new typed array from the typed array pool (most likely due to insufficient memory).\n\t*\n\t* @private\n\t* @param {NonNegativeInteger} [len=0] - array length\n\t* @param {string} [dtype=\"float64\"] - data type\n\t* @throws {TypeError} must provide a valid array length\n\t* @throws {TypeError} must provide a recognized data type\n\t* @returns {(TypedArray|null)} typed array or null\n\t*/\n\tfunction calloc() {\n\t\tvar nargs;\n\t\tvar out;\n\t\tvar tmp;\n\t\tvar i;\n\n\t\tnargs = arguments.length;\n\t\tif ( nargs === 0 ) {\n\t\t\tout = malloc();\n\t\t} else if ( nargs === 1 ) {\n\t\t\tout = malloc( arguments[ 0 ] );\n\t\t} else {\n\t\t\tout = malloc( arguments[ 0 ], arguments[ 1 ] );\n\t\t}\n\t\tif ( out !== null ) {\n\t\t\t// Initialize the memory...\n\t\t\tif ( isCmplx128Array( out ) ) {\n\t\t\t\ttmp = reinterpret128( out, 0 );\n\t\t\t} else if ( isCmplx64Array( out ) ) {\n\t\t\t\ttmp = reinterpret64( out, 0 );\n\t\t\t} else {\n\t\t\t\ttmp = out;\n\t\t\t}\n\t\t\tfor ( i = 0; i < tmp.length; i++ ) {\n\t\t\t\ttmp[ i ] = 0.0;\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\n\t/**\n\t* Frees a typed array or typed array buffer.\n\t*\n\t* ## Notes\n\t*\n\t* -   Implicitly, we support providing non-internally allocated arrays and array buffer (e.g., \"freeing\" a typed array allocated in userland); however, the freed array buffer is likely to have excess capacity when compared to other members in its pool.\n\t*\n\t* @private\n\t* @param {(TypedArray|ArrayBuffer)} buf - typed array or array buffer to free\n\t* @throws {TypeError} must provide a typed array or typed array buffer\n\t* @returns {boolean} boolean indicating whether the typed array or array buffer was successfully freed\n\t*/\n\tfunction free( buf ) {\n\t\tvar n;\n\t\tvar p;\n\t\tvar i;\n\t\tif ( isTypedArrayLike( buf ) && buf.buffer ) {\n\t\t\tbuf = buf.buffer;\n\t\t} else if ( !isArrayBuffer( buf ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a typed array or ArrayBuffer. Value: `%s`.', buf ) );\n\t\t}\n\t\tif ( buf.byteLength > 0 ) {\n\t\t\tn = floor( log2( buf.byteLength ) );\n\n\t\t\t// Prohibit \"freeing\" array buffers which would potentially allow users to circumvent high water mark limits:\n\t\t\tn = min( pool.length-1, n );\n\n\t\t\t// Ensure that we do not attempt to free the same buffer more than once...\n\t\t\tp = pool[ n ];\n\t\t\tfor ( i = 0; i < p.length; i++ ) {\n\t\t\t\tif ( p[ i ] === buf ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Add the buffer to our pool of free buffers:\n\t\t\tp.push( buf );\n\t\t}\n\t\treturn true;\n\t}\n\n\t/**\n\t* Clears the typed array pool allowing garbage collection of previously allocated (and currently free) array buffers.\n\t*\n\t* @private\n\t*/\n\tfunction clear() {\n\t\tvar i;\n\t\tfor ( i = 0; i < pool.length; i++ ) {\n\t\t\tpool[ i ].length = 0;\n\t\t}\n\t\tnbytes = 0;\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = factory;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar factory = require( './factory.js' );\n\n\n// MAIN //\n\n/**\n* Returns an uninitialized typed array.\n*\n* ## Notes\n*\n* -   Memory is **not** initialized.\n* -   Memory is lazily allocated.\n* -   If the function returns `null`, the function was unable to allocate a new typed array from the typed array pool (most likely due to insufficient memory).\n*\n* @name typedarraypool\n* @type {Function}\n* @param {(NonNegativeInteger|ArrayLikeObject)} [arg] - an array length or an array-like object\n* @param {string} [dtype=\"float64\"] - data type\n* @throws {TypeError} must provide a valid array length or an array-like object\n* @throws {TypeError} must provide a recognized data type\n* @returns {(TypedArray|null)} typed array or null\n*\n* @example\n* // Allocate an array of doubles:\n* var arr = typedarraypool( 5, 'float64' );\n* // e.g., returns <Float64Array>[ 0.0, 0.0, 0.0, 0.0, 0.0 ]\n*\n* arr[ 0 ] = 3.14;\n* arr[ 1 ] = 3.14;\n*\n* // ...\n*\n* // Free the allocated memory to be used in a future allocation:\n* typedarraypool.free( arr );\n*/\nvar typedarraypool = factory();\n\n\n// EXPORTS //\n\nmodule.exports = typedarraypool;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Typed array pool.\n*\n* @module @stdlib/array/pool\n*\n* @example\n* var typedarraypool = require( '@stdlib/array/pool' );\n*\n* // Allocate an array of doubles:\n* var arr = typedarraypool( 5, 'float64' );\n* // returns <Float64Array>[ 0.0, 0.0, 0.0, 0.0, 0.0 ]\n*\n* arr[ 0 ] = 3.14;\n* arr[ 1 ] = 3.14;\n*\n* // ...\n*\n* // Free the allocated memory to be used in a future allocation:\n* typedarraypool.free( arr );\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar factory = require( './factory.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'factory', factory );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "{\n\t\"float64\": {\n\t\t\"float64\": \"float64\",\n\t\t\"float32\": \"float64\",\n\t\t\"int32\": \"float64\",\n\t\t\"int16\": \"float64\",\n\t\t\"int8\": \"float64\",\n\t\t\"uint32\": \"float64\",\n\t\t\"uint16\": \"float64\",\n\t\t\"uint8\": \"float64\",\n\t\t\"uint8c\": \"float64\",\n    \"complex64\": \"complex128\",\n    \"complex128\": \"complex128\",\n\t\t\"generic\": \"generic\"\n\t},\n\t\"float32\": {\n\t\t\"float64\": \"float64\",\n\t\t\"float32\": \"float32\",\n\t\t\"int32\": \"float64\",\n\t\t\"int16\": \"float32\",\n\t\t\"int8\": \"float32\",\n\t\t\"uint32\": \"float64\",\n\t\t\"uint16\": \"float32\",\n\t\t\"uint8\": \"float32\",\n\t\t\"uint8c\": \"float32\",\n    \"complex64\": \"complex64\",\n    \"complex128\": \"complex128\",\n\t\t\"generic\": \"generic\"\n\t},\n\t\"int32\": {\n\t\t\"float64\": \"float64\",\n\t\t\"float32\": \"float64\",\n\t\t\"int32\": \"int32\",\n\t\t\"int16\": \"int32\",\n\t\t\"int8\": \"int32\",\n\t\t\"uint32\": \"float64\",\n\t\t\"uint16\": \"int32\",\n\t\t\"uint8\": \"int32\",\n\t\t\"uint8c\": \"int32\",\n    \"complex64\": \"complex128\",\n    \"complex128\": \"complex128\",\n\t\t\"generic\": \"generic\"\n\t},\n\t\"int16\": {\n\t\t\"float64\": \"float64\",\n\t\t\"float32\": \"float32\",\n\t\t\"int32\": \"int32\",\n\t\t\"int16\": \"int16\",\n\t\t\"int8\": \"int16\",\n\t\t\"uint32\": \"float64\",\n\t\t\"uint16\": \"int32\",\n\t\t\"uint8\": \"int16\",\n\t\t\"uint8c\": \"int16\",\n    \"complex64\": \"complex64\",\n    \"complex128\": \"complex128\",\n\t\t\"generic\": \"generic\"\n\t},\n\t\"int8\": {\n\t\t\"float64\": \"float64\",\n\t\t\"float32\": \"float32\",\n\t\t\"int32\": \"int32\",\n\t\t\"int16\": \"int16\",\n\t\t\"int8\": \"int8\",\n\t\t\"uint32\": \"float64\",\n\t\t\"uint16\": \"int32\",\n\t\t\"uint8\": \"int16\",\n\t\t\"uint8c\": \"int16\",\n    \"complex64\": \"complex64\",\n    \"complex128\": \"complex128\",\n\t\t\"generic\": \"generic\"\n\t},\n\t\"uint32\": {\n\t\t\"float64\": \"float64\",\n\t\t\"float32\": \"float64\",\n\t\t\"int32\": \"float64\",\n\t\t\"int16\": \"float64\",\n\t\t\"int8\": \"float64\",\n\t\t\"uint32\": \"uint32\",\n\t\t\"uint16\": \"uint32\",\n\t\t\"uint8\": \"uint32\",\n\t\t\"uint8c\": \"uint32\",\n    \"complex64\": \"complex128\",\n    \"complex128\": \"complex128\",\n\t\t\"generic\": \"generic\"\n\t},\n\t\"uint16\": {\n\t\t\"float64\": \"float64\",\n\t\t\"float32\": \"float32\",\n\t\t\"int32\": \"int32\",\n\t\t\"int16\": \"int32\",\n\t\t\"int8\": \"int32\",\n\t\t\"uint32\": \"uint32\",\n\t\t\"uint16\": \"uint16\",\n\t\t\"uint8\": \"uint16\",\n\t\t\"uint8c\": \"uint16\",\n    \"complex64\": \"complex64\",\n    \"complex128\": \"complex128\",\n\t\t\"generic\": \"generic\"\n\t},\n\t\"uint8\": {\n\t\t\"float64\": \"float64\",\n\t\t\"float32\": \"float32\",\n\t\t\"int32\": \"int32\",\n\t\t\"int16\": \"int16\",\n\t\t\"int8\": \"int16\",\n\t\t\"uint32\": \"uint32\",\n\t\t\"uint16\": \"uint16\",\n\t\t\"uint8\": \"uint8\",\n\t\t\"uint8c\": \"uint8\",\n    \"complex64\": \"complex64\",\n    \"complex128\": \"complex128\",\n\t\t\"generic\": \"generic\"\n\t},\n\t\"uint8c\": {\n\t\t\"float64\": \"float64\",\n\t\t\"float32\": \"float32\",\n\t\t\"int32\": \"int32\",\n\t\t\"int16\": \"int16\",\n\t\t\"int8\": \"int16\",\n\t\t\"uint32\": \"uint32\",\n\t\t\"uint16\": \"uint16\",\n\t\t\"uint8\": \"uint8\",\n\t\t\"uint8c\": \"uint8\",\n    \"complex64\": \"complex64\",\n    \"complex128\": \"complex128\",\n\t\t\"generic\": \"generic\"\n\t},\n  \"complex128\": {\n    \"float64\": \"complex128\",\n    \"float32\": \"complex128\",\n    \"int32\": \"complex128\",\n    \"int16\": \"complex128\",\n    \"int8\": \"complex128\",\n    \"uint32\": \"complex128\",\n    \"uint16\": \"complex128\",\n    \"uint8\": \"complex128\",\n    \"uint8c\": \"complex128\",\n    \"complex64\": \"complex128\",\n    \"complex128\": \"complex128\",\n    \"generic\": \"generic\"\n  },\n  \"complex64\": {\n    \"float64\": \"complex128\",\n    \"float32\": \"complex64\",\n    \"int32\": \"complex128\",\n    \"int16\": \"complex64\",\n    \"int8\": \"complex64\",\n    \"uint32\": \"complex128\",\n    \"uint16\": \"complex64\",\n    \"uint8\": \"complex64\",\n    \"uint8c\": \"complex64\",\n    \"complex64\": \"complex64\",\n    \"complex128\": \"complex128\",\n    \"generic\": \"generic\"\n  },\n\t\"generic\": {\n\t\t\"float64\": \"generic\",\n\t\t\"float32\": \"generic\",\n\t\t\"int32\": \"generic\",\n\t\t\"int16\": \"generic\",\n\t\t\"int8\": \"generic\",\n\t\t\"uint32\": \"generic\",\n\t\t\"uint16\": \"generic\",\n\t\t\"uint8\": \"generic\",\n\t\t\"uint8c\": \"generic\",\n    \"complex64\": \"generic\",\n    \"complex128\": \"generic\",\n\t\t\"generic\": \"generic\"\n\t}\n}\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar objectKeys = require( '@stdlib/utils/keys' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar PROMOTION_RULES = require( './promotion_rules.json' );\n\n\n// FUNCTIONS //\n\n/**\n* Generates a full table of promotion rules.\n*\n* @private\n* @returns {Object} table\n*/\nfunction generateFullTable() {\n\tvar dtypes;\n\tvar ntypes;\n\tvar out;\n\tvar tmp;\n\tvar dt1;\n\tvar dt2;\n\tvar o;\n\tvar j;\n\tvar i;\n\n\tout = {};\n\tdtypes = objectKeys( PROMOTION_RULES );\n\tntypes = dtypes.length;\n\tfor ( i = 0; i < ntypes; i++ ) {\n\t\tdt1 = dtypes[ i ];\n\t\to = PROMOTION_RULES[ dt1 ];\n\t\ttmp = {};\n\t\tfor ( j = 0; j < ntypes; j++ ) {\n\t\t\tdt2 = dtypes[ j ];\n\t\t\ttmp[ dt2 ] = o[ dt2 ];\n\t\t}\n\t\tout[ dt1 ] = tmp;\n\t}\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Returns the array data type with the smallest size and closest \"kind\" to which array data types can be safely cast.\n*\n* @param {string} [dtype1] - array data type\n* @param {string} [dtype2] - array data type\n* @returns {(Object|integer|string|null)} promotion rule(s) or null\n*\n* @example\n* var table = promotionRules();\n* // returns {...}\n*\n* @example\n* var dt = promotionRules( 'float32', 'uint32' );\n* // returns 'float64'\n*\n* @example\n* var dt = promotionRules( 'float32', 'foo' );\n* // returns null\n*/\nfunction promotionRules( dtype1, dtype2 ) {\n\tvar o;\n\tif ( arguments.length === 0 ) {\n\t\treturn generateFullTable();\n\t}\n\tif ( hasOwnProp( PROMOTION_RULES, dtype1 ) ) {\n\t\to = PROMOTION_RULES[ dtype1 ];\n\t\tif ( hasOwnProp( o, dtype2 ) ) {\n\t\t\treturn o[ dtype2 ];\n\t\t}\n\t}\n\treturn null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = promotionRules;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the array data type with the smallest size and closest \"kind\" to which array data types can be safely cast.\n*\n* @module @stdlib/array/promotion-rules\n*\n* @example\n* var promotionRules = require( '@stdlib/array/promotion-rules' );\n*\n* var table = promotionRules();\n* // returns {...}\n*\n* var dt = promotionRules( 'float32', 'uint32' );\n* // returns 'float64'\n*\n* dt = promotionRules( 'float32', 'foo' );\n* // returns null\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Float64Array = require( './../../float64' );\nvar Float32Array = require( './../../float32' );\nvar Int16Array = require( './../../int16' );\nvar Int32Array = require( './../../int32' );\nvar Int8Array = require( './../../int8' );\nvar Uint16Array = require( './../../uint16' );\nvar Uint32Array = require( './../../uint32' );\nvar Uint8Array = require( './../../uint8' );\nvar Uint8ClampedArray = require( './../../uint8c' );\nvar Complex64Array = require( './../../complex64' );\nvar Complex128Array = require( './../../complex128' );\n\n\n// MAIN //\n\nvar ctors = {\n\t'Float64Array': Float64Array,\n\t'Float32Array': Float32Array,\n\t'Int32Array': Int32Array,\n\t'Uint32Array': Uint32Array,\n\t'Int16Array': Int16Array,\n\t'Uint16Array': Uint16Array,\n\t'Int8Array': Int8Array,\n\t'Uint8Array': Uint8Array,\n\t'Uint8ClampedArray': Uint8ClampedArray,\n\t'Complex64Array': Complex64Array,\n\t'Complex128Array': Complex128Array\n};\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isArray = require( '@stdlib/assert/is-array' );\nvar ctors = require( './ctors.js' );\n\n\n// MAIN //\n\n/**\n* Revives a JSON-serialized typed array.\n*\n* @param {string} key - key\n* @param {*} value - value\n* @returns {(*|TypedArray)} value or typed array\n*\n* @example\n* var parseJSON = require( '@stdlib/utils/parse-json' );\n*\n* var str = '{\"type\":\"Float64Array\",\"data\":[5,3]}';\n*\n* var arr = parseJSON( str, reviveTypedArray );\n* // returns <Float64Array>[ 5.0, 3.0 ]\n*/\nfunction reviveTypedArray( key, value ) {\n\tvar ctor;\n\tif (\n\t\tvalue &&\n\t\tvalue.type &&\n\t\tisArray( value.data )\n\t) {\n\t\tctor = ctors[ value.type ];\n\t\tif ( ctor ) {\n\t\t\treturn new ctor( value.data );\n\t\t}\n\t}\n\treturn value;\n}\n\n\n// EXPORTS //\n\nmodule.exports = reviveTypedArray;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Revive a JSON-serialized typed array.\n*\n* @module @stdlib/array/reviver\n*\n* @example\n* var parseJSON = require( '@stdlib/utils/parse-json' );\n* var reviveTypedArray = require( '@stdlib/array/reviver' );\n*\n* var str = '{\"type\":\"Float64Array\",\"data\":[5,3]}';\n*\n* var arr = parseJSON( str, reviveTypedArray );\n* // returns <Float64Array>[ 5.0, 3.0 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "{\n\t\"float64\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 0,\n\t\t\"int32\": 0,\n\t\t\"int16\": 0,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 0,\n\t\t\"uint16\": 0,\n\t\t\"uint8\": 0,\n\t\t\"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 0,\n\t\t\"generic\": 1\n\t},\n\t\"float32\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 1,\n\t\t\"int32\": 0,\n\t\t\"int16\": 0,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 0,\n\t\t\"uint16\": 0,\n\t\t\"uint8\": 0,\n\t\t\"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 1,\n\t\t\"generic\": 1\n\t},\n\t\"int32\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 0,\n\t\t\"int32\": 1,\n\t\t\"int16\": 0,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 0,\n\t\t\"uint16\": 0,\n\t\t\"uint8\": 0,\n\t\t\"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 0,\n\t\t\"generic\": 1\n\t},\n\t\"int16\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 1,\n\t\t\"int32\": 1,\n\t\t\"int16\": 1,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 0,\n\t\t\"uint16\": 0,\n\t\t\"uint8\": 0,\n\t\t\"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 1,\n\t\t\"generic\": 1\n\t},\n\t\"int8\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 1,\n\t\t\"int32\": 1,\n\t\t\"int16\": 1,\n\t\t\"int8\": 1,\n\t\t\"uint32\": 0,\n\t\t\"uint16\": 0,\n\t\t\"uint8\": 0,\n\t\t\"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 1,\n\t\t\"generic\": 1\n\t},\n\t\"uint32\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 0,\n\t\t\"int32\": 0,\n\t\t\"int16\": 0,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 1,\n\t\t\"uint16\": 0,\n\t\t\"uint8\": 0,\n\t\t\"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 0,\n\t\t\"generic\": 1\n\t},\n\t\"uint16\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 1,\n\t\t\"int32\": 1,\n\t\t\"int16\": 0,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 1,\n\t\t\"uint16\": 1,\n\t\t\"uint8\": 0,\n\t\t\"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 1,\n\t\t\"generic\": 1\n\t},\n\t\"uint8\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 1,\n\t\t\"int32\": 1,\n\t\t\"int16\": 1,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 1,\n\t\t\"uint16\": 1,\n\t\t\"uint8\": 1,\n\t\t\"uint8c\": 1,\n    \"complex128\": 1,\n    \"complex64\": 1,\n\t\t\"generic\": 1\n\t},\n\t\"uint8c\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 1,\n\t\t\"int32\": 1,\n\t\t\"int16\": 1,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 1,\n\t\t\"uint16\": 1,\n\t\t\"uint8\": 1,\n\t\t\"uint8c\": 1,\n    \"complex128\": 1,\n    \"complex64\": 1,\n\t\t\"generic\": 1\n\t},\n  \"complex128\": {\n    \"float64\": 0,\n    \"float32\": 0,\n    \"int32\": 0,\n    \"int16\": 0,\n    \"int8\": 0,\n    \"uint32\": 0,\n    \"uint16\": 0,\n    \"uint8\": 0,\n    \"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 0,\n    \"generic\": 1\n  },\n  \"complex64\": {\n    \"float64\": 0,\n    \"float32\": 0,\n    \"int32\": 0,\n    \"int16\": 0,\n    \"int8\": 0,\n    \"uint32\": 0,\n    \"uint16\": 0,\n    \"uint8\": 0,\n    \"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 1,\n    \"generic\": 1\n  },\n\t\"generic\": {\n\t\t\"float64\": 0,\n\t\t\"float32\": 0,\n\t\t\"int32\": 0,\n\t\t\"int16\": 0,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 0,\n\t\t\"uint16\": 0,\n\t\t\"uint8\": 0,\n\t\t\"uint8c\": 0,\n    \"complex128\": 0,\n    \"complex64\": 0,\n\t\t\"generic\": 1\n\t}\n}\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar objectKeys = require( '@stdlib/utils/keys' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar SAFE_CASTS = require( './safe_casts.json' );\n\n\n// VARIABLES //\n\nvar TABLE;\n\n\n// FUNCTIONS //\n\n/**\n* Generates a full table of safe casts for each array data type.\n*\n* @private\n* @returns {Object} table\n*/\nfunction generateFullTable() {\n\tvar dtypes;\n\tvar ntypes;\n\tvar out;\n\tvar tmp;\n\tvar dt1;\n\tvar dt2;\n\tvar o;\n\tvar j;\n\tvar i;\n\n\tout = {};\n\tdtypes = objectKeys( SAFE_CASTS );\n\tntypes = dtypes.length;\n\tfor ( i = 0; i < ntypes; i++ ) {\n\t\tdt1 = dtypes[ i ];\n\t\to = SAFE_CASTS[ dt1 ];\n\t\ttmp = {};\n\t\tfor ( j = 0; j < ntypes; j++ ) {\n\t\t\tdt2 = dtypes[ j ];\n\t\t\ttmp[ dt2 ] = o[ dt2 ];\n\t\t}\n\t\tout[ dt1 ] = tmp;\n\t}\n\treturn out;\n}\n\n/**\n* Generates a table of safe casts for each array data type.\n*\n* @private\n* @returns {Object} table\n*/\nfunction generateTable() {\n\tvar dtypes;\n\tvar ntypes;\n\tvar out;\n\tvar tmp;\n\tvar dt1;\n\tvar dt2;\n\tvar o;\n\tvar j;\n\tvar i;\n\n\tout = {};\n\tdtypes = objectKeys( SAFE_CASTS );\n\tntypes = dtypes.length;\n\tfor ( i = 0; i < ntypes; i++ ) {\n\t\tdt1 = dtypes[ i ];\n\t\to = SAFE_CASTS[ dt1 ];\n\t\ttmp = [];\n\t\tfor ( j = 0; j < ntypes; j++ ) {\n\t\t\tdt2 = dtypes[ j ];\n\t\t\tif ( o[ dt2 ] === 1 ) {\n\t\t\t\ttmp.push( dt2 );\n\t\t\t}\n\t\t}\n\t\tout[ dt1 ] = tmp;\n\t}\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Returns a list of array data types to which a provided array data type can be safely cast.\n*\n* @param {string} [dtype] - array data type\n* @returns {(Object|StringArray|null)} list of array data types or null\n*\n* @example\n* var list = safeCasts( 'float32' );\n* // returns [...]\n*/\nfunction safeCasts( dtype ) {\n\tif ( arguments.length === 0 ) {\n\t\treturn generateFullTable();\n\t}\n\tif ( TABLE === void 0 ) {\n\t\t// Lazily generate table...\n\t\tTABLE = generateTable();\n\t}\n\tif ( hasOwnProp( TABLE, dtype ) ) {\n\t\treturn TABLE[ dtype ].slice();\n\t}\n\treturn null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = safeCasts;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a list of array data types to which a provided array data type can be safely cast.\n*\n* @module @stdlib/array/safe-casts\n*\n* @example\n* var safeCasts = require( '@stdlib/array/safe-casts' );\n*\n* var list = safeCasts( 'float32' );\n* // returns [...]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "{\n\t\"float64\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 1,\n\t\t\"int32\": 0,\n\t\t\"int16\": 0,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 0,\n\t\t\"uint16\": 0,\n\t\t\"uint8\": 0,\n\t\t\"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 0,\n\t\t\"generic\": 1\n\t},\n\t\"float32\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 1,\n\t\t\"int32\": 0,\n\t\t\"int16\": 0,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 0,\n\t\t\"uint16\": 0,\n\t\t\"uint8\": 0,\n\t\t\"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 1,\n\t\t\"generic\": 1\n\t},\n\t\"int32\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 0,\n\t\t\"int32\": 1,\n\t\t\"int16\": 1,\n\t\t\"int8\": 1,\n\t\t\"uint32\": 0,\n\t\t\"uint16\": 0,\n\t\t\"uint8\": 0,\n\t\t\"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 0,\n\t\t\"generic\": 1\n\t},\n\t\"int16\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 1,\n\t\t\"int32\": 1,\n\t\t\"int16\": 1,\n\t\t\"int8\": 1,\n\t\t\"uint32\": 0,\n\t\t\"uint16\": 0,\n\t\t\"uint8\": 0,\n\t\t\"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 1,\n\t\t\"generic\": 1\n\t},\n\t\"int8\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 1,\n\t\t\"int32\": 1,\n\t\t\"int16\": 1,\n\t\t\"int8\": 1,\n\t\t\"uint32\": 0,\n\t\t\"uint16\": 0,\n\t\t\"uint8\": 0,\n\t\t\"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 1,\n\t\t\"generic\": 1\n\t},\n\t\"uint32\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 0,\n\t\t\"int32\": 0,\n\t\t\"int16\": 0,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 1,\n\t\t\"uint16\": 1,\n\t\t\"uint8\": 1,\n\t\t\"uint8c\": 1,\n    \"complex128\": 1,\n    \"complex64\": 0,\n\t\t\"generic\": 1\n\t},\n\t\"uint16\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 1,\n\t\t\"int32\": 1,\n\t\t\"int16\": 0,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 1,\n\t\t\"uint16\": 1,\n\t\t\"uint8\": 1,\n\t\t\"uint8c\": 1,\n    \"complex128\": 1,\n    \"complex64\": 1,\n\t\t\"generic\": 1\n\t},\n\t\"uint8\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 1,\n\t\t\"int32\": 1,\n\t\t\"int16\": 1,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 1,\n\t\t\"uint16\": 1,\n\t\t\"uint8\": 1,\n\t\t\"uint8c\": 1,\n    \"complex128\": 1,\n    \"complex64\": 1,\n\t\t\"generic\": 1\n\t},\n\t\"uint8c\": {\n\t\t\"float64\": 1,\n\t\t\"float32\": 1,\n\t\t\"int32\": 1,\n\t\t\"int16\": 1,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 1,\n\t\t\"uint16\": 1,\n\t\t\"uint8\": 1,\n\t\t\"uint8c\": 1,\n    \"complex128\": 1,\n    \"complex64\": 1,\n\t\t\"generic\": 1\n\t},\n  \"complex128\": {\n    \"float64\": 0,\n    \"float32\": 0,\n    \"int32\": 0,\n    \"int16\": 0,\n    \"int8\": 0,\n    \"uint32\": 0,\n    \"uint16\": 0,\n    \"uint8\": 0,\n    \"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 1,\n    \"generic\": 0\n  },\n  \"complex64\": {\n    \"float64\": 0,\n    \"float32\": 0,\n    \"int32\": 0,\n    \"int16\": 0,\n    \"int8\": 0,\n    \"uint32\": 0,\n    \"uint16\": 0,\n    \"uint8\": 0,\n    \"uint8c\": 0,\n    \"complex128\": 1,\n    \"complex64\": 1,\n    \"generic\": 0\n  },\n\t\"generic\": {\n\t\t\"float64\": 0,\n\t\t\"float32\": 0,\n\t\t\"int32\": 0,\n\t\t\"int16\": 0,\n\t\t\"int8\": 0,\n\t\t\"uint32\": 0,\n\t\t\"uint16\": 0,\n\t\t\"uint8\": 0,\n\t\t\"uint8c\": 0,\n    \"complex128\": 0,\n    \"complex64\": 0,\n\t\t\"generic\": 1\n\t}\n}\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar objectKeys = require( '@stdlib/utils/keys' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar SAME_KIND_CASTS = require( './same_kind_casts.json' );\n\n\n// VARIABLES //\n\nvar TABLE;\n\n\n// FUNCTIONS //\n\n/**\n* Generates a full table of same \"kind\" casts for each array data type.\n*\n* @private\n* @returns {Object} table\n*/\nfunction generateFullTable() {\n\tvar dtypes;\n\tvar ntypes;\n\tvar out;\n\tvar tmp;\n\tvar dt1;\n\tvar dt2;\n\tvar o;\n\tvar j;\n\tvar i;\n\n\tout = {};\n\tdtypes = objectKeys( SAME_KIND_CASTS );\n\tntypes = dtypes.length;\n\tfor ( i = 0; i < ntypes; i++ ) {\n\t\tdt1 = dtypes[ i ];\n\t\to = SAME_KIND_CASTS[ dt1 ];\n\t\ttmp = {};\n\t\tfor ( j = 0; j < ntypes; j++ ) {\n\t\t\tdt2 = dtypes[ j ];\n\t\t\ttmp[ dt2 ] = o[ dt2 ];\n\t\t}\n\t\tout[ dt1 ] = tmp;\n\t}\n\treturn out;\n}\n\n/**\n* Generates a table of same \"kind\" casts for each array data type.\n*\n* @private\n* @returns {Object} table\n*/\nfunction generateTable() {\n\tvar dtypes;\n\tvar ntypes;\n\tvar out;\n\tvar tmp;\n\tvar dt1;\n\tvar dt2;\n\tvar o;\n\tvar j;\n\tvar i;\n\n\tout = {};\n\tdtypes = objectKeys( SAME_KIND_CASTS );\n\tntypes = dtypes.length;\n\tfor ( i = 0; i < ntypes; i++ ) {\n\t\tdt1 = dtypes[ i ];\n\t\to = SAME_KIND_CASTS[ dt1 ];\n\t\ttmp = [];\n\t\tfor ( j = 0; j < ntypes; j++ ) {\n\t\t\tdt2 = dtypes[ j ];\n\t\t\tif ( o[ dt2 ] === 1 ) {\n\t\t\t\ttmp.push( dt2 );\n\t\t\t}\n\t\t}\n\t\tout[ dt1 ] = tmp;\n\t}\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Returns a list of array data types to which a provided array data type can be safely cast or cast within the same \"kind\".\n*\n* @param {string} [dtype] - array data type\n* @returns {(Object|StringArray|null)} list of array data types or null\n*\n* @example\n* var list = sameKindCasts( 'float32' );\n* // returns [...]\n*/\nfunction sameKindCasts( dtype ) {\n\tif ( arguments.length === 0 ) {\n\t\treturn generateFullTable();\n\t}\n\tif ( TABLE === void 0 ) {\n\t\t// Lazily generate table...\n\t\tTABLE = generateTable();\n\t}\n\tif ( hasOwnProp( TABLE, dtype ) ) {\n\t\treturn TABLE[ dtype ].slice();\n\t}\n\treturn null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = sameKindCasts;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a list of array data types to which a provided array data type can be safely cast or cast within the same \"kind\".\n*\n* @module @stdlib/array/same-kind-casts\n*\n* @example\n* var sameKindCasts = require( '@stdlib/array/same-kind-casts' );\n*\n* var list = sameKindCasts( 'float32' );\n* // returns [...]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isArrayLikeObject = require( '@stdlib/assert/is-array-like-object' );\nvar format = require( '@stdlib/string/format' );\n\n\n// FUNCTIONS //\n\n/**\n* Recursively (and eagerly) attempts to resolve nested array dimensions.\n*\n* @private\n* @param {Array} shape - output array\n* @param {ArrayLikeObject} arr - array\n* @returns {Array} shape array\n*/\nfunction recurse( shape, arr ) {\n\tvar v = arr[ 0 ];\n\tif ( isArrayLikeObject( v ) ) {\n\t\tshape.push( v.length );\n\t\trecurse( shape, v );\n\t}\n\treturn shape;\n}\n\n/**\n* Recursively verifies that all nested arrays have consistent dimensions.\n*\n* @private\n* @param {PositiveInteger} ndims - number of dimensions\n* @param {Array} shape - shape array\n* @param {NonNegativeInteger} d - dimension\n* @param {ArrayLikeObject} arr - array element to verify\n* @param {boolean} flg - boolean indicating whether to continue recursing\n* @returns {NonNegativeInteger} number of consistent dimensions\n*/\nfunction check( ndims, shape, d, arr, flg ) {\n\tvar len;\n\tvar v;\n\tvar i;\n\n\t// Get the size of the current dimension:\n\tlen = shape[ d ];\n\n\t// Ensure that each array element is an array of the same size:\n\tfor ( i = 0; i < arr.length; i++ ) {\n\t\tv = arr[ i ];\n\n\t\t// If the array element is not an array or is not the same size, we have found an inconsistent dimension:\n\t\tif ( !isArrayLikeObject( v ) || v.length !== len ) {\n\t\t\t// `d` is one more than the index of the last consistent dimension and thus equal to the number of consistent dimensions:\n\t\t\treturn d;\n\t\t}\n\t\t// Recursively examine nested elements:\n\t\tif ( flg ) {\n\t\t\tv = check( ndims, shape, d+1, v, d+1 < ndims-1 );\n\t\t\tif ( v < ndims ) {\n\t\t\t\t// Propagate the number of consistent dimensions up the recursion chain...\n\t\t\t\treturn v;\n\t\t\t}\n\t\t}\n\t}\n\treturn ndims;\n}\n\n\n// MAIN //\n\n/**\n* Determines (nested) array dimensions.\n*\n* @param {ArrayLikeObject} arr - array\n* @throws {TypeError} must provide an array\n* @returns {Array} array shape\n*\n* @example\n* var arr = [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ];\n*\n* var shape = arrayShape( arr );\n* // returns [ 3, 3 ]\n*\n* @example\n* var arr = [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8 ] ];\n*\n* var shape = arrayShape( arr );\n* // returns [ 3 ]\n*\n* @example\n* var arr = [ [ 1, 2, 3 ], [ 4, 5, 6 ], null ];\n*\n* var shape = arrayShape( arr );\n* // returns [ 3 ]\n*/\nfunction arrayShape( arr ) {\n\tvar shape;\n\tvar ndims;\n\n\tif ( !isArrayLikeObject( arr ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide an array-like object. Value: `%s`.', arr ) );\n\t}\n\t// Initialize the shape/dimensions array:\n\tshape = [ arr.length ];\n\n\t// Eagerly determine array dimensions:\n\trecurse( shape, arr );\n\tndims = shape.length;\n\n\t// Check that all array element dimensions are consistent:\n\tif ( ndims > 1 ) {\n\t\t// If `check()` returns a value less than `ndims`, trim off the inconsistent dimensions:\n\t\tshape.length = check( ndims, shape, 1, arr, ndims > 2 );\n\t}\n\treturn shape;\n}\n\n\n// EXPORTS //\n\nmodule.exports = arrayShape;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Determine (nested) array dimensions.\n*\n* @module @stdlib/array/shape\n*\n* @example\n* var arrayShape = require( '@stdlib/array/shape' );\n*\n* var arr = [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ];\n*\n* var shape = arrayShape( arr );\n* // returns [ 3, 3 ]\n*\n* @example\n* var arrayShape = require( '@stdlib/array/shape' );\n*\n* var arr = [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8 ] ];\n*\n* var shape = arrayShape( arr );\n* // returns [ 3 ]\n*\n* @example\n* var arrayShape = require( '@stdlib/array/shape' );\n*\n* var arr = [ [ 1, 2, 3 ], [ 4, 5, 6 ], null ];\n*\n* var shape = arrayShape( arr );\n* // returns [ 3 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar ctor = ( typeof SharedArrayBuffer === 'function' ) ? SharedArrayBuffer : null; // eslint-disable-line stdlib/require-globals, no-undef\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Constructor returning an object used to represent a generic, fixed-length raw binary data buffer which can be used to create views of shared memory.\n*\n* @param {NonNegativeInteger} size - number of bytes\n* @throws {Error} not implemented\n*/\nfunction polyfill( size ) { // eslint-disable-line no-unused-vars\n\tthrow new Error( 'not supported. The current environment does not support SharedArrayBuffers, and, unfortunately, SharedArrayBuffers cannot be polyfilled. For shared memory applications, upgrade your runtime environment to one which supports SharedArrayBuffers.' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = polyfill;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Constructor returning an object used to represent a generic, fixed-length raw binary data buffer which can be used to create views of shared memory.\n*\n* @module @stdlib/array/shared-buffer\n*\n* @example\n* var ctor = require( '@stdlib/array/shared-buffer' );\n*\n* var buf;\n* try {\n*     buf = new ctor( 10 );\n*     // returns <SharedArrayBuffer>\n* } catch ( err ) {\n*     console.log( 'Environment does not support SharedArrayBuffers.' );\n* }\n*/\n\n// MODULES //\n\nvar hasSharedArrayBufferSupport = require( '@stdlib/assert/has-sharedarraybuffer-support' ); // eslint-disable-line id-length\nvar builtin = require( './main.js' );\nvar polyfill = require( './polyfill.js' );\n\n\n// MAIN //\n\nvar ctor;\nif ( hasSharedArrayBufferSupport() ) {\n\tctor = builtin;\n} else {\n\tctor = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctor;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isObject = require( '@stdlib/assert/is-plain-object' );\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isAccessorArray = require( './../../base/assert/is-accessor-array' );\nvar iteratorSymbol = require( '@stdlib/symbol/iterator' );\nvar accessorGetter = require( './../../base/accessor-getter' );\nvar getter = require( './../../base/getter' );\nvar dtype = require( './../../dtype' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Returns an iterator which repeatedly iterates over each element in an array-like object.\n*\n* @param {Collection} src - input value\n* @param {Options} [options] - function options\n* @param {NonNegativeInteger} [options.iter] - number of iterations\n* @param {integer} [options.dir=1] - iteration direction\n* @param {Function} [mapFcn] - function to invoke for each iterated value\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} first argument must be an array-like object\n* @throws {TypeError} options argument must be an object\n* @throws {TypeError} must provide valid options\n* @throws {TypeError} callback argument must be a function\n* @returns {Iterator} iterator\n*\n* @example\n* var iter = circarray2iterator( [ 1, 2, 3, 4 ] );\n*\n* var v = iter.next().value;\n* // returns 1\n*\n* v = iter.next().value;\n* // returns 2\n*\n* v = iter.next().value;\n* // returns 3\n*\n* // ...\n*/\nfunction circarray2iterator( src ) {\n\tvar thisArg;\n\tvar options;\n\tvar count;\n\tvar opts;\n\tvar iter;\n\tvar FLG;\n\tvar fcn;\n\tvar get;\n\tvar dt;\n\tvar i;\n\tif ( !isCollection( src ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be an array-like object. Value: `%s`.', src ) );\n\t}\n\topts = {\n\t\t'iter': 1e308, // ~infinity\n\t\t'dir': 1       // left to right iteration\n\t};\n\tif ( arguments.length > 1 ) {\n\t\tif ( isObject( arguments[ 1 ] ) ) {\n\t\t\toptions = arguments[ 1 ];\n\t\t\tif ( arguments.length > 2 ) {\n\t\t\t\tfcn = arguments[ 2 ];\n\t\t\t\tif ( !isFunction( fcn ) ) {\n\t\t\t\t\tthrow new TypeError( format( 'invalid argument. Callback argument must be a function. Value: `%s`.', fcn ) );\n\t\t\t\t}\n\t\t\t\tthisArg = arguments[ 3 ];\n\t\t\t}\n\t\t\tif ( hasOwnProp( options, 'iter' ) ) {\n\t\t\t\topts.iter = options.iter;\n\t\t\t\tif ( !isNonNegativeInteger( options.iter ) ) {\n\t\t\t\t\tthrow new TypeError( format( 'invalid option. `%s` option must be a nonnegative integer. Option: `%s`.', 'iter', options.iter ) );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( hasOwnProp( options, 'dir' ) ) {\n\t\t\t\topts.dir = options.dir;\n\t\t\t\tif ( options.dir !== 1 && options.dir !== -1 ) {\n\t\t\t\t\tthrow new TypeError( format( 'invalid option. `%s` option must be either `1` or `-1`. Option: `%s`.', 'dir', options.dir ) );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfcn = arguments[ 1 ];\n\t\t\tif ( !isFunction( fcn ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be either a function or an options object. Value: `%s`.', fcn ) );\n\t\t\t}\n\t\t\tthisArg = arguments[ 2 ];\n\t\t}\n\t}\n\tcount = 0;\n\n\t// Create an iterator protocol-compliant object:\n\titer = {};\n\tif ( fcn ) {\n\t\tif ( opts.dir === 1 ) {\n\t\t\ti = -1;\n\t\t\tsetReadOnly( iter, 'next', next1a );\n\t\t} else {\n\t\t\ti = src.length;\n\t\t\tsetReadOnly( iter, 'next', next1b );\n\t\t}\n\t} else if ( opts.dir === 1 ) {\n\t\ti = -1;\n\t\tsetReadOnly( iter, 'next', next2a );\n\t} else {\n\t\ti = src.length;\n\t\tsetReadOnly( iter, 'next', next2b );\n\t}\n\tsetReadOnly( iter, 'return', end );\n\n\t// If an environment supports `Symbol.iterator`, make the iterator iterable:\n\tif ( iteratorSymbol ) {\n\t\tsetReadOnly( iter, iteratorSymbol, factory );\n\t}\n\t// Resolve an accessor for retrieving array elements (e.g., to accommodate `Complex64Array`, etc):\n\tdt = dtype( src );\n\tif ( isAccessorArray( src ) ) {\n\t\tget = accessorGetter( dt );\n\t} else {\n\t\tget = getter( dt );\n\t}\n\treturn iter;\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next1a() {\n\t\ti = (i+1) % src.length;\n\t\tcount += 1;\n\t\tif ( FLG || count > opts.iter || src.length === 0 ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': fcn.call( thisArg, get( src, i ), i, count, src ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next1b() {\n\t\ti -= 1;\n\t\tif ( i < 0 ) {\n\t\t\ti += src.length;\n\t\t}\n\t\tcount += 1;\n\t\tif ( FLG || count > opts.iter || src.length === 0 ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': fcn.call( thisArg, get( src, i ), i, count, src ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next2a() {\n\t\ti = (i+1) % src.length;\n\t\tcount += 1;\n\t\tif ( FLG || count > opts.iter || src.length === 0 ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': get( src, i ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next2b() {\n\t\ti -= 1;\n\t\tif ( i < 0 ) {\n\t\t\ti += src.length;\n\t\t}\n\t\tcount += 1;\n\t\tif ( FLG || count > opts.iter || src.length === 0 ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': get( src, i ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Finishes an iterator.\n\t*\n\t* @private\n\t* @param {*} [value] - value to return\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction end( value ) {\n\t\tFLG = true;\n\t\tif ( arguments.length ) {\n\t\t\treturn {\n\t\t\t\t'value': value,\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'done': true\n\t\t};\n\t}\n\n\t/**\n\t* Returns a new iterator.\n\t*\n\t* @private\n\t* @returns {Iterator} iterator\n\t*/\n\tfunction factory() {\n\t\tif ( fcn ) {\n\t\t\treturn circarray2iterator( src, opts, fcn, thisArg );\n\t\t}\n\t\treturn circarray2iterator( src, opts );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = circarray2iterator;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an iterator which repeatedly iterates over the elements of an array-like object.\n*\n* @module @stdlib/array/to-circular-iterator\n*\n* @example\n* var circarray2iterator = require( '@stdlib/array/to-circular-iterator' );\n*\n* var iter = circarray2iterator( [ 1, 2, 3, 4 ] );\n*\n* var v = iter.next().value;\n* // returns 1\n*\n* v = iter.next().value;\n* // returns 2\n*\n* v = iter.next().value;\n* // returns 3\n*\n* // ...\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isAccessorArray = require( './../../base/assert/is-accessor-array' );\nvar iteratorSymbol = require( '@stdlib/symbol/iterator' );\nvar accessorGetter = require( './../../base/accessor-getter' );\nvar getter = require( './../../base/getter' );\nvar dtype = require( './../../dtype' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Returns an iterator which iterates over each element in an array-like object.\n*\n* @param {Collection} src - input value\n* @param {Function} [mapFcn] - function to invoke for each iterated value\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} first argument must be an array-like object\n* @throws {TypeError} second argument must be a function\n* @returns {Iterator} iterator\n*\n* @example\n* var iter = array2iterator( [ 1, 2, 3, 4 ] );\n*\n* var v = iter.next().value;\n* // returns 1\n*\n* v = iter.next().value;\n* // returns 2\n*\n* v = iter.next().value;\n* // returns 3\n*\n* // ...\n*/\nfunction array2iterator( src ) {\n\tvar thisArg;\n\tvar iter;\n\tvar FLG;\n\tvar fcn;\n\tvar get;\n\tvar dt;\n\tvar i;\n\tif ( !isCollection( src ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be an array-like object. Value: `%s`.', src ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tfcn = arguments[ 1 ];\n\t\tif ( !isFunction( fcn ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a function. Value: `%s`.', fcn ) );\n\t\t}\n\t\tthisArg = arguments[ 2 ];\n\t}\n\ti = -1;\n\n\t// Create an iterator protocol-compliant object:\n\titer = {};\n\tif ( fcn ) {\n\t\tsetReadOnly( iter, 'next', next1 );\n\t} else {\n\t\tsetReadOnly( iter, 'next', next2 );\n\t}\n\tsetReadOnly( iter, 'return', end );\n\n\t// If an environment supports `Symbol.iterator`, make the iterator iterable:\n\tif ( iteratorSymbol ) {\n\t\tsetReadOnly( iter, iteratorSymbol, factory );\n\t}\n\t// Resolve an accessor for retrieving array elements (e.g., to accommodate `Complex64Array`, etc):\n\tdt = dtype( src );\n\tif ( isAccessorArray( src ) ) {\n\t\tget = accessorGetter( dt );\n\t} else {\n\t\tget = getter( dt );\n\t}\n\treturn iter;\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next1() {\n\t\ti += 1;\n\t\tif ( FLG || i >= src.length ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': fcn.call( thisArg, get( src, i ), i, src ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next2() {\n\t\ti += 1;\n\t\tif ( FLG || i >= src.length ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': get( src, i ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Finishes an iterator.\n\t*\n\t* @private\n\t* @param {*} [value] - value to return\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction end( value ) {\n\t\tFLG = true;\n\t\tif ( arguments.length ) {\n\t\t\treturn {\n\t\t\t\t'value': value,\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'done': true\n\t\t};\n\t}\n\n\t/**\n\t* Returns a new iterator.\n\t*\n\t* @private\n\t* @returns {Iterator} iterator\n\t*/\n\tfunction factory() {\n\t\tif ( fcn ) {\n\t\t\treturn array2iterator( src, fcn, thisArg );\n\t\t}\n\t\treturn array2iterator( src );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = array2iterator;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an iterator from an array-like object.\n*\n* @module @stdlib/array/to-iterator\n*\n* @example\n* var array2iterator = require( '@stdlib/array/to-iterator' );\n*\n* var iter = array2iterator( [ 1, 2, 3, 4 ] );\n*\n* var v = iter.next().value;\n* // returns 1\n*\n* v = iter.next().value;\n* // returns 2\n*\n* v = iter.next().value;\n* // returns 3\n*\n* // ...\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isAccessorArray = require( './../../base/assert/is-accessor-array' );\nvar iteratorSymbol = require( '@stdlib/symbol/iterator' );\nvar accessorGetter = require( './../../base/accessor-getter' );\nvar getter = require( './../../base/getter' );\nvar dtype = require( './../../dtype' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Returns an iterator which iterates from right to left over each element in an array-like object.\n*\n* ## Notes\n*\n* -   For dynamic array resizing, the only behavior made intentionally consistent with iterating from left to right is when elements are pushed onto the beginning (end) of an array. In other words, iterating from left to right combined with `[].push()` is consistent with iterating from right to left combined with `[].unshift()`.\n*\n* @param {Collection} src - input value\n* @param {Function} [mapFcn] - function to invoke for each iterated value\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} first argument must be an array-like object\n* @throws {TypeError} second argument must be a function\n* @returns {Iterator} iterator\n*\n* @example\n* var iter = array2iteratorRight( [ 1, 2, 3, 4 ] );\n*\n* var v = iter.next().value;\n* // returns 4\n*\n* v = iter.next().value;\n* // returns 3\n*\n* v = iter.next().value;\n* // returns 2\n*\n* // ...\n*/\nfunction array2iteratorRight( src ) {\n\tvar thisArg;\n\tvar iter;\n\tvar FLG;\n\tvar fcn;\n\tvar len;\n\tvar get;\n\tvar dt;\n\tvar i;\n\tif ( !isCollection( src ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be an array-like object. Value: `%s`.', src ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tfcn = arguments[ 1 ];\n\t\tif ( !isFunction( fcn ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a function. Value: `%s`.', fcn ) );\n\t\t}\n\t\tthisArg = arguments[ 2 ];\n\t}\n\tlen = src.length;\n\ti = len;\n\n\t// Create an iterator protocol-compliant object:\n\titer = {};\n\tif ( fcn ) {\n\t\tsetReadOnly( iter, 'next', next1 );\n\t} else {\n\t\tsetReadOnly( iter, 'next', next2 );\n\t}\n\tsetReadOnly( iter, 'return', end );\n\n\t// If an environment supports `Symbol.iterator`, make the iterator iterable:\n\tif ( iteratorSymbol ) {\n\t\tsetReadOnly( iter, iteratorSymbol, factory );\n\t}\n\t// Resolve an accessor for retrieving array elements (e.g., to accommodate `Complex64Array`, etc):\n\tdt = dtype( src );\n\tif ( isAccessorArray( src ) ) {\n\t\tget = accessorGetter( dt );\n\t} else {\n\t\tget = getter( dt );\n\t}\n\treturn iter;\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next1() {\n\t\ti += src.length - len - 1; // accounts for a dynamic array\n\t\tlen = src.length;\n\t\tif ( FLG || i < 0 ) {\n\t\t\tFLG = true;\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': fcn.call( thisArg, get( src, i ), i, src ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next2() {\n\t\ti += src.length - len - 1; // accounts for a dynamic array\n\t\tlen = src.length;\n\t\tif ( FLG || i < 0 ) {\n\t\t\tFLG = true;\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': get( src, i ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Finishes an iterator.\n\t*\n\t* @private\n\t* @param {*} [value] - value to return\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction end( value ) {\n\t\tFLG = true;\n\t\tif ( arguments.length ) {\n\t\t\treturn {\n\t\t\t\t'value': value,\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'done': true\n\t\t};\n\t}\n\n\t/**\n\t* Returns a new iterator.\n\t*\n\t* @private\n\t* @returns {Iterator} iterator\n\t*/\n\tfunction factory() {\n\t\tif ( fcn ) {\n\t\t\treturn array2iteratorRight( src, fcn, thisArg );\n\t\t}\n\t\treturn array2iteratorRight( src );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = array2iteratorRight;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an iterator from an array-like object, iterating from right to left.\n*\n* @module @stdlib/array/to-iterator-right\n*\n* @example\n* var array2iteratorRight = require( '@stdlib/array/to-iterator-right' );\n*\n* var iter = array2iteratorRight( [ 1, 2, 3, 4 ] );\n*\n* var v = iter.next().value;\n* // returns 4\n*\n* v = iter.next().value;\n* // returns 3\n*\n* v = iter.next().value;\n* // returns 2\n*\n* // ...\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Int8Array = require( './../../int8' );\nvar Uint8Array = require( './../../uint8' );\nvar Uint8ClampedArray = require( './../../uint8c' );\nvar Int16Array = require( './../../int16' );\nvar Uint16Array = require( './../../uint16' );\nvar Int32Array = require( './../../int32' );\nvar Uint32Array = require( './../../uint32' );\nvar Float32Array = require( './../../float32' );\nvar Float64Array = require( './../../float64' );\nvar Complex64Array = require( './../../complex64' );\nvar Complex128Array = require( './../../complex128' );\n\n\n// MAIN //\n\nvar CTORS = [\n\t[ Float64Array, 'Float64Array' ],\n\t[ Float32Array, 'Float32Array' ],\n\t[ Int32Array, 'Int32Array' ],\n\t[ Uint32Array, 'Uint32Array' ],\n\t[ Int16Array, 'Int16Array' ],\n\t[ Uint16Array, 'Uint16Array' ],\n\t[ Int8Array, 'Int8Array' ],\n\t[ Uint8Array, 'Uint8Array' ],\n\t[ Uint8ClampedArray, 'Uint8ClampedArray' ],\n\t[ Complex64Array, 'Complex64Array' ],\n\t[ Complex128Array, 'Complex128Array' ]\n];\n\n\n// EXPORTS //\n\nmodule.exports = CTORS;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar instanceOf = require( '@stdlib/assert/instance-of' );\nvar ctorName = require( '@stdlib/utils/constructor-name' );\nvar getPrototypeOf = require( '@stdlib/utils/get-prototype-of' );\nvar CTORS = require( './ctors.js' );\n\n\n// MAIN //\n\n/**\n* Returns the typed array type.\n*\n* @private\n* @param {TypedArray} arr - typed array\n* @returns {(string|void)} typed array type\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var arr = new Float64Array( 5 );\n* var str = typeName( arr );\n* // returns 'Float64Array'\n*/\nfunction typeName( arr ) {\n\tvar v;\n\tvar i;\n\n\t// Check for typed array objects from the same realm (same Node.js `vm` or same `Window` object)...\n\tfor ( i = 0; i < CTORS.length; i++ ) {\n\t\tif ( instanceOf( arr, CTORS[ i ][ 0 ] ) ) {\n\t\t\treturn CTORS[ i ][ 1 ];\n\t\t}\n\t}\n\t// Walk the prototype tree until we find an object having a desired native class...\n\twhile ( arr ) {\n\t\tv = ctorName( arr );\n\t\tfor ( i = 0; i < CTORS.length; i++ ) {\n\t\t\tif ( v === CTORS[ i ][ 1 ] ) {\n\t\t\t\treturn CTORS[ i ][ 1 ];\n\t\t\t}\n\t\t}\n\t\tarr = getPrototypeOf( arr );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = typeName;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isTypedArray = require( '@stdlib/assert/is-typed-array' );\nvar isComplexTypedArray = require( '@stdlib/assert/is-complex-typed-array' );\nvar reinterpret64 = require( '@stdlib/strided/base/reinterpret-complex64' );\nvar reinterpret128 = require( '@stdlib/strided/base/reinterpret-complex128' );\nvar format = require( '@stdlib/string/format' );\nvar typeName = require( './type.js' );\n\n\n// MAIN //\n\n/**\n* Returns a JSON representation of a typed array.\n*\n* ## Notes\n*\n* -   We build a JSON object representing a typed array similar to how Node.js `Buffer` objects are represented. See [Buffer][1].\n*\n* [1]: https://nodejs.org/api/buffer.html#buffer_buf_tojson\n*\n* @param {TypedArray} arr - typed array to serialize\n* @throws {TypeError} first argument must be a typed array\n* @returns {Object} JSON representation\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n*\n* var arr = new Float64Array( [ 5.0, 3.0 ] );\n* var json = typedarray2json( arr );\n* // returns { 'type': 'Float64Array', 'data': [ 5.0, 3.0 ] }\n*/\nfunction typedarray2json( arr ) {\n\tvar data;\n\tvar out;\n\tvar i;\n\n\tif ( isTypedArray( arr ) ) {\n\t\tdata = arr;\n\t} else if ( isComplexTypedArray( arr ) ) {\n\t\tif ( arr.BYTES_PER_ELEMENT === 8 ) {\n\t\t\tdata = reinterpret64( arr, 0 );\n\t\t} else { // arr.BYTES_PER_ELEMENT === 16\n\t\t\tdata = reinterpret128( arr, 0 );\n\t\t}\n\t} else {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a typed array. Value: `%s`.', arr ) );\n\t}\n\tout = {\n\t\t'type': typeName( arr ),\n\t\t'data': []\n\t};\n\tfor ( i = 0; i < data.length; i++ ) {\n\t\tout.data.push( data[ i ] );\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = typedarray2json;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a JSON representation of a typed array.\n*\n* @module @stdlib/array/to-json\n*\n* @example\n* var Float64Array = require( '@stdlib/array/float64' );\n* var typedarray2json = require( '@stdlib/array/to-json' );\n*\n* var arr = new Float64Array( [ 5.0, 3.0 ] );\n* var json = typedarray2json( arr );\n* // returns { 'type': 'Float64Array', 'data': [ 5.0, 3.0 ] }\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2019 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isAccessorArray = require( './../../base/assert/is-accessor-array' );\nvar iteratorSymbol = require( '@stdlib/symbol/iterator' );\nvar accessorGetter = require( './../../base/accessor-getter' );\nvar getter = require( './../../base/getter' );\nvar dtype = require( './../../dtype' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Returns an iterator which iterates over each element in a sparse array-like object.\n*\n* @param {Collection} src - input value\n* @param {Function} [mapFcn] - function to invoke for each iterated value\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} first argument must be an array-like object\n* @throws {TypeError} second argument must be a function\n* @returns {Iterator} iterator\n*\n* @example\n* var iter = sparsearray2iterator( [ 1, , 3, 4 ] );\n*\n* var v = iter.next().value;\n* // returns 1\n*\n* v = iter.next().value;\n* // returns 3\n*\n* v = iter.next().value;\n* // returns 4\n*/\nfunction sparsearray2iterator( src ) {\n\tvar thisArg;\n\tvar iter;\n\tvar FLG;\n\tvar fcn;\n\tvar get;\n\tvar dt;\n\tvar i;\n\tif ( !isCollection( src ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be an array-like object. Value: `%s`.', src ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tfcn = arguments[ 1 ];\n\t\tif ( !isFunction( fcn ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a function. Value: `%s`.', fcn ) );\n\t\t}\n\t\tthisArg = arguments[ 2 ];\n\t}\n\ti = -1;\n\n\t// Create an iterator protocol-compliant object:\n\titer = {};\n\tif ( fcn ) {\n\t\tsetReadOnly( iter, 'next', next1 );\n\t} else {\n\t\tsetReadOnly( iter, 'next', next2 );\n\t}\n\tsetReadOnly( iter, 'return', end );\n\n\t// If an environment supports `Symbol.iterator`, make the iterator iterable:\n\tif ( iteratorSymbol ) {\n\t\tsetReadOnly( iter, iteratorSymbol, factory );\n\t}\n\t// Resolve an accessor for retrieving array elements (e.g., to accommodate `Complex64Array`, etc):\n\tdt = dtype( src );\n\tif ( isAccessorArray( src ) ) {\n\t\tget = accessorGetter( dt );\n\t} else {\n\t\tget = getter( dt );\n\t}\n\treturn iter;\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next1() {\n\t\tvar len;\n\t\tif ( FLG ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tlen = src.length;\n\t\ti += 1;\n\t\twhile ( i < len && get( src, i ) === void 0 ) {\n\t\t\ti += 1;\n\t\t}\n\t\tif ( i >= len ) {\n\t\t\tFLG = true;\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': fcn.call( thisArg, get( src, i ), i, src ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next2() {\n\t\tvar len;\n\t\tif ( FLG ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tlen = src.length;\n\t\ti += 1;\n\t\twhile ( i < len && get( src, i ) === void 0 ) {\n\t\t\ti += 1;\n\t\t}\n\t\tif ( i >= len ) {\n\t\t\tFLG = true;\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': get( src, i ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Finishes an iterator.\n\t*\n\t* @private\n\t* @param {*} [value] - value to return\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction end( value ) {\n\t\tFLG = true;\n\t\tif ( arguments.length ) {\n\t\t\treturn {\n\t\t\t\t'value': value,\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'done': true\n\t\t};\n\t}\n\n\t/**\n\t* Returns a new iterator.\n\t*\n\t* @private\n\t* @returns {Iterator} iterator\n\t*/\n\tfunction factory() {\n\t\tif ( fcn ) {\n\t\t\treturn sparsearray2iterator( src, fcn, thisArg );\n\t\t}\n\t\treturn sparsearray2iterator( src );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = sparsearray2iterator;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2019 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an iterator from a sparse array-like value.\n*\n* @module @stdlib/array/to-sparse-iterator\n*\n* @example\n* var sparsearray2iterator = require( '@stdlib/array/to-sparse-iterator' );\n*\n* var iter = sparsearray2iterator( [ 1, , 3, 4 ] );\n*\n* var v = iter.next().value;\n* // returns 1\n*\n* v = iter.next().value;\n* // returns 3\n*\n* v = iter.next().value;\n* // returns 4\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2019 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isAccessorArray = require( './../../base/assert/is-accessor-array' );\nvar iteratorSymbol = require( '@stdlib/symbol/iterator' );\nvar accessorGetter = require( './../../base/accessor-getter' );\nvar getter = require( './../../base/getter' );\nvar dtype = require( './../../dtype' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Returns an iterator which iterates from right to left over each element in a sparse array-like object.\n*\n* ## Notes\n*\n* -   For dynamic array resizing, the only behavior made intentionally consistent with iterating from left to right is when elements are pushed onto the beginning (end) of an array. In other words, iterating from left to right combined with `[].push()` is consistent with iterating from right to left combined with `[].unshift()`.\n*\n* @param {Collection} src - input value\n* @param {Function} [mapFcn] - function to invoke for each iterated value\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} first argument must be an array-like object\n* @throws {TypeError} second argument must be a function\n* @returns {Iterator} iterator\n*\n* @example\n* var iter = sparsearray2iteratorRight( [ 1, , 3, 4 ] );\n*\n* var v = iter.next().value;\n* // returns 4\n*\n* v = iter.next().value;\n* // returns 3\n*\n* v = iter.next().value;\n* // returns 1\n*/\nfunction sparsearray2iteratorRight( src ) {\n\tvar thisArg;\n\tvar iter;\n\tvar FLG;\n\tvar fcn;\n\tvar len;\n\tvar get;\n\tvar dt;\n\tvar i;\n\tif ( !isCollection( src ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be an array-like object. Value: `%s`.', src ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tfcn = arguments[ 1 ];\n\t\tif ( !isFunction( fcn ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a function. Value: `%s`.', fcn ) );\n\t\t}\n\t\tthisArg = arguments[ 2 ];\n\t}\n\tlen = src.length;\n\ti = len;\n\n\t// Create an iterator protocol-compliant object:\n\titer = {};\n\tif ( fcn ) {\n\t\tsetReadOnly( iter, 'next', next1 );\n\t} else {\n\t\tsetReadOnly( iter, 'next', next2 );\n\t}\n\tsetReadOnly( iter, 'return', end );\n\n\t// If an environment supports `Symbol.iterator`, make the iterator iterable:\n\tif ( iteratorSymbol ) {\n\t\tsetReadOnly( iter, iteratorSymbol, factory );\n\t}\n\t// Resolve an accessor for retrieving array elements (e.g., to accommodate `Complex64Array`, etc):\n\tdt = dtype( src );\n\tif ( isAccessorArray( src ) ) {\n\t\tget = accessorGetter( dt );\n\t} else {\n\t\tget = getter( dt );\n\t}\n\treturn iter;\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next1() {\n\t\tif ( FLG ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\ti += src.length - len - 1; // accounts for a dynamic array\n\t\tlen = src.length;\n\t\twhile ( i >= 0 && get( src, i ) === void 0 ) {\n\t\t\ti -= 1;\n\t\t}\n\t\tif ( i < 0 ) {\n\t\t\tFLG = true;\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': fcn.call( thisArg, get( src, i ), i, src ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next2() {\n\t\tif ( FLG ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\ti += src.length - len - 1; // accounts for a dynamic array\n\t\tlen = src.length;\n\t\twhile ( i >= 0 && get( src, i ) === void 0 ) {\n\t\t\ti -= 1;\n\t\t}\n\t\tif ( i < 0 ) {\n\t\t\tFLG = true;\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': get( src, i ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Finishes an iterator.\n\t*\n\t* @private\n\t* @param {*} [value] - value to return\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction end( value ) {\n\t\tFLG = true;\n\t\tif ( arguments.length ) {\n\t\t\treturn {\n\t\t\t\t'value': value,\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'done': true\n\t\t};\n\t}\n\n\t/**\n\t* Returns a new iterator.\n\t*\n\t* @private\n\t* @returns {Iterator} iterator\n\t*/\n\tfunction factory() {\n\t\tif ( fcn ) {\n\t\t\treturn sparsearray2iteratorRight( src, fcn, thisArg );\n\t\t}\n\t\treturn sparsearray2iteratorRight( src );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = sparsearray2iteratorRight;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2019 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an iterator from a sparse array-like value, iterating from right to left.\n*\n* @module @stdlib/array/to-sparse-iterator-right\n*\n* @example\n* var sparsearray2iteratorRight = require( '@stdlib/array/to-sparse-iterator-right' );\n*\n* var iter = sparsearray2iteratorRight( [ 1, , 3, 4 ] );\n*\n* var v = iter.next().value;\n* // returns 4\n*\n* v = iter.next().value;\n* // returns 3\n*\n* v = iter.next().value;\n* // returns 1\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar isAccessorArray = require( './../../base/assert/is-accessor-array' );\nvar iteratorSymbol = require( '@stdlib/symbol/iterator' );\nvar accessorGetter = require( './../../base/accessor-getter' );\nvar getter = require( './../../base/getter' );\nvar dtype = require( './../../dtype' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Returns an iterator which iterates over elements in an array-like object according to specified stride parameters.\n*\n* @param {NonNegativeInteger} N - number of values to iterate\n* @param {Collection} src - input value\n* @param {integer} stride - stride length\n* @param {NonNegativeInteger} offset - starting index\n* @param {Function} [mapFcn] - function to invoke for each iterated value\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} first argument must be a nonnegative integer\n* @throws {TypeError} second argument must be an array-like object\n* @throws {TypeError} third argument must be an integer\n* @throws {TypeError} fourth argument must be a nonnegative integer\n* @throws {TypeError} fifth argument must be a function\n* @returns {Iterator} iterator\n*\n* @example\n* var values = [ 1, 2, 3, 4, 5, 6, 7, 8 ];\n*\n* var N = 4;\n* var stride = -2;\n* var offset = 6;\n*\n* var iter = stridedarray2iterator( N, values, stride, offset );\n*\n* var v = iter.next().value;\n* // returns 7\n*\n* v = iter.next().value;\n* // returns 5\n*\n* v = iter.next().value;\n* // returns 3\n*\n* // ...\n*/\nfunction stridedarray2iterator( N, src, stride, offset ) {\n\tvar thisArg;\n\tvar iter;\n\tvar FLG;\n\tvar fcn;\n\tvar idx;\n\tvar get;\n\tvar dt;\n\tvar i;\n\tif ( !isNonNegativeInteger( N ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a nonnegative integer. Value: `%s`.', N ) );\n\t}\n\tif ( !isCollection( src ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an array-like object. Value: `%s`.', src ) );\n\t}\n\tif ( !isInteger( stride ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Third argument must be an integer. Value: `%s`.', stride ) );\n\t}\n\tif ( !isNonNegativeInteger( offset ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Fourth argument must be a nonnegative integer. Value: `%s`.', offset ) );\n\t}\n\tif ( arguments.length > 4 ) {\n\t\tfcn = arguments[ 4 ];\n\t\tif ( !isFunction( fcn ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Fifth argument must be a function. Value: `%s`.', fcn ) );\n\t\t}\n\t\tthisArg = arguments[ 5 ];\n\t}\n\tidx = offset;\n\ti = -1;\n\n\t// Create an iterator protocol-compliant object:\n\titer = {};\n\tif ( fcn ) {\n\t\tsetReadOnly( iter, 'next', next1 );\n\t} else {\n\t\tsetReadOnly( iter, 'next', next2 );\n\t}\n\tsetReadOnly( iter, 'return', end );\n\n\t// If an environment supports `Symbol.iterator`, make the iterator iterable:\n\tif ( iteratorSymbol ) {\n\t\tsetReadOnly( iter, iteratorSymbol, factory );\n\t}\n\t// Resolve an accessor for retrieving array elements (e.g., to accommodate `Complex64Array`, etc):\n\tdt = dtype( src );\n\tif ( isAccessorArray( src ) ) {\n\t\tget = accessorGetter( dt );\n\t} else {\n\t\tget = getter( dt );\n\t}\n\treturn iter;\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next1() {\n\t\tvar v;\n\t\ti += 1;\n\t\tif ( FLG || i >= N ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tv = fcn.call( thisArg, get( src, idx ), idx, i, src );\n\t\tidx += stride;\n\t\treturn {\n\t\t\t'value': v,\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next2() {\n\t\tvar v;\n\t\ti += 1;\n\t\tif ( FLG || i >= N ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tv = get( src, idx );\n\t\tidx += stride;\n\t\treturn {\n\t\t\t'value': v,\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Finishes an iterator.\n\t*\n\t* @private\n\t* @param {*} [value] - value to return\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction end( value ) {\n\t\tFLG = true;\n\t\tif ( arguments.length ) {\n\t\t\treturn {\n\t\t\t\t'value': value,\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'done': true\n\t\t};\n\t}\n\n\t/**\n\t* Returns a new iterator.\n\t*\n\t* @private\n\t* @returns {Iterator} iterator\n\t*/\n\tfunction factory() {\n\t\tif ( fcn ) {\n\t\t\treturn stridedarray2iterator( N, src, stride, offset, fcn, thisArg ); // eslint-disable-line max-len\n\t\t}\n\t\treturn stridedarray2iterator( N, src, stride, offset );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = stridedarray2iterator;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an iterator from a strided array-like value.\n*\n* @module @stdlib/array/to-strided-iterator\n*\n* @example\n* var stridedarray2iterator = require( '@stdlib/array/to-strided-iterator' );\n*\n* var values = [ 1, 2, 3, 4, 5, 6, 7, 8 ];\n*\n* var N = 4;\n* var stride = -2;\n* var offset = 6;\n*\n* var iter = stridedarray2iterator( N, values, stride, offset );\n*\n* var v = iter.next().value;\n* // returns 7\n*\n* v = iter.next().value;\n* // returns 5\n*\n* v = iter.next().value;\n* // returns 3\n*\n* // ...\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2019 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar isAccessorArray = require( './../../base/assert/is-accessor-array' );\nvar iteratorSymbol = require( '@stdlib/symbol/iterator' );\nvar accessorGetter = require( './../../base/accessor-getter' );\nvar getter = require( './../../base/getter' );\nvar dtype = require( './../../dtype' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Returns an iterator which iterates over each element in an array-like object view.\n*\n* @param {Collection} src - input value\n* @param {integer} [begin=0] - starting index (inclusive)\n* @param {integer} [end=src.length] - ending index (non-inclusive)\n* @param {Function} [mapFcn] - function to invoke for each iterated value\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} first argument must be an array-like object\n* @throws {TypeError} second argument must be either an integer (starting index) or a function\n* @throws {TypeError} third argument must be either an integer (ending index) or a function\n* @throws {TypeError} fourth argument must be a function\n* @returns {Iterator} iterator\n*\n* @example\n* var iter = arrayview2iterator( [ 1, 2, 3, 4 ], 1, 3 );\n*\n* var v = iter.next().value;\n* // returns 2\n*\n* v = iter.next().value;\n* // returns 3\n*\n* var bool = iter.next().done;\n* // returns true\n*/\nfunction arrayview2iterator( src ) {\n\tvar thisArg;\n\tvar begin;\n\tvar nargs;\n\tvar iter;\n\tvar FLG;\n\tvar fcn;\n\tvar end;\n\tvar get;\n\tvar dt;\n\tvar i;\n\tif ( !isCollection( src ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be an array-like object. Value: `%s`.', src ) );\n\t}\n\tnargs = arguments.length;\n\tif ( nargs === 1 ) {\n\t\tbegin = 0;\n\t\tend = src.length;\n\t} else if ( nargs === 2 ) {\n\t\tif ( isFunction( arguments[ 1 ] ) ) {\n\t\t\tbegin = 0;\n\t\t\tfcn = arguments[ 1 ];\n\t\t} else {\n\t\t\tbegin = arguments[ 1 ];\n\t\t}\n\t\tend = src.length;\n\t} else if ( nargs === 3 ) {\n\t\tif ( isFunction( arguments[ 1 ] ) ) {\n\t\t\tbegin = 0;\n\t\t\tend = src.length;\n\t\t\tfcn = arguments[ 1 ];\n\t\t\tthisArg = arguments[ 2 ];\n\t\t} else if ( isFunction( arguments[ 2 ] ) ) {\n\t\t\tbegin = arguments[ 1 ];\n\t\t\tend = src.length;\n\t\t\tfcn = arguments[ 2 ];\n\t\t} else {\n\t\t\tbegin = arguments[ 1 ];\n\t\t\tend = arguments[ 2 ];\n\t\t}\n\t} else { // nargs >= 4\n\t\tbegin = arguments[ 1 ];\n\t\tend = arguments[ 2 ];\n\t\tfcn = arguments[ 3 ];\n\t\tif ( !isFunction( fcn ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Fourth argument must be a function. Value: `%s`.', fcn ) );\n\t\t}\n\t\tthisArg = arguments[ 4 ];\n\t}\n\tif ( !isInteger( begin ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be either an integer (starting index) or a function. Value: `%s`.', begin ) );\n\t}\n\tif ( !isInteger( end ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Third argument must be either an integer (ending index) or a function. Value: `%s`.', end ) );\n\t}\n\tif ( end < 0 ) {\n\t\tend = src.length + end;\n\t\tif ( end < 0 ) {\n\t\t\tend = 0;\n\t\t}\n\t} else if ( end > src.length ) {\n\t\tend = src.length;\n\t}\n\tif ( begin < 0 ) {\n\t\tbegin = src.length + begin;\n\t\tif ( begin < 0 ) {\n\t\t\tbegin = 0;\n\t\t}\n\t}\n\ti = begin - 1;\n\n\t// Create an iterator protocol-compliant object:\n\titer = {};\n\tif ( fcn ) {\n\t\tsetReadOnly( iter, 'next', next1 );\n\t} else {\n\t\tsetReadOnly( iter, 'next', next2 );\n\t}\n\tsetReadOnly( iter, 'return', finish );\n\n\t// If an environment supports `Symbol.iterator`, make the iterator iterable:\n\tif ( iteratorSymbol ) {\n\t\tsetReadOnly( iter, iteratorSymbol, factory );\n\t}\n\t// Resolve an accessor for retrieving array elements (e.g., to accommodate `Complex64Array`, etc):\n\tdt = dtype( src );\n\tif ( isAccessorArray( src ) ) {\n\t\tget = accessorGetter( dt );\n\t} else {\n\t\tget = getter( dt );\n\t}\n\treturn iter;\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next1() {\n\t\ti += 1;\n\t\tif ( FLG || i >= end ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': fcn.call( thisArg, get( src, i ), i, i-begin, src ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next2() {\n\t\ti += 1;\n\t\tif ( FLG || i >= end ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': get( src, i ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Finishes an iterator.\n\t*\n\t* @private\n\t* @param {*} [value] - value to return\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction finish( value ) {\n\t\tFLG = true;\n\t\tif ( arguments.length ) {\n\t\t\treturn {\n\t\t\t\t'value': value,\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'done': true\n\t\t};\n\t}\n\n\t/**\n\t* Returns a new iterator.\n\t*\n\t* @private\n\t* @returns {Iterator} iterator\n\t*/\n\tfunction factory() {\n\t\tif ( fcn ) {\n\t\t\treturn arrayview2iterator( src, begin, end, fcn, thisArg );\n\t\t}\n\t\treturn arrayview2iterator( src, begin, end );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = arrayview2iterator;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2019 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an iterator from an array-like object view.\n*\n* @module @stdlib/array/to-view-iterator\n*\n* @example\n* var arrayview2iterator = require( '@stdlib/array/to-view-iterator' );\n*\n* var iter = arrayview2iterator( [ 1, 2, 3, 4 ], 1, 3 );\n*\n* var v = iter.next().value;\n* // returns 2\n*\n* v = iter.next().value;\n* // returns 3\n*\n* var bool = iter.next().done;\n* // returns true\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2019 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar isAccessorArray = require( './../../base/assert/is-accessor-array' );\nvar iteratorSymbol = require( '@stdlib/symbol/iterator' );\nvar accessorGetter = require( './../../base/accessor-getter' );\nvar getter = require( './../../base/getter' );\nvar dtype = require( './../../dtype' );\nvar format = require( '@stdlib/string/format' );\n\n\n// MAIN //\n\n/**\n* Returns an iterator which iterates from right to left over each element in an array-like object view.\n*\n* @param {Collection} src - input value\n* @param {integer} [begin=0] - starting **view** index (inclusive)\n* @param {integer} [end=src.length] - ending **view** index (non-inclusive)\n* @param {Function} [mapFcn] - function to invoke for each iterated value\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} first argument must be an array-like object\n* @throws {TypeError} second argument must be either an integer (starting index) or a function\n* @throws {TypeError} third argument must be either an integer (ending index) or a function\n* @throws {TypeError} fourth argument must be a function\n* @returns {Iterator} iterator\n*\n* @example\n* var iter = arrayview2iteratorRight( [ 1, 2, 3, 4 ], 1, 3 );\n*\n* var v = iter.next().value;\n* // returns 3\n*\n* v = iter.next().value;\n* // returns 2\n*\n* var bool = iter.next().done;\n* // returns true\n*/\nfunction arrayview2iteratorRight( src ) {\n\tvar thisArg;\n\tvar begin;\n\tvar nargs;\n\tvar iter;\n\tvar FLG;\n\tvar fcn;\n\tvar end;\n\tvar get;\n\tvar dt;\n\tvar i;\n\tif ( !isCollection( src ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be an array-like object. Value: `%s`.', src ) );\n\t}\n\tnargs = arguments.length;\n\tif ( nargs === 1 ) {\n\t\tbegin = 0;\n\t\tend = src.length;\n\t} else if ( nargs === 2 ) {\n\t\tif ( isFunction( arguments[ 1 ] ) ) {\n\t\t\tbegin = 0;\n\t\t\tfcn = arguments[ 1 ];\n\t\t} else {\n\t\t\tbegin = arguments[ 1 ];\n\t\t}\n\t\tend = src.length;\n\t} else if ( nargs === 3 ) {\n\t\tif ( isFunction( arguments[ 1 ] ) ) {\n\t\t\tbegin = 0;\n\t\t\tend = src.length;\n\t\t\tfcn = arguments[ 1 ];\n\t\t\tthisArg = arguments[ 2 ];\n\t\t} else if ( isFunction( arguments[ 2 ] ) ) {\n\t\t\tbegin = arguments[ 1 ];\n\t\t\tend = src.length;\n\t\t\tfcn = arguments[ 2 ];\n\t\t} else {\n\t\t\tbegin = arguments[ 1 ];\n\t\t\tend = arguments[ 2 ];\n\t\t}\n\t} else { // nargs >= 4\n\t\tbegin = arguments[ 1 ];\n\t\tend = arguments[ 2 ];\n\t\tfcn = arguments[ 3 ];\n\t\tif ( !isFunction( fcn ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Fourth argument must be a function. Value: `%s`.', fcn ) );\n\t\t}\n\t\tthisArg = arguments[ 4 ];\n\t}\n\tif ( !isInteger( begin ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be either an integer (starting view index) or a function. Value: `%s`.', begin ) );\n\t}\n\tif ( !isInteger( end ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Third argument must be either an integer (ending view index) or a function. Value: `%s`.', end ) );\n\t}\n\tif ( end < 0 ) {\n\t\tend = src.length + end;\n\t\tif ( end < 0 ) {\n\t\t\tend = 0;\n\t\t}\n\t} else if ( end > src.length ) {\n\t\tend = src.length;\n\t}\n\tif ( begin < 0 ) {\n\t\tbegin = src.length + begin;\n\t\tif ( begin < 0 ) {\n\t\t\tbegin = 0;\n\t\t}\n\t}\n\ti = end;\n\n\t// Create an iterator protocol-compliant object:\n\titer = {};\n\tif ( fcn ) {\n\t\tsetReadOnly( iter, 'next', next1 );\n\t} else {\n\t\tsetReadOnly( iter, 'next', next2 );\n\t}\n\tsetReadOnly( iter, 'return', finish );\n\n\t// If an environment supports `Symbol.iterator`, make the iterator iterable:\n\tif ( iteratorSymbol ) {\n\t\tsetReadOnly( iter, iteratorSymbol, factory );\n\t}\n\t// Resolve an accessor for retrieving array elements (e.g., to accommodate `Complex64Array`, etc):\n\tdt = dtype( src );\n\tif ( isAccessorArray( src ) ) {\n\t\tget = accessorGetter( dt );\n\t} else {\n\t\tget = getter( dt );\n\t}\n\treturn iter;\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next1() {\n\t\ti -= 1;\n\t\tif ( FLG || i < begin ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': fcn.call( thisArg, get( src, i ), i, end-i-1, src ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next2() {\n\t\ti -= 1;\n\t\tif ( FLG || i < begin ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'value': get( src, i ),\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Finishes an iterator.\n\t*\n\t* @private\n\t* @param {*} [value] - value to return\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction finish( value ) {\n\t\tFLG = true;\n\t\tif ( arguments.length ) {\n\t\t\treturn {\n\t\t\t\t'value': value,\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'done': true\n\t\t};\n\t}\n\n\t/**\n\t* Returns a new iterator.\n\t*\n\t* @private\n\t* @returns {Iterator} iterator\n\t*/\n\tfunction factory() {\n\t\tif ( fcn ) {\n\t\t\treturn arrayview2iteratorRight( src, begin, end, fcn, thisArg );\n\t\t}\n\t\treturn arrayview2iteratorRight( src, begin, end );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = arrayview2iteratorRight;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2019 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an iterator from an array-like object view, iterating from right to left.\n*\n* @module @stdlib/array/to-view-iterator-right\n*\n* @example\n* var arrayview2iteratorRight = require( '@stdlib/array/to-view-iterator-right' );\n*\n* var iter = arrayview2iteratorRight( [ 1, 2, 3, 4 ], 1, 3 );\n*\n* var v = iter.next().value;\n* // returns 3\n*\n* v = iter.next().value;\n* // returns 2\n*\n* var bool = iter.next().done;\n* // returns true\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar ctors = require( './../../typed-ctors' );\nvar reinterpret128 = require( '@stdlib/strided/base/reinterpret-complex128' );\nvar reinterpret64 = require( '@stdlib/strided/base/reinterpret-complex64' );\nvar format = require( '@stdlib/string/format' );\n\n\n// VARIABLES //\n\nvar Complex64Array = ctors( 'complex64' );\nvar Complex128Array = ctors( 'complex128' );\n\n\n// MAIN //\n\n/**\n* Creates a typed array.\n*\n* @param {(NonNegativeInteger|ComplexArray|TypedArray|ArrayLikeObject|ArrayBuffer)} [arg] - a length, typed array, array-like object, or buffer\n* @param {NonNegativeInteger} [byteOffset=0] - byte offset\n* @param {NonNegativeInteger} [length] - view length\n* @param {string} [dtype=\"float64\"] - data type\n* @throws {TypeError} must provide a recognized data type\n* @returns {(ComplexArray|TypedArray)} typed array\n*\n* @example\n* var arr = typedarray();\n* // returns <Float64Array>\n*\n* @example\n* var arr = typedarray( 2 );\n* // returns <Float64Array>[ 0.0, 0.0 ]\n*\n* @example\n* var arr = typedarray( 2, 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0 ]\n*\n* @example\n* var arr = typedarray( [ 0.5, 0.5 ] );\n* // returns <Float64Array>[ 0.5, 0.5 ]\n*\n* @example\n* var arr = typedarray( [ 5, -3 ], 'int32' );\n* // returns <Int32Array>[ 5, -3 ]\n*\n* @example\n* var arr1 = typedarray( [ 5, 3 ], 'int32' );\n* var arr2 = typedarray( arr1 );\n* // returns <Float64Array>[ 5.0, 3.0 ]\n*\n* @example\n* var arr1 = typedarray( [ 5, 3 ], 'int32' );\n* var arr2 = typedarray( arr1, 'uint32' );\n* // returns <Uint32Array>[ 5, 3 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = typedarray( buf );\n* // returns <Float64Array>[ 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = typedarray( buf, 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0, 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = typedarray( buf, 8 );\n* // returns <Float64Array>[ 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = typedarray( buf, 8, 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = typedarray( buf, 8, 2 );\n* // returns <Float64Array>[ 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = typedarray( buf, 8, 2, 'int32' );\n* // returns <Int32Array>[ 0, 0 ]\n*/\nfunction typedarray() {\n\tvar nargs;\n\tvar dtype;\n\tvar ctor;\n\tvar arg;\n\n\tnargs = arguments.length;\n\tif ( nargs && isString( arguments[ nargs-1 ] ) ) {\n\t\tnargs -= 1;\n\t\tdtype = arguments[ nargs ];\n\t} else {\n\t\tdtype = 'float64';\n\t}\n\tctor = ctors( dtype );\n\tif ( ctor === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a recognized data type. Value: `%s`.', dtype ) );\n\t}\n\tif ( nargs <= 0 ) {\n\t\treturn new ctor( 0 );\n\t}\n\tif ( nargs === 1 ) {\n\t\targ = arguments[ 0 ];\n\n\t\t// Note: the following checks are not particularly robust, as `instanceof` will fail for cross-realm instances...\n\t\tif ( arg instanceof Complex64Array ) {\n\t\t\targ = reinterpret64( arg, 0 );\n\t\t} else if ( arg instanceof Complex128Array ) {\n\t\t\targ = reinterpret128( arg, 0 );\n\t\t}\n\t\treturn new ctor( arg );\n\t}\n\tif ( nargs === 2 ) {\n\t\treturn new ctor( arguments[0], arguments[1] );\n\t}\n\treturn new ctor( arguments[0], arguments[1], arguments[2] );\n}\n\n\n// EXPORTS //\n\nmodule.exports = typedarray;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a typed array.\n*\n* @module @stdlib/array/typed\n*\n* @example\n* var typedarray = require( '@stdlib/array/typed' );\n*\n* var arr = typedarray();\n* // returns <Float64Array>\n*\n* @example\n* var typedarray = require( '@stdlib/array/typed' );\n*\n* var arr = typedarray( 2 );\n* // returns <Float64Array>[ 0.0, 0.0 ]\n*\n* @example\n* var typedarray = require( '@stdlib/array/typed' );\n*\n* var arr = typedarray( 2, 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0 ]\n*\n* @example\n* var typedarray = require( '@stdlib/array/typed' );\n*\n* var arr = typedarray( [ 0.5, 0.5 ] );\n* // returns <Float64Array>[ 0.5, 0.5 ]\n*\n* @example\n* var typedarray = require( '@stdlib/array/typed' );\n*\n* var arr = typedarray( [ 5, -3 ], 'int32' );\n* // returns <Int32Array>[ 5, -3 ]\n*\n* @example\n* var typedarray = require( '@stdlib/array/typed' );\n*\n* var arr1 = typedarray( [ 5, 3 ], 'int32' );\n* var arr2 = typedarray( arr1 );\n* // returns <Float64Array>[ 5.0, 3.0 ]\n*\n* @example\n* var typedarray = require( '@stdlib/array/typed' );\n*\n* var arr1 = typedarray( [ 5, 3 ], 'int32' );\n* var arr2 = typedarray( arr1, 'uint32' );\n* // returns <Uint32Array>[ 5, 3 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var typedarray = require( '@stdlib/array/typed' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = typedarray( buf );\n* // returns <Float64Array>[ 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var typedarray = require( '@stdlib/array/typed' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = typedarray( buf, 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0, 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var typedarray = require( '@stdlib/array/typed' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = typedarray( buf, 8 );\n* // returns <Float64Array>[ 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var typedarray = require( '@stdlib/array/typed' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = typedarray( buf, 8, 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var typedarray = require( '@stdlib/array/typed' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = typedarray( buf, 8, 2 );\n* // returns <Float64Array>[ 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var typedarray = require( '@stdlib/array/typed' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = typedarray( buf, 8, 2, 'int32' );\n* // returns <Int32Array>[ 0, 0 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Complex128Array = require( './../../complex128' );\nvar Complex64Array = require( './../../complex64' );\n\n\n// MAIN //\n\n// Mapping from data types to constructors...\nvar ctors = {\n\t'complex128': Complex128Array,\n\t'complex64': Complex64Array\n};\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar table = require( './ctors.js' );\n\n\n// MAIN //\n\n/**\n* Returns a complex typed array constructor.\n*\n* @param {string} dtype - data type\n* @returns {(Function|null)} constructor or null\n*\n* @example\n* var ctor = ctors( 'complex128' );\n* // returns <Function>\n*\n* @example\n* var ctor = ctors( 'float64' );\n* // returns null\n*/\nfunction ctors( dtype ) {\n\treturn table[ dtype ] || null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Complex typed array constructors.\n*\n* @module @stdlib/array/typed-complex-ctors\n*\n* @example\n* var ctors = require( '@stdlib/array/typed-complex-ctors' );\n*\n* var ctor = ctors( 'complex128' );\n* // returns <Function>\n*\n* ctor = ctors( 'float64' );\n* // returns null\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( '@stdlib/string/format' );\nvar ctors = require( './../../typed-complex-ctors' );\n\n\n// MAIN //\n\n/**\n* Creates a complex number typed array.\n*\n* @param {(NonNegativeInteger|ComplexArray|ArrayLikeObject|ArrayBuffer)} [arg] - a length, typed array, array-like object, or buffer\n* @param {NonNegativeInteger} [byteOffset=0] - byte offset\n* @param {NonNegativeInteger} [length] - view length\n* @param {string} [dtype=\"complex128\"] - data type\n* @throws {TypeError} must provide a recognized data type\n* @returns {ComplexArray} typed array\n*\n* @example\n* var arr = complexarray();\n* // returns <Complex128Array>\n*\n* @example\n* var arr = complexarray( 2 );\n* // returns <Complex128Array>\n*\n* @example\n* var arr = complexarray( 2, 'complex64' );\n* // returns <Complex64Array>\n*\n* @example\n* var arr = complexarray( [ 0.5, 0.5 ] );\n* // returns <Complex128Array>\n*\n* @example\n* var arr = complexarray( [ 5.0, -3.0 ], 'complex64' );\n* // returns <Complex64Array>\n*\n* @example\n* var arr1 = complexarray( [ 5.0, 3.0 ], 'complex64' );\n* var arr2 = complexarray( arr1 );\n* // returns <Complex128Array>\n*\n* @example\n* var arr1 = complexarray( [ 5.0, 3.0 ], 'complex128' );\n* var arr2 = complexarray( arr1, 'complex64' );\n* // returns <Complex64Array>\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = complexarray( buf );\n* // returns <Complex128Array>\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = complexarray( buf, 'complex64' );\n* // returns <Complex64Array>\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = complexarray( buf, 16 );\n* // returns <Complex128Array>\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = complexarray( buf, 16, 'complex64' );\n* // returns <Complex64Array>\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 64 );\n* var arr = complexarray( buf, 16, 2 );\n* // returns <Complex128Array>\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 64 );\n* var arr = complexarray( buf, 16, 2, 'complex64' );\n* // returns <Complex64Array>\n*/\nfunction complexarray() {\n\tvar nargs;\n\tvar dtype;\n\tvar ctor;\n\n\tnargs = arguments.length;\n\tif ( nargs && isString( arguments[ nargs-1 ] ) ) {\n\t\tnargs -= 1;\n\t\tdtype = arguments[ nargs ];\n\t} else {\n\t\tdtype = 'complex128';\n\t}\n\tctor = ctors( dtype );\n\tif ( ctor === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a recognized data type. Value: `%s`.', dtype ) );\n\t}\n\tif ( nargs <= 0 ) {\n\t\treturn new ctor( 0 );\n\t}\n\tif ( nargs === 1 ) {\n\t\treturn new ctor( arguments[0] );\n\t}\n\tif ( nargs === 2 ) {\n\t\treturn new ctor( arguments[0], arguments[1] );\n\t}\n\treturn new ctor( arguments[0], arguments[1], arguments[2] );\n}\n\n\n// EXPORTS //\n\nmodule.exports = complexarray;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a complex number typed array.\n*\n* @module @stdlib/array/typed-complex\n*\n* @example\n* var complexarray = require( '@stdlib/array/typed-complex' );\n*\n* var arr = complexarray();\n* // returns <Complex128Array>\n*\n* @example\n* var complexarray = require( '@stdlib/array/typed-complex' );\n*\n* var arr = complexarray( 2 );\n* // returns <Complex128Array>\n*\n* @example\n* var complexarray = require( '@stdlib/array/typed-complex' );\n*\n* var arr = complexarray( 2, 'complex64' );\n* // returns <Complex64Array>\n*\n* @example\n* var complexarray = require( '@stdlib/array/typed-complex' );\n*\n* var arr = complexarray( [ 0.5, 0.5 ] );\n* // returns <Complex128Array>\n*\n* @example\n* var complexarray = require( '@stdlib/array/typed-complex' );\n*\n* var arr = complexarray( [ 5.0, -3.0 ], 'complex64' );\n* // returns <Complex64Array>\n*\n* @example\n* var complexarray = require( '@stdlib/array/typed-complex' );\n*\n* var arr1 = complexarray( [ 5.0, 3.0 ], 'complex64' );\n* var arr2 = complexarray( arr1 );\n* // returns <Complex128Array>\n*\n* @example\n* var complexarray = require( '@stdlib/array/typed-complex' );\n*\n* var arr1 = complexarray( [ 5.0, 3.0 ], 'complex128' );\n* var arr2 = complexarray( arr1, 'complex64' );\n* // returns <Complex64Array>\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var complexarray = require( '@stdlib/array/typed-complex' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = complexarray( buf );\n* // returns <Complex128Array>\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var complexarray = require( '@stdlib/array/typed-complex' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = complexarray( buf, 'complex64' );\n* // returns <Complex64Array>\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var complexarray = require( '@stdlib/array/typed-complex' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = complexarray( buf, 16 );\n* // returns <Complex128Array>\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var complexarray = require( '@stdlib/array/typed-complex' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = complexarray( buf, 16, 'complex64' );\n* // returns <Complex64Array>\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var complexarray = require( '@stdlib/array/typed-complex' );\n*\n* var buf = new ArrayBuffer( 64 );\n* var arr = complexarray( buf, 16, 2 );\n* // returns <Complex128Array>\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var complexarray = require( '@stdlib/array/typed-complex' );\n*\n* var buf = new ArrayBuffer( 64 );\n* var arr = complexarray( buf, 16, 2, 'complex64' );\n* // returns <Complex64Array>\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "[\n\t\"complex64\",\n\t\"complex128\"\n]\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar DTYPES = require( './dtypes.json' );\n\n\n// MAIN //\n\n/**\n* Returns a list of complex typed array data types.\n*\n* @returns {StringArray} list of complex typed array data types\n*\n* @example\n* var list = dtypes();\n* // returns [ 'complex64', 'complex128' ]\n*/\nfunction dtypes() {\n\treturn DTYPES.slice();\n}\n\n\n// EXPORTS //\n\nmodule.exports = dtypes;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a list of complex typed array data types.\n*\n* @module @stdlib/array/typed-complex-dtypes\n*\n* @example\n* var dtypes = require( '@stdlib/array/typed-complex-dtypes' );\n*\n* var list = dtypes();\n* // returns [ 'complex64', 'complex128' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "[\n\t\"float32\",\n\t\"float64\",\n\t\"int16\",\n\t\"int32\",\n\t\"int8\",\n\t\"uint16\",\n\t\"uint32\",\n\t\"uint8\",\n\t\"uint8c\",\n  \"complex64\",\n  \"complex128\"\n]\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar DTYPES = require( './dtypes.json' );\n\n\n// MAIN //\n\n/**\n* Returns a list of typed array data types.\n*\n* @returns {StringArray} list of typed array data types\n*\n* @example\n* var list = dtypes();\n* // e.g., returns [ 'float32', 'float64', 'int16', 'int32', 'int8', 'uint16', 'uint32', 'uint8', 'uint8c', 'complex128', 'complex64' ]\n*/\nfunction dtypes() {\n\treturn DTYPES.slice();\n}\n\n\n// EXPORTS //\n\nmodule.exports = dtypes;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a list of typed array data types.\n*\n* @module @stdlib/array/typed-dtypes\n*\n* @example\n* var dtypes = require( '@stdlib/array/typed-dtypes' );\n*\n* var list = dtypes();\n* // e.g., returns [ 'float32', 'float64', 'int16', 'int32', 'int8', 'uint16', 'uint32', 'uint8', 'uint8c', 'complex128', 'complex64' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "[\n\t\"float32\",\n\t\"float64\",\n\t\"complex64\",\n  \"complex128\"\n]\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar DTYPES = require( './dtypes.json' );\n\n\n// MAIN //\n\n/**\n* Returns a list of typed array floating-point data types.\n*\n* @returns {StringArray} list of typed array floating-point data types\n*\n* @example\n* var list = dtypes();\n* // e.g., returns [ 'float32', 'float64', 'complex64', 'complex128' ]\n*/\nfunction dtypes() {\n\treturn DTYPES.slice();\n}\n\n\n// EXPORTS //\n\nmodule.exports = dtypes;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a list of typed array floating-point data types.\n*\n* @module @stdlib/array/typed-float-dtypes\n*\n* @example\n* var dtypes = require( '@stdlib/array/typed-float-dtypes' );\n*\n* var list = dtypes();\n* // e.g., returns [ 'float32', 'float64', 'complex64', 'complex128' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Int16Array = require( './../../int16' );\nvar Int32Array = require( './../../int32' );\nvar Int8Array = require( './../../int8' );\nvar Uint16Array = require( './../../uint16' );\nvar Uint32Array = require( './../../uint32' );\nvar Uint8Array = require( './../../uint8' );\nvar Uint8ClampedArray = require( './../../uint8c' );\n\n\n// MAIN //\n\n// Mapping from data types to constructors...\nvar ctors = {\n\t'int16': Int16Array,\n\t'int32': Int32Array,\n\t'int8': Int8Array,\n\t'uint16': Uint16Array,\n\t'uint32': Uint32Array,\n\t'uint8': Uint8Array,\n\t'uint8c': Uint8ClampedArray\n};\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar table = require( './ctors.js' );\n\n\n// MAIN //\n\n/**\n* Returns an integer-valued typed array constructor.\n*\n* @param {string} dtype - data type\n* @returns {(Function|null)} constructor or null\n*\n* @example\n* var ctor = ctors( 'int32' );\n* // returns <Function>\n*\n* @example\n* var ctor = ctors( 'int' );\n* // returns null\n*/\nfunction ctors( dtype ) {\n\treturn table[ dtype ] || null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Integer-valued typed array constructors.\n*\n* @module @stdlib/array/typed-integer-ctors\n*\n* @example\n* var ctors = require( '@stdlib/array/typed-integer-ctors' );\n*\n* var ctor = ctors( 'int32' );\n* // returns <Function>\n*\n* ctor = ctors( 'int' );\n* // returns null\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "[\n\t\"int16\",\n\t\"int32\",\n\t\"int8\",\n\t\"uint16\",\n\t\"uint32\",\n\t\"uint8\",\n\t\"uint8c\"\n]\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar DTYPES = require( './dtypes.json' );\n\n\n// MAIN //\n\n/**\n* Returns a list of typed array integer data types.\n*\n* @returns {StringArray} list of typed array integer data types\n*\n* @example\n* var list = dtypes();\n* // e.g., returns [ 'int16', 'int32', 'int8', 'uint16', 'uint32', 'uint8', 'uint8c' ]\n*/\nfunction dtypes() {\n\treturn DTYPES.slice();\n}\n\n\n// EXPORTS //\n\nmodule.exports = dtypes;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a list of typed array integer data types.\n*\n* @module @stdlib/array/typed-integer-dtypes\n*\n* @example\n* var dtypes = require( '@stdlib/array/typed-integer-dtypes' );\n*\n* var list = dtypes();\n* // e.g., returns [ 'int16', 'int32', 'int8', 'uint16', 'uint32', 'uint8', 'uint8c' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( '@stdlib/string/format' );\nvar ctors = require( './../../typed-ctors' );\n\n\n// MAIN //\n\n/**\n* Creates a typed array.\n*\n* @param {(NonNegativeInteger|TypedArray|ArrayLikeObject|ArrayBuffer)} [arg] - a length, typed array, array-like object, or buffer\n* @param {NonNegativeInteger} [byteOffset=0] - byte offset\n* @param {NonNegativeInteger} [length] - view length\n* @param {string} [dtype=\"float64\"] - data type\n* @throws {TypeError} must provide a recognized data type\n* @returns {TypedArray} typed array\n*\n* @example\n* var arr = realarray();\n* // returns <Float64Array>\n*\n* @example\n* var arr = realarray( 2 );\n* // returns <Float64Array>[ 0.0, 0.0 ]\n*\n* @example\n* var arr = realarray( 2, 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0 ]\n*\n* @example\n* var arr = realarray( [ 0.5, 0.5 ] );\n* // returns <Float64Array>[ 0.5, 0.5 ]\n*\n* @example\n* var arr = realarray( [ 5, -3 ], 'int32' );\n* // returns <Int32Array>[ 5, -3 ]\n*\n* @example\n* var arr1 = realarray( [ 5, 3 ], 'int32' );\n* var arr2 = realarray( arr1 );\n* // returns <Float64Array>[ 5.0, 3.0 ]\n*\n* @example\n* var arr1 = realarray( [ 5, 3 ], 'int32' );\n* var arr2 = realarray( arr1, 'uint32' );\n* // returns <Uint32Array>[ 5, 3 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = realarray( buf );\n* // returns <Float64Array>[ 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = realarray( buf, 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0, 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = realarray( buf, 8 );\n* // returns <Float64Array>[ 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = realarray( buf, 8, 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = realarray( buf, 8, 2 );\n* // returns <Float64Array>[ 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = realarray( buf, 8, 2, 'int32' );\n* // returns <Int32Array>[ 0, 0 ]\n*/\nfunction realarray() {\n\tvar nargs;\n\tvar dtype;\n\tvar ctor;\n\n\tnargs = arguments.length;\n\tif ( nargs && isString( arguments[ nargs-1 ] ) ) {\n\t\tnargs -= 1;\n\t\tdtype = arguments[ nargs ];\n\t} else {\n\t\tdtype = 'float64';\n\t}\n\tctor = ctors( dtype );\n\tif ( ctor === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a recognized data type. Value: `%s`.', dtype ) );\n\t}\n\tif ( nargs <= 0 ) {\n\t\treturn new ctor( 0 );\n\t}\n\tif ( nargs === 1 ) {\n\t\treturn new ctor( arguments[0] );\n\t}\n\tif ( nargs === 2 ) {\n\t\treturn new ctor( arguments[0], arguments[1] );\n\t}\n\treturn new ctor( arguments[0], arguments[1], arguments[2] );\n}\n\n\n// EXPORTS //\n\nmodule.exports = realarray;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a typed array.\n*\n* @module @stdlib/array/typed-real\n*\n* @example\n* var realarray = require( '@stdlib/array/typed-real' );\n*\n* var arr = realarray();\n* // returns <Float64Array>\n*\n* @example\n* var realarray = require( '@stdlib/array/typed-real' );\n*\n* var arr = realarray( 2 );\n* // returns <Float64Array>[ 0.0, 0.0 ]\n*\n* @example\n* var realarray = require( '@stdlib/array/typed-real' );\n*\n* var arr = realarray( 2, 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0 ]\n*\n* @example\n* var realarray = require( '@stdlib/array/typed-real' );\n*\n* var arr = realarray( [ 0.5, 0.5 ] );\n* // returns <Float64Array>[ 0.5, 0.5 ]\n*\n* @example\n* var realarray = require( '@stdlib/array/typed-real' );\n*\n* var arr = realarray( [ 5, -3 ], 'int32' );\n* // returns <Int32Array>[ 5, -3 ]\n*\n* @example\n* var realarray = require( '@stdlib/array/typed-real' );\n*\n* var arr1 = realarray( [ 5, 3 ], 'int32' );\n* var arr2 = realarray( arr1 );\n* // returns <Float64Array>[ 5.0, 3.0 ]\n*\n* @example\n* var realarray = require( '@stdlib/array/typed-real' );\n*\n* var arr1 = realarray( [ 5, 3 ], 'int32' );\n* var arr2 = realarray( arr1, 'uint32' );\n* // returns <Uint32Array>[ 5, 3 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var realarray = require( '@stdlib/array/typed-real' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = realarray( buf );\n* // returns <Float64Array>[ 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var realarray = require( '@stdlib/array/typed-real' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = realarray( buf, 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0, 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var realarray = require( '@stdlib/array/typed-real' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = realarray( buf, 8 );\n* // returns <Float64Array>[ 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var realarray = require( '@stdlib/array/typed-real' );\n*\n* var buf = new ArrayBuffer( 16 );\n* var arr = realarray( buf, 8, 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var realarray = require( '@stdlib/array/typed-real' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = realarray( buf, 8, 2 );\n* // returns <Float64Array>[ 0.0, 0.0 ]\n*\n* @example\n* var ArrayBuffer = require( '@stdlib/array/buffer' );\n* var realarray = require( '@stdlib/array/typed-real' );\n*\n* var buf = new ArrayBuffer( 32 );\n* var arr = realarray( buf, 8, 2, 'int32' );\n* // returns <Int32Array>[ 0, 0 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Float64Array = require( './../../float64' );\nvar Float32Array = require( './../../float32' );\nvar Int16Array = require( './../../int16' );\nvar Int32Array = require( './../../int32' );\nvar Int8Array = require( './../../int8' );\nvar Uint16Array = require( './../../uint16' );\nvar Uint32Array = require( './../../uint32' );\nvar Uint8Array = require( './../../uint8' );\nvar Uint8ClampedArray = require( './../../uint8c' );\n\n\n// MAIN //\n\n// Mapping from data types to constructors...\nvar ctors = {\n\t'float64': Float64Array,\n\t'float32': Float32Array,\n\t'int16': Int16Array,\n\t'int32': Int32Array,\n\t'int8': Int8Array,\n\t'uint16': Uint16Array,\n\t'uint32': Uint32Array,\n\t'uint8': Uint8Array,\n\t'uint8c': Uint8ClampedArray\n};\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar table = require( './ctors.js' );\n\n\n// MAIN //\n\n/**\n* Returns a typed array constructor.\n*\n* @param {string} dtype - data type\n* @returns {(Function|null)} constructor or null\n*\n* @example\n* var ctor = ctors( 'float64' );\n* // returns <Function>\n*\n* @example\n* var ctor = ctors( 'float' );\n* // returns null\n*/\nfunction ctors( dtype ) {\n\treturn table[ dtype ] || null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Typed array constructors.\n*\n* @module @stdlib/array/typed-real-ctors\n*\n* @example\n* var ctors = require( '@stdlib/array/typed-real-ctors' );\n*\n* var ctor = ctors( 'float64' );\n* // returns <Function>\n*\n* ctor = ctors( 'int' );\n* // returns null\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "[\n\t\"float32\",\n\t\"float64\",\n\t\"int16\",\n\t\"int32\",\n\t\"int8\",\n\t\"uint16\",\n\t\"uint32\",\n\t\"uint8\",\n\t\"uint8c\"\n]\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar DTYPES = require( './dtypes.json' );\n\n\n// MAIN //\n\n/**\n* Returns a list of typed array data types.\n*\n* @returns {StringArray} list of typed array data types\n*\n* @example\n* var list = dtypes();\n* // e.g., returns [ 'float32', 'float64', 'int16', 'int32', 'int8', 'uint16', 'uint32', 'uint8', 'uint8c' ]\n*/\nfunction dtypes() {\n\treturn DTYPES.slice();\n}\n\n\n// EXPORTS //\n\nmodule.exports = dtypes;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a list of typed array data types.\n*\n* @module @stdlib/array/typed-real-dtypes\n*\n* @example\n* var dtypes = require( '@stdlib/array/typed-real-dtypes' );\n*\n* var list = dtypes();\n* // e.g., returns [ 'float32', 'float64', 'int16', 'int32', 'int8', 'uint16', 'uint32', 'uint8', 'uint8c' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Float64Array = require( './../../float64' );\nvar Float32Array = require( './../../float32' );\n\n\n// MAIN //\n\n// Mapping from data types to constructors...\nvar ctors = {\n\t'float64': Float64Array,\n\t'float32': Float32Array\n};\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar table = require( './ctors.js' );\n\n\n// MAIN //\n\n/**\n* Returns a real-valued floating-point typed array constructor.\n*\n* @param {string} dtype - data type\n* @returns {(Function|null)} constructor or null\n*\n* @example\n* var ctor = ctors( 'float64' );\n* // returns <Function>\n*\n* @example\n* var ctor = ctors( 'float' );\n* // returns null\n*/\nfunction ctors( dtype ) {\n\treturn table[ dtype ] || null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Real-valued floating-point typed array constructors.\n*\n* @module @stdlib/array/typed-real-float-ctors\n*\n* @example\n* var ctors = require( '@stdlib/array/typed-real-float-ctors' );\n*\n* var ctor = ctors( 'float64' );\n* // returns <Function>\n*\n* ctor = ctors( 'int' );\n* // returns null\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "[\n\t\"float32\",\n\t\"float64\"\n]\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar DTYPES = require( './dtypes.json' );\n\n\n// MAIN //\n\n/**\n* Returns a list of typed array real-valued floating-point data types.\n*\n* @returns {StringArray} list of typed array real-valued floating-point data types\n*\n* @example\n* var list = dtypes();\n* // e.g., returns [ 'float32', 'float64' ]\n*/\nfunction dtypes() {\n\treturn DTYPES.slice();\n}\n\n\n// EXPORTS //\n\nmodule.exports = dtypes;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a list of typed array real-valued floating-point data types.\n*\n* @module @stdlib/array/typed-real-float-dtypes\n*\n* @example\n* var dtypes = require( '@stdlib/array/typed-real-float-dtypes' );\n*\n* var list = dtypes();\n* // e.g., returns [ 'float32', 'float64' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Int16Array = require( './../../int16' );\nvar Int32Array = require( './../../int32' );\nvar Int8Array = require( './../../int8' );\n\n\n// MAIN //\n\n// Mapping from data types to constructors...\nvar ctors = {\n\t'int16': Int16Array,\n\t'int32': Int32Array,\n\t'int8': Int8Array\n};\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar table = require( './ctors.js' );\n\n\n// MAIN //\n\n/**\n* Returns a signed integer typed array constructor.\n*\n* @param {string} dtype - data type\n* @returns {(Function|null)} constructor or null\n*\n* @example\n* var ctor = ctors( 'int32' );\n* // returns <Function>\n*\n* @example\n* var ctor = ctors( 'int' );\n* // returns null\n*/\nfunction ctors( dtype ) {\n\treturn table[ dtype ] || null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Signed integer typed array constructors.\n*\n* @module @stdlib/array/typed-signed-integer-ctors\n*\n* @example\n* var ctors = require( '@stdlib/array/typed-signed-integer-ctors' );\n*\n* var ctor = ctors( 'int32' );\n* // returns <Function>\n*\n* ctor = ctors( 'int' );\n* // returns null\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "[\n\t\"int16\",\n\t\"int32\",\n\t\"int8\"\n]\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar DTYPES = require( './dtypes.json' );\n\n\n// MAIN //\n\n/**\n* Returns a list of typed array signed integer data types.\n*\n* @returns {StringArray} list of typed array signed integer data types\n*\n* @example\n* var list = dtypes();\n* // e.g., returns [ 'int16', 'int32', 'int8' ]\n*/\nfunction dtypes() {\n\treturn DTYPES.slice();\n}\n\n\n// EXPORTS //\n\nmodule.exports = dtypes;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a list of typed array signed integer data types.\n*\n* @module @stdlib/array/typed-signed-integer-dtypes\n*\n* @example\n* var dtypes = require( '@stdlib/array/typed-signed-integer-dtypes' );\n*\n* var list = dtypes();\n* // e.g., returns [ 'int16', 'int32', 'int8' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar Uint16Array = require( './../../uint16' );\nvar Uint32Array = require( './../../uint32' );\nvar Uint8Array = require( './../../uint8' );\nvar Uint8ClampedArray = require( './../../uint8c' );\n\n\n// MAIN //\n\n// Mapping from data types to constructors...\nvar ctors = {\n\t'uint16': Uint16Array,\n\t'uint32': Uint32Array,\n\t'uint8': Uint8Array,\n\t'uint8c': Uint8ClampedArray\n};\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar table = require( './ctors.js' );\n\n\n// MAIN //\n\n/**\n* Returns an unsigned integer typed array constructor.\n*\n* @param {string} dtype - data type\n* @returns {(Function|null)} constructor or null\n*\n* @example\n* var ctor = ctors( 'uint32' );\n* // returns <Function>\n*\n* @example\n* var ctor = ctors( 'uint' );\n* // returns null\n*/\nfunction ctors( dtype ) {\n\treturn table[ dtype ] || null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ctors;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Unsigned integer typed array constructors.\n*\n* @module @stdlib/array/typed-unsigned-integer-ctors\n*\n* @example\n* var ctors = require( '@stdlib/array/typed-unsigned-integer-ctors' );\n*\n* var ctor = ctors( 'uint32' );\n* // returns <Function>\n*\n* ctor = ctors( 'uint' );\n* // returns null\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "[\n\t\"uint16\",\n\t\"uint32\",\n\t\"uint8\",\n\t\"uint8c\"\n]\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar DTYPES = require( './dtypes.json' );\n\n\n// MAIN //\n\n/**\n* Returns a list of typed array unsigned integer data types.\n*\n* @returns {StringArray} list of typed array unsigned integer data types\n*\n* @example\n* var list = dtypes();\n* // e.g., returns [ 'uint16', 'uint32', 'uint8', 'uint8c' ]\n*/\nfunction dtypes() {\n\treturn DTYPES.slice();\n}\n\n\n// EXPORTS //\n\nmodule.exports = dtypes;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a list of typed array unsigned integer data types.\n*\n* @module @stdlib/array/typed-unsigned-integer-dtypes\n*\n* @example\n* var dtypes = require( '@stdlib/array/typed-unsigned-integer-dtypes' );\n*\n* var list = dtypes();\n* // e.g., returns [ 'uint16', 'uint32', 'uint8', 'uint8c' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar format = require( '@stdlib/string/format' );\nvar dtype = require( './../../dtype' );\nvar zeros = require( './../../zeros' );\n\n\n// MAIN //\n\n/**\n* Creates a zero-filled array having the same length and data type as a provided input array.\n*\n* @param {(Array|TypedArray|ComplexArray)} x - input array\n* @param {string} [dtype] - data type\n* @throws {TypeError} first argument must be an array or typed array\n* @throws {TypeError} second argument must be a recognized data type\n* @returns {(TypedArray|Array|ComplexArray)} array or typed array\n*\n* @example\n* var arr = zerosLike( [ 0.0, 0.0 ] );\n* // returns [ 0.0, 0.0 ]\n*\n* @example\n* var arr = zerosLike( [ 0.0, 0.0 ], 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0 ]\n*/\nfunction zerosLike( x ) {\n\tvar dt = dtype( x ); // delegate input argument validation to dtype resolution\n\tif ( dt === null ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be either an array, typed array, or complex typed array. Value: `%s`.', x ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tdt = arguments[ 1 ];\n\t}\n\treturn zeros( x.length, dt );\n}\n\n\n// EXPORTS //\n\nmodule.exports = zerosLike;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a zero-filled array having the same length and data type as a provided input array.\n*\n* @module @stdlib/array/zeros-like\n*\n* @example\n* var zerosLike = require( '@stdlib/array/zeros-like' );\n*\n* var arr = zerosLike( [ 0.0, 0.0 ] );\n* // returns [ 0.0, 0.0 ]\n*\n* @example\n* var zerosLike = require( '@stdlib/array/zeros-like' );\n*\n* var arr = zerosLike( [ 0.0, 0.0 ], 'float32' );\n* // returns <Float32Array>[ 0.0, 0.0 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n*    http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/*\n* When adding modules to the namespace, ensure that they are added in alphabetical order according to module name.\n*/\n\n/*\n* The following modules are intentionally not exported: generic\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-read-only-property' );\n\n\n// MAIN //\n\n/**\n* Top-level namespace.\n*\n* @namespace ns\n*/\nvar ns = {};\n\n/**\n* @name base\n* @memberof ns\n* @readonly\n* @type {Namespace}\n* @see {@link module:@stdlib/array/base}\n*/\nsetReadOnly( ns, 'base', require( './../base' ) );\n\n/**\n* @name ArrayBuffer\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/buffer}\n*/\nsetReadOnly( ns, 'ArrayBuffer', require( './../buffer' ) );\n\n/**\n* @name Complex64Array\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/complex64}\n*/\nsetReadOnly( ns, 'Complex64Array', require( './../complex64' ) );\n\n/**\n* @name Complex128Array\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/complex128}\n*/\nsetReadOnly( ns, 'Complex128Array', require( './../complex128' ) );\n\n/**\n* @name convertArray\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/convert}\n*/\nsetReadOnly( ns, 'convertArray', require( './../convert' ) );\n\n/**\n* @name convertArraySame\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/convert-same}\n*/\nsetReadOnly( ns, 'convertArraySame', require( './../convert-same' ) );\n\n/**\n* @name arrayCtors\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/ctors}\n*/\nsetReadOnly( ns, 'arrayCtors', require( './../ctors' ) );\n\n/**\n* @name DataView\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/dataview}\n*/\nsetReadOnly( ns, 'DataView', require( './../dataview' ) );\n\n/**\n* @name datespace\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/datespace}\n*/\nsetReadOnly( ns, 'datespace', require( './../datespace' ) );\n\n/**\n* @name arrayDefaults\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/defaults}\n*/\nsetReadOnly( ns, 'arrayDefaults', require( './../defaults' ) );\n\n/**\n* @name arrayDataType\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/dtype}\n*/\nsetReadOnly( ns, 'arrayDataType', require( './../dtype' ) );\n\n/**\n* @name arrayDataTypes\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/dtypes}\n*/\nsetReadOnly( ns, 'arrayDataTypes', require( './../dtypes' ) );\n\n/**\n* @name aempty\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/empty}\n*/\nsetReadOnly( ns, 'aempty', require( './../empty' ) );\n\n/**\n* @name aemptyLike\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/empty-like}\n*/\nsetReadOnly( ns, 'aemptyLike', require( './../empty-like' ) );\n\n/**\n* @name filledarray\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/filled}\n*/\nsetReadOnly( ns, 'filledarray', require( './../filled' ) );\n\n/**\n* @name filledarrayBy\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/filled-by}\n*/\nsetReadOnly( ns, 'filledarrayBy', require( './../filled-by' ) );\n\n/**\n* @name Float32Array\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/float32}\n*/\nsetReadOnly( ns, 'Float32Array', require( './../float32' ) );\n\n/**\n* @name Float64Array\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/float64}\n*/\nsetReadOnly( ns, 'Float64Array', require( './../float64' ) );\n\n/**\n* @name iterator2array\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/from-iterator}\n*/\nsetReadOnly( ns, 'iterator2array', require( './../from-iterator' ) );\n\n/**\n* @name afull\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/full}\n*/\nsetReadOnly( ns, 'afull', require( './../full' ) );\n\n/**\n* @name afullLike\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/full-like}\n*/\nsetReadOnly( ns, 'afullLike', require( './../full-like' ) );\n\n/**\n* @name incrspace\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/incrspace}\n*/\nsetReadOnly( ns, 'incrspace', require( './../incrspace' ) );\n\n/**\n* @name Int8Array\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/int8}\n*/\nsetReadOnly( ns, 'Int8Array', require( './../int8' ) );\n\n/**\n* @name Int16Array\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/int16}\n*/\nsetReadOnly( ns, 'Int16Array', require( './../int16' ) );\n\n/**\n* @name Int32Array\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/int32}\n*/\nsetReadOnly( ns, 'Int32Array', require( './../int32' ) );\n\n/**\n* @name linspace\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/linspace}\n*/\nsetReadOnly( ns, 'linspace', require( './../linspace' ) );\n\n/**\n* @name logspace\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/logspace}\n*/\nsetReadOnly( ns, 'logspace', require( './../logspace' ) );\n\n/**\n* @name arrayMinDataType\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/min-dtype}\n*/\nsetReadOnly( ns, 'arrayMinDataType', require( './../min-dtype' ) );\n\n/**\n* @name anans\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/nans}\n*/\nsetReadOnly( ns, 'anans', require( './../nans' ) );\n\n/**\n* @name anansLike\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/nans-like}\n*/\nsetReadOnly( ns, 'anansLike', require( './../nans-like' ) );\n\n/**\n* @name arrayNextDataType\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/next-dtype}\n*/\nsetReadOnly( ns, 'arrayNextDataType', require( './../next-dtype' ) );\n\n/**\n* @name aones\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/ones}\n*/\nsetReadOnly( ns, 'aones', require( './../ones' ) );\n\n/**\n* @name aonesLike\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/ones-like}\n*/\nsetReadOnly( ns, 'aonesLike', require( './../ones-like' ) );\n\n/**\n* @name typedarraypool\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/pool}\n*/\nsetReadOnly( ns, 'typedarraypool', require( './../pool' ) );\n\n/**\n* @name arrayPromotionRules\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/promotion-rules}\n*/\nsetReadOnly( ns, 'arrayPromotionRules', require( './../promotion-rules' ) );\n\n/**\n* @name reviveTypedArray\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/reviver}\n*/\nsetReadOnly( ns, 'reviveTypedArray', require( './../reviver' ) );\n\n/**\n* @name arraySafeCasts\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/safe-casts}\n*/\nsetReadOnly( ns, 'arraySafeCasts', require( './../safe-casts' ) );\n\n/**\n* @name arraySameKindCasts\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/same-kind-casts}\n*/\nsetReadOnly( ns, 'arraySameKindCasts', require( './../same-kind-casts' ) );\n\n/**\n* @name arrayShape\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/shape}\n*/\nsetReadOnly( ns, 'arrayShape', require( './../shape' ) );\n\n/**\n* @name SharedArrayBuffer\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/shared-buffer}\n*/\nsetReadOnly( ns, 'SharedArrayBuffer', require( './../shared-buffer' ) );\n\n/**\n* @name circarray2iterator\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/to-circular-iterator}\n*/\nsetReadOnly( ns, 'circarray2iterator', require( './../to-circular-iterator' ) );\n\n/**\n* @name array2iterator\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/to-iterator}\n*/\nsetReadOnly( ns, 'array2iterator', require( './../to-iterator' ) );\n\n/**\n* @name array2iteratorRight\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/to-iterator-right}\n*/\nsetReadOnly( ns, 'array2iteratorRight', require( './../to-iterator-right' ) );\n\n/**\n* @name typedarray2json\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/to-json}\n*/\nsetReadOnly( ns, 'typedarray2json', require( './../to-json' ) );\n\n/**\n* @name sparsearray2iterator\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/to-sparse-iterator}\n*/\nsetReadOnly( ns, 'sparsearray2iterator', require( './../to-sparse-iterator' ) );\n\n/**\n* @name sparsearray2iteratorRight\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/to-sparse-iterator-right}\n*/\nsetReadOnly( ns, 'sparsearray2iteratorRight', require( './../to-sparse-iterator-right' ) );\n\n/**\n* @name stridedarray2iterator\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/to-strided-iterator}\n*/\nsetReadOnly( ns, 'stridedarray2iterator', require( './../to-strided-iterator' ) );\n\n/**\n* @name arrayview2iterator\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/to-view-iterator}\n*/\nsetReadOnly( ns, 'arrayview2iterator', require( './../to-view-iterator' ) );\n\n/**\n* @name arrayview2iteratorRight\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/to-view-iterator-right}\n*/\nsetReadOnly( ns, 'arrayview2iteratorRight', require( './../to-view-iterator-right' ) );\n\n/**\n* @name typedarray\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed}\n*/\nsetReadOnly( ns, 'typedarray', require( './../typed' ) );\n\n/**\n* @name complexarray\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-complex}\n*/\nsetReadOnly( ns, 'complexarray', require( './../typed-complex' ) );\n\n/**\n* @name complexarrayCtors\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-complex-ctors}\n*/\nsetReadOnly( ns, 'complexarrayCtors', require( './../typed-complex-ctors' ) );\n\n/**\n* @name complexarrayDataTypes\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-complex-dtypes}\n*/\nsetReadOnly( ns, 'complexarrayDataTypes', require( './../typed-complex-dtypes' ) );\n\n/**\n* @name typedarrayCtors\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-ctors}\n*/\nsetReadOnly( ns, 'typedarrayCtors', require( './../typed-ctors' ) );\n\n/**\n* @name typedarrayDataTypes\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-dtypes}\n*/\nsetReadOnly( ns, 'typedarrayDataTypes', require( './../typed-dtypes' ) );\n\n/**\n* @name floatarrayCtors\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-float-ctors}\n*/\nsetReadOnly( ns, 'floatarrayCtors', require( './../typed-float-ctors' ) );\n\n/**\n* @name floatarrayDataTypes\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-float-dtypes}\n*/\nsetReadOnly( ns, 'floatarrayDataTypes', require( './../typed-float-dtypes' ) );\n\n/**\n* @name intarrayCtors\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-integer-ctors}\n*/\nsetReadOnly( ns, 'intarrayCtors', require( './../typed-integer-ctors' ) );\n\n/**\n* @name intarrayDataTypes\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-integer-dtypes}\n*/\nsetReadOnly( ns, 'intarrayDataTypes', require( './../typed-integer-dtypes' ) );\n\n/**\n* @name realarray\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-real}\n*/\nsetReadOnly( ns, 'realarray', require( './../typed-real' ) );\n\n/**\n* @name realarrayCtors\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-real-ctors}\n*/\nsetReadOnly( ns, 'realarrayCtors', require( './../typed-real-ctors' ) );\n\n/**\n* @name realarrayDataTypes\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-real-dtypes}\n*/\nsetReadOnly( ns, 'realarrayDataTypes', require( './../typed-real-dtypes' ) );\n\n/**\n* @name realarrayFloatCtors\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-real-float-ctors}\n*/\nsetReadOnly( ns, 'realarrayFloatCtors', require( './../typed-real-float-ctors' ) );\n\n/**\n* @name realarrayFloatDataTypes\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-real-float-dtypes}\n*/\nsetReadOnly( ns, 'realarrayFloatDataTypes', require( './../typed-real-float-dtypes' ) );\n\n/**\n* @name intarraySignedCtors\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-signed-integer-ctors}\n*/\nsetReadOnly( ns, 'intarraySignedCtors', require( './../typed-signed-integer-ctors' ) );\n\n/**\n* @name intarraySignedDataTypes\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-signed-integer-dtypes}\n*/\nsetReadOnly( ns, 'intarraySignedDataTypes', require( './../typed-signed-integer-dtypes' ) );\n\n/**\n* @name intarrayUnsignedCtors\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-unsigned-integer-ctors}\n*/\nsetReadOnly( ns, 'intarrayUnsignedCtors', require( './../typed-unsigned-integer-ctors' ) );\n\n/**\n* @name intarrayUnsignedDataTypes\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/array/typed-unsigned-integer-dtypes}\n*/\nsetReadOnly( ns, 'intarrayUnsignedDataTypes', require( './../typed-unsigned-integer-dtypes' ) );\n\n/**\n* @name Uint8Array\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/uint8}\n*/\nsetReadOnly( ns, 'Uint8Array', require( './../uint8' ) );\n\n/**\n* @name Uint8ClampedArray\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/uint8c}\n*/\nsetReadOnly( ns, 'Uint8ClampedArray', require( './../uint8c' ) );\n\n/**\n* @name Uint16Array\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/uint16}\n*/\nsetReadOnly( ns, 'Uint16Array', require( './../uint16' ) );\n\n/**\n* @name Uint32Array\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/uint32}\n*/\nsetReadOnly( ns, 'Uint32Array', require( './../uint32' ) );\n\n/**\n* @name azeros\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/zeros}\n*/\nsetReadOnly( ns, 'azeros', require( './../zeros' ) );\n\n/**\n* @name azerosLike\n* @memberof ns\n* @readonly\n* @constructor\n* @see {@link module:@stdlib/array/zeros-like}\n*/\nsetReadOnly( ns, 'azerosLike', require( './../zeros-like' ) );\n\n/**\n* @name constants\n* @memberof ns\n* @readonly\n* @type {Namespace}\n* @see {@link module:@stdlib/constants/array}\n*/\nsetReadOnly( ns, 'constants', require( '@stdlib/constants/array' ) );\n\n\n// EXPORTS //\n\nmodule.exports = ns;\n"],
   "mappings": "uGAAA,IAAAA,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAO,WAqBX,SAASC,GAAiBC,EAAQ,CACjC,OAAS,OAAOA,EAAM,MAAQF,IAAQ,OAAOE,EAAM,MAAQF,EAC5D,CAKAD,GAAO,QAAUE,KClDjB,IAAAE,EAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC3CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAU,CACb,QAAWC,GACX,QAAWC,GACX,MAASC,GACT,MAASC,GACT,KAAQC,GACR,OAAUC,GACV,OAAUC,GACV,MAASC,GACT,OAAUC,GACV,QAAWC,GACX,QAAWC,EACZ,EAqBA,SAASV,GAAYW,EAAKC,EAAM,CAC/B,OAAOD,EAAKC,CAAI,CACjB,CAkBA,SAASX,GAAYU,EAAKC,EAAM,CAC/B,OAAOD,EAAKC,CAAI,CACjB,CAkBA,SAASV,GAAUS,EAAKC,EAAM,CAC7B,OAAOD,EAAKC,CAAI,CACjB,CAkBA,SAAST,GAAUQ,EAAKC,EAAM,CAC7B,OAAOD,EAAKC,CAAI,CACjB,CAkBA,SAASR,GAASO,EAAKC,EAAM,CAC5B,OAAOD,EAAKC,CAAI,CACjB,CAkBA,SAASP,GAAWM,EAAKC,EAAM,CAC9B,OAAOD,EAAKC,CAAI,CACjB,CAkBA,SAASN,GAAWK,EAAKC,EAAM,CAC9B,OAAOD,EAAKC,CAAI,CACjB,CAkBA,SAASL,GAAUI,EAAKC,EAAM,CAC7B,OAAOD,EAAKC,CAAI,CACjB,CAkBA,SAASJ,GAAWG,EAAKC,EAAM,CAC9B,OAAOD,EAAKC,CAAI,CACjB,CAgBA,SAASH,GAAYE,EAAKC,EAAM,CAC/B,OAAOD,EAAKC,CAAI,CACjB,CAgBA,SAASF,GAAcC,EAAKC,EAAM,CACjC,OAAOD,EAAKC,CAAI,CACjB,CAoBA,SAASC,GAAQC,EAAQ,CACxB,IAAIC,EAAIhB,GAASe,CAAM,EACvB,OAAK,OAAOC,GAAM,WACVA,EAEDhB,GAAQ,OAChB,CAKAD,GAAO,QAAUe,KC5RjB,IAAAG,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC3CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAU,CACb,QAAWC,GACX,QAAWC,GACX,MAASC,GACT,MAASC,GACT,KAAQC,GACR,OAAUC,GACV,OAAUC,GACV,MAASC,GACT,OAAUC,GACV,QAAWC,GACX,QAAWC,EACZ,EAuBA,SAASV,GAAYW,EAAKC,EAAKC,EAAQ,CACtCF,EAAKC,CAAI,EAAIC,CACd,CAoBA,SAASZ,GAAYU,EAAKC,EAAKC,EAAQ,CACtCF,EAAKC,CAAI,EAAIC,CACd,CAoBA,SAASX,GAAUS,EAAKC,EAAKC,EAAQ,CACpCF,EAAKC,CAAI,EAAIC,CACd,CAoBA,SAASV,GAAUQ,EAAKC,EAAKC,EAAQ,CACpCF,EAAKC,CAAI,EAAIC,CACd,CAoBA,SAAST,GAASO,EAAKC,EAAKC,EAAQ,CACnCF,EAAKC,CAAI,EAAIC,CACd,CAoBA,SAASR,GAAWM,EAAKC,EAAKC,EAAQ,CACrCF,EAAKC,CAAI,EAAIC,CACd,CAoBA,SAASP,GAAWK,EAAKC,EAAKC,EAAQ,CACrCF,EAAKC,CAAI,EAAIC,CACd,CAoBA,SAASN,GAAUI,EAAKC,EAAKC,EAAQ,CACpCF,EAAKC,CAAI,EAAIC,CACd,CAoBA,SAASL,GAAWG,EAAKC,EAAKC,EAAQ,CACrCF,EAAKC,CAAI,EAAIC,CACd,CAkBA,SAASJ,GAAYE,EAAKC,EAAKC,EAAQ,CACtCF,EAAKC,CAAI,EAAIC,CACd,CAkBA,SAASH,GAAcC,EAAKC,EAAKC,EAAQ,CACxCF,EAAKC,CAAI,EAAIC,CACd,CAsBA,SAASC,GAAQC,EAAQ,CACxB,IAAIC,EAAIjB,GAASgB,CAAM,EACvB,OAAK,OAAOC,GAAM,WACVA,EAEDjB,GAAQ,OAChB,CAKAD,GAAO,QAAUgB,KCpTjB,IAAAG,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAU,CACb,WAAcC,GACd,UAAaC,GACb,QAAWC,EACZ,EA6BA,SAASF,GAAeG,EAAKC,EAAM,CAClC,OAAOD,EAAI,IAAKC,CAAI,CACrB,CA0BA,SAASH,GAAcE,EAAKC,EAAM,CACjC,OAAOD,EAAI,IAAKC,CAAI,CACrB,CA2BA,SAASF,GAAcC,EAAKC,EAAM,CACjC,OAAOD,EAAI,IAAKC,CAAI,CACrB,CA6BA,SAASC,GAAQC,EAAQ,CACxB,IAAIC,EAAIR,GAASO,CAAM,EACvB,OAAK,OAAOC,GAAM,WACVA,EAEDR,GAAQ,OAChB,CAKAD,GAAO,QAAUO,KC1JjB,IAAAG,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA+CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCpDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAU,CACb,WAAcC,GACd,UAAaC,GACb,QAAWC,EACZ,EA+BA,SAASF,GAAeG,EAAKC,EAAKC,EAAQ,CACzCF,EAAI,IAAKE,EAAOD,CAAI,CACrB,CA4BA,SAASH,GAAcE,EAAKC,EAAKC,EAAQ,CACxCF,EAAI,IAAKE,EAAOD,CAAI,CACrB,CA6BA,SAASF,GAAcC,EAAKC,EAAKC,EAAQ,CACxCF,EAAI,IAAKE,EAAOD,CAAI,CACrB,CAgCA,SAASE,GAAQC,EAAQ,CACxB,IAAIC,EAAIT,GAASQ,CAAM,EACvB,OAAK,OAAOC,GAAM,WACVA,EAEDT,GAAQ,OAChB,CAKAD,GAAO,QAAUQ,KCnKjB,IAAAG,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkDA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAuBA,IAAIC,GAAc,CACjB,aAAgB,UAChB,aAAgB,UAChB,MAAS,UACT,WAAc,QACd,WAAc,QACd,UAAa,OACb,YAAe,SACf,YAAe,SACf,WAAc,QACd,kBAAqB,SACrB,eAAkB,YAClB,gBAAmB,YACpB,EAKAD,GAAO,QAAUC,KCzCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,OAAO,cAAiB,WAAe,aAAe,OAKnED,GAAO,QAAUC,KC3BjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA6BA,SAASC,IAAW,CACnB,MAAM,IAAI,MAAO,iBAAkB,CACpC,CAKAD,GAAO,QAAUC,KCpCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAyB,QAAS,yCAA0C,EAC5EC,GAAU,KACVC,GAAW,KAKXC,GACCH,GAAuB,EAC3BG,GAAOF,GAEPE,GAAOD,GAMRH,GAAO,QAAUI,KCnDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,OAAO,cAAiB,WAAe,aAAe,OAKnED,GAAO,QAAUC,KC3BjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA6BA,SAASC,IAAW,CACnB,MAAM,IAAI,MAAO,iBAAkB,CACpC,CAKAD,GAAO,QAAUC,KCpCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAyB,QAAS,yCAA0C,EAC5EC,GAAU,KACVC,GAAW,KAKXC,GACCH,GAAuB,EAC3BG,GAAOF,GAEPE,GAAOD,GAMRH,GAAO,QAAUI,KCnDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,OAAO,aAAgB,WAAe,YAAc,OAKjED,GAAO,QAAUC,KC3BjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA6BA,SAASC,IAAW,CACnB,MAAM,IAAI,MAAO,iBAAkB,CACpC,CAKAD,GAAO,QAAUC,KCpCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAwB,QAAS,wCAAyC,EAC1EC,GAAU,KACVC,GAAW,KAKXC,GACCH,GAAsB,EAC1BG,GAAOF,GAEPE,GAAOD,GAMRH,GAAO,QAAUI,KCnDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,OAAO,YAAe,WAAe,WAAa,OAK/DD,GAAO,QAAUC,KC3BjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA6BA,SAASC,IAAW,CACnB,MAAM,IAAI,MAAO,iBAAkB,CACpC,CAKAD,GAAO,QAAUC,KCpCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAuB,QAAS,uCAAwC,EACxEC,GAAU,KACVC,GAAW,KAKXC,GACCH,GAAqB,EACzBG,GAAOF,GAEPE,GAAOD,GAMRH,GAAO,QAAUI,KCnDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,OAAO,aAAgB,WAAe,YAAc,OAKjED,GAAO,QAAUC,KC3BjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA6BA,SAASC,IAAW,CACnB,MAAM,IAAI,MAAO,iBAAkB,CACpC,CAKAD,GAAO,QAAUC,KCpCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAwB,QAAS,wCAAyC,EAC1EC,GAAU,KACVC,GAAW,KAKXC,GACCH,GAAsB,EAC1BG,GAAOF,GAEPE,GAAOD,GAMRH,GAAO,QAAUI,KCnDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,OAAO,YAAe,WAAe,WAAa,OAK/DD,GAAO,QAAUC,KC3BjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA6BA,SAASC,IAAW,CACnB,MAAM,IAAI,MAAO,iBAAkB,CACpC,CAKAD,GAAO,QAAUC,KCpCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAuB,QAAS,uCAAwC,EACxEC,GAAU,KACVC,GAAW,KAKXC,GACCH,GAAqB,EACzBG,GAAOF,GAEPE,GAAOD,GAMRH,GAAO,QAAUI,KCnDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,OAAO,YAAe,WAAe,WAAa,OAK/DD,GAAO,QAAUC,KC3BjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA6BA,SAASC,IAAW,CACnB,MAAM,IAAI,MAAO,iBAAkB,CACpC,CAKAD,GAAO,QAAUC,KCpCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAuB,QAAS,uCAAwC,EACxEC,GAAU,KACVC,GAAW,KAKXC,GACCH,GAAqB,EACzBG,GAAOF,GAEPE,GAAOD,GAMRH,GAAO,QAAUI,KCnDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,OAAO,mBAAsB,WAAe,kBAAoB,OAK7ED,GAAO,QAAUC,KC3BjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA6BA,SAASC,IAAW,CACnB,MAAM,IAAI,MAAO,iBAAkB,CACpC,CAKAD,GAAO,QAAUC,KCpCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAA8B,QAAS,8CAA+C,EACtFC,GAAU,KACVC,GAAW,KAKXC,GACCH,GAA4B,EAChCG,GAAOF,GAEPE,GAAOD,GAMRH,GAAO,QAAUI,KCnDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,OAAO,WAAc,WAAe,UAAY,OAK7DD,GAAO,QAAUC,KC3BjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA6BA,SAASC,IAAW,CACnB,MAAM,IAAI,MAAO,iBAAkB,CACpC,CAKAD,GAAO,QAAUC,KCpCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAsB,QAAS,sCAAuC,EACtEC,GAAU,KACVC,GAAW,KAKXC,GACCH,GAAoB,EACxBG,GAAOF,GAEPE,GAAOD,GAMRH,GAAO,QAAUI,KCnDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAoB,EAoBxB,SAASC,GAAkBC,EAAQ,CAElC,OACC,OAAOA,GAAU,UACjBA,IAAU,MACVA,EAAM,YAAY,OAAS,kBAC3BA,EAAM,oBAAsBF,EAE9B,CAKAD,GAAO,QAAUE,KCvDjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC3CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAoB,GAoBxB,SAASC,GAAmBC,EAAQ,CAEnC,OACC,OAAOA,GAAU,UACjBA,IAAU,MACVA,EAAM,YAAY,OAAS,mBAC3BA,EAAM,oBAAsBF,EAE9B,CAKAD,GAAO,QAAUE,KCvDjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC3CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAoB,QAAS,qCAAsC,EACnEC,GAAgB,QAAS,gCAAiC,EAC1DC,GAAQ,QAAS,uBAAwB,EACzCC,GAAQ,QAAS,uBAAwB,EACzCC,GAAS,QAAS,uBAAwB,EAY9C,SAASC,GAAcC,EAAK,CAC3B,IAAIC,EACAC,EACAC,EAGJ,IADAF,EAAM,CAAC,EAENC,EAAIF,EAAG,KAAK,EACP,CAAAE,EAAE,MAIP,GADAC,EAAID,EAAE,MACDR,GAAmBS,CAAE,GAAKA,EAAE,QAAU,EAC1CF,EAAI,KAAME,EAAG,CAAE,EAAGA,EAAG,CAAE,CAAE,UACdR,GAAeQ,CAAE,EAC5BF,EAAI,KAAML,GAAOO,CAAE,EAAGN,GAAOM,CAAE,CAAE,MAEjC,QAAO,IAAI,UAAWL,GAAQ,kJAAmJK,CAAE,CAAE,EAGvL,OAAOF,CACR,CAKAR,GAAO,QAAUM,KChEjB,IAAAK,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAoB,QAAS,qCAAsC,EACnEC,GAAgB,QAAS,gCAAiC,EAC1DC,GAAQ,QAAS,uBAAwB,EACzCC,GAAQ,QAAS,uBAAwB,EACzCC,GAAS,QAAS,uBAAwB,EAc9C,SAASC,GAAiBC,EAAIC,EAAMC,EAAU,CAC7C,IAAIC,EACAC,EACAC,EACAC,EAIJ,IAFAH,EAAM,CAAC,EACPG,EAAI,GAEHF,EAAIJ,EAAG,KAAK,EACP,CAAAI,EAAE,MAKP,GAFAE,GAAK,EACLD,EAAIJ,EAAK,KAAMC,EAASE,EAAE,MAAOE,CAAE,EAC9BZ,GAAmBW,CAAE,GAAKA,EAAE,QAAU,EAC1CF,EAAI,KAAME,EAAG,CAAE,EAAGA,EAAG,CAAE,CAAE,UACdV,GAAeU,CAAE,EAC5BF,EAAI,KAAMP,GAAOS,CAAE,EAAGR,GAAOQ,CAAE,CAAE,MAEjC,QAAO,IAAI,UAAWP,GAAQ,+IAAgJO,CAAE,CAAE,EAGpL,OAAOF,CACR,CAKAV,GAAO,QAAUM,KCrEjB,IAAAQ,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAgB,QAAS,gCAAiC,EAC1DC,GAAQ,QAAS,uBAAwB,EACzCC,GAAQ,QAAS,uBAAwB,EAa7C,SAASC,GAAWC,EAAKC,EAAM,CAC9B,IAAIC,EACAC,EACAC,EACAC,EAIJ,IAFAH,EAAMD,EAAI,OACVI,EAAI,EACED,EAAI,EAAGA,EAAIF,EAAKE,IAAM,CAE3B,GADAD,EAAIF,EAAKG,CAAE,EACN,CAACR,GAAeO,CAAE,EACtB,OAAO,KAERH,EAAKK,CAAE,EAAIR,GAAOM,CAAE,EACpBH,EAAKK,EAAE,CAAE,EAAIP,GAAOK,CAAE,EACtBE,GAAK,CACN,CACA,OAAOL,CACR,CAKAL,GAAO,QAAUI,KC5DjB,IAAAO,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwBA,IAAIC,GAAuB,QAAS,uCAAwC,EAAE,YAC1EC,GAAoB,QAAS,qCAAsC,EACnEC,GAAe,QAAS,8BAA+B,EACvDC,GAAgB,QAAS,+BAAgC,EACzDC,GAAW,QAAS,0BAA2B,EAC/CC,GAAU,QAAS,yBAA0B,EAC7CC,GAAW,QAAS,0BAA2B,EAAE,YACjDC,GAAa,QAAS,4BAA6B,EACnDC,GAAgB,QAAS,gCAAiC,EAC1DC,GAAS,QAAS,kCAAmC,EACrDC,GAAY,QAAS,qCAAsC,EAC3DC,GAAmB,KACnBC,GAAoB,KACpBC,GAA2B,QAAS,4CAA6C,EACjFC,GAAkB,QAAS,yBAA0B,EACrDC,EAAc,QAAS,uDAAwD,EAC/EC,GAAsB,QAAS,uDAAwD,EACvFC,GAAe,KACfC,GAAY,QAAS,yBAA0B,EAC/CC,EAAS,QAAS,uBAAwB,EAC1CC,GAAQ,QAAS,uBAAwB,EACzCC,GAAQ,QAAS,uBAAwB,EACzCC,GAAQ,QAAS,iCAAkC,EACnDC,GAAgB,QAAS,4CAA6C,EACtEC,GAAiB,QAAS,6CAA8C,EACxEC,GAAS,KACTC,GAAiB,KACjBC,GAAe,KACfC,GAAkB,KAClBC,GAAY,KAKZC,GAAoBb,GAAa,kBAAoB,EACrDc,GAAsBlB,GAAyB,EAYnD,SAASmB,EAAgBC,EAAQ,CAChC,OACCA,aAAiBC,GAEhB,OAAOD,GAAU,UACjBA,IAAU,OAETA,EAAM,YAAY,OAAS,kBAC3BA,EAAM,YAAY,OAAS,oBAE5B,OAAOA,EAAM,SAAY,UAGzB,OAAOA,EAAM,SAAY,QAG5B,CASA,SAASE,GAA2BF,EAAQ,CAC3C,OACCA,IAAUC,GAGVD,EAAM,OAAS,iBAEjB,CAUA,SAASG,GAAcC,EAAKC,EAAM,CACjC,OAAAA,GAAO,EACA,IAAIpB,GAAWmB,EAAKC,CAAI,EAAGD,EAAKC,EAAI,CAAE,CAAE,CAChD,CAyEA,SAASJ,GAAiB,CACzB,IAAIK,EACAC,EACAH,EACAI,EAGJ,GADAD,EAAQ,UAAU,OACb,EAAE,gBAAgBN,GACtB,OAAKM,IAAU,EACP,IAAIN,EAEPM,IAAU,EACP,IAAIN,EAAgB,UAAU,CAAC,CAAE,EAEpCM,IAAU,EACP,IAAIN,EAAgB,UAAU,CAAC,EAAG,UAAU,CAAC,CAAE,EAEhD,IAAIA,EAAgB,UAAU,CAAC,EAAG,UAAU,CAAC,EAAG,UAAU,CAAC,CAAE,EAGrE,GAAKM,IAAU,EACdH,EAAM,IAAIpB,GAAc,CAAE,UACfuB,IAAU,EACrB,GAAKxC,GAAsB,UAAU,CAAC,CAAE,EACvCqC,EAAM,IAAIpB,GAAc,UAAU,CAAC,EAAE,CAAE,UAC5Bf,GAAc,UAAU,CAAC,CAAE,EAKtC,GAJAmC,EAAM,UAAW,CAAE,EACnBI,EAAMJ,EAAI,OAGLI,GAAOpC,GAASgC,CAAI,GAAK7B,GAAe6B,EAAI,CAAC,CAAE,GAEnD,GADAA,EAAMR,GAAW,IAAIZ,GAAcwB,EAAI,CAAE,EAAGJ,CAAI,EAC3CA,IAAQ,KAAO,CAEnB,GAAK,CAAC5B,GAAQgC,CAAI,EACjB,MAAM,IAAI,WAAYtB,EAAQ,6GAA8GsB,CAAI,CAAE,EAGnJJ,EAAM,IAAIpB,GAAc,UAAU,CAAC,CAAE,CACtC,MACM,CACN,GAAKN,GAAkB0B,CAAI,EAC1BA,EAAMd,GAAec,EAAK,CAAE,UACjBzB,GAAmByB,CAAI,EAClCA,EAAMb,GAAgBa,EAAK,CAAE,UAClB,CAAC5B,GAAQgC,CAAI,EACxB,MAAM,IAAI,WAAYtB,EAAQ,6HAA8HsB,CAAI,CAAE,EAEnKJ,EAAM,IAAIpB,GAAcoB,CAAI,CAC7B,SACWlC,GAAe,UAAU,CAAC,CAAE,EAAI,CAE3C,GADAkC,EAAM,UAAW,CAAE,EACd,CAAC3B,GAAW2B,EAAI,WAAWP,EAAkB,EACjD,MAAM,IAAI,WAAYX,EAAQ,yFAA0FW,GAAmBO,EAAI,UAAW,CAAE,EAE7JA,EAAM,IAAIpB,GAAcoB,CAAI,CAC7B,SAAYjC,GAAU,UAAU,CAAC,CAAE,EAAI,CAEtC,GADAiC,EAAM,UAAW,CAAE,EACdN,KAAwB,GAC5B,MAAM,IAAI,UAAWZ,EAAQ,mJAAoJkB,CAAI,CAAE,EAExL,GAAK,CAAC9B,GAAY8B,EAAKvB,EAAgB,CAAE,EACxC,MAAM,IAAI,UAAWK,EAAQ,qHAAsHkB,CAAI,CAAE,EAG1J,GADAA,EAAMA,EAAKvB,EAAgB,EAAE,EACxB,CAACP,GAAY8B,EAAI,IAAK,EAC1B,MAAM,IAAI,UAAWlB,EAAQ,qHAAsHkB,CAAI,CAAE,EAG1J,GADAA,EAAMV,GAAcU,CAAI,EACnBA,aAAe,MACnB,MAAMA,EAEPA,EAAM,IAAIpB,GAAcoB,CAAI,CAC7B,KACC,OAAM,IAAI,UAAWlB,EAAQ,qHAAsH,UAAU,CAAC,CAAE,CAAE,MAE7J,CAEN,GADAkB,EAAM,UAAW,CAAE,EACd,CAAClC,GAAekC,CAAI,EACxB,MAAM,IAAI,UAAWlB,EAAQ,wEAAyEkB,CAAI,CAAE,EAG7G,GADAE,EAAa,UAAW,CAAE,EACrB,CAACvC,GAAsBuC,CAAW,EACtC,MAAM,IAAI,UAAWpB,EAAQ,4EAA6EoB,CAAW,CAAE,EAExH,GAAK,CAAC7B,GAAW6B,EAAWT,EAAkB,EAC7C,MAAM,IAAI,WAAYX,EAAQ,uEAAwEW,GAAmBS,CAAW,CAAE,EAEvI,GAAKC,IAAU,EAAI,CAElB,GADAC,EAAMJ,EAAI,WAAaE,EAClB,CAAC7B,GAAW+B,EAAIX,EAAkB,EACtC,MAAM,IAAI,WAAYX,EAAQ,oGAAqGW,GAAmBW,CAAI,CAAE,EAE7JJ,EAAM,IAAIpB,GAAcoB,EAAKE,CAAW,CACzC,KAAO,CAEN,GADAE,EAAM,UAAW,CAAE,EACd,CAACzC,GAAsByC,CAAI,EAC/B,MAAM,IAAI,UAAWtB,EAAQ,uEAAwEsB,CAAI,CAAE,EAE5G,GAAMA,EAAIX,GAAsBO,EAAI,WAAWE,EAC9C,MAAM,IAAI,WAAYpB,EAAQ,iJAAkJsB,EAAIX,EAAkB,CAAE,EAEzMO,EAAM,IAAIpB,GAAcoB,EAAKE,EAAYE,EAAI,CAAE,CAChD,CACD,CACA,OAAA1B,EAAa,KAAM,UAAWsB,CAAI,EAClCtB,EAAa,KAAM,UAAWsB,EAAI,OAAO,CAAE,EAEpC,IACR,CAeAtB,EAAamB,EAAgB,oBAAqBJ,EAAkB,EAepEf,EAAamB,EAAgB,OAAQ,gBAAiB,EAmDtDnB,EAAamB,EAAgB,OAAQ,SAAeQ,EAAM,CACzD,IAAIC,EACAH,EACAI,EACAC,EACAR,EACAS,EACAC,EACAN,EACAO,EACAC,EACAC,EACAC,EACJ,GAAK,CAAC5C,GAAY,IAAK,EACtB,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAAC4B,GAA2B,IAAK,EACrC,MAAM,IAAI,UAAW,2DAA4D,EAGlF,GADAK,EAAQ,UAAU,OACbA,EAAQ,EAAI,CAEhB,GADAI,EAAO,UAAW,CAAE,EACf,CAACrC,GAAYqC,CAAK,EACtB,MAAM,IAAI,UAAWzB,EAAQ,qEAAsEyB,CAAK,CAAE,EAEtGJ,EAAQ,IACZG,EAAU,UAAW,CAAE,EAEzB,CACA,GAAKX,EAAgBU,CAAI,EAAI,CAE5B,GADAD,EAAMC,EAAI,OACLE,EAAO,CAIX,IAHAC,EAAM,IAAI,KAAMJ,CAAI,EACpBJ,EAAMQ,EAAI,QACVM,EAAI,EACED,EAAI,EAAGA,EAAIT,EAAKS,IAAM,CAE3B,GADAD,EAAIL,EAAK,KAAMD,EAASD,EAAI,IAAKQ,CAAE,EAAGA,CAAE,EACnC1C,GAAeyC,CAAE,EACrBZ,EAAKc,CAAE,EAAI/B,GAAO6B,CAAE,EACpBZ,EAAKc,EAAE,CAAE,EAAI9B,GAAO4B,CAAE,UACXhD,GAAmBgD,CAAE,GAAKA,EAAE,QAAU,EACjDZ,EAAKc,CAAE,EAAIF,EAAG,CAAE,EAChBZ,EAAKc,EAAE,CAAE,EAAIF,EAAG,CAAE,MAElB,OAAM,IAAI,UAAW9B,EAAQ,+IAAgJ8B,CAAE,CAAE,EAElLE,GAAK,CACN,CACA,OAAON,CACR,CACA,OAAO,IAAI,KAAMH,CAAI,CACtB,CACA,GAAKxC,GAAcwC,CAAI,EAAI,CAC1B,GAAKE,EAAO,CAUX,IAPAH,EAAMC,EAAI,OACLA,EAAI,KAAOA,EAAI,IACnBK,EAAMrB,GAAgB,SAAU,EAEhCqB,EAAMtB,GAAQ,SAAU,EAGnByB,EAAI,EAAGA,EAAIT,EAAKS,IACrB,GAAK,CAAC1C,GAAeuC,EAAKL,EAAKQ,CAAE,CAAE,EAAI,CACtCF,EAAM,GACN,KACD,CAGD,GAAKA,EAAM,CACV,GAAK,CAACvC,GAAQgC,CAAI,EACjB,MAAM,IAAI,WAAYtB,EAAQ,+FAAgG,EAAGsB,CAAI,CAAE,EAIxI,IAFAI,EAAM,IAAI,KAAMJ,EAAI,CAAE,EACtBJ,EAAMQ,EAAI,QACJK,EAAI,EAAGA,EAAIT,EAAKS,IACrBb,EAAKa,CAAE,EAAIN,EAAK,KAAMD,EAASI,EAAKL,EAAKQ,CAAE,EAAGA,CAAE,EAEjD,OAAOL,CACR,CAKA,IAHAA,EAAM,IAAI,KAAMJ,CAAI,EACpBJ,EAAMQ,EAAI,QACVM,EAAI,EACED,EAAI,EAAGA,EAAIT,EAAKS,IAAM,CAE3B,GADAD,EAAIL,EAAK,KAAMD,EAASI,EAAKL,EAAKQ,CAAE,EAAGA,CAAE,EACpC1C,GAAeyC,CAAE,EACrBZ,EAAKc,CAAE,EAAI/B,GAAO6B,CAAE,EACpBZ,EAAKc,EAAE,CAAE,EAAI9B,GAAO4B,CAAE,UACXhD,GAAmBgD,CAAE,GAAKA,EAAE,QAAU,EACjDZ,EAAKc,CAAE,EAAIF,EAAG,CAAE,EAChBZ,EAAKc,EAAE,CAAE,EAAIF,EAAG,CAAE,MAElB,OAAM,IAAI,UAAW9B,EAAQ,+IAAgJ8B,CAAE,CAAE,EAElLE,GAAK,CACN,CACA,OAAON,CACR,CACA,OAAO,IAAI,KAAMH,CAAI,CACtB,CACA,GAAKtC,GAAUsC,CAAI,GAAKX,IAAuBxB,GAAYmC,EAAK5B,EAAgB,CAAE,EAAI,CAErF,GADAuB,EAAMK,EAAK5B,EAAgB,EAAE,EACxB,CAACP,GAAY8B,EAAI,IAAK,EAC1B,MAAM,IAAI,UAAWlB,EAAQ,6FAA8FuB,CAAI,CAAE,EAOlI,GALKE,EACJE,EAAMlB,GAAiBS,EAAKO,EAAMD,CAAQ,EAE1CG,EAAMnB,GAAcU,CAAI,EAEpBS,aAAe,MACnB,MAAMA,EAKP,IAHAL,EAAMK,EAAI,OAAS,EACnBD,EAAM,IAAI,KAAMJ,CAAI,EACpBJ,EAAMQ,EAAI,QACJK,EAAI,EAAGA,EAAIT,EAAKS,IACrBb,EAAKa,CAAE,EAAIJ,EAAKI,CAAE,EAEnB,OAAOL,CACR,CACA,MAAM,IAAI,UAAW1B,EAAQ,6FAA8FuB,CAAI,CAAE,CAClI,CAAC,EAoBD3B,EAAamB,EAAgB,KAAM,UAAc,CAChD,IAAIkB,EACAF,EACJ,GAAK,CAAC3C,GAAY,IAAK,EACtB,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAAC4B,GAA2B,IAAK,EACrC,MAAM,IAAI,UAAW,2DAA4D,EAGlF,IADAiB,EAAO,CAAC,EACFF,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAClCE,EAAK,KAAM,UAAWF,CAAE,CAAE,EAE3B,OAAO,IAAI,KAAME,CAAK,CACvB,CAAC,EAuDDrC,EAAamB,EAAe,UAAW,KAAM,SAAaI,EAAM,CAC/D,GAAK,CAACN,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACtB,GAAW4B,CAAI,EACpB,MAAM,IAAI,UAAWnB,EAAQ,0DAA2DmB,CAAI,CAAE,EAK/F,GAHKA,EAAM,IACVA,GAAO,KAAK,SAER,EAAAA,EAAM,GAAKA,GAAO,KAAK,SAG5B,OAAOF,GAAc,KAAK,QAASE,CAAI,CACxC,CAAC,EAgBDtB,GAAqBkB,EAAe,UAAW,SAAU,UAAe,CACvE,OAAO,KAAK,QAAQ,MACrB,CAAC,EAgBDlB,GAAqBkB,EAAe,UAAW,aAAc,UAAe,CAC3E,OAAO,KAAK,QAAQ,UACrB,CAAC,EAgBDlB,GAAqBkB,EAAe,UAAW,aAAc,UAAe,CAC3E,OAAO,KAAK,QAAQ,UACrB,CAAC,EAiBDnB,EAAamB,EAAe,UAAW,oBAAqBA,EAAe,iBAAkB,EAuC7FnB,EAAamB,EAAe,UAAW,aAAc,SAAqBmB,EAAQC,EAAQ,CACzF,GAAK,CAACtB,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAGlF,OAAK,UAAU,SAAW,EACzB,KAAK,QAAQ,WAAYqB,EAAO,EAAGC,EAAM,CAAE,EAE3C,KAAK,QAAQ,WAAYD,EAAO,EAAGC,EAAM,EAAG,UAAU,CAAC,EAAE,CAAE,EAErD,IACR,CAAC,EAqCDvC,EAAamB,EAAe,UAAW,UAAW,UAAmB,CACpE,IAAIqB,EACAC,EACAC,EACAhB,EACAiB,EACAR,EACAC,EACJ,GAAK,CAACnB,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,OAAAwB,EAAO,KACPD,EAAS,KAAK,QACdd,EAAM,KAAK,QAGXS,EAAI,GACJC,EAAI,GAGJM,EAAO,CAAC,EACR1C,EAAa0C,EAAM,OAAQE,CAAK,EAChC5C,EAAa0C,EAAM,SAAUG,CAAI,EAE5B9C,IACJC,EAAa0C,EAAM3C,GAAiB+C,CAAQ,EAEtCJ,EAQP,SAASE,GAAO,CACf,IAAIG,EAEJ,OADAZ,GAAK,EACAQ,GAAOR,GAAKT,EACT,CACN,KAAQ,EACT,GAEDU,GAAK,EACLW,EAAI,IAAI5C,GAAWqC,EAAQJ,CAAE,EAAGI,EAAQJ,EAAE,CAAE,CAAE,EACvC,CACN,MAAS,CAAED,EAAGY,CAAE,EAChB,KAAQ,EACT,EACD,CASA,SAASF,EAAK3B,EAAQ,CAErB,OADAyB,EAAM,GACD,UAAU,OACP,CACN,MAASzB,EACT,KAAQ,EACT,EAEM,CACN,KAAQ,EACT,CACD,CAQA,SAAS4B,GAAU,CAClB,OAAOL,EAAK,QAAQ,CACrB,CACD,CAAC,EA+BDzC,EAAamB,EAAe,UAAW,QAAS,SAAgB6B,EAAWpB,EAAU,CACpF,IAAIN,EACAa,EACJ,GAAK,CAAClB,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACzB,GAAYwD,CAAU,EAC3B,MAAM,IAAI,UAAW5C,EAAQ,oEAAqE4C,CAAU,CAAE,EAG/G,IADA1B,EAAM,KAAK,QACLa,EAAI,EAAGA,EAAI,KAAK,QAASA,IAC9B,GAAK,CAACa,EAAU,KAAMpB,EAASP,GAAcC,EAAKa,CAAE,EAAGA,EAAG,IAAK,EAC9D,MAAO,GAGT,MAAO,EACR,CAAC,EA0CDnC,EAAamB,EAAe,UAAW,OAAQ,SAAeD,EAAOqB,EAAOM,EAAM,CACjF,IAAIvB,EACAI,EACAH,EACA0B,EACAC,EACAf,EACJ,GAAK,CAAClB,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACxB,GAAeyB,CAAM,EAC1B,MAAM,IAAI,UAAWd,EAAQ,0EAA2Ec,CAAM,CAAE,EAIjH,GAFAI,EAAM,KAAK,QACXI,EAAM,KAAK,QACN,UAAU,OAAS,EAAI,CAC3B,GAAK,CAAC/B,GAAW4C,CAAM,EACtB,MAAM,IAAI,UAAWnC,EAAQ,qEAAsEmC,CAAM,CAAE,EAQ5G,GANKA,EAAQ,IACZA,GAASb,EACJa,EAAQ,IACZA,EAAQ,IAGL,UAAU,OAAS,EAAI,CAC3B,GAAK,CAAC5C,GAAWkD,CAAI,EACpB,MAAM,IAAI,UAAWzC,EAAQ,oEAAqEyC,CAAI,CAAE,EAEpGA,EAAM,IACVA,GAAOnB,EACFmB,EAAM,IACVA,EAAM,IAGHA,EAAMnB,IACVmB,EAAMnB,EAER,MACCmB,EAAMnB,CAER,MACCa,EAAQ,EACRM,EAAMnB,EAIP,IAFAuB,EAAK5C,GAAOa,CAAM,EAClBgC,EAAK5C,GAAOY,CAAM,EACZiB,EAAII,EAAOJ,EAAIU,EAAKV,IACzBZ,EAAM,EAAEY,EACRb,EAAKC,CAAI,EAAI0B,EACb3B,EAAKC,EAAI,CAAE,EAAI2B,EAEhB,OAAO,IACR,CAAC,EA2CDlD,EAAamB,EAAe,UAAW,SAAU,SAAiB6B,EAAWpB,EAAU,CACtF,IAAIN,EACAQ,EACAK,EACAY,EACJ,GAAK,CAAC9B,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACzB,GAAYwD,CAAU,EAC3B,MAAM,IAAI,UAAW5C,EAAQ,oEAAqE4C,CAAU,CAAE,EAI/G,IAFA1B,EAAM,KAAK,QACXQ,EAAM,CAAC,EACDK,EAAI,EAAGA,EAAI,KAAK,QAASA,IAC9BY,EAAI1B,GAAcC,EAAKa,CAAE,EACpBa,EAAU,KAAMpB,EAASmB,EAAGZ,EAAG,IAAK,GACxCL,EAAI,KAAMiB,CAAE,EAGd,OAAO,IAAI,KAAK,YAAajB,CAAI,CAClC,CAAC,EAsCD9B,EAAamB,EAAe,UAAW,OAAQ,SAAe6B,EAAWpB,EAAU,CAClF,IAAIN,EACAa,EACAY,EACJ,GAAK,CAAC9B,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACzB,GAAYwD,CAAU,EAC3B,MAAM,IAAI,UAAW5C,EAAQ,oEAAqE4C,CAAU,CAAE,EAG/G,IADA1B,EAAM,KAAK,QACLa,EAAI,EAAGA,EAAI,KAAK,QAASA,IAE9B,GADAY,EAAI1B,GAAcC,EAAKa,CAAE,EACpBa,EAAU,KAAMpB,EAASmB,EAAGZ,EAAG,IAAK,EACxC,OAAOY,CAGV,CAAC,EAgCD/C,EAAamB,EAAe,UAAW,YAAa,SAAoB6B,EAAWpB,EAAU,CAC5F,IAAIN,EACAa,EACAY,EACJ,GAAK,CAAC9B,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACzB,GAAYwD,CAAU,EAC3B,MAAM,IAAI,UAAW5C,EAAQ,oEAAqE4C,CAAU,CAAE,EAG/G,IADA1B,EAAM,KAAK,QACLa,EAAI,EAAGA,EAAI,KAAK,QAASA,IAE9B,GADAY,EAAI1B,GAAcC,EAAKa,CAAE,EACpBa,EAAU,KAAMpB,EAASmB,EAAGZ,EAAG,IAAK,EACxC,OAAOA,EAGT,MAAO,EACR,CAAC,EAsCDnC,EAAamB,EAAe,UAAW,WAAY,SAAmB6B,EAAWpB,EAAU,CAC1F,IAAIN,EACAa,EACAY,EACJ,GAAK,CAAC9B,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACzB,GAAYwD,CAAU,EAC3B,MAAM,IAAI,UAAW5C,EAAQ,oEAAqE4C,CAAU,CAAE,EAG/G,IADA1B,EAAM,KAAK,QACLa,EAAI,KAAK,QAAQ,EAAGA,GAAK,EAAGA,IAEjC,GADAY,EAAI1B,GAAcC,EAAKa,CAAE,EACpBa,EAAU,KAAMpB,EAASmB,EAAGZ,EAAG,IAAK,EACxC,OAAOY,CAGV,CAAC,EAgCD/C,EAAamB,EAAe,UAAW,gBAAiB,SAAwB6B,EAAWpB,EAAU,CACpG,IAAIN,EACAa,EACAY,EACJ,GAAK,CAAC9B,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACzB,GAAYwD,CAAU,EAC3B,MAAM,IAAI,UAAW5C,EAAQ,oEAAqE4C,CAAU,CAAE,EAG/G,IADA1B,EAAM,KAAK,QACLa,EAAI,KAAK,QAAQ,EAAGA,GAAK,EAAGA,IAEjC,GADAY,EAAI1B,GAAcC,EAAKa,CAAE,EACpBa,EAAU,KAAMpB,EAASmB,EAAGZ,EAAG,IAAK,EACxC,OAAOA,EAGT,MAAO,EACR,CAAC,EA4BDnC,EAAamB,EAAe,UAAW,UAAW,SAAkBgC,EAAKvB,EAAU,CAClF,IAAIN,EACAa,EACAY,EACJ,GAAK,CAAC9B,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACzB,GAAY2D,CAAI,EACrB,MAAM,IAAI,UAAW/C,EAAQ,oEAAqE+C,CAAI,CAAE,EAGzG,IADA7B,EAAM,KAAK,QACLa,EAAI,EAAGA,EAAI,KAAK,QAASA,IAC9BY,EAAI1B,GAAcC,EAAKa,CAAE,EACzBgB,EAAI,KAAMvB,EAASmB,EAAGZ,EAAG,IAAK,CAEhC,CAAC,EAyCDnC,EAAamB,EAAe,UAAW,MAAO,SAAcI,EAAM,CACjE,GAAK,CAACN,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAAChC,GAAsBsC,CAAI,EAC/B,MAAM,IAAI,UAAWnB,EAAQ,qEAAsEmB,CAAI,CAAE,EAE1G,GAAK,EAAAA,GAAO,KAAK,SAGjB,OAAOF,GAAc,KAAK,QAASE,CAAI,CACxC,CAAC,EAmCDvB,EAAamB,EAAe,UAAW,WAAY,SAAmBiC,EAAeC,EAAY,CAChG,IAAI/B,EACAC,EACA0B,EACAC,EACAf,EACJ,GAAK,CAAClB,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACxB,GAAe2D,CAAc,EAClC,MAAM,IAAI,UAAWhD,EAAQ,0EAA2EgD,CAAc,CAAE,EAEzH,GAAK,UAAU,OAAS,EAAI,CAC3B,GAAK,CAACzD,GAAW0D,CAAU,EAC1B,MAAM,IAAI,UAAWjD,EAAQ,qEAAsEiD,CAAU,CAAE,EAE3GA,EAAY,IAChBA,GAAa,KAAK,QACbA,EAAY,IAChBA,EAAY,GAGf,MACCA,EAAY,EAKb,IAHAJ,EAAK5C,GAAO+C,CAAc,EAC1BF,EAAK5C,GAAO8C,CAAc,EAC1B9B,EAAM,KAAK,QACLa,EAAIkB,EAAWlB,EAAI,KAAK,QAASA,IAEtC,GADAZ,EAAM,EAAIY,EACLc,IAAO3B,EAAKC,CAAI,GAAK2B,IAAO5B,EAAKC,EAAI,CAAE,EAC3C,MAAO,GAGT,MAAO,EACR,CAAC,EAmCDvB,EAAamB,EAAe,UAAW,UAAW,SAAkBiC,EAAeC,EAAY,CAC9F,IAAI/B,EACAC,EACA0B,EACAC,EACAf,EACJ,GAAK,CAAClB,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACxB,GAAe2D,CAAc,EAClC,MAAM,IAAI,UAAWhD,EAAQ,0EAA2EgD,CAAc,CAAE,EAEzH,GAAK,UAAU,OAAS,EAAI,CAC3B,GAAK,CAACzD,GAAW0D,CAAU,EAC1B,MAAM,IAAI,UAAWjD,EAAQ,qEAAsEiD,CAAU,CAAE,EAE3GA,EAAY,IAChBA,GAAa,KAAK,QACbA,EAAY,IAChBA,EAAY,GAGf,MACCA,EAAY,EAKb,IAHAJ,EAAK5C,GAAO+C,CAAc,EAC1BF,EAAK5C,GAAO8C,CAAc,EAC1B9B,EAAM,KAAK,QACLa,EAAIkB,EAAWlB,EAAI,KAAK,QAASA,IAEtC,GADAZ,EAAM,EAAIY,EACLc,IAAO3B,EAAKC,CAAI,GAAK2B,IAAO5B,EAAKC,EAAI,CAAE,EAC3C,OAAOY,EAGT,MAAO,EACR,CAAC,EAyBDnC,EAAamB,EAAe,UAAW,OAAQ,SAAemC,EAAY,CACzE,IAAIxB,EACAR,EACAiC,EACApB,EACJ,GAAK,CAAClB,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,UAAU,SAAW,EACzBsC,EAAM,YACKhE,GAAU+D,CAAU,EAC/BC,EAAMD,MAEN,OAAM,IAAI,UAAWlD,EAAQ,kEAAmEkD,CAAU,CAAE,EAI7G,IAFAxB,EAAM,CAAC,EACPR,EAAM,KAAK,QACLa,EAAI,EAAGA,EAAI,KAAK,QAASA,IAC9BL,EAAI,KAAMT,GAAcC,EAAKa,CAAE,EAAE,SAAS,CAAE,EAE7C,OAAOL,EAAI,KAAMyB,CAAI,CACtB,CAAC,EAsCDvD,EAAamB,EAAe,UAAW,cAAe,SAAsBiC,EAAeC,EAAY,CACtG,IAAI/B,EACAC,EACA0B,EACAC,EACAf,EACJ,GAAK,CAAClB,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACxB,GAAe2D,CAAc,EAClC,MAAM,IAAI,UAAWhD,EAAQ,0EAA2EgD,CAAc,CAAE,EAEzH,GAAK,UAAU,OAAS,EAAI,CAC3B,GAAK,CAACzD,GAAW0D,CAAU,EAC1B,MAAM,IAAI,UAAWjD,EAAQ,qEAAsEiD,CAAU,CAAE,EAE3GA,GAAa,KAAK,QACtBA,EAAY,KAAK,QAAU,EAChBA,EAAY,IACvBA,GAAa,KAAK,QAEpB,MACCA,EAAY,KAAK,QAAU,EAK5B,IAHAJ,EAAK5C,GAAO+C,CAAc,EAC1BF,EAAK5C,GAAO8C,CAAc,EAC1B9B,EAAM,KAAK,QACLa,EAAIkB,EAAWlB,GAAK,EAAGA,IAE5B,GADAZ,EAAM,EAAIY,EACLc,IAAO3B,EAAKC,CAAI,GAAK2B,IAAO5B,EAAKC,EAAI,CAAE,EAC3C,OAAOY,EAGT,MAAO,EACR,CAAC,EAgBDlC,GAAqBkB,EAAe,UAAW,SAAU,UAAe,CACvE,OAAO,KAAK,OACb,CAAC,EAyCDnB,EAAamB,EAAe,UAAW,MAAO,SAAcgC,EAAKvB,EAAU,CAC1E,IAAI4B,EACAlC,EACAQ,EACAK,EACAD,EACJ,GAAK,CAACjB,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACzB,GAAY2D,CAAI,EACrB,MAAM,IAAI,UAAW/C,EAAQ,oEAAqE+C,CAAI,CAAE,EAKzG,IAHA7B,EAAM,KAAK,QACXQ,EAAM,IAAI,KAAK,YAAa,KAAK,OAAQ,EACzC0B,EAAS1B,EAAI,QACPK,EAAI,EAAGA,EAAI,KAAK,QAASA,IAE9B,GADAD,EAAIiB,EAAI,KAAMvB,EAASP,GAAcC,EAAKa,CAAE,EAAGA,EAAG,IAAK,EAClD1C,GAAeyC,CAAE,EACrBsB,EAAQ,EAAErB,CAAE,EAAI9B,GAAO6B,CAAE,EACzBsB,EAAS,EAAErB,EAAG,CAAE,EAAI7B,GAAO4B,CAAE,UAClBhD,GAAmBgD,CAAE,GAAKA,EAAE,SAAW,EAClDsB,EAAQ,EAAErB,CAAE,EAAID,EAAG,CAAE,EACrBsB,EAAS,EAAErB,EAAG,CAAE,EAAID,EAAG,CAAE,MAEzB,OAAM,IAAI,UAAW9B,EAAQ,+IAAgJ8B,CAAE,CAAE,EAGnL,OAAOJ,CACR,CAAC,EAmDD9B,EAAamB,EAAe,UAAW,UAAW,UAAmB,CACpE,IAAIG,EACAS,EACAL,EACA+B,EACAtB,EACAC,EACJ,GAAK,CAACnB,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAKlF,IAHAS,EAAM,KAAK,QACXJ,EAAM,KAAK,QACXmC,EAAIlD,GAAOmB,EAAM,CAAE,EACbS,EAAI,EAAGA,EAAIsB,EAAGtB,IACnBC,EAAIV,EAAMS,EAAI,EACdJ,EAAMT,EAAM,EAAEa,CAAG,EACjBb,EAAM,EAAEa,CAAG,EAAIb,EAAM,EAAEc,CAAG,EAC1Bd,EAAM,EAAEc,CAAG,EAAIL,EACfA,EAAMT,EAAM,EAAEa,EAAG,CAAE,EACnBb,EAAM,EAAEa,EAAG,CAAE,EAAIb,EAAM,EAAEc,EAAG,CAAE,EAC9Bd,EAAM,EAAEc,EAAG,CAAE,EAAIL,EAElB,OAAO,IACR,CAAC,EAgED/B,EAAamB,EAAe,UAAW,MAAO,SAAcD,EAAQ,CAEnE,IAAIwC,EACAnC,EACAD,EACAS,EACAE,EACAwB,EACAvB,EACAC,EACAC,EACJ,GAAK,CAACnB,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAGlF,GADAK,EAAM,KAAK,QACN,UAAU,OAAS,GAEvB,GADAC,EAAM,UAAW,CAAE,EACd,CAACtC,GAAsBsC,CAAI,EAC/B,MAAM,IAAI,UAAWnB,EAAQ,+EAAgFmB,CAAI,CAAE,OAGpHA,EAAM,EAEP,GAAK9B,GAAeyB,CAAM,EAAI,CAC7B,GAAKK,GAAO,KAAK,QAChB,MAAM,IAAI,WAAYnB,EAAQ,kEAAmEmB,CAAI,CAAE,EAExGA,GAAO,EACPD,EAAKC,CAAI,EAAIlB,GAAOa,CAAM,EAC1BI,EAAKC,EAAI,CAAE,EAAIjB,GAAOY,CAAM,EAC5B,MACD,CACA,GAAKD,EAAgBC,CAAM,EAAI,CAE9B,GADAuC,EAAIvC,EAAM,QACLK,EAAIkC,EAAI,KAAK,QACjB,MAAM,IAAI,WAAY,wFAAyF,EAMhH,GAJAC,EAAOxC,EAAM,QAGbkB,EAAId,EAAI,WAAcC,EAAIR,GAEzB2C,EAAK,SAAWpC,EAAI,QAEnBoC,EAAK,WAAatB,GAClBsB,EAAK,WAAWA,EAAK,WAAatB,EAElC,CAGD,IADAL,EAAM,IAAI7B,GAAcwD,EAAK,MAAO,EAC9BvB,EAAI,EAAGA,EAAIuB,EAAK,OAAQvB,IAC7BJ,EAAKI,CAAE,EAAIuB,EAAMvB,CAAE,EAEpBuB,EAAO3B,CACR,CAGA,IAFAR,GAAO,EACPa,EAAI,EACED,EAAI,EAAGA,EAAIsB,EAAGtB,IACnBb,EAAKC,CAAI,EAAImC,EAAMtB,CAAE,EACrBd,EAAKC,EAAI,CAAE,EAAImC,EAAMtB,EAAE,CAAE,EACzBb,GAAO,EACPa,GAAK,EAEN,MACD,CACA,GAAKjD,GAAc+B,CAAM,EAAI,CAG5B,IADAuC,EAAIvC,EAAM,OACJiB,EAAI,EAAGA,EAAIsB,EAAGtB,IACnB,GAAK,CAAC1C,GAAeyB,EAAOiB,CAAE,CAAE,EAAI,CACnCF,EAAM,GACN,KACD,CAGD,GAAKA,EAAM,CACV,GAAK,CAACvC,GAAQ+D,CAAE,EACf,MAAM,IAAI,WAAYrD,EAAQ,6GAA8GqD,CAAE,CAAE,EAEjJ,GAAKlC,EAAKkC,EAAE,EAAK,KAAK,QACrB,MAAM,IAAI,WAAY,wFAAyF,EAMhH,GAJAC,EAAOxC,EAGPkB,EAAId,EAAI,WAAcC,EAAIR,GAEzB2C,EAAK,SAAWpC,EAAI,QAEnBoC,EAAK,WAAatB,GAClBsB,EAAK,WAAWA,EAAK,WAAatB,EAElC,CAGD,IADAL,EAAM,IAAI7B,GAAcuD,CAAE,EACpBtB,EAAI,EAAGA,EAAIsB,EAAGtB,IACnBJ,EAAKI,CAAE,EAAIuB,EAAMvB,CAAE,EAEpBuB,EAAO3B,CACR,CAIA,IAHAR,GAAO,EACPkC,GAAK,EACLrB,EAAI,EACED,EAAI,EAAGA,EAAIsB,EAAGtB,IACnBb,EAAKC,CAAI,EAAImC,EAAMtB,CAAE,EACrBd,EAAKC,EAAI,CAAE,EAAImC,EAAMtB,EAAE,CAAE,EACzBb,GAAO,EACPa,GAAK,EAEN,MACD,CAEA,GAAKb,EAAIkC,EAAI,KAAK,QACjB,MAAM,IAAI,WAAY,wFAAyF,EAGhH,IADAlC,GAAO,EACDY,EAAI,EAAGA,EAAIsB,EAAGtB,IACnBD,EAAIhB,EAAOiB,CAAE,EACbb,EAAKC,CAAI,EAAIlB,GAAO6B,CAAE,EACtBZ,EAAKC,EAAI,CAAE,EAAIjB,GAAO4B,CAAE,EACxBX,GAAO,EAER,MACD,CACA,MAAM,IAAI,UAAWnB,EAAQ,kIAAmIc,CAAM,CAAE,CAGzK,CAAC,EA2EDlB,EAAamB,EAAe,UAAW,QAAS,SAAgBoB,EAAOM,EAAM,CAC5E,IAAIc,EACAH,EACA1B,EACAP,EACAD,EACAI,EACAS,EACJ,GAAK,CAAClB,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAIlF,GAFAK,EAAM,KAAK,QACXI,EAAM,KAAK,QACN,UAAU,SAAW,EACzBa,EAAQ,EACRM,EAAMnB,MACA,CACN,GAAK,CAAC/B,GAAW4C,CAAM,EACtB,MAAM,IAAI,UAAWnC,EAAQ,oEAAqEmC,CAAM,CAAE,EAQ3G,GANKA,EAAQ,IACZA,GAASb,EACJa,EAAQ,IACZA,EAAQ,IAGL,UAAU,SAAW,EACzBM,EAAMnB,MACA,CACN,GAAK,CAAC/B,GAAWkD,CAAI,EACpB,MAAM,IAAI,UAAWzC,EAAQ,qEAAsEyC,CAAI,CAAE,EAErGA,EAAM,GACVA,GAAOnB,EACFmB,EAAM,IACVA,EAAM,IAEIA,EAAMnB,IACjBmB,EAAMnB,EAER,CACD,CAQA,IAPKa,EAAQM,EACZc,EAASd,EAAMN,EAEfoB,EAAS,EAEV7B,EAAM,IAAI,KAAK,YAAa6B,CAAO,EACnCH,EAAS1B,EAAI,QACPK,EAAI,EAAGA,EAAIwB,EAAQxB,IACxBZ,EAAM,GAAGY,EAAEI,GACXiB,EAAQ,EAAErB,CAAE,EAAIb,EAAKC,CAAI,EACzBiC,EAAS,EAAErB,EAAG,CAAE,EAAIb,EAAKC,EAAI,CAAE,EAEhC,OAAOO,CACR,CAAC,EA+BD9B,EAAamB,EAAe,UAAW,OAAQ,SAAe6B,EAAWpB,EAAU,CAClF,IAAIN,EACAa,EACJ,GAAK,CAAClB,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACzB,GAAYwD,CAAU,EAC3B,MAAM,IAAI,UAAW5C,EAAQ,oEAAqE4C,CAAU,CAAE,EAG/G,IADA1B,EAAM,KAAK,QACLa,EAAI,EAAGA,EAAI,KAAK,QAASA,IAC9B,GAAKa,EAAU,KAAMpB,EAASP,GAAcC,EAAKa,CAAE,EAAGA,EAAG,IAAK,EAC7D,MAAO,GAGT,MAAO,EACR,CAAC,EA2EDnC,EAAamB,EAAe,UAAW,WAAY,SAAmByC,EAAOf,EAAM,CAClF,IAAIgB,EACAvC,EACAI,EACJ,GAAK,CAACT,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAIlF,GAFAK,EAAM,KAAK,QACXI,EAAM,KAAK,QACN,UAAU,SAAW,EACzBkC,EAAQ,EACRf,EAAMnB,MACA,CACN,GAAK,CAAC/B,GAAWiE,CAAM,EACtB,MAAM,IAAI,UAAWxD,EAAQ,oEAAqEwD,CAAM,CAAE,EAQ3G,GANKA,EAAQ,IACZA,GAASlC,EACJkC,EAAQ,IACZA,EAAQ,IAGL,UAAU,SAAW,EACzBf,EAAMnB,MACA,CACN,GAAK,CAAC/B,GAAWkD,CAAI,EACpB,MAAM,IAAI,UAAWzC,EAAQ,qEAAsEyC,CAAI,CAAE,EAErGA,EAAM,GACVA,GAAOnB,EACFmB,EAAM,IACVA,EAAM,IAEIA,EAAMnB,IACjBmB,EAAMnB,EAER,CACD,CACA,OAAKkC,GAASlC,GACbA,EAAM,EACNmC,EAASvC,EAAI,YACFsC,GAASf,GACpBnB,EAAM,EACNmC,EAASvC,EAAI,WAAcsC,EAAM7C,KAEjCW,EAAMmB,EAAMe,EACZC,EAASvC,EAAI,WAAesC,EAAM7C,IAE5B,IAAI,KAAK,YAAaO,EAAI,OAAQuC,EAAUnC,EAAM,EAAM,EAAIA,CAAI,CACxE,CAAC,EAmDD1B,EAAamB,EAAe,UAAW,aAAc,UAAsB,CAC1E,IAAIqC,EACA1B,EACAJ,EACAJ,EACAa,EACAC,EACJ,GAAK,CAACnB,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAMlF,IAJAS,EAAM,KAAK,QACXI,EAAM,IAAI,KAAK,YAAaJ,CAAI,EAChCJ,EAAM,KAAK,QACXkC,EAAS1B,EAAI,QACPK,EAAI,EAAGA,EAAIT,EAAKS,IACrBC,EAAIV,EAAMS,EAAI,EACdqB,EAAS,EAAErB,CAAG,EAAIb,EAAM,EAAEc,CAAG,EAC7BoB,EAAS,EAAErB,EAAG,CAAE,EAAIb,EAAM,EAAEc,EAAG,CAAE,EAElC,OAAON,CACR,CAAC,EAoBD9B,EAAamB,EAAe,UAAW,WAAY,UAAoB,CACtE,IAAIW,EACAR,EACA,EACJ,GAAK,CAACL,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAIlF,IAFAa,EAAM,CAAC,EACPR,EAAM,KAAK,QACL,EAAI,EAAG,EAAI,KAAK,QAAS,IAC9BQ,EAAI,KAAMT,GAAcC,EAAK,CAAE,EAAE,SAAS,CAAE,EAE7C,OAAOQ,EAAI,KAAM,GAAI,CACtB,CAAC,EAuCD9B,EAAamB,EAAe,UAAW,OAAQ,SAAmB2C,EAAO5C,EAAQ,CAChF,IAAII,EACAQ,EACAJ,EACJ,GAAK,CAACT,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACtB,GAAWmE,CAAM,EACtB,MAAM,IAAI,UAAW1D,EAAQ,oEAAqE0D,CAAM,CAAE,EAM3G,GAJApC,EAAM,KAAK,QACNoC,EAAQ,IACZA,GAASpC,GAELoC,EAAQ,GAAKA,GAASpC,EAC1B,MAAM,IAAI,WAAYtB,EAAQ,kEAAmE0D,CAAM,CAAE,EAE1G,GAAK,CAACrE,GAAeyB,CAAM,EAC1B,MAAM,IAAI,UAAWd,EAAQ,2EAA4Ec,CAAM,CAAE,EAElH,OAAAY,EAAM,IAAI,KAAK,YAAa,KAAK,OAAQ,EACzCR,EAAMQ,EAAI,QACVR,EAAK,EAAEwC,CAAM,EAAIzD,GAAOa,CAAM,EAC9BI,EAAM,EAAEwC,EAAO,CAAE,EAAIxD,GAAOY,CAAM,EAC3BY,CACR,CAAC,EAKD9C,GAAO,QAAUmC,ICt4EjB,IAAA4C,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwFA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7FjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAoB,QAAS,qCAAsC,EACnEC,GAAgB,QAAS,gCAAiC,EAC1DC,GAAS,QAAS,uBAAwB,EAC1CC,GAAO,QAAS,sBAAuB,EACvCC,GAAO,QAAS,sBAAuB,EAY3C,SAASC,GAAcC,EAAK,CAC3B,IAAIC,EACAC,EACAC,EAGJ,IADAF,EAAM,CAAC,EAENC,EAAIF,EAAG,KAAK,EACP,CAAAE,EAAE,MAIP,GADAC,EAAID,EAAE,MACDR,GAAmBS,CAAE,GAAKA,EAAE,QAAU,EAC1CF,EAAI,KAAME,EAAG,CAAE,EAAGA,EAAG,CAAE,CAAE,UACdR,GAAeQ,CAAE,EAC5BF,EAAI,KAAMJ,GAAMM,CAAE,EAAGL,GAAMK,CAAE,CAAE,MAE/B,QAAO,IAAI,UAAWP,GAAQ,kJAAmJO,CAAE,CAAE,EAGvL,OAAOF,CACR,CAKAR,GAAO,QAAUM,KChEjB,IAAAK,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAoB,QAAS,qCAAsC,EACnEC,GAAgB,QAAS,gCAAiC,EAC1DC,GAAS,QAAS,uBAAwB,EAC1CC,GAAO,QAAS,sBAAuB,EACvCC,GAAO,QAAS,sBAAuB,EAc3C,SAASC,GAAiBC,EAAIC,EAAMC,EAAU,CAC7C,IAAIC,EACAC,EACAC,EACAC,EAIJ,IAFAH,EAAM,CAAC,EACPG,EAAI,GAEHF,EAAIJ,EAAG,KAAK,EACP,CAAAI,EAAE,MAKP,GAFAE,GAAK,EACLD,EAAIJ,EAAK,KAAMC,EAASE,EAAE,MAAOE,CAAE,EAC9BZ,GAAmBW,CAAE,GAAKA,EAAE,QAAU,EAC1CF,EAAI,KAAME,EAAG,CAAE,EAAGA,EAAG,CAAE,CAAE,UACdV,GAAeU,CAAE,EAC5BF,EAAI,KAAMN,GAAMQ,CAAE,EAAGP,GAAMO,CAAE,CAAE,MAE/B,QAAO,IAAI,UAAWT,GAAQ,+IAAgJS,CAAE,CAAE,EAGpL,OAAOF,CACR,CAKAV,GAAO,QAAUM,KCrEjB,IAAAQ,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAgB,QAAS,gCAAiC,EAC1DC,GAAO,QAAS,sBAAuB,EACvCC,GAAO,QAAS,sBAAuB,EAa3C,SAASC,GAAWC,EAAKC,EAAM,CAC9B,IAAIC,EACAC,EACAC,EACAC,EAIJ,IAFAH,EAAMD,EAAI,OACVI,EAAI,EACED,EAAI,EAAGA,EAAIF,EAAKE,IAAM,CAE3B,GADAD,EAAIF,EAAKG,CAAE,EACN,CAACR,GAAeO,CAAE,EACtB,OAAO,KAERH,EAAKK,CAAE,EAAIR,GAAMM,CAAE,EACnBH,EAAKK,EAAE,CAAE,EAAIP,GAAMK,CAAE,EACrBE,GAAK,CACN,CACA,OAAOL,CACR,CAKAL,GAAO,QAAUI,KC5DjB,IAAAO,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwBA,IAAIC,GAAuB,QAAS,uCAAwC,EAAE,YAC1EC,GAAoB,QAAS,qCAAsC,EACnEC,GAAe,QAAS,8BAA+B,EACvDC,GAAgB,QAAS,+BAAgC,EACzDC,GAAW,QAAS,0BAA2B,EAC/CC,GAAU,QAAS,yBAA0B,EAC7CC,GAAW,QAAS,0BAA2B,EAC/CC,GAAa,QAAS,4BAA6B,EACnDC,GAAgB,QAAS,gCAAiC,EAC1DC,GAAS,QAAS,kCAAmC,EACrDC,GAAY,QAAS,qCAAsC,EAC3DC,GAAmB,KACnBC,GAAoB,KACpBC,GAA2B,QAAS,4CAA6C,EACjFC,GAAkB,QAAS,yBAA0B,EACrDC,EAAc,QAAS,uDAAwD,EAC/EC,GAAsB,QAAS,uDAAwD,EACvFC,GAAe,KACfC,GAAa,QAAS,yBAA0B,EAChDC,GAAO,QAAS,sBAAuB,EACvCC,GAAO,QAAS,sBAAuB,EACvCC,GAAQ,QAAS,iCAAkC,EACnDC,GAAgB,QAAS,4CAA6C,EACtEC,GAAiB,QAAS,6CAA8C,EACxEC,GAAS,KACTC,GAAiB,KACjBC,EAAS,QAAS,uBAAwB,EAC1CC,GAAe,KACfC,GAAkB,KAClBC,GAAY,KAKZC,GAAoBb,GAAa,kBAAoB,EACrDc,GAAsBlB,GAAyB,EAYnD,SAASmB,EAAgBC,EAAQ,CAChC,OACCA,aAAiBC,GAEhB,OAAOD,GAAU,UACjBA,IAAU,OAETA,EAAM,YAAY,OAAS,kBAC3BA,EAAM,YAAY,OAAS,oBAE5B,OAAOA,EAAM,SAAY,UAGzB,OAAOA,EAAM,SAAY,QAG5B,CASA,SAASE,GAA2BF,EAAQ,CAC3C,OACCA,IAAUC,GAGVD,EAAM,OAAS,gBAEjB,CAUA,SAASG,GAAeC,EAAKC,EAAM,CAClC,OAAAA,GAAO,EACA,IAAIpB,GAAYmB,EAAKC,CAAI,EAAGD,EAAKC,EAAI,CAAE,CAAE,CACjD,CAyEA,SAASJ,GAAkB,CAC1B,IAAIK,EACAC,EACAH,EACAI,EAGJ,GADAD,EAAQ,UAAU,OACb,EAAE,gBAAgBN,GACtB,OAAKM,IAAU,EACP,IAAIN,EAEPM,IAAU,EACP,IAAIN,EAAiB,UAAU,CAAC,CAAE,EAErCM,IAAU,EACP,IAAIN,EAAiB,UAAU,CAAC,EAAG,UAAU,CAAC,CAAE,EAEjD,IAAIA,EAAiB,UAAU,CAAC,EAAG,UAAU,CAAC,EAAG,UAAU,CAAC,CAAE,EAGtE,GAAKM,IAAU,EACdH,EAAM,IAAIpB,GAAc,CAAE,UACfuB,IAAU,EACrB,GAAKxC,GAAsB,UAAU,CAAC,CAAE,EACvCqC,EAAM,IAAIpB,GAAc,UAAU,CAAC,EAAE,CAAE,UAC5Bf,GAAc,UAAU,CAAC,CAAE,EAKtC,GAJAmC,EAAM,UAAW,CAAE,EACnBI,EAAMJ,EAAI,OAGLI,GAAOpC,GAASgC,CAAI,GAAK7B,GAAe6B,EAAI,CAAC,CAAE,GAEnD,GADAA,EAAMR,GAAW,IAAIZ,GAAcwB,EAAI,CAAE,EAAGJ,CAAI,EAC3CA,IAAQ,KAAO,CAEnB,GAAK,CAAC5B,GAAQgC,CAAI,EACjB,MAAM,IAAI,WAAYf,EAAQ,6GAA8Ge,CAAI,CAAE,EAGnJJ,EAAM,IAAIpB,GAAc,UAAU,CAAC,CAAE,CACtC,MACM,CACN,GAAKN,GAAkB0B,CAAI,EAC1BA,EAAMf,GAAee,EAAK,CAAE,UACjBzB,GAAmByB,CAAI,EAClCA,EAAMd,GAAgBc,EAAK,CAAE,UAClB,CAAC5B,GAAQgC,CAAI,EACxB,MAAM,IAAI,WAAYf,EAAQ,6HAA8He,CAAI,CAAE,EAEnKJ,EAAM,IAAIpB,GAAcoB,CAAI,CAC7B,SACWlC,GAAe,UAAU,CAAC,CAAE,EAAI,CAE3C,GADAkC,EAAM,UAAW,CAAE,EACd,CAAC3B,GAAW2B,EAAI,WAAWP,EAAkB,EACjD,MAAM,IAAI,WAAYJ,EAAQ,yFAA0FI,GAAmBO,EAAI,UAAW,CAAE,EAE7JA,EAAM,IAAIpB,GAAcoB,CAAI,CAC7B,SAAYjC,GAAU,UAAU,CAAC,CAAE,EAAI,CAEtC,GADAiC,EAAM,UAAW,CAAE,EACdN,KAAwB,GAC5B,MAAM,IAAI,UAAWL,EAAQ,mJAAoJW,CAAI,CAAE,EAExL,GAAK,CAAC9B,GAAY8B,EAAKvB,EAAgB,CAAE,EACxC,MAAM,IAAI,UAAWY,EAAQ,qHAAsHW,CAAI,CAAE,EAG1J,GADAA,EAAMA,EAAKvB,EAAgB,EAAE,EACxB,CAACP,GAAY8B,EAAI,IAAK,EAC1B,MAAM,IAAI,UAAWX,EAAQ,qHAAsHW,CAAI,CAAE,EAG1J,GADAA,EAAMV,GAAcU,CAAI,EACnBA,aAAe,MACnB,MAAMA,EAEPA,EAAM,IAAIpB,GAAcoB,CAAI,CAC7B,KACC,OAAM,IAAI,UAAWX,EAAQ,qHAAsH,UAAU,CAAC,CAAE,CAAE,MAE7J,CAEN,GADAW,EAAM,UAAW,CAAE,EACd,CAAClC,GAAekC,CAAI,EACxB,MAAM,IAAI,UAAWX,EAAQ,wEAAyEW,CAAI,CAAE,EAG7G,GADAE,EAAa,UAAW,CAAE,EACrB,CAACvC,GAAsBuC,CAAW,EACtC,MAAM,IAAI,UAAWb,EAAQ,4EAA6Ea,CAAW,CAAE,EAExH,GAAK,CAAC7B,GAAW6B,EAAWT,EAAkB,EAC7C,MAAM,IAAI,WAAYJ,EAAQ,uEAAwEI,GAAmBS,CAAW,CAAE,EAEvI,GAAKC,IAAU,EAAI,CAElB,GADAC,EAAMJ,EAAI,WAAaE,EAClB,CAAC7B,GAAW+B,EAAIX,EAAkB,EACtC,MAAM,IAAI,WAAYJ,EAAQ,oGAAqGI,GAAmBW,CAAI,CAAE,EAE7JJ,EAAM,IAAIpB,GAAcoB,EAAKE,CAAW,CACzC,KAAO,CAEN,GADAE,EAAM,UAAW,CAAE,EACd,CAACzC,GAAsByC,CAAI,EAC/B,MAAM,IAAI,UAAWf,EAAQ,uEAAwEe,CAAI,CAAE,EAE5G,GAAMA,EAAIX,GAAsBO,EAAI,WAAWE,EAC9C,MAAM,IAAI,WAAYb,EAAQ,iJAAkJe,EAAIX,EAAkB,CAAE,EAEzMO,EAAM,IAAIpB,GAAcoB,EAAKE,EAAYE,EAAI,CAAE,CAChD,CACD,CACA,OAAA1B,EAAa,KAAM,UAAWsB,CAAI,EAClCtB,EAAa,KAAM,UAAWsB,EAAI,OAAO,CAAE,EAEpC,IACR,CAeAtB,EAAamB,EAAiB,oBAAqBJ,EAAkB,EAerEf,EAAamB,EAAiB,OAAQ,iBAAkB,EAmDxDnB,EAAamB,EAAiB,OAAQ,SAAeQ,EAAM,CAC1D,IAAIC,EACAH,EACAI,EACAC,EACAR,EACAS,EACAC,EACAN,EACAO,EACAC,EACAC,EACAC,EACJ,GAAK,CAAC5C,GAAY,IAAK,EACtB,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAAC4B,GAA2B,IAAK,EACrC,MAAM,IAAI,UAAW,2DAA4D,EAGlF,GADAK,EAAQ,UAAU,OACbA,EAAQ,EAAI,CAEhB,GADAI,EAAO,UAAW,CAAE,EACf,CAACrC,GAAYqC,CAAK,EACtB,MAAM,IAAI,UAAWlB,EAAQ,qEAAsEkB,CAAK,CAAE,EAEtGJ,EAAQ,IACZG,EAAU,UAAW,CAAE,EAEzB,CACA,GAAKX,EAAgBU,CAAI,EAAI,CAE5B,GADAD,EAAMC,EAAI,OACLE,EAAO,CAIX,IAHAC,EAAM,IAAI,KAAMJ,CAAI,EACpBJ,EAAMQ,EAAI,QACVM,EAAI,EACED,EAAI,EAAGA,EAAIT,EAAKS,IAAM,CAE3B,GADAD,EAAIL,EAAK,KAAMD,EAASD,EAAI,IAAKQ,CAAE,EAAGA,CAAE,EACnC1C,GAAeyC,CAAE,EACrBZ,EAAKc,CAAE,EAAIhC,GAAM8B,CAAE,EACnBZ,EAAKc,EAAE,CAAE,EAAI/B,GAAM6B,CAAE,UACVhD,GAAmBgD,CAAE,GAAKA,EAAE,QAAU,EACjDZ,EAAKc,CAAE,EAAIF,EAAG,CAAE,EAChBZ,EAAKc,EAAE,CAAE,EAAIF,EAAG,CAAE,MAElB,OAAM,IAAI,UAAWvB,EAAQ,+IAAgJuB,CAAE,CAAE,EAElLE,GAAK,CACN,CACA,OAAON,CACR,CACA,OAAO,IAAI,KAAMH,CAAI,CACtB,CACA,GAAKxC,GAAcwC,CAAI,EAAI,CAC1B,GAAKE,EAAO,CAUX,IAPAH,EAAMC,EAAI,OACLA,EAAI,KAAOA,EAAI,IACnBK,EAAMtB,GAAgB,SAAU,EAEhCsB,EAAMvB,GAAQ,SAAU,EAGnB0B,EAAI,EAAGA,EAAIT,EAAKS,IACrB,GAAK,CAAC1C,GAAeuC,EAAKL,EAAKQ,CAAE,CAAE,EAAI,CACtCF,EAAM,GACN,KACD,CAGD,GAAKA,EAAM,CACV,GAAK,CAACvC,GAAQgC,CAAI,EACjB,MAAM,IAAI,WAAYf,EAAQ,gGAAiGe,CAAI,CAAE,EAItI,IAFAI,EAAM,IAAI,KAAMJ,EAAI,CAAE,EACtBJ,EAAMQ,EAAI,QACJK,EAAI,EAAGA,EAAIT,EAAKS,IACrBb,EAAKa,CAAE,EAAIN,EAAK,KAAMD,EAASI,EAAKL,EAAKQ,CAAE,EAAGA,CAAE,EAEjD,OAAOL,CACR,CAKA,IAHAA,EAAM,IAAI,KAAMJ,CAAI,EACpBJ,EAAMQ,EAAI,QACVM,EAAI,EACED,EAAI,EAAGA,EAAIT,EAAKS,IAAM,CAE3B,GADAD,EAAIL,EAAK,KAAMD,EAASI,EAAKL,EAAKQ,CAAE,EAAGA,CAAE,EACpC1C,GAAeyC,CAAE,EACrBZ,EAAKc,CAAE,EAAIhC,GAAM8B,CAAE,EACnBZ,EAAKc,EAAE,CAAE,EAAI/B,GAAM6B,CAAE,UACVhD,GAAmBgD,CAAE,GAAKA,EAAE,QAAU,EACjDZ,EAAKc,CAAE,EAAIF,EAAG,CAAE,EAChBZ,EAAKc,EAAE,CAAE,EAAIF,EAAG,CAAE,MAElB,OAAM,IAAI,UAAWvB,EAAQ,+IAAgJuB,CAAE,CAAE,EAElLE,GAAK,CACN,CACA,OAAON,CACR,CACA,OAAO,IAAI,KAAMH,CAAI,CACtB,CACA,GAAKtC,GAAUsC,CAAI,GAAKX,IAAuBxB,GAAYmC,EAAK5B,EAAgB,CAAE,EAAI,CAErF,GADAuB,EAAMK,EAAK5B,EAAgB,EAAE,EACxB,CAACP,GAAY8B,EAAI,IAAK,EAC1B,MAAM,IAAI,UAAWX,EAAQ,6FAA8FgB,CAAI,CAAE,EAOlI,GALKE,EACJE,EAAMlB,GAAiBS,EAAKO,EAAMD,CAAQ,EAE1CG,EAAMnB,GAAcU,CAAI,EAEpBS,aAAe,MACnB,MAAMA,EAKP,IAHAL,EAAMK,EAAI,OAAS,EACnBD,EAAM,IAAI,KAAMJ,CAAI,EACpBJ,EAAMQ,EAAI,QACJK,EAAI,EAAGA,EAAIT,EAAKS,IACrBb,EAAKa,CAAE,EAAIJ,EAAKI,CAAE,EAEnB,OAAOL,CACR,CACA,MAAM,IAAI,UAAWnB,EAAQ,6FAA8FgB,CAAI,CAAE,CAClI,CAAC,EAoBD3B,EAAamB,EAAiB,KAAM,UAAc,CACjD,IAAIkB,EACAF,EACJ,GAAK,CAAC3C,GAAY,IAAK,EACtB,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAAC4B,GAA2B,IAAK,EACrC,MAAM,IAAI,UAAW,2DAA4D,EAGlF,IADAiB,EAAO,CAAC,EACFF,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAClCE,EAAK,KAAM,UAAWF,CAAE,CAAE,EAE3B,OAAO,IAAI,KAAME,CAAK,CACvB,CAAC,EAwDDrC,EAAamB,EAAgB,UAAW,KAAM,SAAaI,EAAM,CAChE,GAAK,CAACN,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACtB,GAAW4B,CAAI,EACpB,MAAM,IAAI,UAAWZ,EAAQ,0DAA2DY,CAAI,CAAE,EAK/F,GAHKA,EAAM,IACVA,GAAO,KAAK,SAER,EAAAA,EAAM,GAAKA,GAAO,KAAK,SAG5B,OAAOF,GAAe,KAAK,QAASE,CAAI,CACzC,CAAC,EAgBDtB,GAAqBkB,EAAgB,UAAW,SAAU,UAAe,CACxE,OAAO,KAAK,QAAQ,MACrB,CAAC,EAgBDlB,GAAqBkB,EAAgB,UAAW,aAAc,UAAe,CAC5E,OAAO,KAAK,QAAQ,UACrB,CAAC,EAgBDlB,GAAqBkB,EAAgB,UAAW,aAAc,UAAe,CAC5E,OAAO,KAAK,QAAQ,UACrB,CAAC,EAiBDnB,EAAamB,EAAgB,UAAW,oBAAqBA,EAAgB,iBAAkB,EAuC/FnB,EAAamB,EAAgB,UAAW,aAAc,SAAqBmB,EAAQC,EAAQ,CAC1F,GAAK,CAACtB,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAGlF,OAAK,UAAU,SAAW,EACzB,KAAK,QAAQ,WAAYqB,EAAO,EAAGC,EAAM,CAAE,EAE3C,KAAK,QAAQ,WAAYD,EAAO,EAAGC,EAAM,EAAG,UAAU,CAAC,EAAE,CAAE,EAErD,IACR,CAAC,EAqCDvC,EAAamB,EAAgB,UAAW,UAAW,UAAmB,CACrE,IAAIqB,EACAC,EACAC,EACAhB,EACAiB,EACAR,EACAC,EACJ,GAAK,CAACnB,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,OAAAwB,EAAO,KACPD,EAAS,KAAK,QACdd,EAAM,KAAK,QAGXS,EAAI,GACJC,EAAI,GAGJM,EAAO,CAAC,EACR1C,EAAa0C,EAAM,OAAQE,CAAK,EAChC5C,EAAa0C,EAAM,SAAUG,CAAI,EAE5B9C,IACJC,EAAa0C,EAAM3C,GAAiB+C,CAAQ,EAEtCJ,EAQP,SAASE,GAAO,CACf,IAAIG,EAEJ,OADAZ,GAAK,EACAQ,GAAOR,GAAKT,EACT,CACN,KAAQ,EACT,GAEDU,GAAK,EACLW,EAAI,IAAI5C,GAAYqC,EAAQJ,CAAE,EAAGI,EAAQJ,EAAE,CAAE,CAAE,EACxC,CACN,MAAS,CAAED,EAAGY,CAAE,EAChB,KAAQ,EACT,EACD,CASA,SAASF,EAAK3B,EAAQ,CAErB,OADAyB,EAAM,GACD,UAAU,OACP,CACN,MAASzB,EACT,KAAQ,EACT,EAEM,CACN,KAAQ,EACT,CACD,CAQA,SAAS4B,GAAU,CAClB,OAAOL,EAAK,QAAQ,CACrB,CACD,CAAC,EA+BDzC,EAAamB,EAAgB,UAAW,QAAS,SAAgB6B,EAAWpB,EAAU,CACrF,IAAIN,EACAa,EACJ,GAAK,CAAClB,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACzB,GAAYwD,CAAU,EAC3B,MAAM,IAAI,UAAWrC,EAAQ,oEAAqEqC,CAAU,CAAE,EAG/G,IADA1B,EAAM,KAAK,QACLa,EAAI,EAAGA,EAAI,KAAK,QAASA,IAC9B,GAAK,CAACa,EAAU,KAAMpB,EAASP,GAAeC,EAAKa,CAAE,EAAGA,EAAG,IAAK,EAC/D,MAAO,GAGT,MAAO,EACR,CAAC,EA0CDnC,EAAamB,EAAgB,UAAW,OAAQ,SAAeD,EAAOqB,EAAOM,EAAM,CAClF,IAAIvB,EACAI,EACAH,EACA0B,EACAC,EACAf,EACJ,GAAK,CAAClB,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACxB,GAAeyB,CAAM,EAC1B,MAAM,IAAI,UAAWP,EAAQ,0EAA2EO,CAAM,CAAE,EAIjH,GAFAI,EAAM,KAAK,QACXI,EAAM,KAAK,QACN,UAAU,OAAS,EAAI,CAC3B,GAAK,CAAC/B,GAAW4C,CAAM,EACtB,MAAM,IAAI,UAAW5B,EAAQ,qEAAsE4B,CAAM,CAAE,EAQ5G,GANKA,EAAQ,IACZA,GAASb,EACJa,EAAQ,IACZA,EAAQ,IAGL,UAAU,OAAS,EAAI,CAC3B,GAAK,CAAC5C,GAAWkD,CAAI,EACpB,MAAM,IAAI,UAAWlC,EAAQ,oEAAqEkC,CAAI,CAAE,EAEpGA,EAAM,IACVA,GAAOnB,EACFmB,EAAM,IACVA,EAAM,IAGHA,EAAMnB,IACVmB,EAAMnB,EAER,MACCmB,EAAMnB,CAER,MACCa,EAAQ,EACRM,EAAMnB,EAIP,IAFAuB,EAAK7C,GAAMc,CAAM,EACjBgC,EAAK7C,GAAMa,CAAM,EACXiB,EAAII,EAAOJ,EAAIU,EAAKV,IACzBZ,EAAM,EAAEY,EACRb,EAAKC,CAAI,EAAI0B,EACb3B,EAAKC,EAAI,CAAE,EAAI2B,EAEhB,OAAO,IACR,CAAC,EA2CDlD,EAAamB,EAAgB,UAAW,SAAU,SAAiB6B,EAAWpB,EAAU,CACvF,IAAIN,EACAQ,EACAK,EACAY,EACJ,GAAK,CAAC9B,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACzB,GAAYwD,CAAU,EAC3B,MAAM,IAAI,UAAWrC,EAAQ,oEAAqEqC,CAAU,CAAE,EAI/G,IAFA1B,EAAM,KAAK,QACXQ,EAAM,CAAC,EACDK,EAAI,EAAGA,EAAI,KAAK,QAASA,IAC9BY,EAAI1B,GAAeC,EAAKa,CAAE,EACrBa,EAAU,KAAMpB,EAASmB,EAAGZ,EAAG,IAAK,GACxCL,EAAI,KAAMiB,CAAE,EAGd,OAAO,IAAI,KAAK,YAAajB,CAAI,CAClC,CAAC,EAqCD9B,EAAamB,EAAgB,UAAW,OAAQ,SAAe6B,EAAWpB,EAAU,CACnF,IAAIN,EACAa,EACAY,EACJ,GAAK,CAAC9B,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACzB,GAAYwD,CAAU,EAC3B,MAAM,IAAI,UAAWrC,EAAQ,oEAAqEqC,CAAU,CAAE,EAG/G,IADA1B,EAAM,KAAK,QACLa,EAAI,EAAGA,EAAI,KAAK,QAASA,IAE9B,GADAY,EAAI1B,GAAeC,EAAKa,CAAE,EACrBa,EAAU,KAAMpB,EAASmB,EAAGZ,EAAG,IAAK,EACxC,OAAOY,CAGV,CAAC,EA+BD/C,EAAamB,EAAgB,UAAW,YAAa,SAAoB6B,EAAWpB,EAAU,CAC7F,IAAIN,EACAa,EACAY,EACJ,GAAK,CAAC9B,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACzB,GAAYwD,CAAU,EAC3B,MAAM,IAAI,UAAWrC,EAAQ,oEAAqEqC,CAAU,CAAE,EAG/G,IADA1B,EAAM,KAAK,QACLa,EAAI,EAAGA,EAAI,KAAK,QAASA,IAE9B,GADAY,EAAI1B,GAAeC,EAAKa,CAAE,EACrBa,EAAU,KAAMpB,EAASmB,EAAGZ,EAAG,IAAK,EACxC,OAAOA,EAGT,MAAO,EACR,CAAC,EAqCDnC,EAAamB,EAAgB,UAAW,WAAY,SAAmB6B,EAAWpB,EAAU,CAC3F,IAAIN,EACAa,EACAY,EACJ,GAAK,CAAC9B,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACzB,GAAYwD,CAAU,EAC3B,MAAM,IAAI,UAAWrC,EAAQ,oEAAqEqC,CAAU,CAAE,EAG/G,IADA1B,EAAM,KAAK,QACLa,EAAI,KAAK,QAAQ,EAAGA,GAAK,EAAGA,IAEjC,GADAY,EAAI1B,GAAeC,EAAKa,CAAE,EACrBa,EAAU,KAAMpB,EAASmB,EAAGZ,EAAG,IAAK,EACxC,OAAOY,CAGV,CAAC,EA+BD/C,EAAamB,EAAgB,UAAW,gBAAiB,SAAwB6B,EAAWpB,EAAU,CACrG,IAAIN,EACAa,EACAY,EACJ,GAAK,CAAC9B,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACzB,GAAYwD,CAAU,EAC3B,MAAM,IAAI,UAAWrC,EAAQ,oEAAqEqC,CAAU,CAAE,EAG/G,IADA1B,EAAM,KAAK,QACLa,EAAI,KAAK,QAAQ,EAAGA,GAAK,EAAGA,IAEjC,GADAY,EAAI1B,GAAeC,EAAKa,CAAE,EACrBa,EAAU,KAAMpB,EAASmB,EAAGZ,EAAG,IAAK,EACxC,OAAOA,EAGT,MAAO,EACR,CAAC,EA4BDnC,EAAamB,EAAgB,UAAW,UAAW,SAAkBgC,EAAKvB,EAAU,CACnF,IAAIN,EACAa,EACAY,EACJ,GAAK,CAAC9B,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACzB,GAAY2D,CAAI,EACrB,MAAM,IAAI,UAAWxC,EAAQ,oEAAqEwC,CAAI,CAAE,EAGzG,IADA7B,EAAM,KAAK,QACLa,EAAI,EAAGA,EAAI,KAAK,QAASA,IAC9BY,EAAI1B,GAAeC,EAAKa,CAAE,EAC1BgB,EAAI,KAAMvB,EAASmB,EAAGZ,EAAG,IAAK,CAEhC,CAAC,EAyCDnC,EAAamB,EAAgB,UAAW,MAAO,SAAcI,EAAM,CAClE,GAAK,CAACN,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAAChC,GAAsBsC,CAAI,EAC/B,MAAM,IAAI,UAAWZ,EAAQ,qEAAsEY,CAAI,CAAE,EAE1G,GAAK,EAAAA,GAAO,KAAK,SAGjB,OAAOF,GAAe,KAAK,QAASE,CAAI,CACzC,CAAC,EAgBDtB,GAAqBkB,EAAgB,UAAW,SAAU,UAAe,CACxE,OAAO,KAAK,OACb,CAAC,EAmCDnB,EAAamB,EAAgB,UAAW,WAAY,SAAmBiC,EAAeC,EAAY,CACjG,IAAI/B,EACAC,EACA0B,EACAC,EACAf,EACJ,GAAK,CAAClB,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACxB,GAAe2D,CAAc,EAClC,MAAM,IAAI,UAAWzC,EAAQ,0EAA2EyC,CAAc,CAAE,EAEzH,GAAK,UAAU,OAAS,EAAI,CAC3B,GAAK,CAACzD,GAAW0D,CAAU,EAC1B,MAAM,IAAI,UAAW1C,EAAQ,qEAAsE0C,CAAU,CAAE,EAE3GA,EAAY,IAChBA,GAAa,KAAK,QACbA,EAAY,IAChBA,EAAY,GAGf,MACCA,EAAY,EAKb,IAHAJ,EAAK7C,GAAMgD,CAAc,EACzBF,EAAK7C,GAAM+C,CAAc,EACzB9B,EAAM,KAAK,QACLa,EAAIkB,EAAWlB,EAAI,KAAK,QAASA,IAEtC,GADAZ,EAAM,EAAIY,EACLc,IAAO3B,EAAKC,CAAI,GAAK2B,IAAO5B,EAAKC,EAAI,CAAE,EAC3C,MAAO,GAGT,MAAO,EACR,CAAC,EAmCDvB,EAAamB,EAAgB,UAAW,UAAW,SAAkBiC,EAAeC,EAAY,CAC/F,IAAI/B,EACAC,EACA0B,EACAC,EACAf,EACJ,GAAK,CAAClB,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACxB,GAAe2D,CAAc,EAClC,MAAM,IAAI,UAAWzC,EAAQ,0EAA2EyC,CAAc,CAAE,EAEzH,GAAK,UAAU,OAAS,EAAI,CAC3B,GAAK,CAACzD,GAAW0D,CAAU,EAC1B,MAAM,IAAI,UAAW1C,EAAQ,qEAAsE0C,CAAU,CAAE,EAE3GA,EAAY,IAChBA,GAAa,KAAK,QACbA,EAAY,IAChBA,EAAY,GAGf,MACCA,EAAY,EAKb,IAHAJ,EAAK7C,GAAMgD,CAAc,EACzBF,EAAK7C,GAAM+C,CAAc,EACzB9B,EAAM,KAAK,QACLa,EAAIkB,EAAWlB,EAAI,KAAK,QAASA,IAEtC,GADAZ,EAAM,EAAIY,EACLc,IAAO3B,EAAKC,CAAI,GAAK2B,IAAO5B,EAAKC,EAAI,CAAE,EAC3C,OAAOY,EAGT,MAAO,EACR,CAAC,EAyBDnC,EAAamB,EAAgB,UAAW,OAAQ,SAAemC,EAAY,CAC1E,IAAIxB,EACAR,EACAiC,EACApB,EACJ,GAAK,CAAClB,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,UAAU,SAAW,EACzBsC,EAAM,YACKhE,GAAU+D,CAAU,EAC/BC,EAAMD,MAEN,OAAM,IAAI,UAAW3C,EAAQ,kEAAmE2C,CAAU,CAAE,EAI7G,IAFAxB,EAAM,CAAC,EACPR,EAAM,KAAK,QACLa,EAAI,EAAGA,EAAI,KAAK,QAASA,IAC9BL,EAAI,KAAMT,GAAeC,EAAKa,CAAE,EAAE,SAAS,CAAE,EAE9C,OAAOL,EAAI,KAAMyB,CAAI,CACtB,CAAC,EAsCDvD,EAAamB,EAAgB,UAAW,cAAe,SAAsBiC,EAAeC,EAAY,CACvG,IAAI/B,EACAC,EACA0B,EACAC,EACAf,EACJ,GAAK,CAAClB,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACxB,GAAe2D,CAAc,EAClC,MAAM,IAAI,UAAWzC,EAAQ,0EAA2EyC,CAAc,CAAE,EAEzH,GAAK,UAAU,OAAS,EAAI,CAC3B,GAAK,CAACzD,GAAW0D,CAAU,EAC1B,MAAM,IAAI,UAAW1C,EAAQ,qEAAsE0C,CAAU,CAAE,EAE3GA,GAAa,KAAK,QACtBA,EAAY,KAAK,QAAU,EAChBA,EAAY,IACvBA,GAAa,KAAK,QAEpB,MACCA,EAAY,KAAK,QAAU,EAK5B,IAHAJ,EAAK7C,GAAMgD,CAAc,EACzBF,EAAK7C,GAAM+C,CAAc,EACzB9B,EAAM,KAAK,QACLa,EAAIkB,EAAWlB,GAAK,EAAGA,IAE5B,GADAZ,EAAM,EAAIY,EACLc,IAAO3B,EAAKC,CAAI,GAAK2B,IAAO5B,EAAKC,EAAI,CAAE,EAC3C,OAAOY,EAGT,MAAO,EACR,CAAC,EAyCDnC,EAAamB,EAAgB,UAAW,MAAO,SAAcgC,EAAKvB,EAAU,CAC3E,IAAI4B,EACAlC,EACAQ,EACAK,EACAD,EACJ,GAAK,CAACjB,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACzB,GAAY2D,CAAI,EACrB,MAAM,IAAI,UAAWxC,EAAQ,oEAAqEwC,CAAI,CAAE,EAKzG,IAHA7B,EAAM,KAAK,QACXQ,EAAM,IAAI,KAAK,YAAa,KAAK,OAAQ,EACzC0B,EAAS1B,EAAI,QACPK,EAAI,EAAGA,EAAI,KAAK,QAASA,IAE9B,GADAD,EAAIiB,EAAI,KAAMvB,EAASP,GAAeC,EAAKa,CAAE,EAAGA,EAAG,IAAK,EACnD1C,GAAeyC,CAAE,EACrBsB,EAAQ,EAAErB,CAAE,EAAI/B,GAAM8B,CAAE,EACxBsB,EAAS,EAAErB,EAAG,CAAE,EAAI9B,GAAM6B,CAAE,UACjBhD,GAAmBgD,CAAE,GAAKA,EAAE,SAAW,EAClDsB,EAAQ,EAAErB,CAAE,EAAID,EAAG,CAAE,EACrBsB,EAAS,EAAErB,EAAG,CAAE,EAAID,EAAG,CAAE,MAEzB,OAAM,IAAI,UAAWvB,EAAQ,+IAAgJuB,CAAE,CAAE,EAGnL,OAAOJ,CACR,CAAC,EAmDD9B,EAAamB,EAAgB,UAAW,UAAW,UAAmB,CACrE,IAAIG,EACAS,EACAL,EACA+B,EACAtB,EACAC,EACJ,GAAK,CAACnB,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAKlF,IAHAS,EAAM,KAAK,QACXJ,EAAM,KAAK,QACXmC,EAAInD,GAAOoB,EAAM,CAAE,EACbS,EAAI,EAAGA,EAAIsB,EAAGtB,IACnBC,EAAIV,EAAMS,EAAI,EACdJ,EAAMT,EAAM,EAAEa,CAAG,EACjBb,EAAM,EAAEa,CAAG,EAAIb,EAAM,EAAEc,CAAG,EAC1Bd,EAAM,EAAEc,CAAG,EAAIL,EACfA,EAAMT,EAAM,EAAEa,EAAG,CAAE,EACnBb,EAAM,EAAEa,EAAG,CAAE,EAAIb,EAAM,EAAEc,EAAG,CAAE,EAC9Bd,EAAM,EAAEc,EAAG,CAAE,EAAIL,EAElB,OAAO,IACR,CAAC,EAgED/B,EAAamB,EAAgB,UAAW,MAAO,SAAcD,EAAQ,CAEpE,IAAIwC,EACAnC,EACAD,EACAS,EACAE,EACAwB,EACAvB,EACAC,EACAC,EACJ,GAAK,CAACnB,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAGlF,GADAK,EAAM,KAAK,QACN,UAAU,OAAS,GAEvB,GADAC,EAAM,UAAW,CAAE,EACd,CAACtC,GAAsBsC,CAAI,EAC/B,MAAM,IAAI,UAAWZ,EAAQ,+EAAgFY,CAAI,CAAE,OAGpHA,EAAM,EAEP,GAAK9B,GAAeyB,CAAM,EAAI,CAC7B,GAAKK,GAAO,KAAK,QAChB,MAAM,IAAI,WAAYZ,EAAQ,kEAAmEY,CAAI,CAAE,EAExGA,GAAO,EACPD,EAAKC,CAAI,EAAInB,GAAMc,CAAM,EACzBI,EAAKC,EAAI,CAAE,EAAIlB,GAAMa,CAAM,EAC3B,MACD,CACA,GAAKD,EAAgBC,CAAM,EAAI,CAE9B,GADAuC,EAAIvC,EAAM,QACLK,EAAIkC,EAAI,KAAK,QACjB,MAAM,IAAI,WAAY,wFAAyF,EAMhH,GAJAC,EAAOxC,EAAM,QAGbkB,EAAId,EAAI,WAAcC,EAAIR,GAEzB2C,EAAK,SAAWpC,EAAI,QAEnBoC,EAAK,WAAatB,GAClBsB,EAAK,WAAWA,EAAK,WAAatB,EAElC,CAGD,IADAL,EAAM,IAAI7B,GAAcwD,EAAK,MAAO,EAC9BvB,EAAI,EAAGA,EAAIuB,EAAK,OAAQvB,IAC7BJ,EAAKI,CAAE,EAAIuB,EAAMvB,CAAE,EAEpBuB,EAAO3B,CACR,CAGA,IAFAR,GAAO,EACPa,EAAI,EACED,EAAI,EAAGA,EAAIsB,EAAGtB,IACnBb,EAAKC,CAAI,EAAImC,EAAMtB,CAAE,EACrBd,EAAKC,EAAI,CAAE,EAAImC,EAAMtB,EAAE,CAAE,EACzBb,GAAO,EACPa,GAAK,EAEN,MACD,CACA,GAAKjD,GAAc+B,CAAM,EAAI,CAG5B,IADAuC,EAAIvC,EAAM,OACJiB,EAAI,EAAGA,EAAIsB,EAAGtB,IACnB,GAAK,CAAC1C,GAAeyB,EAAOiB,CAAE,CAAE,EAAI,CACnCF,EAAM,GACN,KACD,CAGD,GAAKA,EAAM,CACV,GAAK,CAACvC,GAAQ+D,CAAE,EACf,MAAM,IAAI,WAAY9C,EAAQ,6GAA8G8C,CAAE,CAAE,EAEjJ,GAAKlC,EAAKkC,EAAE,EAAK,KAAK,QACrB,MAAM,IAAI,WAAY,wFAAyF,EAMhH,GAJAC,EAAOxC,EAGPkB,EAAId,EAAI,WAAcC,EAAIR,GAEzB2C,EAAK,SAAWpC,EAAI,QAEnBoC,EAAK,WAAatB,GAClBsB,EAAK,WAAWA,EAAK,WAAatB,EAElC,CAGD,IADAL,EAAM,IAAI7B,GAAcuD,CAAE,EACpBtB,EAAI,EAAGA,EAAIsB,EAAGtB,IACnBJ,EAAKI,CAAE,EAAIuB,EAAMvB,CAAE,EAEpBuB,EAAO3B,CACR,CAIA,IAHAR,GAAO,EACPkC,GAAK,EACLrB,EAAI,EACED,EAAI,EAAGA,EAAIsB,EAAGtB,IACnBb,EAAKC,CAAI,EAAImC,EAAMtB,CAAE,EACrBd,EAAKC,EAAI,CAAE,EAAImC,EAAMtB,EAAE,CAAE,EACzBb,GAAO,EACPa,GAAK,EAEN,MACD,CAEA,GAAKb,EAAIkC,EAAI,KAAK,QACjB,MAAM,IAAI,WAAY,wFAAyF,EAGhH,IADAlC,GAAO,EACDY,EAAI,EAAGA,EAAIsB,EAAGtB,IACnBD,EAAIhB,EAAOiB,CAAE,EACbb,EAAKC,CAAI,EAAInB,GAAM8B,CAAE,EACrBZ,EAAKC,EAAI,CAAE,EAAIlB,GAAM6B,CAAE,EACvBX,GAAO,EAER,MACD,CACA,MAAM,IAAI,UAAWZ,EAAQ,kIAAmIO,CAAM,CAAE,CAGzK,CAAC,EA+BDlB,EAAamB,EAAgB,UAAW,OAAQ,SAAe6B,EAAWpB,EAAU,CACnF,IAAIN,EACAa,EACJ,GAAK,CAAClB,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACzB,GAAYwD,CAAU,EAC3B,MAAM,IAAI,UAAWrC,EAAQ,oEAAqEqC,CAAU,CAAE,EAG/G,IADA1B,EAAM,KAAK,QACLa,EAAI,EAAGA,EAAI,KAAK,QAASA,IAC9B,GAAKa,EAAU,KAAMpB,EAASP,GAAeC,EAAKa,CAAE,EAAGA,EAAG,IAAK,EAC9D,MAAO,GAGT,MAAO,EACR,CAAC,EA2EDnC,EAAamB,EAAgB,UAAW,WAAY,SAAmBwC,EAAOd,EAAM,CACnF,IAAIe,EACAtC,EACAI,EACJ,GAAK,CAACT,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAIlF,GAFAK,EAAM,KAAK,QACXI,EAAM,KAAK,QACN,UAAU,SAAW,EACzBiC,EAAQ,EACRd,EAAMnB,MACA,CACN,GAAK,CAAC/B,GAAWgE,CAAM,EACtB,MAAM,IAAI,UAAWhD,EAAQ,oEAAqEgD,CAAM,CAAE,EAQ3G,GANKA,EAAQ,IACZA,GAASjC,EACJiC,EAAQ,IACZA,EAAQ,IAGL,UAAU,SAAW,EACzBd,EAAMnB,MACA,CACN,GAAK,CAAC/B,GAAWkD,CAAI,EACpB,MAAM,IAAI,UAAWlC,EAAQ,qEAAsEkC,CAAI,CAAE,EAErGA,EAAM,GACVA,GAAOnB,EACFmB,EAAM,IACVA,EAAM,IAEIA,EAAMnB,IACjBmB,EAAMnB,EAER,CACD,CACA,OAAKiC,GAASjC,GACbA,EAAM,EACNkC,EAAStC,EAAI,YACFqC,GAASd,GACpBnB,EAAM,EACNkC,EAAStC,EAAI,WAAeqC,EAAM5C,KAElCW,EAAMmB,EAAMc,EACZC,EAAStC,EAAI,WAAeqC,EAAM5C,IAE5B,IAAI,KAAK,YAAaO,EAAI,OAAQsC,EAAUlC,EAAM,EAAM,EAAIA,CAAI,CACxE,CAAC,EAoBD1B,EAAamB,EAAgB,UAAW,WAAY,UAAoB,CACvE,IAAIW,EACAR,EACA,EACJ,GAAK,CAACL,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAIlF,IAFAa,EAAM,CAAC,EACPR,EAAM,KAAK,QACL,EAAI,EAAG,EAAI,KAAK,QAAS,IAC9BQ,EAAI,KAAMT,GAAeC,EAAK,CAAE,EAAE,SAAS,CAAE,EAE9C,OAAOQ,EAAI,KAAM,GAAI,CACtB,CAAC,EAuCD9B,EAAamB,EAAgB,UAAW,OAAQ,SAAmB0C,EAAO3C,EAAQ,CACjF,IAAII,EACAQ,EACAJ,EACJ,GAAK,CAACT,EAAgB,IAAK,EAC1B,MAAM,IAAI,UAAW,2DAA4D,EAElF,GAAK,CAACtB,GAAWkE,CAAM,EACtB,MAAM,IAAI,UAAWlD,EAAQ,oEAAqEkD,CAAM,CAAE,EAM3G,GAJAnC,EAAM,KAAK,QACNmC,EAAQ,IACZA,GAASnC,GAELmC,EAAQ,GAAKA,GAASnC,EAC1B,MAAM,IAAI,WAAYf,EAAQ,kEAAmEkD,CAAM,CAAE,EAE1G,GAAK,CAACpE,GAAeyB,CAAM,EAC1B,MAAM,IAAI,UAAWP,EAAQ,2EAA4EO,CAAM,CAAE,EAElH,OAAAY,EAAM,IAAI,KAAK,YAAa,KAAK,OAAQ,EACzCR,EAAMQ,EAAI,QACVR,EAAK,EAAEuC,CAAM,EAAIzD,GAAMc,CAAM,EAC7BI,EAAM,EAAEuC,EAAO,CAAE,EAAIxD,GAAMa,CAAM,EAC1BY,CACR,CAAC,EAKD9C,GAAO,QAAUmC,IC1rEjB,IAAA2C,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwFA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7FjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAe,KACfC,GAAe,KACfC,GAAc,KACdC,GAAa,KACbC,GAAc,KACdC,GAAa,KACbC,GAAa,KACbC,GAAoB,KACpBC,GAAY,KACZC,GAAiB,KACjBC,GAAkB,KAMlBC,GAAQ,CACXX,GACAC,GACAE,GACAD,GACAG,GACAD,GACAI,GACAF,GACAC,GACAE,GACAC,EACD,EAKAX,GAAO,QAAUY,KCvDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAuBA,IAAIC,GAAS,CACZ,UACA,UACA,QACA,SACA,QACA,SACA,OACA,QACA,SACA,YACA,YACD,EAKAD,GAAO,QAAUC,KCxCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,QAAS,0BAA2B,EAC/CC,GAAU,QAAS,yBAA0B,EAC7CC,GAAkB,QAAS,gCAAiC,EAC5DC,GAAa,KACbC,GAAQ,KACRC,GAAS,KAKTC,GAASD,GAAO,OAkBpB,SAASE,GAAOC,EAAQ,CACvB,IAAIC,EACJ,GAAKR,GAASO,CAAM,EACnB,MAAO,UAER,GAAKR,GAAUQ,CAAM,EACpB,OAAO,KAER,IAAMC,EAAI,EAAGA,EAAIH,GAAQG,IACxB,GAAKD,aAAiBJ,GAAOK,CAAE,EAC9B,OAAOJ,GAAQI,CAAE,EAInB,OAAON,GAAYD,GAAiBM,CAAM,CAAE,GAAK,IAClD,CAKAT,GAAO,QAAUQ,KCtEjB,IAAAG,EAAAC,EAAA,SAAAC,GAAAC,GAAA,cA2CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KChDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAkB,IAClBC,GAAS,KACTC,GAAS,KACTC,GAAiB,KACjBC,GAAiB,KACjBC,GAAQ,IAgCZ,SAASC,GAAWC,EAAI,CACvB,IAAIC,EAAKH,GAAOE,CAAE,EAClB,OAAKP,GAAiBO,CAAE,EAChB,CACN,iBAAoB,GACpB,UAAa,CACZJ,GAAgBK,CAAG,EACnBJ,GAAgBI,CAAG,CACpB,CACD,EAEM,CACN,iBAAoB,GACpB,UAAa,CACZP,GAAQO,CAAG,EACXN,GAAQM,CAAG,CACZ,CACD,CACD,CAKAT,GAAO,QAAUO,KClFjB,IAAAG,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA4CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCjDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwBA,IAAIC,GAAuB,QAAS,wDAAyD,EACzFC,GAAc,QAAS,uDAAwD,EAC/EC,GAAY,KACZC,GAAe,QAAS,8BAA+B,EACvDC,GAAS,QAAS,uBAAwB,EAW9C,SAASC,GAAWC,EAAM,CACzB,KAAK,QAAQ,OAASA,CACvB,CAQA,SAASC,IAAY,CACpB,OAAO,KAAK,QAAQ,MACrB,CAoBA,SAASC,GAAeC,EAAM,CAC7B,IAAIC,EACJ,GAAK,EAAE,gBAAgBF,IACtB,OAAO,IAAIA,GAAeC,CAAI,EAE/B,GAAK,CAACN,GAAcM,CAAI,EACvB,MAAM,IAAI,UAAWL,GAAQ,oEAAqEK,CAAI,CAAE,EAEzG,OAAAC,EAAIR,GAAWO,CAAI,EACnB,KAAK,QAAUA,EACf,KAAK,QAAUC,EAAE,UAAW,CAAE,EAC9B,KAAK,QAAUA,EAAE,UAAW,CAAE,EACvB,IACR,CAeAT,GAAaO,GAAe,OAAQ,eAAgB,EASpDR,GAAsBQ,GAAc,UAAW,SAAUD,GAAWF,EAAU,EAkB9EJ,GAAaO,GAAc,UAAW,MAAO,SAAcG,EAAM,CAChE,OAAO,KAAK,QAAS,KAAK,QAASA,CAAI,CACxC,CAAC,EAwBDV,GAAaO,GAAc,UAAW,MAAO,SAAcI,EAAOD,EAAM,CACvE,GAAK,UAAU,OAAS,EAAI,CAC3B,KAAK,QAAS,KAAK,QAAS,EAAGC,CAAM,EACrC,MACD,CACA,KAAK,QAAS,KAAK,QAASD,EAAKC,CAAM,CACxC,CAAC,EAKDb,GAAO,QAAUS,KCnKjB,IAAAK,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAY,KAyBhB,SAASC,GAAkBC,EAAI,CAC9B,IAAIC,EAAIH,GAAWE,CAAE,EACrB,MAAO,CACN,KAAQA,EACR,iBAAoBC,EAAE,iBACtB,UAAaA,EAAE,SAChB,CACD,CAKAJ,GAAO,QAAUE,KC3DjB,IAAAG,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAkB,IAClBC,GAAiB,KACjBC,GAAS,KACTC,GAAQ,IAgBZ,SAASC,GAAUC,EAAGC,EAAQ,CAC7B,IAAIC,EACAC,EACAC,EACAC,EAeJ,IAZAD,EAAKN,GAAOE,CAAE,EAGTL,GAAiBK,CAAE,EACvBG,EAAMP,GAAgBQ,CAAG,EAEzBD,EAAMN,GAAQO,CAAG,EAGlBF,EAAMF,EAAE,OAGFK,EAAI,EAAGA,EAAIH,EAAKG,IACrB,GAAKF,EAAKH,EAAGK,CAAE,IAAMJ,EACpB,MAAO,GAGT,MAAO,EACR,CAKAP,GAAO,QAAUK,KCvEjB,IAAAO,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAe,QAAS,8BAA+B,EACvDC,GAAkB,IAClBC,GAAiB,KACjBC,GAAQ,IACRC,GAAS,QAAS,uBAAwB,EAmB9C,SAASC,GAASC,EAAI,CACrB,IAAIC,EACAC,EACAC,EAEJ,GAAK,CAACT,GAAcM,CAAE,EACrB,MAAM,IAAI,UAAWF,GAAQ,oEAAqEE,CAAE,CAAE,EAGvG,OAAAG,EAAKN,GAAOG,CAAE,EAGTL,GAAiBK,CAAE,IACvBC,EAAML,GAAgBO,CAAG,GAG1BD,EAAMF,EAAE,OAECC,IAAQ,OAAWG,EAAWC,EAYvC,SAASD,EAAUE,EAAQ,CAC1B,IAAIC,EACJ,IAAMA,EAAI,EAAGA,EAAIL,EAAKK,IACrB,GAAKP,EAAGO,CAAE,IAAMD,EACf,MAAO,GAGT,MAAO,EACR,CAQA,SAASD,EAAWC,EAAQ,CAC3B,IAAIC,EACJ,IAAMA,EAAI,EAAGA,EAAIL,EAAKK,IACrB,GAAKN,EAAKD,EAAGO,CAAE,IAAMD,EACpB,MAAO,GAGT,MAAO,EACR,CACD,CAKAb,GAAO,QAAUM,KCzGjB,IAAAS,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAgCA,IAAIC,GAAc,QAAS,uDAAwD,EAC/EC,GAAO,KACPC,GAAU,KAKdF,GAAaC,GAAM,UAAWC,EAAQ,EAKtCH,GAAO,QAAUE,KC5CjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA0BA,IAAIC,GAAc,QAAS,yCAA0C,EAUjEC,GAAK,CAAC,EASVD,GAAaC,GAAI,WAAY,IAA6C,EAS1ED,GAAaC,GAAI,kBAAmB,GAAsD,EAS1FD,GAAaC,GAAI,mBAAoB,IAAsD,EAS3FD,GAAaC,GAAI,oBAAqB,IAAuD,EAK7FF,GAAO,QAAUE,KC7EjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAkB,IAClBC,GAAiB,KACjBC,GAAS,KACTC,GAAQ,IAkBZ,SAASC,GAAeC,EAAI,CAC3B,IAAIC,EAAKH,GAAOE,CAAE,EAClB,OAAKL,GAAiBK,CAAE,EAChBJ,GAAgBK,CAAG,EAEpBJ,GAAQI,CAAG,CACnB,CAKAP,GAAO,QAAUK,KCtDjB,IAAAG,EAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAgB,IAoBpB,SAASC,GAAkBC,EAAGC,EAAS,CACtC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAIJ,GADAJ,EAAMJ,EAAE,OACHC,EAAO,SAAWG,EACtB,MAAM,IAAI,WAAY,6EAA8E,EAErG,GAAKA,IAAQ,EACZ,MAAO,CAAC,EAQT,IALAF,EAAOJ,GAAeE,CAAE,EACxBG,EAAOL,GAAeG,CAAO,EAG7BI,EAAM,CAAE,CAAC,EAAG,CAAC,CAAE,EACTG,EAAI,EAAGA,EAAIJ,EAAKI,IACrBD,EAAIL,EAAMF,EAAGQ,CAAE,EACfF,EAAIH,EAAMF,EAAQO,CAAE,EACfF,EACJD,EAAK,CAAE,EAAE,KAAM,CAAEG,EAAGD,CAAE,CAAE,EAExBF,EAAK,CAAE,EAAE,KAAM,CAAEG,EAAGD,CAAE,CAAE,EAG1B,OAAOF,CACR,CAKAR,GAAO,QAAUE,KChFjB,IAAAU,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAgB,IAuBpB,SAASC,GAAoBC,EAAGC,EAAWC,EAAU,CACpD,IAAIC,EACAC,EACAC,EACAC,EACAC,EAIJ,GADAH,EAAMJ,EAAE,OACHI,IAAQ,EACZ,MAAO,CAAC,EAOT,IAJAD,EAAML,GAAeE,CAAE,EAGvBK,EAAM,CAAE,CAAC,EAAG,CAAC,CAAE,EACTE,EAAI,EAAGA,EAAIH,EAAKG,IACrBD,EAAIH,EAAKH,EAAGO,CAAE,EACTN,EAAU,KAAMC,EAASI,EAAGC,EAAGP,CAAE,EACrCK,EAAK,CAAE,EAAE,KAAM,CAAEE,EAAGD,CAAE,CAAE,EAExBD,EAAK,CAAE,EAAE,KAAM,CAAEE,EAAGD,CAAE,CAAE,EAG1B,OAAOD,CACR,CAKAR,GAAO,QAAUE,KC5EjB,IAAAS,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAgB,IAoBpB,SAASC,GAAkBC,EAAGC,EAAS,CACtC,IAAIC,EACAC,EACAC,EACAC,EACAC,EAIJ,GADAH,EAAMH,EAAE,OACHC,EAAO,SAAWE,EACtB,MAAM,IAAI,WAAY,6EAA8E,EAErG,GAAKA,IAAQ,EACZ,MAAO,CAAC,EAOT,IAJAD,EAAOJ,GAAeG,CAAO,EAG7BG,EAAM,CAAE,CAAC,EAAG,CAAC,CAAE,EACTE,EAAI,EAAGA,EAAIH,EAAKG,IACrBD,EAAIH,EAAMD,EAAQK,CAAE,EACfD,EACJD,EAAK,CAAE,EAAE,KAAME,CAAE,EAEjBF,EAAK,CAAE,EAAE,KAAME,CAAE,EAGnB,OAAOF,CACR,CAKAP,GAAO,QAAUE,KC5EjB,IAAAQ,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAgB,IAuBpB,SAASC,GAAoBC,EAAGC,EAAWC,EAAU,CACpD,IAAIC,EACAC,EACAC,EACAC,EAIJ,GADAF,EAAMJ,EAAE,OACHI,IAAQ,EACZ,MAAO,CAAC,EAOT,IAJAD,EAAML,GAAeE,CAAE,EAGvBK,EAAM,CAAE,CAAC,EAAG,CAAC,CAAE,EACTC,EAAI,EAAGA,EAAIF,EAAKE,IAChBL,EAAU,KAAMC,EAASC,EAAKH,EAAGM,CAAE,EAAGA,EAAGN,CAAE,EAC/CK,EAAK,CAAE,EAAE,KAAMC,CAAE,EAEjBD,EAAK,CAAE,EAAE,KAAMC,CAAE,EAGnB,OAAOD,CACR,CAKAR,GAAO,QAAUE,KC1EjB,IAAAQ,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAgB,IAoBpB,SAASC,GAAiBC,EAAGC,EAAS,CACrC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAIJ,GADAJ,EAAMJ,EAAE,OACHC,EAAO,SAAWG,EACtB,MAAM,IAAI,WAAY,6EAA8E,EAErG,GAAKA,IAAQ,EACZ,MAAO,CAAC,EAQT,IALAF,EAAOJ,GAAeE,CAAE,EACxBG,EAAOL,GAAeG,CAAO,EAG7BI,EAAM,CAAE,CAAC,EAAG,CAAC,CAAE,EACTG,EAAI,EAAGA,EAAIJ,EAAKI,IACrBD,EAAIL,EAAMF,EAAGQ,CAAE,EACfF,EAAIH,EAAMF,EAAQO,CAAE,EACfF,EACJD,EAAK,CAAE,EAAE,KAAME,CAAE,EAEjBF,EAAK,CAAE,EAAE,KAAME,CAAE,EAGnB,OAAOF,CACR,CAKAR,GAAO,QAAUE,KChFjB,IAAAU,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAgB,IAuBpB,SAASC,GAAmBC,EAAGC,EAAWC,EAAU,CACnD,IAAIC,EACAC,EACAC,EACAC,EACAC,EAIJ,GADAH,EAAMJ,EAAE,OACHI,IAAQ,EACZ,MAAO,CAAC,EAOT,IAJAD,EAAML,GAAeE,CAAE,EAGvBK,EAAM,CAAE,CAAC,EAAG,CAAC,CAAE,EACTE,EAAI,EAAGA,EAAIH,EAAKG,IACrBD,EAAIH,EAAKH,EAAGO,CAAE,EACTN,EAAU,KAAMC,EAASI,EAAGC,EAAGP,CAAE,EACrCK,EAAK,CAAE,EAAE,KAAMC,CAAE,EAEjBD,EAAK,CAAE,EAAE,KAAMC,CAAE,EAGnB,OAAOD,CACR,CAKAR,GAAO,QAAUE,KC5EjB,IAAAS,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkDA,SAASC,GAAUC,EAAQC,EAAOC,EAAM,CACvC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAIJ,GAFAT,EAAKF,EAAO,CAAE,EACdG,EAAKH,EAAO,CAAE,EACT,EAAAE,GAAM,GAAKC,GAAM,GAMtB,IAHAM,EAAIV,EAAQ,CAAE,EACdW,EAAIX,EAAQ,CAAE,EACdY,EAAIZ,EAAQ,CAAE,EACRM,EAAK,EAAGA,EAAKF,EAAIE,IAItB,IAHAC,EAAKG,EAAGJ,CAAG,EACXE,EAAKG,EAAGL,CAAG,EACXG,EAAKG,EAAGN,CAAG,EACLD,EAAK,EAAGA,EAAKF,EAAIE,IACtBI,EAAIJ,CAAG,EAAIH,EAAKK,EAAIF,CAAG,EAAGG,EAAIH,CAAG,CAAE,CAGtC,CAKAP,GAAO,QAAUC,KCnFjB,IAAAc,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA6CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KClDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkDA,SAASC,GAAUC,EAAQC,EAAOC,EAAM,CACvC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAKJ,GAHAd,EAAKF,EAAO,CAAE,EACdG,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EACT,EAAAE,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAMjC,IAHAU,EAAIf,EAAQ,CAAE,EACdgB,EAAIhB,EAAQ,CAAE,EACdiB,EAAIjB,EAAQ,CAAE,EACRQ,EAAK,EAAGA,EAAKH,EAAIG,IAItB,IAHAE,EAAKK,EAAGP,CAAG,EACXI,EAAKI,EAAGR,CAAG,EACXM,EAAKG,EAAGT,CAAG,EACLD,EAAK,EAAGA,EAAKH,EAAIG,IAItB,IAHAE,EAAKC,EAAIH,CAAG,EACZI,EAAKC,EAAIL,CAAG,EACZM,EAAKC,EAAIP,CAAG,EACND,EAAK,EAAGA,EAAKH,EAAIG,IACtBO,EAAIP,CAAG,EAAIJ,EAAKO,EAAIH,CAAG,EAAGK,EAAIL,CAAG,CAAE,CAIvC,CAKAR,GAAO,QAAUC,KC9FjB,IAAAmB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA6CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KClDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkDA,SAASC,GAAUC,EAAQC,EAAOC,EAAM,CACvC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAMJ,GAJAnB,EAAKF,EAAO,CAAE,EACdG,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EACdK,EAAKL,EAAO,CAAE,EACT,EAAAE,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAM5C,IAHAc,EAAIpB,EAAQ,CAAE,EACdqB,EAAIrB,EAAQ,CAAE,EACdsB,EAAItB,EAAQ,CAAE,EACRU,EAAK,EAAGA,EAAKJ,EAAII,IAItB,IAHAG,EAAKO,EAAGV,CAAG,EACXM,EAAKK,EAAGX,CAAG,EACXS,EAAKG,EAAGZ,CAAG,EACLD,EAAK,EAAGA,EAAKJ,EAAII,IAItB,IAHAG,EAAKC,EAAIJ,CAAG,EACZM,EAAKC,EAAIP,CAAG,EACZS,EAAKC,EAAIV,CAAG,EACND,EAAK,EAAGA,EAAKJ,EAAII,IAItB,IAHAG,EAAKC,EAAIJ,CAAG,EACZM,EAAKC,EAAIP,CAAG,EACZS,EAAKC,EAAIV,CAAG,EACND,EAAK,EAAGA,EAAKJ,EAAII,IACtBU,EAAIV,CAAG,EAAIL,EAAKS,EAAIJ,CAAG,EAAGO,EAAIP,CAAG,CAAE,CAKxC,CAKAT,GAAO,QAAUC,KCzGjB,IAAAwB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA6CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KClDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkDA,SAASC,GAAUC,EAAQC,EAAOC,EAAM,CACvC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAOJ,GALAxB,EAAKF,EAAO,CAAE,EACdG,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EACdK,EAAKL,EAAO,CAAE,EACdM,EAAKN,EAAO,CAAE,EACT,EAAAE,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAMvD,IAHAkB,EAAIzB,EAAQ,CAAE,EACd0B,EAAI1B,EAAQ,CAAE,EACd2B,EAAI3B,EAAQ,CAAE,EACRY,EAAK,EAAGA,EAAKL,EAAIK,IAItB,IAHAI,EAAKS,EAAGb,CAAG,EACXQ,EAAKM,EAAGd,CAAG,EACXY,EAAKG,EAAGf,CAAG,EACLD,EAAK,EAAGA,EAAKL,EAAIK,IAItB,IAHAI,EAAKC,EAAIL,CAAG,EACZQ,EAAKC,EAAIT,CAAG,EACZY,EAAKC,EAAIb,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IAItB,IAHAI,EAAKC,EAAIL,CAAG,EACZQ,EAAKC,EAAIT,CAAG,EACZY,EAAKC,EAAIb,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IAItB,IAHAI,EAAKC,EAAIL,CAAG,EACZQ,EAAKC,EAAIT,CAAG,EACZY,EAAKC,EAAIb,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IACtBa,EAAIb,CAAG,EAAIN,EAAKW,EAAIL,CAAG,EAAGS,EAAIT,CAAG,CAAE,CAMzC,CAKAV,GAAO,QAAUC,KCpHjB,IAAA6B,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA6CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KClDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAmCA,SAASC,GAASC,EAAGC,EAAGC,EAAGC,EAAOC,EAAOC,EAAKC,EAAM,CACnD,IAAIC,EACAC,EACAC,EAOJ,GALAF,EAAIH,EAAOC,CAAI,EAGfG,EAAIH,EAAM,EAELG,IAAML,EAAQ,CAElB,IAAMM,EAAI,EAAGA,EAAIF,EAAGE,IACnBP,EAAGO,CAAE,EAAIH,EAAKN,EAAGS,CAAE,EAAGR,EAAGQ,CAAE,CAAE,EAE9B,MACD,CAEA,IAAMA,EAAI,EAAGA,EAAIF,EAAGE,IACnBV,GAASC,EAAGS,CAAE,EAAGR,EAAGQ,CAAE,EAAGP,EAAGO,CAAE,EAAGN,EAAOC,EAAOI,EAAGF,CAAI,CAExD,CAiCA,SAASI,GAAUC,EAAQP,EAAOE,EAAM,CACvC,OAAOP,GAASY,EAAQ,CAAE,EAAGA,EAAQ,CAAE,EAAGA,EAAQ,CAAE,EAAGP,EAAM,OAAQA,EAAO,EAAGE,CAAI,CACpF,CAKAR,GAAO,QAAUY,KChGjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA6CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KClDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAgCA,SAASC,GAAMC,EAAI,CAClB,IAAIC,EACAC,EACA,EAIJ,IAFAA,EAAMF,EAAE,OACRC,EAAM,CAAC,EACD,EAAI,EAAG,EAAIC,EAAK,IACrBD,EAAI,KAAMD,EAAG,CAAE,CAAE,EAElB,OAAOC,CACR,CAKAH,GAAO,QAAUC,KChDjB,IAAAI,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,SAASC,GAAQC,EAAOC,EAAM,CAC7B,IAAIC,EACA,EAIJ,IADAA,EAAM,CAAC,EACD,EAAI,EAAG,EAAID,EAAK,IACrBC,EAAI,KAAMF,CAAM,EAEjB,OAAOE,CACR,CAKAJ,GAAO,QAAUC,KCpDjB,IAAAI,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,KAeb,SAASC,GAAOC,EAAM,CACrB,OAAOF,GAAQ,EAAKE,CAAI,CACzB,CAKAH,GAAO,QAAUE,KC5CjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAO,KACPC,GAAQ,KACRC,GAAS,QAAS,uBAAwB,EA6D9C,SAASC,GAAgBC,EAAGC,EAASC,EAAW,CAC/C,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAIJ,GAFAJ,EAAIJ,EAAS,OACbK,EAAIN,EAAQ,OACPK,EAAIC,EACR,MAAM,IAAI,MAAO,8JAA+J,EAIjL,IADAJ,EAAOH,EACDS,EAAIF,EAAGE,EAAIH,EAAGG,IACnBN,EAAO,CAAEA,CAAK,EAOf,IAHAE,EAAKR,GAAOS,CAAE,EAGRG,EAAIH,EAAE,EAAGG,GAAK,EAAGA,IAEtB,GADAC,EAAIH,EAAID,EAAIG,EACP,EAAAC,EAAI,GAMT,IAFAF,EAAIP,EAASS,CAAE,EACfN,EAAMF,EAAUO,CAAE,EACbL,IAAQ,GAAKA,EAAMI,EACvB,MAAM,IAAI,MAAOV,GAAQ,8PAA+PF,GAAMK,CAAQ,EAAE,KAAM,IAAK,EAAGL,GAAMM,CAAS,EAAE,KAAM,IAAK,EAAGO,CAAE,CAAE,EAE1V,GAAKD,IAAMJ,EAEVC,EAAII,CAAE,EAAI,UACCD,IAAM,EAEjBH,EAAII,CAAE,EAAI,MAGV,OAAM,IAAI,MAAOX,GAAQ,2IAA4IF,GAAMK,CAAQ,EAAE,KAAM,IAAK,EAAGL,GAAMM,CAAS,EAAE,KAAM,IAAK,EAAGO,CAAE,CAAE,EAIxO,MAAO,CACN,IAAOT,EACP,KAAQG,EACR,MAASP,GAAMM,CAAS,EACxB,QAAWG,CACZ,CACD,CAKAV,GAAO,QAAUI,KChJjB,IAAAY,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAmDA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCxDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAiB,KAiCrB,SAASC,GAAWC,EAAQC,EAAQC,EAAM,CACzC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAKJ,GAHAL,EAAKjB,EAAQ,CAAE,EACfM,EAAKW,EAAI,CAAE,EACXV,EAAKU,EAAI,CAAE,EACN,EAAAX,GAAM,GAAKC,GAAM,GAmBtB,IAhBAY,EAAItB,GAAgBE,EAAQ,CAAE,EAAGC,EAAQ,CAAE,EAAGiB,CAAG,EACjDG,EAAID,EAAE,KACND,EAAKC,EAAE,QACPjB,EAAMgB,EAAI,CAAE,EACZf,EAAMe,EAAI,CAAE,EAEZC,EAAItB,GAAgBE,EAAQ,CAAE,EAAGC,EAAQ,CAAE,EAAGiB,CAAG,EACjDI,EAAIF,EAAE,KACND,EAAKC,EAAE,QACPf,EAAMc,EAAI,CAAE,EACZb,EAAMa,EAAI,CAAE,EAEZI,EAAIvB,EAAQ,CAAE,EAEdY,EAAK,EACLE,EAAK,EACCJ,EAAK,EAAGA,EAAKF,EAAIE,IAAO,CAM7B,IALAC,EAAK,EACLE,EAAK,EACLE,EAAKM,EAAGT,CAAG,EACXI,EAAKM,EAAGR,CAAG,EACXG,EAAKM,EAAGb,CAAG,EACLD,EAAK,EAAGA,EAAKF,EAAIE,IACtBQ,EAAIR,CAAG,EAAIP,EAAKa,EAAIJ,CAAG,EAAGK,EAAIH,CAAG,CAAE,EACnCF,GAAMR,EACNU,GAAMR,EAEPO,GAAMR,EACNU,GAAMR,CACP,CACD,CAKAT,GAAO,QAAUE,KCvHjB,IAAAyB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAiDA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCtDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAiB,KAiCrB,SAASC,GAAWC,EAAQC,EAAQC,EAAM,CACzC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAMJ,GAJAL,EAAK1B,EAAQ,CAAE,EACfQ,EAAKkB,EAAI,CAAE,EACXjB,EAAKiB,EAAI,CAAE,EACXhB,EAAKgB,EAAI,CAAE,EACN,EAAAlB,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAqBjC,IAlBAkB,EAAI/B,GAAgBE,EAAQ,CAAE,EAAGC,EAAQ,CAAE,EAAG0B,CAAG,EACjDG,EAAID,EAAE,KACND,EAAKC,EAAE,QACP1B,EAAMyB,EAAI,CAAE,EACZxB,EAAMwB,EAAI,CAAE,EACZvB,EAAMuB,EAAI,CAAE,EAEZC,EAAI/B,GAAgBE,EAAQ,CAAE,EAAGC,EAAQ,CAAE,EAAG0B,CAAG,EACjDI,EAAIF,EAAE,KACND,EAAKC,EAAE,QACPvB,EAAMsB,EAAI,CAAE,EACZrB,EAAMqB,EAAI,CAAE,EACZpB,EAAMoB,EAAI,CAAE,EAEZI,EAAIhC,EAAQ,CAAE,EAEdiB,EAAK,EACLG,EAAK,EACCN,EAAK,EAAGA,EAAKH,EAAIG,IAAO,CAM7B,IALAE,EAAK,EACLG,EAAK,EACLG,EAAKQ,EAAGb,CAAG,EACXO,EAAKO,EAAGX,CAAG,EACXM,EAAKM,EAAGlB,CAAG,EACLD,EAAK,EAAGA,EAAKH,EAAIG,IAAO,CAM7B,IALAE,EAAK,EACLG,EAAK,EACLG,EAAKC,EAAIN,CAAG,EACZO,EAAKC,EAAIL,CAAG,EACZM,EAAKC,EAAIb,CAAG,EACND,EAAK,EAAGA,EAAKH,EAAIG,IACtBa,EAAIb,CAAG,EAAIV,EAAKmB,EAAIN,CAAG,EAAGQ,EAAIL,CAAG,CAAE,EACnCH,GAAMZ,EACNe,GAAMZ,EAEPU,GAAMZ,EACNe,GAAMZ,CACP,CACAU,GAAMZ,EACNe,GAAMZ,CACP,CACD,CAKAX,GAAO,QAAUE,KC5IjB,IAAAkC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAiDA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCtDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAiB,KAiCrB,SAASC,GAAWC,EAAQC,EAAQC,EAAM,CACzC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GACAC,GACAC,GACAC,GAOJ,GALAL,EAAKnC,EAAQ,CAAE,EACfU,EAAKyB,EAAI,CAAE,EACXxB,EAAKwB,EAAI,CAAE,EACXvB,EAAKuB,EAAI,CAAE,EACXtB,EAAKsB,EAAI,CAAE,EACN,EAAAzB,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAuB5C,IApBAwB,GAAIxC,GAAgBE,EAAQ,CAAE,EAAGC,EAAQ,CAAE,EAAGmC,CAAG,EACjDG,GAAID,GAAE,KACND,EAAKC,GAAE,QACPnC,EAAMkC,EAAI,CAAE,EACZjC,EAAMiC,EAAI,CAAE,EACZhC,EAAMgC,EAAI,CAAE,EACZ/B,EAAM+B,EAAI,CAAE,EAEZC,GAAIxC,GAAgBE,EAAQ,CAAE,EAAGC,EAAQ,CAAE,EAAGmC,CAAG,EACjDI,GAAIF,GAAE,KACND,EAAKC,GAAE,QACP/B,EAAM8B,EAAI,CAAE,EACZ7B,EAAM6B,EAAI,CAAE,EACZ5B,EAAM4B,EAAI,CAAE,EACZ3B,EAAM2B,EAAI,CAAE,EAEZI,GAAIzC,EAAQ,CAAE,EAEdsB,EAAK,EACLI,EAAK,EACCR,EAAK,EAAGA,EAAKJ,EAAII,IAAO,CAM7B,IALAG,EAAK,EACLI,EAAK,EACLI,EAAKU,GAAGjB,CAAG,EACXU,EAAKQ,GAAGd,CAAG,EACXS,EAAKM,GAAGvB,CAAG,EACLD,EAAK,EAAGA,EAAKJ,EAAII,IAAO,CAM7B,IALAG,EAAK,EACLI,EAAK,EACLI,EAAKC,EAAIR,CAAG,EACZU,EAAKC,EAAIP,CAAG,EACZS,EAAKC,EAAIlB,CAAG,EACND,EAAK,EAAGA,EAAKJ,EAAII,IAAO,CAM7B,IALAG,EAAK,EACLI,EAAK,EACLI,EAAKC,EAAIR,CAAG,EACZU,EAAKC,EAAIP,CAAG,EACZS,EAAKC,EAAIlB,CAAG,EACND,EAAK,EAAGA,EAAKJ,EAAII,IACtBkB,EAAIlB,CAAG,EAAIb,EAAKyB,EAAIR,CAAG,EAAGW,EAAIP,CAAG,CAAE,EACnCJ,GAAMhB,EACNoB,GAAMhB,EAEPa,GAAMhB,EACNoB,GAAMhB,CACP,CACAa,GAAMhB,EACNoB,GAAMhB,CACP,CACAa,GAAMhB,EACNoB,GAAMhB,CACP,CACD,CAKAb,GAAO,QAAUE,KCjKjB,IAAA2C,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAiDA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCtDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAiB,KAiCrB,SAASC,GAAWC,EAAQC,EAAQC,EAAM,CACzC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GAQJ,GANAL,GAAK5C,EAAQ,CAAE,EACfY,EAAKgC,GAAI,CAAE,EACX/B,EAAK+B,GAAI,CAAE,EACX9B,EAAK8B,GAAI,CAAE,EACX7B,EAAK6B,GAAI,CAAE,EACX5B,EAAK4B,GAAI,CAAE,EACN,EAAAhC,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAyBvD,IAtBA8B,GAAIjD,GAAgBE,EAAQ,CAAE,EAAGC,EAAQ,CAAE,EAAG4C,EAAG,EACjDG,GAAID,GAAE,KACND,GAAKC,GAAE,QACP5C,EAAM2C,GAAI,CAAE,EACZ1C,EAAM0C,GAAI,CAAE,EACZzC,EAAMyC,GAAI,CAAE,EACZxC,EAAMwC,GAAI,CAAE,EACZvC,EAAMuC,GAAI,CAAE,EAEZC,GAAIjD,GAAgBE,EAAQ,CAAE,EAAGC,EAAQ,CAAE,EAAG4C,EAAG,EACjDI,GAAIF,GAAE,KACND,GAAKC,GAAE,QACPvC,EAAMsC,GAAI,CAAE,EACZrC,EAAMqC,GAAI,CAAE,EACZpC,EAAMoC,GAAI,CAAE,EACZnC,EAAMmC,GAAI,CAAE,EACZlC,EAAMkC,GAAI,CAAE,EAEZI,GAAIlD,EAAQ,CAAE,EAEd2B,EAAK,EACLK,EAAK,EACCV,EAAK,EAAGA,EAAKL,EAAIK,IAAO,CAM7B,IALAI,EAAK,EACLK,EAAK,EACLK,EAAKY,GAAGrB,CAAG,EACXa,GAAKS,GAAGjB,CAAG,EACXY,GAAKM,GAAG5B,CAAG,EACLD,EAAK,EAAGA,EAAKL,EAAIK,IAAO,CAM7B,IALAI,EAAK,EACLK,EAAK,EACLK,EAAKC,EAAIV,CAAG,EACZa,GAAKC,GAAIT,CAAG,EACZY,GAAKC,GAAIvB,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IAAO,CAM7B,IALAI,EAAK,EACLK,EAAK,EACLK,EAAKC,EAAIV,CAAG,EACZa,GAAKC,GAAIT,CAAG,EACZY,GAAKC,GAAIvB,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IAAO,CAM7B,IALAI,EAAK,EACLK,EAAK,EACLK,EAAKC,EAAIV,CAAG,EACZa,EAAKC,GAAIT,CAAG,EACZY,GAAKC,GAAIvB,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IACtBuB,GAAIvB,CAAG,EAAIhB,EAAK+B,EAAIV,CAAG,EAAGc,EAAIT,CAAG,CAAE,EACnCL,GAAMpB,EACNyB,GAAMpB,EAEPgB,GAAMpB,EACNyB,GAAMpB,CACP,CACAgB,GAAMpB,EACNyB,GAAMpB,CACP,CACAgB,GAAMpB,EACNyB,GAAMpB,CACP,CACAgB,GAAMpB,EACNyB,GAAMpB,CACP,CACD,CAKAf,GAAO,QAAUE,KCtLjB,IAAAoD,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAiDA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCtDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAiB,KAqCrB,SAASC,GAAeC,EAAQC,EAAQC,EAAM,CAC7C,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAKJ,GAHAP,EAAK3B,EAAQ,CAAE,EACfU,EAAKiB,EAAI,CAAE,EACXhB,EAAKgB,EAAI,CAAE,EACN,EAAAjB,GAAM,GAAKC,GAAM,GAiCtB,IA9BAkB,EAAIhC,GAAgBE,EAAQ,CAAE,EAAGC,EAAQ,CAAE,EAAG2B,CAAG,EACjDG,EAAID,EAAE,KACND,EAAKC,EAAE,QACP3B,EAAM0B,EAAI,CAAE,EACZzB,EAAMyB,EAAI,CAAE,EAEZC,EAAIhC,GAAgBE,EAAQ,CAAE,EAAGC,EAAQ,CAAE,EAAG2B,CAAG,EACjDI,EAAIF,EAAE,KACND,EAAKC,EAAE,QACPzB,EAAMwB,EAAI,CAAE,EACZvB,EAAMuB,EAAI,CAAE,EAEZC,EAAIhC,GAAgBE,EAAQ,CAAE,EAAGC,EAAQ,CAAE,EAAG2B,CAAG,EACjDK,EAAIH,EAAE,KACND,EAAKC,EAAE,QACPvB,EAAMsB,EAAI,CAAE,EACZrB,EAAMqB,EAAI,CAAE,EAEZC,EAAIhC,GAAgBE,EAAQ,CAAE,EAAGC,EAAQ,CAAE,EAAG2B,CAAG,EACjDM,EAAIJ,EAAE,KACND,EAAKC,EAAE,QACPrB,EAAMoB,EAAI,CAAE,EACZnB,EAAMmB,EAAI,CAAE,EAEZM,EAAInC,EAAQ,CAAE,EAEdgB,EAAK,EACLE,EAAK,EACLE,EAAK,EACLE,EAAK,EACCR,EAAK,EAAGA,EAAKF,EAAIE,IAAO,CAU7B,IATAC,EAAK,EACLE,EAAK,EACLE,EAAK,EACLE,EAAK,EACLE,EAAKQ,EAAGf,CAAG,EACXQ,EAAKQ,EAAGd,CAAG,EACXO,EAAKQ,EAAGb,CAAG,EACXM,EAAKQ,EAAGZ,CAAG,EACXK,EAAKQ,EAAGrB,CAAG,EACLD,EAAK,EAAGA,EAAKF,EAAIE,IACtBc,EAAId,CAAG,EAAIX,EAAKqB,EAAIR,CAAG,EAAGS,EAAIP,CAAG,EAAGQ,EAAIN,CAAG,EAAGO,EAAIL,CAAG,CAAE,EACvDN,GAAMZ,EACNc,GAAMZ,EACNc,GAAMZ,EACNc,GAAMZ,EAEPO,GAAMZ,EACNc,GAAMZ,EACNc,GAAMZ,EACNc,GAAMZ,CACP,CACD,CAKAb,GAAO,QAAUE,KC7JjB,IAAAqC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqDA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1DjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAiB,KA0CrB,SAASC,GAAYC,EAAQC,EAAQC,EAAM,CAC1C,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GACAC,GACAC,GACAC,GAKJ,GAHAR,EAAKhC,EAAQ,CAAE,EACfY,EAAKoB,EAAI,CAAE,EACXnB,EAAKmB,EAAI,CAAE,EACN,EAAApB,GAAM,GAAKC,GAAM,GAwCtB,IArCAqB,EAAIrC,GAAgBE,EAAQ,CAAE,EAAGC,EAAQ,CAAE,EAAGgC,CAAG,EACjDG,EAAID,EAAE,KACND,EAAKC,EAAE,QACPhC,EAAM+B,EAAI,CAAE,EACZ9B,EAAM8B,EAAI,CAAE,EAEZC,EAAIrC,GAAgBE,EAAQ,CAAE,EAAGC,EAAQ,CAAE,EAAGgC,CAAG,EACjDI,EAAIF,EAAE,KACND,EAAKC,EAAE,QACP9B,EAAM6B,EAAI,CAAE,EACZ5B,EAAM4B,EAAI,CAAE,EAEZC,EAAIrC,GAAgBE,EAAQ,CAAE,EAAGC,EAAQ,CAAE,EAAGgC,CAAG,EACjDK,GAAIH,EAAE,KACND,EAAKC,EAAE,QACP5B,EAAM2B,EAAI,CAAE,EACZ1B,EAAM0B,EAAI,CAAE,EAEZC,EAAIrC,GAAgBE,EAAQ,CAAE,EAAGC,EAAQ,CAAE,EAAGgC,CAAG,EACjDM,GAAIJ,EAAE,KACND,EAAKC,EAAE,QACP1B,EAAMyB,EAAI,CAAE,EACZxB,EAAMwB,EAAI,CAAE,EAEZC,EAAIrC,GAAgBE,EAAQ,CAAE,EAAGC,EAAQ,CAAE,EAAGgC,CAAG,EACjDO,GAAIL,EAAE,KACND,EAAKC,EAAE,QACPxB,EAAMuB,EAAI,CAAE,EACZtB,EAAMsB,EAAI,CAAE,EAEZO,GAAIzC,EAAQ,CAAE,EAEdkB,EAAK,EACLE,EAAK,EACLE,EAAK,EACLE,EAAK,EACLE,EAAK,EACCV,EAAK,EAAGA,EAAKF,EAAIE,IAAO,CAY7B,IAXAC,EAAK,EACLE,EAAK,EACLE,EAAK,EACLE,EAAK,EACLE,EAAK,EACLE,EAAKS,EAAGlB,CAAG,EACXU,EAAKS,EAAGjB,CAAG,EACXS,EAAKS,GAAGhB,CAAG,EACXQ,EAAKS,GAAGf,CAAG,EACXO,EAAKS,GAAGd,CAAG,EACXM,EAAKS,GAAGzB,CAAG,EACLD,EAAK,EAAGA,EAAKF,EAAIE,IACtBiB,EAAIjB,CAAG,EAAIb,EAAKyB,EAAIV,CAAG,EAAGW,EAAIT,CAAG,EAAGU,EAAIR,CAAG,EAAGS,EAAIP,CAAG,EAAGQ,EAAIN,CAAG,CAAE,EACjER,GAAMd,EACNgB,GAAMd,EACNgB,GAAMd,EACNgB,GAAMd,EACNgB,GAAMd,EAEPO,GAAMd,EACNgB,GAAMd,EACNgB,GAAMd,EACNgB,GAAMd,EACNgB,GAAMd,CACP,CACD,CAKAf,GAAO,QAAUE,KCnLjB,IAAA2C,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA0DA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC/DjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAiB,KAmCrB,SAASC,GAAYC,EAAQC,EAAQC,EAAM,CAC1C,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAKJ,GAHAN,EAAKtB,EAAQ,CAAE,EACfQ,EAAKc,EAAI,CAAE,EACXb,EAAKa,EAAI,CAAE,EACN,EAAAd,GAAM,GAAKC,GAAM,GA0BtB,IAvBAe,EAAI3B,GAAgBE,EAAQ,CAAE,EAAGC,EAAQ,CAAE,EAAGsB,CAAG,EACjDG,EAAID,EAAE,KACND,EAAKC,EAAE,QACPtB,EAAMqB,EAAI,CAAE,EACZpB,EAAMoB,EAAI,CAAE,EAEZC,EAAI3B,GAAgBE,EAAQ,CAAE,EAAGC,EAAQ,CAAE,EAAGsB,CAAG,EACjDI,EAAIF,EAAE,KACND,EAAKC,EAAE,QACPpB,EAAMmB,EAAI,CAAE,EACZlB,EAAMkB,EAAI,CAAE,EAEZC,EAAI3B,GAAgBE,EAAQ,CAAE,EAAGC,EAAQ,CAAE,EAAGsB,CAAG,EACjDK,EAAIH,EAAE,KACND,EAAKC,EAAE,QACPlB,EAAMiB,EAAI,CAAE,EACZhB,EAAMgB,EAAI,CAAE,EAEZK,EAAI7B,EAAQ,CAAE,EAEdc,EAAK,EACLE,EAAK,EACLE,EAAK,EACCN,EAAK,EAAGA,EAAKF,EAAIE,IAAO,CAQ7B,IAPAC,EAAK,EACLE,EAAK,EACLE,EAAK,EACLE,EAAKO,EAAGZ,CAAG,EACXM,EAAKO,EAAGX,CAAG,EACXK,EAAKO,EAAGV,CAAG,EACXI,EAAKO,EAAGjB,CAAG,EACLD,EAAK,EAAGA,EAAKF,EAAIE,IACtBW,EAAIX,CAAG,EAAIT,EAAKiB,EAAIN,CAAG,EAAGO,EAAIL,CAAG,EAAGM,EAAIJ,CAAG,CAAE,EAC7CJ,GAAMV,EACNY,GAAMV,EACNY,GAAMV,EAEPO,GAAMV,EACNY,GAAMV,EACNY,GAAMV,CACP,CACD,CAKAX,GAAO,QAAUE,KC1IjB,IAAA+B,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAmDA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCxDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAiB,KAkCrB,SAASC,GAAUC,EAAQC,EAAQC,EAAM,CACxC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAKJ,GAHAJ,EAAKZ,EAAQ,CAAE,EACfI,EAAKQ,EAAI,CAAE,EACXP,EAAKO,EAAI,CAAE,EACN,EAAAR,GAAM,GAAKC,GAAM,GAYtB,IATAS,EAAIjB,GAAgBE,EAAQ,CAAE,EAAGC,EAAQ,CAAE,EAAGY,CAAG,EACjDG,EAAID,EAAE,KACND,EAAKC,EAAE,QACPZ,EAAMW,EAAI,CAAE,EACZV,EAAMU,EAAI,CAAE,EAEZG,EAAIjB,EAAQ,CAAE,EAEdU,EAAK,EACCF,EAAK,EAAGA,EAAKF,EAAIE,IAAO,CAI7B,IAHAC,EAAK,EACLE,EAAKK,EAAGN,CAAG,EACXE,EAAKK,EAAGT,CAAG,EACLD,EAAK,EAAGA,EAAKF,EAAIE,IACtBK,EAAIL,CAAG,EAAIL,EAAKS,EAAIF,CAAG,CAAE,EACzBA,GAAMN,EAEPO,GAAMN,CACP,CACD,CAKAP,GAAO,QAAUE,KCvGjB,IAAAmB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkDA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAiB,KAkCrB,SAASC,GAAUC,EAAQC,EAAQC,EAAM,CACxC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAMJ,GAJAJ,EAAKlB,EAAQ,CAAE,EACfK,EAAKa,EAAI,CAAE,EACXZ,EAAKY,EAAI,CAAE,EACXX,EAAKW,EAAI,CAAE,EACN,EAAAb,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAYjC,IATAa,EAAIvB,GAAgBE,EAAQ,CAAE,EAAGC,EAAQ,CAAE,EAAGkB,CAAG,EACjDG,EAAID,EAAE,KACND,EAAKC,EAAE,QACPlB,EAAMiB,EAAI,CAAE,EACZhB,EAAMgB,EAAI,CAAE,EACZf,EAAMe,EAAI,CAAE,EAEZG,EAAIvB,EAAQ,CAAE,EACdc,EAAK,EACCH,EAAK,EAAGA,EAAKH,EAAIG,IAAO,CAI7B,IAHAE,EAAK,EACLG,EAAKM,EAAGR,CAAG,EACXI,EAAKK,EAAGZ,CAAG,EACLD,EAAK,EAAGA,EAAKH,EAAIG,IAAO,CAI7B,IAHAE,EAAK,EACLG,EAAKC,EAAIH,CAAG,EACZI,EAAKC,EAAIR,CAAG,EACND,EAAK,EAAGA,EAAKH,EAAIG,IACtBQ,EAAIR,CAAG,EAAIP,EAAKa,EAAIH,CAAG,CAAE,EACzBA,GAAMT,EAEPU,GAAMT,CACP,CACAU,GAAMT,CACP,CACD,CAKAR,GAAO,QAAUE,KCpHjB,IAAAyB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkDA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAiB,KAkCrB,SAASC,GAAUC,EAAQC,EAAQC,EAAM,CACxC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAOJ,GALAJ,EAAKxB,EAAQ,CAAE,EACfM,EAAKkB,EAAI,CAAE,EACXjB,EAAKiB,EAAI,CAAE,EACXhB,EAAKgB,EAAI,CAAE,EACXf,EAAKe,EAAI,CAAE,EACN,EAAAlB,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAa5C,IAVAiB,EAAI7B,GAAgBE,EAAQ,CAAE,EAAGC,EAAQ,CAAE,EAAGwB,CAAG,EACjDG,EAAID,EAAE,KACND,EAAKC,EAAE,QACPxB,EAAMuB,EAAI,CAAE,EACZtB,EAAMsB,EAAI,CAAE,EACZrB,EAAMqB,EAAI,CAAE,EACZpB,EAAMoB,EAAI,CAAE,EAEZG,EAAI7B,EAAQ,CAAE,EACdkB,EAAK,EACCJ,EAAK,EAAGA,EAAKJ,EAAII,IAAO,CAI7B,IAHAG,EAAK,EACLI,EAAKO,EAAGV,CAAG,EACXM,EAAKK,EAAGf,CAAG,EACLD,EAAK,EAAGA,EAAKJ,EAAII,IAAO,CAI7B,IAHAG,EAAK,EACLI,EAAKC,EAAIJ,CAAG,EACZM,EAAKC,EAAIX,CAAG,EACND,EAAK,EAAGA,EAAKJ,EAAII,IAAO,CAI7B,IAHAG,EAAK,EACLI,EAAKC,EAAIJ,CAAG,EACZM,EAAKC,EAAIX,CAAG,EACND,EAAK,EAAGA,EAAKJ,EAAII,IACtBW,EAAIX,CAAG,EAAIT,EAAKiB,EAAIJ,CAAG,CAAE,EACzBA,GAAMZ,EAEPa,GAAMZ,CACP,CACAa,GAAMZ,CACP,CACAa,GAAMZ,CACP,CACD,CAKAT,GAAO,QAAUE,KClIjB,IAAA+B,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkDA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAiB,KAkCrB,SAASC,GAAUC,EAAQC,EAAQC,EAAM,CACxC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAQJ,GANAJ,EAAK9B,EAAQ,CAAE,EACfO,EAAKuB,EAAI,CAAE,EACXtB,EAAKsB,EAAI,CAAE,EACXrB,EAAKqB,EAAI,CAAE,EACXpB,EAAKoB,EAAI,CAAE,EACXnB,EAAKmB,EAAI,CAAE,EACN,EAAAvB,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAcvD,IAXAqB,EAAInC,GAAgBE,EAAQ,CAAE,EAAGC,EAAQ,CAAE,EAAG8B,CAAG,EACjDG,EAAID,EAAE,KACND,EAAKC,EAAE,QACP9B,EAAM6B,EAAI,CAAE,EACZ5B,EAAM4B,EAAI,CAAE,EACZ3B,EAAM2B,EAAI,CAAE,EACZ1B,EAAM0B,EAAI,CAAE,EACZzB,EAAMyB,EAAI,CAAE,EAEZG,EAAInC,EAAQ,CAAE,EACdsB,EAAK,EACCL,EAAK,EAAGA,EAAKL,EAAIK,IAAO,CAI7B,IAHAI,EAAK,EACLK,EAAKQ,EAAGZ,CAAG,EACXQ,EAAKK,EAAGlB,CAAG,EACLD,EAAK,EAAGA,EAAKL,EAAIK,IAAO,CAI7B,IAHAI,EAAK,EACLK,EAAKC,EAAIL,CAAG,EACZQ,EAAKC,EAAId,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IAAO,CAI7B,IAHAI,EAAK,EACLK,EAAKC,EAAIL,CAAG,EACZQ,EAAKC,EAAId,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IAAO,CAI7B,IAHAI,EAAK,EACLK,EAAKC,EAAIL,CAAG,EACZQ,EAAKC,EAAId,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IACtBc,EAAId,CAAG,EAAIX,EAAKqB,EAAIL,CAAG,CAAE,EACzBA,GAAMf,EAEPgB,GAAMf,CACP,CACAgB,GAAMf,CACP,CACAgB,GAAMf,CACP,CACAgB,GAAMf,CACP,CACD,CAKAV,GAAO,QAAUE,KChJjB,IAAAqC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkDA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAM,QAAS,+BAAgC,EA2BnD,SAASC,GAAgBC,EAAGC,EAAI,CAC/B,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGJ,GADAJ,EAAIN,EAAE,OACDM,GAAK,GAAKL,GAAK,EACnB,MAAO,CAAC,EAOT,IAJAI,EAAMP,GAAKQ,EAAGL,CAAE,EAGhBG,EAAM,CAAC,EACDI,EAAI,EAAGA,EAAIP,EAAGO,IACnBJ,EAAI,KAAM,CAAE,EAIb,IADAF,EAAM,CAAC,EACDM,EAAI,EAAGA,EAAIH,EAAKG,IAAM,CAG3B,IADAE,EAAIF,EACEC,EAAIR,EAAE,EAAGQ,GAAK,EAAGA,IACtBF,EAAIG,EAAIJ,EACRI,GAAKH,EACLG,GAAKJ,EACLF,EAAKK,CAAE,EAAIF,EAIZ,IADAJ,EAAM,CAAC,EACDM,EAAI,EAAGA,EAAIR,EAAGQ,IACnBN,EAAI,KAAMH,EAAGI,EAAKK,CAAE,CAAE,CAAE,EAEzBP,EAAI,KAAMC,CAAI,CACf,CACA,OAAOD,CACR,CAKAL,GAAO,QAAUE,KChGjB,IAAAY,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCzCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoCA,SAASC,GAAkBC,EAAIC,EAAK,CACnC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EAKJ,IAHAJ,EAAIH,EAAG,OACPI,EAAIH,EAAG,OACPC,EAAM,CAAC,EACDI,EAAI,EAAGA,EAAIH,EAAGG,IAEnB,IADAD,EAAIL,EAAIM,CAAE,EACJC,EAAI,EAAGA,EAAIH,EAAGG,IACnBL,EAAI,KAAM,CAAEG,EAAGJ,EAAIM,CAAE,CAAE,CAAE,EAG3B,OAAOL,CACR,CAKAJ,GAAO,QAAUC,KC3DjB,IAAAS,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,SAASC,GAAiBC,EAAI,CAC7B,IAAIC,EACAC,EACAC,EACAC,EACAC,EAIJ,IAFAH,EAAIF,EAAE,OACNC,EAAM,CAAC,EACDG,EAAI,EAAGA,EAAIF,EAAGE,IAEnB,IADAD,EAAIH,EAAGI,CAAE,EACHC,EAAI,EAAGA,EAAIH,EAAGG,IACnBJ,EAAI,KAAM,CAAEE,EAAGH,EAAGK,CAAE,CAAE,CAAE,EAG1B,OAAOJ,CACR,CAKAH,GAAO,QAAUC,KCvDjB,IAAAO,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCzCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAgB,IAepB,SAASC,GAAMC,EAAI,CAClB,IAAIC,EACAC,EACAC,EACAC,EAUJ,IAPAD,EAAML,GAAeE,CAAE,EAGvBE,EAAMF,EAAE,OAGRC,EAAM,CAAC,EACDG,EAAI,EAAGA,EAAIF,EAAKE,IACrBH,EAAI,KAAME,EAAKH,EAAGI,CAAE,CAAE,EAEvB,OAAOH,CACR,CAKAJ,GAAO,QAAUE,KC5DjB,IAAAM,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAQ,QAAS,iCAAkC,EA+BvD,SAASC,GAAeC,EAAGC,EAAQ,CAClC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGJ,GADAH,EAAMJ,EAAE,OACHI,IAAQ,EACZ,OAAOJ,EAKR,IAHAG,EAAOH,EAAG,CAAE,EACZE,EAAQ,EACRG,EAAM,EACAE,EAAI,EAAGA,EAAIH,EAAKG,IACrBD,EAAIN,EAAGO,CAAE,EACJD,IAAMH,GACVD,GAAS,EACJA,GAASD,IACbD,EAAGK,CAAI,EAAIF,EACXE,GAAO,KAGRF,EAAOG,EACPJ,EAAQ,EACRF,EAAGK,CAAI,EAAIF,EACXE,GAAO,GAGT,OAAAL,EAAE,OAASK,EACJL,CACR,CA4BA,SAASQ,GAAiBR,EAAGC,EAAQ,CACpC,IAAIC,EACAC,EACAC,EACAC,EACAI,EACAH,EACAC,EAGJ,GADAH,EAAMJ,EAAE,OACHI,IAAQ,EACZ,OAAOJ,EASR,IAPAS,EAAM,GACNN,EAAOH,EAAG,CAAE,EACPF,GAAOK,CAAK,IAChBM,EAAM,IAEPP,EAAQ,EACRG,EAAM,EACAE,EAAI,EAAGA,EAAIH,EAAKG,IACrBD,EAAIN,EAAGO,CAAE,EACJD,IAAMH,GAAUM,GAAOX,GAAOQ,CAAE,GACpCJ,GAAS,EACJA,GAASD,IACbD,EAAGK,CAAI,EAAIF,EACXE,GAAO,KAGRF,EAAOG,EACPJ,EAAQ,EACRF,EAAGK,CAAI,EAAIF,EACXE,GAAO,EACPI,EAAM,GACDX,GAAOK,CAAK,IAChBM,EAAM,KAIT,OAAAT,EAAE,OAASK,EACJL,CACR,CA+BA,SAASU,GAAQV,EAAGC,EAAOU,EAAY,CACtC,OAAKA,EACGH,GAAiBR,EAAGC,CAAM,EAE3BF,GAAeC,EAAGC,CAAM,CAChC,CAKAJ,GAAO,QAAUa,KCnMjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAuCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC5CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAoB,KACpBC,GAAmB,KACnBC,GAAmB,KACnBC,GAAiB,QAAS,6CAA8C,EACxEC,GAAgB,QAAS,4CAA6C,EAwB1E,SAASC,GAAUC,EAAI,CACtB,IAAIC,EACJ,IAAMA,EAAI,EAAGA,EAAID,EAAE,OAAQC,IAC1B,GAAK,CAACD,EAAGC,CAAE,EACV,MAAO,GAGT,MAAO,EACR,CA2BA,SAASC,GAAiBF,EAAI,CAC7B,IAAIC,EACJ,IAAMA,EAAI,EAAGA,EAAID,EAAE,OAAQC,GAAK,EAC/B,GAAK,EAAGD,EAAGC,CAAE,GAAKD,EAAGC,EAAE,CAAE,GACxB,MAAO,GAGT,MAAO,EACR,CA2BA,SAASE,GAAWH,EAAI,CACvB,IAAII,EACAC,EACA,EAKJ,IAHAD,EAAOJ,EAAE,KACTK,EAAML,EAAE,UAAW,CAAE,EAEf,EAAI,EAAG,EAAII,EAAK,OAAQ,IAC7B,GAAK,CAACC,EAAKD,EAAM,CAAE,EAClB,MAAO,GAGT,MAAO,EACR,CAuBA,SAASE,GAAON,EAAI,CACnB,IAAIO,EAAMX,GAAkBI,CAAE,EAC9B,OAAKO,EAAI,iBAEHb,GAAmBM,CAAE,EAClBE,GAAiBL,GAAgBG,EAAG,CAAE,CAAE,EAE3CL,GAAkBK,CAAE,EACjBE,GAAiBJ,GAAeE,EAAG,CAAE,CAAE,EAExCG,GAAWI,CAAI,EAEhBR,GAAUC,CAAE,CACpB,CAKAP,GAAO,QAAUa,KC/KjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCzCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAmB,KAqBvB,SAASC,GAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CAqBA,SAASC,GAAUC,EAAGC,EAAWC,EAAU,CAC1C,IAAI,EACJ,IAAM,EAAI,EAAG,EAAIF,EAAE,OAAQ,IAC1B,GAAK,CAACC,EAAU,KAAMC,EAASF,EAAG,CAAE,EAAG,EAAGA,CAAE,EAC3C,MAAO,GAGT,MAAO,EACR,CAwBA,SAASG,GAAWH,EAAGC,EAAWC,EAAU,CAC3C,IAAIE,EACAC,EACAC,EAKJ,IAHAF,EAAOJ,EAAE,KACTK,EAAML,EAAE,UAAW,CAAE,EAEfM,EAAI,EAAGA,EAAIF,EAAK,OAAQE,IAC7B,GAAK,CAACL,EAAU,KAAMC,EAASG,EAAKD,EAAME,CAAE,EAAGA,EAAGF,CAAK,EACtD,MAAO,GAGT,MAAO,EACR,CAuBA,SAASG,GAASP,EAAGC,EAAWC,EAAU,CACzC,IAAIL,EACJ,OAAKD,GAAWI,EAAG,OAAQ,EACnBA,EAAE,MAAOC,EAAWC,CAAQ,GAEpCL,EAAMF,GAAkBK,CAAE,EACrBH,EAAI,iBACDM,GAAWN,EAAKI,EAAWC,CAAQ,EAEpCH,GAAUC,EAAGC,EAAWC,CAAQ,EACxC,CAKAR,GAAO,QAAUa,KCtJjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoCA,SAASC,GAAUC,EAAKC,EAAMC,EAAU,CACvC,IAAIC,EACAC,EAIJ,IADAD,EAAM,CAAC,EACDC,EAAI,EAAGA,EAAIJ,EAAKI,IACrBD,EAAI,KAAMF,EAAK,KAAMC,EAASE,CAAE,CAAE,EAEnC,OAAOD,CACR,CAKAL,GAAO,QAAUC,KCnDjB,IAAAM,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAmCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCxCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,KAoBb,SAASC,GAAUC,EAAOC,EAAQ,CACjC,IAAIC,EACAC,EACAC,EACAC,EAOJ,IALAF,EAAKF,EAAO,CAAE,EACdG,EAAKH,EAAO,CAAE,EAGdC,EAAM,CAAC,EACDG,EAAI,EAAGA,EAAID,EAAIC,IACpBH,EAAI,KAAMJ,GAAQE,EAAOG,CAAG,CAAE,EAE/B,OAAOD,CACR,CAKAL,GAAO,QAAUE,KC9DjB,IAAAO,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoCA,SAASC,GAAYC,EAAOC,EAAMC,EAAU,CAC3C,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EAOJ,IALAH,EAAKL,EAAO,CAAE,EACdM,EAAKN,EAAO,CAAE,EAGdG,EAAM,CAAC,EACDI,EAAI,EAAGA,EAAID,EAAIC,IAAM,CAE1B,IADAH,EAAK,CAAC,EACAI,EAAI,EAAGA,EAAIH,EAAIG,IACpBJ,EAAG,KAAMH,EAAK,KAAMC,EAAS,CAAEK,EAAGC,CAAE,CAAE,CAAE,EAEzCL,EAAI,KAAMC,CAAG,CACd,CACA,OAAOD,CACR,CAKAL,GAAO,QAAUC,KC9DjB,IAAAU,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAmCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCxCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,KAoBb,SAASC,GAAUC,EAAOC,EAAQ,CACjC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAQJ,IANAJ,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EACdK,EAAKL,EAAO,CAAE,EAGdC,EAAM,CAAC,EACDK,EAAK,EAAGA,EAAKD,EAAIC,IAAO,CAE7B,IADAJ,EAAK,CAAC,EACAK,EAAK,EAAGA,EAAKH,EAAIG,IACtBL,EAAG,KAAML,GAAQE,EAAOI,CAAG,CAAE,EAE9BF,EAAI,KAAMC,CAAG,CACd,CACA,OAAOD,CACR,CAKAL,GAAO,QAAUE,KCtEjB,IAAAU,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoCA,SAASC,GAAYC,EAAOC,EAAMC,EAAU,CAC3C,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAQJ,IANAL,EAAKN,EAAO,CAAE,EACdO,EAAKP,EAAO,CAAE,EACdQ,EAAKR,EAAO,CAAE,EAGdG,EAAM,CAAC,EACDQ,EAAK,EAAGA,EAAKH,EAAIG,IAAO,CAE7B,IADAN,EAAK,CAAC,EACAK,EAAK,EAAGA,EAAKH,EAAIG,IAAO,CAE7B,IADAN,EAAK,CAAC,EACAK,EAAK,EAAGA,EAAKH,EAAIG,IACtBL,EAAG,KAAMH,EAAK,KAAMC,EAAS,CAAES,EAAID,EAAID,CAAG,CAAE,CAAE,EAE/CJ,EAAG,KAAMD,CAAG,CACb,CACAD,EAAI,KAAME,CAAG,CACd,CACA,OAAOF,CACR,CAKAL,GAAO,QAAUC,KCtEjB,IAAAa,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAmCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCxCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,KAoBb,SAASC,GAAUC,EAAOC,EAAQ,CACjC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EASJ,IAPAN,EAAKJ,EAAO,CAAE,EACdK,EAAKL,EAAO,CAAE,EACdM,EAAKN,EAAO,CAAE,EACdO,EAAKP,EAAO,CAAE,EAGdC,EAAM,CAAC,EACDS,EAAK,EAAGA,EAAKH,EAAIG,IAAO,CAE7B,IADAP,EAAK,CAAC,EACAM,EAAK,EAAGA,EAAKH,EAAIG,IAAO,CAE7B,IADAP,EAAK,CAAC,EACAM,EAAK,EAAGA,EAAKH,EAAIG,IACtBN,EAAG,KAAML,GAAQE,EAAOK,CAAG,CAAE,EAE9BD,EAAG,KAAMD,CAAG,CACb,CACAD,EAAI,KAAME,CAAG,CACd,CACA,OAAOF,CACR,CAKAL,GAAO,QAAUE,KC9EjB,IAAAa,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoCA,SAASC,GAAYC,EAAOC,EAAMC,EAAU,CAC3C,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EASJ,IAPAP,EAAKP,EAAO,CAAE,EACdQ,EAAKR,EAAO,CAAE,EACdS,EAAKT,EAAO,CAAE,EACdU,EAAKV,EAAO,CAAE,EAGdG,EAAM,CAAC,EACDW,EAAK,EAAGA,EAAKJ,EAAII,IAAO,CAE7B,IADAR,EAAK,CAAC,EACAO,EAAK,EAAGA,EAAKJ,EAAII,IAAO,CAE7B,IADAR,EAAK,CAAC,EACAO,EAAK,EAAGA,EAAKJ,EAAII,IAAO,CAE7B,IADAR,EAAK,CAAC,EACAO,EAAK,EAAGA,EAAKJ,EAAII,IACtBP,EAAG,KAAMH,EAAK,KAAMC,EAAS,CAAEY,EAAID,EAAID,EAAID,CAAG,CAAE,CAAE,EAEnDN,EAAG,KAAMD,CAAG,CACb,CACAE,EAAG,KAAMD,CAAG,CACb,CACAF,EAAI,KAAMG,CAAG,CACd,CACA,OAAOH,CACR,CAKAL,GAAO,QAAUC,KC9EjB,IAAAgB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAmCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCxCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,KAoBb,SAASC,GAAUC,EAAOC,EAAQ,CACjC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAUJ,IARAR,EAAKL,EAAO,CAAE,EACdM,EAAKN,EAAO,CAAE,EACdO,EAAKP,EAAO,CAAE,EACdQ,EAAKR,EAAO,CAAE,EACdS,EAAKT,EAAO,CAAE,EAGdC,EAAM,CAAC,EACDY,EAAK,EAAGA,EAAKJ,EAAII,IAAO,CAE7B,IADAT,EAAK,CAAC,EACAQ,EAAK,EAAGA,EAAKJ,EAAII,IAAO,CAE7B,IADAT,EAAK,CAAC,EACAQ,EAAK,EAAGA,EAAKJ,EAAII,IAAO,CAE7B,IADAT,EAAK,CAAC,EACAQ,EAAK,EAAGA,EAAKJ,EAAII,IACtBR,EAAG,KAAML,GAAQE,EAAOM,CAAG,CAAE,EAE9BF,EAAG,KAAMD,CAAG,CACb,CACAE,EAAG,KAAMD,CAAG,CACb,CACAF,EAAI,KAAMG,CAAG,CACd,CACA,OAAOH,CACR,CAKAL,GAAO,QAAUE,KCtFjB,IAAAgB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoCA,SAASC,GAAYC,EAAOC,EAAMC,EAAU,CAC3C,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAUJ,IARAT,EAAKR,EAAO,CAAE,EACdS,EAAKT,EAAO,CAAE,EACdU,EAAKV,EAAO,CAAE,EACdW,EAAKX,EAAO,CAAE,EACdY,EAAKZ,EAAO,CAAE,EAGdG,EAAM,CAAC,EACDc,EAAK,EAAGA,EAAKL,EAAIK,IAAO,CAE7B,IADAV,EAAK,CAAC,EACAS,EAAK,EAAGA,EAAKL,EAAIK,IAAO,CAE7B,IADAV,EAAK,CAAC,EACAS,EAAK,EAAGA,EAAKL,EAAIK,IAAO,CAE7B,IADAV,EAAK,CAAC,EACAS,EAAK,EAAGA,EAAKL,EAAIK,IAAO,CAE7B,IADAV,EAAK,CAAC,EACAS,EAAK,EAAGA,EAAKL,EAAIK,IACtBT,EAAG,KAAMH,EAAK,KAAMC,EAAS,CAAEe,EAAID,EAAID,EAAID,EAAID,CAAG,CAAE,CAAE,EAEvDR,EAAG,KAAMD,CAAG,CACb,CACAE,EAAG,KAAMD,CAAG,CACb,CACAE,EAAG,KAAMD,CAAG,CACb,CACAH,EAAI,KAAMI,CAAG,CACd,CACA,OAAOJ,CACR,CAKAL,GAAO,QAAUC,KCtFjB,IAAAmB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAmCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCxCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,KAgBb,SAASC,GAASC,EAAOC,EAAOC,EAAOC,EAAKC,EAAM,CACjD,IAAIC,EACAC,EACAC,EAMJ,GAJAF,EAAIH,EAAOC,CAAI,EAGfG,EAAIH,EAAM,EACLG,IAAML,EACV,OAAOH,GAAQE,EAAOK,CAAE,EAIzB,IAAME,EAAI,EAAGA,EAAIF,EAAGE,IACnBH,EAAI,KAAML,GAASC,EAAOC,EAAOC,EAAOI,EAAG,CAAC,CAAE,CAAE,EAEjD,OAAOF,CACR,CAwBA,SAASI,GAAUR,EAAOE,EAAQ,CACjC,OAAOH,GAASC,EAAOE,EAAM,OAAQA,EAAO,EAAG,CAAC,CAAE,CACnD,CAKAL,GAAO,QAAUW,KCvFjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAmCA,SAASC,GAASC,EAAOC,EAAOC,EAAKC,EAASC,EAAKC,EAAMC,EAAU,CAClE,IAAIC,EACAC,EACAC,EACAC,EACAC,EAOJ,IAJAD,EAAIR,EAAM,EACVM,EAAQE,IAAMV,EAEdS,EAAIR,EAAOC,CAAI,EACTS,EAAI,EAAGA,EAAIF,EAAGE,IACnBJ,EAAMJ,EAAQ,MAAM,EACpBI,EAAI,KAAMI,CAAE,EACPH,EACJJ,EAAI,KAAMC,EAAK,KAAMC,EAASC,CAAI,CAAE,EAEpCH,EAAI,KAAML,GAASC,EAAOC,EAAOS,EAAGH,EAAK,CAAC,EAAGF,EAAMC,CAAQ,CAAE,EAG/D,OAAOF,CACR,CAmBA,SAASQ,GAAYX,EAAOI,EAAMC,EAAU,CAC3C,OAAOP,GAASE,EAAM,OAAQA,EAAO,EAAG,CAAC,EAAG,CAAC,EAAGI,EAAMC,CAAQ,CAC/D,CAKAR,GAAO,QAAUc,KCnFjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAmCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCxCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAgB,IAepB,SAASC,GAAOC,EAAM,CACrB,IAAIC,EAEJ,GAAKD,EAAI,SAAW,EAIpB,OAAAC,EAAMH,GAAeE,CAAI,EAGlBC,EAAKD,EAAK,CAAE,CACpB,CAKAH,GAAO,QAAUE,KCrDjB,IAAAG,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAgB,QAAS,oCAAqC,EAC9DC,GAAY,QAAS,gCAAiC,EACtDC,GAAQ,QAAS,4BAA6B,EAC9CC,GAAO,QAAS,4BAA6B,EAC7CC,GAAQ,KAKRC,GAAO,QAwBX,SAASC,GAAMC,EAAGC,EAAGC,EAAKC,EAAQC,EAAS,CAC1C,IAAIC,EACJ,IAAMA,EAAI,EAAGA,EAAIJ,EAAGI,IACnBH,EAAKE,CAAO,EAAIJ,EAAGK,CAAE,EACrBD,GAAUD,CAEZ,CAeA,SAASG,GAAsBN,EAAGO,EAAOC,EAAOC,EAAKP,EAAKC,EAAQC,EAAS,CAC1E,IAAIM,EACAC,EACAC,EACAP,EAOJ,IAJAO,EAAIH,EAAM,EACVC,EAAQE,IAAML,EAEdI,EAAIH,EAAOC,CAAI,EACTJ,EAAI,EAAGA,EAAIM,EAAGN,IACdK,GACJR,EAAKE,CAAO,EAAIJ,EAAGK,CAAE,EACrBD,GAAUD,GAEVC,EAASE,GAAsBN,EAAGK,CAAE,EAAGE,EAAOC,EAAOI,EAAGV,EAAKC,EAAQC,CAAO,EAG9E,OAAOA,CACR,CAaA,SAASS,GAAwBb,EAAGO,EAAOC,EAAON,EAAKC,EAAQC,EAAS,CACvE,IAAIU,EACAC,EACAC,EACAC,EACAC,EACAC,EACAd,EAwBJ,IAnBAS,EAAMnB,GAAOa,CAAM,EAGnBO,EAAMlB,GAAOiB,CAAI,EACjBR,GAAsBN,EAAGO,EAAOC,EAAO,EAAGO,EAAK,EAAG,CAAE,EAGpDC,EAAM,YAGNE,EAAKzB,GAAee,EAAOQ,CAAI,EAG/BC,EAAKpB,GAAOU,CAAM,EAClBR,GAAMS,EAAOD,EAAOU,EAAI,EAAG,CAAE,EAC7BrB,GAAMW,EAAOU,EAAI,CAAE,EACnBrB,GAAMW,EAAOW,EAAI,CAAE,EAGbb,EAAI,EAAGA,EAAIS,EAAKT,IACrBc,EAAIzB,GAAWuB,EAAIC,EAAI,EAAGF,EAAKX,EAAGP,EAAK,EACvCI,EAAKE,CAAO,EAAIW,EAAKI,CAAE,EACvBf,GAAUD,CAEZ,CAoCA,SAASiB,GAASpB,EAAGQ,EAAOa,EAAiBnB,EAAKC,EAAQC,EAAS,CAClE,IAAIG,EAAQC,EAAM,OAClB,OAAKD,IAAU,EACPL,EAEHK,IAAU,GAEdR,GAAMC,EAAGQ,EAAO,CAAE,EAAGN,EAAKC,EAAQC,CAAO,EAClCF,GAEHmB,GACJR,GAAwBb,EAAGO,EAAOC,EAAON,EAAKC,EAAQC,CAAO,EACtDF,IAERI,GAAsBN,EAAGO,EAAOC,EAAO,EAAGN,EAAKC,EAAQC,CAAO,EACvDF,EACR,CAKAV,GAAO,QAAU4B,KC1MjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAQ,QAAS,4BAA6B,EAC9CC,GAAQ,KACRC,GAAS,KA6Bb,SAASC,GAASC,EAAGC,EAAOC,EAAkB,CAC7C,IAAIC,EAAMN,GAAOD,GAAOK,CAAM,CAAE,EAChC,OAAOH,GAAQE,EAAGC,EAAOC,EAAiBC,EAAK,EAAG,CAAE,CACrD,CAKAR,GAAO,QAAUI,KC7DjB,IAAAK,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAyDA,IAAIC,GAAc,QAAS,uDAAwD,EAC/EC,GAAO,KACPC,GAAS,KAKbF,GAAaC,GAAM,SAAUC,EAAO,EAKpCH,GAAO,QAAUE,KCrEjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwBA,IAAIC,GAAgB,QAAS,oCAAqC,EAC9DC,GAAY,QAAS,gCAAiC,EACtDC,GAAQ,QAAS,4BAA6B,EAC9CC,GAAO,QAAS,4BAA6B,EAC7CC,GAAQ,KACRC,GAAO,KAKPC,GAAO,QA8BX,SAASC,GAAQC,EAAGC,EAAGC,EAAKC,EAAQC,EAAQC,EAAMC,EAAU,CAC3D,IAAIC,EACJ,IAAMA,EAAI,EAAGA,EAAIN,EAAGM,IACnBL,EAAKE,CAAO,EAAIC,EAAK,KAAMC,EAASN,EAAGO,CAAE,EAAG,CAAEA,CAAE,EAAGP,CAAE,EACrDI,GAAUD,CAEZ,CAmBA,SAASK,GAAsBC,EAAMT,EAAGU,EAAOC,EAAOC,EAAKC,EAASX,EAAKC,EAAQC,EAAQC,EAAMC,EAAU,CACxG,IAAIQ,EACAC,EACAC,EACAC,EACAV,EAOJ,IAJAU,EAAIL,EAAM,EACVE,EAAQG,IAAMP,EAEdM,EAAIL,EAAOC,CAAI,EACTL,EAAI,EAAGA,EAAIS,EAAGT,IACnBQ,EAAMF,EAAQ,MAAM,EACpBE,EAAI,KAAMR,CAAE,EACPO,GACJZ,EAAKE,CAAO,EAAIC,EAAK,KAAMC,EAASN,EAAGO,CAAE,EAAGQ,EAAKN,CAAK,EACtDL,GAAUD,GAEVC,EAASI,GAAsBC,EAAMT,EAAGO,CAAE,EAAGG,EAAOC,EAAOM,EAAGF,EAAKb,EAAKC,EAAQC,EAAQC,EAAMC,CAAQ,EAGxG,OAAOF,CACR,CAeA,SAASc,GAAwBlB,EAAGU,EAAOC,EAAOT,EAAKC,EAAQC,EAAQC,EAAMC,EAAU,CACtF,IAAIa,EACAC,EACAC,EACAC,EACAC,EACAC,EACAjB,EAuBJ,IAlBAY,EAAMzB,GAAOiB,CAAM,EAGnBS,EAAMxB,GAAOuB,CAAI,EACjBX,GAAsBR,EAAGA,EAAGU,EAAOC,EAAO,EAAG,CAAC,EAAGS,EAAK,EAAG,EAAGf,EAAMC,CAAQ,EAG1Ee,EAAM,YAGNE,EAAK/B,GAAemB,EAAOU,CAAI,EAG/BC,EAAKzB,GAAMc,CAAM,EACjBhB,GAAMe,EAAOY,EAAI,CAAE,EACnB3B,GAAMe,EAAOa,EAAI,CAAE,EAGbhB,EAAI,EAAGA,EAAIY,EAAKZ,IACrBiB,EAAI/B,GAAW6B,EAAIC,EAAI,EAAGF,EAAKd,EAAGT,EAAK,EACvCI,EAAKE,CAAO,EAAIgB,EAAKI,CAAE,EACvBpB,GAAUD,CAEZ,CA8CA,SAASsB,GAAWzB,EAAGW,EAAOe,EAAiBxB,EAAKC,EAAQC,EAAQC,EAAMC,EAAU,CACnF,IAAII,EAAQC,EAAM,OAClB,OAAKD,IAAU,EACPR,EAEHQ,IAAU,GAEdX,GAAQC,EAAGW,EAAO,CAAE,EAAGT,EAAKC,EAAQC,EAAQC,EAAMC,CAAQ,EACnDJ,GAEHwB,GACJR,GAAwBlB,EAAGU,EAAOC,EAAOT,EAAKC,EAAQC,EAAQC,EAAMC,CAAQ,EACrEJ,IAERM,GAAsBR,EAAGA,EAAGU,EAAOC,EAAO,EAAG,CAAC,EAAGT,EAAKC,EAAQC,EAAQC,EAAMC,CAAQ,EAC7EJ,EACR,CAKAX,GAAO,QAAUkC,KCrOjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAQ,QAAS,4BAA6B,EAC9CC,GAAQ,KACRC,GAAS,KAuCb,SAASC,GAAWC,EAAGC,EAAOC,EAAiBC,EAAMC,EAAU,CAC9D,IAAIC,EAAMR,GAAOD,GAAOK,CAAM,CAAE,EAChC,OAAOH,GAAQE,EAAGC,EAAOC,EAAiBG,EAAK,EAAG,EAAGF,EAAMC,CAAQ,CACpE,CAKAT,GAAO,QAAUI,KCvEjB,IAAAO,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqEA,IAAIC,GAAc,QAAS,uDAAwD,EAC/EC,GAAO,KACPC,GAAS,KAKbF,GAAaC,GAAM,SAAUC,EAAO,EAKpCH,GAAO,QAAUE,KCjFjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA8CA,SAASC,GAAWC,EAAGC,EAAOC,EAAkB,CAC/C,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EAUJ,GAPAJ,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EAGdE,EAAM,CAAC,EAGFD,EAAkB,CACtB,IAAMI,EAAK,EAAGA,EAAKF,EAAIE,IACtB,IAAMC,EAAK,EAAGA,EAAKF,EAAIE,IACtBJ,EAAI,KAAMH,EAAGO,CAAG,EAAGD,CAAG,CAAE,EAG1B,OAAOH,CACR,CACA,IAAMI,EAAK,EAAGA,EAAKF,EAAIE,IAEtB,IADAC,EAAKR,EAAGO,CAAG,EACLD,EAAK,EAAGA,EAAKF,EAAIE,IACtBH,EAAI,KAAMK,EAAIF,CAAG,CAAE,EAGrB,OAAOH,CACR,CAKAL,GAAO,QAAUC,KClFjB,IAAAU,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqDA,SAASC,GAAWC,EAAGC,EAAOC,EAAiBC,EAAKC,EAAQC,EAAS,CACpE,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EAQJ,GALAL,EAAKL,EAAO,CAAE,EACdM,EAAKN,EAAO,CAAE,EAGdU,EAAKN,EACAH,EAAkB,CACtB,IAAMM,EAAK,EAAGA,EAAKF,EAAIE,IACtB,IAAMC,EAAK,EAAGA,EAAKF,EAAIE,IACtBN,EAAKQ,CAAG,EAAIX,EAAGS,CAAG,EAAGD,CAAG,EACxBG,GAAMP,EAGR,OAAOD,CACR,CACA,IAAMM,EAAK,EAAGA,EAAKF,EAAIE,IAEtB,IADAC,EAAKV,EAAGS,CAAG,EACLD,EAAK,EAAGA,EAAKF,EAAIE,IACtBL,EAAKQ,CAAG,EAAID,EAAIF,CAAG,EACnBG,GAAMP,EAGR,OAAOD,CACR,CAKAL,GAAO,QAAUC,KCzFjB,IAAAa,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAyDA,IAAIC,GAAc,QAAS,uDAAwD,EAC/EC,GAAO,KACPC,GAAS,KAKbF,GAAaC,GAAM,SAAUC,EAAO,EAKpCH,GAAO,QAAUE,KCrEjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwDA,SAASC,GAAaC,EAAGC,EAAOC,EAAiBC,EAAMC,EAAU,CAChE,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EAUJ,GAPAJ,EAAKL,EAAO,CAAE,EACdM,EAAKN,EAAO,CAAE,EAGdI,EAAM,CAAC,EAGFH,EAAkB,CACtB,IAAMM,EAAK,EAAGA,EAAKF,EAAIE,IACtB,IAAMC,EAAK,EAAGA,EAAKF,EAAIE,IACtBJ,EAAI,KAAMF,EAAK,KAAMC,EAASJ,EAAGS,CAAG,EAAGD,CAAG,EAAG,CAAEC,EAAID,CAAG,EAAGR,CAAE,CAAE,EAG/D,OAAOK,CACR,CACA,IAAMI,EAAK,EAAGA,EAAKF,EAAIE,IAEtB,IADAC,EAAKV,EAAGS,CAAG,EACLD,EAAK,EAAGA,EAAKF,EAAIE,IACtBH,EAAI,KAAMF,EAAK,KAAMC,EAASM,EAAIF,CAAG,EAAG,CAAEC,EAAID,CAAG,EAAGR,CAAE,CAAE,EAG1D,OAAOK,CACR,CAKAP,GAAO,QAAUC,KC5FjB,IAAAY,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA+DA,SAASC,GAAaC,EAAGC,EAAOC,EAAiBC,EAAKC,EAAQC,EAAQC,EAAMC,EAAU,CACrF,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EAQJ,GALAL,EAAKP,EAAO,CAAE,EACdQ,EAAKR,EAAO,CAAE,EAGdY,EAAKR,EACAH,EAAkB,CACtB,IAAMQ,EAAK,EAAGA,EAAKF,EAAIE,IACtB,IAAMC,EAAK,EAAGA,EAAKF,EAAIE,IACtBR,EAAKU,CAAG,EAAIP,EAAK,KAAMC,EAASP,EAAGW,CAAG,EAAGD,CAAG,EAAG,CAAEC,EAAID,CAAG,EAAGV,CAAE,EAC7Da,GAAMT,EAGR,OAAOD,CACR,CACA,IAAMQ,EAAK,EAAGA,EAAKF,EAAIE,IAEtB,IADAC,EAAKZ,EAAGW,CAAG,EACLD,EAAK,EAAGA,EAAKF,EAAIE,IACtBP,EAAKU,CAAG,EAAIP,EAAK,KAAMC,EAASK,EAAIF,CAAG,EAAG,CAAEC,EAAID,CAAG,EAAGV,CAAE,EACxDa,GAAMT,EAGR,OAAOD,CACR,CAKAL,GAAO,QAAUC,KCnGjB,IAAAe,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqEA,IAAIC,GAAc,QAAS,uDAAwD,EAC/EC,GAAO,KACPC,GAAS,KAKbF,GAAaC,GAAM,SAAUC,EAAO,EAKpCH,GAAO,QAAUE,KCjFjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA8CA,SAASC,GAAWC,EAAGC,EAAOC,EAAkB,CAC/C,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAWJ,GARAP,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EACdK,EAAKL,EAAO,CAAE,EAGdE,EAAM,CAAC,EAGFD,EAAkB,CACtB,IAAMK,EAAK,EAAGA,EAAKH,EAAIG,IACtB,IAAMC,EAAK,EAAGA,EAAKH,EAAIG,IACtB,IAAMC,EAAK,EAAGA,EAAKH,EAAIG,IACtBN,EAAI,KAAMH,EAAGS,CAAG,EAAGD,CAAG,EAAGD,CAAG,CAAE,EAIjC,OAAOJ,CACR,CACA,IAAMM,EAAK,EAAGA,EAAKH,EAAIG,IAEtB,IADAE,EAAKX,EAAGS,CAAG,EACLD,EAAK,EAAGA,EAAKH,EAAIG,IAEtB,IADAE,EAAKC,EAAIH,CAAG,EACND,EAAK,EAAGA,EAAKH,EAAIG,IACtBJ,EAAI,KAAMO,EAAIH,CAAG,CAAE,EAItB,OAAOJ,CACR,CAKAL,GAAO,QAAUC,KC3FjB,IAAAa,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqDA,SAASC,GAAWC,EAAGC,EAAOC,EAAiBC,EAAKC,EAAQC,EAAS,CACpE,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EASJ,GANAR,EAAKL,EAAO,CAAE,EACdM,EAAKN,EAAO,CAAE,EACdO,EAAKP,EAAO,CAAE,EAGda,EAAKT,EACAH,EAAkB,CACtB,IAAMO,EAAK,EAAGA,EAAKH,EAAIG,IACtB,IAAMC,EAAK,EAAGA,EAAKH,EAAIG,IACtB,IAAMC,EAAK,EAAGA,EAAKH,EAAIG,IACtBR,EAAKW,CAAG,EAAId,EAAGW,CAAG,EAAGD,CAAG,EAAGD,CAAG,EAC9BK,GAAMV,EAIT,OAAOD,CACR,CACA,IAAMQ,EAAK,EAAGA,EAAKH,EAAIG,IAEtB,IADAE,EAAKb,EAAGW,CAAG,EACLD,EAAK,EAAGA,EAAKH,EAAIG,IAEtB,IADAE,EAAKC,EAAIH,CAAG,EACND,EAAK,EAAGA,EAAKH,EAAIG,IACtBN,EAAKW,CAAG,EAAIF,EAAIH,CAAG,EACnBK,GAAMV,EAIT,OAAOD,CACR,CAKAL,GAAO,QAAUC,KClGjB,IAAAgB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwDA,IAAIC,GAAc,QAAS,uDAAwD,EAC/EC,GAAO,KACPC,GAAS,KAKbF,GAAaC,GAAM,SAAUC,EAAO,EAKpCH,GAAO,QAAUE,KCpEjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA0DA,SAASC,GAAaC,EAAGC,EAAOC,EAAiBC,EAAMC,EAAU,CAChE,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAWJ,GARAP,EAAKL,EAAO,CAAE,EACdM,EAAKN,EAAO,CAAE,EACdO,EAAKP,EAAO,CAAE,EAGdI,EAAM,CAAC,EAGFH,EAAkB,CACtB,IAAMO,EAAK,EAAGA,EAAKH,EAAIG,IACtB,IAAMC,EAAK,EAAGA,EAAKH,EAAIG,IACtB,IAAMC,EAAK,EAAGA,EAAKH,EAAIG,IACtBN,EAAI,KAAMF,EAAK,KAAMC,EAASJ,EAAGW,CAAG,EAAGD,CAAG,EAAGD,CAAG,EAAG,CAAEE,EAAID,EAAID,CAAG,EAAGT,CAAE,CAAE,EAI1E,OAAOK,CACR,CACA,IAAMM,EAAK,EAAGA,EAAKH,EAAIG,IAEtB,IADAE,EAAKb,EAAGW,CAAG,EACLD,EAAK,EAAGA,EAAKH,EAAIG,IAEtB,IADAE,EAAKC,EAAIH,CAAG,EACND,EAAK,EAAGA,EAAKH,EAAIG,IACtBJ,EAAI,KAAMF,EAAK,KAAMC,EAASQ,EAAIH,CAAG,EAAG,CAAEE,EAAID,EAAID,CAAG,EAAGT,CAAE,CAAE,EAI/D,OAAOK,CACR,CAKAP,GAAO,QAAUC,KCvGjB,IAAAe,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAiEA,SAASC,GAAaC,EAAGC,EAAOC,EAAiBC,EAAKC,EAAQC,EAAQC,EAAMC,EAAU,CACrF,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EASJ,GANAR,EAAKP,EAAO,CAAE,EACdQ,EAAKR,EAAO,CAAE,EACdS,EAAKT,EAAO,CAAE,EAGde,EAAKX,EACAH,EAAkB,CACtB,IAAMS,EAAK,EAAGA,EAAKH,EAAIG,IACtB,IAAMC,EAAK,EAAGA,EAAKH,EAAIG,IACtB,IAAMC,EAAK,EAAGA,EAAKH,EAAIG,IACtBV,EAAKa,CAAG,EAAIV,EAAK,KAAMC,EAASP,EAAGa,CAAG,EAAGD,CAAG,EAAGD,CAAG,EAAG,CAAEE,EAAID,EAAID,CAAG,EAAGX,CAAE,EACvEgB,GAAMZ,EAIT,OAAOD,CACR,CACA,IAAMU,EAAK,EAAGA,EAAKH,EAAIG,IAEtB,IADAE,EAAKf,EAAGa,CAAG,EACLD,EAAK,EAAGA,EAAKH,EAAIG,IAEtB,IADAE,EAAKC,EAAIH,CAAG,EACND,EAAK,EAAGA,EAAKH,EAAIG,IACtBR,EAAKa,CAAG,EAAIV,EAAK,KAAMC,EAASO,EAAIH,CAAG,EAAG,CAAEE,EAAID,EAAID,CAAG,EAAGX,CAAE,EAC5DgB,GAAMZ,EAIT,OAAOD,CACR,CAKAL,GAAO,QAAUC,KC9GjB,IAAAkB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoEA,IAAIC,GAAc,QAAS,uDAAwD,EAC/EC,GAAO,KACPC,GAAS,KAKbF,GAAaC,GAAM,SAAUC,EAAO,EAKpCH,GAAO,QAAUE,KChFjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA8CA,SAASC,GAAWC,EAAGC,EAAOC,EAAkB,CAC/C,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAYJ,GATAV,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EACdK,EAAKL,EAAO,CAAE,EACdM,EAAKN,EAAO,CAAE,EAGdE,EAAM,CAAC,EAGFD,EAAkB,CACtB,IAAMM,EAAK,EAAGA,EAAKJ,EAAII,IACtB,IAAMC,EAAK,EAAGA,EAAKJ,EAAII,IACtB,IAAMC,EAAK,EAAGA,EAAKJ,EAAII,IACtB,IAAMC,EAAK,EAAGA,EAAKJ,EAAII,IACtBR,EAAI,KAAMH,EAAGW,CAAG,EAAGD,CAAG,EAAGD,CAAG,EAAGD,CAAG,CAAE,EAKxC,OAAOL,CACR,CACA,IAAMQ,EAAK,EAAGA,EAAKJ,EAAII,IAEtB,IADAG,EAAKd,EAAGW,CAAG,EACLD,EAAK,EAAGA,EAAKJ,EAAII,IAEtB,IADAG,EAAKC,EAAIJ,CAAG,EACND,EAAK,EAAGA,EAAKJ,EAAII,IAEtB,IADAG,EAAKC,EAAIJ,CAAG,EACND,EAAK,EAAGA,EAAKJ,EAAII,IACtBL,EAAI,KAAMS,EAAIJ,CAAG,CAAE,EAKvB,OAAOL,CACR,CAKAL,GAAO,QAAUC,KCpGjB,IAAAgB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqDA,SAASC,GAAWC,EAAGC,EAAOC,EAAiBC,EAAKC,EAAQC,EAAS,CACpE,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAUJ,GAPAX,EAAKL,EAAO,CAAE,EACdM,EAAKN,EAAO,CAAE,EACdO,EAAKP,EAAO,CAAE,EACdQ,EAAKR,EAAO,CAAE,EAGdgB,EAAKZ,EACAH,EAAkB,CACtB,IAAMQ,EAAK,EAAGA,EAAKJ,EAAII,IACtB,IAAMC,EAAK,EAAGA,EAAKJ,EAAII,IACtB,IAAMC,EAAK,EAAGA,EAAKJ,EAAII,IACtB,IAAMC,EAAK,EAAGA,EAAKJ,EAAII,IACtBV,EAAKc,CAAG,EAAIjB,EAAGa,CAAG,EAAGD,CAAG,EAAGD,CAAG,EAAGD,CAAG,EACpCO,GAAMb,EAKV,OAAOD,CACR,CACA,IAAMU,EAAK,EAAGA,EAAKJ,EAAII,IAEtB,IADAG,EAAKhB,EAAGa,CAAG,EACLD,EAAK,EAAGA,EAAKJ,EAAII,IAEtB,IADAG,EAAKC,EAAIJ,CAAG,EACND,EAAK,EAAGA,EAAKJ,EAAII,IAEtB,IADAG,EAAKC,EAAIJ,CAAG,EACND,EAAK,EAAGA,EAAKJ,EAAII,IACtBP,EAAKc,CAAG,EAAIH,EAAIJ,CAAG,EACnBO,GAAMb,EAKV,OAAOD,CACR,CAKAL,GAAO,QAAUC,KC3GjB,IAAAmB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAyDA,IAAIC,GAAc,QAAS,uDAAwD,EAC/EC,GAAO,KACPC,GAAS,KAKbF,GAAaC,GAAM,SAAUC,EAAO,EAKpCH,GAAO,QAAUE,KCrEjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA0DA,SAASC,GAAaC,EAAGC,EAAOC,EAAiBC,EAAMC,EAAU,CAChE,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAYJ,GATAV,EAAKL,EAAO,CAAE,EACdM,EAAKN,EAAO,CAAE,EACdO,EAAKP,EAAO,CAAE,EACdQ,EAAKR,EAAO,CAAE,EAGdI,EAAM,CAAC,EAGFH,EAAkB,CACtB,IAAMQ,EAAK,EAAGA,EAAKJ,EAAII,IACtB,IAAMC,EAAK,EAAGA,EAAKJ,EAAII,IACtB,IAAMC,EAAK,EAAGA,EAAKJ,EAAII,IACtB,IAAMC,EAAK,EAAGA,EAAKJ,EAAII,IACtBR,EAAI,KAAMF,EAAK,KAAMC,EAASJ,EAAGa,CAAG,EAAGD,CAAG,EAAGD,CAAG,EAAGD,CAAG,EAAG,CAAEG,EAAID,EAAID,EAAID,CAAG,EAAGV,CAAE,CAAE,EAKrF,OAAOK,CACR,CACA,IAAMQ,EAAK,EAAGA,EAAKJ,EAAII,IAEtB,IADAG,EAAKhB,EAAGa,CAAG,EACLD,EAAK,EAAGA,EAAKJ,EAAII,IAEtB,IADAG,EAAKC,EAAIJ,CAAG,EACND,EAAK,EAAGA,EAAKJ,EAAII,IAEtB,IADAG,EAAKC,EAAIJ,CAAG,EACND,EAAK,EAAGA,EAAKJ,EAAII,IACtBL,EAAI,KAAMF,EAAK,KAAMC,EAASU,EAAIJ,CAAG,EAAG,CAAEG,EAAID,EAAID,EAAID,CAAG,EAAGV,CAAE,CAAE,EAKpE,OAAOK,CACR,CAKAP,GAAO,QAAUC,KChHjB,IAAAkB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAiEA,SAASC,GAAaC,EAAGC,EAAOC,EAAiBC,EAAKC,EAAQC,EAAQC,EAAMC,EAAU,CACrF,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAUJ,GAPAX,EAAKP,EAAO,CAAE,EACdQ,EAAKR,EAAO,CAAE,EACdS,EAAKT,EAAO,CAAE,EACdU,EAAKV,EAAO,CAAE,EAGdkB,EAAKd,EACAH,EAAkB,CACtB,IAAMU,EAAK,EAAGA,EAAKJ,EAAII,IACtB,IAAMC,EAAK,EAAGA,EAAKJ,EAAII,IACtB,IAAMC,EAAK,EAAGA,EAAKJ,EAAII,IACtB,IAAMC,EAAK,EAAGA,EAAKJ,EAAII,IACtBZ,EAAKgB,CAAG,EAAIb,EAAK,KAAMC,EAASP,EAAGe,CAAG,EAAGD,CAAG,EAAGD,CAAG,EAAGD,CAAG,EAAG,CAAEG,EAAID,EAAID,EAAID,CAAG,EAAGZ,CAAE,EACjFmB,GAAMf,EAKV,OAAOD,CACR,CACA,IAAMY,EAAK,EAAGA,EAAKJ,EAAII,IAEtB,IADAG,EAAKlB,EAAGe,CAAG,EACLD,EAAK,EAAGA,EAAKJ,EAAII,IAEtB,IADAG,EAAKC,EAAIJ,CAAG,EACND,EAAK,EAAGA,EAAKJ,EAAII,IAEtB,IADAG,EAAKC,EAAIJ,CAAG,EACND,EAAK,EAAGA,EAAKJ,EAAII,IACtBT,EAAKgB,CAAG,EAAIb,EAAK,KAAMC,EAASS,EAAIJ,CAAG,EAAG,CAAEG,EAAID,EAAID,EAAID,CAAG,EAAGZ,CAAE,EAChEmB,GAAMf,EAKV,OAAOD,CACR,CAKAL,GAAO,QAAUC,KCvHjB,IAAAqB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqEA,IAAIC,GAAc,QAAS,uDAAwD,EAC/EC,GAAO,KACPC,GAAS,KAKbF,GAAaC,GAAM,SAAUC,EAAO,EAKpCH,GAAO,QAAUE,KCjFjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAgDA,SAASC,GAAWC,EAAGC,EAAOC,EAAkB,CAC/C,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAaJ,GAVAb,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EACdK,EAAKL,EAAO,CAAE,EACdM,EAAKN,EAAO,CAAE,EACdO,EAAKP,EAAO,CAAE,EAGdE,EAAM,CAAC,EAGFD,EAAkB,CACtB,IAAMO,EAAK,EAAGA,EAAKL,EAAIK,IACtB,IAAMC,EAAK,EAAGA,EAAKL,EAAIK,IACtB,IAAMC,EAAK,EAAGA,EAAKL,EAAIK,IACtB,IAAMC,EAAK,EAAGA,EAAKL,EAAIK,IACtB,IAAMC,EAAK,EAAGA,EAAKL,EAAIK,IACtBV,EAAI,KAAMH,EAAGa,CAAG,EAAGD,CAAG,EAAGD,CAAG,EAAGD,CAAG,EAAGD,CAAG,CAAE,EAM/C,OAAON,CACR,CACA,IAAMU,EAAK,EAAGA,EAAKL,EAAIK,IAEtB,IADAI,EAAKjB,EAAGa,CAAG,EACLD,EAAK,EAAGA,EAAKL,EAAIK,IAEtB,IADAI,EAAKC,EAAIL,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IAEtB,IADAI,EAAKC,EAAIL,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IAEtB,IADAI,EAAKC,EAAIL,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IACtBN,EAAI,KAAMW,EAAIL,CAAG,CAAE,EAMxB,OAAON,CACR,CAKAL,GAAO,QAAUC,KC/GjB,IAAAmB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAuDA,SAASC,GAAWC,EAAGC,EAAOC,EAAiBC,EAAKC,EAAQC,EAAS,CACpE,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAWJ,GARAd,EAAKL,EAAO,CAAE,EACdM,EAAKN,EAAO,CAAE,EACdO,EAAKP,EAAO,CAAE,EACdQ,EAAKR,EAAO,CAAE,EACdS,EAAKT,EAAO,CAAE,EAGdmB,EAAKf,EACAH,EAAkB,CACtB,IAAMS,EAAK,EAAGA,EAAKL,EAAIK,IACtB,IAAMC,EAAK,EAAGA,EAAKL,EAAIK,IACtB,IAAMC,EAAK,EAAGA,EAAKL,EAAIK,IACtB,IAAMC,EAAK,EAAGA,EAAKL,EAAIK,IACtB,IAAMC,EAAK,EAAGA,EAAKL,EAAIK,IACtBZ,EAAKiB,CAAG,EAAIpB,EAAGe,CAAG,EAAGD,CAAG,EAAGD,CAAG,EAAGD,CAAG,EAAGD,CAAG,EAC1CS,GAAMhB,EAMX,OAAOD,CACR,CACA,IAAMY,EAAK,EAAGA,EAAKL,EAAIK,IAEtB,IADAI,EAAKnB,EAAGe,CAAG,EACLD,EAAK,EAAGA,EAAKL,EAAIK,IAEtB,IADAI,EAAKC,EAAIL,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IAEtB,IADAI,EAAKC,EAAIL,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IAEtB,IADAI,EAAKC,EAAIL,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IACtBR,EAAKiB,CAAG,EAAIJ,EAAIL,CAAG,EACnBS,GAAMhB,EAMX,OAAOD,CACR,CAKAL,GAAO,QAAUC,KCtHjB,IAAAsB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAyDA,IAAIC,GAAc,QAAS,uDAAwD,EAC/EC,GAAO,KACPC,GAAS,KAKbF,GAAaC,GAAM,SAAUC,EAAO,EAKpCH,GAAO,QAAUE,KCrEjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA0DA,SAASC,GAAaC,EAAGC,EAAOC,EAAiBC,EAAMC,EAAU,CAChE,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAaJ,GAVAb,EAAKL,EAAO,CAAE,EACdM,EAAKN,EAAO,CAAE,EACdO,EAAKP,EAAO,CAAE,EACdQ,EAAKR,EAAO,CAAE,EACdS,EAAKT,EAAO,CAAE,EAGdI,EAAM,CAAC,EAGFH,EAAkB,CACtB,IAAMS,EAAK,EAAGA,EAAKL,EAAIK,IACtB,IAAMC,EAAK,EAAGA,EAAKL,EAAIK,IACtB,IAAMC,EAAK,EAAGA,EAAKL,EAAIK,IACtB,IAAMC,EAAK,EAAGA,EAAKL,EAAIK,IACtB,IAAMC,EAAK,EAAGA,EAAKL,EAAIK,IACtBV,EAAI,KAAMF,EAAK,KAAMC,EAASJ,EAAGe,CAAG,EAAGD,CAAG,EAAGD,CAAG,EAAGD,CAAG,EAAGD,CAAG,EAAG,CAAEI,EAAID,EAAID,EAAID,EAAID,CAAG,EAAGX,CAAE,CAAE,EAMhG,OAAOK,CACR,CACA,IAAMU,EAAK,EAAGA,EAAKL,EAAIK,IAEtB,IADAI,EAAKnB,EAAGe,CAAG,EACLD,EAAK,EAAGA,EAAKL,EAAIK,IAEtB,IADAI,EAAKC,EAAIL,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IAEtB,IADAI,EAAKC,EAAIL,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IAEtB,IADAI,EAAKC,EAAIL,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IACtBN,EAAI,KAAMF,EAAK,KAAMC,EAASY,EAAIL,CAAG,EAAG,CAAEI,EAAID,EAAID,EAAID,EAAID,CAAG,EAAGX,CAAE,CAAE,EAMzE,OAAOK,CACR,CAKAP,GAAO,QAAUC,KCzHjB,IAAAqB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAiEA,SAASC,GAAaC,EAAGC,EAAOC,EAAiBC,EAAKC,EAAQC,EAAQC,EAAMC,EAAU,CACrF,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAWJ,GARAd,EAAKP,EAAO,CAAE,EACdQ,EAAKR,EAAO,CAAE,EACdS,EAAKT,EAAO,CAAE,EACdU,EAAKV,EAAO,CAAE,EACdW,EAAKX,EAAO,CAAE,EAGdqB,EAAKjB,EACAH,EAAkB,CACtB,IAAMW,EAAK,EAAGA,EAAKL,EAAIK,IACtB,IAAMC,EAAK,EAAGA,EAAKL,EAAIK,IACtB,IAAMC,EAAK,EAAGA,EAAKL,EAAIK,IACtB,IAAMC,EAAK,EAAGA,EAAKL,EAAIK,IACtB,IAAMC,EAAK,EAAGA,EAAKL,EAAIK,IACtBd,EAAKmB,CAAG,EAAIhB,EAAK,KAAMC,EAASP,EAAGiB,CAAG,EAAGD,CAAG,EAAGD,CAAG,EAAGD,CAAG,EAAGD,CAAG,EAAG,CAAEI,EAAID,EAAID,EAAID,EAAID,CAAG,EAAGb,CAAE,EAC3FsB,GAAMlB,EAMX,OAAOD,CACR,CACA,IAAMc,EAAK,EAAGA,EAAKL,EAAIK,IAEtB,IADAI,EAAKrB,EAAGiB,CAAG,EACLD,EAAK,EAAGA,EAAKL,EAAIK,IAEtB,IADAI,EAAKC,EAAIL,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IAEtB,IADAI,EAAKC,EAAIL,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IAEtB,IADAI,EAAKC,EAAIL,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IACtBV,EAAKmB,CAAG,EAAIhB,EAAK,KAAMC,EAASW,EAAIL,CAAG,EAAG,CAAEI,EAAID,EAAID,EAAID,EAAID,CAAG,EAAGb,CAAE,EACpEsB,GAAMlB,EAMX,OAAOD,CACR,CAKAL,GAAO,QAAUC,KChIjB,IAAAwB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqEA,IAAIC,GAAc,QAAS,uDAAwD,EAC/EC,GAAO,KACPC,GAAS,KAKbF,GAAaC,GAAM,SAAUC,EAAO,EAKpCH,GAAO,QAAUE,KCjFjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsCA,SAASC,GAAUC,EAAI,CACtB,IAAIC,EACAC,EACAC,EACAC,EACAC,EAGJ,IADAJ,EAAM,CAAC,EACDG,EAAK,EAAGA,EAAKJ,EAAE,OAAQI,IAAO,CAGnC,IAFAF,EAAKF,EAAGI,CAAG,EACXD,EAAK,CAAC,EACAE,EAAKH,EAAG,OAAO,EAAGG,GAAM,EAAGA,IAChCF,EAAG,KAAMD,EAAIG,CAAG,CAAE,EAEnBJ,EAAI,KAAME,CAAG,CACd,CACA,OAAOF,CACR,CAKAH,GAAO,QAAUC,KC5DjB,IAAAO,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCzCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,KAqBf,SAASC,GAAUC,EAAI,CACtB,IAAIC,EACAC,EAGJ,IADAD,EAAM,CAAC,EACDC,EAAI,EAAGA,EAAIF,EAAE,OAAQE,IAC1BD,EAAI,KAAMH,GAAUE,EAAGE,CAAE,CAAE,CAAE,EAE9B,OAAOD,CACR,CAKAJ,GAAO,QAAUE,KCzDjB,IAAAI,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCzCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,KAqBf,SAASC,GAAUC,EAAI,CACtB,IAAIC,EACAC,EAGJ,IADAD,EAAM,CAAC,EACDC,EAAI,EAAGA,EAAIF,EAAE,OAAQE,IAC1BD,EAAI,KAAMH,GAAUE,EAAGE,CAAE,CAAE,CAAE,EAE9B,OAAOD,CACR,CAKAJ,GAAO,QAAUE,KCzDjB,IAAAI,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCzCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,KAqBf,SAASC,GAAUC,EAAI,CACtB,IAAIC,EACAC,EAGJ,IADAD,EAAM,CAAC,EACDC,EAAI,EAAGA,EAAIF,EAAE,OAAQE,IAC1BD,EAAI,KAAMH,GAAUE,EAAGE,CAAE,CAAE,CAAE,EAE9B,OAAOD,CACR,CAKAJ,GAAO,QAAUE,KCzDjB,IAAAI,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCzCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsCA,SAASC,GAAUC,EAAI,CACtB,IAAIC,EACAC,EAGJ,IADAD,EAAM,CAAC,EACDC,EAAIF,EAAE,OAAO,EAAGE,GAAK,EAAGA,IAC7BD,EAAI,KAAMD,EAAGE,CAAE,CAAE,EAElB,OAAOD,CACR,CAKAH,GAAO,QAAUC,KCpDjB,IAAAI,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCzCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,KAqBf,SAASC,GAAUC,EAAI,CACtB,IAAIC,EACAC,EAGJ,IADAD,EAAM,CAAC,EACDC,EAAI,EAAGA,EAAIF,EAAE,OAAQE,IAC1BD,EAAI,KAAMH,GAAUE,EAAGE,CAAE,CAAE,CAAE,EAE9B,OAAOD,CACR,CAKAJ,GAAO,QAAUE,KCzDjB,IAAAI,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCzCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,KAqBf,SAASC,GAAUC,EAAI,CACtB,IAAIC,EACAC,EAGJ,IADAD,EAAM,CAAC,EACDC,EAAI,EAAGA,EAAIF,EAAE,OAAQE,IAC1BD,EAAI,KAAMH,GAAUE,EAAGE,CAAE,CAAE,CAAE,EAE9B,OAAOD,CACR,CAKAJ,GAAO,QAAUE,KCzDjB,IAAAI,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCzCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,KAqBf,SAASC,GAAUC,EAAI,CACtB,IAAIC,EACAC,EAGJ,IADAD,EAAM,CAAC,EACDC,EAAI,EAAGA,EAAIF,EAAE,OAAQE,IAC1BD,EAAI,KAAMH,GAAUE,EAAGE,CAAE,CAAE,CAAE,EAE9B,OAAOD,CACR,CAKAJ,GAAO,QAAUE,KCzDjB,IAAAI,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCzCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAgB,IAwBpB,SAASC,GAAeC,EAAGC,EAAGC,EAAQC,EAAS,CAC9C,IAAIC,EACAC,EACAC,EACAC,EAQJ,IALAF,EAAMP,GAAeG,CAAE,EAGvBK,EAAKH,EACLC,EAAM,CAAC,EACDG,EAAI,EAAGA,EAAIP,EAAGO,IACnBH,EAAI,KAAMC,EAAKJ,EAAGK,CAAG,CAAE,EACvBA,GAAMJ,EAEP,OAAOE,CACR,CAKAP,GAAO,QAAUE,KCpEjB,IAAAS,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCzCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAU,QAAS,yBAA0B,EAC7CC,GAAgB,IAoBpB,SAASC,GAAcC,EAAGC,EAAS,CAClC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACA,EACAC,EACAC,EAIJ,GADAJ,EAAMJ,EAAE,OACHC,EAAO,SAAWG,EACtB,MAAM,IAAI,WAAY,6EAA8E,EAQrG,IALAF,EAAOJ,GAAeE,CAAE,EACxBG,EAAOL,GAAeG,CAAO,EAG7BI,EAAM,CAAC,EACDG,EAAI,EAAGA,EAAIJ,EAAKI,IACrBD,EAAIL,EAAMF,EAAGQ,CAAE,EACfF,EAAIH,EAAMF,EAAQO,CAAE,EAAE,SAAS,EAC/B,EAAIH,EAAKC,CAAE,EACNT,GAAS,CAAE,EACf,EAAE,KAAM,CAAEW,EAAGD,CAAE,CAAE,EAEjBF,EAAKC,CAAE,EAAI,CAAE,CAAEE,EAAGD,CAAE,CAAE,EAGxB,OAAOF,CACR,CAKAT,GAAO,QAAUG,KChFjB,IAAAU,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAU,QAAS,yBAA0B,EAC7CC,GAAgB,IAuBpB,SAASC,GAAgBC,EAAGC,EAAWC,EAAU,CAChD,IAAIC,EACAC,EACAC,EACAC,EACA,EACAC,EACAC,EAUJ,IAPAJ,EAAMJ,EAAE,OAGRG,EAAML,GAAeE,CAAE,EAGvBK,EAAM,CAAC,EACDG,EAAI,EAAGA,EAAIJ,EAAKI,IACrBD,EAAIJ,EAAKH,EAAGQ,CAAE,EACdF,EAAIL,EAAU,KAAMC,EAASK,EAAGC,EAAGR,CAAE,EACrC,EAAIK,EAAKC,CAAE,EACNT,GAAS,CAAE,EACf,EAAE,KAAM,CAAEW,EAAGD,CAAE,CAAE,EAEjBF,EAAKC,CAAE,EAAI,CAAE,CAAEE,EAAGD,CAAE,CAAE,EAGxB,OAAOF,CACR,CAKAT,GAAO,QAAUG,KC/EjB,IAAAU,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAU,QAAS,yBAA0B,EAC7CC,GAAgB,IAoBpB,SAASC,GAAcC,EAAGC,EAAS,CAClC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EAIJ,GADAJ,EAAMH,EAAE,OACHC,EAAO,SAAWE,EACtB,MAAM,IAAI,WAAY,6EAA8E,EAOrG,IAJAD,EAAOJ,GAAeG,CAAO,EAG7BG,EAAM,CAAC,EACDG,EAAI,EAAGA,EAAIJ,EAAKI,IACrBF,EAAIH,EAAMD,EAAQM,CAAE,EAAE,SAAS,EAC/BD,EAAIF,EAAKC,CAAE,EACNR,GAASS,CAAE,EACfA,EAAE,KAAMC,CAAE,EAEVH,EAAKC,CAAE,EAAI,CAAEE,CAAE,EAGjB,OAAOH,CACR,CAKAR,GAAO,QAAUG,KC5EjB,IAAAS,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAU,QAAS,yBAA0B,EAC7CC,GAAgB,IAuBpB,SAASC,GAAgBC,EAAGC,EAAWC,EAAU,CAChD,IAAIC,EACAC,EACAC,EACAC,EACA,EACAC,EAUJ,IAPAH,EAAMJ,EAAE,OAGRG,EAAML,GAAeE,CAAE,EAGvBK,EAAM,CAAC,EACDE,EAAI,EAAGA,EAAIH,EAAKG,IACrBD,EAAIL,EAAU,KAAMC,EAASC,EAAKH,EAAGO,CAAE,EAAGA,EAAGP,CAAE,EAC/C,EAAIK,EAAKC,CAAE,EACNT,GAAS,CAAE,EACf,EAAE,KAAMU,CAAE,EAEVF,EAAKC,CAAE,EAAI,CAAEC,CAAE,EAGjB,OAAOF,CACR,CAKAT,GAAO,QAAUG,KC7EjB,IAAAS,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAU,QAAS,yBAA0B,EAC7CC,GAAgB,IAoBpB,SAASC,GAAaC,EAAGC,EAAS,CACjC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACA,EACAC,EACAC,EAIJ,GADAJ,EAAMJ,EAAE,OACHC,EAAO,SAAWG,EACtB,MAAM,IAAI,WAAY,6EAA8E,EAQrG,IALAF,EAAOJ,GAAeE,CAAE,EACxBG,EAAOL,GAAeG,CAAO,EAG7BI,EAAM,CAAC,EACDG,EAAI,EAAGA,EAAIJ,EAAKI,IACrBD,EAAIL,EAAMF,EAAGQ,CAAE,EACfF,EAAIH,EAAMF,EAAQO,CAAE,EAAE,SAAS,EAC/B,EAAIH,EAAKC,CAAE,EACNT,GAAS,CAAE,EACf,EAAE,KAAMU,CAAE,EAEVF,EAAKC,CAAE,EAAI,CAAEC,CAAE,EAGjB,OAAOF,CACR,CAKAT,GAAO,QAAUG,KChFjB,IAAAU,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAU,QAAS,yBAA0B,EAC7CC,GAAgB,IAuBpB,SAASC,GAAeC,EAAGC,EAAWC,EAAU,CAC/C,IAAIC,EACAC,EACAC,EACAC,EACA,EACAC,EACAC,EAUJ,IAPAJ,EAAMJ,EAAE,OAGRG,EAAML,GAAeE,CAAE,EAGvBK,EAAM,CAAC,EACDG,EAAI,EAAGA,EAAIJ,EAAKI,IACrBD,EAAIJ,EAAKH,EAAGQ,CAAE,EACdF,EAAIL,EAAU,KAAMC,EAASK,EAAGC,EAAGR,CAAE,EACrC,EAAIK,EAAKC,CAAE,EACNT,GAAS,CAAE,EACf,EAAE,KAAMU,CAAE,EAEVF,EAAKC,CAAE,EAAI,CAAEC,CAAE,EAGjB,OAAOF,CACR,CAKAT,GAAO,QAAUG,KC/EjB,IAAAU,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAO,QAAS,gCAAiC,EAiBrD,SAASC,GAAWC,EAAIC,EAAIC,EAAY,CACvC,IAAIC,EACAC,EACAC,EAGJ,GADAD,EAAMN,IAAQG,EAAGD,GAAOE,CAAU,EAC7BE,GAAO,EACX,MAAO,CAAEJ,CAAG,EAGb,IADAG,EAAM,CAAEH,CAAG,EACLK,EAAI,EAAGA,EAAID,EAAKC,IACrBF,EAAI,KAAMH,EAAME,EAAUG,CAAG,EAE9B,OAAOF,CACR,CAKAN,GAAO,QAAUE,KC1DjB,IAAAO,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAmB,KACnBC,GAAQ,QAAS,iCAAkC,EAqBvD,SAASC,GAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CAkBA,SAASC,GAAUC,EAAGC,EAAeC,EAAWC,EAAY,CAC3D,IAAIC,EACJ,GAAKD,GAAaR,GAAOM,CAAc,EAAI,CAC1C,IAAMG,EAAIF,EAAWE,EAAIJ,EAAE,OAAQI,IAClC,GAAKT,GAAOK,EAAGI,CAAE,CAAE,EAClB,OAAOA,EAGT,MAAO,EACR,CACA,IAAMA,EAAIF,EAAWE,EAAIJ,EAAE,OAAQI,IAClC,GAAKH,IAAkBD,EAAGI,CAAE,EAC3B,OAAOA,EAGT,MAAO,EACR,CAqBA,SAASC,GAAWL,EAAGC,EAAeC,EAAWC,EAAY,CAC5D,IAAIG,EACAC,EACAH,EAKJ,GAHAE,EAAON,EAAE,KACTO,EAAMP,EAAE,UAAW,CAAE,EAEhBG,GAAaR,GAAOM,CAAc,EAAI,CAC1C,IAAMG,EAAIF,EAAWE,EAAIE,EAAK,OAAQF,IACrC,GAAKT,GAAOY,EAAKD,EAAMF,CAAE,CAAE,EAC1B,OAAOA,EAGT,MAAO,EACR,CACA,IAAMA,EAAIF,EAAWE,EAAIE,EAAK,OAAQF,IACrC,GAAKH,IAAkBM,EAAKD,EAAMF,CAAE,EACnC,OAAOA,EAGT,MAAO,EACR,CAgCA,SAASI,GAASR,EAAGC,EAAeC,EAAWC,EAAY,CAC1D,IAAIN,EACJ,OAAKD,GAAWI,EAAG,SAAU,GAAKG,IAAc,GACxCH,EAAE,QAASC,EAAeC,CAAU,GAEvCA,EAAY,IAChBA,GAAaF,EAAE,OACVE,EAAY,IAChBA,EAAY,IAGdL,EAAMH,GAAkBM,CAAE,EACrBH,EAAI,iBACDQ,GAAWR,EAAKI,EAAeC,EAAWC,CAAU,EAErDJ,GAAUC,EAAGC,EAAeC,EAAWC,CAAU,EACzD,CAKAV,GAAO,QAAUe,KChLjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCzCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAgB,IAepB,SAASC,GAAMC,EAAM,CACpB,IAAIC,EACAC,EASJ,GANAD,EAAMH,GAAeE,CAAI,EAGzBE,EAAMF,EAAI,OAAS,EAGd,EAAAE,EAAM,GAGX,OAAOD,EAAKD,EAAKE,CAAI,CACtB,CAKAL,GAAO,QAAUE,KCzDjB,IAAAI,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAmB,KACnBC,GAAQ,QAAS,iCAAkC,EAqBvD,SAASC,GAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CAkBA,SAASC,GAAUC,EAAGC,EAAeC,EAAWC,EAAY,CAC3D,IAAIC,EACJ,GAAKD,GAAaR,GAAOM,CAAc,EAAI,CAC1C,IAAMG,EAAIF,EAAWE,GAAK,EAAGA,IAC5B,GAAKT,GAAOK,EAAGI,CAAE,CAAE,EAClB,OAAOA,EAGT,MAAO,EACR,CACA,IAAMA,EAAIF,EAAWE,GAAK,EAAGA,IAC5B,GAAKH,IAAkBD,EAAGI,CAAE,EAC3B,OAAOA,EAGT,MAAO,EACR,CAqBA,SAASC,GAAWL,EAAGC,EAAeC,EAAWC,EAAY,CAC5D,IAAIG,EACAC,EACAH,EAKJ,GAHAE,EAAON,EAAE,KACTO,EAAMP,EAAE,UAAW,CAAE,EAEhBG,GAAaR,GAAOM,CAAc,EAAI,CAC1C,IAAMG,EAAIF,EAAWE,GAAK,EAAGA,IAC5B,GAAKT,GAAOY,EAAKD,EAAMF,CAAE,CAAE,EAC1B,OAAOA,EAGT,MAAO,EACR,CACA,IAAMA,EAAIF,EAAWE,GAAK,EAAGA,IAC5B,GAAKH,IAAkBM,EAAKD,EAAMF,CAAE,EACnC,OAAOA,EAGT,MAAO,EACR,CAgCA,SAASI,GAAaR,EAAGC,EAAeC,EAAWC,EAAY,CAC9D,IAAIN,EACJ,GAAKD,GAAWI,EAAG,aAAc,GAAKG,IAAc,GACnD,OAAOH,EAAE,YAAaC,EAAeC,CAAU,EAEhD,GAAKA,EAAY,GAEhB,GADAA,GAAaF,EAAE,OACVE,EAAY,EAChB,MAAO,QAEGA,EAAYF,EAAE,SACzBE,EAAYF,EAAE,OAAS,GAGxB,OADAH,EAAMH,GAAkBM,CAAE,EACrBH,EAAI,iBACDQ,GAAWR,EAAKI,EAAeC,EAAWC,CAAU,EAErDJ,GAAUC,EAAGC,EAAeC,EAAWC,CAAU,CACzD,CAKAV,GAAO,QAAUe,KClLjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCzCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,SAASC,GAAUC,EAAIC,EAAIC,EAAM,CAChC,IAAIC,EACAC,EACAC,EACAC,EAEJ,GAAKJ,IAAQ,EACZ,MAAO,CAAC,EAQT,IALAE,EAAIF,EAAM,EACVG,GAAMJ,EAAGD,GAAOI,EAGhBD,EAAM,CAAEH,CAAG,EACLM,EAAI,EAAGA,EAAIF,EAAGE,IACnBH,EAAI,KAAMH,EAAMK,EAAEC,CAAG,EAEtB,OAAAH,EAAI,KAAMF,CAAG,EACNE,CACR,CAKAL,GAAO,QAAUC,KC3DjB,IAAAQ,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAM,QAAS,+BAAgC,EAiBnD,SAASC,GAAUC,EAAGC,EAAGC,EAAM,CAC9B,IAAIC,EACAC,EACAC,EACAC,EAEJ,GAAKJ,IAAQ,EACZ,MAAO,CAAC,EAQT,IALAE,EAAIF,EAAM,EACVG,GAAMJ,EAAED,GAAMI,EAGdD,EAAM,CAAEL,GAAK,GAAIE,CAAE,CAAE,EACfM,EAAI,EAAGA,EAAIF,EAAGE,IACnBH,EAAI,KAAML,GAAK,GAAIE,EAAGK,EAAEC,CAAG,CAAE,EAE9B,OAAAH,EAAI,KAAML,GAAK,GAAIG,CAAE,CAAE,EAChBE,CACR,CAKAN,GAAO,QAAUE,KChEjB,IAAAQ,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA4CA,SAASC,GAAOC,EAAGC,EAAOC,EAAKC,EAAU,CACxC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAKJ,IAHAN,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EACdS,EAAI,CAAC,EACCH,EAAK,EAAGA,EAAKF,EAAIE,IAAO,CAG7B,IAFAC,EAAKR,EAAGO,CAAG,EACXE,EAAK,CAAC,EACAH,EAAK,EAAGA,EAAKF,EAAIE,IACtBG,EAAG,KAAMP,EAAI,KAAMC,EAASK,EAAIF,CAAG,EAAG,CAAEC,EAAID,CAAG,EAAGN,CAAE,CAAE,EAEvDU,EAAE,KAAMD,CAAG,CACZ,CACA,OAAOC,CACR,CAKAZ,GAAO,QAAUC,KCtEjB,IAAAY,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAuDA,SAASC,GAAOC,EAAGC,EAAGC,EAAOC,EAAKC,EAAU,CAC3C,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EAIJ,GAFAL,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EACTG,GAAM,GAAKC,GAAM,EACrB,OAAOL,EAER,IAAMO,EAAK,EAAGA,EAAKF,EAAIE,IAGtB,IAFAC,EAAKT,EAAGQ,CAAG,EACXE,EAAKT,EAAGO,CAAG,EACLD,EAAK,EAAGA,EAAKF,EAAIE,IACtBG,EAAIH,CAAG,EAAIJ,EAAI,KAAMC,EAASK,EAAIF,CAAG,EAAG,CAAEC,EAAID,CAAG,EAAGP,CAAE,EAGxD,OAAOC,CACR,CAKAH,GAAO,QAAUC,KCjFjB,IAAAY,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA8DA,IAAIC,GAAc,QAAS,uDAAwD,EAC/EC,GAAO,KACPC,GAAS,KAKbF,GAAaC,GAAM,SAAUC,EAAO,EAKpCH,GAAO,QAAUE,KC1EjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA4CA,SAASC,GAAOC,EAAGC,EAAOC,EAAKC,EAAU,CACxC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAMJ,IAJAV,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EACdK,EAAKL,EAAO,CAAE,EACda,EAAI,CAAC,EACCL,EAAK,EAAGA,EAAKH,EAAIG,IAAO,CAG7B,IAFAG,EAAKZ,EAAGS,CAAG,EACXI,EAAK,CAAC,EACAL,EAAK,EAAGA,EAAKH,EAAIG,IAAO,CAG7B,IAFAE,EAAKE,EAAIJ,CAAG,EACZG,EAAK,CAAC,EACAJ,EAAK,EAAGA,EAAKH,EAAIG,IACtBI,EAAG,KAAMT,EAAI,KAAMC,EAASO,EAAIH,CAAG,EAAG,CAAEE,EAAID,EAAID,CAAG,EAAGP,CAAE,CAAE,EAE3Da,EAAG,KAAMF,CAAG,CACb,CACAG,EAAE,KAAMD,CAAG,CACZ,CACA,OAAOC,CACR,CAKAhB,GAAO,QAAUC,KChFjB,IAAAgB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAuDA,SAASC,GAAOC,EAAGC,EAAGC,EAAOC,EAAKC,EAAU,CAC3C,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAKJ,GAHAT,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EACdK,EAAKL,EAAO,CAAE,EACTG,GAAM,GAAKC,GAAM,GAAKC,GAAM,EAChC,OAAON,EAER,IAAMS,EAAK,EAAGA,EAAKH,EAAIG,IAGtB,IAFAG,EAAKb,EAAGU,CAAG,EACXI,EAAKb,EAAGS,CAAG,EACLD,EAAK,EAAGA,EAAKH,EAAIG,IAGtB,IAFAE,EAAKE,EAAIJ,CAAG,EACZG,EAAKE,EAAIL,CAAG,EACND,EAAK,EAAGA,EAAKH,EAAIG,IACtBI,EAAIJ,CAAG,EAAIL,EAAI,KAAMC,EAASO,EAAIH,CAAG,EAAG,CAAEE,EAAID,EAAID,CAAG,EAAGR,CAAE,EAI7D,OAAOC,CACR,CAKAH,GAAO,QAAUC,KC1FjB,IAAAgB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA8DA,IAAIC,GAAc,QAAS,uDAAwD,EAC/EC,GAAO,KACPC,GAAS,KAKbF,GAAaC,GAAM,SAAUC,EAAO,EAKpCH,GAAO,QAAUE,KC1EjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA4CA,SAASC,GAAOC,EAAGC,EAAOC,EAAKC,EAAU,CACxC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAOJ,IALAd,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EACdK,EAAKL,EAAO,CAAE,EACdM,EAAKN,EAAO,CAAE,EACdiB,EAAI,CAAC,EACCP,EAAK,EAAGA,EAAKJ,EAAII,IAAO,CAG7B,IAFAK,EAAKhB,EAAGW,CAAG,EACXM,EAAK,CAAC,EACAP,EAAK,EAAGA,EAAKJ,EAAII,IAAO,CAG7B,IAFAI,EAAKE,EAAIN,CAAG,EACZK,EAAK,CAAC,EACAN,EAAK,EAAGA,EAAKJ,EAAII,IAAO,CAG7B,IAFAG,EAAKE,EAAIL,CAAG,EACZI,EAAK,CAAC,EACAL,EAAK,EAAGA,EAAKJ,EAAII,IACtBK,EAAG,KAAMX,EAAI,KAAMC,EAASS,EAAIJ,CAAG,EAAG,CAAEG,EAAID,EAAID,EAAID,CAAG,EAAGR,CAAE,CAAE,EAE/De,EAAG,KAAMF,CAAG,CACb,CACAI,EAAG,KAAMF,CAAG,CACb,CACAG,EAAE,KAAMD,CAAG,CACZ,CACA,OAAOC,CACR,CAKApB,GAAO,QAAUC,KC1FjB,IAAAoB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAuDA,SAASC,GAAOC,EAAGC,EAAGC,EAAOC,EAAKC,EAAU,CAC3C,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAMJ,GAJAb,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EACdK,EAAKL,EAAO,CAAE,EACdM,EAAKN,EAAO,CAAE,EACTG,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAAKC,GAAM,EAC3C,OAAOP,EAER,IAAMW,EAAK,EAAGA,EAAKJ,EAAII,IAGtB,IAFAK,EAAKjB,EAAGY,CAAG,EACXM,EAAKjB,EAAGW,CAAG,EACLD,EAAK,EAAGA,EAAKJ,EAAII,IAGtB,IAFAI,EAAKE,EAAIN,CAAG,EACZK,EAAKE,EAAIP,CAAG,EACND,EAAK,EAAGA,EAAKJ,EAAII,IAGtB,IAFAG,EAAKE,EAAIL,CAAG,EACZI,EAAKE,EAAIN,CAAG,EACND,EAAK,EAAGA,EAAKJ,EAAII,IACtBK,EAAIL,CAAG,EAAIN,EAAI,KAAMC,EAASS,EAAIJ,CAAG,EAAG,CAAEG,EAAID,EAAID,EAAID,CAAG,EAAGT,CAAE,EAKlE,OAAOC,CACR,CAKAH,GAAO,QAAUC,KCnGjB,IAAAoB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA8DA,IAAIC,GAAc,QAAS,uDAAwD,EAC/EC,GAAO,KACPC,GAAS,KAKbF,GAAaC,GAAM,SAAUC,EAAO,EAKpCH,GAAO,QAAUE,KC1EjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA4CA,SAASC,GAAOC,EAAGC,EAAOC,EAAKC,EAAU,CACxC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAQJ,IANAlB,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EACdK,EAAKL,EAAO,CAAE,EACdM,EAAKN,EAAO,CAAE,EACdO,EAAKP,EAAO,CAAE,EACdqB,EAAI,CAAC,EACCT,EAAK,EAAGA,EAAKL,EAAIK,IAAO,CAG7B,IAFAO,EAAKpB,EAAGa,CAAG,EACXQ,EAAK,CAAC,EACAT,EAAK,EAAGA,EAAKL,EAAIK,IAAO,CAG7B,IAFAM,EAAKE,EAAIR,CAAG,EACZO,EAAK,CAAC,EACAR,EAAK,EAAGA,EAAKL,EAAIK,IAAO,CAG7B,IAFAK,EAAKE,EAAIP,CAAG,EACZM,EAAK,CAAC,EACAP,EAAK,EAAGA,EAAKL,EAAIK,IAAO,CAG7B,IAFAI,EAAKE,EAAIN,CAAG,EACZK,EAAK,CAAC,EACAN,EAAK,EAAGA,EAAKL,EAAIK,IACtBM,EAAG,KAAMb,EAAI,KAAMC,EAASW,EAAIL,CAAG,EAAG,CAAEI,EAAID,EAAID,EAAID,EAAID,CAAG,EAAGT,CAAE,CAAE,EAEnEiB,EAAG,KAAMF,CAAG,CACb,CACAI,EAAG,KAAMF,CAAG,CACb,CACAI,EAAG,KAAMF,CAAG,CACb,CACAG,EAAE,KAAMD,CAAG,CACZ,CACA,OAAOC,CACR,CAKAxB,GAAO,QAAUC,KCpGjB,IAAAwB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAuDA,SAASC,GAAOC,EAAGC,EAAGC,EAAOC,EAAKC,EAAU,CAC3C,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAOJ,GALAjB,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EACdK,EAAKL,EAAO,CAAE,EACdM,EAAKN,EAAO,CAAE,EACdO,EAAKP,EAAO,CAAE,EACTG,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAAKC,GAAM,EACtD,OAAOR,EAER,IAAMa,EAAK,EAAGA,EAAKL,EAAIK,IAGtB,IAFAO,EAAKrB,EAAGc,CAAG,EACXQ,EAAKrB,EAAGa,CAAG,EACLD,EAAK,EAAGA,EAAKL,EAAIK,IAGtB,IAFAM,EAAKE,EAAIR,CAAG,EACZO,EAAKE,EAAIT,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IAGtB,IAFAK,EAAKE,EAAIP,CAAG,EACZM,EAAKE,EAAIR,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IAGtB,IAFAI,EAAKE,EAAIN,CAAG,EACZK,EAAKE,EAAIP,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IACtBM,EAAIN,CAAG,EAAIP,EAAI,KAAMC,EAASW,EAAIL,CAAG,EAAG,CAAEI,EAAID,EAAID,EAAID,EAAID,CAAG,EAAGV,CAAE,EAMvE,OAAOC,CACR,CAKAH,GAAO,QAAUC,KC5GjB,IAAAwB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA8DA,IAAIC,GAAc,QAAS,uDAAwD,EAC/EC,GAAO,KACPC,GAAS,KAKbF,GAAaC,GAAM,SAAUC,EAAO,EAKpCH,GAAO,QAAUE,KC1EjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoDA,SAASC,GAAaC,EAAQC,EAAOC,EAAM,CAC1C,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAIJ,GAFAX,EAAKF,EAAO,CAAE,EACdG,EAAKH,EAAO,CAAE,EACT,EAAAE,GAAM,GAAKC,GAAM,GAOtB,IAJAO,EAAIX,EAAQ,CAAE,EACdY,EAAIZ,EAAQ,CAAE,EACda,EAAIb,EAAQ,CAAE,EACdc,EAAId,EAAQ,CAAE,EACRM,EAAK,EAAGA,EAAKF,EAAIE,IAKtB,IAJAC,EAAKI,EAAGL,CAAG,EACXE,EAAKI,EAAGN,CAAG,EACXG,EAAKI,EAAGP,CAAG,EACXI,EAAKI,EAAGR,CAAG,EACLD,EAAK,EAAGA,EAAKF,EAAIE,IACjBK,EAAIL,CAAG,IAAM,IACjBI,EAAIJ,CAAG,EAAIH,EAAKK,EAAIF,CAAG,EAAGG,EAAIH,CAAG,CAAE,EAIvC,CAKAP,GAAO,QAAUC,KC3FjB,IAAAgB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA+CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCpDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsDA,SAASC,GAAYC,EAAQC,EAAOC,EAAM,CACzC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAIJ,GAFAT,EAAKF,EAAO,CAAE,EACdG,EAAKH,EAAO,CAAE,EACT,EAAAE,GAAM,GAAKC,GAAM,GAMtB,IAHAM,EAAIV,EAAQ,CAAE,EACdW,EAAIX,EAAQ,CAAE,EACdY,EAAIZ,EAAQ,CAAE,EACRM,EAAK,EAAGA,EAAKF,EAAIE,IAItB,IAHAC,EAAKG,EAAGJ,CAAG,EACXE,EAAKG,EAAGL,CAAG,EACXG,EAAKG,EAAGN,CAAG,EACLD,EAAK,EAAGA,EAAKF,EAAIE,IACjBI,EAAIJ,CAAG,IAAM,IACjBG,EAAIH,CAAG,EAAIH,EAAKK,EAAIF,CAAG,CAAE,EAI7B,CAKAP,GAAO,QAAUC,KCzFjB,IAAAc,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAiDA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCtDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsDA,SAASC,GAAYC,EAAQC,EAAOC,EAAM,CACzC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAKJ,GAHAd,EAAKF,EAAO,CAAE,EACdG,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EACT,EAAAE,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAMjC,IAHAU,EAAIf,EAAQ,CAAE,EACdgB,EAAIhB,EAAQ,CAAE,EACdiB,EAAIjB,EAAQ,CAAE,EACRQ,EAAK,EAAGA,EAAKH,EAAIG,IAItB,IAHAE,EAAKK,EAAGP,CAAG,EACXI,EAAKI,EAAGR,CAAG,EACXM,EAAKG,EAAGT,CAAG,EACLD,EAAK,EAAGA,EAAKH,EAAIG,IAItB,IAHAE,EAAKC,EAAIH,CAAG,EACZI,EAAKC,EAAIL,CAAG,EACZM,EAAKC,EAAIP,CAAG,EACND,EAAK,EAAGA,EAAKH,EAAIG,IACjBO,EAAIP,CAAG,IAAM,IACjBK,EAAIL,CAAG,EAAIJ,EAAKO,EAAIH,CAAG,CAAE,EAK9B,CAKAR,GAAO,QAAUC,KCpGjB,IAAAmB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAiDA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCtDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA8CA,SAASC,GAAmBC,EAAIC,EAAK,CACpC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAiBJ,IAfAX,EAAQ,UAAU,OAGlBE,EAAM,CAAEJ,EAAIC,CAAG,EAGfE,EAAO,CAAEH,EAAG,OAAQC,EAAG,MAAO,EAG9BO,EAAM,CAAE,EAAG,CAAE,EAGbC,EAAIN,EAAM,CAAE,EAAIA,EAAM,CAAE,EAGlBQ,EAAI,EAAGA,EAAIT,EAAOS,IACvBJ,EAAM,UAAWI,CAAE,EACnBP,EAAI,KAAMG,CAAI,EACdJ,EAAK,KAAMI,EAAI,MAAO,EACtBC,EAAI,KAAM,CAAE,EACZC,GAAKN,EAAMQ,CAAE,EAId,IADAN,EAAM,CAAC,EACDM,EAAI,EAAGA,EAAIF,EAAGE,IAAM,CAGzB,IADAE,EAAIF,EACEC,EAAIV,EAAM,EAAGU,GAAK,EAAGA,IAC1BF,EAAIG,EAAIV,EAAMS,CAAE,EAChBC,GAAKH,EACLG,GAAKV,EAAMS,CAAE,EACbJ,EAAKI,CAAE,EAAIF,EAIZ,IADAJ,EAAM,CAAC,EACDM,EAAI,EAAGA,EAAIV,EAAOU,IACvBN,EAAI,KAAMF,EAAKQ,CAAE,EAAGJ,EAAKI,CAAE,CAAE,CAAE,EAEhCP,EAAI,KAAMC,CAAI,CACf,CACA,OAAOD,CACR,CAKAP,GAAO,QAAUC,KC1GjB,IAAAe,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAgCA,SAASC,GAAOC,EAAI,CACnB,IAAIC,EACAC,EAGJ,GADAD,EAAM,CAAC,EACFD,GAAK,EACT,OAAOC,EAER,IAAMC,EAAI,EAAGA,EAAIF,EAAE,EAAGE,IACrBD,EAAI,KAAMC,CAAE,EAEb,OAAOD,CACR,CAKAH,GAAO,QAAUC,KCjDjB,IAAAI,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,KAeb,SAASC,GAAMC,EAAM,CACpB,OAAOF,GAAQ,EAAKE,CAAI,CACzB,CAKAH,GAAO,QAAUE,KC5CjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,KAef,SAASC,GAAQC,EAAQ,CACxB,OAAOF,GAAU,EAAKE,CAAM,CAC7B,CAKAH,GAAO,QAAUE,KC5CjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,KAef,SAASC,GAAQC,EAAQ,CACxB,OAAOF,GAAU,EAAKE,CAAM,CAC7B,CAKAH,GAAO,QAAUE,KC5CjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,KAef,SAASC,GAAQC,EAAQ,CACxB,OAAOF,GAAU,EAAKE,CAAM,CAC7B,CAKAH,GAAO,QAAUE,KC5CjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,KAef,SAASC,GAAQC,EAAQ,CACxB,OAAOF,GAAU,EAAKE,CAAM,CAC7B,CAKAH,GAAO,QAAUE,KC5CjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,KAmBf,SAASC,GAAQC,EAAQ,CACxB,OAAOF,GAAU,EAAKE,CAAM,CAC7B,CAKAH,GAAO,QAAUE,KChDjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoDA,SAASC,GAAcC,EAAQC,EAAOC,EAAM,CAC3C,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAIJ,GAFAb,EAAKF,EAAO,CAAE,EACdG,EAAKH,EAAO,CAAE,EACT,EAAAE,GAAM,GAAKC,GAAM,GAQtB,IALAQ,EAAIZ,EAAQ,CAAE,EACda,EAAIb,EAAQ,CAAE,EACdc,EAAId,EAAQ,CAAE,EACde,EAAIf,EAAQ,CAAE,EACdgB,EAAIhB,EAAQ,CAAE,EACRM,EAAK,EAAGA,EAAKF,EAAIE,IAMtB,IALAC,EAAKK,EAAGN,CAAG,EACXE,EAAKK,EAAGP,CAAG,EACXG,EAAKK,EAAGR,CAAG,EACXI,EAAKK,EAAGT,CAAG,EACXK,EAAKK,EAAGV,CAAG,EACLD,EAAK,EAAGA,EAAKF,EAAIE,IACtBM,EAAIN,CAAG,EAAIH,EAAKK,EAAIF,CAAG,EAAGG,EAAIH,CAAG,EAAGI,EAAIJ,CAAG,EAAGK,EAAIL,CAAG,CAAE,CAG1D,CAKAP,GAAO,QAAUC,KC7FjB,IAAAkB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA+CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCpDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoDA,SAASC,GAAcC,EAAQC,EAAOC,EAAM,CAC3C,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAKJ,GAHApB,EAAKF,EAAO,CAAE,EACdG,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EACT,EAAAE,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAQjC,IALAc,EAAInB,EAAQ,CAAE,EACdoB,EAAIpB,EAAQ,CAAE,EACdqB,EAAIrB,EAAQ,CAAE,EACdsB,EAAItB,EAAQ,CAAE,EACduB,EAAIvB,EAAQ,CAAE,EACRQ,EAAK,EAAGA,EAAKH,EAAIG,IAMtB,IALAM,EAAKK,EAAGX,CAAG,EACXO,EAAKK,EAAGZ,CAAG,EACXQ,EAAKK,EAAGb,CAAG,EACXS,EAAKK,EAAGd,CAAG,EACXU,EAAKK,EAAGf,CAAG,EACLD,EAAK,EAAGA,EAAKH,EAAIG,IAMtB,IALAE,EAAKK,EAAIP,CAAG,EACZG,EAAKK,EAAIR,CAAG,EACZI,EAAKK,EAAIT,CAAG,EACZK,EAAKK,EAAIV,CAAG,EACZM,EAAKK,EAAIX,CAAG,EACND,EAAK,EAAGA,EAAKH,EAAIG,IACtBO,EAAIP,CAAG,EAAIJ,EAAKO,EAAIH,CAAG,EAAGI,EAAIJ,CAAG,EAAGK,EAAIL,CAAG,EAAGM,EAAIN,CAAG,CAAE,CAI3D,CAKAR,GAAO,QAAUC,KC5GjB,IAAAyB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA+CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCpDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoDA,SAASC,GAAcC,EAAQC,EAAOC,EAAM,CAC3C,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAMJ,GAJA3B,EAAKF,EAAO,CAAE,EACdG,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EACdK,EAAKL,EAAO,CAAE,EACT,EAAAE,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAQ5C,IALAoB,EAAI1B,EAAQ,CAAE,EACd2B,EAAI3B,EAAQ,CAAE,EACd4B,EAAI5B,EAAQ,CAAE,EACd6B,EAAI7B,EAAQ,CAAE,EACd8B,EAAI9B,EAAQ,CAAE,EACRU,EAAK,EAAGA,EAAKJ,EAAII,IAMtB,IALAW,EAAKK,EAAGhB,CAAG,EACXY,EAAKK,EAAGjB,CAAG,EACXa,EAAKK,EAAGlB,CAAG,EACXc,EAAKK,EAAGnB,CAAG,EACXe,EAAKK,EAAGpB,CAAG,EACLD,EAAK,EAAGA,EAAKJ,EAAII,IAMtB,IALAO,EAAKK,EAAIZ,CAAG,EACZQ,EAAKK,EAAIb,CAAG,EACZS,EAAKK,EAAId,CAAG,EACZU,EAAKK,EAAIf,CAAG,EACZW,EAAKK,EAAIhB,CAAG,EACND,EAAK,EAAGA,EAAKJ,EAAII,IAMtB,IALAG,EAAKK,EAAIR,CAAG,EACZI,EAAKK,EAAIT,CAAG,EACZK,EAAKK,EAAIV,CAAG,EACZM,EAAKK,EAAIX,CAAG,EACZO,EAAKK,EAAIZ,CAAG,EACND,EAAK,EAAGA,EAAKJ,EAAII,IACtBQ,EAAIR,CAAG,EAAIL,EAAKS,EAAIJ,CAAG,EAAGK,EAAIL,CAAG,EAAGM,EAAIN,CAAG,EAAGO,EAAIP,CAAG,CAAE,CAK5D,CAKAT,GAAO,QAAUC,KC3HjB,IAAAgC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA+CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCpDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoDA,SAASC,GAAcC,EAAQC,EAAOC,EAAM,CAC3C,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAOJ,GALAlC,EAAKF,EAAO,CAAE,EACdG,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EACdK,EAAKL,EAAO,CAAE,EACdM,EAAKN,EAAO,CAAE,EACT,EAAAE,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAQvD,IALA0B,EAAIjC,EAAQ,CAAE,EACdkC,EAAIlC,EAAQ,CAAE,EACdmC,EAAInC,EAAQ,CAAE,EACdoC,EAAIpC,EAAQ,CAAE,EACdqC,EAAIrC,EAAQ,CAAE,EACRY,EAAK,EAAGA,EAAKL,EAAIK,IAMtB,IALAgB,EAAKK,EAAGrB,CAAG,EACXiB,EAAKK,EAAGtB,CAAG,EACXkB,EAAKK,EAAGvB,CAAG,EACXmB,EAAKK,EAAGxB,CAAG,EACXoB,EAAKK,EAAGzB,CAAG,EACLD,EAAK,EAAGA,EAAKL,EAAIK,IAMtB,IALAY,EAAKK,EAAIjB,CAAG,EACZa,EAAKK,EAAIlB,CAAG,EACZc,EAAKK,EAAInB,CAAG,EACZe,EAAKK,EAAIpB,CAAG,EACZgB,EAAKK,EAAIrB,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IAMtB,IALAQ,EAAKK,EAAIb,CAAG,EACZS,EAAKK,EAAId,CAAG,EACZU,EAAKK,EAAIf,CAAG,EACZW,EAAKK,EAAIhB,CAAG,EACZY,EAAKK,EAAIjB,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IAMtB,IALAI,EAAKK,EAAIT,CAAG,EACZK,EAAKK,EAAIV,CAAG,EACZM,EAAKK,EAAIX,CAAG,EACZO,EAAKK,EAAIZ,CAAG,EACZQ,EAAKK,EAAIb,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IACtBS,EAAIT,CAAG,EAAIN,EAAKW,EAAIL,CAAG,EAAGM,EAAIN,CAAG,EAAGO,EAAIP,CAAG,EAAGQ,EAAIR,CAAG,CAAE,CAM7D,CAKAV,GAAO,QAAUC,KC1IjB,IAAAuC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA+CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCpDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqDA,SAASC,GAAWC,EAAQC,EAAOC,EAAM,CACxC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAIJ,GAFAf,EAAKF,EAAO,CAAE,EACdG,EAAKH,EAAO,CAAE,EACT,EAAAE,GAAM,GAAKC,GAAM,GAStB,IANAS,EAAIb,EAAQ,CAAE,EACdc,EAAId,EAAQ,CAAE,EACde,EAAIf,EAAQ,CAAE,EACdgB,EAAIhB,EAAQ,CAAE,EACdiB,EAAIjB,EAAQ,CAAE,EACdkB,EAAIlB,EAAQ,CAAE,EACRM,EAAK,EAAGA,EAAKF,EAAIE,IAOtB,IANAC,EAAKM,EAAGP,CAAG,EACXE,EAAKM,EAAGR,CAAG,EACXG,EAAKM,EAAGT,CAAG,EACXI,EAAKM,EAAGV,CAAG,EACXK,EAAKM,EAAGX,CAAG,EACXM,EAAKM,EAAGZ,CAAG,EACLD,EAAK,EAAGA,EAAKF,EAAIE,IACtBO,EAAIP,CAAG,EAAIH,EAAKK,EAAIF,CAAG,EAAGG,EAAIH,CAAG,EAAGI,EAAIJ,CAAG,EAAGK,EAAIL,CAAG,EAAGM,EAAIN,CAAG,CAAE,CAGpE,CAKAP,GAAO,QAAUC,KClGjB,IAAAoB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAgDA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCrDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqDA,SAASC,GAAWC,EAAQC,EAAOC,EAAM,CACxC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAKJ,GAHAvB,EAAKF,EAAO,CAAE,EACdG,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EACT,EAAAE,GAAM,GAAKC,GAAM,GAAKC,GAAM,GASjC,IANAgB,EAAIrB,EAAQ,CAAE,EACdsB,EAAItB,EAAQ,CAAE,EACduB,EAAIvB,EAAQ,CAAE,EACdwB,EAAIxB,EAAQ,CAAE,EACdyB,EAAIzB,EAAQ,CAAE,EACd0B,EAAI1B,EAAQ,CAAE,EACRQ,EAAK,EAAGA,EAAKH,EAAIG,IAOtB,IANAO,EAAKM,EAAGb,CAAG,EACXQ,EAAKM,EAAGd,CAAG,EACXS,EAAKM,EAAGf,CAAG,EACXU,EAAKM,EAAGhB,CAAG,EACXW,EAAKM,EAAGjB,CAAG,EACXY,EAAKM,EAAGlB,CAAG,EACLD,EAAK,EAAGA,EAAKH,EAAIG,IAOtB,IANAE,EAAKM,EAAIR,CAAG,EACZG,EAAKM,EAAIT,CAAG,EACZI,EAAKM,EAAIV,CAAG,EACZK,EAAKM,EAAIX,CAAG,EACZM,EAAKM,EAAIZ,CAAG,EACZO,EAAKM,EAAIb,CAAG,EACND,EAAK,EAAGA,EAAKH,EAAIG,IACtBQ,EAAIR,CAAG,EAAIJ,EAAKO,EAAIH,CAAG,EAAGI,EAAIJ,CAAG,EAAGK,EAAIL,CAAG,EAAGM,EAAIN,CAAG,EAAGO,EAAIP,CAAG,CAAE,CAIrE,CAKAR,GAAO,QAAUC,KCnHjB,IAAA4B,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAgDA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCrDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqDA,SAASC,GAAWC,EAAQC,EAAOC,EAAM,CACxC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAMJ,GAJA/B,EAAKF,EAAO,CAAE,EACdG,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EACdK,EAAKL,EAAO,CAAE,EACT,EAAAE,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAS5C,IANAuB,EAAI7B,EAAQ,CAAE,EACd8B,EAAI9B,EAAQ,CAAE,EACd+B,EAAI/B,EAAQ,CAAE,EACdgC,EAAIhC,EAAQ,CAAE,EACdiC,EAAIjC,EAAQ,CAAE,EACdkC,EAAIlC,EAAQ,CAAE,EACRU,EAAK,EAAGA,EAAKJ,EAAII,IAOtB,IANAa,EAAKM,EAAGnB,CAAG,EACXc,EAAKM,EAAGpB,CAAG,EACXe,EAAKM,EAAGrB,CAAG,EACXgB,EAAKM,EAAGtB,CAAG,EACXiB,EAAKM,EAAGvB,CAAG,EACXkB,EAAKM,EAAGxB,CAAG,EACLD,EAAK,EAAGA,EAAKJ,EAAII,IAOtB,IANAQ,EAAKM,EAAId,CAAG,EACZS,EAAKM,EAAIf,CAAG,EACZU,EAAKM,EAAIhB,CAAG,EACZW,EAAKM,EAAIjB,CAAG,EACZY,EAAKM,EAAIlB,CAAG,EACZa,EAAKM,EAAInB,CAAG,EACND,EAAK,EAAGA,EAAKJ,EAAII,IAOtB,IANAG,EAAKM,EAAIT,CAAG,EACZI,EAAKM,EAAIV,CAAG,EACZK,EAAKM,EAAIX,CAAG,EACZM,EAAKM,EAAIZ,CAAG,EACZO,EAAKM,EAAIb,CAAG,EACZQ,EAAKM,EAAId,CAAG,EACND,EAAK,EAAGA,EAAKJ,EAAII,IACtBS,EAAIT,CAAG,EAAIL,EAAKS,EAAIJ,CAAG,EAAGK,EAAIL,CAAG,EAAGM,EAAIN,CAAG,EAAGO,EAAIP,CAAG,EAAGQ,EAAIR,CAAG,CAAE,CAKtE,CAKAT,GAAO,QAAUC,KCpIjB,IAAAoC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAgDA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCrDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqDA,SAASC,GAAWC,EAAQC,EAAOC,EAAM,CACxC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GACAC,GACAC,GACAC,GACAC,GAOJ,GALAvC,EAAKF,EAAO,CAAE,EACdG,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EACdK,EAAKL,EAAO,CAAE,EACdM,EAAKN,EAAO,CAAE,EACT,EAAAE,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAAKC,GAAM,GASvD,IANA8B,EAAIrC,EAAQ,CAAE,EACdsC,GAAItC,EAAQ,CAAE,EACduC,GAAIvC,EAAQ,CAAE,EACdwC,GAAIxC,EAAQ,CAAE,EACdyC,GAAIzC,EAAQ,CAAE,EACd0C,GAAI1C,EAAQ,CAAE,EACRY,EAAK,EAAGA,EAAKL,EAAIK,IAOtB,IANAmB,EAAKM,EAAGzB,CAAG,EACXoB,EAAKM,GAAG1B,CAAG,EACXqB,EAAKM,GAAG3B,CAAG,EACXsB,EAAKM,GAAG5B,CAAG,EACXuB,EAAKM,GAAG7B,CAAG,EACXwB,EAAKM,GAAG9B,CAAG,EACLD,EAAK,EAAGA,EAAKL,EAAIK,IAOtB,IANAc,EAAKM,EAAIpB,CAAG,EACZe,EAAKM,EAAIrB,CAAG,EACZgB,EAAKM,EAAItB,CAAG,EACZiB,EAAKM,EAAIvB,CAAG,EACZkB,EAAKM,EAAIxB,CAAG,EACZmB,EAAKM,EAAIzB,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IAOtB,IANAS,EAAKM,EAAIf,CAAG,EACZU,EAAKM,EAAIhB,CAAG,EACZW,EAAKM,EAAIjB,CAAG,EACZY,EAAKM,EAAIlB,CAAG,EACZa,EAAKM,EAAInB,CAAG,EACZc,EAAKM,EAAIpB,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IAOtB,IANAI,EAAKM,EAAIV,CAAG,EACZK,EAAKM,EAAIX,CAAG,EACZM,EAAKM,EAAIZ,CAAG,EACZO,EAAKM,EAAIb,CAAG,EACZQ,EAAKM,EAAId,CAAG,EACZS,EAAKM,EAAIf,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IACtBU,EAAIV,CAAG,EAAIN,EAAKW,EAAIL,CAAG,EAAGM,EAAIN,CAAG,EAAGO,EAAIP,CAAG,EAAGQ,EAAIR,CAAG,EAAGS,EAAIT,CAAG,CAAE,CAMvE,CAKAV,GAAO,QAAUC,KCrJjB,IAAA4C,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAgDA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCrDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAmB,KAKnBC,GAAa,MAAM,UAAU,MAqBjC,SAASC,GAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CAiBA,SAASC,GAASC,EAAGC,EAAOC,EAAM,CACjC,OAAOP,GAAW,KAAMK,EAAGC,EAAOC,CAAI,CACvC,CAoBA,SAASC,GAAWH,EAAGC,EAAOC,EAAM,CACnC,IAAIE,EACAC,EACAC,EACAC,EAKJ,IAHAH,EAAOJ,EAAE,KACTK,EAAML,EAAE,UAAW,CAAE,EACrBM,EAAM,CAAC,EACDC,EAAIN,EAAOM,EAAIL,EAAKK,IACzBD,EAAI,KAAMD,EAAKD,EAAMG,CAAE,CAAE,EAE1B,OAAOD,CACR,CAiCA,SAASE,GAAOR,EAAGC,EAAOC,EAAM,CAC/B,IAAIL,EACJ,OAAKD,GAAWI,EAAG,OAAQ,EACnBA,EAAE,MAAOC,EAAOC,CAAI,GAE5BL,EAAMH,GAAkBM,CAAE,EACrBH,EAAI,iBACDM,GAAWN,EAAKI,EAAOC,CAAI,EAG5BH,GAASC,EAAGC,EAAOC,CAAI,EAC/B,CAKAT,GAAO,QAAUe,KCvJjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAuCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC5CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAgB,IA8BpB,SAASC,GAAiBC,EAAGC,EAAOC,EAASC,EAAS,CACrD,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAWJ,IATAT,EAAMN,GAAeE,CAAE,EAEvBU,EAAKT,EAAO,CAAE,EACdQ,EAAKR,EAAO,CAAE,EAEdO,EAAMN,EAAS,CAAE,EACjBK,EAAML,EAAS,CAAE,EAEjBG,EAAM,CAAC,EACDO,EAAK,EAAGA,EAAKF,EAAIE,IAAO,CAG7B,IAFAN,EAAM,CAAC,EACPO,EAAKV,EAAWK,EAAII,EACdD,EAAK,EAAGA,EAAKF,EAAIE,IACtBL,EAAI,KAAMF,EAAKJ,EAAGa,CAAG,CAAE,EACvBA,GAAMN,EAEPF,EAAI,KAAMC,CAAI,CACf,CACA,OAAOD,CACR,CAKAR,GAAO,QAAUE,KCxFjB,IAAAe,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAuCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC5CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAgB,IA8BpB,SAASC,GAAiBC,EAAGC,EAAOC,EAASC,EAAS,CACrD,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAaJ,IAXAd,EAAMN,GAAeE,CAAE,EAEvBa,EAAKZ,EAAO,CAAE,EACdW,EAAKX,EAAO,CAAE,EACdU,EAAKV,EAAO,CAAE,EAEdO,EAAMN,EAAS,CAAE,EACjBK,EAAML,EAAS,CAAE,EACjBI,EAAMJ,EAAS,CAAE,EAEjBG,EAAM,CAAC,EACDW,EAAK,EAAGA,EAAKH,EAAIG,IAAO,CAG7B,IAFAC,EAAK,CAAC,EACNR,EAAMN,EAAWK,EAAIQ,EACfD,EAAK,EAAGA,EAAKH,EAAIG,IAAO,CAG7B,IAFAG,EAAK,CAAC,EACNR,EAAMD,EAAQF,EAAIQ,EACZD,EAAK,EAAGA,EAAKH,EAAIG,IACtBI,EAAG,KAAMd,EAAKJ,EAAGU,CAAI,CAAE,EACvBA,GAAOJ,EAERW,EAAG,KAAMC,CAAG,CACb,CACAb,EAAI,KAAMY,CAAG,CACd,CACA,OAAOZ,CACR,CAKAR,GAAO,QAAUE,KCpGjB,IAAAoB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAuCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC5CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAgB,IA8BpB,SAASC,GAAiBC,EAAGC,EAAOC,EAASC,EAAS,CACrD,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAeJ,IAbAnB,EAAMN,GAAeE,CAAE,EAEvBgB,EAAKf,EAAO,CAAE,EACdc,EAAKd,EAAO,CAAE,EACda,EAAKb,EAAO,CAAE,EACdY,EAAKZ,EAAO,CAAE,EAEdQ,EAAMP,EAAS,CAAE,EACjBM,EAAMN,EAAS,CAAE,EACjBK,EAAML,EAAS,CAAE,EACjBI,EAAMJ,EAAS,CAAE,EAEjBG,EAAM,CAAC,EACDe,EAAK,EAAGA,EAAKJ,EAAII,IAAO,CAG7B,IAFAC,EAAK,CAAC,EACNX,EAAMP,EAAWM,EAAIW,EACfD,EAAK,EAAGA,EAAKJ,EAAII,IAAO,CAG7B,IAFAG,EAAK,CAAC,EACNX,EAAMD,EAAQF,EAAIW,EACZD,EAAK,EAAGA,EAAKJ,EAAII,IAAO,CAG7B,IAFAK,EAAK,CAAC,EACNX,EAAMD,EAAQJ,EAAIW,EACZD,EAAK,EAAGA,EAAKJ,EAAII,IACtBM,EAAG,KAAMnB,EAAKJ,EAAGY,CAAI,CAAE,EACvBA,GAAON,EAERgB,EAAG,KAAMC,CAAG,CACb,CACAF,EAAG,KAAMC,CAAG,CACb,CACAjB,EAAI,KAAMgB,CAAG,CACd,CACA,OAAOhB,CACR,CAKAR,GAAO,QAAUE,KChHjB,IAAAyB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAuCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC5CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAgB,IA8BpB,SAASC,GAAiBC,EAAGC,EAAOC,EAASC,EAAS,CACrD,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAiBJ,IAfAxB,EAAMN,GAAeE,CAAE,EAEvBmB,EAAKlB,EAAO,CAAE,EACdiB,EAAKjB,EAAO,CAAE,EACdgB,EAAKhB,EAAO,CAAE,EACde,EAAKf,EAAO,CAAE,EACdc,EAAKd,EAAO,CAAE,EAEdS,EAAMR,EAAS,CAAE,EACjBO,EAAMP,EAAS,CAAE,EACjBM,EAAMN,EAAS,CAAE,EACjBK,EAAML,EAAS,CAAE,EACjBI,EAAMJ,EAAS,CAAE,EAEjBG,EAAM,CAAC,EACDmB,EAAK,EAAGA,EAAKL,EAAIK,IAAO,CAG7B,IAFAC,EAAK,CAAC,EACNd,EAAMR,EAAWO,EAAIc,EACfD,EAAK,EAAGA,EAAKL,EAAIK,IAAO,CAG7B,IAFAG,EAAK,CAAC,EACNd,EAAMD,EAAQF,EAAIc,EACZD,EAAK,EAAGA,EAAKL,EAAIK,IAAO,CAG7B,IAFAK,EAAK,CAAC,EACNd,EAAMD,EAAQJ,EAAIc,EACZD,EAAK,EAAGA,EAAKL,EAAIK,IAAO,CAG7B,IAFAO,EAAK,CAAC,EACNd,EAAMD,EAAQN,EAAIc,EACZD,EAAK,EAAGA,EAAKL,EAAIK,IACtBQ,EAAG,KAAMxB,EAAKJ,EAAGc,CAAI,CAAE,EACvBA,GAAOR,EAERqB,EAAG,KAAMC,CAAG,CACb,CACAF,EAAG,KAAMC,CAAG,CACb,CACAF,EAAG,KAAMC,CAAG,CACb,CACArB,EAAI,KAAMoB,CAAG,CACd,CACA,OAAOpB,CACR,CAKAR,GAAO,QAAUE,KC5HjB,IAAA8B,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAuCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC5CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAgB,IAmBpB,SAASC,GAAMC,EAAGC,EAAU,CAC3B,IAAIC,EACAC,EACAC,EAOJ,IAJAF,EAAMJ,GAAeE,CAAE,EAGvBG,EAAM,CAAC,EACDC,EAAI,EAAGA,EAAIH,EAAQ,OAAQG,IAChCD,EAAI,KAAMD,EAAKF,EAAGC,EAASG,CAAE,CAAE,CAAE,EAElC,OAAOD,CACR,CAKAN,GAAO,QAAUE,KC5DjB,IAAAM,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoCA,SAASC,GAAMC,EAAGC,EAAU,CAC3B,IAAIC,EACA,EAGJ,IADAA,EAAM,CAAC,EACD,EAAI,EAAG,EAAID,EAAQ,OAAQ,IAChCC,EAAI,KAAMF,EAAGC,EAAS,CAAE,CAAE,CAAE,EAE7B,OAAOC,CACR,CAKAJ,GAAO,QAAUC,KClDjB,IAAAI,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAiB,QAAS,sCAAuC,EACjEC,GAAgB,QAAS,0BAA2B,EAAE,QACtDC,GAAS,QAAS,uBAAwB,EAK1CC,GAAQ,EA2BZ,SAASC,GAAQC,EAAGC,EAASC,EAAWC,EAAO,CAC9C,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGJ,GADAN,EAAMX,GAAgBO,EAAWJ,GAAM,CAAE,EACpCQ,IAAQ,GACZ,MAAM,IAAI,WAAYT,GAAQ,4GAA6GC,GAAOI,CAAU,CAAE,EAI/J,GAFAK,EAAMX,GAAeO,CAAK,EAC1BE,EAAM,CAAC,EACFC,IAAQ,EAAI,CAEhB,IADAF,EAAYJ,EAAE,OAAS,EACjBU,EAAK,EAAGA,EAAKT,EAAQ,OAAQS,IAClCF,EAAMD,EAAKN,EAASS,CAAG,EAAGN,CAAU,EACpCC,EAAI,KAAML,EAAGQ,CAAI,CAAE,EAEpB,OAAOH,CACR,CAEA,IAAMK,EAAK,EAAGA,EAAKV,EAAE,OAAQU,IAAO,CAInC,IAHAC,EAAKX,EAAGU,CAAG,EACXE,EAAK,CAAC,EACNR,EAAYO,EAAG,OAAS,EAClBF,EAAK,EAAGA,EAAKR,EAAQ,OAAQQ,IAClCD,EAAMD,EAAKN,EAASQ,CAAG,EAAGL,CAAU,EACpCQ,EAAG,KAAMD,EAAIH,CAAI,CAAE,EAEpBH,EAAI,KAAMO,CAAG,CACd,CACA,OAAOP,CACR,CAKAX,GAAO,QAAUK,KClGjB,IAAAc,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAiB,QAAS,sCAAuC,EACjEC,GAAgB,QAAS,0BAA2B,EAAE,QACtDC,GAAS,KACTC,GAAS,QAAS,uBAAwB,EAK1CC,GAAQ,EA2BZ,SAASC,GAAQC,EAAGC,EAASC,EAAWC,EAAO,CAC9C,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGJ,GADAH,EAAMZ,GAAgBQ,EAAWJ,GAAM,CAAE,EACpCQ,IAAQ,GACZ,MAAM,IAAI,WAAYT,GAAQ,4GAA6GC,GAAOI,CAAU,CAAE,EAG/J,GADAG,EAAM,CAAC,EACFC,IAAQ,EAAI,CAGhB,IAFAC,EAAMZ,GAAeQ,CAAK,EAC1BC,EAAYJ,EAAE,OAAS,EACjBS,EAAI,EAAGA,EAAIR,EAAQ,OAAQQ,IAChCD,EAAMD,EAAKN,EAASQ,CAAE,EAAGL,CAAU,EACnCC,EAAI,KAAML,EAAGQ,CAAI,CAAE,EAEpB,OAAOH,CACR,CAGA,IADAC,EAAMJ,EAAY,EACZO,EAAI,EAAGA,EAAIT,EAAE,OAAQS,IAC1BJ,EAAI,KAAMT,GAAQI,EAAGS,CAAE,EAAGR,EAASK,EAAKH,CAAK,CAAE,EAEhD,OAAOE,CACR,CAKAZ,GAAO,QAAUM,KC1FjB,IAAAW,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAmDA,SAASC,GAAWC,EAAQC,EAAOC,EAAM,CACxC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAIJ,GAFAX,EAAKF,EAAO,CAAE,EACdG,EAAKH,EAAO,CAAE,EACT,EAAAE,GAAM,GAAKC,GAAM,GAOtB,IAJAO,EAAIX,EAAQ,CAAE,EACdY,EAAIZ,EAAQ,CAAE,EACda,EAAIb,EAAQ,CAAE,EACdc,EAAId,EAAQ,CAAE,EACRM,EAAK,EAAGA,EAAKF,EAAIE,IAKtB,IAJAC,EAAKI,EAAGL,CAAG,EACXE,EAAKI,EAAGN,CAAG,EACXG,EAAKI,EAAGP,CAAG,EACXI,EAAKI,EAAGR,CAAG,EACLD,EAAK,EAAGA,EAAKF,EAAIE,IACtBK,EAAIL,CAAG,EAAIH,EAAKK,EAAIF,CAAG,EAAGG,EAAIH,CAAG,EAAGI,EAAIJ,CAAG,CAAE,CAGhD,CAKAP,GAAO,QAAUC,KCxFjB,IAAAgB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA8CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCnDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAmDA,SAASC,GAAWC,EAAQC,EAAOC,EAAM,CACxC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAKJ,GAHAjB,EAAKF,EAAO,CAAE,EACdG,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EACT,EAAAE,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAOjC,IAJAY,EAAIjB,EAAQ,CAAE,EACdkB,EAAIlB,EAAQ,CAAE,EACdmB,EAAInB,EAAQ,CAAE,EACdoB,EAAIpB,EAAQ,CAAE,EACRQ,EAAK,EAAGA,EAAKH,EAAIG,IAKtB,IAJAK,EAAKI,EAAGT,CAAG,EACXM,EAAKI,EAAGV,CAAG,EACXO,EAAKI,EAAGX,CAAG,EACXQ,EAAKI,EAAGZ,CAAG,EACLD,EAAK,EAAGA,EAAKH,EAAIG,IAKtB,IAJAE,EAAKI,EAAIN,CAAG,EACZG,EAAKI,EAAIP,CAAG,EACZI,EAAKI,EAAIR,CAAG,EACZK,EAAKI,EAAIT,CAAG,EACND,EAAK,EAAGA,EAAKH,EAAIG,IACtBM,EAAIN,CAAG,EAAIJ,EAAKO,EAAIH,CAAG,EAAGI,EAAIJ,CAAG,EAAGK,EAAIL,CAAG,CAAE,CAIjD,CAKAR,GAAO,QAAUC,KCrGjB,IAAAsB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA8CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCnDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAmDA,SAASC,GAAWC,EAAQC,EAAOC,EAAM,CACxC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAMJ,GAJAvB,EAAKF,EAAO,CAAE,EACdG,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EACdK,EAAKL,EAAO,CAAE,EACT,EAAAE,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAO5C,IAJAiB,EAAIvB,EAAQ,CAAE,EACdwB,EAAIxB,EAAQ,CAAE,EACdyB,EAAIzB,EAAQ,CAAE,EACd0B,EAAI1B,EAAQ,CAAE,EACRU,EAAK,EAAGA,EAAKJ,EAAII,IAKtB,IAJAS,EAAKI,EAAGb,CAAG,EACXU,EAAKI,EAAGd,CAAG,EACXW,EAAKI,EAAGf,CAAG,EACXY,EAAKI,EAAGhB,CAAG,EACLD,EAAK,EAAGA,EAAKJ,EAAII,IAKtB,IAJAM,EAAKI,EAAIV,CAAG,EACZO,EAAKI,EAAIX,CAAG,EACZQ,EAAKI,EAAIZ,CAAG,EACZS,EAAKI,EAAIb,CAAG,EACND,EAAK,EAAGA,EAAKJ,EAAII,IAKtB,IAJAG,EAAKI,EAAIP,CAAG,EACZI,EAAKI,EAAIR,CAAG,EACZK,EAAKI,EAAIT,CAAG,EACZM,EAAKI,EAAIV,CAAG,EACND,EAAK,EAAGA,EAAKJ,EAAII,IACtBO,EAAIP,CAAG,EAAIL,EAAKS,EAAIJ,CAAG,EAAGK,EAAIL,CAAG,EAAGM,EAAIN,CAAG,CAAE,CAKlD,CAKAT,GAAO,QAAUC,KClHjB,IAAA4B,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA8CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCnDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAmDA,SAASC,GAAWC,EAAQC,EAAOC,EAAM,CACxC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAOJ,GALA7B,EAAKF,EAAO,CAAE,EACdG,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EACdK,EAAKL,EAAO,CAAE,EACdM,EAAKN,EAAO,CAAE,EACT,EAAAE,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAO5C,IAJAuB,EAAI7B,EAAQ,CAAE,EACd8B,EAAI9B,EAAQ,CAAE,EACd+B,EAAI/B,EAAQ,CAAE,EACdgC,EAAIhC,EAAQ,CAAE,EACRY,EAAK,EAAGA,EAAKL,EAAIK,IAKtB,IAJAa,EAAKI,EAAGjB,CAAG,EACXc,EAAKI,EAAGlB,CAAG,EACXe,EAAKI,EAAGnB,CAAG,EACXgB,EAAKI,EAAGpB,CAAG,EACLD,EAAK,EAAGA,EAAKL,EAAIK,IAKtB,IAJAU,EAAKI,EAAId,CAAG,EACZW,EAAKI,EAAIf,CAAG,EACZY,EAAKI,EAAIhB,CAAG,EACZa,EAAKI,EAAIjB,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IAKtB,IAJAO,EAAKI,EAAIX,CAAG,EACZQ,EAAKI,EAAIZ,CAAG,EACZS,EAAKI,EAAIb,CAAG,EACZU,EAAKI,EAAId,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IAKtB,IAJAI,EAAKI,EAAIR,CAAG,EACZK,EAAKI,EAAIT,CAAG,EACZM,EAAKI,EAAIV,CAAG,EACZO,EAAKI,EAAIX,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IACtBQ,EAAIR,CAAG,EAAIN,EAAKW,EAAIL,CAAG,EAAGM,EAAIN,CAAG,EAAGO,EAAIP,CAAG,CAAE,CAMnD,CAKAV,GAAO,QAAUC,KC/HjB,IAAAkC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA8CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCnDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAkB,IAClBC,GAAgB,KAuBpB,SAASC,GAAiBC,EAAM,CAC/B,OAAKA,GAAO,OAAOA,GAAQ,UAAYH,GAAiBG,CAAI,EACpDA,EAED,IAAIF,GAAeE,CAAI,CAC/B,CAKAJ,GAAO,QAAUG,KCxDjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAQ,QAAS,iCAAkC,EA+BvD,SAASC,GAAYC,EAAGC,EAAQ,CAC/B,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EAIJ,GAFAF,EAAM,CAAC,EACPD,EAAMJ,EAAE,OACHI,IAAQ,EACZ,OAAOC,EAIR,IAFAF,EAAO,IACPD,EAAQ,EACFK,EAAI,EAAGA,EAAIH,EAAKG,IACrBD,EAAIN,EAAGO,CAAE,EACJD,IAAMH,GACVD,GAAS,EACJA,GAASD,GACbI,EAAI,KAAMF,CAAK,IAGhBA,EAAOG,EACPJ,EAAQ,EACRG,EAAI,KAAMF,CAAK,GAGjB,OAAOE,CACR,CA4BA,SAASG,GAAiBR,EAAGC,EAAQ,CACpC,IAAIC,EACAC,EACAC,EACAC,EACAI,EACAH,EACAC,EAIJ,GAFAF,EAAM,CAAC,EACPD,EAAMJ,EAAE,OACHI,IAAQ,EACZ,OAAOC,EAKR,IAHAI,EAAM,GACNN,EAAO,IACPD,EAAQ,EACFK,EAAI,EAAGA,EAAIH,EAAKG,IACrBD,EAAIN,EAAGO,CAAE,EACJD,IAAMH,GAAUM,GAAOX,GAAOQ,CAAE,GACpCJ,GAAS,EACJA,GAASD,GACbI,EAAI,KAAMF,CAAK,IAGhBA,EAAOG,EACPJ,EAAQ,EACRG,EAAI,KAAMF,CAAK,EACfM,EAAM,GACDX,GAAOK,CAAK,IAChBM,EAAM,KAIT,OAAOJ,CACR,CA+BA,SAASK,GAAQV,EAAGC,EAAOU,EAAY,CACtC,OAAKA,EACGH,GAAiBR,EAAGC,CAAM,EAE3BF,GAAYC,EAAGC,CAAM,CAC7B,CAKAJ,GAAO,QAAUa,KC1LjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAuCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC5CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoDA,SAASC,GAASC,EAAQC,EAAOC,EAAM,CACtC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAIJ,GAFAP,EAAKF,EAAO,CAAE,EACdG,EAAKH,EAAO,CAAE,EACT,EAAAE,GAAM,GAAKC,GAAM,GAKtB,IAFAK,EAAIT,EAAQ,CAAE,EACdU,EAAIV,EAAQ,CAAE,EACRM,EAAK,EAAGA,EAAKF,EAAIE,IAGtB,IAFAC,EAAKE,EAAGH,CAAG,EACXE,EAAKE,EAAGJ,CAAG,EACLD,EAAK,EAAGA,EAAKF,EAAIE,IACtBG,EAAIH,CAAG,EAAIH,EAAKK,EAAIF,CAAG,CAAE,CAG5B,CAKAP,GAAO,QAAUC,KCjFjB,IAAAY,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA+CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCpDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA0DA,SAASC,GAAWC,EAAQC,EAAOC,EAAKC,EAAO,CAC9C,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAIJ,GAFAR,EAAKJ,EAAO,CAAE,EACdK,EAAKL,EAAO,CAAE,EACT,EAAAI,GAAM,GAAKC,GAAM,GAQtB,IALK,UAAU,OAAS,IACvBF,EAAU,UAAW,CAAE,GAExBO,EAAIX,EAAQ,CAAE,EACdY,EAAIZ,EAAQ,CAAE,EACRQ,EAAK,EAAGA,EAAKF,EAAIE,IAGtB,IAFAC,EAAKE,EAAGH,CAAG,EACXE,EAAKE,EAAGJ,CAAG,EACLD,EAAK,EAAGA,EAAKF,EAAIE,IACtBM,EAAIV,EAAK,KAAMC,EAASK,EAAIF,CAAG,EAAG,CAAEC,EAAID,CAAG,EAAG,CAAEI,EAAGC,CAAE,CAAE,EAClDC,IAAM,SACVH,EAAIH,CAAG,EAAIL,EAAKW,CAAE,EAItB,CAKAf,GAAO,QAAUC,KC/FjB,IAAAe,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAmDA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCxDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoDA,SAASC,GAASC,EAAQC,EAAOC,EAAM,CACtC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAKJ,GAHAX,EAAKF,EAAO,CAAE,EACdG,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EACT,EAAAE,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAKjC,IAFAQ,EAAIb,EAAQ,CAAE,EACdc,EAAId,EAAQ,CAAE,EACRQ,EAAK,EAAGA,EAAKH,EAAIG,IAGtB,IAFAE,EAAKG,EAAGL,CAAG,EACXI,EAAKE,EAAGN,CAAG,EACLD,EAAK,EAAGA,EAAKH,EAAIG,IAGtB,IAFAE,EAAKC,EAAIH,CAAG,EACZI,EAAKC,EAAIL,CAAG,EACND,EAAK,EAAGA,EAAKH,EAAIG,IACtBK,EAAIL,CAAG,EAAIJ,EAAKO,EAAIH,CAAG,CAAE,CAI7B,CAKAR,GAAO,QAAUC,KC1FjB,IAAAgB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA+CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCpDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoDA,SAASC,GAASC,EAAQC,EAAOC,EAAM,CACtC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAMJ,GAJAf,EAAKF,EAAO,CAAE,EACdG,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EACdK,EAAKL,EAAO,CAAE,EACT,EAAAE,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAK5C,IAFAW,EAAIjB,EAAQ,CAAE,EACdkB,EAAIlB,EAAQ,CAAE,EACRU,EAAK,EAAGA,EAAKJ,EAAII,IAGtB,IAFAG,EAAKI,EAAGP,CAAG,EACXM,EAAKE,EAAGR,CAAG,EACLD,EAAK,EAAGA,EAAKJ,EAAII,IAGtB,IAFAG,EAAKC,EAAIJ,CAAG,EACZM,EAAKC,EAAIP,CAAG,EACND,EAAK,EAAGA,EAAKJ,EAAII,IAGtB,IAFAG,EAAKC,EAAIJ,CAAG,EACZM,EAAKC,EAAIP,CAAG,EACND,EAAK,EAAGA,EAAKJ,EAAII,IACtBO,EAAIP,CAAG,EAAIL,EAAKS,EAAIJ,CAAG,CAAE,CAK9B,CAKAT,GAAO,QAAUC,KCnGjB,IAAAoB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA+CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCpDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoDA,SAASC,GAASC,EAAQC,EAAOC,EAAM,CACtC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAOJ,GALAnB,EAAKF,EAAO,CAAE,EACdG,EAAKH,EAAO,CAAE,EACdI,EAAKJ,EAAO,CAAE,EACdK,EAAKL,EAAO,CAAE,EACdM,EAAKN,EAAO,CAAE,EACT,EAAAE,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAAKC,GAAM,GAKvD,IAFAc,EAAIrB,EAAQ,CAAE,EACdsB,EAAItB,EAAQ,CAAE,EACRY,EAAK,EAAGA,EAAKL,EAAIK,IAGtB,IAFAI,EAAKK,EAAGT,CAAG,EACXQ,EAAKE,EAAGV,CAAG,EACLD,EAAK,EAAGA,EAAKL,EAAIK,IAGtB,IAFAI,EAAKC,EAAIL,CAAG,EACZQ,EAAKC,EAAIT,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IAGtB,IAFAI,EAAKC,EAAIL,CAAG,EACZQ,EAAKC,EAAIT,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IAGtB,IAFAI,EAAKC,EAAIL,CAAG,EACZQ,EAAKC,EAAIT,CAAG,EACND,EAAK,EAAGA,EAAKL,EAAIK,IACtBS,EAAIT,CAAG,EAAIN,EAAKW,EAAIL,CAAG,CAAE,CAM/B,CAKAV,GAAO,QAAUC,KC5GjB,IAAAwB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA+CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCpDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,SAASC,GAASC,EAAGC,EAAGC,EAAOC,EAAOC,EAAKC,EAAM,CAChD,IAAIC,EACAC,EACAC,EAOJ,GALAF,EAAIH,EAAOC,CAAI,EAGfG,EAAIH,EAAM,EAELG,IAAML,EAAQ,CAElB,IAAMM,EAAI,EAAGA,EAAIF,EAAGE,IACnBP,EAAGO,CAAE,EAAIH,EAAKL,EAAGQ,CAAE,CAAE,EAEtB,MACD,CAEA,IAAMA,EAAI,EAAGA,EAAIF,EAAGE,IACnBT,GAASC,EAAGQ,CAAE,EAAGP,EAAGO,CAAE,EAAGN,EAAOC,EAAOI,EAAGF,CAAI,CAEhD,CAmCA,SAASI,GAASC,EAAQP,EAAOE,EAAM,CACtC,OAAON,GAASW,EAAQ,CAAE,EAAGA,EAAQ,CAAE,EAAGP,EAAM,OAAQA,EAAO,EAAGE,CAAI,CACvE,CAKAP,GAAO,QAAUW,KCjGjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA+CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCpDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAiCA,SAASC,GAAWC,EAAIC,EAAK,CAC5B,IAAIC,EACAC,EACAC,EAGJ,GADAD,EAAMF,EAAKD,EACNG,GAAO,EACX,MAAO,CAAEH,CAAG,EAGb,IADAE,EAAM,CAAEF,CAAG,EACLI,EAAI,EAAGA,EAAID,EAAKC,IACrBF,EAAI,KAAMF,EAAKI,CAAE,EAElB,OAAOF,CACR,CAKAJ,GAAO,QAAUC,KCpDjB,IAAAM,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAgCA,SAASC,GAAQC,EAAI,CACpB,IAAIC,EACAC,EAGJ,GADAD,EAAM,CAAC,EACFD,GAAK,EACT,OAAOC,EAER,IAAMC,EAAI,EAAGA,EAAIF,EAAGE,IACnBD,EAAI,KAAMC,CAAE,EAEb,OAAOD,CACR,CAKAH,GAAO,QAAUC,KCjDjB,IAAAI,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,KAef,SAASC,GAASC,EAAQ,CACzB,OAAOF,GAAU,EAAKE,CAAM,CAC7B,CAKAH,GAAO,QAAUE,KC5CjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,KAef,SAASC,GAASC,EAAQ,CACzB,OAAOF,GAAU,EAAKE,CAAM,CAC7B,CAKAH,GAAO,QAAUE,KC5CjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,KAef,SAASC,GAASC,EAAQ,CACzB,OAAOF,GAAU,EAAKE,CAAM,CAC7B,CAKAH,GAAO,QAAUE,KC5CjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,KAef,SAASC,GAASC,EAAQ,CACzB,OAAOF,GAAU,EAAKE,CAAM,CAC7B,CAKAH,GAAO,QAAUE,KC5CjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,KAmBf,SAASC,GAASC,EAAQ,CACzB,OAAOF,GAAU,EAAKE,CAAM,CAC7B,CAKAH,GAAO,QAAUE,KChDjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA0BA,IAAIC,EAAc,QAAS,yCAA0C,EAUjEC,EAAK,CAAC,EASVD,EAAaC,EAAI,gBAAiB,IAAmC,EASrED,EAAaC,EAAI,iBAAkB,IAA0C,EAS7ED,EAAaC,EAAI,iBAAkB,IAA0C,EAS7ED,EAAaC,EAAI,YAAa,IAAoC,EASlED,EAAaC,EAAI,mBAAoB,IAA2C,EAShFD,EAAaC,EAAI,SAAU,IAAiC,EAS5DD,EAAaC,EAAI,mBAAoB,IAA4C,EASjFD,EAAaC,EAAI,qBAAsB,IAA+C,EAStFD,EAAaC,EAAI,mBAAoB,IAA4C,EASjFD,EAAaC,EAAI,qBAAsB,IAA+C,EAStFD,EAAaC,EAAI,kBAAmB,IAA2C,EAS/ED,EAAaC,EAAI,oBAAqB,IAA8C,EASpFD,EAAaC,EAAI,WAAY,IAAmC,EAShED,EAAaC,EAAI,WAAY,IAAmC,EAShED,EAAaC,EAAI,WAAY,IAAmC,EAShED,EAAaC,EAAI,WAAY,IAAmC,EAShED,EAAaC,EAAI,WAAY,IAAmC,EAShED,EAAaC,EAAI,iBAAkB,IAA0C,EAS7ED,EAAaC,EAAI,YAAa,IAA+C,EAS7ED,EAAaC,EAAI,YAAa,IAA+C,EAS7ED,EAAaC,EAAI,YAAa,IAA+C,EAS7ED,EAAaC,EAAI,YAAa,IAA+C,EAS7ED,EAAaC,EAAI,gBAAiB,IAAmD,EASrFD,EAAaC,EAAI,aAAc,IAAgD,EAS/ED,EAAaC,EAAI,aAAc,IAAgD,EAS/ED,EAAaC,EAAI,WAAY,IAA8C,EAS3ED,EAAaC,EAAI,WAAY,IAA8C,EAS3ED,EAAaC,EAAI,WAAY,IAA8C,EAS3ED,EAAaC,EAAI,WAAY,IAA8C,EAS3ED,EAAaC,EAAI,iBAAkB,IAA0C,EAS7ED,EAAaC,EAAI,mBAAoB,IAA4C,EASjFD,EAAaC,EAAI,kBAAmB,IAA2C,EAS/ED,EAAaC,EAAI,OAAQ,IAA+B,EASxDD,EAAaC,EAAI,cAAe,IAAuC,EASvED,EAAaC,EAAI,SAAU,IAAiC,EAS5DD,EAAaC,EAAI,QAAS,IAAgC,EAS1DD,EAAaC,EAAI,UAAW,IAAmC,EAS/DD,EAAaC,EAAI,SAAU,IAAiC,EAS5DD,EAAaC,EAAI,WAAY,IAAoC,EASjED,EAAaC,EAAI,WAAY,IAAmC,EAShED,EAAaC,EAAI,aAAc,IAAsC,EASrED,EAAaC,EAAI,WAAY,IAAmC,EAShED,EAAaC,EAAI,aAAc,IAAsC,EASrED,EAAaC,EAAI,WAAY,IAAmC,EAShED,EAAaC,EAAI,aAAc,IAAsC,EASrED,EAAaC,EAAI,WAAY,IAAmC,EAShED,EAAaC,EAAI,aAAc,IAAsC,EASrED,EAAaC,EAAI,WAAY,IAAmC,EAShED,EAAaC,EAAI,aAAc,IAAsC,EASrED,EAAaC,EAAI,QAAS,IAAgC,EAS1DD,EAAaC,EAAI,UAAW,IAAkC,EAS9DD,EAAaC,EAAI,YAAa,IAAqC,EASnED,EAAaC,EAAI,YAAa,IAAoC,EASlED,EAAaC,EAAI,cAAe,IAAuC,EASvED,EAAaC,EAAI,YAAa,IAAoC,EASlED,EAAaC,EAAI,cAAe,IAAuC,EASvED,EAAaC,EAAI,YAAa,IAAoC,EASlED,EAAaC,EAAI,cAAe,IAAuC,EASvED,EAAaC,EAAI,YAAa,IAAoC,EASlED,EAAaC,EAAI,cAAe,IAAuC,EASvED,EAAaC,EAAI,WAAY,IAAmC,EAShED,EAAaC,EAAI,WAAY,IAAmC,EAShED,EAAaC,EAAI,WAAY,IAAmC,EAShED,EAAaC,EAAI,WAAY,IAAmC,EAShED,EAAaC,EAAI,WAAY,IAAmC,EAShED,EAAaC,EAAI,WAAY,IAAmC,EAShED,EAAaC,EAAI,WAAY,IAAmC,EAShED,EAAaC,EAAI,WAAY,IAAmC,EAShED,EAAaC,EAAI,gBAAiB,IAAuC,EASzED,EAAaC,EAAI,SAAU,IAAiC,EAS5DD,EAAaC,EAAI,eAAgB,IAAwC,EASzED,EAAaC,EAAI,iBAAkB,IAA2C,EAS9ED,EAAaC,EAAI,eAAgB,IAAwC,EASzED,EAAaC,EAAI,iBAAkB,IAA2C,EAS9ED,EAAaC,EAAI,cAAe,IAAuC,EASvED,EAAaC,EAAI,gBAAiB,IAA0C,EAS5ED,EAAaC,EAAI,YAAa,IAAoC,EASlED,EAAaC,EAAI,UAAW,IAAmC,EAS/DD,EAAaC,EAAI,OAAQ,IAA+B,EASxDD,EAAaC,EAAI,cAAe,IAAwC,EASxED,EAAaC,EAAI,WAAY,IAAmC,EAShED,EAAaC,EAAI,WAAY,IAAmC,EAShED,EAAaC,EAAI,QAAS,IAAgC,EAS1DD,EAAaC,EAAI,QAAS,IAAgC,EAS1DD,EAAaC,EAAI,QAAS,IAAgC,EAS1DD,EAAaC,EAAI,QAAS,IAAgC,EAS1DD,EAAaC,EAAI,cAAe,IAAsC,EAStED,EAAaC,EAAI,aAAc,IAAqC,EASpED,EAAaC,EAAI,aAAc,IAAqC,EASpED,EAAaC,EAAI,oBAAqB,IAA8C,EASpFD,EAAaC,EAAI,QAAS,IAAiC,EAS3DD,EAAaC,EAAI,OAAQ,IAA+B,EASxDD,EAAaC,EAAI,SAAU,IAAiC,EAS5DD,EAAaC,EAAI,SAAU,IAAiC,EAS5DD,EAAaC,EAAI,SAAU,IAAiC,EAS5DD,EAAaC,EAAI,SAAU,IAAiC,EAS5DD,EAAaC,EAAI,SAAU,IAAiC,EAS5DD,EAAaC,EAAI,eAAgB,IAAuC,EASxED,EAAaC,EAAI,eAAgB,IAAuC,EASxED,EAAaC,EAAI,eAAgB,IAAuC,EASxED,EAAaC,EAAI,eAAgB,IAAuC,EASxED,EAAaC,EAAI,YAAa,IAAoC,EASlED,EAAaC,EAAI,YAAa,IAAoC,EASlED,EAAaC,EAAI,YAAa,IAAoC,EASlED,EAAaC,EAAI,YAAa,IAAoC,EASlED,EAAaC,EAAI,gBAAiB,GAAyC,EAS3ED,EAAaC,EAAI,SAAU,IAAiC,EAS5DD,EAAaC,EAAI,QAAS,IAAgC,EAS1DD,EAAaC,EAAI,kBAAmB,IAA0C,EAS9ED,EAAaC,EAAI,kBAAmB,IAA0C,EAS9ED,EAAaC,EAAI,kBAAmB,IAA0C,EAS9ED,EAAaC,EAAI,kBAAmB,IAA0C,EAS9ED,EAAaC,EAAI,OAAQ,IAA+B,EASxDD,EAAaC,EAAI,cAAe,IAAuC,EASvED,EAAaC,EAAI,SAAU,IAAiC,EAS5DD,EAAaC,EAAI,SAAU,IAAiC,EAS5DD,EAAaC,EAAI,YAAa,IAAoC,EASlED,EAAaC,EAAI,YAAa,IAAoC,EASlED,EAAaC,EAAI,YAAa,IAAoC,EASlED,EAAaC,EAAI,YAAa,IAAoC,EASlED,EAAaC,EAAI,kBAAmB,IAA4C,EAShFD,EAAaC,EAAI,YAAa,IAAqC,EASnED,EAAaC,EAAI,UAAW,IAAkC,EAS9DD,EAAaC,EAAI,YAAa,IAAqC,EASnED,EAAaC,EAAI,UAAW,IAAkC,EAS9DD,EAAaC,EAAI,UAAW,IAAkC,EAS9DD,EAAaC,EAAI,UAAW,IAAkC,EAS9DD,EAAaC,EAAI,UAAW,IAAkC,EAS9DD,EAAaC,EAAI,YAAa,IAAoC,EASlED,EAAaC,EAAI,SAAU,IAAkC,EAS7DD,EAAaC,EAAI,QAAS,IAAgC,EAS1DD,EAAaC,EAAI,UAAW,IAAkC,EAS9DD,EAAaC,EAAI,UAAW,IAAkC,EAS9DD,EAAaC,EAAI,UAAW,IAAkC,EAS9DD,EAAaC,EAAI,UAAW,IAAkC,EAS9DD,EAAaC,EAAI,UAAW,IAAkC,EAK9DF,GAAO,QAAUE,ICjvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,OAAO,aAAgB,WAAe,YAAc,OAKjED,GAAO,QAAUC,KC3BjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA6BA,SAASC,IAAW,CACnB,MAAM,IAAI,MAAO,iBAAkB,CACpC,CAKAD,GAAO,QAAUC,KCpCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAwB,QAAS,wCAAyC,EAC1EC,GAAU,KACVC,GAAW,KAKXC,GACCH,GAAsB,EAC1BG,GAAOF,GAEPE,GAAOD,GAMRH,GAAO,QAAUI,KCnDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAe,KACfC,GAAe,KACfC,GAAa,KACbC,GAAa,KACbC,GAAY,KACZC,GAAc,KACdC,GAAc,KACdC,GAAa,KACbC,GAAoB,KACpBC,GAAiB,KACjBC,GAAkB,KAMlBC,GAAQ,CACX,QAAWX,GACX,QAAWC,GACX,QAAW,MACX,MAASC,GACT,MAASC,GACT,KAAQC,GACR,OAAUC,GACV,OAAUC,GACV,MAASC,GACT,OAAUC,GACV,UAAaC,GACb,WAAcC,EACf,EAKAX,GAAO,QAAUY,KCxDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAQ,KAmBZ,SAASC,GAAOC,EAAQ,CACvB,OAAOF,GAAOE,CAAM,GAAK,IAC1B,CAKAH,GAAO,QAAUE,KChDjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAe,QAAS,8BAA+B,EACvDC,GAAU,IACVC,GAAQ,KACRC,GAAiB,QAAS,6CAA8C,EACxEC,GAAgB,QAAS,4CAA6C,EACtEC,GAAS,QAAS,uBAAwB,EAC1CC,GAAQ,QAAS,yBAA0B,EAC3CC,GAAO,KAoBX,SAASC,GAAaC,EAAQ,CAC7B,OAASA,IAAU,WACpB,CAiBA,SAASC,GAAcD,EAAQ,CAC9B,OAASA,IAAU,YACpB,CAoBA,SAASE,GAASC,EAAGH,EAAQ,CAC5B,IAAII,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAEJ,GAAK,CAACnB,GAAcY,CAAE,EACrB,MAAM,IAAI,UAAWP,GAAQ,8EAA+EO,CAAE,CAAE,EAGjH,GAAKH,IAAU,UACd,OAAOF,GAAMK,CAAE,EAGhB,GADAE,EAAOZ,GAAOO,CAAM,EACfK,IAAS,KACb,MAAM,IAAI,UAAWT,GAAQ,uFAAwFI,CAAM,CAAE,EAa9H,OAVAS,EAAMN,EAAE,OAGRO,EAAIlB,GAASW,CAAE,EACfC,EAAQL,GAAaW,CAAE,EAGvBF,EAAM,IAAIH,EAAMI,CAAI,EAGfL,GAASH,GAAcS,CAAE,GACxBN,EACJE,EAAOX,GAAeQ,EAAG,CAAE,EAE3BG,EAAOZ,GAAgBS,EAAG,CAAE,EAGxBJ,GAAaC,CAAM,GACvBO,EAAOZ,GAAea,EAAK,CAAE,EAC7BX,GAAOY,EAAI,EAAGH,EAAM,EAAGC,EAAM,CAAE,EACxBC,GAEHP,GAAcD,CAAM,GACxBO,EAAOb,GAAgBc,EAAK,CAAE,EAC9BX,GAAOY,EAAI,EAAGH,EAAM,EAAGC,EAAM,CAAE,EACxBC,IAGRX,GAAOY,EAAKH,EAAM,EAAGE,EAAK,CAAE,EACrBA,KAGRJ,EAAQL,GAAaC,CAAM,EACtBI,GAASH,GAAcD,CAAM,GAC5BI,EACJG,EAAOZ,GAAea,EAAK,CAAE,EAE7BD,EAAOb,GAAgBc,EAAK,CAAE,EAG/BX,GAAOY,EAAKN,EAAG,EAAGI,EAAM,CAAE,EACnBC,IAGRX,GAAOY,EAAKN,EAAG,EAAGK,EAAK,CAAE,EAClBA,GACR,CAKAlB,GAAO,QAAUY,KClKjB,IAAAS,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCzCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAU,IACVC,GAAU,KACVC,GAAS,QAAS,uBAAwB,EAuB9C,SAASC,GAAaC,EAAGC,EAAI,CAC5B,IAAIC,EAAQN,GAASK,CAAE,EACvB,GAAKC,IAAU,KACd,MAAM,IAAI,UAAWJ,GAAQ,yGAA0GI,EAAOD,CAAE,CAAE,EAEnJ,OAAOJ,GAASG,EAAGE,CAAM,CAC1B,CAKAP,GAAO,QAAUI,KC1DjB,IAAAI,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC3CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,OAAO,UAAa,WAAe,SAAW,OAK3DD,GAAO,QAAUC,KC3BjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA6BA,SAASC,IAAW,CACnB,MAAM,IAAI,MAAO,iBAAkB,CACpC,CAKAD,GAAO,QAAUC,KCpCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsCA,IAAIC,GAAqB,QAAS,qCAAsC,EACpEC,GAAU,KACVC,GAAW,KAKXC,GACCH,GAAmB,EACvBG,GAAOF,GAEPE,GAAOD,GAMRH,GAAO,QAAUI,KCvDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAa,QAAS,iCAAkC,EACxDC,GAAY,QAAS,2BAA4B,EACjDC,GAAW,QAAS,0BAA2B,EAAE,YACjDC,GAAW,QAAS,0BAA2B,EAC/CC,GAAS,QAAS,uBAAwB,EAC1CC,GAAQ,QAAS,iCAAkC,EACnDC,GAAQ,QAAS,iCAAkC,EACnDC,GAAO,QAAS,gCAAiC,EAKjDC,GAAY,oBACZC,GAAW,CAAE,QAAS,OAAQ,OAAQ,EAe1C,SAASC,GAAWC,EAAOC,EAAO,CACjC,IAAIC,EAGJ,GADAA,EAAO,OAAOF,EACTE,IAAS,SAAW,CAExB,GADAF,EAAQ,KAAK,MAAOA,CAAM,EACrBA,IAAUA,EACd,MAAM,IAAI,MAAOP,GAAQ,6CAA8CQ,EAAK,YAAY,CAAE,CAAE,EAE7FD,EAAQ,IAAI,KAAMA,CAAM,CACzB,CACA,GAAKE,IAAS,SAAW,CACxB,GAAK,CAACL,GAAU,KAAMG,CAAM,EAC3B,MAAM,IAAI,MAAOP,GAAQ,mFAAoFQ,EAAK,YAAY,CAAE,CAAE,EAE9HD,EAAM,SAAS,EAAE,SAAW,KAChCA,GAAS,KAEVA,EAAQ,IAAI,KAAMA,CAAM,CACzB,CACA,GAAK,EAAEA,aAAiB,MACvB,MAAM,IAAI,UAAWP,GAAQ,gHAAiHQ,CAAK,CAAE,EAEtJ,OAAOD,CACR,CAiCA,SAASG,GAAWC,EAAOC,EAAMC,EAAQC,EAAU,CAClD,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EASJ,GAPAP,EAAM,IACNC,EAAM,GACNF,EAAO,CACN,MAAS,OACV,EACAJ,EAAQL,GAAWK,EAAO,OAAQ,EAClCC,EAAON,GAAWM,EAAM,MAAO,EAC1B,UAAU,OAAS,EAAI,CAc3B,GAbK,UAAU,SAAW,EACpBb,GAAUc,CAAO,EACrBE,EAAOF,GAEPG,EAAMH,EAGNI,EAAM,KAGPF,EAAOD,EACPE,EAAMH,GAEFG,IAAQ,EACZ,MAAO,CAAC,EAET,GAAK,CAACnB,GAAWmB,CAAI,GAAKA,EAAM,EAC/B,MAAM,IAAI,UAAWhB,GAAQ,oEAAqEgB,CAAI,CAAE,EAEzG,GAAKC,EAAM,CACV,GAAK,CAAClB,GAAUgB,CAAK,EACpB,MAAM,IAAI,UAAWf,GAAQ,qEAAsEe,CAAK,CAAE,EAE3G,GAAKnB,GAAYmB,EAAM,OAAQ,EAAI,CAClC,GAAK,CAACjB,GAAUiB,EAAK,KAAM,EAC1B,MAAM,IAAI,UAAWf,GAAQ,8DAA+D,QAASe,EAAK,KAAM,CAAE,EAEnH,GAAKV,GAAS,QAASU,EAAK,KAAM,IAAM,GACvC,MAAM,IAAI,MAAOf,GAAQ,gFAAiF,QAASK,GAAS,KAAM,MAAO,EAAGU,EAAK,KAAM,CAAE,CAE3J,CACD,CACD,CACA,OAASA,EAAK,MAAQ,CACtB,IAAK,QACJK,EAAMlB,GACN,MACD,IAAK,OACJkB,EAAMjB,GACN,MACD,IAAK,QACL,QACCiB,EAAMnB,GACN,KACD,CAWA,IARAkB,EAAMH,EAAM,EACZM,GAAMV,EAAK,QAAQ,EAAID,EAAM,QAAQ,GAAMQ,EAG3CD,EAAM,IAAI,MAAOF,CAAI,EACrBK,EAAMV,EACNO,EAAK,CAAE,EAAIG,EACXA,EAAMA,EAAI,QAAQ,EACZE,EAAI,EAAGA,EAAIJ,EAAKI,IACrBF,GAAOC,EACPJ,EAAKK,CAAE,EAAI,IAAI,KAAMH,EAAKC,CAAI,CAAE,EAEjC,OAAAH,EAAKC,CAAI,EAAIP,EACNM,CACR,CAKAvB,GAAO,QAAUe,KChMjB,IAAAc,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA+BA,SAASC,IAAW,CACnB,MAAO,CAEN,OAAU,CACT,QAAW,UACX,QAAW,UACX,KAAQ,UACR,eAAkB,UAClB,oBAAuB,UACvB,uBAA0B,aAC1B,QAAW,QACX,eAAkB,QAClB,iBAAoB,QACrB,CACD,CACD,CAKAD,GAAO,QAAUC,KCnDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,KAKXC,GAAWD,GAAS,EACpBE,GAAO,CACV,iBAAkBD,GAAS,OAAO,QAClC,iBAAkBA,GAAS,OAAO,QAClC,cAAeA,GAAS,OAAO,KAC/B,wBAAyBA,GAAS,OAAO,eACzC,6BAA8BA,GAAS,OAAO,oBAC9C,gCAAiCA,GAAS,OAAO,uBACjD,iBAAkBA,GAAS,OAAO,QAClC,wBAAyBA,GAAS,OAAO,eACzC,0BAA2BA,GAAS,OAAO,gBAC5C,EAeA,SAASE,GAAKC,EAAO,CACpB,IAAIC,EAAIH,GAAME,CAAK,EACnB,OAASC,IAAM,OAAW,KAAOA,CAClC,CAKAN,GAAO,QAAUI,KC7DjB,IAAAG,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAc,QAAS,uDAAwD,EAC/EC,GAAO,KACPC,GAAM,KAKVF,GAAaC,GAAM,MAAOC,EAAI,EAK9BH,GAAO,QAAUE,KC9CjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,CAAAA,GAAA,SACE,IAAO,CACL,YACA,aACA,UACA,UACA,UACA,QACA,QACA,OACA,SACA,SACA,QACA,QACF,EACA,eAAkB,CAChB,YACA,aACA,UACA,SACF,EACA,oBAAuB,CACrB,UACA,SACF,EACA,uBAA0B,CACxB,YACA,YACF,EACA,QAAW,CACT,QACA,QACA,OACA,SACA,SACA,QACA,QACF,EACA,eAAkB,CAChB,QACA,QACA,MACF,EACA,iBAAoB,CAClB,SACA,SACA,QACA,QACF,EACA,KAAQ,CACN,UACA,UACA,QACA,QACA,OACA,SACA,SACA,QACA,QACF,EACA,QAAW,CACT,YACA,aACA,UACA,UACA,QACA,QACA,OACA,SACA,SACA,QACA,QACF,CACF,ICzEA,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAU,QAAS,6BAA8B,EACjDC,GAAS,KAKTC,GAAY,gBAmBhB,SAASC,IAAS,CACjB,IAAIC,EACAC,EACAC,EACJ,OAAK,UAAU,SAAW,EAClBL,GAAO,IAAI,MAAM,GAEzBK,EAAM,GACNF,EAAO,UAAW,CAAE,EACfF,GAAU,KAAME,CAAK,IACzBA,EAAOJ,GAASI,EAAMF,GAAW,EAAG,EAC/BE,IAAS,QACbE,EAAM,KAGRD,EAAMJ,GAAQG,CAAK,EACnBC,EAAQA,EAAQA,EAAI,MAAM,EAAI,CAAC,EAC1BC,GAAOD,EAAI,OAAS,GACxBA,EAAI,KAAM,SAAU,EAEdA,EACR,CAKAN,GAAO,QAAUI,KCzEjB,IAAAI,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAc,QAAS,6BAA8B,EACrDC,GAAe,QAAS,8BAA+B,EAe3D,SAASC,IAAQ,CAChB,IAAIC,EAAMH,GAAa,CAAE,EACzB,OAAOC,GAAcE,CAAI,CAC1B,CAKAJ,GAAO,QAAUG,KC9CjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAe,KACfC,GAAe,KACfC,GAAa,KACbC,GAAa,KACbC,GAAY,KACZC,GAAc,KACdC,GAAc,KACdC,GAAa,KACbC,GAAoB,KACpBC,GAAiB,KACjBC,GAAkB,KAMlBC,GAAQ,CACX,QAAWX,GACX,QAAWC,GACX,MAASC,GACT,MAASC,GACT,KAAQC,GACR,OAAUC,GACV,OAAUC,GACV,MAASC,GACT,OAAUC,GACV,UAAaC,GACb,WAAcC,EACf,EAKAX,GAAO,QAAUY,KCvDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAQ,KAmBZ,SAASC,GAAOC,EAAQ,CACvB,OAAOF,GAAOE,CAAM,GAAK,IAC1B,CAKAH,GAAO,QAAUE,KChDjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAuB,QAAS,uCAAwC,EAAE,YAC1EC,GAAc,QAAS,6BAA8B,EACrDC,GAAQ,KACRC,GAAQ,KACRC,GAAkB,QAAS,wCAAyC,EACpEC,GAAS,QAAS,uBAAwB,EAsB9C,SAASC,GAAOC,EAAS,CACxB,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAEJ,GAAK,CAACd,GAAsBO,CAAO,EAClC,MAAM,IAAI,UAAWF,GAAQ,+EAAgFE,CAAO,CAAE,EAOvH,GALK,UAAU,OAAS,EACvBG,EAAQ,UAAW,CAAE,EAErBA,EAAQ,UAEJA,IAAU,UACd,OAAOP,GAAOI,CAAO,EAGtB,GADAC,EAASJ,GAAiBM,CAAM,EAC3BF,IAAW,KACf,MAAM,IAAI,UAAWH,GAAQ,gFAAiFK,CAAM,CAAE,EAGvH,OAAAC,EAAOT,GAAOQ,CAAM,EAGpBI,EAAKN,EAASD,EACTG,IAAU,eACdI,GAAM,GAGPF,EAAMX,GAAaa,CAAG,EAGtBL,EAASG,EAAI,WACRF,IAAU,eACRV,GAAsBS,EAAOD,CAAO,IACzCC,GAAU,IAIZI,EAAM,IAAIF,EAAMC,EAAI,OAAQH,EAAQF,CAAO,EAEpCM,CACR,CAKAd,GAAO,QAAUO,KCpGjB,IAAAS,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAuB,QAAS,uCAAwC,EAAE,YAC1EC,GAAQ,KACRC,GAAS,KACTC,GAAS,QAAS,uBAAwB,EAsB9C,SAASC,GAAOC,EAAS,CACxB,IAAIC,EACAC,EACJ,GAAK,CAACP,GAAsBK,CAAO,EAClC,MAAM,IAAI,UAAWF,GAAQ,+EAAgFE,CAAO,CAAE,EAOvH,GALK,UAAU,OAAS,EACvBC,EAAQ,UAAW,CAAE,EAErBA,EAAQ,UAEJA,IAAU,UACd,OAAOJ,GAAQG,CAAO,EAGvB,GADAE,EAAON,GAAOK,CAAM,EACfC,IAAS,KACb,MAAM,IAAI,UAAWJ,GAAQ,iFAAkFG,CAAM,CAAE,EAExH,OAAO,IAAIC,EAAMF,CAAO,CACzB,CAKAN,GAAO,QAAUK,KCvEjB,IAAAI,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAQ,KAuBZ,SAASC,GAAOC,EAAS,CACxB,OAAK,UAAU,OAAS,EAChBF,GAAOE,EAAQ,UAAW,CAAE,CAAE,EAE/BF,GAAOE,CAAO,CACtB,CAKAH,GAAO,QAAUE,KCvDjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwCA,IAAIC,GAAqB,KACrBC,GAAO,KACPC,GAAW,KAKXC,GACCH,GAAmB,EACvBG,GAAQF,GAERE,GAAQD,GAMTH,GAAO,QAAUI,KCzDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAQ,IACRC,GAAQ,KACRC,GAAS,QAAS,uBAAwB,EAsB9C,SAASC,GAAWC,EAAI,CACvB,IAAIC,EAAKL,GAAOI,CAAE,EAClB,GAAKC,IAAO,KACX,MAAM,IAAI,UAAWH,GAAQ,8GAA+GE,CAAE,CAAE,EAEjJ,OAAK,UAAU,OAAS,IACvBC,EAAK,UAAW,CAAE,GAEZJ,GAAOG,EAAE,OAAQC,CAAG,CAC5B,CAKAN,GAAO,QAAUI,KC5DjB,IAAAG,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,QAAS,0BAA2B,EAAE,YACjDC,GAAuB,QAAS,uCAAwC,EAAE,YAC1EC,GAAe,QAAS,8BAA+B,EACvDC,GAAgB,QAAS,+BAAgC,EACzDC,GAAW,QAAS,0BAA2B,EAC/CC,GAAa,QAAS,4BAA6B,EACnDC,GAAQ,KACRC,GAAQ,QAAS,6BAA8B,EAC/CC,GAAS,KACTC,GAA2B,QAAS,4CAA6C,EACjFC,GAAkB,QAAS,yBAA0B,EACrDC,GAAa,QAAS,qBAAsB,EAC5CC,GAAS,QAAS,uBAAwB,EAK1CC,GAAsBJ,GAAyB,EAanD,SAASK,GAAgBC,EAAIC,EAAQ,CACpC,IAAIC,EACAC,EAGJ,IADAD,EAAM,CAAC,EAENC,EAAIH,EAAG,KAAK,EACP,CAAAG,EAAE,MAGPD,EAAI,KAAMD,CAAM,EAEjB,OAAOC,CACR,CAUA,SAASE,GAAiBF,EAAKD,EAAQ,CACtC,IAAII,EACJ,IAAMA,EAAI,EAAGA,EAAIH,EAAI,OAAQG,IAC5BH,EAAI,IAAKD,EAAOI,CAAE,EAEnB,OAAOH,CACR,CA8FA,SAASI,IAAc,CACtB,IAAIL,EACAM,EACAC,EACAC,EACAP,EACAQ,EACAC,EAWJ,GATAJ,EAAQ,UAAU,OAClBA,GAAS,EACJA,GAAS,GAAKtB,GAAU,UAAWsB,CAAM,CAAE,GAC/CC,EAAQ,UAAWD,CAAM,EACzBA,GAAS,GAETC,EAAQ,UAETC,EAAOlB,GAAOiB,CAAM,EACfC,IAAS,KACb,MAAM,IAAI,UAAWZ,GAAQ,sEAAuEW,CAAM,CAAE,EAE7G,GAAKA,IAAU,UAAY,CAC1B,GAAKD,GAAS,EACb,MAAO,CAAC,EAIT,GAFAN,EAAQ,UAAW,CAAE,EACrBU,EAAM,UAAW,CAAE,EACdJ,IAAU,EAAI,CAMlB,GALKrB,GAAsByB,CAAI,EAC9BD,EAAMC,EACKxB,GAAcwB,CAAI,IAC7BD,EAAMC,EAAI,QAEND,IAAQ,OACZ,OAAOjB,GAAQQ,EAAOS,CAAI,EAE3B,GAAKtB,GAAeuB,CAAI,EACvB,MAAM,IAAI,MAAO,mFAAoF,EAEtG,GAAKtB,GAAUsB,CAAI,EAAI,CACtB,GAAKb,KAAwB,GAC5B,MAAM,IAAI,UAAWD,GAAQ,sIAAuIc,CAAI,CAAE,EAE3K,GAAK,CAACrB,GAAYqB,EAAKhB,EAAgB,CAAE,EACxC,MAAM,IAAI,UAAWE,GAAQ,wGAAyGc,CAAI,CAAE,EAG7I,GADAA,EAAMA,EAAKhB,EAAgB,EAAE,EACxB,CAACL,GAAYqB,EAAI,IAAK,EAC1B,MAAM,IAAI,UAAWd,GAAQ,wGAAyGc,CAAI,CAAE,EAE7I,OAAOZ,GAAgBY,EAAKV,CAAM,CACnC,CACA,MAAM,IAAI,UAAWJ,GAAQ,wGAAyGc,CAAI,CAAE,CAC7I,SAAYvB,GAAeuB,CAAI,EAC9B,MAAM,IAAI,MAAO,mFAAoF,EAEtG,MAAM,IAAI,UAAWd,GAAQ,wGAAyGc,CAAI,CAAE,CAC7I,CACA,GAAKJ,GAAS,EACb,OAAO,IAAIE,EAAM,CAAE,EAEpB,GAAKF,IAAU,EAEd,GADAI,EAAM,UAAW,CAAE,EACdxB,GAAcwB,CAAI,EACtBT,EAAM,IAAIO,EAAME,EAAI,MAAO,UAChBvB,GAAeuB,CAAI,EAC9BT,EAAM,IAAIO,EAAME,CAAI,UACTzB,GAAsByB,CAAI,EACrCT,EAAM,IAAIO,EAAME,CAAI,UACTtB,GAAUsB,CAAI,EAAI,CAC7B,GAAKb,KAAwB,GAC5B,MAAM,IAAI,UAAWD,GAAQ,sIAAuIc,CAAI,CAAE,EAE3K,GAAK,CAACrB,GAAYqB,EAAKhB,EAAgB,CAAE,EACxC,MAAM,IAAI,UAAWE,GAAQ,wGAAyGc,CAAI,CAAE,EAG7I,GADAA,EAAMA,EAAKhB,EAAgB,EAAE,EACxB,CAACL,GAAYqB,EAAI,IAAK,EAC1B,MAAM,IAAI,UAAWd,GAAQ,wGAAyGc,CAAI,CAAE,EAE7IT,EAAM,IAAIO,EAAMb,GAAYe,CAAI,CAAE,CACnC,KACC,OAAM,IAAI,UAAWd,GAAQ,wGAAyGc,CAAI,CAAE,OAElIJ,IAAU,EACrBL,EAAM,IAAIO,EAAM,UAAU,CAAC,EAAG,UAAU,CAAC,CAAE,EAE3CP,EAAM,IAAIO,EAAM,UAAU,CAAC,EAAG,UAAU,CAAC,EAAG,UAAU,CAAC,CAAE,EAE1D,OAAKP,EAAI,OAAS,IACZ,WAAW,KAAMM,CAAM,EAC3BJ,GAAiBF,EAAK,UAAW,CAAE,CAAE,EAErCV,GAAOU,EAAI,OAAQ,UAAW,CAAE,EAAGA,EAAK,CAAE,GAGrCA,CACR,CAKAlB,GAAO,QAAUsB,KCrRjB,IAAAM,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA8HA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCnIjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,QAAS,0BAA2B,EAAE,YACjDC,GAAuB,QAAS,uCAAwC,EAAE,YAC1EC,GAAe,QAAS,8BAA+B,EACvDC,GAAgB,QAAS,+BAAgC,EACzDC,GAAW,QAAS,0BAA2B,EAC/CC,GAAa,QAAS,4BAA6B,EACnDC,GAAQ,KACRC,GAAU,QAAS,gCAAiC,EACpDC,GAAc,KACdC,GAA2B,QAAS,4CAA6C,EACjFC,GAAkB,QAAS,yBAA0B,EACrDC,GAAa,QAAS,qBAAsB,EAC5CC,GAAS,QAAS,uBAAwB,EAK1CC,GAAsBJ,GAAyB,EAC/CK,GAAgB,UAcpB,SAASC,GAAqBC,EAAIC,EAAMC,EAAU,CACjD,IAAIC,EACAC,EACAC,EAIJ,IAFAF,EAAM,CAAC,EACPC,EAAI,GAEHC,EAAIL,EAAG,KAAK,EACP,CAAAK,EAAE,MAGPD,GAAK,EACLD,EAAI,KAAMF,EAAK,KAAMC,EAASE,CAAE,CAAE,EAEnC,OAAOD,CACR,CAWA,SAASG,GAAiBH,EAAKF,EAAMC,EAAU,CAC9C,IAAI,EACJ,IAAM,EAAI,EAAG,EAAIC,EAAI,OAAQ,IAC5BA,EAAI,IAAKF,EAAK,KAAMC,EAAS,CAAE,EAAG,CAAE,EAErC,OAAOC,CACR,CA4JA,SAASI,IAAgB,CACxB,IAAIL,EACAM,EACAC,EACAR,EACAS,EACAP,EACAQ,EACAC,EAKJ,GAHAJ,EAAQ,UAAU,OAGbA,IAAU,EACd,OAAAE,EAAOpB,GAAOQ,EAAc,EACrB,IAAIY,EAAM,CAAE,EAIpB,GADAD,EAAQ,UAAW,CAAE,EAChBzB,GAAUyB,CAAM,EAAI,CAExB,GAAKD,EAAQ,EACZ,MAAM,IAAI,UAAW,2FAA4F,EAGlH,GADAE,EAAOpB,GAAOmB,CAAM,EACfC,IAAS,KACb,MAAM,IAAI,UAAWd,GAAQ,sEAAuEa,CAAM,CAAE,EAG7G,OAAO,IAAIC,EAAM,CAAE,CACpB,CAEA,GAAKF,EAAQ,EACZ,MAAM,IAAI,UAAW,2FAA4F,EAMlH,GAHAA,GAAS,EAGJnB,GAAY,UAAWmB,CAAM,CAAE,EAEnC,GAAKnB,GAAY,UAAWmB,EAAM,CAAE,CAAE,GAMrC,GALAN,EAAU,UAAWM,CAAM,EAC3BA,GAAS,EACTP,EAAO,UAAWO,CAAM,EAGnBA,IAAU,EACd,MAAM,IAAI,UAAW,2FAA4F,OAIlHP,EAAO,UAAWO,CAAM,UAIhBA,GAAS,GAIlB,GAHAN,EAAU,UAAWM,CAAM,EAC3BA,GAAS,EACTP,EAAO,UAAWO,CAAM,EACnB,CAACnB,GAAYY,CAAK,EACtB,MAAM,IAAI,UAAWL,GAAQ,uEAAwEK,CAAK,CAAE,MAK7G,OAAM,IAAI,UAAW,2FAA4F,EAWlH,GARAO,GAAS,EACJA,GAAS,GAAKxB,GAAU,UAAWwB,CAAM,CAAE,GAC/CC,EAAQ,UAAWD,CAAM,EACzBA,GAAS,GAETC,EAAQX,GAETY,EAAOpB,GAAOmB,CAAM,EACfC,IAAS,KACb,MAAM,IAAI,UAAWd,GAAQ,sEAAuEa,CAAM,CAAE,EAG7G,GAAKA,IAAU,UAAY,CAE1B,GADAG,EAAM,UAAW,CAAE,EACdJ,IAAU,EAAI,CAMlB,GALKvB,GAAsB2B,CAAI,EAC9BD,EAAMC,EACK1B,GAAc0B,CAAI,IAC7BD,EAAMC,EAAI,QAEND,IAAQ,OACZ,OAAOnB,GAAamB,EAAKV,EAAMC,CAAQ,EAExC,GAAKf,GAAeyB,CAAI,EACvB,MAAM,IAAI,MAAO,mFAAoF,EAEtG,GAAKxB,GAAUwB,CAAI,EAAI,CACtB,GAAKf,KAAwB,GAC5B,MAAM,IAAI,UAAWD,GAAQ,sIAAuIgB,CAAI,CAAE,EAE3K,GAAK,CAACvB,GAAYuB,EAAKlB,EAAgB,CAAE,EACxC,MAAM,IAAI,UAAWE,GAAQ,wGAAyGgB,CAAI,CAAE,EAG7I,GADAA,EAAMA,EAAKlB,EAAgB,EAAE,EACxB,CAACL,GAAYuB,EAAI,IAAK,EAC1B,MAAM,IAAI,UAAWhB,GAAQ,wGAAyGgB,CAAI,CAAE,EAE7I,OAAOb,GAAqBa,EAAKX,EAAMC,CAAQ,CAChD,CACA,MAAM,IAAI,UAAWN,GAAQ,wGAAyGgB,CAAI,CAAE,CAC7I,SAAYzB,GAAeyB,CAAI,EAC9B,MAAM,IAAI,MAAO,mFAAoF,EAEtG,MAAM,IAAI,UAAWhB,GAAQ,wGAAyGgB,CAAI,CAAE,CAC7I,CACA,GAAKJ,IAAU,EAEd,GADAI,EAAM,UAAW,CAAE,EACd1B,GAAc0B,CAAI,EACtBT,EAAM,IAAIO,EAAME,EAAI,MAAO,UAChBzB,GAAeyB,CAAI,EAC9BT,EAAM,IAAIO,EAAME,CAAI,UACT3B,GAAsB2B,CAAI,EACrCT,EAAM,IAAIO,EAAME,CAAI,UACTxB,GAAUwB,CAAI,EAAI,CAC7B,GAAKf,KAAwB,GAC5B,MAAM,IAAI,UAAWD,GAAQ,sIAAuIgB,CAAI,CAAE,EAE3K,GAAK,CAACvB,GAAYuB,EAAKlB,EAAgB,CAAE,EACxC,MAAM,IAAI,UAAWE,GAAQ,wGAAyGgB,CAAI,CAAE,EAG7I,GADAA,EAAMA,EAAKlB,EAAgB,EAAE,EACxB,CAACL,GAAYuB,EAAI,IAAK,EAC1B,MAAM,IAAI,UAAWhB,GAAQ,wGAAyGgB,CAAI,CAAE,EAE7IT,EAAM,IAAIO,EAAMf,GAAYiB,CAAI,CAAE,CACnC,KACC,OAAM,IAAI,UAAWhB,GAAQ,wGAAyGgB,CAAI,CAAE,OAElIJ,IAAU,EACrBL,EAAM,IAAIO,EAAM,UAAU,CAAC,EAAG,UAAU,CAAC,CAAE,EAE3CP,EAAM,IAAIO,EAAM,UAAU,CAAC,EAAG,UAAU,CAAC,EAAG,UAAU,CAAC,CAAE,EAE1D,OAAKP,EAAI,OAAS,IACZ,WAAW,KAAMM,CAAM,EAC3BH,GAAiBH,EAAKF,EAAMC,CAAQ,EAEpCX,GAASY,EAAI,OAAQA,EAAK,EAAGU,CAAS,GAGjCV,EAYP,SAASU,EAAUC,EAAOC,EAAO,CAChC,OAAOd,EAAK,KAAMC,EAASa,CAAK,CACjC,CACD,CAKAhC,GAAO,QAAUwB,KC5ZjB,IAAAS,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA0LA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC/LjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAa,QAAS,4BAA6B,EACnDC,GAAe,QAAS,8BAA+B,EACvDC,GAAiB,QAAS,iCAAkC,EAC5DC,GAAkB,IAClBC,GAAiB,KACjBC,GAAS,KACTC,GAAQ,IACRC,GAAS,QAAS,uBAAwB,EA0B9C,SAASC,IAAiB,CACzB,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGJ,GADAR,EAAW,UAAW,CAAE,EACnB,UAAU,OAAS,EACvB,GAAKR,GAAc,UAAW,CAAE,CAAE,GAEjC,GADAW,EAAM,UAAW,CAAE,EACd,UAAU,OAAS,EAAI,CAE3B,GADAD,EAAM,UAAW,CAAE,EACd,CAACX,GAAYW,CAAI,EACrB,MAAM,IAAI,UAAWJ,GAAQ,uEAAwEI,CAAI,CAAE,EAE5GD,EAAU,UAAW,CAAE,CACxB,MACM,CAEN,GADAC,EAAM,UAAW,CAAE,EACd,CAACX,GAAYW,CAAI,EACrB,MAAM,IAAI,UAAWJ,GAAQ,uEAAwEI,CAAI,CAAE,EAE5GD,EAAU,UAAW,CAAE,CACxB,CAED,GAAK,CAACR,GAAgBO,CAAS,EAC9B,MAAM,IAAI,UAAWF,GAAQ,kGAAmGE,CAAS,CAAE,EAG5I,GADAO,EAAI,GACCJ,IAAQ,OAAS,CAErB,GADAA,EAAM,CAAC,EACFD,EAAM,CACV,KACCK,GAAK,EACLC,EAAIR,EAAS,KAAK,EACb,CAAAQ,EAAE,MAGPL,EAAI,KAAMD,EAAI,KAAMD,EAASO,EAAE,MAAOD,CAAE,CAAE,EAE3C,OAAOJ,CACR,CACA,KACCK,EAAIR,EAAS,KAAK,EACb,CAAAQ,EAAE,MAGPL,EAAI,KAAMK,EAAE,KAAM,EAEnB,OAAOL,CACR,CAQA,GAPAC,EAAMD,EAAI,OACVG,EAAKT,GAAOM,CAAI,EACXT,GAAiBS,CAAI,EACzBE,EAAMV,GAAgBW,CAAG,EAEzBD,EAAMT,GAAQU,CAAG,EAEbJ,EAAM,CACV,KAAQK,EAAIH,EAAI,IACfG,GAAK,EACLC,EAAIR,EAAS,KAAK,EACb,CAAAQ,EAAE,OAGPH,EAAKF,EAAKI,EAAGL,EAAI,KAAMD,EAASO,EAAE,MAAOD,CAAE,CAAE,EAE9C,OAAOJ,CACR,CACA,KAAQI,EAAIH,EAAI,IACfG,GAAK,EACLC,EAAIR,EAAS,KAAK,EACb,CAAAQ,EAAE,OAGPH,EAAKF,EAAKI,EAAGC,EAAE,KAAM,EAEtB,OAAOL,CACR,CAKAb,GAAO,QAAUS,KC/IjB,IAAAU,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAuCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC5CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAuB,QAAS,uCAAwC,EAAE,YAC1EC,GAAQ,KACRC,GAAQ,KACRC,GAAQ,QAAS,6BAA8B,EAC/CC,GAAS,QAAS,uBAAwB,EAuB9C,SAASC,GAAMC,EAAQC,EAAQ,CAC9B,IAAIC,EACAC,EACAC,EACJ,GAAK,CAACV,GAAsBM,CAAO,EAClC,MAAM,IAAI,UAAWF,GAAQ,+EAAgFE,CAAO,CAAE,EAOvH,GALK,UAAU,OAAS,EACvBE,EAAQ,UAAW,CAAE,EAErBA,EAAQ,UAEJA,IAAU,UACd,OAAON,GAAOK,EAAOD,CAAO,EAG7B,GADAG,EAAOR,GAAOO,CAAM,EACfC,IAAS,KACb,MAAM,IAAI,UAAWL,GAAQ,gFAAiFI,CAAM,CAAE,EAEvH,OAAAE,EAAM,IAAID,EAAMH,CAAO,EAGvBH,GAAOG,EAAQC,EAAOG,EAAK,CAAE,EAEtBA,CACR,CAKAX,GAAO,QAAUM,KC/EjB,IAAAM,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,QAAS,uBAAwB,EAC1CC,GAAQ,IACRC,GAAO,KACPC,GAAa,QAAS,yBAA0B,EAChDC,GAAY,QAAS,yBAA0B,EAuBnD,SAASC,GAAUC,EAAGC,EAAQ,CAC7B,IAAIC,EACAC,EAGJ,GADAD,EAAKP,GAAOK,CAAE,EACTE,IAAO,KACX,MAAM,IAAI,UAAWR,GAAQ,8GAA+GM,CAAE,CAAE,EAEjJ,OAAK,UAAU,OAAS,IACvBE,EAAK,UAAW,CAAE,GAEd,OAAOD,GAAU,SAChBC,IAAO,aACXC,EAAI,IAAIN,GAAYI,EAAO,CAAI,EACpBC,IAAO,YAClBC,EAAI,IAAIL,GAAWG,EAAO,CAAI,EAE9BE,EAAIF,EAGLE,EAAIF,EAEEL,GAAMI,EAAE,OAAQG,EAAGD,CAAG,CAC9B,CAKAT,GAAO,QAAUM,KC7EjB,IAAAK,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAO,QAAS,gCAAiC,EACjDC,GAAW,QAAS,0BAA2B,EAAE,YACjDC,GAAQ,QAAS,iCAAkC,EACnDC,GAAS,QAAS,uBAAwB,EAC1CC,GAAa,QAAS,8BAA+B,EACrDC,GAAM,KAqBV,SAASC,GAAWC,EAAIC,EAAIC,EAAY,CACvC,IAAIC,EACAC,EACJ,GAAK,CAACV,GAAUM,CAAG,GAAKL,GAAOK,CAAG,EACjC,MAAM,IAAI,UAAWJ,GAAQ,wDAAyDI,CAAG,CAAE,EAE5F,GAAK,CAACN,GAAUO,CAAG,GAAKN,GAAOM,CAAG,EACjC,MAAM,IAAI,UAAWL,GAAQ,uDAAwDK,CAAG,CAAE,EAE3F,GAAK,UAAU,OAAS,EACvBG,EAAM,UAENA,EAAMF,EACD,CAACR,GAAUU,CAAI,GAAKT,GAAOS,CAAI,EACnC,MAAM,IAAI,UAAWR,GAAQ,4DAA6DQ,CAAI,CAAE,EAIlG,GADAD,EAAMV,IAAQQ,EAAGD,GAAOI,CAAI,EACvBD,EAAMN,GACV,MAAM,IAAI,WAAY,kEAAmE,EAE1F,OAAOC,GAAKE,EAAIC,EAAIG,CAAI,CACzB,CAKAZ,GAAO,QAAUO,KC3EjB,IAAAM,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAe,KACfC,GAAe,KACfC,GAAkB,KAClBC,GAAiB,KAMjBC,GAAQ,CACX,QAAWJ,GACX,QAAWC,GACX,WAAcC,GACd,UAAaC,EACd,EAKAJ,GAAO,QAAUK,KCzCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAQ,KAmBZ,SAASC,GAAOC,EAAQ,CACvB,OAAOF,GAAOE,CAAM,GAAK,IAC1B,CAKAH,GAAO,QAAUE,KChDjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwCA,SAASC,GAAUC,EAAOC,EAAMC,EAAKC,EAAW,CAC/C,IAAIC,EACAC,EACAC,EACAC,EAEJ,GAAKL,IAAQ,EACZ,MAAO,CAAC,EAGT,GAAKA,IAAQ,EACZ,OAAKC,EACG,CAAEF,CAAK,EAER,CAAED,CAAM,EAahB,IAXAI,EAAM,CAAEJ,CAAM,EAGTG,EACJE,EAAIH,EAAM,EAEVG,EAAIH,EAELI,GAAML,EAAKD,GAAUK,EAGfE,EAAI,EAAGA,EAAIF,EAAGE,IACnBH,EAAI,KAAMJ,EAASM,EAAEC,CAAG,EAGzB,OAAKJ,GACJC,EAAI,KAAMH,CAAK,EAETG,CACR,CAKAN,GAAO,QAAUC,KChFjB,IAAAS,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAY,QAAS,yBAA0B,EAC/CC,GAAa,QAAS,yBAA0B,EAChDC,GAAO,QAAS,sBAAuB,EACvCC,GAAO,QAAS,sBAAuB,EACvCC,GAAQ,QAAS,uBAAwB,EACzCC,GAAQ,QAAS,uBAAwB,EAiB7C,SAASC,GAAUC,EAAKC,EAAOC,EAAKC,EAAMC,EAAKC,EAAW,CACzD,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAEJ,GAAKd,IAAQ,EACZ,MAAO,CAAC,EAgCT,GA9BAG,EAAQ,EACHP,IAAQ,WACZS,EAAMR,EACNU,EAAM,GACKX,IAAQ,aACnBO,GAAS,EACTE,EAAMZ,GAAOI,CAAM,EACnBU,EAAMb,GAAOG,CAAM,IAEnBQ,EAAMd,GAAMM,CAAM,EAClBU,EAAMf,GAAMK,CAAM,GAEdC,IAAQ,WACZQ,EAAMP,EACNS,EAAM,GACKV,IAAQ,aACnBK,GAAS,EACTG,EAAMb,GAAOM,CAAK,EAClBS,EAAMd,GAAOK,CAAK,IAElBO,EAAMf,GAAMQ,CAAK,EACjBS,EAAMhB,GAAMO,CAAK,GAGbI,IAAU,EACdD,EAAQb,GAERa,EAAQZ,GAGJU,IAAQ,EACZ,OAAKC,EACG,CAAE,IAAIC,EAAOI,EAAKE,CAAI,CAAE,EAEzB,CAAE,IAAIN,EAAOG,EAAKE,CAAI,CAAE,EAchC,IAZAH,EAAM,CAAE,IAAIF,EAAOG,EAAKE,CAAI,CAAE,EAGzBN,EACJY,EAAIb,EAAM,EAEVa,EAAIb,EAELW,GAAOL,EAAID,GAAQQ,EACnBD,GAAOJ,EAAID,GAAQM,EAGbC,EAAI,EAAGA,EAAID,EAAGC,IACnBL,EAAKJ,EAAOM,EAAGG,EACfJ,EAAKH,EAAOK,EAAGE,EACfV,EAAI,KAAM,IAAIF,EAAOO,EAAIC,CAAG,CAAE,EAG/B,OAAKT,GACJG,EAAI,KAAM,IAAIF,EAAOI,EAAKE,CAAI,CAAE,EAE1BJ,CACR,CAKAhB,GAAO,QAAUO,KC7HjB,IAAAoB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA+CA,SAASC,GAAUC,EAAKC,EAAOC,EAAMC,EAAKC,EAAW,CACpD,IAAIC,EACAC,EACAC,EAEJ,GAAKJ,IAAQ,EACZ,OAAOH,EAGR,GAAKG,IAAQ,EACZ,OAAKC,EACJJ,EAAK,CAAE,EAAIE,EAEXF,EAAK,CAAE,EAAIC,EAELD,EAaR,IAXAA,EAAK,CAAE,EAAIC,EAGNG,EACJC,EAAIF,EAAM,EAEVE,EAAIF,EAELG,GAAMJ,EAAKD,GAAUI,EAGfE,EAAI,EAAGA,EAAIF,EAAGE,IACnBP,EAAKO,CAAE,EAAIN,EAASK,EAAEC,EAGvB,OAAKH,IACJJ,EAAKK,CAAE,EAAIH,GAELF,CACR,CAKAF,GAAO,QAAUC,KCxFjB,IAAAS,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAO,QAAS,sBAAuB,EACvCC,GAAO,QAAS,sBAAuB,EACvCC,GAAQ,QAAS,uBAAwB,EACzCC,GAAQ,QAAS,uBAAwB,EAkB7C,SAASC,GAAUC,EAAKC,EAAKC,EAAOC,EAAKC,EAAMC,EAAKC,EAAW,CAC9D,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAEJ,GAAKV,IAAQ,EACZ,OAAOL,EAuBR,GArBKC,IAAQ,WACZM,EAAML,EACNO,EAAM,GACKR,IAAQ,aACnBM,EAAMV,GAAOK,CAAM,EACnBO,EAAMX,GAAOI,CAAM,IAEnBK,EAAMZ,GAAMO,CAAM,EAClBO,EAAMb,GAAMM,CAAM,GAEdC,IAAQ,WACZK,EAAMJ,EACNM,EAAM,GACKP,IAAQ,aACnBK,EAAMX,GAAOO,CAAK,EAClBM,EAAMZ,GAAOM,CAAK,IAElBI,EAAMb,GAAMS,CAAK,EACjBM,EAAMd,GAAMQ,CAAK,GAGbC,IAAQ,EACZ,OAAKC,GACJN,EAAK,CAAE,EAAIQ,EACXR,EAAK,CAAE,EAAIU,IAEXV,EAAK,CAAE,EAAIO,EACXP,EAAK,CAAE,EAAIS,GAELT,EAgBR,IAdAA,EAAK,CAAE,EAAIO,EACXP,EAAK,CAAE,EAAIS,EAGNH,EACJO,EAAIR,EAAM,EAEVQ,EAAIR,EAELM,GAAOH,EAAID,GAAQM,EACnBD,GAAOF,EAAID,GAAQI,EAGnBE,EAAI,EACED,EAAI,EAAGA,EAAID,EAAGC,IACnBd,EAAKe,CAAE,EAAIR,EAAOI,EAAGG,EACrBd,EAAKe,EAAE,CAAE,EAAIN,EAAOG,EAAGE,EACvBC,GAAK,EAGN,OAAKT,IACJN,EAAKe,CAAE,EAAIP,EACXR,EAAKe,EAAE,CAAE,EAAIL,GAEPV,CACR,CAKAN,GAAO,QAAUK,KCtHjB,IAAAiB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,QAAS,gCAAiC,EACrDC,GAAa,QAAS,iCAAkC,EACxDC,GAAW,QAAS,0BAA2B,EAAE,YACjDC,GAAY,QAAS,2BAA4B,EAAE,YACnDC,GAAS,QAAS,uBAAwB,EAyB9C,SAASC,GAAUC,EAAMC,EAAU,CAClC,OAAMP,GAAUO,CAAQ,EAGnBN,GAAYM,EAAS,OAAQ,IACjCD,EAAK,MAAQC,EAAQ,MAChB,CAACL,GAAUI,EAAK,KAAM,GACnB,IAAI,UAAWF,GAAQ,8DAA+D,QAASE,EAAK,KAAM,CAAE,EAGhHL,GAAYM,EAAS,UAAW,IACpCD,EAAK,SAAWC,EAAQ,SACnB,CAACJ,GAAWG,EAAK,QAAS,GACvB,IAAI,UAAWF,GAAQ,+DAAgE,WAAYE,EAAK,QAAS,CAAE,EAGrH,KAdC,IAAI,UAAWF,GAAQ,qEAAsEG,CAAQ,CAAE,CAehH,CAKAR,GAAO,QAAUM,KCzEjB,IAAAG,GAAAC,EAAA,SAAAC,GAAAC,GAAA,CAAAA,GAAA,SACI,SAAY,EAChB,ICFA,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAgB,QAAS,gCAAiC,EAC1DC,GAAW,QAAS,0BAA2B,EAAE,YACjDC,GAAuB,QAAS,uCAAwC,EAAE,YAC1EC,GAAQ,QAAS,iCAAkC,EACnDC,GAAQ,QAAS,uBAAwB,EACzCC,GAAQ,KACRC,GAAgB,QAAS,4CAA6C,EACtEC,GAAiB,QAAS,6CAA8C,EACxEC,GAAS,QAAS,uBAAwB,EAC1CC,GAAU,KACVC,GAAW,KACXC,GAAY,KACZC,GAAa,KACbC,GAAW,KACXC,GAAW,KA6Bf,SAASC,GAAUC,EAAOC,EAAMC,EAAM,CACrC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAEJ,GAAK,OAAOT,GAAU,SAAW,CAEhC,GADAO,EAAMnB,GAAOY,CAAM,EACdO,IAAQ,KAAO,CACnB,GAAK,CAACvB,GAAegB,CAAM,EAC1B,MAAM,IAAI,UAAWR,GAAQ,yFAA0FQ,CAAM,CAAE,EAEhIO,EAAM,YACP,CACAE,EAAM,EACP,KAAO,IAAK,CAACxB,GAAUe,CAAM,GAAKb,GAAOa,CAAM,EAC9C,MAAM,IAAI,UAAWR,GAAQ,yFAA0FQ,CAAM,CAAE,EAE/HO,EAAM,UAEP,GAAK,OAAON,GAAS,SAAW,CAE/B,GADAO,EAAMpB,GAAOa,CAAK,EACbO,IAAQ,KAAO,CACnB,GAAK,CAACxB,GAAeiB,CAAK,EACzB,MAAM,IAAI,UAAWT,GAAQ,0FAA2FS,CAAK,CAAE,EAEhIO,EAAM,YACP,CACAC,EAAM,EACP,KAAO,IAAK,CAACxB,GAAUgB,CAAK,GAAKd,GAAOc,CAAK,EAC5C,MAAM,IAAI,UAAWT,GAAQ,0FAA2FS,CAAK,CAAE,EAE/HO,EAAM,UAEP,GAAK,CAACtB,GAAsBgB,CAAI,EAC/B,MAAM,IAAI,UAAWV,GAAQ,+EAAgFU,CAAI,CAAE,EAWpH,GATAC,EAAO,CACN,SAAYL,GAAS,QACtB,EACKS,IAAQC,EACZL,EAAK,MAAQI,EAGbJ,EAAK,MAAQ,aAET,UAAU,OAAS,IACvBE,EAAMR,GAAUM,EAAM,UAAW,CAAE,CAAE,EAChCE,GACJ,MAAMA,EAGR,GAAKF,EAAK,QAAU,UACnB,OAAKM,EACGf,GAAUa,EAAKP,EAAOQ,EAAKP,EAAMC,EAAKC,EAAK,QAAS,EAErDV,GAASO,EAAOC,EAAMC,EAAKC,EAAK,QAAS,EAGjD,GADAC,EAAOf,GAAOc,EAAK,KAAM,EACpBC,IAAS,KACb,MAAM,IAAI,UAAWZ,GAAQ,6GAA8G,QAASW,EAAK,KAAM,CAAE,EAGlK,GADAG,EAAM,IAAIF,EAAMF,CAAI,EACfC,EAAK,QAAU,YACnB,OAAAP,GAAYN,GAAegB,EAAK,CAAE,EAAGC,EAAKP,EAAOQ,EAAKP,EAAMC,EAAKC,EAAK,QAAS,EACxEG,EAER,GAAKH,EAAK,QAAU,aACnB,OAAAP,GAAYL,GAAgBe,EAAK,CAAE,EAAGC,EAAKP,EAAOQ,EAAKP,EAAMC,EAAKC,EAAK,QAAS,EACzEG,EAER,GAAKG,EACJ,MAAM,IAAI,UAAW,0JAA2J,EAEjL,OAAOd,GAAWW,EAAKN,EAAOC,EAAMC,EAAKC,EAAK,QAAS,CACxD,CAKApB,GAAO,QAAUgB,KCpJjB,IAAAW,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAY,QAAS,yBAA0B,EAC/CC,GAAa,QAAS,yBAA0B,EAChDC,GAAO,QAAS,sBAAuB,EACvCC,GAAO,QAAS,sBAAuB,EACvCC,GAAQ,QAAS,uBAAwB,EACzCC,GAAQ,QAAS,uBAAwB,EAoB7C,SAASC,GAAUC,EAAKC,EAAKC,EAAOC,EAAKC,EAAMC,EAAKC,EAAW,CAC9D,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAEJ,GAAKf,IAAQ,EACZ,OAAOL,EAoCR,GAlCAQ,EAAQ,EACHP,IAAQ,WACZQ,EAAMP,EACNS,EAAM,GACKV,IAAQ,aACnBO,GAAS,EACTC,EAAMZ,GAAOK,CAAM,EACnBS,EAAMb,GAAOI,CAAM,IAEnBO,EAAMd,GAAMO,CAAM,EAClBS,EAAMf,GAAMM,CAAM,GAEdC,IAAQ,WACZO,EAAMN,EACNQ,EAAM,GACKT,IAAQ,aACnBK,GAAS,EACTE,EAAMb,GAAOO,CAAK,EAClBQ,EAAMd,GAAOM,CAAK,IAElBM,EAAMf,GAAMS,CAAK,EACjBQ,EAAMhB,GAAMQ,CAAK,GAGbI,IAAU,EACdD,EAAQd,GAERc,EAAQb,GAGToB,EAAMd,EAAI,KACVa,EAAMb,EAAI,UAAW,CAAE,EAGlBK,IAAQ,EACZ,OAAKC,EACJO,EAAKC,EAAK,EAAG,IAAIP,EAAOG,EAAKE,CAAI,CAAE,EAEnCC,EAAKC,EAAK,EAAG,IAAIP,EAAOE,EAAKE,CAAI,CAAE,EAE7BX,EAcR,IAZAa,EAAKC,EAAK,EAAG,IAAIP,EAAOE,EAAKE,CAAI,CAAE,EAG9BL,EACJa,EAAId,EAAM,EAEVc,EAAId,EAELY,GAAOP,EAAID,GAAQU,EACnBD,GAAON,EAAID,GAAQQ,EAGbC,EAAI,EAAGA,EAAID,EAAGC,IACnBL,EAAKN,EAAOQ,EAAGG,EACfJ,EAAKL,EAAOO,EAAGE,EACfP,EAAKC,EAAKM,EAAG,IAAIb,EAAOQ,EAAIC,CAAG,CAAE,EAGlC,OAAKV,GACJO,EAAKC,EAAKK,EAAG,IAAIZ,EAAOG,EAAKE,CAAI,CAAE,EAE7BZ,CACR,CAKAR,GAAO,QAAUO,KCvIjB,IAAAsB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqEA,SAASC,GAAUC,EAAKC,EAAOC,EAAMC,EAAKC,EAAW,CACpD,IAAIC,EACAC,EACAC,EACAC,EACAC,EAEJ,GAAKN,IAAQ,EACZ,OAAOH,EAOR,GAJAK,EAAML,EAAI,KACVM,EAAMN,EAAI,UAAW,CAAE,EAGlBG,IAAQ,EACZ,OAAKC,EACJE,EAAKD,EAAK,EAAGH,CAAK,EAElBI,EAAKD,EAAK,EAAGJ,CAAM,EAEbD,EAaR,IAXAM,EAAKD,EAAK,EAAGJ,CAAM,EAGdG,EACJG,EAAIJ,EAAM,EAEVI,EAAIJ,EAELK,GAAMN,EAAKD,GAAUM,EAGfE,EAAI,EAAGA,EAAIF,EAAGE,IACnBH,EAAKD,EAAKI,EAAGR,EAASO,EAAEC,CAAG,EAG5B,OAAKL,GACJE,EAAKD,EAAKE,EAAGL,CAAK,EAEZF,CACR,CAKAF,GAAO,QAAUC,KCpHjB,IAAAW,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAgB,QAAS,gCAAiC,EAC1DC,GAAW,QAAS,0BAA2B,EAAE,YACjDC,GAAe,QAAS,8BAA+B,EACvDC,GAAS,QAAS,uBAAwB,EAC1CC,GAAQ,QAAS,iCAAkC,EACnDC,GAAQ,QAAS,uBAAwB,EACzCC,GAAS,IACTC,GAAgB,QAAS,4CAA6C,EACtEC,GAAiB,QAAS,6CAA8C,EACxEC,GAAmB,KACnBC,GAAW,KACXC,GAAU,KACVC,GAAa,KACbC,GAAY,KACZC,GAAW,KACXC,GAAW,KA4Bf,SAASC,GAAUC,EAAOC,EAAMC,EAAM,CACrC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAEJ,GAAK,OAAOT,GAAU,SAAW,CAEhC,GADAK,EAAMjB,GAAOY,CAAM,EACdK,IAAQ,KAAO,CACnB,GAAK,CAACtB,GAAeiB,CAAM,EAC1B,MAAM,IAAI,UAAWd,GAAQ,yFAA0Fc,CAAM,CAAE,EAEhIK,EAAM,YACP,CACAE,EAAM,EACP,KAAO,IAAK,CAACvB,GAAUgB,CAAM,GAAKb,GAAOa,CAAM,EAC9C,MAAM,IAAI,UAAWd,GAAQ,yFAA0Fc,CAAM,CAAE,EAE/HK,EAAM,UAEP,GAAK,OAAOJ,GAAS,SAAW,CAE/B,GADAK,EAAMlB,GAAOa,CAAK,EACbK,IAAQ,KAAO,CACnB,GAAK,CAACvB,GAAekB,CAAK,EACzB,MAAM,IAAI,UAAWf,GAAQ,0FAA2Fe,CAAK,CAAE,EAEhIK,EAAM,YACP,CACAC,EAAM,EACP,KAAO,IAAK,CAACvB,GAAUiB,CAAK,GAAKd,GAAOc,CAAK,EAC5C,MAAM,IAAI,UAAWf,GAAQ,0FAA2Fe,CAAK,CAAE,EAE/HK,EAAM,UAEP,GAAK,CAACrB,GAAciB,CAAI,EACvB,MAAM,IAAI,UAAWhB,GAAQ,8EAA+EgB,CAAI,CAAE,EAKnH,GAHAC,EAAO,CACN,SAAYL,GAAS,QACtB,EACK,UAAU,OAAS,IACvBM,EAAMP,GAAUM,EAAM,UAAW,CAAE,CAAE,EAChCC,GACJ,MAAMA,EAOR,GAJAI,EAAMnB,GAAQa,CAAI,EACbM,IAAQ,OACZA,EAAM,WAEFA,IAAQ,YACZ,OAAAb,GAAYL,GAAeY,EAAK,CAAE,EAAGG,EAAKL,EAAOM,EAAKL,EAAMC,EAAI,OAAQC,EAAK,QAAS,EAC/ED,EAER,GAAKM,IAAQ,aACZ,OAAAb,GAAYJ,GAAgBW,EAAK,CAAE,EAAGG,EAAKL,EAAOM,EAAKL,EAAMC,EAAI,OAAQC,EAAK,QAAS,EAChFD,EAER,GAAKK,EAAM,CACV,GAAKC,IAAQ,UACZ,OAAAC,EAAIjB,GAAkBU,CAAI,EAC1BT,GAAUgB,EAAGJ,EAAKL,EAAOM,EAAKL,EAAMC,EAAI,OAAQC,EAAK,QAAS,EACvDD,EAER,MAAM,IAAI,UAAW,gKAAiK,CACvL,CAEA,OADAO,EAAIjB,GAAkBU,CAAI,EACrBO,EAAE,kBACNf,GAASe,EAAGT,EAAOC,EAAMC,EAAI,OAAQC,EAAK,QAAS,EAC5CD,IAERN,GAAWM,EAAKF,EAAOC,EAAMC,EAAI,OAAQC,EAAK,QAAS,EAChDD,EACR,CAKApB,GAAO,QAAUiB,KClJjB,IAAAW,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkEA,IAAIC,GAAc,QAAS,uDAAwD,EAC/EC,GAAO,KACPC,GAAS,KAKbF,GAAaC,GAAM,SAAUC,EAAO,EAKpCH,GAAO,QAAUE,KC9EjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,QAAS,0BAA2B,EAAE,YACjDC,GAAuB,QAAS,uCAAwC,EAAE,YAC1EC,GAAS,QAAS,uBAAwB,EAC1CC,GAAQ,QAAS,iCAAkC,EACnDC,GAAM,KAoBV,SAASC,GAAUC,EAAGC,EAAGC,EAAM,CAC9B,GAAK,CAACR,GAAUM,CAAE,GAAKH,GAAOG,CAAE,EAC/B,MAAM,IAAI,UAAWJ,GAAQ,0EAA2EI,CAAE,CAAE,EAE7G,GAAK,CAACN,GAAUO,CAAE,GAAKJ,GAAOI,CAAE,EAC/B,MAAM,IAAI,UAAWL,GAAQ,yEAA0EK,CAAE,CAAE,EAE5G,GAAK,UAAU,OAAS,EACvBC,EAAM,WACK,CAACP,GAAsBO,CAAI,EACtC,MAAM,IAAI,UAAWN,GAAQ,uEAAwEM,CAAI,CAAE,EAE5G,OAAOJ,GAAKE,EAAGC,EAAGC,CAAI,CACvB,CAKAT,GAAO,QAAUM,KChEjB,IAAAI,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAY,QAAS,qCAAsC,EAC3DC,GAAiB,QAAS,2CAA4C,EACtEC,GAAgB,QAAS,gCAAiC,EAC1DC,GAAO,QAAS,gCAAiC,EACjDC,GAAO,QAAS,gCAAiC,EACjDC,GAA6B,QAAS,8CAA+C,EACrFC,GAA2B,QAAS,4CAA6C,EACjFC,GAA2B,QAAS,4CAA6C,EACjFC,GAAW,QAAS,4BAA6B,EACjDC,GAAY,QAAS,6BAA8B,EACnDC,GAAY,QAAS,6BAA8B,EACnDC,GAAY,QAAS,6BAA8B,EACnDC,GAAa,QAAS,8BAA+B,EACrDC,GAAa,QAAS,8BAA+B,EAYzD,SAASC,GAAkBC,EAAQ,CAClC,OAAKA,IAAUA,GAASA,IAAUZ,IAAQY,IAAUX,GAC5C,UAEHJ,GAAWe,CAAM,EAChBA,GAASR,IAA4BQ,GAAST,GAC3C,UAED,UAIPS,EAAQ,CAACV,IACTU,EAAQV,GAED,UAGD,SACR,CAmBA,SAASW,GAAaD,EAAQ,CAC7B,OAAK,OAAOA,GAAU,SAChBb,GAAea,CAAM,EACpBD,GAAkBC,EAAM,EAAG,IAAM,WAAaD,GAAkBC,EAAM,EAAG,IAAM,UAC5E,aAED,YAED,UAEHA,IAAUA,GAASA,IAAUZ,IAAQY,IAAUX,GAC5C,UAEHJ,GAAWe,CAAM,EAChBA,IAAU,GAAKd,GAAgBc,CAAM,EAClC,UAEHA,EAAQ,EACPA,GAASP,GACN,OAEHO,GAASN,GACN,QAEHM,GAASL,GACN,QAED,UAEHK,GAASJ,GACN,QAEHI,GAASH,GACN,SAEHG,GAASF,GACN,SAED,UAIPE,EAAQ,CAACV,IACTU,EAAQV,GAED,UAGD,SACR,CAKAN,GAAO,QAAUiB,KC3IjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAc,KAKlBD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAa,QAAS,yBAA0B,EAChDC,GAAY,QAAS,yBAA0B,EAC/CC,GAAO,KACPC,GAAS,QAAS,uBAAwB,EAK1CC,GAAO,IAAIJ,GAAY,IAAK,GAAI,EAChCK,GAAM,IAAIJ,GAAW,IAAK,GAAI,EAC9BK,GAAS,CAAE,UAAW,UAAW,aAAc,YAAa,SAAU,EAsB1E,SAASC,GAAMC,EAAS,CACvB,IAAIC,EACAC,EAEJ,GAAK,UAAU,OAAS,GAEvB,GADAD,EAAQ,UAAW,CAAE,EAChBH,GAAO,QAASG,CAAM,IAAM,GAChC,MAAM,IAAI,UAAWN,GAAQ,qFAAsFG,GAAO,KAAM,MAAO,EAAGG,CAAM,CAAE,OAGnJA,EAAQ,UAET,OAAKA,IAAU,aACdC,EAAQN,GACGK,IAAU,YACrBC,EAAQL,GAERK,EAAQ,IAEFR,GAAMM,EAAQE,EAAOD,CAAM,CACnC,CAKAV,GAAO,QAAUQ,KC/EjB,IAAAI,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAQ,IACRC,GAAO,KACPC,GAAa,QAAS,yBAA0B,EAChDC,GAAY,QAAS,yBAA0B,EAC/CC,GAAS,QAAS,uBAAwB,EAK1CC,GAAO,IAAIH,GAAY,IAAK,GAAI,EAChCI,GAAM,IAAIH,GAAW,IAAK,GAAI,EAC9BI,GAAS,CAAE,UAAW,UAAW,aAAc,YAAa,SAAU,EAsB1E,SAASC,GAAUC,EAAI,CACtB,IAAIC,EACAC,EAGJ,GADAD,EAAKV,GAAOS,CAAE,EACTC,IAAO,KACX,MAAM,IAAI,UAAWN,GAAQ,8GAA+GK,CAAE,CAAE,EAEjJ,GAAK,UAAU,OAAS,GAEvB,GADAC,EAAK,UAAW,CAAE,EACbH,GAAO,QAASG,CAAG,IAAM,GAC7B,MAAM,IAAI,UAAWN,GAAQ,qFAAsFG,GAAO,KAAM,MAAO,EAAGG,CAAG,CAAE,UAErIH,GAAO,QAASG,CAAG,IAAM,GACpC,MAAM,IAAI,UAAWN,GAAQ,+FAAgGG,GAAO,KAAM,MAAO,EAAGG,CAAG,CAAE,EAE1J,OAAKA,IAAO,aACXC,EAAIN,GACOK,IAAO,YAClBC,EAAIL,GAEJK,EAAI,IAEEV,GAAMQ,EAAE,OAAQE,EAAGD,CAAG,CAC9B,CAKAX,GAAO,QAAUS,KCpFjB,IAAAI,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,CAAAA,GAAA,SACC,QAAW,GACX,QAAW,UACX,MAAS,GACT,MAAS,QACT,KAAQ,QACR,OAAU,GACV,OAAU,SACV,MAAS,SACT,OAAU,SACV,QAAW,GACV,UAAa,aACb,WAAc,EAChB,ICbA,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAa,QAAS,oBAAqB,EAC3CC,GAAa,QAAS,iCAAkC,EACxDC,GAAc,KAWlB,SAASC,IAAgB,CACxB,IAAIC,EACAC,EACAC,EACA,EAKJ,IAHAA,EAAM,CAAC,EACPF,EAASJ,GAAYE,EAAY,EACjCG,EAASD,EAAO,OACV,EAAI,EAAG,EAAIC,EAAQ,IACxBC,EAAKF,EAAO,CAAC,CAAE,EAAIF,GAAaE,EAAO,CAAC,CAAE,EAE3C,OAAOE,CACR,CAeA,SAASC,GAAcC,EAAQ,CAC9B,OAAK,UAAU,SAAW,EAClBL,GAAc,EAEjBF,GAAYC,GAAaM,CAAM,EAC5BN,GAAaM,CAAM,EAEpB,IACR,CAKAT,GAAO,QAAUQ,KC5EjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAa,QAAS,yBAA0B,EAChDC,GAAY,QAAS,yBAA0B,EAC/CC,GAAO,KAKPC,GAAO,IAAIH,GAAY,EAAK,CAAI,EAChCI,GAAM,IAAIH,GAAW,EAAK,CAAI,EAsBlC,SAASI,GAAMC,EAAS,CACvB,IAAIC,EACAC,EAEJ,OAAK,UAAU,OAAS,EACvBD,EAAQ,UAAW,CAAE,EAErBA,EAAQ,UAEJA,IAAU,aACdC,EAAQL,GACGI,IAAU,YACrBC,EAAQJ,GAERI,EAAQ,EAEFN,GAAMI,EAAQE,EAAOD,CAAM,CACnC,CAKAR,GAAO,QAAUM,KC1EjB,IAAAI,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAQ,IACRC,GAAO,KACPC,GAAa,QAAS,yBAA0B,EAChDC,GAAY,QAAS,yBAA0B,EAC/CC,GAAS,QAAS,uBAAwB,EAK1CC,GAAO,IAAIH,GAAY,EAAK,CAAI,EAChCI,GAAM,IAAIH,GAAW,EAAK,CAAI,EAsBlC,SAASI,GAAUC,EAAI,CACtB,IAAIC,EACAC,EAGJ,GADAD,EAAKT,GAAOQ,CAAE,EACTC,IAAO,KACX,MAAM,IAAI,UAAWL,GAAQ,8GAA+GI,CAAE,CAAE,EAEjJ,OAAK,UAAU,OAAS,IACvBC,EAAK,UAAW,CAAE,GAEdA,IAAO,aACXC,EAAIL,GACOI,IAAO,YAClBC,EAAIJ,GAEJI,EAAI,EAEET,GAAMO,EAAE,OAAQE,EAAGD,CAAG,CAC9B,CAKAV,GAAO,QAAUQ,KC9EjB,IAAAI,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAgCA,SAASC,IAAW,CACnB,MAAO,CACN,cAAiB,gBAClB,CACD,CAKAD,GAAO,QAAUC,KCzCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,QAAS,gCAAiC,EACrDC,GAAa,QAAS,iCAAkC,EACxDC,GAAuB,QAAS,uCAAwC,EAAE,YAC1EC,GAAS,QAAS,uBAAwB,EAwB9C,SAASC,GAAUC,EAAMC,EAAU,CAClC,OAAMN,GAAUM,CAAQ,EAGnBL,GAAYK,EAAS,eAAgB,IACzCD,EAAK,cAAgBC,EAAQ,cACxB,CAACJ,GAAsBG,EAAK,aAAc,GACvC,IAAI,UAAWF,GAAQ,2EAA4E,gBAAiBE,EAAK,aAAc,CAAE,EAG3I,KARC,IAAI,UAAWF,GAAQ,qEAAsEG,CAAQ,CAAE,CAShH,CAKAP,GAAO,QAAUK,KCjEjB,IAAAG,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA6BA,SAASC,GAAMC,EAAI,CAClB,IAAIC,EACAC,EAGJ,IADAD,EAAM,CAAC,EACDC,EAAI,EAAGA,EAAIF,EAAE,EAAGE,IACrBD,EAAI,KAAM,CAAC,CAAE,EAEd,OAAOA,CACR,CAKAH,GAAO,QAAUC,KC3CjB,IAAAI,GAAAC,EAAA,SAAAC,GAAAC,GAAA,CAAAA,GAAA,SACC,QAAW,EACX,QAAW,EACX,MAAS,EACT,MAAS,EACT,KAAQ,EACR,OAAU,EACV,OAAU,EACV,MAAS,EACT,OAAU,EACT,UAAa,EACb,WAAc,EAChB,ICZA,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,QAAS,0BAA2B,EAAE,YACjDC,GAAuB,QAAS,uCAAwC,EAAE,YAC1EC,GAAe,QAAS,8BAA+B,EACvDC,GAAmB,QAAS,oCAAqC,EACjEC,GAAgB,QAAS,+BAAgC,EACzDC,GAAmB,QAAS,kCAAmC,EAC/DC,GAAoB,QAAS,mCAAoC,EACjEC,GAAc,QAAS,uDAAwD,EAC/EC,GAAsB,QAAS,uDAAwD,EACvFC,GAAQ,KACRC,GAAgB,QAAS,4CAA6C,EACtEC,GAAiB,QAAS,6CAA8C,EACxEC,GAAY,KACZC,GAAS,IACTC,GAAS,QAAS,uBAAwB,EAC1CC,GAAc,KACdC,GAAO,QAAS,gCAAiC,EACjDC,GAAQ,QAAS,iCAAkC,EACnDC,GAAQ,QAAS,iCAAkC,EACnDC,GAAO,QAAS,gCAAiC,EACjDC,GAAM,QAAS,+BAAgC,EAC/CC,GAAW,KACXC,GAAW,KACXC,GAAa,KACbC,GAAoB,KAKpBC,GAAiBhB,GAAO,WAAY,EACpCiB,GAAkBjB,GAAO,YAAa,EAY1C,SAASkB,GAAgBC,EAAM,CAC9B,OAASA,aAAeH,EACzB,CASA,SAASI,GAAiBD,EAAM,CAC/B,OAASA,aAAeF,EACzB,CA6BA,SAASI,GAASC,EAAU,CAC3B,IAAIC,EACAC,EACAC,EACAC,EAGJ,GADAD,EAAOb,GAAS,EACX,UAAU,SACdc,EAAMb,GAAUY,EAAMH,CAAQ,EACzBI,GACJ,MAAMA,EAGR,OAAAF,EAAOV,GAAYP,GAAMG,GAAMe,EAAK,aAAc,CAAE,CAAE,EACtDF,EAAS,EAETzB,GAAa6B,EAAQ,SAAUA,CAAO,EACtC7B,GAAa6B,EAAQ,SAAUC,CAAO,EACtC9B,GAAa6B,EAAQ,OAAQE,CAAK,EAClC/B,GAAa6B,EAAQ,QAASG,CAAM,EACpChC,GAAa6B,EAAQ,gBAAiBF,EAAK,aAAc,EACzD1B,GAAqB4B,EAAQ,SAAUI,CAAS,EAEzCJ,EAQP,SAASI,GAAW,CACnB,OAAOR,CACR,CASA,SAASS,EAAaC,EAAI,CACzB,IAAIC,EACAC,EAMJ,OAHAA,EAAIzB,GAAMuB,CAAE,EAGPE,EAAIX,EAAK,QAAUA,EAAMW,CAAE,EAAE,OAC1BX,EAAMW,CAAE,EAAE,IAAI,EAGjBZ,EAAOU,EAAIR,EAAK,cACb,MAERS,EAAM,IAAI5B,GAAa2B,CAAE,EAGzBV,GAAUU,EAEHC,EACR,CAWA,SAASE,EAAYC,EAAMC,EAAKC,EAAQ,CACvC,IAAIL,EACJ,OAAKI,IAAQ,EACL,IAAID,EAAM,CAAE,GAEpBH,EAAMF,EAAavB,GAAO6B,CAAI,EAAEvB,GAAmBwB,CAAM,CAAE,EACtDL,IAAQ,KACLA,EAED,IAAIG,EAAMH,EAAK,EAAGI,CAAI,EAC9B,CAkBA,SAASX,GAAS,CACjB,IAAIa,EACAD,EACAF,EACAlB,EACAsB,EACAC,EACAC,EACAL,EACAH,EAUJ,GARAK,EAAQ,UAAU,OACbA,GAASjD,GAAU,UAAWiD,EAAM,CAAE,CAAE,GAC5CA,GAAS,EACTD,EAAQ,UAAWC,CAAM,GAEzBD,EAAQ,UAETF,EAAOrC,GAAOuC,CAAM,EACfF,IAAS,KACb,MAAM,IAAI,UAAWhC,GAAQ,sEAAuEkC,CAAM,CAAE,EAE7G,GAAKC,GAAS,EACb,OAAO,IAAIH,EAAM,CAAE,EAGpB,GAAK7C,GAAsB,UAAW,CAAE,CAAE,EACzC,OAAO4C,EAAYC,EAAM,UAAW,CAAE,EAAGE,CAAM,EAGhD,GAAK9C,GAAc,UAAW,CAAE,CAAE,EAAI,CAYrC,GAXA0B,EAAM,UAAW,CAAE,EACnBmB,EAAMnB,EAAI,OACLtB,GAAmBsB,CAAI,EAC3BA,EAAMjB,GAAgBiB,EAAK,CAAE,EAClBvB,GAAkBuB,CAAI,EACjCA,EAAMlB,GAAekB,EAAK,CAAE,EACjB,WAAW,KAAMoB,CAAM,IAElCD,GAAO,GAERG,EAAML,EAAYC,EAAMC,EAAKC,CAAM,EAC9BE,IAAQ,KACZ,OAAOA,EAER,GAAKrB,GAAiBqB,CAAI,GAAKvB,GAAgBuB,CAAI,EAClD,OAAAA,EAAI,IAAKtB,CAAI,EACNsB,EAKR,IAFAE,EAAMxC,GAAWC,GAAQe,CAAI,CAAE,EAAE,UAAW,CAAE,EAC9CuB,EAAMvC,GAAWoC,CAAM,EAAE,UAAW,CAAE,EAChCJ,EAAI,EAAGA,EAAIG,EAAKH,IACrBO,EAAKD,EAAKN,EAAGQ,EAAKxB,EAAKgB,CAAE,CAAE,EAE5B,OAAOM,CACR,CACA,MAAM,IAAI,UAAWpC,GAAQ,wGAAyG,UAAW,CAAE,CAAE,CAAE,CACxJ,CAgBA,SAASuB,GAAS,CACjB,IAAIY,EACAC,EACAG,EACAT,EAUJ,GARAK,EAAQ,UAAU,OACbA,IAAU,EACdC,EAAMd,EAAO,EACFa,IAAU,EACrBC,EAAMd,EAAQ,UAAW,CAAE,CAAE,EAE7Bc,EAAMd,EAAQ,UAAW,CAAE,EAAG,UAAW,CAAE,CAAE,EAEzCc,IAAQ,KASZ,IAPKrB,GAAiBqB,CAAI,EACzBG,EAAM1C,GAAgBuC,EAAK,CAAE,EAClBvB,GAAgBuB,CAAI,EAC/BG,EAAM3C,GAAewC,EAAK,CAAE,EAE5BG,EAAMH,EAEDN,EAAI,EAAGA,EAAIS,EAAI,OAAQT,IAC5BS,EAAKT,CAAE,EAAI,EAGb,OAAOM,CACR,CAcA,SAASZ,EAAMK,EAAM,CACpB,IAAID,EACAY,EACAV,EACJ,GAAKzC,GAAkBwC,CAAI,GAAKA,EAAI,OACnCA,EAAMA,EAAI,eACC,CAACvC,GAAeuC,CAAI,EAC/B,MAAM,IAAI,UAAW7B,GAAQ,4EAA6E6B,CAAI,CAAE,EAEjH,GAAKA,EAAI,WAAa,EAAI,CAQzB,IAPAD,EAAIzB,GAAOE,GAAMwB,EAAI,UAAW,CAAE,EAGlCD,EAAItB,GAAKa,EAAK,OAAO,EAAGS,CAAE,EAG1BY,EAAIrB,EAAMS,CAAE,EACNE,EAAI,EAAGA,EAAIU,EAAE,OAAQV,IAC1B,GAAKU,EAAGV,CAAE,IAAMD,EACf,MAAO,GAITW,EAAE,KAAMX,CAAI,CACb,CACA,MAAO,EACR,CAOA,SAASJ,GAAQ,CAChB,IAAIK,EACJ,IAAMA,EAAI,EAAGA,EAAIX,EAAK,OAAQW,IAC7BX,EAAMW,CAAE,EAAE,OAAS,EAEpBZ,EAAS,CACV,CACD,CAKAjC,GAAO,QAAU+B,KCjXjB,IAAAyB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAU,KAmCVC,GAAiBD,GAAQ,EAK7BD,GAAO,QAAUE,KC9DjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA2CA,IAAIC,GAAc,QAAS,uDAAwD,EAC/EC,GAAO,KACPC,GAAU,KAKdF,GAAaC,GAAM,UAAWC,EAAQ,EAKtCH,GAAO,QAAUE,KCvDjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,CAAAA,GAAA,SACC,QAAW,CACV,QAAW,UACX,QAAW,UACX,MAAS,UACT,MAAS,UACT,KAAQ,UACR,OAAU,UACV,OAAU,UACV,MAAS,UACT,OAAU,UACR,UAAa,aACb,WAAc,aAChB,QAAW,SACZ,EACA,QAAW,CACV,QAAW,UACX,QAAW,UACX,MAAS,UACT,MAAS,UACT,KAAQ,UACR,OAAU,UACV,OAAU,UACV,MAAS,UACT,OAAU,UACR,UAAa,YACb,WAAc,aAChB,QAAW,SACZ,EACA,MAAS,CACR,QAAW,UACX,QAAW,UACX,MAAS,QACT,MAAS,QACT,KAAQ,QACR,OAAU,UACV,OAAU,QACV,MAAS,QACT,OAAU,QACR,UAAa,aACb,WAAc,aAChB,QAAW,SACZ,EACA,MAAS,CACR,QAAW,UACX,QAAW,UACX,MAAS,QACT,MAAS,QACT,KAAQ,QACR,OAAU,UACV,OAAU,QACV,MAAS,QACT,OAAU,QACR,UAAa,YACb,WAAc,aAChB,QAAW,SACZ,EACA,KAAQ,CACP,QAAW,UACX,QAAW,UACX,MAAS,QACT,MAAS,QACT,KAAQ,OACR,OAAU,UACV,OAAU,QACV,MAAS,QACT,OAAU,QACR,UAAa,YACb,WAAc,aAChB,QAAW,SACZ,EACA,OAAU,CACT,QAAW,UACX,QAAW,UACX,MAAS,UACT,MAAS,UACT,KAAQ,UACR,OAAU,SACV,OAAU,SACV,MAAS,SACT,OAAU,SACR,UAAa,aACb,WAAc,aAChB,QAAW,SACZ,EACA,OAAU,CACT,QAAW,UACX,QAAW,UACX,MAAS,QACT,MAAS,QACT,KAAQ,QACR,OAAU,SACV,OAAU,SACV,MAAS,SACT,OAAU,SACR,UAAa,YACb,WAAc,aAChB,QAAW,SACZ,EACA,MAAS,CACR,QAAW,UACX,QAAW,UACX,MAAS,QACT,MAAS,QACT,KAAQ,QACR,OAAU,SACV,OAAU,SACV,MAAS,QACT,OAAU,QACR,UAAa,YACb,WAAc,aAChB,QAAW,SACZ,EACA,OAAU,CACT,QAAW,UACX,QAAW,UACX,MAAS,QACT,MAAS,QACT,KAAQ,QACR,OAAU,SACV,OAAU,SACV,MAAS,QACT,OAAU,QACR,UAAa,YACb,WAAc,aAChB,QAAW,SACZ,EACC,WAAc,CACZ,QAAW,aACX,QAAW,aACX,MAAS,aACT,MAAS,aACT,KAAQ,aACR,OAAU,aACV,OAAU,aACV,MAAS,aACT,OAAU,aACV,UAAa,aACb,WAAc,aACd,QAAW,SACb,EACA,UAAa,CACX,QAAW,aACX,QAAW,YACX,MAAS,aACT,MAAS,YACT,KAAQ,YACR,OAAU,aACV,OAAU,YACV,MAAS,YACT,OAAU,YACV,UAAa,YACb,WAAc,aACd,QAAW,SACb,EACD,QAAW,CACV,QAAW,UACX,QAAW,UACX,MAAS,UACT,MAAS,UACT,KAAQ,UACR,OAAU,UACV,OAAU,UACV,MAAS,UACT,OAAU,UACR,UAAa,UACb,WAAc,UAChB,QAAW,SACZ,CACD,ICzKA,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAa,QAAS,oBAAqB,EAC3CC,GAAa,QAAS,iCAAkC,EACxDC,GAAkB,KAWtB,SAASC,IAAoB,CAC5B,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAKJ,IAHAN,EAAM,CAAC,EACPF,EAASJ,GAAYE,EAAgB,EACrCG,EAASD,EAAO,OACVQ,EAAI,EAAGA,EAAIP,EAAQO,IAAM,CAI9B,IAHAJ,EAAMJ,EAAQQ,CAAE,EAChBF,EAAIR,GAAiBM,CAAI,EACzBD,EAAM,CAAC,EACDI,EAAI,EAAGA,EAAIN,EAAQM,IACxBF,EAAML,EAAQO,CAAE,EAChBJ,EAAKE,CAAI,EAAIC,EAAGD,CAAI,EAErBH,EAAKE,CAAI,EAAID,CACd,CACA,OAAOD,CACR,CAwBA,SAASO,GAAgBC,EAAQC,EAAS,CACzC,IAAIL,EACJ,OAAK,UAAU,SAAW,EAClBP,GAAkB,EAErBF,GAAYC,GAAiBY,CAAO,IACxCJ,EAAIR,GAAiBY,CAAO,EACvBb,GAAYS,EAAGK,CAAO,GACnBL,EAAGK,CAAO,EAGZ,IACR,CAKAhB,GAAO,QAAUc,KCrGjB,IAAAG,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAe,KACfC,GAAe,KACfC,GAAa,KACbC,GAAa,KACbC,GAAY,KACZC,GAAc,KACdC,GAAc,KACdC,GAAa,KACbC,GAAoB,KACpBC,GAAiB,KACjBC,GAAkB,KAKlBC,GAAQ,CACX,aAAgBX,GAChB,aAAgBC,GAChB,WAAcE,GACd,YAAeG,GACf,WAAcJ,GACd,YAAeG,GACf,UAAaD,GACb,WAAcG,GACd,kBAAqBC,GACrB,eAAkBC,GAClB,gBAAmBC,EACpB,EAKAX,GAAO,QAAUY,KCtDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAU,QAAS,yBAA0B,EAC7CC,GAAQ,KAoBZ,SAASC,GAAkBC,EAAKC,EAAQ,CACvC,IAAIC,EACJ,OACCD,GACAA,EAAM,MACNJ,GAASI,EAAM,IAAK,IAEpBC,EAAOJ,GAAOG,EAAM,IAAK,EACpBC,GACG,IAAIA,EAAMD,EAAM,IAAK,EAGvBA,CACR,CAKAL,GAAO,QAAUG,KC7DjB,IAAAI,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,CAAAA,GAAA,SACC,QAAW,CACV,QAAW,EACX,QAAW,EACX,MAAS,EACT,MAAS,EACT,KAAQ,EACR,OAAU,EACV,OAAU,EACV,MAAS,EACT,OAAU,EACR,WAAc,EACd,UAAa,EACf,QAAW,CACZ,EACA,QAAW,CACV,QAAW,EACX,QAAW,EACX,MAAS,EACT,MAAS,EACT,KAAQ,EACR,OAAU,EACV,OAAU,EACV,MAAS,EACT,OAAU,EACR,WAAc,EACd,UAAa,EACf,QAAW,CACZ,EACA,MAAS,CACR,QAAW,EACX,QAAW,EACX,MAAS,EACT,MAAS,EACT,KAAQ,EACR,OAAU,EACV,OAAU,EACV,MAAS,EACT,OAAU,EACR,WAAc,EACd,UAAa,EACf,QAAW,CACZ,EACA,MAAS,CACR,QAAW,EACX,QAAW,EACX,MAAS,EACT,MAAS,EACT,KAAQ,EACR,OAAU,EACV,OAAU,EACV,MAAS,EACT,OAAU,EACR,WAAc,EACd,UAAa,EACf,QAAW,CACZ,EACA,KAAQ,CACP,QAAW,EACX,QAAW,EACX,MAAS,EACT,MAAS,EACT,KAAQ,EACR,OAAU,EACV,OAAU,EACV,MAAS,EACT,OAAU,EACR,WAAc,EACd,UAAa,EACf,QAAW,CACZ,EACA,OAAU,CACT,QAAW,EACX,QAAW,EACX,MAAS,EACT,MAAS,EACT,KAAQ,EACR,OAAU,EACV,OAAU,EACV,MAAS,EACT,OAAU,EACR,WAAc,EACd,UAAa,EACf,QAAW,CACZ,EACA,OAAU,CACT,QAAW,EACX,QAAW,EACX,MAAS,EACT,MAAS,EACT,KAAQ,EACR,OAAU,EACV,OAAU,EACV,MAAS,EACT,OAAU,EACR,WAAc,EACd,UAAa,EACf,QAAW,CACZ,EACA,MAAS,CACR,QAAW,EACX,QAAW,EACX,MAAS,EACT,MAAS,EACT,KAAQ,EACR,OAAU,EACV,OAAU,EACV,MAAS,EACT,OAAU,EACR,WAAc,EACd,UAAa,EACf,QAAW,CACZ,EACA,OAAU,CACT,QAAW,EACX,QAAW,EACX,MAAS,EACT,MAAS,EACT,KAAQ,EACR,OAAU,EACV,OAAU,EACV,MAAS,EACT,OAAU,EACR,WAAc,EACd,UAAa,EACf,QAAW,CACZ,EACC,WAAc,CACZ,QAAW,EACX,QAAW,EACX,MAAS,EACT,MAAS,EACT,KAAQ,EACR,OAAU,EACV,OAAU,EACV,MAAS,EACT,OAAU,EACV,WAAc,EACd,UAAa,EACb,QAAW,CACb,EACA,UAAa,CACX,QAAW,EACX,QAAW,EACX,MAAS,EACT,MAAS,EACT,KAAQ,EACR,OAAU,EACV,OAAU,EACV,MAAS,EACT,OAAU,EACV,WAAc,EACd,UAAa,EACb,QAAW,CACb,EACD,QAAW,CACV,QAAW,EACX,QAAW,EACX,MAAS,EACT,MAAS,EACT,KAAQ,EACR,OAAU,EACV,OAAU,EACV,MAAS,EACT,OAAU,EACR,WAAc,EACd,UAAa,EACf,QAAW,CACZ,CACD,ICzKA,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAa,QAAS,oBAAqB,EAC3CC,GAAa,QAAS,iCAAkC,EACxDC,GAAa,KAKbC,GAWJ,SAASC,IAAoB,CAC5B,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAKJ,IAHAN,EAAM,CAAC,EACPF,EAASL,GAAYE,EAAW,EAChCI,EAASD,EAAO,OACVQ,EAAI,EAAGA,EAAIP,EAAQO,IAAM,CAI9B,IAHAJ,EAAMJ,EAAQQ,CAAE,EAChBF,EAAIT,GAAYO,CAAI,EACpBD,EAAM,CAAC,EACDI,EAAI,EAAGA,EAAIN,EAAQM,IACxBF,EAAML,EAAQO,CAAE,EAChBJ,EAAKE,CAAI,EAAIC,EAAGD,CAAI,EAErBH,EAAKE,CAAI,EAAID,CACd,CACA,OAAOD,CACR,CAQA,SAASO,IAAgB,CACxB,IAAIT,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAKJ,IAHAN,EAAM,CAAC,EACPF,EAASL,GAAYE,EAAW,EAChCI,EAASD,EAAO,OACVQ,EAAI,EAAGA,EAAIP,EAAQO,IAAM,CAI9B,IAHAJ,EAAMJ,EAAQQ,CAAE,EAChBF,EAAIT,GAAYO,CAAI,EACpBD,EAAM,CAAC,EACDI,EAAI,EAAGA,EAAIN,EAAQM,IACxBF,EAAML,EAAQO,CAAE,EACXD,EAAGD,CAAI,IAAM,GACjBF,EAAI,KAAME,CAAI,EAGhBH,EAAKE,CAAI,EAAID,CACd,CACA,OAAOD,CACR,CAeA,SAASQ,GAAWC,EAAQ,CAC3B,OAAK,UAAU,SAAW,EAClBZ,GAAkB,GAErBD,KAAU,SAEdA,GAAQW,GAAc,GAElBb,GAAYE,GAAOa,CAAM,EACtBb,GAAOa,CAAM,EAAE,MAAM,EAEtB,KACR,CAKAjB,GAAO,QAAUgB,KCpIjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,CAAAA,GAAA,SACC,QAAW,CACV,QAAW,EACX,QAAW,EACX,MAAS,EACT,MAAS,EACT,KAAQ,EACR,OAAU,EACV,OAAU,EACV,MAAS,EACT,OAAU,EACR,WAAc,EACd,UAAa,EACf,QAAW,CACZ,EACA,QAAW,CACV,QAAW,EACX,QAAW,EACX,MAAS,EACT,MAAS,EACT,KAAQ,EACR,OAAU,EACV,OAAU,EACV,MAAS,EACT,OAAU,EACR,WAAc,EACd,UAAa,EACf,QAAW,CACZ,EACA,MAAS,CACR,QAAW,EACX,QAAW,EACX,MAAS,EACT,MAAS,EACT,KAAQ,EACR,OAAU,EACV,OAAU,EACV,MAAS,EACT,OAAU,EACR,WAAc,EACd,UAAa,EACf,QAAW,CACZ,EACA,MAAS,CACR,QAAW,EACX,QAAW,EACX,MAAS,EACT,MAAS,EACT,KAAQ,EACR,OAAU,EACV,OAAU,EACV,MAAS,EACT,OAAU,EACR,WAAc,EACd,UAAa,EACf,QAAW,CACZ,EACA,KAAQ,CACP,QAAW,EACX,QAAW,EACX,MAAS,EACT,MAAS,EACT,KAAQ,EACR,OAAU,EACV,OAAU,EACV,MAAS,EACT,OAAU,EACR,WAAc,EACd,UAAa,EACf,QAAW,CACZ,EACA,OAAU,CACT,QAAW,EACX,QAAW,EACX,MAAS,EACT,MAAS,EACT,KAAQ,EACR,OAAU,EACV,OAAU,EACV,MAAS,EACT,OAAU,EACR,WAAc,EACd,UAAa,EACf,QAAW,CACZ,EACA,OAAU,CACT,QAAW,EACX,QAAW,EACX,MAAS,EACT,MAAS,EACT,KAAQ,EACR,OAAU,EACV,OAAU,EACV,MAAS,EACT,OAAU,EACR,WAAc,EACd,UAAa,EACf,QAAW,CACZ,EACA,MAAS,CACR,QAAW,EACX,QAAW,EACX,MAAS,EACT,MAAS,EACT,KAAQ,EACR,OAAU,EACV,OAAU,EACV,MAAS,EACT,OAAU,EACR,WAAc,EACd,UAAa,EACf,QAAW,CACZ,EACA,OAAU,CACT,QAAW,EACX,QAAW,EACX,MAAS,EACT,MAAS,EACT,KAAQ,EACR,OAAU,EACV,OAAU,EACV,MAAS,EACT,OAAU,EACR,WAAc,EACd,UAAa,EACf,QAAW,CACZ,EACC,WAAc,CACZ,QAAW,EACX,QAAW,EACX,MAAS,EACT,MAAS,EACT,KAAQ,EACR,OAAU,EACV,OAAU,EACV,MAAS,EACT,OAAU,EACV,WAAc,EACd,UAAa,EACb,QAAW,CACb,EACA,UAAa,CACX,QAAW,EACX,QAAW,EACX,MAAS,EACT,MAAS,EACT,KAAQ,EACR,OAAU,EACV,OAAU,EACV,MAAS,EACT,OAAU,EACV,WAAc,EACd,UAAa,EACb,QAAW,CACb,EACD,QAAW,CACV,QAAW,EACX,QAAW,EACX,MAAS,EACT,MAAS,EACT,KAAQ,EACR,OAAU,EACV,OAAU,EACV,MAAS,EACT,OAAU,EACR,WAAc,EACd,UAAa,EACf,QAAW,CACZ,CACD,ICzKA,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAa,QAAS,oBAAqB,EAC3CC,GAAa,QAAS,iCAAkC,EACxDC,GAAkB,KAKlBC,GAWJ,SAASC,IAAoB,CAC5B,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAKJ,IAHAN,EAAM,CAAC,EACPF,EAASL,GAAYE,EAAgB,EACrCI,EAASD,EAAO,OACVQ,EAAI,EAAGA,EAAIP,EAAQO,IAAM,CAI9B,IAHAJ,EAAMJ,EAAQQ,CAAE,EAChBF,EAAIT,GAAiBO,CAAI,EACzBD,EAAM,CAAC,EACDI,EAAI,EAAGA,EAAIN,EAAQM,IACxBF,EAAML,EAAQO,CAAE,EAChBJ,EAAKE,CAAI,EAAIC,EAAGD,CAAI,EAErBH,EAAKE,CAAI,EAAID,CACd,CACA,OAAOD,CACR,CAQA,SAASO,IAAgB,CACxB,IAAIT,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAKJ,IAHAN,EAAM,CAAC,EACPF,EAASL,GAAYE,EAAgB,EACrCI,EAASD,EAAO,OACVQ,EAAI,EAAGA,EAAIP,EAAQO,IAAM,CAI9B,IAHAJ,EAAMJ,EAAQQ,CAAE,EAChBF,EAAIT,GAAiBO,CAAI,EACzBD,EAAM,CAAC,EACDI,EAAI,EAAGA,EAAIN,EAAQM,IACxBF,EAAML,EAAQO,CAAE,EACXD,EAAGD,CAAI,IAAM,GACjBF,EAAI,KAAME,CAAI,EAGhBH,EAAKE,CAAI,EAAID,CACd,CACA,OAAOD,CACR,CAeA,SAASQ,GAAeC,EAAQ,CAC/B,OAAK,UAAU,SAAW,EAClBZ,GAAkB,GAErBD,KAAU,SAEdA,GAAQW,GAAc,GAElBb,GAAYE,GAAOa,CAAM,EACtBb,GAAOa,CAAM,EAAE,MAAM,EAEtB,KACR,CAKAjB,GAAO,QAAUgB,KCpIjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAoB,QAAS,qCAAsC,EACnEC,GAAS,QAAS,uBAAwB,EAa9C,SAASC,GAASC,EAAOC,EAAM,CAC9B,IAAIC,EAAID,EAAK,CAAE,EACf,OAAKJ,GAAmBK,CAAE,IACzBF,EAAM,KAAME,EAAE,MAAO,EACrBH,GAASC,EAAOE,CAAE,GAEZF,CACR,CAaA,SAASG,GAAOC,EAAOJ,EAAOK,EAAGJ,EAAKK,EAAM,CAC3C,IAAIC,EACAL,EACAM,EAMJ,IAHAD,EAAMP,EAAOK,CAAE,EAGTG,EAAI,EAAGA,EAAIP,EAAI,OAAQO,IAAM,CAIlC,GAHAN,EAAID,EAAKO,CAAE,EAGN,CAACX,GAAmBK,CAAE,GAAKA,EAAE,SAAWK,EAE5C,OAAOF,EAGR,GAAKC,IACJJ,EAAIC,GAAOC,EAAOJ,EAAOK,EAAE,EAAGH,EAAGG,EAAE,EAAID,EAAM,CAAE,EAC1CF,EAAIE,GAER,OAAOF,CAGV,CACA,OAAOE,CACR,CA8BA,SAASK,GAAYR,EAAM,CAC1B,IAAID,EACAI,EAEJ,GAAK,CAACP,GAAmBI,CAAI,EAC5B,MAAM,IAAI,UAAWH,GAAQ,oEAAqEG,CAAI,CAAE,EAGzG,OAAAD,EAAQ,CAAEC,EAAI,MAAO,EAGrBF,GAASC,EAAOC,CAAI,EACpBG,EAAQJ,EAAM,OAGTI,EAAQ,IAEZJ,EAAM,OAASG,GAAOC,EAAOJ,EAAO,EAAGC,EAAKG,EAAQ,CAAE,GAEhDJ,CACR,CAKAJ,GAAO,QAAUa,KC1IjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoDA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCzDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,OAAO,mBAAsB,WAAe,kBAAoB,KAK7ED,GAAO,QAAUC,KC3BjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA4BA,SAASC,GAAUC,EAAO,CACzB,MAAM,IAAI,MAAO,qPAAsP,CACxQ,CAKAF,GAAO,QAAUC,KCnCjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAuCA,IAAIC,GAA8B,QAAS,8CAA+C,EACtFC,GAAU,KACVC,GAAW,KAKXC,GACCH,GAA4B,EAChCG,GAAOF,GAEPE,GAAOD,GAMRH,GAAO,QAAUI,KCxDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAc,QAAS,uDAAwD,EAC/EC,GAAa,QAAS,iCAAkC,EACxDC,GAAa,QAAS,4BAA6B,EACnDC,GAAe,QAAS,8BAA+B,EACvDC,GAAW,QAAS,gCAAiC,EACrDC,GAAuB,QAAS,uCAAwC,EAAE,YAC1EC,GAAkB,IAClBC,GAAiB,QAAS,yBAA0B,EACpDC,GAAiB,KACjBC,GAAS,KACTC,GAAQ,IACRC,GAAS,QAAS,uBAAwB,EAkC9C,SAASC,GAAoBC,EAAM,CAClC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACJ,GAAK,CAACpB,GAAcU,CAAI,EACvB,MAAM,IAAI,UAAWF,GAAQ,8EAA+EE,CAAI,CAAE,EAMnH,GAJAI,EAAO,CACN,KAAQ,MACR,IAAO,CACR,EACK,UAAU,OAAS,EACvB,GAAKb,GAAU,UAAW,CAAE,CAAE,EAAI,CAEjC,GADAW,EAAU,UAAW,CAAE,EAClB,UAAU,OAAS,EAAI,CAE3B,GADAK,EAAM,UAAW,CAAE,EACd,CAAClB,GAAYkB,CAAI,EACrB,MAAM,IAAI,UAAWT,GAAQ,uEAAwES,CAAI,CAAE,EAE5GN,EAAU,UAAW,CAAE,CACxB,CACA,GAAKb,GAAYc,EAAS,MAAO,IAChCE,EAAK,KAAOF,EAAQ,KACf,CAACV,GAAsBU,EAAQ,IAAK,GACxC,MAAM,IAAI,UAAWJ,GAAQ,2EAA4E,OAAQI,EAAQ,IAAK,CAAE,EAGlI,GAAKd,GAAYc,EAAS,KAAM,IAC/BE,EAAK,IAAMF,EAAQ,IACdA,EAAQ,MAAQ,GAAKA,EAAQ,MAAQ,IACzC,MAAM,IAAI,UAAWJ,GAAQ,wEAAyE,MAAOI,EAAQ,GAAI,CAAE,CAG9H,KAAO,CAEN,GADAK,EAAM,UAAW,CAAE,EACd,CAAClB,GAAYkB,CAAI,EACrB,MAAM,IAAI,UAAWT,GAAQ,iGAAkGS,CAAI,CAAE,EAEtIN,EAAU,UAAW,CAAE,CACxB,CAED,OAAAE,EAAQ,EAGRE,EAAO,CAAC,EACHE,EACCH,EAAK,MAAQ,GACjBM,EAAI,GACJvB,GAAakB,EAAM,OAAQM,CAAO,IAElCD,EAAIV,EAAI,OACRb,GAAakB,EAAM,OAAQO,CAAO,GAExBR,EAAK,MAAQ,GACxBM,EAAI,GACJvB,GAAakB,EAAM,OAAQQ,CAAO,IAElCH,EAAIV,EAAI,OACRb,GAAakB,EAAM,OAAQS,CAAO,GAEnC3B,GAAakB,EAAM,SAAUU,CAAI,EAG5BrB,IACJP,GAAakB,EAAMX,GAAgBsB,CAAQ,EAG5CP,EAAKZ,GAAOG,CAAI,EACXP,GAAiBO,CAAI,EACzBQ,EAAMb,GAAgBc,CAAG,EAEzBD,EAAMZ,GAAQa,CAAG,EAEXJ,EAQP,SAASM,GAAS,CAGjB,OAFAD,GAAKA,EAAE,GAAKV,EAAI,OAChBG,GAAS,EACJG,GAAOH,EAAQC,EAAK,MAAQJ,EAAI,SAAW,EACxC,CACN,KAAQ,EACT,EAEM,CACN,MAASO,EAAI,KAAMN,EAASO,EAAKR,EAAKU,CAAE,EAAGA,EAAGP,EAAOH,CAAI,EACzD,KAAQ,EACT,CACD,CAQA,SAASY,GAAS,CAMjB,OALAF,GAAK,EACAA,EAAI,IACRA,GAAKV,EAAI,QAEVG,GAAS,EACJG,GAAOH,EAAQC,EAAK,MAAQJ,EAAI,SAAW,EACxC,CACN,KAAQ,EACT,EAEM,CACN,MAASO,EAAI,KAAMN,EAASO,EAAKR,EAAKU,CAAE,EAAGA,EAAGP,EAAOH,CAAI,EACzD,KAAQ,EACT,CACD,CAQA,SAASa,GAAS,CAGjB,OAFAH,GAAKA,EAAE,GAAKV,EAAI,OAChBG,GAAS,EACJG,GAAOH,EAAQC,EAAK,MAAQJ,EAAI,SAAW,EACxC,CACN,KAAQ,EACT,EAEM,CACN,MAASQ,EAAKR,EAAKU,CAAE,EACrB,KAAQ,EACT,CACD,CAQA,SAASI,GAAS,CAMjB,OALAJ,GAAK,EACAA,EAAI,IACRA,GAAKV,EAAI,QAEVG,GAAS,EACJG,GAAOH,EAAQC,EAAK,MAAQJ,EAAI,SAAW,EACxC,CACN,KAAQ,EACT,EAEM,CACN,MAASQ,EAAKR,EAAKU,CAAE,EACrB,KAAQ,EACT,CACD,CASA,SAASK,EAAKE,EAAQ,CAErB,OADAX,EAAM,GACD,UAAU,OACP,CACN,MAASW,EACT,KAAQ,EACT,EAEM,CACN,KAAQ,EACT,CACD,CAQA,SAASD,GAAU,CAClB,OAAKT,EACGR,GAAoBC,EAAKI,EAAMG,EAAKN,CAAQ,EAE7CF,GAAoBC,EAAKI,CAAK,CACtC,CACD,CAKAlB,GAAO,QAAUa,KChRjB,IAAAmB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA4CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCjDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAc,QAAS,uDAAwD,EAC/EC,GAAa,QAAS,4BAA6B,EACnDC,GAAe,QAAS,8BAA+B,EACvDC,GAAkB,IAClBC,GAAiB,QAAS,yBAA0B,EACpDC,GAAiB,KACjBC,GAAS,KACTC,GAAQ,IACRC,GAAS,QAAS,uBAAwB,EA6B9C,SAASC,GAAgBC,EAAM,CAC9B,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACJ,GAAK,CAACf,GAAcQ,CAAI,EACvB,MAAM,IAAI,UAAWF,GAAQ,8EAA+EE,CAAI,CAAE,EAEnH,GAAK,UAAU,OAAS,EAAI,CAE3B,GADAI,EAAM,UAAW,CAAE,EACd,CAACb,GAAYa,CAAI,EACrB,MAAM,IAAI,UAAWN,GAAQ,qEAAsEM,CAAI,CAAE,EAE1GH,EAAU,UAAW,CAAE,CACxB,CACA,OAAAM,EAAI,GAGJL,EAAO,CAAC,EACHE,EACJd,GAAaY,EAAM,OAAQM,CAAM,EAEjClB,GAAaY,EAAM,OAAQO,CAAM,EAElCnB,GAAaY,EAAM,SAAUQ,CAAI,EAG5BhB,IACJJ,GAAaY,EAAMR,GAAgBiB,CAAQ,EAG5CL,EAAKT,GAAOG,CAAI,EACXP,GAAiBO,CAAI,EACzBK,EAAMV,GAAgBW,CAAG,EAEzBD,EAAMT,GAAQU,CAAG,EAEXJ,EAQP,SAASM,GAAQ,CAEhB,OADAD,GAAK,EACAJ,GAAOI,GAAKP,EAAI,OACb,CACN,KAAQ,EACT,EAEM,CACN,MAASI,EAAI,KAAMH,EAASI,EAAKL,EAAKO,CAAE,EAAGA,EAAGP,CAAI,EAClD,KAAQ,EACT,CACD,CAQA,SAASS,GAAQ,CAEhB,OADAF,GAAK,EACAJ,GAAOI,GAAKP,EAAI,OACb,CACN,KAAQ,EACT,EAEM,CACN,MAASK,EAAKL,EAAKO,CAAE,EACrB,KAAQ,EACT,CACD,CASA,SAASG,EAAKE,EAAQ,CAErB,OADAT,EAAM,GACD,UAAU,OACP,CACN,MAASS,EACT,KAAQ,EACT,EAEM,CACN,KAAQ,EACT,CACD,CAQA,SAASD,GAAU,CAClB,OAAKP,EACGL,GAAgBC,EAAKI,EAAKH,CAAQ,EAEnCF,GAAgBC,CAAI,CAC5B,CACD,CAKAX,GAAO,QAAUU,KChLjB,IAAAc,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA4CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCjDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAc,QAAS,uDAAwD,EAC/EC,GAAa,QAAS,4BAA6B,EACnDC,GAAe,QAAS,8BAA+B,EACvDC,GAAkB,IAClBC,GAAiB,QAAS,yBAA0B,EACpDC,GAAiB,KACjBC,GAAS,KACTC,GAAQ,IACRC,GAAS,QAAS,uBAAwB,EAiC9C,SAASC,GAAqBC,EAAM,CACnC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACJ,GAAK,CAAChB,GAAcQ,CAAI,EACvB,MAAM,IAAI,UAAWF,GAAQ,8EAA+EE,CAAI,CAAE,EAEnH,GAAK,UAAU,OAAS,EAAI,CAE3B,GADAI,EAAM,UAAW,CAAE,EACd,CAACb,GAAYa,CAAI,EACrB,MAAM,IAAI,UAAWN,GAAQ,qEAAsEM,CAAI,CAAE,EAE1GH,EAAU,UAAW,CAAE,CACxB,CACA,OAAAI,EAAML,EAAI,OACVQ,EAAIH,EAGJH,EAAO,CAAC,EACHE,EACJd,GAAaY,EAAM,OAAQO,CAAM,EAEjCnB,GAAaY,EAAM,OAAQQ,CAAM,EAElCpB,GAAaY,EAAM,SAAUS,CAAI,EAG5BjB,IACJJ,GAAaY,EAAMR,GAAgBkB,CAAQ,EAG5CL,EAAKV,GAAOG,CAAI,EACXP,GAAiBO,CAAI,EACzBM,EAAMX,GAAgBY,CAAG,EAEzBD,EAAMV,GAAQW,CAAG,EAEXL,EAQP,SAASO,GAAQ,CAGhB,OAFAD,GAAKR,EAAI,OAASK,EAAM,EACxBA,EAAML,EAAI,OACLG,GAAOK,EAAI,GACfL,EAAM,GACC,CACN,KAAQ,EACT,GAEM,CACN,MAASC,EAAI,KAAMH,EAASK,EAAKN,EAAKQ,CAAE,EAAGA,EAAGR,CAAI,EAClD,KAAQ,EACT,CACD,CAQA,SAASU,GAAQ,CAGhB,OAFAF,GAAKR,EAAI,OAASK,EAAM,EACxBA,EAAML,EAAI,OACLG,GAAOK,EAAI,GACfL,EAAM,GACC,CACN,KAAQ,EACT,GAEM,CACN,MAASG,EAAKN,EAAKQ,CAAE,EACrB,KAAQ,EACT,CACD,CASA,SAASG,EAAKE,EAAQ,CAErB,OADAV,EAAM,GACD,UAAU,OACP,CACN,MAASU,EACT,KAAQ,EACT,EAEM,CACN,KAAQ,EACT,CACD,CAQA,SAASD,GAAU,CAClB,OAAKR,EACGL,GAAqBC,EAAKI,EAAKH,CAAQ,EAExCF,GAAqBC,CAAI,CACjC,CACD,CAKAX,GAAO,QAAUU,KC1LjB,IAAAe,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA4CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCjDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAY,KACZC,GAAa,KACbC,GAAoB,KACpBC,GAAa,KACbC,GAAc,KACdC,GAAa,KACbC,GAAc,KACdC,GAAe,KACfC,GAAe,KACfC,GAAiB,KACjBC,GAAkB,KAKlBC,GAAQ,CACX,CAAEH,GAAc,cAAe,EAC/B,CAAED,GAAc,cAAe,EAC/B,CAAEF,GAAY,YAAa,EAC3B,CAAEC,GAAa,aAAc,EAC7B,CAAEH,GAAY,YAAa,EAC3B,CAAEC,GAAa,aAAc,EAC7B,CAAEJ,GAAW,WAAY,EACzB,CAAEC,GAAY,YAAa,EAC3B,CAAEC,GAAmB,mBAAoB,EACzC,CAAEO,GAAgB,gBAAiB,EACnC,CAAEC,GAAiB,iBAAkB,CACtC,EAKAX,GAAO,QAAUY,KCtDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAa,QAAS,4BAA6B,EACnDC,GAAW,QAAS,gCAAiC,EACrDC,GAAiB,QAAS,gCAAiC,EAC3DC,GAAQ,KAmBZ,SAASC,GAAUC,EAAM,CACxB,IAAIC,EACAC,EAGJ,IAAMA,EAAI,EAAGA,EAAIJ,GAAM,OAAQI,IAC9B,GAAKP,GAAYK,EAAKF,GAAOI,CAAE,EAAG,CAAE,CAAE,EACrC,OAAOJ,GAAOI,CAAE,EAAG,CAAE,EAIvB,KAAQF,GAAM,CAEb,IADAC,EAAIL,GAAUI,CAAI,EACZE,EAAI,EAAGA,EAAIJ,GAAM,OAAQI,IAC9B,GAAKD,IAAMH,GAAOI,CAAE,EAAG,CAAE,EACxB,OAAOJ,GAAOI,CAAE,EAAG,CAAE,EAGvBF,EAAMH,GAAgBG,CAAI,CAC3B,CACD,CAKAN,GAAO,QAAUK,KCrEjB,IAAAI,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAe,QAAS,+BAAgC,EACxDC,GAAsB,QAAS,uCAAwC,EACvEC,GAAgB,QAAS,4CAA6C,EACtEC,GAAiB,QAAS,6CAA8C,EACxEC,GAAS,QAAS,uBAAwB,EAC1CC,GAAW,KAyBf,SAASC,GAAiBC,EAAM,CAC/B,IAAIC,EACAC,EACA,EAEJ,GAAKT,GAAcO,CAAI,EACtBC,EAAOD,UACIN,GAAqBM,CAAI,EAC/BA,EAAI,oBAAsB,EAC9BC,EAAON,GAAeK,EAAK,CAAE,EAE7BC,EAAOL,GAAgBI,EAAK,CAAE,MAG/B,OAAM,IAAI,UAAWH,GAAQ,6DAA8DG,CAAI,CAAE,EAMlG,IAJAE,EAAM,CACL,KAAQJ,GAAUE,CAAI,EACtB,KAAQ,CAAC,CACV,EACM,EAAI,EAAG,EAAIC,EAAK,OAAQ,IAC7BC,EAAI,KAAK,KAAMD,EAAM,CAAE,CAAE,EAE1B,OAAOC,CACR,CAKAV,GAAO,QAAUO,KCjFjB,IAAAI,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAoCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCzCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAc,QAAS,uDAAwD,EAC/EC,GAAa,QAAS,4BAA6B,EACnDC,GAAe,QAAS,8BAA+B,EACvDC,GAAkB,IAClBC,GAAiB,QAAS,yBAA0B,EACpDC,GAAiB,KACjBC,GAAS,KACTC,GAAQ,IACRC,GAAS,QAAS,uBAAwB,EA2B9C,SAASC,GAAsBC,EAAM,CACpC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACJ,GAAK,CAACf,GAAcQ,CAAI,EACvB,MAAM,IAAI,UAAWF,GAAQ,8EAA+EE,CAAI,CAAE,EAEnH,GAAK,UAAU,OAAS,EAAI,CAE3B,GADAI,EAAM,UAAW,CAAE,EACd,CAACb,GAAYa,CAAI,EACrB,MAAM,IAAI,UAAWN,GAAQ,qEAAsEM,CAAI,CAAE,EAE1GH,EAAU,UAAW,CAAE,CACxB,CACA,OAAAM,EAAI,GAGJL,EAAO,CAAC,EACHE,EACJd,GAAaY,EAAM,OAAQM,CAAM,EAEjClB,GAAaY,EAAM,OAAQO,CAAM,EAElCnB,GAAaY,EAAM,SAAUQ,CAAI,EAG5BhB,IACJJ,GAAaY,EAAMR,GAAgBiB,CAAQ,EAG5CL,EAAKT,GAAOG,CAAI,EACXP,GAAiBO,CAAI,EACzBK,EAAMV,GAAgBW,CAAG,EAEzBD,EAAMT,GAAQU,CAAG,EAEXJ,EAQP,SAASM,GAAQ,CAChB,IAAII,EACJ,GAAKT,EACJ,MAAO,CACN,KAAQ,EACT,EAID,IAFAS,EAAMZ,EAAI,OACVO,GAAK,EACGA,EAAIK,GAAOP,EAAKL,EAAKO,CAAE,IAAM,QACpCA,GAAK,EAEN,OAAKA,GAAKK,GACTT,EAAM,GACC,CACN,KAAQ,EACT,GAEM,CACN,MAASC,EAAI,KAAMH,EAASI,EAAKL,EAAKO,CAAE,EAAGA,EAAGP,CAAI,EAClD,KAAQ,EACT,CACD,CAQA,SAASS,GAAQ,CAChB,IAAIG,EACJ,GAAKT,EACJ,MAAO,CACN,KAAQ,EACT,EAID,IAFAS,EAAMZ,EAAI,OACVO,GAAK,EACGA,EAAIK,GAAOP,EAAKL,EAAKO,CAAE,IAAM,QACpCA,GAAK,EAEN,OAAKA,GAAKK,GACTT,EAAM,GACC,CACN,KAAQ,EACT,GAEM,CACN,MAASE,EAAKL,EAAKO,CAAE,EACrB,KAAQ,EACT,CACD,CASA,SAASG,EAAKG,EAAQ,CAErB,OADAV,EAAM,GACD,UAAU,OACP,CACN,MAASU,EACT,KAAQ,EACT,EAEM,CACN,KAAQ,EACT,CACD,CAQA,SAASF,GAAU,CAClB,OAAKP,EACGL,GAAsBC,EAAKI,EAAKH,CAAQ,EAEzCF,GAAsBC,CAAI,CAClC,CACD,CAKAX,GAAO,QAAUU,KCpMjB,IAAAe,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA0CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC/CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAc,QAAS,uDAAwD,EAC/EC,GAAa,QAAS,4BAA6B,EACnDC,GAAe,QAAS,8BAA+B,EACvDC,GAAkB,IAClBC,GAAiB,QAAS,yBAA0B,EACpDC,GAAiB,KACjBC,GAAS,KACTC,GAAQ,IACRC,GAAS,QAAS,uBAAwB,EA+B9C,SAASC,GAA2BC,EAAM,CACzC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACJ,GAAK,CAAChB,GAAcQ,CAAI,EACvB,MAAM,IAAI,UAAWF,GAAQ,8EAA+EE,CAAI,CAAE,EAEnH,GAAK,UAAU,OAAS,EAAI,CAE3B,GADAI,EAAM,UAAW,CAAE,EACd,CAACb,GAAYa,CAAI,EACrB,MAAM,IAAI,UAAWN,GAAQ,qEAAsEM,CAAI,CAAE,EAE1GH,EAAU,UAAW,CAAE,CACxB,CACA,OAAAI,EAAML,EAAI,OACVQ,EAAIH,EAGJH,EAAO,CAAC,EACHE,EACJd,GAAaY,EAAM,OAAQO,CAAM,EAEjCnB,GAAaY,EAAM,OAAQQ,CAAM,EAElCpB,GAAaY,EAAM,SAAUS,CAAI,EAG5BjB,IACJJ,GAAaY,EAAMR,GAAgBkB,CAAQ,EAG5CL,EAAKV,GAAOG,CAAI,EACXP,GAAiBO,CAAI,EACzBM,EAAMX,GAAgBY,CAAG,EAEzBD,EAAMV,GAAQW,CAAG,EAEXL,EAQP,SAASO,GAAQ,CAChB,GAAKN,EACJ,MAAO,CACN,KAAQ,EACT,EAID,IAFAK,GAAKR,EAAI,OAASK,EAAM,EACxBA,EAAML,EAAI,OACFQ,GAAK,GAAKF,EAAKN,EAAKQ,CAAE,IAAM,QACnCA,GAAK,EAEN,OAAKA,EAAI,GACRL,EAAM,GACC,CACN,KAAQ,EACT,GAEM,CACN,MAASC,EAAI,KAAMH,EAASK,EAAKN,EAAKQ,CAAE,EAAGA,EAAGR,CAAI,EAClD,KAAQ,EACT,CACD,CAQA,SAASU,GAAQ,CAChB,GAAKP,EACJ,MAAO,CACN,KAAQ,EACT,EAID,IAFAK,GAAKR,EAAI,OAASK,EAAM,EACxBA,EAAML,EAAI,OACFQ,GAAK,GAAKF,EAAKN,EAAKQ,CAAE,IAAM,QACnCA,GAAK,EAEN,OAAKA,EAAI,GACRL,EAAM,GACC,CACN,KAAQ,EACT,GAEM,CACN,MAASG,EAAKN,EAAKQ,CAAE,EACrB,KAAQ,EACT,CACD,CASA,SAASG,EAAKE,EAAQ,CAErB,OADAV,EAAM,GACD,UAAU,OACP,CACN,MAASU,EACT,KAAQ,EACT,EAEM,CACN,KAAQ,EACT,CACD,CAQA,SAASD,GAAU,CAClB,OAAKR,EACGL,GAA2BC,EAAKI,EAAKH,CAAQ,EAE9CF,GAA2BC,CAAI,CACvC,CACD,CAKAX,GAAO,QAAUU,KCxMjB,IAAAe,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA0CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC/CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAc,QAAS,uDAAwD,EAC/EC,GAAa,QAAS,4BAA6B,EACnDC,GAAe,QAAS,8BAA+B,EACvDC,GAAuB,QAAS,uCAAwC,EAAE,YAC1EC,GAAY,QAAS,2BAA4B,EAAE,YACnDC,GAAkB,IAClBC,GAAiB,QAAS,yBAA0B,EACpDC,GAAiB,KACjBC,GAAS,KACTC,GAAQ,IACRC,GAAS,QAAS,uBAAwB,EAyC9C,SAASC,GAAuBC,EAAGC,EAAKC,EAAQC,EAAS,CACxD,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACJ,GAAK,CAACpB,GAAsBS,CAAE,EAC7B,MAAM,IAAI,UAAWF,GAAQ,+EAAgFE,CAAE,CAAE,EAElH,GAAK,CAACV,GAAcW,CAAI,EACvB,MAAM,IAAI,UAAWH,GAAQ,+EAAgFG,CAAI,CAAE,EAEpH,GAAK,CAACT,GAAWU,CAAO,EACvB,MAAM,IAAI,UAAWJ,GAAQ,oEAAqEI,CAAO,CAAE,EAE5G,GAAK,CAACX,GAAsBY,CAAO,EAClC,MAAM,IAAI,UAAWL,GAAQ,gFAAiFK,CAAO,CAAE,EAExH,GAAK,UAAU,OAAS,EAAI,CAE3B,GADAI,EAAM,UAAW,CAAE,EACd,CAAClB,GAAYkB,CAAI,EACrB,MAAM,IAAI,UAAWT,GAAQ,oEAAqES,CAAI,CAAE,EAEzGH,EAAU,UAAW,CAAE,CACxB,CACA,OAAAI,EAAML,EACNQ,EAAI,GAGJN,EAAO,CAAC,EACHE,EACJnB,GAAaiB,EAAM,OAAQO,CAAM,EAEjCxB,GAAaiB,EAAM,OAAQQ,CAAM,EAElCzB,GAAaiB,EAAM,SAAUS,CAAI,EAG5BpB,IACJN,GAAaiB,EAAMX,GAAgBqB,CAAQ,EAG5CL,EAAKb,GAAOI,CAAI,EACXR,GAAiBQ,CAAI,EACzBQ,EAAMd,GAAgBe,CAAG,EAEzBD,EAAMb,GAAQc,CAAG,EAEXL,EAQP,SAASO,GAAQ,CAChB,IAAII,EAEJ,OADAL,GAAK,EACAL,GAAOK,GAAKX,EACT,CACN,KAAQ,EACT,GAEDgB,EAAIT,EAAI,KAAMH,EAASK,EAAKR,EAAKO,CAAI,EAAGA,EAAKG,EAAGV,CAAI,EACpDO,GAAON,EACA,CACN,MAASc,EACT,KAAQ,EACT,EACD,CAQA,SAASH,GAAQ,CAChB,IAAIG,EAEJ,OADAL,GAAK,EACAL,GAAOK,GAAKX,EACT,CACN,KAAQ,EACT,GAEDgB,EAAIP,EAAKR,EAAKO,CAAI,EAClBA,GAAON,EACA,CACN,MAASc,EACT,KAAQ,EACT,EACD,CASA,SAASF,EAAKG,EAAQ,CAErB,OADAX,EAAM,GACD,UAAU,OACP,CACN,MAASW,EACT,KAAQ,EACT,EAEM,CACN,KAAQ,EACT,CACD,CAQA,SAASF,GAAU,CAClB,OAAKR,EACGR,GAAuBC,EAAGC,EAAKC,EAAQC,EAAQI,EAAKH,CAAQ,EAE7DL,GAAuBC,EAAGC,EAAKC,EAAQC,CAAO,CACtD,CACD,CAKAhB,GAAO,QAAUY,KC/MjB,IAAAmB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkDA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAc,QAAS,uDAAwD,EAC/EC,GAAa,QAAS,4BAA6B,EACnDC,GAAe,QAAS,8BAA+B,EACvDC,GAAY,QAAS,2BAA4B,EAAE,YACnDC,GAAkB,IAClBC,GAAiB,QAAS,yBAA0B,EACpDC,GAAiB,KACjBC,GAAS,KACTC,GAAQ,IACRC,GAAS,QAAS,uBAAwB,EA+B9C,SAASC,GAAoBC,EAAM,CAClC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACJ,GAAK,CAACnB,GAAcS,CAAI,EACvB,MAAM,IAAI,UAAWF,GAAQ,8EAA+EE,CAAI,CAAE,EAGnH,GADAG,EAAQ,UAAU,OACbA,IAAU,EACdD,EAAQ,EACRK,EAAMP,EAAI,eACCG,IAAU,EAChBb,GAAY,UAAW,CAAE,CAAE,GAC/BY,EAAQ,EACRI,EAAM,UAAW,CAAE,GAEnBJ,EAAQ,UAAW,CAAE,EAEtBK,EAAMP,EAAI,eACCG,IAAU,EAChBb,GAAY,UAAW,CAAE,CAAE,GAC/BY,EAAQ,EACRK,EAAMP,EAAI,OACVM,EAAM,UAAW,CAAE,EACnBL,EAAU,UAAW,CAAE,GACZX,GAAY,UAAW,CAAE,CAAE,GACtCY,EAAQ,UAAW,CAAE,EACrBK,EAAMP,EAAI,OACVM,EAAM,UAAW,CAAE,IAEnBJ,EAAQ,UAAW,CAAE,EACrBK,EAAM,UAAW,CAAE,OAEd,CAIN,GAHAL,EAAQ,UAAW,CAAE,EACrBK,EAAM,UAAW,CAAE,EACnBD,EAAM,UAAW,CAAE,EACd,CAAChB,GAAYgB,CAAI,EACrB,MAAM,IAAI,UAAWR,GAAQ,qEAAsEQ,CAAI,CAAE,EAE1GL,EAAU,UAAW,CAAE,CACxB,CACA,GAAK,CAACT,GAAWU,CAAM,EACtB,MAAM,IAAI,UAAWJ,GAAQ,2GAA4GI,CAAM,CAAE,EAElJ,GAAK,CAACV,GAAWe,CAAI,EACpB,MAAM,IAAI,UAAWT,GAAQ,wGAAyGS,CAAI,CAAE,EAE7I,OAAKA,EAAM,GACVA,EAAMP,EAAI,OAASO,EACdA,EAAM,IACVA,EAAM,IAEIA,EAAMP,EAAI,SACrBO,EAAMP,EAAI,QAENE,EAAQ,IACZA,EAAQF,EAAI,OAASE,EAChBA,EAAQ,IACZA,EAAQ,IAGVQ,EAAIR,EAAQ,EAGZE,EAAO,CAAC,EACHE,EACJjB,GAAae,EAAM,OAAQO,CAAM,EAEjCtB,GAAae,EAAM,OAAQQ,CAAM,EAElCvB,GAAae,EAAM,SAAUS,CAAO,EAG/BnB,IACJL,GAAae,EAAMV,GAAgBoB,CAAQ,EAG5CL,EAAKZ,GAAOG,CAAI,EACXP,GAAiBO,CAAI,EACzBQ,EAAMb,GAAgBc,CAAG,EAEzBD,EAAMZ,GAAQa,CAAG,EAEXL,EAQP,SAASO,GAAQ,CAEhB,OADAD,GAAK,EACAL,GAAOK,GAAKH,EACT,CACN,KAAQ,EACT,EAEM,CACN,MAASD,EAAI,KAAML,EAASO,EAAKR,EAAKU,CAAE,EAAGA,EAAGA,EAAER,EAAOF,CAAI,EAC3D,KAAQ,EACT,CACD,CAQA,SAASY,GAAQ,CAEhB,OADAF,GAAK,EACAL,GAAOK,GAAKH,EACT,CACN,KAAQ,EACT,EAEM,CACN,MAASC,EAAKR,EAAKU,CAAE,EACrB,KAAQ,EACT,CACD,CASA,SAASG,EAAQE,EAAQ,CAExB,OADAV,EAAM,GACD,UAAU,OACP,CACN,MAASU,EACT,KAAQ,EACT,EAEM,CACN,KAAQ,EACT,CACD,CAQA,SAASD,GAAU,CAClB,OAAKR,EACGP,GAAoBC,EAAKE,EAAOK,EAAKD,EAAKL,CAAQ,EAEnDF,GAAoBC,EAAKE,EAAOK,CAAI,CAC5C,CACD,CAKAnB,GAAO,QAAUW,KCtOjB,IAAAiB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA0CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC/CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAc,QAAS,uDAAwD,EAC/EC,GAAa,QAAS,4BAA6B,EACnDC,GAAe,QAAS,8BAA+B,EACvDC,GAAY,QAAS,2BAA4B,EAAE,YACnDC,GAAkB,IAClBC,GAAiB,QAAS,yBAA0B,EACpDC,GAAiB,KACjBC,GAAS,KACTC,GAAQ,IACRC,GAAS,QAAS,uBAAwB,EA+B9C,SAASC,GAAyBC,EAAM,CACvC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACJ,GAAK,CAACnB,GAAcS,CAAI,EACvB,MAAM,IAAI,UAAWF,GAAQ,8EAA+EE,CAAI,CAAE,EAGnH,GADAG,EAAQ,UAAU,OACbA,IAAU,EACdD,EAAQ,EACRK,EAAMP,EAAI,eACCG,IAAU,EAChBb,GAAY,UAAW,CAAE,CAAE,GAC/BY,EAAQ,EACRI,EAAM,UAAW,CAAE,GAEnBJ,EAAQ,UAAW,CAAE,EAEtBK,EAAMP,EAAI,eACCG,IAAU,EAChBb,GAAY,UAAW,CAAE,CAAE,GAC/BY,EAAQ,EACRK,EAAMP,EAAI,OACVM,EAAM,UAAW,CAAE,EACnBL,EAAU,UAAW,CAAE,GACZX,GAAY,UAAW,CAAE,CAAE,GACtCY,EAAQ,UAAW,CAAE,EACrBK,EAAMP,EAAI,OACVM,EAAM,UAAW,CAAE,IAEnBJ,EAAQ,UAAW,CAAE,EACrBK,EAAM,UAAW,CAAE,OAEd,CAIN,GAHAL,EAAQ,UAAW,CAAE,EACrBK,EAAM,UAAW,CAAE,EACnBD,EAAM,UAAW,CAAE,EACd,CAAChB,GAAYgB,CAAI,EACrB,MAAM,IAAI,UAAWR,GAAQ,qEAAsEQ,CAAI,CAAE,EAE1GL,EAAU,UAAW,CAAE,CACxB,CACA,GAAK,CAACT,GAAWU,CAAM,EACtB,MAAM,IAAI,UAAWJ,GAAQ,gHAAiHI,CAAM,CAAE,EAEvJ,GAAK,CAACV,GAAWe,CAAI,EACpB,MAAM,IAAI,UAAWT,GAAQ,6GAA8GS,CAAI,CAAE,EAElJ,OAAKA,EAAM,GACVA,EAAMP,EAAI,OAASO,EACdA,EAAM,IACVA,EAAM,IAEIA,EAAMP,EAAI,SACrBO,EAAMP,EAAI,QAENE,EAAQ,IACZA,EAAQF,EAAI,OAASE,EAChBA,EAAQ,IACZA,EAAQ,IAGVQ,EAAIH,EAGJH,EAAO,CAAC,EACHE,EACJjB,GAAae,EAAM,OAAQO,CAAM,EAEjCtB,GAAae,EAAM,OAAQQ,CAAM,EAElCvB,GAAae,EAAM,SAAUS,CAAO,EAG/BnB,IACJL,GAAae,EAAMV,GAAgBoB,CAAQ,EAG5CL,EAAKZ,GAAOG,CAAI,EACXP,GAAiBO,CAAI,EACzBQ,EAAMb,GAAgBc,CAAG,EAEzBD,EAAMZ,GAAQa,CAAG,EAEXL,EAQP,SAASO,GAAQ,CAEhB,OADAD,GAAK,EACAL,GAAOK,EAAIR,EACR,CACN,KAAQ,EACT,EAEM,CACN,MAASI,EAAI,KAAML,EAASO,EAAKR,EAAKU,CAAE,EAAGA,EAAGH,EAAIG,EAAE,EAAGV,CAAI,EAC3D,KAAQ,EACT,CACD,CAQA,SAASY,GAAQ,CAEhB,OADAF,GAAK,EACAL,GAAOK,EAAIR,EACR,CACN,KAAQ,EACT,EAEM,CACN,MAASM,EAAKR,EAAKU,CAAE,EACrB,KAAQ,EACT,CACD,CASA,SAASG,EAAQE,EAAQ,CAExB,OADAV,EAAM,GACD,UAAU,OACP,CACN,MAASU,EACT,KAAQ,EACT,EAEM,CACN,KAAQ,EACT,CACD,CAQA,SAASD,GAAU,CAClB,OAAKR,EACGP,GAAyBC,EAAKE,EAAOK,EAAKD,EAAKL,CAAQ,EAExDF,GAAyBC,EAAKE,EAAOK,CAAI,CACjD,CACD,CAKAnB,GAAO,QAAUW,KCtOjB,IAAAiB,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA0CA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC/CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,QAAS,0BAA2B,EAAE,YACjDC,GAAQ,KACRC,GAAiB,QAAS,6CAA8C,EACxEC,GAAgB,QAAS,4CAA6C,EACtEC,GAAS,QAAS,uBAAwB,EAK1CC,GAAiBJ,GAAO,WAAY,EACpCK,GAAkBL,GAAO,YAAa,EAuF1C,SAASM,IAAa,CACrB,IAAIC,EACAC,EACAC,EACAC,EAUJ,GARAH,EAAQ,UAAU,OACbA,GAASR,GAAU,UAAWQ,EAAM,CAAE,CAAE,GAC5CA,GAAS,EACTC,EAAQ,UAAWD,CAAM,GAEzBC,EAAQ,UAETC,EAAOT,GAAOQ,CAAM,EACfC,IAAS,KACb,MAAM,IAAI,UAAWN,GAAQ,sEAAuEK,CAAM,CAAE,EAE7G,OAAKD,GAAS,EACN,IAAIE,EAAM,CAAE,EAEfF,IAAU,GACdG,EAAM,UAAW,CAAE,EAGdA,aAAeN,GACnBM,EAAMR,GAAeQ,EAAK,CAAE,EACjBA,aAAeL,KAC1BK,EAAMT,GAAgBS,EAAK,CAAE,GAEvB,IAAID,EAAMC,CAAI,GAEjBH,IAAU,EACP,IAAIE,EAAM,UAAU,CAAC,EAAG,UAAU,CAAC,CAAE,EAEtC,IAAIA,EAAM,UAAU,CAAC,EAAG,UAAU,CAAC,EAAG,UAAU,CAAC,CAAE,CAC3D,CAKAX,GAAO,QAAUQ,KC/JjB,IAAAK,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwHA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7HjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAkB,KAClBC,GAAiB,KAMjBC,GAAQ,CACX,WAAcF,GACd,UAAaC,EACd,EAKAF,GAAO,QAAUG,KCrCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAQ,KAmBZ,SAASC,GAAOC,EAAQ,CACvB,OAAOF,GAAOE,CAAM,GAAK,IAC1B,CAKAH,GAAO,QAAUE,KChDjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,QAAS,0BAA2B,EAAE,YACjDC,GAAS,QAAS,uBAAwB,EAC1CC,GAAQ,KAuFZ,SAASC,IAAe,CACvB,IAAIC,EACAC,EACAC,EAUJ,GARAF,EAAQ,UAAU,OACbA,GAASJ,GAAU,UAAWI,EAAM,CAAE,CAAE,GAC5CA,GAAS,EACTC,EAAQ,UAAWD,CAAM,GAEzBC,EAAQ,aAETC,EAAOJ,GAAOG,CAAM,EACfC,IAAS,KACb,MAAM,IAAI,UAAWL,GAAQ,sEAAuEI,CAAM,CAAE,EAE7G,OAAKD,GAAS,EACN,IAAIE,EAAM,CAAE,EAEfF,IAAU,EACP,IAAIE,EAAM,UAAU,CAAC,CAAE,EAE1BF,IAAU,EACP,IAAIE,EAAM,UAAU,CAAC,EAAG,UAAU,CAAC,CAAE,EAEtC,IAAIA,EAAM,UAAU,CAAC,EAAG,UAAU,CAAC,EAAG,UAAU,CAAC,CAAE,CAC3D,CAKAP,GAAO,QAAUI,KC9IjB,IAAAI,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwHA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7HjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,CAAAA,GAAA,SACC,YACA,YACD,ICHA,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,KAcb,SAASC,IAAS,CACjB,OAAOD,GAAO,MAAM,CACrB,CAKAD,GAAO,QAAUE,KC3CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,CAAAA,GAAA,SACC,UACA,UACA,QACA,QACA,OACA,SACA,SACA,QACA,SACC,YACA,YACF,ICZA,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,KAcb,SAASC,IAAS,CACjB,OAAOD,GAAO,MAAM,CACrB,CAKAD,GAAO,QAAUE,KC3CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,CAAAA,GAAA,SACC,UACA,UACA,YACC,YACF,ICLA,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,KAcb,SAASC,IAAS,CACjB,OAAOD,GAAO,MAAM,CACrB,CAKAD,GAAO,QAAUE,KC3CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAa,KACbC,GAAa,KACbC,GAAY,KACZC,GAAc,KACdC,GAAc,KACdC,GAAa,KACbC,GAAoB,KAMpBC,GAAQ,CACX,MAASP,GACT,MAASC,GACT,KAAQC,GACR,OAAUC,GACV,OAAUC,GACV,MAASC,GACT,OAAUC,EACX,EAKAP,GAAO,QAAUQ,KC/CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAQ,KAmBZ,SAASC,GAAOC,EAAQ,CACvB,OAAOF,GAAOE,CAAM,GAAK,IAC1B,CAKAH,GAAO,QAAUE,KChDjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,CAAAA,GAAA,SACC,QACA,QACA,OACA,SACA,SACA,QACA,QACD,ICRA,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,KAcb,SAASC,IAAS,CACjB,OAAOD,GAAO,MAAM,CACrB,CAKAD,GAAO,QAAUE,KC3CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,QAAS,0BAA2B,EAAE,YACjDC,GAAS,QAAS,uBAAwB,EAC1CC,GAAQ,KAuFZ,SAASC,IAAY,CACpB,IAAIC,EACAC,EACAC,EAUJ,GARAF,EAAQ,UAAU,OACbA,GAASJ,GAAU,UAAWI,EAAM,CAAE,CAAE,GAC5CA,GAAS,EACTC,EAAQ,UAAWD,CAAM,GAEzBC,EAAQ,UAETC,EAAOJ,GAAOG,CAAM,EACfC,IAAS,KACb,MAAM,IAAI,UAAWL,GAAQ,sEAAuEI,CAAM,CAAE,EAE7G,OAAKD,GAAS,EACN,IAAIE,EAAM,CAAE,EAEfF,IAAU,EACP,IAAIE,EAAM,UAAU,CAAC,CAAE,EAE1BF,IAAU,EACP,IAAIE,EAAM,UAAU,CAAC,EAAG,UAAU,CAAC,CAAE,EAEtC,IAAIA,EAAM,UAAU,CAAC,EAAG,UAAU,CAAC,EAAG,UAAU,CAAC,CAAE,CAC3D,CAKAP,GAAO,QAAUI,KC9IjB,IAAAI,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwHA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7HjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAe,KACfC,GAAe,KACfC,GAAa,KACbC,GAAa,KACbC,GAAY,KACZC,GAAc,KACdC,GAAc,KACdC,GAAa,KACbC,GAAoB,KAMpBC,GAAQ,CACX,QAAWT,GACX,QAAWC,GACX,MAASC,GACT,MAASC,GACT,KAAQC,GACR,OAAUC,GACV,OAAUC,GACV,MAASC,GACT,OAAUC,EACX,EAKAT,GAAO,QAAUU,KCnDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAQ,KAmBZ,SAASC,GAAOC,EAAQ,CACvB,OAAOF,GAAOE,CAAM,GAAK,IAC1B,CAKAH,GAAO,QAAUE,KChDjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,CAAAA,GAAA,SACC,UACA,UACA,QACA,QACA,OACA,SACA,SACA,QACA,QACD,ICVA,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,KAcb,SAASC,IAAS,CACjB,OAAOD,GAAO,MAAM,CACrB,CAKAD,GAAO,QAAUE,KC3CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAe,KACfC,GAAe,KAMfC,GAAQ,CACX,QAAWF,GACX,QAAWC,EACZ,EAKAF,GAAO,QAAUG,KCrCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAQ,KAmBZ,SAASC,GAAOC,EAAQ,CACvB,OAAOF,GAAOE,CAAM,GAAK,IAC1B,CAKAH,GAAO,QAAUE,KChDjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,CAAAA,GAAA,SACC,UACA,SACD,ICHA,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,KAcb,SAASC,IAAS,CACjB,OAAOD,GAAO,MAAM,CACrB,CAKAD,GAAO,QAAUE,KC3CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAa,KACbC,GAAa,KACbC,GAAY,KAMZC,GAAQ,CACX,MAASH,GACT,MAASC,GACT,KAAQC,EACT,EAKAH,GAAO,QAAUI,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAQ,KAmBZ,SAASC,GAAOC,EAAQ,CACvB,OAAOF,GAAOE,CAAM,GAAK,IAC1B,CAKAH,GAAO,QAAUE,KChDjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,CAAAA,GAAA,SACC,QACA,QACA,MACD,ICJA,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,KAcb,SAASC,IAAS,CACjB,OAAOD,GAAO,MAAM,CACrB,CAKAD,GAAO,QAAUE,KC3CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAc,KACdC,GAAc,KACdC,GAAa,KACbC,GAAoB,KAMpBC,GAAQ,CACX,OAAUJ,GACV,OAAUC,GACV,MAASC,GACT,OAAUC,EACX,EAKAJ,GAAO,QAAUK,KCzCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAQ,KAmBZ,SAASC,GAAOC,EAAQ,CACvB,OAAOF,GAAOE,CAAM,GAAK,IAC1B,CAKAH,GAAO,QAAUE,KChDjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,CAAAA,GAAA,SACC,SACA,SACA,QACA,QACD,ICLA,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,KAcb,SAASC,IAAS,CACjB,OAAOD,GAAO,MAAM,CACrB,CAKAD,GAAO,QAAUE,KC3CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,QAAS,uBAAwB,EAC1CC,GAAQ,IACRC,GAAQ,KAsBZ,SAASC,GAAWC,EAAI,CACvB,IAAIC,EAAKJ,GAAOG,CAAE,EAClB,GAAKC,IAAO,KACX,MAAM,IAAI,UAAWL,GAAQ,8GAA+GI,CAAE,CAAE,EAEjJ,OAAK,UAAU,OAAS,IACvBC,EAAK,UAAW,CAAE,GAEZH,GAAOE,EAAE,OAAQC,CAAG,CAC5B,CAKAN,GAAO,QAAUI,KC5DjB,IAAAG,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCfjB,IAAIC,EAAc,QAAS,yCAA0C,EAUjEC,EAAK,CAAC,EASVD,EAAaC,EAAI,OAAQ,IAAuB,EAShDD,EAAaC,EAAI,cAAe,IAAyB,EASzDD,EAAaC,EAAI,iBAAkB,IAA4B,EAS/DD,EAAaC,EAAI,kBAAmB,IAA6B,EASjED,EAAaC,EAAI,eAAgB,IAA0B,EAS3DD,EAAaC,EAAI,mBAAoB,IAA+B,EASpED,EAAaC,EAAI,aAAc,IAAwB,EASvDD,EAAaC,EAAI,WAAY,IAA2B,EASxDD,EAAaC,EAAI,YAAa,IAA4B,EAS1DD,EAAaC,EAAI,gBAAiB,IAA2B,EAS7DD,EAAaC,EAAI,gBAAiB,GAAwB,EAS1DD,EAAaC,EAAI,iBAAkB,IAAyB,EAS5DD,EAAaC,EAAI,SAAU,IAAwB,EASnDD,EAAaC,EAAI,aAAc,IAA6B,EAS5DD,EAAaC,EAAI,cAAe,IAAyB,EASzDD,EAAaC,EAAI,gBAAiB,IAA4B,EAS9DD,EAAaC,EAAI,eAAgB,IAA0B,EAS3DD,EAAaC,EAAI,eAAgB,IAA0B,EAS3DD,EAAaC,EAAI,iBAAkB,IAAgC,EASnED,EAAaC,EAAI,QAAS,IAAuB,EASjDD,EAAaC,EAAI,YAAa,IAA4B,EAS1DD,EAAaC,EAAI,YAAa,IAA4B,EAS1DD,EAAaC,EAAI,YAAa,IAAuB,EASrDD,EAAaC,EAAI,aAAc,IAAwB,EASvDD,EAAaC,EAAI,aAAc,IAAwB,EASvDD,EAAaC,EAAI,WAAY,IAA2B,EASxDD,EAAaC,EAAI,WAAY,IAA2B,EASxDD,EAAaC,EAAI,mBAAoB,IAA4B,EASjED,EAAaC,EAAI,QAAS,IAAuB,EASjDD,EAAaC,EAAI,YAAa,IAA4B,EAS1DD,EAAaC,EAAI,oBAAqB,IAA6B,EASnED,EAAaC,EAAI,QAAS,IAAuB,EASjDD,EAAaC,EAAI,YAAa,IAA4B,EAS1DD,EAAaC,EAAI,iBAAkB,IAAuB,EAS1DD,EAAaC,EAAI,sBAAuB,IAAkC,EAS1ED,EAAaC,EAAI,mBAAoB,IAA0B,EAS/DD,EAAaC,EAAI,iBAAkB,IAA6B,EAShED,EAAaC,EAAI,qBAAsB,IAAkC,EASzED,EAAaC,EAAI,aAAc,IAAwB,EASvDD,EAAaC,EAAI,oBAAqB,IAAgC,EAStED,EAAaC,EAAI,qBAAsB,IAAuC,EAS9ED,EAAaC,EAAI,iBAAkB,IAA8B,EASjED,EAAaC,EAAI,sBAAuB,IAAoC,EAS5ED,EAAaC,EAAI,kBAAmB,IAA0B,EAS9DD,EAAaC,EAAI,uBAAwB,IAAqC,EAS9ED,EAAaC,EAAI,4BAA6B,IAA2C,EASzFD,EAAaC,EAAI,wBAAyB,IAAsC,EAShFD,EAAaC,EAAI,qBAAsB,IAAmC,EAS1ED,EAAaC,EAAI,0BAA2B,IAAyC,EASrFD,EAAaC,EAAI,aAAc,IAAwB,EASvDD,EAAaC,EAAI,eAAgB,IAAgC,EASjED,EAAaC,EAAI,oBAAqB,IAAsC,EAS5ED,EAAaC,EAAI,wBAAyB,IAAuC,EASjFD,EAAaC,EAAI,kBAAmB,IAA8B,EASlED,EAAaC,EAAI,sBAAuB,IAA+B,EASvED,EAAaC,EAAI,kBAAmB,IAAoC,EASxED,EAAaC,EAAI,sBAAuB,IAAqC,EAS7ED,EAAaC,EAAI,gBAAiB,IAAsC,EASxED,EAAaC,EAAI,oBAAqB,IAAuC,EAS7ED,EAAaC,EAAI,YAAa,IAA6B,EAS3DD,EAAaC,EAAI,iBAAkB,IAAmC,EAStED,EAAaC,EAAI,qBAAsB,IAAoC,EAS3ED,EAAaC,EAAI,sBAAuB,IAAyC,EASjFD,EAAaC,EAAI,0BAA2B,IAA0C,EAStFD,EAAaC,EAAI,sBAAuB,IAA6C,EASrFD,EAAaC,EAAI,0BAA2B,IAA8C,EAS1FD,EAAaC,EAAI,wBAAyB,IAA+C,EASzFD,EAAaC,EAAI,4BAA6B,IAAgD,EAS9FD,EAAaC,EAAI,aAAc,IAAwB,EASvDD,EAAaC,EAAI,oBAAqB,IAAyB,EAS/DD,EAAaC,EAAI,cAAe,IAAyB,EASzDD,EAAaC,EAAI,cAAe,IAAyB,EASzDD,EAAaC,EAAI,SAAU,IAAwB,EASnDD,EAAaC,EAAI,aAAc,IAA6B,EAS5DD,EAAaC,EAAI,YAAa,QAAS,yBAA0B,CAAE,EAKnE,OAAO,QAAUA",
   "names": ["require_main", "__commonJSMin", "exports", "module", "TYPE", "isAccessorArray", "value", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "GETTERS", "getFloat64", "getFloat32", "getInt32", "getInt16", "getInt8", "getUint32", "getUint16", "getUint8", "getUint8c", "getGeneric", "getArrayLike", "arr", "idx", "getter", "dtype", "f", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "SETTERS", "setFloat64", "setFloat32", "setInt32", "setInt16", "setInt8", "setUint32", "setUint16", "setUint8", "setUint8c", "setGeneric", "setArrayLike", "arr", "idx", "value", "setter", "dtype", "f", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "GETTERS", "getComplex128", "getComplex64", "getArrayLike", "arr", "idx", "getter", "dtype", "f", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "SETTERS", "setComplex128", "setComplex64", "setArrayLike", "arr", "idx", "value", "setter", "dtype", "f", "require_lib", "__commonJSMin", "exports", "module", "main", "require_ctor2dtype", "__commonJSMin", "exports", "module", "ctor2dtypes", "require_main", "__commonJSMin", "exports", "module", "ctor", "require_polyfill", "__commonJSMin", "exports", "module", "polyfill", "require_lib", "__commonJSMin", "exports", "module", "hasFloat64ArraySupport", "builtin", "polyfill", "ctor", "require_main", "__commonJSMin", "exports", "module", "ctor", "require_polyfill", "__commonJSMin", "exports", "module", "polyfill", "require_lib", "__commonJSMin", "exports", "module", "hasFloat32ArraySupport", "builtin", "polyfill", "ctor", "require_main", "__commonJSMin", "exports", "module", "ctor", "require_polyfill", "__commonJSMin", "exports", "module", "polyfill", "require_lib", "__commonJSMin", "exports", "module", "hasUint32ArraySupport", "builtin", "polyfill", "ctor", "require_main", "__commonJSMin", "exports", "module", "ctor", "require_polyfill", "__commonJSMin", "exports", "module", "polyfill", "require_lib", "__commonJSMin", "exports", "module", "hasInt32ArraySupport", "builtin", "polyfill", "ctor", "require_main", "__commonJSMin", "exports", "module", "ctor", "require_polyfill", "__commonJSMin", "exports", "module", "polyfill", "require_lib", "__commonJSMin", "exports", "module", "hasUint16ArraySupport", "builtin", "polyfill", "ctor", "require_main", "__commonJSMin", "exports", "module", "ctor", "require_polyfill", "__commonJSMin", "exports", "module", "polyfill", "require_lib", "__commonJSMin", "exports", "module", "hasInt16ArraySupport", "builtin", "polyfill", "ctor", "require_main", "__commonJSMin", "exports", "module", "ctor", "require_polyfill", "__commonJSMin", "exports", "module", "polyfill", "require_lib", "__commonJSMin", "exports", "module", "hasUint8ArraySupport", "builtin", "polyfill", "ctor", "require_main", "__commonJSMin", "exports", "module", "ctor", "require_polyfill", "__commonJSMin", "exports", "module", "polyfill", "require_lib", "__commonJSMin", "exports", "module", "hasUint8ClampedArraySupport", "builtin", "polyfill", "ctor", "require_main", "__commonJSMin", "exports", "module", "ctor", "require_polyfill", "__commonJSMin", "exports", "module", "polyfill", "require_lib", "__commonJSMin", "exports", "module", "hasInt8ArraySupport", "builtin", "polyfill", "ctor", "require_main", "__commonJSMin", "exports", "module", "BYTES_PER_ELEMENT", "isComplex64Array", "value", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "BYTES_PER_ELEMENT", "isComplex128Array", "value", "require_lib", "__commonJSMin", "exports", "module", "main", "require_from_iterator", "__commonJSMin", "exports", "module", "isArrayLikeObject", "isComplexLike", "realf", "imagf", "format", "fromIterator", "it", "out", "v", "z", "require_from_iterator_map", "__commonJSMin", "exports", "module", "isArrayLikeObject", "isComplexLike", "realf", "imagf", "format", "fromIteratorMap", "it", "clbk", "thisArg", "out", "v", "z", "i", "require_from_array", "__commonJSMin", "exports", "module", "isComplexLike", "realf", "imagf", "fromArray", "buf", "arr", "len", "v", "i", "j", "require_main", "__commonJSMin", "exports", "module", "isNonNegativeInteger", "isArrayLikeObject", "isCollection", "isArrayBuffer", "isObject", "isArray", "isString", "isFunction", "isComplexLike", "isEven", "isInteger", "isComplex64Array", "isComplex128Array", "hasIteratorSymbolSupport", "ITERATOR_SYMBOL", "setReadOnly", "setReadOnlyAccessor", "Float32Array", "Complex64", "format", "realf", "imagf", "floor", "reinterpret64", "reinterpret128", "getter", "accessorGetter", "fromIterator", "fromIteratorMap", "fromArray", "BYTES_PER_ELEMENT", "HAS_ITERATOR_SYMBOL", "isComplexArray", "value", "Complex64Array", "isComplexArrayConstructor", "getComplex64", "buf", "idx", "byteOffset", "nargs", "len", "src", "thisArg", "clbk", "out", "tmp", "get", "flg", "v", "i", "j", "args", "target", "start", "buffer", "self", "iter", "FLG", "next", "end", "factory", "z", "predicate", "re", "im", "fcn", "searchElement", "fromIndex", "separator", "sep", "outbuf", "N", "sbuf", "outlen", "begin", "offset", "index", "require_lib", "__commonJSMin", "exports", "module", "main", "require_from_iterator", "__commonJSMin", "exports", "module", "isArrayLikeObject", "isComplexLike", "format", "real", "imag", "fromIterator", "it", "out", "v", "z", "require_from_iterator_map", "__commonJSMin", "exports", "module", "isArrayLikeObject", "isComplexLike", "format", "real", "imag", "fromIteratorMap", "it", "clbk", "thisArg", "out", "v", "z", "i", "require_from_array", "__commonJSMin", "exports", "module", "isComplexLike", "real", "imag", "fromArray", "buf", "arr", "len", "v", "i", "j", "require_main", "__commonJSMin", "exports", "module", "isNonNegativeInteger", "isArrayLikeObject", "isCollection", "isArrayBuffer", "isObject", "isArray", "isString", "isFunction", "isComplexLike", "isEven", "isInteger", "isComplex64Array", "isComplex128Array", "hasIteratorSymbolSupport", "ITERATOR_SYMBOL", "setReadOnly", "setReadOnlyAccessor", "Float64Array", "Complex128", "real", "imag", "floor", "reinterpret64", "reinterpret128", "getter", "accessorGetter", "format", "fromIterator", "fromIteratorMap", "fromArray", "BYTES_PER_ELEMENT", "HAS_ITERATOR_SYMBOL", "isComplexArray", "value", "Complex128Array", "isComplexArrayConstructor", "getComplex128", "buf", "idx", "byteOffset", "nargs", "len", "src", "thisArg", "clbk", "out", "tmp", "get", "flg", "v", "i", "j", "args", "target", "start", "buffer", "self", "iter", "FLG", "next", "end", "factory", "z", "predicate", "re", "im", "fcn", "searchElement", "fromIndex", "separator", "sep", "outbuf", "N", "sbuf", "begin", "offset", "index", "require_lib", "__commonJSMin", "exports", "module", "main", "require_ctors", "__commonJSMin", "exports", "module", "Float64Array", "Float32Array", "Uint32Array", "Int32Array", "Uint16Array", "Int16Array", "Uint8Array", "Uint8ClampedArray", "Int8Array", "Complex64Array", "Complex128Array", "CTORS", "require_dtypes", "__commonJSMin", "exports", "module", "DTYPES", "require_main", "__commonJSMin", "exports", "module", "isBuffer", "isArray", "constructorName", "ctor2dtype", "CTORS", "DTYPES", "NTYPES", "dtype", "value", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isAccessorArray", "getter", "setter", "accessorGetter", "accessorSetter", "dtype", "accessors", "x", "dt", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "setReadWriteAccessor", "setReadOnly", "accessors", "isCollection", "format", "setLength", "len", "getLength", "AccessorArray", "arr", "o", "idx", "value", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "accessors", "arraylike2object", "x", "o", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isAccessorArray", "accessorGetter", "getter", "dtype", "contains", "x", "value", "len", "get", "dt", "i", "require_factory", "__commonJSMin", "exports", "module", "isCollection", "isAccessorArray", "accessorGetter", "dtype", "format", "factory", "x", "get", "len", "dt", "contains", "accessors", "value", "i", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "main", "factory", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "ns", "require_main", "__commonJSMin", "exports", "module", "isAccessorArray", "accessorGetter", "getter", "dtype", "resolveGetter", "x", "dt", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "resolveGetter", "bifurcateEntries", "x", "filter", "xget", "gget", "len", "out", "g", "v", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "resolveGetter", "bifurcateEntriesBy", "x", "predicate", "thisArg", "get", "len", "out", "v", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "resolveGetter", "bifurcateIndices", "x", "filter", "gget", "len", "out", "g", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "resolveGetter", "bifurcateIndicesBy", "x", "predicate", "thisArg", "get", "len", "out", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "resolveGetter", "bifurcateValues", "x", "filter", "xget", "gget", "len", "out", "g", "v", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "resolveGetter", "bifurcateValuesBy", "x", "predicate", "thisArg", "get", "len", "out", "v", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "binary2d", "arrays", "shape", "fcn", "S0", "S1", "i0", "i1", "x0", "y0", "z0", "x", "y", "z", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "binary3d", "arrays", "shape", "fcn", "S0", "S1", "S2", "i0", "i1", "i2", "x0", "x1", "y0", "y1", "z0", "z1", "x", "y", "z", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "binary4d", "arrays", "shape", "fcn", "S0", "S1", "S2", "S3", "i0", "i1", "i2", "i3", "x0", "x1", "x2", "y0", "y1", "y2", "z0", "z1", "z2", "x", "y", "z", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "binary5d", "arrays", "shape", "fcn", "S0", "S1", "S2", "S3", "S4", "i0", "i1", "i2", "i3", "i4", "x0", "x1", "x2", "x3", "y0", "y1", "y2", "y3", "z0", "z1", "z2", "z3", "x", "y", "z", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "recurse", "x", "y", "z", "ndims", "shape", "dim", "fcn", "S", "d", "i", "binarynd", "arrays", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "copy", "x", "out", "len", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "filled", "value", "len", "arr", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "filled", "zeros", "len", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "copy", "zeros", "format", "broadcastArray", "x", "inShape", "outShape", "data", "dim", "st", "N", "M", "d", "i", "j", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "broadcastArray", "bbinary2d", "arrays", "shapes", "fcn", "dx0", "dx1", "dy0", "dy1", "S0", "S1", "i0", "i1", "j0", "j1", "k0", "k1", "x0", "y0", "z0", "sh", "st", "o", "x", "y", "z", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "broadcastArray", "bbinary3d", "arrays", "shapes", "fcn", "dx0", "dx1", "dx2", "dy0", "dy1", "dy2", "S0", "S1", "S2", "i0", "i1", "i2", "j0", "j1", "j2", "k0", "k1", "k2", "x0", "x1", "y0", "y1", "z0", "z1", "sh", "st", "o", "x", "y", "z", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "broadcastArray", "bbinary4d", "arrays", "shapes", "fcn", "dx0", "dx1", "dx2", "dx3", "dy0", "dy1", "dy2", "dy3", "S0", "S1", "S2", "S3", "i0", "i1", "i2", "i3", "j0", "j1", "j2", "j3", "k0", "k1", "k2", "k3", "x0", "x1", "x2", "y0", "y1", "y2", "z0", "z1", "z2", "sh", "st", "o", "x", "y", "z", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "broadcastArray", "bbinary5d", "arrays", "shapes", "fcn", "dx0", "dx1", "dx2", "dx3", "dx4", "dy0", "dy1", "dy2", "dy3", "dy4", "S0", "S1", "S2", "S3", "S4", "i0", "i1", "i2", "i3", "i4", "j0", "j1", "j2", "j3", "j4", "k0", "k1", "k2", "k3", "k4", "x0", "x1", "x2", "x3", "y0", "y1", "y2", "y3", "z0", "z1", "z2", "z3", "sh", "st", "o", "x", "y", "z", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "broadcastArray", "bquaternary2d", "arrays", "shapes", "fcn", "dx0", "dx1", "dy0", "dy1", "dz0", "dz1", "dw0", "dw1", "S0", "S1", "i0", "i1", "j0", "j1", "k0", "k1", "m0", "m1", "n0", "n1", "x0", "y0", "z0", "w0", "u0", "sh", "st", "o", "x", "y", "z", "w", "u", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "broadcastArray", "bquinary2d", "arrays", "shapes", "fcn", "dx0", "dx1", "dy0", "dy1", "dz0", "dz1", "dw0", "dw1", "du0", "du1", "S0", "S1", "i0", "i1", "j0", "j1", "k0", "k1", "m0", "m1", "n0", "n1", "p0", "p1", "x0", "y0", "z0", "w0", "u0", "v0", "sh", "st", "o", "x", "y", "z", "w", "u", "v", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "broadcastArray", "bternary2d", "arrays", "shapes", "fcn", "dx0", "dx1", "dy0", "dy1", "dz0", "dz1", "S0", "S1", "i0", "i1", "j0", "j1", "k0", "k1", "m0", "m1", "x0", "y0", "z0", "w0", "sh", "st", "o", "x", "y", "z", "w", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "broadcastArray", "bunary2d", "arrays", "shapes", "fcn", "dx0", "dx1", "S0", "S1", "i0", "i1", "j0", "j1", "x0", "y0", "sh", "st", "o", "x", "y", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "broadcastArray", "bunary3d", "arrays", "shapes", "fcn", "dx0", "dx1", "dx2", "S0", "S1", "S2", "i0", "i1", "i2", "j0", "j1", "j2", "x0", "x1", "y0", "y1", "sh", "st", "o", "x", "y", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "broadcastArray", "bunary4d", "arrays", "shapes", "fcn", "dx0", "dx1", "dx2", "dx3", "S0", "S1", "S2", "S3", "i0", "i1", "i2", "i3", "j0", "j1", "j2", "j3", "x0", "x1", "x2", "y0", "y1", "y2", "sh", "st", "o", "x", "y", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "broadcastArray", "bunary5d", "arrays", "shapes", "fcn", "dx0", "dx1", "dx2", "dx3", "dx4", "S0", "S1", "S2", "S3", "S4", "i0", "i1", "i2", "i3", "i4", "j0", "j1", "j2", "j3", "j4", "x0", "x1", "x2", "x3", "y0", "y1", "y2", "y3", "sh", "st", "o", "x", "y", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "pow", "cartesianPower", "x", "n", "out", "tmp", "idx", "len", "N", "s", "i", "j", "k", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "cartesianProduct", "x1", "x2", "out", "M", "N", "v", "i", "j", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "cartesianSquare", "x", "out", "N", "v", "i", "j", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "resolveGetter", "copy", "x", "out", "len", "get", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isnan", "dedupeInPlace", "x", "limit", "count", "prev", "len", "ptr", "v", "i", "dedupeEqualNaNs", "FLG", "dedupe", "equalNaNs", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isComplex128Array", "isComplex64Array", "arraylike2object", "reinterpret128", "reinterpret64", "internal", "x", "i", "internalComplex", "accessors", "data", "get", "every", "obj", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "arraylike2object", "hasMethod", "obj", "method", "internal", "x", "predicate", "thisArg", "accessors", "data", "get", "i", "everyBy", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "filledBy", "len", "clbk", "thisArg", "arr", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "filled", "filled2d", "value", "shape", "arr", "S0", "S1", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "filled2dBy", "shape", "clbk", "thisArg", "arr", "a0", "S0", "S1", "i", "j", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "filled", "filled3d", "value", "shape", "out", "a1", "S0", "S1", "S2", "i2", "i1", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "filled3dBy", "shape", "clbk", "thisArg", "arr", "a0", "a1", "S0", "S1", "S2", "i0", "i1", "i2", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "filled", "filled4d", "value", "shape", "out", "a1", "a2", "S0", "S1", "S2", "S3", "i1", "i2", "i3", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "filled4dBy", "shape", "clbk", "thisArg", "arr", "a0", "a1", "a2", "S0", "S1", "S2", "S3", "i0", "i1", "i2", "i3", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "filled", "filled5d", "value", "shape", "out", "a1", "a2", "a3", "S0", "S1", "S2", "S3", "S4", "i1", "i2", "i3", "i4", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "filled5dBy", "shape", "clbk", "thisArg", "arr", "a0", "a1", "a2", "a3", "S0", "S1", "S2", "S3", "S4", "i0", "i1", "i2", "i3", "i4", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "filled", "recurse", "value", "ndims", "shape", "dim", "out", "S", "d", "i", "fillednd", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "recurse", "ndims", "shape", "dim", "indices", "out", "clbk", "thisArg", "idx", "FLG", "S", "d", "i", "filledndBy", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "resolveGetter", "first", "arr", "get", "require_lib", "__commonJSMin", "exports", "module", "main", "require_assign", "__commonJSMin", "exports", "module", "shape2strides", "vind2bind", "numel", "grev", "zeros", "MODE", "copy", "x", "N", "out", "stride", "offset", "i", "recurseLexicographic", "ndims", "shape", "dim", "FLG", "S", "d", "flattenColexicographic", "len", "tmp", "ord", "sh", "sx", "j", "flatten", "colexicographic", "require_main", "__commonJSMin", "exports", "module", "numel", "zeros", "assign", "flatten", "x", "shape", "colexicographic", "out", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "main", "assign", "require_assign", "__commonJSMin", "exports", "module", "shape2strides", "vind2bind", "numel", "grev", "zeros", "copy", "MODE", "copyBy", "x", "N", "out", "stride", "offset", "clbk", "thisArg", "i", "recurseLexicographic", "orig", "ndims", "shape", "dim", "indices", "FLG", "idx", "S", "d", "flattenColexicographic", "len", "tmp", "ord", "sh", "sx", "j", "flattenBy", "colexicographic", "require_main", "__commonJSMin", "exports", "module", "numel", "zeros", "assign", "flattenBy", "x", "shape", "colexicographic", "clbk", "thisArg", "out", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "main", "assign", "require_main", "__commonJSMin", "exports", "module", "flatten2d", "x", "shape", "colexicographic", "out", "S0", "S1", "i0", "i1", "a0", "require_assign", "__commonJSMin", "exports", "module", "flatten2d", "x", "shape", "colexicographic", "out", "stride", "offset", "S0", "S1", "i0", "i1", "a0", "io", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "main", "assign", "require_main", "__commonJSMin", "exports", "module", "flatten2dBy", "x", "shape", "colexicographic", "clbk", "thisArg", "out", "S0", "S1", "i0", "i1", "a0", "require_assign", "__commonJSMin", "exports", "module", "flatten2dBy", "x", "shape", "colexicographic", "out", "stride", "offset", "clbk", "thisArg", "S0", "S1", "i0", "i1", "a0", "io", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "main", "assign", "require_main", "__commonJSMin", "exports", "module", "flatten3d", "x", "shape", "colexicographic", "out", "S0", "S1", "S2", "i0", "i1", "i2", "a0", "a1", "require_assign", "__commonJSMin", "exports", "module", "flatten3d", "x", "shape", "colexicographic", "out", "stride", "offset", "S0", "S1", "S2", "i0", "i1", "i2", "a0", "a1", "io", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "main", "assign", "require_main", "__commonJSMin", "exports", "module", "flatten3dBy", "x", "shape", "colexicographic", "clbk", "thisArg", "out", "S0", "S1", "S2", "i0", "i1", "i2", "a0", "a1", "require_assign", "__commonJSMin", "exports", "module", "flatten3dBy", "x", "shape", "colexicographic", "out", "stride", "offset", "clbk", "thisArg", "S0", "S1", "S2", "i0", "i1", "i2", "a0", "a1", "io", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "main", "assign", "require_main", "__commonJSMin", "exports", "module", "flatten4d", "x", "shape", "colexicographic", "out", "S0", "S1", "S2", "S3", "i0", "i1", "i2", "i3", "a0", "a1", "a2", "require_assign", "__commonJSMin", "exports", "module", "flatten4d", "x", "shape", "colexicographic", "out", "stride", "offset", "S0", "S1", "S2", "S3", "i0", "i1", "i2", "i3", "a0", "a1", "a2", "io", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "main", "assign", "require_main", "__commonJSMin", "exports", "module", "flatten4dBy", "x", "shape", "colexicographic", "clbk", "thisArg", "out", "S0", "S1", "S2", "S3", "i0", "i1", "i2", "i3", "a0", "a1", "a2", "require_assign", "__commonJSMin", "exports", "module", "flatten4dBy", "x", "shape", "colexicographic", "out", "stride", "offset", "clbk", "thisArg", "S0", "S1", "S2", "S3", "i0", "i1", "i2", "i3", "a0", "a1", "a2", "io", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "main", "assign", "require_main", "__commonJSMin", "exports", "module", "flatten5d", "x", "shape", "colexicographic", "out", "S0", "S1", "S2", "S3", "S4", "i0", "i1", "i2", "i3", "i4", "a0", "a1", "a2", "a3", "require_assign", "__commonJSMin", "exports", "module", "flatten5d", "x", "shape", "colexicographic", "out", "stride", "offset", "S0", "S1", "S2", "S3", "S4", "i0", "i1", "i2", "i3", "i4", "a0", "a1", "a2", "a3", "io", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "main", "assign", "require_main", "__commonJSMin", "exports", "module", "flatten5dBy", "x", "shape", "colexicographic", "clbk", "thisArg", "out", "S0", "S1", "S2", "S3", "S4", "i0", "i1", "i2", "i3", "i4", "a0", "a1", "a2", "a3", "require_assign", "__commonJSMin", "exports", "module", "flatten5dBy", "x", "shape", "colexicographic", "out", "stride", "offset", "clbk", "thisArg", "S0", "S1", "S2", "S3", "S4", "i0", "i1", "i2", "i3", "i4", "a0", "a1", "a2", "a3", "io", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "main", "assign", "require_main", "__commonJSMin", "exports", "module", "fliplr2d", "x", "out", "x0", "y0", "i1", "i0", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "fliplr2d", "fliplr3d", "x", "out", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "fliplr3d", "fliplr4d", "x", "out", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "fliplr4d", "fliplr5d", "x", "out", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "flipud2d", "x", "out", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "flipud2d", "flipud3d", "x", "out", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "flipud3d", "flipud4d", "x", "out", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "flipud4d", "flipud5d", "x", "out", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "resolveGetter", "strided2array", "N", "x", "stride", "offset", "out", "get", "ix", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isArray", "resolveGetter", "groupEntries", "x", "groups", "xget", "gget", "len", "out", "g", "v", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isArray", "resolveGetter", "groupEntriesBy", "x", "indicator", "thisArg", "get", "len", "out", "g", "v", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isArray", "resolveGetter", "groupIndices", "x", "groups", "gget", "len", "out", "g", "o", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isArray", "resolveGetter", "groupIndicesBy", "x", "indicator", "thisArg", "get", "len", "out", "g", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isArray", "resolveGetter", "groupValues", "x", "groups", "xget", "gget", "len", "out", "g", "v", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isArray", "resolveGetter", "groupValuesBy", "x", "indicator", "thisArg", "get", "len", "out", "g", "v", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "ceil", "incrspace", "x1", "x2", "increment", "arr", "len", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "arraylike2object", "isnan", "hasMethod", "obj", "method", "internal", "x", "searchElement", "fromIndex", "equalNaNs", "i", "accessors", "data", "get", "indexOf", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "resolveGetter", "last", "arr", "get", "idx", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "arraylike2object", "isnan", "hasMethod", "obj", "method", "internal", "x", "searchElement", "fromIndex", "equalNaNs", "i", "accessors", "data", "get", "lastIndexOf", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "linspace", "x1", "x2", "len", "arr", "N", "d", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "pow", "logspace", "a", "b", "len", "arr", "N", "d", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "map2d", "x", "shape", "fcn", "thisArg", "S0", "S1", "i0", "i1", "x0", "y0", "y", "require_assign", "__commonJSMin", "exports", "module", "map2d", "x", "y", "shape", "fcn", "thisArg", "S0", "S1", "i0", "i1", "x0", "y0", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "main", "assign", "require_main", "__commonJSMin", "exports", "module", "map3d", "x", "shape", "fcn", "thisArg", "S0", "S1", "S2", "i0", "i1", "i2", "x0", "y0", "x1", "y1", "y", "require_assign", "__commonJSMin", "exports", "module", "map3d", "x", "y", "shape", "fcn", "thisArg", "S0", "S1", "S2", "i0", "i1", "i2", "x0", "y0", "x1", "y1", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "main", "assign", "require_main", "__commonJSMin", "exports", "module", "map4d", "x", "shape", "fcn", "thisArg", "S0", "S1", "S2", "S3", "i0", "i1", "i2", "i3", "x0", "y0", "x1", "y1", "x2", "y2", "y", "require_assign", "__commonJSMin", "exports", "module", "map4d", "x", "y", "shape", "fcn", "thisArg", "S0", "S1", "S2", "S3", "i0", "i1", "i2", "i3", "x0", "y0", "x1", "y1", "x2", "y2", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "main", "assign", "require_main", "__commonJSMin", "exports", "module", "map5d", "x", "shape", "fcn", "thisArg", "S0", "S1", "S2", "S3", "S4", "i0", "i1", "i2", "i3", "i4", "x0", "y0", "x1", "y1", "x2", "y2", "x3", "y3", "y", "require_assign", "__commonJSMin", "exports", "module", "map5d", "x", "y", "shape", "fcn", "thisArg", "S0", "S1", "S2", "S3", "S4", "i0", "i1", "i2", "i3", "i4", "x0", "y0", "x1", "y1", "x2", "y2", "x3", "y3", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "main", "assign", "require_main", "__commonJSMin", "exports", "module", "mskbinary2d", "arrays", "shape", "fcn", "S0", "S1", "i0", "i1", "x0", "y0", "z0", "m0", "x", "y", "z", "m", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "mskunary2d", "arrays", "shape", "fcn", "S0", "S1", "i0", "i1", "x0", "y0", "m0", "x", "y", "m", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "mskunary3d", "arrays", "shape", "fcn", "S0", "S1", "S2", "i0", "i1", "i2", "x0", "x1", "y0", "y1", "m0", "m1", "x", "y", "m", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "nCartesianProduct", "x1", "x2", "nargs", "dims", "arr", "out", "tmp", "arg", "idx", "N", "s", "i", "j", "k", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "oneTo", "n", "arr", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "filled", "ones", "len", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "filled2d", "ones2d", "shape", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "filled3d", "ones3d", "shape", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "filled4d", "ones4d", "shape", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "filled5d", "ones5d", "shape", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "fillednd", "onesnd", "shape", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "quaternary2d", "arrays", "shape", "fcn", "S0", "S1", "i0", "i1", "x0", "y0", "z0", "w0", "v0", "x", "y", "z", "w", "v", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "quaternary3d", "arrays", "shape", "fcn", "S0", "S1", "S2", "i0", "i1", "i2", "x0", "y0", "z0", "w0", "v0", "x1", "y1", "z1", "w1", "v1", "x", "y", "z", "w", "v", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "quaternary4d", "arrays", "shape", "fcn", "S0", "S1", "S2", "S3", "i0", "i1", "i2", "i3", "x0", "y0", "z0", "w0", "v0", "x1", "y1", "z1", "w1", "v1", "x2", "y2", "z2", "w2", "v2", "x", "y", "z", "w", "v", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "quaternary5d", "arrays", "shape", "fcn", "S0", "S1", "S2", "S3", "S4", "i0", "i1", "i2", "i3", "i4", "x0", "y0", "z0", "w0", "v0", "x1", "y1", "z1", "w1", "v1", "x2", "y2", "z2", "w2", "v2", "x3", "y3", "z3", "w3", "v3", "x", "y", "z", "w", "v", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "quinary2d", "arrays", "shape", "fcn", "S0", "S1", "i0", "i1", "x0", "y0", "z0", "w0", "u0", "v0", "x", "y", "z", "w", "u", "v", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "quinary3d", "arrays", "shape", "fcn", "S0", "S1", "S2", "i0", "i1", "i2", "x0", "y0", "z0", "w0", "u0", "v0", "x1", "y1", "z1", "w1", "u1", "v1", "x", "y", "z", "w", "u", "v", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "quinary4d", "arrays", "shape", "fcn", "S0", "S1", "S2", "S3", "i0", "i1", "i2", "i3", "x0", "y0", "z0", "w0", "u0", "v0", "x1", "y1", "z1", "w1", "u1", "v1", "x2", "y2", "z2", "w2", "u2", "v2", "x", "y", "z", "w", "u", "v", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "quinary5d", "arrays", "shape", "fcn", "S0", "S1", "S2", "S3", "S4", "i0", "i1", "i2", "i3", "i4", "x0", "y0", "z0", "w0", "u0", "v0", "x1", "y1", "z1", "w1", "u1", "v1", "x2", "y2", "z2", "w2", "u2", "v2", "x3", "y3", "z3", "w3", "u3", "v3", "x", "y", "z", "w", "u", "v", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "arraylike2object", "arraySlice", "hasMethod", "obj", "method", "builtin", "x", "start", "end", "accessors", "data", "get", "out", "i", "slice", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "resolveGetter", "strided2array2d", "x", "shape", "strides", "offset", "get", "out", "tmp", "dx0", "dx1", "S0", "S1", "i0", "i1", "ix", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "resolveGetter", "strided2array3d", "x", "shape", "strides", "offset", "get", "out", "dx0", "dx1", "dx2", "ix1", "ix0", "S0", "S1", "S2", "i0", "i1", "i2", "t2", "t1", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "resolveGetter", "strided2array4d", "x", "shape", "strides", "offset", "get", "out", "dx0", "dx1", "dx2", "dx3", "ix2", "ix1", "ix0", "S0", "S1", "S2", "S3", "i0", "i1", "i2", "i3", "t3", "t2", "t1", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "resolveGetter", "strided2array5d", "x", "shape", "strides", "offset", "get", "out", "dx0", "dx1", "dx2", "dx3", "dx4", "ix3", "ix2", "ix1", "ix0", "S0", "S1", "S2", "S3", "S4", "i0", "i1", "i2", "i3", "i4", "t4", "t3", "t2", "t1", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "resolveGetter", "take", "x", "indices", "get", "out", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "take", "x", "indices", "out", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "normalizeIndex", "indexFunction", "format", "NDIMS", "take2d", "x", "indices", "dimension", "mode", "lastIndex", "out", "dim", "ind", "idx", "i0", "i1", "x0", "y0", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "normalizeIndex", "indexFunction", "take2d", "format", "NDIMS", "take3d", "x", "indices", "dimension", "mode", "lastIndex", "out", "dim", "ind", "idx", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "ternary2d", "arrays", "shape", "fcn", "S0", "S1", "i0", "i1", "x0", "y0", "z0", "w0", "x", "y", "z", "w", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "ternary3d", "arrays", "shape", "fcn", "S0", "S1", "S2", "i0", "i1", "i2", "x0", "y0", "z0", "w0", "x1", "y1", "z1", "w1", "x", "y", "z", "w", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "ternary4d", "arrays", "shape", "fcn", "S0", "S1", "S2", "S3", "i0", "i1", "i2", "i3", "x0", "y0", "z0", "w0", "x1", "y1", "z1", "w1", "x2", "y2", "z2", "w2", "x", "y", "z", "w", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "ternary5d", "arrays", "shape", "fcn", "S0", "S1", "S2", "S3", "S4", "i0", "i1", "i2", "i3", "i4", "x0", "y0", "z0", "w0", "x1", "y1", "z1", "w1", "x2", "y2", "z2", "w2", "x3", "y3", "z3", "w3", "x", "y", "z", "w", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isAccessorArray", "AccessorArray", "toAccessorArray", "arr", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isnan", "dedupeCopy", "x", "limit", "count", "prev", "len", "out", "v", "i", "dedupeEqualNaNs", "FLG", "dedupe", "equalNaNs", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "unary2d", "arrays", "shape", "fcn", "S0", "S1", "i0", "i1", "x0", "y0", "x", "y", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "unary2dBy", "arrays", "shape", "fcn", "clbk", "thisArg", "S0", "S1", "i0", "i1", "x0", "y0", "x", "y", "v", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "unary3d", "arrays", "shape", "fcn", "S0", "S1", "S2", "i0", "i1", "i2", "x0", "x1", "y0", "y1", "x", "y", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "unary4d", "arrays", "shape", "fcn", "S0", "S1", "S2", "S3", "i0", "i1", "i2", "i3", "x0", "x1", "x2", "y0", "y1", "y2", "x", "y", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "unary5d", "arrays", "shape", "fcn", "S0", "S1", "S2", "S3", "S4", "i0", "i1", "i2", "i3", "i4", "x0", "x1", "x2", "x3", "y0", "y1", "y2", "y3", "x", "y", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "recurse", "x", "y", "ndims", "shape", "dim", "fcn", "S", "d", "i", "unarynd", "arrays", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "unitspace", "x1", "x2", "arr", "len", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "zeroTo", "n", "arr", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "filled2d", "zeros2d", "shape", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "filled3d", "zeros3d", "shape", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "filled4d", "zeros4d", "shape", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "filled5d", "zeros5d", "shape", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "fillednd", "zerosnd", "shape", "require_lib", "__commonJSMin", "exports", "module", "main", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "ns", "require_main", "__commonJSMin", "exports", "module", "ctor", "require_polyfill", "__commonJSMin", "exports", "module", "polyfill", "require_lib", "__commonJSMin", "exports", "module", "hasArrayBufferSupport", "builtin", "polyfill", "ctor", "require_ctors", "__commonJSMin", "exports", "module", "Float64Array", "Float32Array", "Int16Array", "Int32Array", "Int8Array", "Uint16Array", "Uint32Array", "Uint8Array", "Uint8ClampedArray", "Complex64Array", "Complex128Array", "ctors", "require_main", "__commonJSMin", "exports", "module", "table", "ctors", "dtype", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isCollection", "getType", "ctors", "reinterpret128", "reinterpret64", "format", "gcopy", "copy", "isComplex64", "dtype", "isComplex128", "convert", "x", "isc64", "ctor", "xbuf", "obuf", "out", "len", "t", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "getType", "convert", "format", "convertSame", "x", "y", "dtype", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "ctor", "require_polyfill", "__commonJSMin", "exports", "module", "polyfill", "require_lib", "__commonJSMin", "exports", "module", "hasDataViewSupport", "builtin", "polyfill", "ctor", "require_main", "__commonJSMin", "exports", "module", "hasOwnProp", "isInteger", "isString", "isObject", "format", "floor", "round", "ceil", "timestamp", "rounders", "validDate", "value", "name", "type", "datespace", "start", "stop", "length", "options", "opts", "len", "flg", "arr", "end", "fcn", "tmp", "d", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "defaults", "require_get", "__commonJSMin", "exports", "module", "defaults", "DEFAULTS", "HASH", "get", "name", "v", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "main", "get", "require_dtypes", "__commonJSMin", "exports", "module", "require_main", "__commonJSMin", "exports", "module", "replace", "DTYPES", "RE_SUFFIX", "dtypes", "kind", "out", "FLG", "require_lib", "__commonJSMin", "exports", "module", "main", "require_is_buffer_uint8array", "__commonJSMin", "exports", "module", "allocUnsafe", "isUint8Array", "check", "buf", "require_ctors", "__commonJSMin", "exports", "module", "Float64Array", "Float32Array", "Int16Array", "Int32Array", "Int8Array", "Uint16Array", "Uint32Array", "Uint8Array", "Uint8ClampedArray", "Complex64Array", "Complex128Array", "ctors", "require_main", "__commonJSMin", "exports", "module", "table", "ctors", "dtype", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isNonNegativeInteger", "allocUnsafe", "ctors", "zeros", "bytesPerElement", "format", "empty", "length", "nbytes", "offset", "dtype", "ctor", "buf", "out", "nb", "require_main", "__commonJSMin", "exports", "module", "isNonNegativeInteger", "ctors", "gzeros", "format", "zeros", "length", "dtype", "ctor", "require_lib", "__commonJSMin", "exports", "module", "main", "require_polyfill", "__commonJSMin", "exports", "module", "zeros", "empty", "length", "require_lib", "__commonJSMin", "exports", "module", "isBufferUint8Array", "main", "polyfill", "empty", "require_main", "__commonJSMin", "exports", "module", "dtype", "empty", "format", "emptyLike", "x", "dt", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isNonNegativeInteger", "isCollection", "isArrayBuffer", "isObject", "isFunction", "ctors", "gfill", "filled", "hasIteratorSymbolSupport", "ITERATOR_SYMBOL", "iterLength", "format", "HAS_ITERATOR_SYMBOL", "filledIterator", "it", "value", "arr", "v", "filledAccessors", "i", "filledarray", "nargs", "dtype", "ctor", "len", "arg", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isNonNegativeInteger", "isCollection", "isArrayBuffer", "isObject", "isFunction", "ctors", "gfillBy", "filledArray", "hasIteratorSymbolSupport", "ITERATOR_SYMBOL", "iterLength", "format", "HAS_ITERATOR_SYMBOL", "DEFAULT_DTYPE", "filledArrayIterator", "it", "clbk", "thisArg", "arr", "i", "v", "filledAccessors", "filledarrayBy", "nargs", "dtype", "ctor", "len", "arg", "callback", "value", "aidx", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isFunction", "isCollection", "isIteratorLike", "isAccessorArray", "accessorSetter", "setter", "dtype", "format", "iterator2array", "iterator", "thisArg", "fcn", "out", "len", "set", "dt", "i", "v", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isNonNegativeInteger", "ctors", "afill", "gfill", "format", "full", "length", "value", "dtype", "ctor", "out", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "format", "dtype", "full", "Complex128", "Complex64", "fullLike", "x", "value", "dt", "v", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "ceil", "isNumber", "isnan", "format", "MAX_LENGTH", "gen", "incrspace", "x1", "x2", "increment", "len", "inc", "require_lib", "__commonJSMin", "exports", "module", "main", "require_ctors", "__commonJSMin", "exports", "module", "Float64Array", "Float32Array", "Complex128Array", "Complex64Array", "ctors", "require_main", "__commonJSMin", "exports", "module", "table", "ctors", "dtype", "require_lib", "__commonJSMin", "exports", "module", "main", "require_generic_real", "__commonJSMin", "exports", "module", "linspace", "start", "stop", "len", "endpoint", "arr", "N", "d", "i", "require_generic_complex", "__commonJSMin", "exports", "module", "Complex64", "Complex128", "real", "imag", "realf", "imagf", "linspace", "dt1", "start", "dt2", "stop", "len", "endpoint", "cmplx", "isf32", "arr", "re1", "re2", "im1", "im2", "re", "im", "dr", "di", "N", "i", "require_typed_real", "__commonJSMin", "exports", "module", "linspace", "out", "start", "stop", "len", "endpoint", "N", "d", "i", "require_typed_complex", "__commonJSMin", "exports", "module", "real", "imag", "realf", "imagf", "linspace", "out", "dt1", "start", "dt2", "stop", "len", "endpoint", "re1", "re2", "im1", "im2", "dr", "di", "N", "i", "j", "require_validate", "__commonJSMin", "exports", "module", "isObject", "hasOwnProp", "isString", "isBoolean", "format", "validate", "opts", "options", "require_defaults", "__commonJSMin", "exports", "module", "require_main", "__commonJSMin", "exports", "module", "isComplexLike", "isNumber", "isNonNegativeInteger", "isnan", "dtype", "ctors", "reinterpret64", "reinterpret128", "format", "genreal", "gencmplx", "typedreal", "typedcmplx", "validate", "defaults", "linspace", "start", "stop", "len", "opts", "ctor", "err", "out", "dt1", "dt2", "flg", "require_accessors_complex", "__commonJSMin", "exports", "module", "Complex64", "Complex128", "real", "imag", "realf", "imagf", "linspace", "out", "dt1", "start", "dt2", "stop", "len", "endpoint", "cmplx", "isf32", "re1", "re2", "im1", "im2", "set", "buf", "re", "im", "dr", "di", "N", "i", "require_accessors_real", "__commonJSMin", "exports", "module", "linspace", "out", "start", "stop", "len", "endpoint", "buf", "set", "N", "d", "i", "require_assign", "__commonJSMin", "exports", "module", "isComplexLike", "isNumber", "isCollection", "format", "isnan", "dtype", "adtype", "reinterpret64", "reinterpret128", "arraylike2object", "acccmplx", "accreal", "typedcmplx", "typedreal", "validate", "defaults", "linspace", "start", "stop", "out", "opts", "err", "dt1", "dt2", "flg", "odt", "o", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "main", "assign", "require_main", "__commonJSMin", "exports", "module", "isNumber", "isNonNegativeInteger", "format", "isnan", "gen", "logspace", "a", "b", "len", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isInteger", "isNegativeZero", "isComplexLike", "PINF", "NINF", "FLOAT32_SMALLEST_SUBNORMAL", "FLOAT32_MAX_SAFE_INTEGER", "FLOAT32_MIN_SAFE_INTEGER", "INT8_MIN", "INT16_MIN", "INT32_MIN", "UINT8_MAX", "UINT16_MAX", "UINT32_MAX", "minFloatDataType", "value", "minDataType", "require_lib", "__commonJSMin", "exports", "module", "minDataType", "require_main", "__commonJSMin", "exports", "module", "Complex128", "Complex64", "full", "format", "Z128", "Z64", "DTYPES", "nans", "length", "dtype", "value", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "dtype", "full", "Complex128", "Complex64", "format", "Z128", "Z64", "DTYPES", "nansLike", "x", "dt", "v", "require_lib", "__commonJSMin", "exports", "module", "main", "require_next_dtypes", "__commonJSMin", "exports", "module", "require_main", "__commonJSMin", "exports", "module", "objectKeys", "hasOwnProp", "NEXT_DTYPES", "generateTable", "dtypes", "ntypes", "out", "nextDataType", "dtype", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "Complex128", "Complex64", "full", "Z128", "Z64", "ones", "length", "dtype", "value", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "dtype", "full", "Complex128", "Complex64", "format", "Z128", "Z64", "onesLike", "x", "dt", "v", "require_lib", "__commonJSMin", "exports", "module", "main", "require_defaults", "__commonJSMin", "exports", "module", "defaults", "require_validate", "__commonJSMin", "exports", "module", "isObject", "hasOwnProp", "isNonNegativeInteger", "format", "validate", "opts", "options", "require_pool", "__commonJSMin", "exports", "module", "pool", "n", "out", "i", "require_bytes_per_element", "__commonJSMin", "exports", "module", "require_factory", "__commonJSMin", "exports", "module", "isString", "isNonNegativeInteger", "isCollection", "isTypedArrayLike", "isArrayBuffer", "isComplex64Array", "isComplex128Array", "setReadOnly", "setReadOnlyAccessor", "ctors", "reinterpret64", "reinterpret128", "accessors", "adtype", "format", "ArrayBuffer", "ceil", "floor", "ceil2", "log2", "min", "defaults", "validate", "createPool", "BYTES_PER_ELEMENT", "Complex64Array", "Complex128Array", "isCmplx64Array", "arr", "isCmplx128Array", "factory", "options", "nbytes", "pool", "opts", "err", "malloc", "calloc", "free", "clear", "getBytes", "arraybuffer", "n", "buf", "i", "typedarray", "ctor", "len", "dtype", "nargs", "out", "set", "get", "tmp", "p", "require_main", "__commonJSMin", "exports", "module", "factory", "typedarraypool", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "main", "factory", "require_promotion_rules", "__commonJSMin", "exports", "module", "require_main", "__commonJSMin", "exports", "module", "objectKeys", "hasOwnProp", "PROMOTION_RULES", "generateFullTable", "dtypes", "ntypes", "out", "tmp", "dt1", "dt2", "o", "j", "i", "promotionRules", "dtype1", "dtype2", "require_lib", "__commonJSMin", "exports", "module", "main", "require_ctors", "__commonJSMin", "exports", "module", "Float64Array", "Float32Array", "Int16Array", "Int32Array", "Int8Array", "Uint16Array", "Uint32Array", "Uint8Array", "Uint8ClampedArray", "Complex64Array", "Complex128Array", "ctors", "require_main", "__commonJSMin", "exports", "module", "isArray", "ctors", "reviveTypedArray", "key", "value", "ctor", "require_lib", "__commonJSMin", "exports", "module", "main", "require_safe_casts", "__commonJSMin", "exports", "module", "require_main", "__commonJSMin", "exports", "module", "objectKeys", "hasOwnProp", "SAFE_CASTS", "TABLE", "generateFullTable", "dtypes", "ntypes", "out", "tmp", "dt1", "dt2", "o", "j", "i", "generateTable", "safeCasts", "dtype", "require_lib", "__commonJSMin", "exports", "module", "main", "require_same_kind_casts", "__commonJSMin", "exports", "module", "require_main", "__commonJSMin", "exports", "module", "objectKeys", "hasOwnProp", "SAME_KIND_CASTS", "TABLE", "generateFullTable", "dtypes", "ntypes", "out", "tmp", "dt1", "dt2", "o", "j", "i", "generateTable", "sameKindCasts", "dtype", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isArrayLikeObject", "format", "recurse", "shape", "arr", "v", "check", "ndims", "d", "flg", "len", "i", "arrayShape", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "ctor", "require_polyfill", "__commonJSMin", "exports", "module", "polyfill", "size", "require_lib", "__commonJSMin", "exports", "module", "hasSharedArrayBufferSupport", "builtin", "polyfill", "ctor", "require_main", "__commonJSMin", "exports", "module", "setReadOnly", "hasOwnProp", "isFunction", "isCollection", "isObject", "isNonNegativeInteger", "isAccessorArray", "iteratorSymbol", "accessorGetter", "getter", "dtype", "format", "circarray2iterator", "src", "thisArg", "options", "count", "opts", "iter", "FLG", "fcn", "get", "dt", "i", "next1a", "next1b", "next2a", "next2b", "end", "factory", "value", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "setReadOnly", "isFunction", "isCollection", "isAccessorArray", "iteratorSymbol", "accessorGetter", "getter", "dtype", "format", "array2iterator", "src", "thisArg", "iter", "FLG", "fcn", "get", "dt", "i", "next1", "next2", "end", "factory", "value", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "setReadOnly", "isFunction", "isCollection", "isAccessorArray", "iteratorSymbol", "accessorGetter", "getter", "dtype", "format", "array2iteratorRight", "src", "thisArg", "iter", "FLG", "fcn", "len", "get", "dt", "i", "next1", "next2", "end", "factory", "value", "require_lib", "__commonJSMin", "exports", "module", "main", "require_ctors", "__commonJSMin", "exports", "module", "Int8Array", "Uint8Array", "Uint8ClampedArray", "Int16Array", "Uint16Array", "Int32Array", "Uint32Array", "Float32Array", "Float64Array", "Complex64Array", "Complex128Array", "CTORS", "require_type", "__commonJSMin", "exports", "module", "instanceOf", "ctorName", "getPrototypeOf", "CTORS", "typeName", "arr", "v", "i", "require_main", "__commonJSMin", "exports", "module", "isTypedArray", "isComplexTypedArray", "reinterpret64", "reinterpret128", "format", "typeName", "typedarray2json", "arr", "data", "out", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "setReadOnly", "isFunction", "isCollection", "isAccessorArray", "iteratorSymbol", "accessorGetter", "getter", "dtype", "format", "sparsearray2iterator", "src", "thisArg", "iter", "FLG", "fcn", "get", "dt", "i", "next1", "next2", "end", "factory", "len", "value", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "setReadOnly", "isFunction", "isCollection", "isAccessorArray", "iteratorSymbol", "accessorGetter", "getter", "dtype", "format", "sparsearray2iteratorRight", "src", "thisArg", "iter", "FLG", "fcn", "len", "get", "dt", "i", "next1", "next2", "end", "factory", "value", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "setReadOnly", "isFunction", "isCollection", "isNonNegativeInteger", "isInteger", "isAccessorArray", "iteratorSymbol", "accessorGetter", "getter", "dtype", "format", "stridedarray2iterator", "N", "src", "stride", "offset", "thisArg", "iter", "FLG", "fcn", "idx", "get", "dt", "i", "next1", "next2", "end", "factory", "v", "value", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "setReadOnly", "isFunction", "isCollection", "isInteger", "isAccessorArray", "iteratorSymbol", "accessorGetter", "getter", "dtype", "format", "arrayview2iterator", "src", "thisArg", "begin", "nargs", "iter", "FLG", "fcn", "end", "get", "dt", "i", "next1", "next2", "finish", "factory", "value", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "setReadOnly", "isFunction", "isCollection", "isInteger", "isAccessorArray", "iteratorSymbol", "accessorGetter", "getter", "dtype", "format", "arrayview2iteratorRight", "src", "thisArg", "begin", "nargs", "iter", "FLG", "fcn", "end", "get", "dt", "i", "next1", "next2", "finish", "factory", "value", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "ctors", "reinterpret128", "reinterpret64", "format", "Complex64Array", "Complex128Array", "typedarray", "nargs", "dtype", "ctor", "arg", "require_lib", "__commonJSMin", "exports", "module", "main", "require_ctors", "__commonJSMin", "exports", "module", "Complex128Array", "Complex64Array", "ctors", "require_main", "__commonJSMin", "exports", "module", "table", "ctors", "dtype", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "ctors", "complexarray", "nargs", "dtype", "ctor", "require_lib", "__commonJSMin", "exports", "module", "main", "require_dtypes", "__commonJSMin", "exports", "module", "require_main", "__commonJSMin", "exports", "module", "DTYPES", "dtypes", "require_lib", "__commonJSMin", "exports", "module", "main", "require_dtypes", "__commonJSMin", "exports", "module", "require_main", "__commonJSMin", "exports", "module", "DTYPES", "dtypes", "require_lib", "__commonJSMin", "exports", "module", "main", "require_dtypes", "__commonJSMin", "exports", "module", "require_main", "__commonJSMin", "exports", "module", "DTYPES", "dtypes", "require_lib", "__commonJSMin", "exports", "module", "main", "require_ctors", "__commonJSMin", "exports", "module", "Int16Array", "Int32Array", "Int8Array", "Uint16Array", "Uint32Array", "Uint8Array", "Uint8ClampedArray", "ctors", "require_main", "__commonJSMin", "exports", "module", "table", "ctors", "dtype", "require_lib", "__commonJSMin", "exports", "module", "main", "require_dtypes", "__commonJSMin", "exports", "module", "require_main", "__commonJSMin", "exports", "module", "DTYPES", "dtypes", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "ctors", "realarray", "nargs", "dtype", "ctor", "require_lib", "__commonJSMin", "exports", "module", "main", "require_ctors", "__commonJSMin", "exports", "module", "Float64Array", "Float32Array", "Int16Array", "Int32Array", "Int8Array", "Uint16Array", "Uint32Array", "Uint8Array", "Uint8ClampedArray", "ctors", "require_main", "__commonJSMin", "exports", "module", "table", "ctors", "dtype", "require_lib", "__commonJSMin", "exports", "module", "main", "require_dtypes", "__commonJSMin", "exports", "module", "require_main", "__commonJSMin", "exports", "module", "DTYPES", "dtypes", "require_lib", "__commonJSMin", "exports", "module", "main", "require_ctors", "__commonJSMin", "exports", "module", "Float64Array", "Float32Array", "ctors", "require_main", "__commonJSMin", "exports", "module", "table", "ctors", "dtype", "require_lib", "__commonJSMin", "exports", "module", "main", "require_dtypes", "__commonJSMin", "exports", "module", "require_main", "__commonJSMin", "exports", "module", "DTYPES", "dtypes", "require_lib", "__commonJSMin", "exports", "module", "main", "require_ctors", "__commonJSMin", "exports", "module", "Int16Array", "Int32Array", "Int8Array", "ctors", "require_main", "__commonJSMin", "exports", "module", "table", "ctors", "dtype", "require_lib", "__commonJSMin", "exports", "module", "main", "require_dtypes", "__commonJSMin", "exports", "module", "require_main", "__commonJSMin", "exports", "module", "DTYPES", "dtypes", "require_lib", "__commonJSMin", "exports", "module", "main", "require_ctors", "__commonJSMin", "exports", "module", "Uint16Array", "Uint32Array", "Uint8Array", "Uint8ClampedArray", "ctors", "require_main", "__commonJSMin", "exports", "module", "table", "ctors", "dtype", "require_lib", "__commonJSMin", "exports", "module", "main", "require_dtypes", "__commonJSMin", "exports", "module", "require_main", "__commonJSMin", "exports", "module", "DTYPES", "dtypes", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "format", "dtype", "zeros", "zerosLike", "x", "dt", "require_lib", "__commonJSMin", "exports", "module", "main", "setReadOnly", "ns"]
 }